diff --git a/.bootstraprc b/.bootstraprc new file mode 100644 index 0000000000000000000000000000000000000000..0507aae30727298d2d6f86ed22a6d8e2df4ec385 --- /dev/null +++ b/.bootstraprc @@ -0,0 +1,32 @@ +{ + "bootstrapVersion": 4, + "preBootstrapCustomizations": "./scipost/static/scipost/assets/config/preconfig.scss", + "useFlexbox": true, + "styleLoaders": [ + "style", + "css", + "sass", + ], + "extractStyles": true, + "styles": { + "mixins": true, + "normalize": true, + "reboot": true, + "grid": true, + "forms": true, + "buttons": true, + "dropdown": true, + "button-group": true, + "input-group": true, + "nav": true, + "navbar": true, + "responsive-embed": true, + "close": true, + "utilities": true, + "transitions": true, + }, + "scripts": { + "collapse": true, + "util": true, + } +} diff --git a/.gitignore b/.gitignore index 2673ca550fb5d82633cc80cf1c145f3c9b1d157e..64ad90a0775214cd762d423e2f24ed70e94dcd52 100644 --- a/.gitignore +++ b/.gitignore @@ -2,17 +2,30 @@ __pycache__ *.json +!package.json !**/fixtures/*.json +*.log *~ +# Package managers venv* +node_modules/ +*webpack-stats.json + .python-version + media/temp SCIPOST_JOURNALS UPLOADS docs/_build -local_files + +local_files/ +static/ +!/scipost/static/ +static_bundles/ + +whoosh_index diff --git a/README.md b/README.md index 4622ae3aecb21af5fb32d90aedb91d2961860898..7a07b608ab8c010f58397f2da6428721e1bc315c 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ The complete scientific publication portal ## Dependencies SciPost is written in Python 3.5 using Django and requires PostgreSQL 9.3 or -higher. Python dependencies are listed in `requirements.txt`. +higher. Python dependencies are listed in `requirements.txt`. Frontend dependencies are managed by [NPM](https://www.npmjs.com/) in package.json. ## Getting started @@ -28,6 +28,13 @@ Now install dependencies: (scipostenv) $ pip install -r requirements.txt ``` +### Frontend dependencies +[NPM](https://www.npmjs.com/) will take care of frontend dependencies. To install all packages now run: + +```shell +(scipostenv) $ npm install +``` + ### Host-specific settings In this project, host-specific settings are defined in the `scipost-host-settings.json` file in the directory *above* the project root. The structure is as follows: @@ -56,7 +63,8 @@ In this project, host-specific settings are defined in the `scipost-host-setting "SERVER_EMAIL": "", "JOURNALS_DIR": "<journals_dir>", "CROSSREF_LOGIN_ID": "", - "CROSSREF_LOGIN_PASSWORD": "" + "CROSSREF_LOGIN_PASSWORD": "", + "HAYSTACK_PATH": "<haystack_dir>" } ``` @@ -67,6 +75,36 @@ To make sure everything is setup and configured well, run: (scipostenv) $ ./manage.py check ``` +### Module bundler +[Webpack](https://webpack.js.org/) takes care of assets in the `scipost/static/scipost/assets` folder. To (re)compile all assets into the `static_bundles` folder, simply run: + +```shell +(scipostenv) $ npm run webpack +``` + +While editing assets, it is helpful to put Webpack in _watch_ mode. This will recompile your assets every time you edit them. To do so, instead of the above command, run: + +```shell +(scipostenv) $ npm run webpack-live +``` + +#### Sass and bootstrap +Styling will mainly be configured using [.scss files](http://www.sass-lang.com/) in the `scipost/static/scipost/scss/preconfig.scss` file, relying on [Bootstrap 4.0.0-beta.6](//v4-alpha.getbootstrap.com/). A full list of variables available by default can be found [here](https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss). +All modules are configured in the `.bootstraprc` file. Most modules are disabled by default. + +### Collectstatic +In order to collect static files from all `INSTALLED_APPS`, i.e. the assets managed by Webpack, run: + +```shell +(scipostenv) $ ./manage collectstatic +``` + +This will put all static files in the `STATIC_ROOT` folder defined in your settings file. It's a good idea to use the clear option in order to remove stale static files: + +```shell +(scipostenv) $ ./manage collectstatic --clear +``` + ### Create and run migrations Now that everything is setup, we can setup the datastructures. ```shell @@ -110,3 +148,18 @@ can use them. (scipostenv) $ ./manage.py makemigration (scipostenv) $ ./manage.py migrate ``` + +## Documentation +Project documentation can be found in `docs` and can be rendered using +[Sphinx](http://www.sphinx-doc.org/). Note that rendering documentation is only +available from the virtual environment - and only when the host settings have +been configured. + +To build the documentation, run: + +```shell +(scipostenv) $ cd docs +(scipostenv) $ make html +``` + +After this, generated documentation should be available in `docs/_build/html`. diff --git a/SciPost_v1/settings.py b/SciPost_v1/settings.py index e6c50a4a8dea810dc41dd2cba8171e478fa35f03..4e6a5fc96a19b7b16c793cfa9f3ea3948db188d6 100644 --- a/SciPost_v1/settings.py +++ b/SciPost_v1/settings.py @@ -12,12 +12,14 @@ https://docs.djangoproject.com/en/1.8/ref/settings/ # Build paths inside the project like this: os.path.join(BASE_DIR, ...) import os - import json +from django.utils.translation import ugettext_lazy as _ + + BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -host_settings_path = os.path.join(os.path.dirname(BASE_DIR),"scipost-host-settings.json") +host_settings_path = os.path.join(os.path.dirname(BASE_DIR), "scipost-host-settings.json") host_settings = json.load(open(host_settings_path)) # Quick-start development settings - unsuitable for production @@ -70,16 +72,31 @@ INSTALLED_APPS = ( 'django_mathjax', 'captcha', 'crispy_forms', - 'rest_framework', 'guardian', + 'haystack', + 'rest_framework', + 'sphinxdoc', 'commentaries', 'comments', 'journals', 'scipost', 'submissions', 'theses', + 'webpack_loader' ) +HAYSTACK_CONNECTIONS = { + 'default': { + 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', + 'PATH': host_settings['HAYSTACK_PATH'], + }, +} + +SPHINXDOC_BASE_TEMPLATE = 'scipost/base.html' +SPHINXDOC_PROTECTED_PROJECTS = { + 'scipost': ['scipost.can_view_docs_scipost'], +} + CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge' CAPTCHA_LETTER_ROTATION = (-15, 15) CAPTCHA_NOISE_FUNCTIONS = ('captcha.helpers.noise_dots',) @@ -94,6 +111,7 @@ MATHJAX_CONFIG_DATA = { MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', @@ -114,6 +132,7 @@ TEMPLATES = [ 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', + 'django.template.context_processors.i18n', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'scipost.context_processors.searchform', @@ -144,7 +163,12 @@ DATABASES = { # https://docs.djangoproject.com/en/1.8/topics/i18n/ LANGUAGE_CODE = 'en-us' - +LANGUAGES = ( + ('en', _('English')), +) +LOCALE_PATHS = ( + os.path.join(BASE_DIR, 'locale'), +) TIME_ZONE = 'CET' USE_I18N = True @@ -161,6 +185,21 @@ USE_TZ = True STATIC_URL = host_settings["STATIC_URL"] STATIC_ROOT = host_settings["STATIC_ROOT"] +STATICFILES_DIRS = ( + os.path.join(BASE_DIR, 'static_bundles'), +) + +# Webpack handling the static bundles +WEBPACK_LOADER = { + 'DEFAULT': { + 'CACHE': not DEBUG, + 'BUNDLE_DIR_NAME': 'static/bundles/', + 'STATS_FILE': os.path.join(BASE_DIR, 'webpack-stats.json'), + 'POLL_INTERVAL': 0.1, + 'TIMEOUT': None, + 'IGNORE': ['.+\.hot-update.js', '.+\.map'] + } +} # Email EMAIL_BACKEND = host_settings["EMAIL_BACKEND"] diff --git a/SciPost_v1/urls.py b/SciPost_v1/urls.py index 316482d1b745c3a14771e2664517a872a491bffc..32a7184b51e8c14e63e3c3ca8002301f71ea20a1 100644 --- a/SciPost_v1/urls.py +++ b/SciPost_v1/urls.py @@ -19,6 +19,7 @@ from django.contrib import admin urlpatterns = [ url(r'^admin/doc/', include('django.contrib.admindocs.urls')), url(r'^admin/', include(admin.site.urls)), + url(r'^docs/', include('sphinxdoc.urls')), url(r'^', include('scipost.urls', namespace="scipost")), url(r'^contributor/', include('scipost.urls', namespace="scipost")), url(r'^commentaries/', include('commentaries.urls', namespace="commentaries")), diff --git a/commentaries/factories.py b/commentaries/factories.py index f0bae1a0912e9a18ceb0c6f079918c595534948b..805b0019dca52b6255a364891dfd4b8df680df17 100644 --- a/commentaries/factories.py +++ b/commentaries/factories.py @@ -29,5 +29,10 @@ class EmptyCommentaryFactory(CommentaryFactory): pub_DOI = None arxiv_identifier = None + class VettedCommentaryFactory(CommentaryFactory): vetted = True + + +class UnVettedCommentaryFactory(CommentaryFactory): + vetted = False diff --git a/commentaries/forms.py b/commentaries/forms.py index f0dcdf3a30c8497a8d19650abc9fda2c291bda45..22632aafe7c5a939b6704e2c6fb51af4cbac3e6a 100644 --- a/commentaries/forms.py +++ b/commentaries/forms.py @@ -5,20 +5,6 @@ from .models import Commentary from scipost.models import Contributor -COMMENTARY_ACTION_CHOICES = ( - (0, 'modify'), - (1, 'accept'), - (2, 'refuse (give reason below)'), - ) - -COMMENTARY_REFUSAL_CHOICES = ( - (0, '-'), - (-1, 'a commentary on this paper already exists'), - (-2, 'this paper cannot be traced'), - (-3, 'there exists a more revent version of this arXiv preprint'), - ) -commentary_refusal_dict = dict(COMMENTARY_REFUSAL_CHOICES) - class DOIToQueryForm(forms.Form): doi = forms.CharField(widget=forms.TextInput( @@ -32,6 +18,7 @@ class IdentifierToQueryForm(forms.Form): class RequestCommentaryForm(forms.ModelForm): + """Create new valid Commetary by user request""" existing_commentary = None class Meta: @@ -54,6 +41,7 @@ class RequestCommentaryForm(forms.ModelForm): self.fields['pub_abstract'].widget.attrs.update({'cols': 100}) def clean(self, *args, **kwargs): + """Check if form is valid and contains an unique identifier""" cleaned_data = super(RequestCommentaryForm, self).clean(*args, **kwargs) # Either Arxiv-ID or DOI is given @@ -92,6 +80,38 @@ class RequestCommentaryForm(forms.ModelForm): class VetCommentaryForm(forms.Form): + """Process an unvetted Commentary request. + + This form will provide fields to let the user + process a Commentary that is unvetted. On success, + the Commentary is either accepted or deleted from + the database. + + Keyword arguments: + commentary_id -- the Commentary.id to process (required) + user -- User instance of the vetting user (required) + + """ + ACTION_MODIFY = 0 + ACTION_ACCEPT = 1 + ACTION_REFUSE = 2 + COMMENTARY_ACTION_CHOICES = ( + (ACTION_MODIFY, 'modify'), + (ACTION_ACCEPT, 'accept'), + (ACTION_REFUSE, 'refuse (give reason below)'), + ) + REFUSAL_EMPTY = 0 + REFUSAL_PAPER_EXISTS = -1 + REFUSAL_UNTRACEBLE = -2 + REFUSAL_ARXIV_EXISTS = -3 + COMMENTARY_REFUSAL_CHOICES = ( + (REFUSAL_EMPTY, '-'), + (REFUSAL_PAPER_EXISTS, 'a commentary on this paper already exists'), + (REFUSAL_UNTRACEBLE, 'this paper cannot be traced'), + (REFUSAL_ARXIV_EXISTS, 'there exists a more revent version of this arXiv preprint'), + ) + COMMENTARY_REFUSAL_DICT = dict(COMMENTARY_REFUSAL_CHOICES) + action_option = forms.ChoiceField(widget=forms.RadioSelect, choices=COMMENTARY_ACTION_CHOICES, required=True, label='Action') @@ -99,6 +119,71 @@ class VetCommentaryForm(forms.Form): email_response_field = forms.CharField(widget=forms.Textarea( attrs={'rows': 5, 'cols': 40}), label='Justification (optional)', required=False) + def __init__(self, *args, **kwargs): + """Pop and save keyword arguments if set, return form instance""" + self.commentary_id = kwargs.pop('commentary_id', None) + self.user = kwargs.pop('user', None) + self.is_cleaned = False + return super(VetCommentaryForm, self).__init__(*args, **kwargs) + + def clean(self, *args, **kwargs): + """Check valid form and keyword arguments given""" + cleaned_data = super(VetCommentaryForm, self).clean(*args, **kwargs) + + # Check valid `commentary_id` + if not self.commentary_id: + self.add_error(None, 'No `commentary_id` provided') + return cleaned_data + else: + self.commentary = Commentary.objects.select_related('requested_by__user').get(pk=self.commentary_id) + + # Check valid `user` + if not self.user: + self.add_error(None, 'No `user` provided') + return cleaned_data + + self.is_cleaned = True + return cleaned_data + + def _form_is_cleaned(self): + """Raise ValueError if form isn't validated""" + if not self.is_cleaned: + raise ValueError(('VetCommentaryForm could not be processed ' + 'because the data didn\'t validate')) + + def get_commentary(self): + """Return Commentary if available""" + self._form_is_cleaned() + return self.commentary + + def get_refusal_reason(self): + """Return refusal reason""" + if self.commentary_is_refused(): + return self.COMMENTARY_REFUSAL_DICT[int(self.cleaned_data['refusal_reason'])] + + def commentary_is_accepted(self): + self._form_is_cleaned() + return int(self.cleaned_data['action_option']) == self.ACTION_ACCEPT + + def commentary_is_modified(self): + self._form_is_cleaned() + return int(self.cleaned_data['action_option']) == self.ACTION_MODIFY + + def commentary_is_refused(self): + self._form_is_cleaned() + return int(self.cleaned_data['action_option']) == self.ACTION_REFUSE + + def process_commentary(self): + """Vet the commentary or delete it from the database""" + if self.commentary_is_accepted(): + self.commentary.vetted = True + self.commentary.vetted_by = Contributor.objects.get(user=self.user) + self.commentary.save() + return self.commentary + elif self.commentary_is_modified() or self.commentary_is_refused(): + self.commentary.delete() + return None + class CommentarySearchForm(forms.Form): """Search for Commentary specified by user""" diff --git a/commentaries/models.py b/commentaries/models.py index a42005b4dae74ac4621960f27e9bfc11dcd4bbb0..0da8b2bce3415abcf394799c535f3c324702829a 100644 --- a/commentaries/models.py +++ b/commentaries/models.py @@ -1,16 +1,17 @@ -from django.utils import timezone from django.db import models from django.contrib.postgres.fields import JSONField from django.template import Template, Context -from journals.models import SCIPOST_JOURNALS_DOMAINS, SCIPOST_JOURNALS_SPECIALIZATIONS +from journals.models import SCIPOST_JOURNALS_DOMAINS from scipost.models import TimeStampedModel, Contributor -from scipost.constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS +from scipost.constants import SCIPOST_DISCIPLINES, DISCIPLINE_PHYSICS, SCIPOST_SUBJECT_AREAS +COMMENTARY_PUBLISHED = 'published' +COMMENTARY_PREPRINT = 'preprint' COMMENTARY_TYPES = ( - ('published', 'published paper'), - ('preprint', 'arXiv preprint'), - ) + (COMMENTARY_PUBLISHED, 'published paper'), + (COMMENTARY_PREPRINT, 'arXiv preprint'), +) class CommentaryManager(models.Manager): @@ -31,7 +32,8 @@ class Commentary(TimeStampedModel): vetted = models.BooleanField(default=False) vetted_by = models.ForeignKey(Contributor, blank=True, null=True, on_delete=models.CASCADE) type = models.CharField(max_length=9, choices=COMMENTARY_TYPES) - discipline = models.CharField(max_length=20, choices=SCIPOST_DISCIPLINES, default='physics') + discipline = models.CharField(max_length=20, + choices=SCIPOST_DISCIPLINES, default=DISCIPLINE_PHYSICS) domain = models.CharField(max_length=3, choices=SCIPOST_JOURNALS_DOMAINS) subject_area = models.CharField( max_length=10, choices=SCIPOST_SUBJECT_AREAS, @@ -51,8 +53,7 @@ class Commentary(TimeStampedModel): metadata = JSONField(default={}, blank=True, null=True) arxiv_or_DOI_string = models.CharField( max_length=100, - verbose_name='string form of arxiv nr or DOI for commentary url', - default='') + verbose_name='string form of arxiv nr or DOI for commentary url') author_list = models.CharField(max_length=1000) # Authors which have been mapped to contributors: @@ -127,8 +128,8 @@ class Commentary(TimeStampedModel): 'author_list': self.author_list, 'latest_activity': self.latest_activity.strftime('%Y-%m-%d %H:%M')}) header = ('<li>' - #'<div class="flex-container">' - #'<div class="flex-whitebox0">' + # '<div class="flex-container">' + # '<div class="flex-whitebox0">' '<p><a href="{{ scipost_url }}" ' 'class="pubtitleli">{{ pub_title }}</a></p>' '<p>by {{ author_list }}') @@ -145,7 +146,7 @@ class Commentary(TimeStampedModel): header += '<p> (published {{ pub_date }}) - ' context['pub_date'] = str(self.pub_date) header += ('latest activity: {{ latest_activity }}</p>' - #'</div></div>' + # '</div></div>' '</li>') template = Template(header) @@ -180,7 +181,7 @@ class Commentary(TimeStampedModel): elif self.arxiv_identifier: self.arxiv_or_DOI_string = 'arXiv:' + self.arxiv_identifier self.arxiv_link = 'http://arxiv.org/abs/' + self.arxiv_identifier - else: # should never come here + else: # should never come here pass self.save() diff --git a/commentaries/templates/commentaries/vet_commentary_email_accepted.html b/commentaries/templates/commentaries/vet_commentary_email_accepted.html new file mode 100644 index 0000000000000000000000000000000000000000..69ba77f82041bc55e7d95c3dc5b34f4e486de797 --- /dev/null +++ b/commentaries/templates/commentaries/vet_commentary_email_accepted.html @@ -0,0 +1,7 @@ +Dear {{commentary.requested_by.get_title}} {{commentary.requested_by.user.last_name}}, + +The Commentary Page you have requested, concerning publication with title {{commentary.pub_title}} by {{commentary.author_list}}, has been activated at https://scipost.org/commentary/'{{commentary.arxiv_or_DOI_string}}. +You are now welcome to submit your comments. + +Thank you for your contribution, +The SciPost Team. diff --git a/commentaries/templates/commentaries/vet_commentary_email_modified.html b/commentaries/templates/commentaries/vet_commentary_email_modified.html new file mode 100644 index 0000000000000000000000000000000000000000..f3ad85365c4ab2f4398dc9b9e644aeece54b7559 --- /dev/null +++ b/commentaries/templates/commentaries/vet_commentary_email_modified.html @@ -0,0 +1,7 @@ +Dear {{commentary.requested_by.get_title}} {{commentary.requested_by.user.last_name}}, + +The Commentary Page you have requested, concerning publication with title {{commentary.pub_title}} by {{commentary.author_list}}, has been activated (with slight modifications to your submitted details). +You are now welcome to submit your comments. + +Thank you for your contribution, +The SciPost Team. diff --git a/commentaries/templates/commentaries/vet_commentary_email_rejected.html b/commentaries/templates/commentaries/vet_commentary_email_rejected.html new file mode 100644 index 0000000000000000000000000000000000000000..b9d99fade03b2a34cfcb59728285f97b7e677c61 --- /dev/null +++ b/commentaries/templates/commentaries/vet_commentary_email_rejected.html @@ -0,0 +1,11 @@ +Dear {{commentary.requested_by.get_title}} {{commentary.requested_by.user.last_name}}, + +The Commentary Page you have requested, concerning publication with title {{commentary.pub_title}} by {{commentary.author_list}}, has not been activated for the following reason: {{refusal_reason}}. + +{% if further_explanation %} +Further explanations: +{{further_explanation}} +{% endif %} + +Thank you for your interest, +The SciPost Team. diff --git a/commentaries/test_forms.py b/commentaries/test_forms.py index 694ce19ec56c93503b879a51038f068b06947f7c..4f203579623abbd09d6a8bec9a265b0b35fc6c9b 100644 --- a/commentaries/test_forms.py +++ b/commentaries/test_forms.py @@ -1,14 +1,75 @@ -import factory - from django.test import TestCase from scipost.factories import UserFactory -from .factories import VettedCommentaryFactory -from .forms import RequestCommentaryForm +from .models import Commentary +from .factories import VettedCommentaryFactory, UnVettedCommentaryFactory +from .forms import RequestCommentaryForm, VetCommentaryForm from common.helpers import model_form_data +class TestVetCommentaryForm(TestCase): + fixtures = ['permissions', 'groups'] + + def setUp(self): + self.commentary = UnVettedCommentaryFactory.create() + self.user = UserFactory() + self.form_data = { + 'action_option': VetCommentaryForm.ACTION_ACCEPT, + 'refusal_reason': VetCommentaryForm.REFUSAL_EMPTY, + 'email_response_field': 'Lorem Ipsum' + } + + def test_valid_accepted_form(self): + """Test valid form data and return Commentary""" + form = VetCommentaryForm(self.form_data, commentary_id=self.commentary.id, user=self.user) + self.assertTrue(form.is_valid()) + self.assertFalse(Commentary.objects.vetted().exists()) + self.assertTrue(Commentary.objects.awaiting_vetting().exists()) + + # Accept Commentary in database + form.process_commentary() + self.assertTrue(Commentary.objects.vetted().exists()) + self.assertFalse(Commentary.objects.awaiting_vetting().exists()) + + def test_valid_modified_form(self): + """Test valid form data and delete Commentary""" + self.form_data['action_option'] = VetCommentaryForm.ACTION_MODIFY + form = VetCommentaryForm(self.form_data, commentary_id=self.commentary.id, user=self.user) + self.assertTrue(form.is_valid()) + self.assertFalse(Commentary.objects.vetted().exists()) + self.assertTrue(Commentary.objects.awaiting_vetting().exists()) + + # Delete the Commentary + form.process_commentary() + self.assertTrue(form.commentary_is_modified()) + self.assertFalse(Commentary.objects.awaiting_vetting().exists()) + + def test_valid_rejected_form(self): + """Test valid form data and delete Commentary""" + self.form_data['action_option'] = VetCommentaryForm.ACTION_REFUSE + self.form_data['refusal_reason'] = VetCommentaryForm.REFUSAL_UNTRACEBLE + form = VetCommentaryForm(self.form_data, commentary_id=self.commentary.id, user=self.user) + self.assertTrue(form.is_valid()) + self.assertFalse(Commentary.objects.vetted().exists()) + self.assertTrue(Commentary.objects.awaiting_vetting().exists()) + + # Delete the Commentary + form.process_commentary() + self.assertTrue(form.commentary_is_refused()) + self.assertFalse(Commentary.objects.awaiting_vetting().exists()) + + # Refusal choice is ok + refusal_reason_inserted = VetCommentaryForm.COMMENTARY_REFUSAL_DICT[ + VetCommentaryForm.REFUSAL_UNTRACEBLE] + self.assertEqual(form.get_refusal_reason(), refusal_reason_inserted) + + def test_process_before_validation(self): + """Test response of form on processing before validation""" + form = VetCommentaryForm(self.form_data, commentary_id=self.commentary.id, user=self.user) + self.assertRaises(ValueError, form.process_commentary) + + class TestRequestCommentaryForm(TestCase): fixtures = ['permissions', 'groups'] @@ -17,6 +78,11 @@ class TestRequestCommentaryForm(TestCase): self.user = UserFactory() self.valid_form_data = model_form_data(factory_instance, RequestCommentaryForm) + def empty_and_return_form_data(self, key): + """Empty specific valid_form_data field and return""" + self.valid_form_data[key] = None + return self.valid_form_data + def test_valid_data_is_valid_for_arxiv(self): """Test valid form for Arxiv identifier""" form_data = self.valid_form_data @@ -31,12 +97,41 @@ class TestRequestCommentaryForm(TestCase): form = RequestCommentaryForm(form_data, user=self.user) self.assertTrue(form.is_valid()) - # def test_form_has_no_identifiers(self): - # """Test invalid form has no DOI nor Arxiv ID""" - # form_data = self.valid_form_data - # form_data['pub_DOI'] = '' - # form_data['arxiv_identifier'] = '' - # form = RequestCommentaryForm(form_data, user=self.user) - # form_response = form.is_valid() - # print(form_response) - # self.assertFormError(form_response, form, 'arxiv_identifier', None) + def test_form_has_no_identifiers(self): + """Test invalid form has no DOI nor Arxiv ID""" + form_data = self.valid_form_data + form_data['pub_DOI'] = '' + form_data['arxiv_identifier'] = '' + form = RequestCommentaryForm(form_data, user=self.user) + self.assertFalse(form.is_valid()) + self.assertTrue('arxiv_identifier' in form.errors) + self.assertTrue('pub_DOI' in form.errors) + + def test_form_with_duplicate_DOI(self): + """Test form response with already existing DOI""" + # Create a factory instance containing Arxiv ID and DOI + VettedCommentaryFactory.create() + + # Test duplicate DOI entry + form_data = self.empty_and_return_form_data('arxiv_identifier') + form = RequestCommentaryForm(form_data, user=self.user) + self.assertTrue('pub_DOI' in form.errors) + self.assertFalse(form.is_valid()) + + # Check is existing commentary is valid + existing_commentary = form.get_existing_commentary() + self.assertEqual(existing_commentary.pub_DOI, form_data['pub_DOI']) + + def test_form_with_duplicate_arxiv_id(self): + """Test form response with already existing Arxiv ID""" + VettedCommentaryFactory.create() + + # Test duplicate Arxiv entry + form_data = self.empty_and_return_form_data('pub_DOI') + form = RequestCommentaryForm(form_data, user=self.user) + self.assertTrue('arxiv_identifier' in form.errors) + self.assertFalse(form.is_valid()) + + # Check is existing commentary is valid + existing_commentary = form.get_existing_commentary() + self.assertEqual(existing_commentary.arxiv_identifier, form_data['arxiv_identifier']) diff --git a/commentaries/test_views.py b/commentaries/test_views.py index e6cc591f82f92345fe466d9dad9a23fe0d24063f..682a28b4b229b6ac21ae42325e0619f65f303f57 100644 --- a/commentaries/test_views.py +++ b/commentaries/test_views.py @@ -1,7 +1,7 @@ -from django.contrib.auth.models import Group from django.core.urlresolvers import reverse from django.test import TestCase + class RequestCommentaryTest(TestCase): """Test cases for `request_commentary` view method""" fixtures = ['permissions', 'groups', 'contributors'] diff --git a/commentaries/tests.py b/commentaries/tests.py deleted file mode 100644 index 7ce503c2dd97ba78597f6ff6e4393132753573f6..0000000000000000000000000000000000000000 --- a/commentaries/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/commentaries/views.py b/commentaries/views.py index 506fd838fc126d015f7c7144b29e4f73a4340b0f..8c9288b1c8fb1c56e0f3d38d9d7db71c0f8dc430 100644 --- a/commentaries/views.py +++ b/commentaries/views.py @@ -3,26 +3,21 @@ import feedparser import re import requests -from django.db.models import Q from django.utils import timezone from django.shortcuts import get_object_or_404, render -from django.contrib.auth import login, logout from django.contrib.auth.decorators import login_required, permission_required from django.core.mail import EmailMessage from django.core.urlresolvers import reverse -from django.http import HttpResponse from django.shortcuts import redirect +from django.template.loader import render_to_string from .models import Commentary from .forms import RequestCommentaryForm, DOIToQueryForm, IdentifierToQueryForm -from .forms import VetCommentaryForm, CommentarySearchForm, commentary_refusal_dict +from .forms import VetCommentaryForm, CommentarySearchForm from comments.models import Comment from comments.forms import CommentForm from scipost.models import Contributor -from scipost.models import title_dict -from scipost.forms import AuthenticationForm - ################ # Commentaries @@ -60,6 +55,7 @@ def request_commentary(request): context = {'form': form, 'doiform': doiform, 'identifierform': identifierform} return render(request, 'commentaries/request_commentary.html', context) + @permission_required('scipost.can_request_commentary_pages', raise_exception=True) def prefill_using_DOI(request): """ Probes CrossRef API with the DOI, to pre-fill the form. """ @@ -74,7 +70,8 @@ def prefill_using_DOI(request): errormessage = 'The DOI you entered is improperly formatted.' elif Commentary.objects.filter(pub_DOI=doiform.cleaned_data['doi']).exists(): errormessage = 'There already exists a Commentary Page on this publication, see' - existing_commentary = get_object_or_404(Commentary, pub_DOI=doiform.cleaned_data['doi']) + existing_commentary = get_object_or_404(Commentary, + pub_DOI=doiform.cleaned_data['doi']) if errormessage: form = RequestCommentaryForm() identifierform = IdentifierToQueryForm() @@ -103,7 +100,7 @@ def prefill_using_DOI(request): pages = '' try: - pages = doiqueryJSON['message']['article-number'] # for Phys Rev + pages = doiqueryJSON['message']['article-number'] # for Phys Rev except KeyError: pass try: @@ -116,7 +113,8 @@ def prefill_using_DOI(request): pub_date = (str(doiqueryJSON['message']['issued']['date-parts'][0][0]) + '-' + str(doiqueryJSON['message']['issued']['date-parts'][0][1])) try: - pub_date += '-' + str(doiqueryJSON['message']['issued']['date-parts'][0][2]) + pub_date += '-' + str( + doiqueryJSON['message']['issued']['date-parts'][0][2]) except (IndexError, KeyError): pass except (IndexError, KeyError): @@ -129,7 +127,7 @@ def prefill_using_DOI(request): 'pages': pages, 'pub_date': pub_date, 'pub_DOI': pub_DOI}) identifierform = IdentifierToQueryForm() - context = {'form': form, 'doiform': doiform, 'identifierform': identifierform,} + context = {'form': form, 'doiform': doiform, 'identifierform': identifierform, } context['title'] = pub_title return render(request, 'commentaries/request_commentary.html', context) except (IndexError, KeyError, ValueError): @@ -138,9 +136,10 @@ def prefill_using_DOI(request): pass return redirect(reverse('commentaries:request_commentary')) + @permission_required('scipost.can_request_commentary_pages', raise_exception=True) def prefill_using_identifier(request): - """ Probes arXiv with the identifier, to pre-fill the form. """ + """Probes arXiv with the identifier, to pre-fill the form""" if request.method == "POST": identifierform = IdentifierToQueryForm(request.POST) if identifierform.is_valid(): @@ -181,7 +180,7 @@ def prefill_using_identifier(request): pass try: arxiv_doi = arxivquery['entries'][0]['arxiv_doi'] - errormessage = ('This paper has been published under DOI ' + arxiv_DOI + errormessage = ('This paper has been published under DOI ' + arxiv_doi + '. Please comment on the published version.') except (IndexError, KeyError): pass @@ -211,8 +210,10 @@ def prefill_using_identifier(request): context = {'form': form, 'doiform': doiform, 'identifierform': identifierform} context['title'] = pub_title return render(request, 'commentaries/request_commentary.html', context) - except (IndexError, KeyError, ValueError): # something went wrong with processing the arXiv data - errormessage = 'An error occurred while processing the arXiv data. Are you sure this identifier exists?' + except (IndexError, KeyError, ValueError): + # something went wrong with processing the arXiv data + errormessage = ('An error occurred while processing the arXiv data.' + ' Are you sure this identifier exists?') form = RequestCommentaryForm() doiform = DOIToQueryForm() context = {'form': form, 'doiform': doiform, 'identifierform': identifierform, @@ -226,83 +227,60 @@ def prefill_using_identifier(request): @permission_required('scipost.can_vet_commentary_requests', raise_exception=True) def vet_commentary_requests(request): + """Show the first commentary thats awaiting vetting""" contributor = Contributor.objects.get(user=request.user) - commentary_to_vet = Commentary.objects.awaiting_vetting().first() # only handle one at a time + commentary_to_vet = Commentary.objects.awaiting_vetting().first() # only handle one at a time form = VetCommentaryForm() - context = {'contributor': contributor, 'commentary_to_vet': commentary_to_vet, 'form': form } + context = {'contributor': contributor, 'commentary_to_vet': commentary_to_vet, 'form': form} return render(request, 'commentaries/vet_commentary_requests.html', context) + @permission_required('scipost.can_vet_commentary_requests', raise_exception=True) def vet_commentary_request_ack(request, commentary_id): if request.method == 'POST': - form = VetCommentaryForm(request.POST) - commentary = Commentary.objects.get(pk=commentary_id) + form = VetCommentaryForm(request.POST, user=request.user, commentary_id=commentary_id) if form.is_valid(): - if form.cleaned_data['action_option'] == '1': - # accept the commentary as is - commentary.vetted = True - commentary.vetted_by = Contributor.objects.get(user=request.user) - commentary.latest_activity = timezone.now() - commentary.save() - email_text = ('Dear ' + title_dict[commentary.requested_by.title] + ' ' - + commentary.requested_by.user.last_name - + ', \n\nThe Commentary Page you have requested, ' - 'concerning publication with title ' - + commentary.pub_title + ' by ' + commentary.author_list - + ', has been activated at https://scipost.org/commentary/' - + str(commentary.arxiv_or_DOI_string) - + '. You are now welcome to submit your comments.' - '\n\nThank you for your contribution, \nThe SciPost Team.') - emailmessage = EmailMessage('SciPost Commentary Page activated', email_text, - 'SciPost commentaries <commentaries@scipost.org>', - [commentary.requested_by.user.email], - ['commentaries@scipost.org'], - reply_to=['commentaries@scipost.org']) - emailmessage.send(fail_silently=False) - elif form.cleaned_data['action_option'] == '0': - # re-edit the form starting from the data provided - form2 = RequestCommentaryForm(initial={'pub_title': commentary.pub_title, - 'arxiv_link': commentary.arxiv_link, - 'pub_DOI_link': commentary.pub_DOI_link, - 'author_list': commentary.author_list, - 'pub_date': commentary.pub_date, - 'pub_abstract': commentary.pub_abstract}) - commentary.delete() - email_text = ('Dear ' + title_dict[commentary.requested_by.title] + ' ' - + commentary.requested_by.user.last_name - + ', \n\nThe Commentary Page you have requested, ' - 'concerning publication with title ' + commentary.pub_title - + ' by ' + commentary.author_list - + ', has been activated (with slight modifications to your submitted details).' - ' You are now welcome to submit your comments.' - '\n\nThank you for your contribution, \nThe SciPost Team.') - emailmessage = EmailMessage('SciPost Commentary Page activated', email_text, - 'SciPost commentaries <commentaries@scipost.org>', - [commentary.requested_by.user.email], - ['commentaries@scipost.org'], - reply_to=['commentaries@scipost.org']) - emailmessage.send(fail_silently=False) - context = {'form': form2 } + # Get commentary + commentary = form.get_commentary() + email_context = { + 'commentary': commentary + } + + # Retrieve email_template for action + if form.commentary_is_accepted(): + email_template = 'commentaries/vet_commentary_email_accepted.html' + elif form.commentary_is_modified(): + email_template = 'commentaries/vet_commentary_email_modified.html' + + request_commentary_form = RequestCommentaryForm(initial={ + 'pub_title': commentary.pub_title, + 'arxiv_link': commentary.arxiv_link, + 'pub_DOI_link': commentary.pub_DOI_link, + 'author_list': commentary.author_list, + 'pub_date': commentary.pub_date, + 'pub_abstract': commentary.pub_abstract + }) + elif form.commentary_is_refused(): + email_template = 'commentaries/vet_commentary_email_rejected.html' + email_context['refusal_reason'] = form.get_refusal_reason() + email_context['further_explanation'] = form.cleaned_data['email_response_field'] + + # Send email and process form + email_text = render_to_string(email_template, email_context) + email_args = ( + 'SciPost Commentary Page activated', + email_text, + [commentary.requested_by.user.email], + ['commentaries@scipost.org'] + ) + emailmessage = EmailMessage(*email_args, reply_to=['commentaries@scipost.org']) + emailmessage.send(fail_silently=False) + commentary = form.process_commentary() + + # For a modified commentary, redirect to request_commentary_form + if form.commentary_is_modified(): + context = {'form': request_commentary_form} return render(request, 'commentaries/request_commentary.html', context) - elif form.cleaned_data['action_option'] == '2': - # the commentary request is simply rejected - email_text = ('Dear ' + title_dict[commentary.requested_by.title] + ' ' - + commentary.requested_by.user.last_name - + ', \n\nThe Commentary Page you have requested, ' - 'concerning publication with title ' - + commentary.pub_title + ' by ' + commentary.author_list - + ', has not been activated for the following reason: ' - + commentary_refusal_dict[int(form.cleaned_data['refusal_reason'])] - + '.\n\nThank you for your interest, \nThe SciPost Team.') - if form.cleaned_data['email_response_field']: - email_text += '\n\nFurther explanations: ' + form.cleaned_data['email_response_field'] - emailmessage = EmailMessage('SciPost Commentary Page activated', email_text, - 'SciPost commentaries <commentaries@scipost.org>', - [commentary.requested_by.user.email], - ['commentaries@scipost.org'], - reply_to=['comentaries@scipost.org']) - emailmessage.send(fail_silently=False) - commentary.delete() context = {'ack_header': 'SciPost Commentary request vetted.', 'followup_message': 'Return to the ', @@ -310,6 +288,7 @@ def vet_commentary_request_ack(request, commentary_id): 'followup_link_label': 'Commentary requests page'} return render(request, 'scipost/acknowledgement.html', context) + def commentaries(request): """List and search all commentaries""" form = CommentarySearchForm(request.POST or None) @@ -326,6 +305,7 @@ def commentaries(request): 'commentary_recent_list': commentary_recent_list} return render(request, 'commentaries/commentaries.html', context) + def browse(request, discipline, nrweeksback): """List all commentaries for discipline and period""" commentary_browse_list = Commentary.objects.vetted( @@ -337,6 +317,7 @@ def browse(request, discipline, nrweeksback): 'commentary_browse_list': commentary_browse_list} return render(request, 'commentaries/commentaries.html', context) + def commentary_detail(request, arxiv_or_DOI_string): commentary = get_object_or_404(Commentary, arxiv_or_DOI_string=arxiv_or_DOI_string) comments = commentary.comment_set.all() @@ -345,18 +326,18 @@ def commentary_detail(request, arxiv_or_DOI_string): if form.is_valid(): author = Contributor.objects.get(user=request.user) newcomment = Comment(commentary=commentary, author=author, - is_rem=form.cleaned_data['is_rem'], - is_que=form.cleaned_data['is_que'], - is_ans=form.cleaned_data['is_ans'], - is_obj=form.cleaned_data['is_obj'], - is_rep=form.cleaned_data['is_rep'], - is_val=form.cleaned_data['is_val'], - is_lit=form.cleaned_data['is_lit'], - is_sug=form.cleaned_data['is_sug'], - comment_text=form.cleaned_data['comment_text'], - remarks_for_editors=form.cleaned_data['remarks_for_editors'], - date_submitted=timezone.now(), - ) + is_rem=form.cleaned_data['is_rem'], + is_que=form.cleaned_data['is_que'], + is_ans=form.cleaned_data['is_ans'], + is_obj=form.cleaned_data['is_obj'], + is_rep=form.cleaned_data['is_rep'], + is_val=form.cleaned_data['is_val'], + is_lit=form.cleaned_data['is_lit'], + is_sug=form.cleaned_data['is_sug'], + comment_text=form.cleaned_data['comment_text'], + remarks_for_editors=form.cleaned_data['remarks_for_editors'], + date_submitted=timezone.now(), + ) newcomment.save() author.nr_comments = Comment.objects.filter(author=author).count() author.save() @@ -365,10 +346,12 @@ def commentary_detail(request, arxiv_or_DOI_string): 'followup_message': 'Back to the ', 'followup_link': reverse( 'commentaries:commentary', - kwargs={'arxiv_or_DOI_string': newcomment.commentary.arxiv_or_DOI_string} + kwargs={ + 'arxiv_or_DOI_string': newcomment.commentary.arxiv_or_DOI_string + } ), 'followup_link_label': ' Commentary page you came from' - } + } return render(request, 'scipost/acknowledgement.html', context) else: form = CommentForm() diff --git a/comments/migrations/0004_auto_20161212_1931.py b/comments/migrations/0004_auto_20161212_1931.py new file mode 100644 index 0000000000000000000000000000000000000000..82befb1916a8b6278be61dcdc5a9530434d06cad --- /dev/null +++ b/comments/migrations/0004_auto_20161212_1931.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-12-12 18:31 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('comments', '0003_auto_20160404_2150'), + ] + + operations = [ + migrations.AlterField( + model_name='comment', + name='in_agreement', + field=models.ManyToManyField(blank=True, related_name='in_agreement', to='scipost.Contributor'), + ), + migrations.AlterField( + model_name='comment', + name='in_disagreement', + field=models.ManyToManyField(blank=True, related_name='in_disagreement', to='scipost.Contributor'), + ), + migrations.AlterField( + model_name='comment', + name='in_notsure', + field=models.ManyToManyField(blank=True, related_name='in_notsure', to='scipost.Contributor'), + ), + migrations.AlterField( + model_name='comment', + name='is_cor', + field=models.BooleanField(default=False, verbose_name='correction/erratum'), + ), + ] diff --git a/comments/migrations/0005_merge_20161219_2126.py b/comments/migrations/0005_merge_20161219_2126.py new file mode 100644 index 0000000000000000000000000000000000000000..f604a8605fd90bc48a48ababc797a758ed29c2a3 --- /dev/null +++ b/comments/migrations/0005_merge_20161219_2126.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-12-19 20:26 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('comments', '0004_auto_20161212_1931'), + ('comments', '0004_auto_20161213_1208'), + ] + + operations = [ + ] diff --git a/common/helpers/factories.py b/common/helpers/factories.py new file mode 100644 index 0000000000000000000000000000000000000000..b033a898be81b691d884566550a661480c663611 --- /dev/null +++ b/common/helpers/factories.py @@ -0,0 +1,10 @@ +import factory + + +class FormFactory(factory.Factory): + class Meta: + strategy = factory.BUILD_STRATEGY + + @classmethod + def _build(cls, model_class, *args, **kwargs): + return model_class(kwargs) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle deleted file mode 100644 index 5ff5e6a9ea55399cf327919913699348eee34d57..0000000000000000000000000000000000000000 Binary files a/docs/_build/doctrees/environment.pickle and /dev/null differ diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree deleted file mode 100644 index 82cc964c8abcdb3c95596212e56f62622823670f..0000000000000000000000000000000000000000 Binary files a/docs/_build/doctrees/index.doctree and /dev/null differ diff --git a/docs/_build/doctrees/modules/models.doctree b/docs/_build/doctrees/modules/models.doctree deleted file mode 100644 index 5357f423e252b5f59617dc9480bc463237ec1177..0000000000000000000000000000000000000000 Binary files a/docs/_build/doctrees/modules/models.doctree and /dev/null differ diff --git a/docs/_build/doctrees/modules/views.doctree b/docs/_build/doctrees/modules/views.doctree deleted file mode 100644 index e0a3eca4d13f53f5d925e889ef7f91a0154777ae..0000000000000000000000000000000000000000 Binary files a/docs/_build/doctrees/modules/views.doctree and /dev/null differ diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo deleted file mode 100644 index 437c337e812e68f9a64439c305546bd46c62e678..0000000000000000000000000000000000000000 --- a/docs/_build/html/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: cd905be45edcdbc0b95fc6ff854e3c2b -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_build/html/_modules/commentaries/models.html b/docs/_build/html/_modules/commentaries/models.html deleted file mode 100644 index 3941d4f3c2cdd9b0c7f83e4f2b23f8759ab7632e..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/commentaries/models.html +++ /dev/null @@ -1,389 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>commentaries.models — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../../genindex.html"/> - <link rel="search" title="Search" href="../../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../../index.html"/> - <link rel="up" title="Module code" href="../index.html"/> - - - <script src="../../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../../index.html">Docs</a> »</li> - - <li><a href="../index.html">Module code</a> »</li> - - <li>commentaries.models</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>Source code for commentaries.models</h1><div class="highlight"><pre> -<span></span><span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span> -<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">models</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span> -<span class="kn">from</span> <span class="nn">django.contrib.postgres.fields</span> <span class="k">import</span> <span class="n">JSONField</span> -<span class="kn">from</span> <span class="nn">django.template</span> <span class="k">import</span> <span class="n">Template</span><span class="p">,</span> <span class="n">Context</span> - -<span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">SCIPOST_JOURNALS_DOMAINS</span><span class="p">,</span> <span class="n">SCIPOST_JOURNALS_SPECIALIZATIONS</span> -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">Contributor</span> -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span> <span class="n">SCIPOST_SUBJECT_AREAS</span> - - - -<span class="n">COMMENTARY_TYPES</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'published'</span><span class="p">,</span> <span class="s1">'published paper'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'preprint'</span><span class="p">,</span> <span class="s1">'arXiv preprint'</span><span class="p">),</span> - <span class="p">)</span> - -<div class="viewcode-block" id="Commentary"><a class="viewcode-back" href="../../modules/models.html#commentaries.models.Commentary">[docs]</a><span class="k">class</span> <span class="nc">Commentary</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> A Commentary contains all the contents of a SciPost Commentary page for a given publication.</span> -<span class="sd"> """</span> - <span class="n">requested_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'requested_by'</span><span class="p">)</span> - <span class="n">vetted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">vetted_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="nb">type</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">9</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">COMMENTARY_TYPES</span><span class="p">)</span> <span class="c1"># published paper or arxiv preprint</span> - <span class="n">discipline</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'physics'</span><span class="p">)</span> - <span class="n">domain</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_JOURNALS_DOMAINS</span><span class="p">)</span> -<span class="c1"># specialization = models.CharField(max_length=1, choices=SCIPOST_JOURNALS_SPECIALIZATIONS)</span> - <span class="n">subject_area</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'Phys:QP'</span><span class="p">)</span> - <span class="n">open_for_commenting</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">pub_title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'title'</span><span class="p">)</span> - <span class="n">arxiv_identifier</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s2">"arXiv identifier (including version nr)"</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">arxiv_link</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">URLField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'arXiv link (including version nr)'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">pub_DOI</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'DOI of the original publication'</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">pub_DOI_link</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">URLField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'DOI link to the original publication'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">metadata</span> <span class="o">=</span> <span class="n">JSONField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="p">{},</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">arxiv_or_DOI_string</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span> - <span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'string form of arxiv nr or DOI for commentary url'</span><span class="p">,</span> - <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> - <span class="n">author_list</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span> - <span class="c1"># Authors which have been mapped to contributors:</span> - <span class="n">authors</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_com'</span><span class="p">)</span> - <span class="n">authors_claims</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_com_claims'</span><span class="p">)</span> - <span class="n">authors_false_claims</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_com_false_claims'</span><span class="p">)</span> - <span class="n">journal</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">volume</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">pages</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">pub_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'date of original publication'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">pub_abstract</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'abstract'</span><span class="p">)</span> - <span class="n">latest_activity</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - - <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span> - <span class="n">verbose_name_plural</span> <span class="o">=</span> <span class="s1">'Commentaries'</span> - - - <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_title</span> - - - <span class="k">def</span> <span class="nf">header_as_table</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for display in Commentary page itself</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<table>'</span> - <span class="s1">'<tr><td>Title: </td><td>&nbsp;</td><td>{{ pub_title }}</td></tr>'</span> - <span class="s1">'<tr><td>Author(s): </td><td>&nbsp;</td><td>{{ author_list }}</td></tr>'</span> - <span class="s1">'<tr><td>As Contributors: </td><td>&nbsp;</td>'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<td>'</span> - <span class="k">for</span> <span class="n">auth</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<a href="/contributor/'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">auth</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'">'</span> <span class="o">+</span> <span class="n">auth</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> - <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">auth</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">'</a>,&nbsp;'</span><span class="p">)</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'</td>'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<td>(none claimed)</td>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'</tr>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">'published'</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<tr><td>Journal ref.: </td><td>&nbsp;</td><td>{{ journal }} {{ volume }}, '</span> - <span class="s1">'{{ pages }}</td></tr>'</span> - <span class="s1">'<tr><td>DOI: </td><td>&nbsp;</td><td><a href="{{ pub_DOI_link }}" '</span> - <span class="s1">'target="_blank">{{ pub_DOI_link }}</a></td></tr>'</span><span class="p">)</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">'preprint'</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<tr><td>arxiv Link: </td><td>&nbsp;</td><td><a href="{{ arxiv_link }}">'</span> - <span class="s1">'{{ arxiv_link }}</a></td></tr>'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_date</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<tr><td>Date: </td><td>&nbsp;</td><td>{{ pub_date }}</td></tr>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'</table>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span> - <span class="s1">'pub_title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_title</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="p">})</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">'published'</span><span class="p">:</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'journal'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">journal</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'volume'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">volume</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'pages'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pages</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'pub_DOI_link'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_DOI_link</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'pub_date'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_date</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">'preprint'</span><span class="p">:</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'arxiv_link'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_link</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for display in search lists</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'scipost_url'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">scipost_url</span><span class="p">(),</span> <span class="s1">'pub_title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_title</span><span class="p">,</span> - <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'latest_activity'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">latest_activity</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">)})</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li>'</span> - <span class="c1">#'<div class="flex-container">'</span> - <span class="c1">#'<div class="flex-whitebox0">'</span> - <span class="s1">'<p><a href="{{ scipost_url }}" '</span> - <span class="s1">'class="pubtitleli">{{ pub_title }}</a></p>'</span> - <span class="s1">'<p>by {{ author_list }}'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">'published'</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">', {{ journal }} {{ volume }}, {{ pages }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'journal'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">journal</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'volume'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">volume</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'pages'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pages</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">'preprint'</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">', <a href="{{ arxiv_link }}">{{ arxiv_link }}</a>'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'arxiv_link'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_link</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'</p>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_date</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<p> (published {{ pub_date }}) - '</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'pub_date'</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pub_date</span><span class="p">)</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'latest activity: {{ latest_activity }}</p>'</span> - <span class="c1">#'</div></div>'</span> - <span class="s1">'</li>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">simple_header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for display in Lists</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'scipost_url'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">scipost_url</span><span class="p">(),</span> <span class="s1">'pub_title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_title</span><span class="p">,</span> - <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">})</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li>'</span> - <span class="c1">#'<div class="flex-container">'</span> - <span class="c1">#'<div class="flex-whitebox0">'</span> - <span class="s1">'<p><a href="{{ scipost_url }}" '</span> - <span class="s1">'class="pubtitleli">{{ pub_title }}</a></p>'</span> - <span class="s1">'<p>by {{ author_list }}'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">'published'</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">', {{ journal }} {{ volume }}, {{ pages }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'journal'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">journal</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'volume'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">volume</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'pages'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pages</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">==</span> <span class="s1">'preprint'</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">', <a href="{{ arxiv_link }}">{{ arxiv_link }}</a>'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'arxiv_link'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_link</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'</p>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="c1">#'</div></div>'</span> - <span class="s1">'</li>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - -<div class="viewcode-block" id="Commentary.parse_links_into_urls"><a class="viewcode-back" href="../../modules/models.html#commentaries.models.Commentary.parse_links_into_urls">[docs]</a> <span class="k">def</span> <span class="nf">parse_links_into_urls</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="sd">""" Takes the arXiv nr or DOI and turns it into the urls """</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_DOI</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_DOI</span> -<span class="c1"># self.arxiv_or_DOI_string = self.arxiv_or_DOI_string.replace('http://dx.doi.org/', '')</span> - <span class="bp">self</span><span class="o">.</span><span class="n">pub_DOI_link</span> <span class="o">=</span> <span class="s1">'http://dx.doi.org/'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_DOI</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier</span><span class="p">:</span> -<span class="c1"># self.arxiv_or_DOI_string = str(self.arxiv_link)</span> -<span class="c1"># # Format required: either identifier arXiv:1234.56789v10 or old-style arXiv:cond-mat/9712001v1</span> -<span class="c1"># # strip:</span> -<span class="c1"># self.arxiv_or_DOI_string = self.arxiv_or_DOI_string.replace('http://', '')</span> -<span class="c1"># # Old style: from arxiv.org/abs/1234.5678 into arXiv:1234.5678 (new identifier style)</span> -<span class="c1"># self.arxiv_or_DOI_string = self.arxiv_or_DOI_string.replace('arxiv.org/', '')</span> -<span class="c1"># self.arxiv_or_DOI_string = self.arxiv_or_DOI_string.replace('abs/', '')</span> -<span class="c1"># self.arxiv_or_DOI_string = self.arxiv_or_DOI_string.replace('pdf/', '')</span> -<span class="c1"># # make sure arXiv prefix is there:</span> -<span class="c1"># self.arxiv_or_DOI_string = 'arXiv:' + self.arxiv_or_DOI_string</span> - <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span> <span class="o">=</span> <span class="s1">'arXiv:'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier</span> - <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_link</span> <span class="o">=</span> <span class="s1">'http://arxiv.org/abs/'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier</span> - <span class="k">else</span><span class="p">:</span> <span class="c1"># should never come here</span> - <span class="k">pass</span> - <span class="bp">self</span><span class="o">.</span><span class="n">save</span><span class="p">()</span></div> - -<div class="viewcode-block" id="Commentary.scipost_url"><a class="viewcode-back" href="../../modules/models.html#commentaries.models.Commentary.scipost_url">[docs]</a> <span class="k">def</span> <span class="nf">scipost_url</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="sd">""" Returns the url of the SciPost Commentary Page """</span> - <span class="k">return</span> <span class="s1">'/commentary/'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span></div> - -<div class="viewcode-block" id="Commentary.scipost_url_full"><a class="viewcode-back" href="../../modules/models.html#commentaries.models.Commentary.scipost_url_full">[docs]</a> <span class="k">def</span> <span class="nf">scipost_url_full</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="sd">""" Returns the url of the SciPost Commentary Page """</span> - <span class="k">return</span> <span class="s1">'https://scipost.org/commentary/'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span></div></div> -</pre></div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_modules/commentaries/views.html b/docs/_build/html/_modules/commentaries/views.html deleted file mode 100644 index fc65e3fd7c17d0daa122656f31a607550d960268..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/commentaries/views.html +++ /dev/null @@ -1,651 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>commentaries.views — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../../genindex.html"/> - <link rel="search" title="Search" href="../../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../../index.html"/> - <link rel="up" title="Module code" href="../index.html"/> - - - <script src="../../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../../index.html">Docs</a> »</li> - - <li><a href="../index.html">Module code</a> »</li> - - <li>commentaries.views</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>Source code for commentaries.views</h1><div class="highlight"><pre> -<span></span><span class="kn">import</span> <span class="nn">datetime</span> -<span class="kn">import</span> <span class="nn">feedparser</span> -<span class="kn">import</span> <span class="nn">re</span> -<span class="kn">import</span> <span class="nn">requests</span> - -<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="k">import</span> <span class="n">Q</span> -<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span> -<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span class="k">import</span> <span class="n">get_object_or_404</span><span class="p">,</span> <span class="n">render</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth</span> <span class="k">import</span> <span class="n">authenticate</span><span class="p">,</span> <span class="n">login</span><span class="p">,</span> <span class="n">logout</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.decorators</span> <span class="k">import</span> <span class="n">login_required</span><span class="p">,</span> <span class="n">permission_required</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span> -<span class="kn">from</span> <span class="nn">django.core.mail</span> <span class="k">import</span> <span class="n">EmailMessage</span> -<span class="kn">from</span> <span class="nn">django.core.urlresolvers</span> <span class="k">import</span> <span class="n">reverse</span> -<span class="kn">from</span> <span class="nn">django.http</span> <span class="k">import</span> <span class="n">HttpResponse</span><span class="p">,</span> <span class="n">HttpResponseRedirect</span> -<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span class="k">import</span> <span class="n">redirect</span> -<span class="kn">from</span> <span class="nn">django.views.decorators.csrf</span> <span class="k">import</span> <span class="n">csrf_protect</span> -<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="k">import</span> <span class="n">Avg</span> - -<span class="kn">from</span> <span class="nn">.models</span> <span class="k">import</span> <span class="n">Commentary</span> -<span class="kn">from</span> <span class="nn">.forms</span> <span class="k">import</span> <span class="n">RequestCommentaryForm</span><span class="p">,</span> <span class="n">DOIToQueryForm</span><span class="p">,</span> <span class="n">IdentifierToQueryForm</span> -<span class="kn">from</span> <span class="nn">.forms</span> <span class="k">import</span> <span class="n">VetCommentaryForm</span><span class="p">,</span> <span class="n">CommentarySearchForm</span><span class="p">,</span> <span class="n">commentary_refusal_dict</span> - -<span class="kn">from</span> <span class="nn">comments.models</span> <span class="k">import</span> <span class="n">Comment</span> -<span class="kn">from</span> <span class="nn">comments.forms</span> <span class="k">import</span> <span class="n">CommentForm</span> -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">Contributor</span> -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">title_dict</span> -<span class="kn">from</span> <span class="nn">scipost.forms</span> <span class="k">import</span> <span class="n">AuthenticationForm</span> - - -<span class="c1">################</span> -<span class="c1"># Commentaries</span> -<span class="c1">################</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_request_commentary_pages'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">request_commentary</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> -<span class="c1"># if form.cleaned_data['arxiv_identifier'] is None and form.cleaned_data['pub_DOI'] is None:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">''</span> - <span class="n">existing_commentary</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'arxiv_identifier'</span><span class="p">]</span> <span class="o">==</span><span class="s1">''</span> <span class="ow">and</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_DOI'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">''</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'You must provide either a DOI (for a published paper) '</span> - <span class="s1">'or an arXiv identifier (for a preprint).'</span><span class="p">)</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'arxiv_identifier'</span><span class="p">]</span> <span class="o">!=</span><span class="s1">''</span> <span class="ow">and</span> - <span class="p">(</span><span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">arxiv_identifier</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'arxiv_identifier'</span><span class="p">])</span><span class="o">.</span><span class="n">exists</span><span class="p">())):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'There already exists a Commentary Page on this preprint, see'</span> - <span class="n">existing_commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span> - <span class="n">Commentary</span><span class="p">,</span> - <span class="n">arxiv_identifier</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'arxiv_identifier'</span><span class="p">])</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_DOI'</span><span class="p">]</span> <span class="o">!=</span><span class="s1">''</span> <span class="ow">and</span> - <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">pub_DOI</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_DOI'</span><span class="p">])</span><span class="o">.</span><span class="n">exists</span><span class="p">()):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'There already exists a Commentary Page on this publication, see'</span> - <span class="n">existing_commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Commentary</span><span class="p">,</span> <span class="n">pub_DOI</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_DOI'</span><span class="p">])</span> - <span class="k">if</span> <span class="n">errormessage</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">:</span> - <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">()</span> - <span class="n">identifierform</span> <span class="o">=</span> <span class="n">IdentifierToQueryForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'doiform'</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span> - <span class="s1">'existing_commentary'</span><span class="p">:</span> <span class="n">existing_commentary</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/request_commentary.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="c1"># otherwise we can create the Commentary</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">commentary</span> <span class="o">=</span> <span class="n">Commentary</span> <span class="p">(</span> - <span class="n">requested_by</span> <span class="o">=</span> <span class="n">contributor</span><span class="p">,</span> - <span class="nb">type</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'type'</span><span class="p">],</span> - <span class="n">discipline</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'discipline'</span><span class="p">],</span> - <span class="n">domain</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'domain'</span><span class="p">],</span> -<span class="c1"># specialization = form.cleaned_data['specialization'],</span> - <span class="n">subject_area</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'subject_area'</span><span class="p">],</span> - <span class="n">pub_title</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_title'</span><span class="p">],</span> - <span class="n">arxiv_identifier</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'arxiv_identifier'</span><span class="p">],</span> - <span class="n">pub_DOI</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_DOI'</span><span class="p">],</span> - <span class="n">metadata</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'metadata'</span><span class="p">],</span> - <span class="n">author_list</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'author_list'</span><span class="p">],</span> - <span class="n">journal</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'journal'</span><span class="p">],</span> - <span class="n">volume</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'volume'</span><span class="p">],</span> - <span class="n">pages</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pages'</span><span class="p">],</span> - <span class="n">pub_date</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_date'</span><span class="p">],</span> - <span class="n">pub_abstract</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_abstract'</span><span class="p">],</span> - <span class="n">latest_activity</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="p">)</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">parse_links_into_urls</span><span class="p">()</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> -<span class="c1"># return HttpResponseRedirect('request_commentary_ack')</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'Thank you for your request for a Commentary Page'</span><span class="p">,</span> - <span class="s1">'ack_message'</span><span class="p">:</span> <span class="s1">'Your request will soon be handled by an Editor. '</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Return to your '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:personal_page'</span><span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'personal page'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">()</span> - <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">()</span> - <span class="n">identifierform</span> <span class="o">=</span> <span class="n">IdentifierToQueryForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'doiform'</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/request_commentary.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_request_commentary_pages'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="prefill_using_DOI"><a class="viewcode-back" href="../../modules/views.html#commentaries.views.prefill_using_DOI">[docs]</a><span class="k">def</span> <span class="nf">prefill_using_DOI</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">""" Probes CrossRef API with the DOI, to pre-fill the form. """</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span> - <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">doiform</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="c1"># Check if given doi is of expected form:</span> - <span class="n">doipattern</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^10.[0-9]{4,9}/[-._;()/:a-zA-Z0-9]+"</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">''</span> - <span class="n">existing_commentary</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">doipattern</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">doiform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'doi'</span><span class="p">]):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'The DOI you entered is improperly formatted.'</span> - <span class="k">elif</span> <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">pub_DOI</span><span class="o">=</span><span class="n">doiform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'doi'</span><span class="p">])</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'There already exists a Commentary Page on this publication, see'</span> - <span class="n">existing_commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Commentary</span><span class="p">,</span> <span class="n">pub_DOI</span><span class="o">=</span><span class="n">doiform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'doi'</span><span class="p">])</span> - <span class="k">if</span> <span class="n">errormessage</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">()</span> - <span class="n">identifierform</span> <span class="o">=</span> <span class="n">IdentifierToQueryForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'doiform'</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span> - <span class="s1">'existing_commentary'</span><span class="p">:</span> <span class="n">existing_commentary</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/request_commentary.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="c1"># Otherwise we query Crossref for the information:</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">queryurl</span> <span class="o">=</span> <span class="s1">'http://api.crossref.org/works/</span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="n">doiform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'doi'</span><span class="p">]</span> - <span class="n">doiquery</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">queryurl</span><span class="p">)</span> - <span class="n">doiqueryJSON</span> <span class="o">=</span> <span class="n">doiquery</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> - <span class="n">metadata</span> <span class="o">=</span> <span class="n">doiqueryJSON</span> - <span class="n">pub_title</span> <span class="o">=</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'title'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> - <span class="n">authorlist</span> <span class="o">=</span> <span class="p">(</span><span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'author'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'given'</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> - <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'author'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'family'</span><span class="p">])</span> - <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'author'</span><span class="p">][</span><span class="mi">1</span><span class="p">:]:</span> - <span class="n">authorlist</span> <span class="o">+=</span> <span class="s1">', '</span> <span class="o">+</span> <span class="n">author</span><span class="p">[</span><span class="s1">'given'</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">author</span><span class="p">[</span><span class="s1">'family'</span><span class="p">]</span> - <span class="n">journal</span> <span class="o">=</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'container-title'</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">volume</span> <span class="o">=</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'volume'</span><span class="p">]</span> - <span class="k">except</span><span class="p">:</span> - <span class="n">volume</span> <span class="o">=</span> <span class="s1">''</span> - <span class="n">pages</span> <span class="o">=</span> <span class="s1">''</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">pages</span> <span class="o">=</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'article-number'</span><span class="p">]</span> <span class="c1"># for Phys Rev</span> - <span class="k">except</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">pages</span> <span class="o">=</span> <span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'page'</span><span class="p">]</span> - <span class="k">except</span><span class="p">:</span> - <span class="k">pass</span> - <span class="n">pub_date</span> <span class="o">=</span> <span class="s1">''</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">pub_date</span> <span class="o">=</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'issued'</span><span class="p">][</span><span class="s1">'date-parts'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> <span class="o">+</span> <span class="s1">'-'</span> <span class="o">+</span> - <span class="nb">str</span><span class="p">(</span><span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'issued'</span><span class="p">][</span><span class="s1">'date-parts'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]))</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">pub_date</span> <span class="o">+=</span> <span class="s1">'-'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">doiqueryJSON</span><span class="p">[</span><span class="s1">'message'</span><span class="p">][</span><span class="s1">'issued'</span><span class="p">][</span><span class="s1">'date-parts'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">])</span> - <span class="k">except</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">except</span><span class="p">:</span> - <span class="k">pass</span> - <span class="n">pub_DOI</span> <span class="o">=</span> <span class="n">doiform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'doi'</span><span class="p">]</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">(</span> - <span class="n">initial</span><span class="o">=</span><span class="p">{</span><span class="s1">'type'</span><span class="p">:</span> <span class="s1">'published'</span><span class="p">,</span> <span class="s1">'metadata'</span><span class="p">:</span> <span class="n">metadata</span><span class="p">,</span> - <span class="s1">'pub_title'</span><span class="p">:</span> <span class="n">pub_title</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">:</span> <span class="n">authorlist</span><span class="p">,</span> - <span class="s1">'journal'</span><span class="p">:</span> <span class="n">journal</span><span class="p">,</span> <span class="s1">'volume'</span><span class="p">:</span> <span class="n">volume</span><span class="p">,</span> - <span class="s1">'pages'</span><span class="p">:</span> <span class="n">pages</span><span class="p">,</span> <span class="s1">'pub_date'</span><span class="p">:</span> <span class="n">pub_date</span><span class="p">,</span> - <span class="s1">'pub_DOI'</span><span class="p">:</span> <span class="n">pub_DOI</span><span class="p">})</span> - <span class="n">identifierform</span> <span class="o">=</span> <span class="n">IdentifierToQueryForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'doiform'</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,}</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'title'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pub_title</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/request_commentary.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">except</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'commentaries:request_commentary'</span><span class="p">))</span></div> - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_request_commentary_pages'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="prefill_using_identifier"><a class="viewcode-back" href="../../modules/views.html#commentaries.views.prefill_using_identifier">[docs]</a><span class="k">def</span> <span class="nf">prefill_using_identifier</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">""" Probes arXiv with the identifier, to pre-fill the form. """</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span> - <span class="n">identifierform</span> <span class="o">=</span> <span class="n">IdentifierToQueryForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">identifierform</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="c1"># Check if given identifier is of expected form:</span> - <span class="c1"># we allow 1 or 2 digits for version</span> - <span class="n">identifierpattern_new</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^[0-9]{4,}.[0-9]{4,5}v[0-9]{1,2}$"</span><span class="p">)</span> - <span class="n">identifierpattern_old</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^[-.a-z]+/[0-9]{7,}v[0-9]{1,2}$"</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">''</span> - <span class="n">existing_commentary</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">identifierpattern_new</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">])</span> <span class="ow">or</span> - <span class="n">identifierpattern_old</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">])):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'The identifier you entered is improperly formatted '</span> - <span class="s1">'(did you forget the version number?).'</span><span class="p">)</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">arxiv_identifier</span><span class="o">=</span><span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">])</span><span class="o">.</span><span class="n">exists</span><span class="p">()):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'There already exists a Commentary Page on this preprint, see'</span> - <span class="n">existing_commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span> - <span class="n">Commentary</span><span class="p">,</span> <span class="n">arxiv_identifier</span><span class="o">=</span><span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">])</span> - <span class="k">if</span> <span class="n">errormessage</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">()</span> - <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'doiform'</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span> - <span class="s1">'existing_commentary'</span><span class="p">:</span> <span class="n">existing_commentary</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/request_commentary.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="c1"># Otherwise we query arXiv for the information:</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">queryurl</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'http://export.arxiv.org/api/query?id_list=</span><span class="si">%s</span><span class="s1">'</span> - <span class="o">%</span> <span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">])</span> - <span class="n">arxivquery</span> <span class="o">=</span> <span class="n">feedparser</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">queryurl</span><span class="p">)</span> - <span class="c1"># If paper has been published, should comment on published version</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">arxiv_journal_ref</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'arxiv_journal_ref'</span><span class="p">]</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'This paper has been published as '</span> <span class="o">+</span> <span class="n">arxiv_journal_ref</span> - <span class="o">+</span> <span class="s1">'. Please comment on the published version.'</span><span class="p">)</span> - <span class="k">except</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">arxiv_doi</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'arxiv_doi'</span><span class="p">]</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'This paper has been published under DOI '</span> <span class="o">+</span> <span class="n">arxiv_DOI</span> - <span class="o">+</span> <span class="s1">'. Please comment on the published version.'</span><span class="p">)</span> - <span class="k">except</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">if</span> <span class="n">errormessage</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">()</span> - <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'doiform'</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span> - <span class="s1">'existing_commentary'</span><span class="p">:</span> <span class="n">existing_commentary</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/request_commentary.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="c1"># otherwise prefill the form:</span> - <span class="n">metadata</span> <span class="o">=</span> <span class="n">arxivquery</span> - <span class="n">pub_title</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'title'</span><span class="p">]</span> - <span class="n">authorlist</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'authors'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'name'</span><span class="p">]</span> - <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'authors'</span><span class="p">][</span><span class="mi">1</span><span class="p">:]:</span> - <span class="n">authorlist</span> <span class="o">+=</span> <span class="s1">', '</span> <span class="o">+</span> <span class="n">author</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span> - <span class="n">arxiv_link</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'id'</span><span class="p">]</span> - <span class="n">abstract</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'summary'</span><span class="p">]</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">(</span> - <span class="n">initial</span><span class="o">=</span><span class="p">{</span><span class="s1">'type'</span><span class="p">:</span> <span class="s1">'preprint'</span><span class="p">,</span> <span class="s1">'metadata'</span><span class="p">:</span> <span class="n">metadata</span><span class="p">,</span> - <span class="s1">'pub_title'</span><span class="p">:</span> <span class="n">pub_title</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">:</span> <span class="n">authorlist</span><span class="p">,</span> - <span class="s1">'arxiv_identifier'</span><span class="p">:</span> <span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">],</span> - <span class="s1">'arxiv_link'</span><span class="p">:</span> <span class="n">arxiv_link</span><span class="p">,</span> <span class="s1">'pub_abstract'</span><span class="p">:</span> <span class="n">abstract</span><span class="p">})</span> - <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'doiform'</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">}</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'title'</span><span class="p">]</span> <span class="o">=</span> <span class="n">pub_title</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/request_commentary.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">except</span><span class="p">:</span> <span class="c1"># something went wrong with processing the arXiv data</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'An error occurred while processing the arXiv data. Are you sure this identifier exists?'</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">()</span> - <span class="n">doiform</span> <span class="o">=</span> <span class="n">DOIToQueryForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'doiform'</span><span class="p">:</span> <span class="n">doiform</span><span class="p">,</span> <span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span> - <span class="s1">'existing_commentary'</span><span class="p">:</span> <span class="n">existing_commentary</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/request_commentary.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> -<span class="c1"># pass</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'commentaries:request_commentary'</span><span class="p">))</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_vet_commentary_requests'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">vet_commentary_requests</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">commentary_to_vet</span> <span class="o">=</span> <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">vetted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span> <span class="c1"># only handle one at a time</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">VetCommentaryForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'contributor'</span><span class="p">:</span> <span class="n">contributor</span><span class="p">,</span> <span class="s1">'commentary_to_vet'</span><span class="p">:</span> <span class="n">commentary_to_vet</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/vet_commentary_requests.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_vet_commentary_requests'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">vet_commentary_request_ack</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">commentary_id</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">VetCommentaryForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">commentary</span> <span class="o">=</span> <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">commentary_id</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'action_option'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'1'</span><span class="p">:</span> - <span class="c1"># accept the commentary as is</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">vetted</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">vetted_by</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">latest_activity</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">email_text</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Dear '</span> <span class="o">+</span> <span class="n">title_dict</span><span class="p">[</span><span class="n">commentary</span><span class="o">.</span><span class="n">requested_by</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="n">commentary</span><span class="o">.</span><span class="n">requested_by</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> - <span class="o">+</span> <span class="s1">', </span><span class="se">\n\n</span><span class="s1">The Commentary Page you have requested, '</span> - <span class="s1">'concerning publication with title '</span> - <span class="o">+</span> <span class="n">commentary</span><span class="o">.</span><span class="n">pub_title</span> <span class="o">+</span> <span class="s1">' by '</span> <span class="o">+</span> <span class="n">commentary</span><span class="o">.</span><span class="n">author_list</span> - <span class="o">+</span> <span class="s1">', has been activated at https://scipost.org/commentary/'</span> - <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">commentary</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span><span class="p">)</span> - <span class="o">+</span> <span class="s1">'. You are now welcome to submit your comments.'</span> - <span class="s1">'</span><span class="se">\n\n</span><span class="s1">Thank you for your contribution, </span><span class="se">\n</span><span class="s1">The SciPost Team.'</span><span class="p">)</span> - <span class="n">emailmessage</span> <span class="o">=</span> <span class="n">EmailMessage</span><span class="p">(</span><span class="s1">'SciPost Commentary Page activated'</span><span class="p">,</span> <span class="n">email_text</span><span class="p">,</span> - <span class="s1">'SciPost commentaries <commentaries@scipost.org>'</span><span class="p">,</span> - <span class="p">[</span><span class="n">commentary</span><span class="o">.</span><span class="n">requested_by</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">],</span> - <span class="p">[</span><span class="s1">'commentaries@scipost.org'</span><span class="p">],</span> - <span class="n">reply_to</span><span class="o">=</span><span class="p">[</span><span class="s1">'commentaries@scipost.org'</span><span class="p">])</span> - <span class="n">emailmessage</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">fail_silently</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'action_option'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'0'</span><span class="p">:</span> - <span class="c1"># re-edit the form starting from the data provided</span> - <span class="n">form2</span> <span class="o">=</span> <span class="n">RequestCommentaryForm</span><span class="p">(</span><span class="n">initial</span><span class="o">=</span><span class="p">{</span><span class="s1">'pub_title'</span><span class="p">:</span> <span class="n">commentary</span><span class="o">.</span><span class="n">pub_title</span><span class="p">,</span> - <span class="s1">'arxiv_link'</span><span class="p">:</span> <span class="n">commentary</span><span class="o">.</span><span class="n">arxiv_link</span><span class="p">,</span> - <span class="s1">'pub_DOI_link'</span><span class="p">:</span> <span class="n">commentary</span><span class="o">.</span><span class="n">pub_DOI_link</span><span class="p">,</span> - <span class="s1">'author_list'</span><span class="p">:</span> <span class="n">commentary</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'pub_date'</span><span class="p">:</span> <span class="n">commentary</span><span class="o">.</span><span class="n">pub_date</span><span class="p">,</span> - <span class="s1">'pub_abstract'</span><span class="p">:</span> <span class="n">commentary</span><span class="o">.</span><span class="n">pub_abstract</span><span class="p">})</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span> - <span class="n">email_text</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Dear '</span> <span class="o">+</span> <span class="n">title_dict</span><span class="p">[</span><span class="n">commentary</span><span class="o">.</span><span class="n">requested_by</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="n">commentary</span><span class="o">.</span><span class="n">requested_by</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> - <span class="o">+</span> <span class="s1">', </span><span class="se">\n\n</span><span class="s1">The Commentary Page you have requested, '</span> - <span class="s1">'concerning publication with title '</span> <span class="o">+</span> <span class="n">commentary</span><span class="o">.</span><span class="n">pub_title</span> - <span class="o">+</span> <span class="s1">' by '</span> <span class="o">+</span> <span class="n">commentary</span><span class="o">.</span><span class="n">author_list</span> - <span class="o">+</span> <span class="s1">', has been activated (with slight modifications to your submitted details).'</span> - <span class="s1">' You are now welcome to submit your comments.'</span> - <span class="s1">'</span><span class="se">\n\n</span><span class="s1">Thank you for your contribution, </span><span class="se">\n</span><span class="s1">The SciPost Team.'</span><span class="p">)</span> - <span class="n">emailmessage</span> <span class="o">=</span> <span class="n">EmailMessage</span><span class="p">(</span><span class="s1">'SciPost Commentary Page activated'</span><span class="p">,</span> <span class="n">email_text</span><span class="p">,</span> - <span class="s1">'SciPost commentaries <commentaries@scipost.org>'</span><span class="p">,</span> - <span class="p">[</span><span class="n">commentary</span><span class="o">.</span><span class="n">requested_by</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">],</span> - <span class="p">[</span><span class="s1">'commentaries@scipost.org'</span><span class="p">],</span> - <span class="n">reply_to</span><span class="o">=</span><span class="p">[</span><span class="s1">'commentaries@scipost.org'</span><span class="p">])</span> - <span class="n">emailmessage</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">fail_silently</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form2</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/request_commentary.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'action_option'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'2'</span><span class="p">:</span> - <span class="c1"># the commentary request is simply rejected</span> - <span class="n">email_text</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Dear '</span> <span class="o">+</span> <span class="n">title_dict</span><span class="p">[</span><span class="n">commentary</span><span class="o">.</span><span class="n">requested_by</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="n">commentary</span><span class="o">.</span><span class="n">requested_by</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> - <span class="o">+</span> <span class="s1">', </span><span class="se">\n\n</span><span class="s1">The Commentary Page you have requested, '</span> - <span class="s1">'concerning publication with title '</span> - <span class="o">+</span> <span class="n">commentary</span><span class="o">.</span><span class="n">pub_title</span> <span class="o">+</span> <span class="s1">' by '</span> <span class="o">+</span> <span class="n">commentary</span><span class="o">.</span><span class="n">author_list</span> - <span class="o">+</span> <span class="s1">', has not been activated for the following reason: '</span> - <span class="o">+</span> <span class="n">commentary_refusal_dict</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'refusal_reason'</span><span class="p">])]</span> - <span class="o">+</span> <span class="s1">'.</span><span class="se">\n\n</span><span class="s1">Thank you for your interest, </span><span class="se">\n</span><span class="s1">The SciPost Team.'</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_response_field'</span><span class="p">]:</span> - <span class="n">email_text</span> <span class="o">+=</span> <span class="s1">'</span><span class="se">\n\n</span><span class="s1">Further explanations: '</span> <span class="o">+</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_response_field'</span><span class="p">]</span> - <span class="n">emailmessage</span> <span class="o">=</span> <span class="n">EmailMessage</span><span class="p">(</span><span class="s1">'SciPost Commentary Page activated'</span><span class="p">,</span> <span class="n">email_text</span><span class="p">,</span> - <span class="s1">'SciPost commentaries <commentaries@scipost.org>'</span><span class="p">,</span> - <span class="p">[</span><span class="n">commentary</span><span class="o">.</span><span class="n">requested_by</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">],</span> - <span class="p">[</span><span class="s1">'commentaries@scipost.org'</span><span class="p">],</span> - <span class="n">reply_to</span><span class="o">=</span><span class="p">[</span><span class="s1">'comentaries@scipost.org'</span><span class="p">])</span> - <span class="n">emailmessage</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">fail_silently</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span> - - <span class="c1">#context = {'commentary_id': commentary_id }</span> - <span class="c1">#return render(request, 'commentaries/vet_commentary_request_ack.html', context)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'SciPost Commentary request vetted.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Return to the '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'commentaries:vet_commentary_requests'</span><span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'Commentary requests page'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">commentaries</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">CommentarySearchForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">form</span><span class="o">.</span><span class="n">has_changed</span><span class="p">():</span> - <span class="n">commentary_search_list</span> <span class="o">=</span> <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">pub_title__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_title_keyword'</span><span class="p">],</span> - <span class="n">author_list__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_author'</span><span class="p">],</span> - <span class="n">pub_abstract__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_abstract_keyword'</span><span class="p">],</span> - <span class="n">vetted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="p">)</span> - <span class="n">commentary_search_list</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-pub_date'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">commentary_search_list</span> <span class="o">=</span> <span class="p">[]</span> - - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">CommentarySearchForm</span><span class="p">()</span> - <span class="n">commentary_search_list</span> <span class="o">=</span> <span class="p">[]</span> - - <span class="n">comment_recent_list</span> <span class="o">=</span> <span class="p">(</span><span class="n">Comment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="s1">'1'</span><span class="p">)</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date_submitted'</span><span class="p">)[:</span><span class="mi">10</span><span class="p">])</span> - - <span class="n">commentary_recent_list</span> <span class="o">=</span> <span class="p">(</span><span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">vetted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-latest_activity'</span><span class="p">)[:</span><span class="mi">10</span><span class="p">])</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'commentary_search_list'</span><span class="p">:</span> <span class="n">commentary_search_list</span><span class="p">,</span> - <span class="s1">'comment_recent_list'</span><span class="p">:</span> <span class="n">comment_recent_list</span><span class="p">,</span> - <span class="s1">'commentary_recent_list'</span><span class="p">:</span> <span class="n">commentary_recent_list</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/commentaries.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">browse</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">discipline</span><span class="p">,</span> <span class="n">nrweeksback</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">CommentarySearchForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">form</span><span class="o">.</span><span class="n">has_changed</span><span class="p">():</span> - <span class="n">commentary_search_list</span> <span class="o">=</span> <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">pub_title__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_title_keyword'</span><span class="p">],</span> - <span class="n">author_list__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_author'</span><span class="p">],</span> - <span class="n">pub_abstract__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'pub_abstract_keyword'</span><span class="p">],</span> - <span class="n">vetted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="p">)</span> - <span class="n">commentary_search_list</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-pub_date'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">commentary_search_list</span> <span class="o">=</span> <span class="p">[]</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'commentary_search_list'</span><span class="p">:</span> <span class="n">commentary_search_list</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/commentaries.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">CommentarySearchForm</span><span class="p">()</span> - <span class="n">commentary_browse_list</span> <span class="o">=</span> <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">vetted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">discipline</span><span class="o">=</span><span class="n">discipline</span><span class="p">,</span> - <span class="n">latest_activity__gte</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">weeks</span><span class="o">=-</span><span class="nb">int</span><span class="p">(</span><span class="n">nrweeksback</span><span class="p">))</span> - <span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'discipline'</span><span class="p">:</span> <span class="n">discipline</span><span class="p">,</span> <span class="s1">'nrweeksback'</span><span class="p">:</span> <span class="n">nrweeksback</span><span class="p">,</span> - <span class="s1">'commentary_browse_list'</span><span class="p">:</span> <span class="n">commentary_browse_list</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/commentaries.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">commentary_detail</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_or_DOI_string</span><span class="p">):</span> - <span class="n">commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Commentary</span><span class="p">,</span> <span class="n">arxiv_or_DOI_string</span><span class="o">=</span><span class="n">arxiv_or_DOI_string</span><span class="p">)</span> -<span class="c1"># other_versions = Commentary.objects.filter(</span> -<span class="c1"># arxiv_identifier_wo_vn_nr=submission.arxiv_identifier_wo_vn_nr</span> -<span class="c1"># ).exclude(pk=submission.id)</span> - <span class="n">comments</span> <span class="o">=</span> <span class="n">commentary</span><span class="o">.</span><span class="n">comment_set</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">CommentForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">author</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">newcomment</span> <span class="o">=</span> <span class="n">Comment</span> <span class="p">(</span> - <span class="n">commentary</span> <span class="o">=</span> <span class="n">commentary</span><span class="p">,</span> - <span class="n">author</span> <span class="o">=</span> <span class="n">author</span><span class="p">,</span> - <span class="n">is_rem</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_rem'</span><span class="p">],</span> - <span class="n">is_que</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_que'</span><span class="p">],</span> - <span class="n">is_ans</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_ans'</span><span class="p">],</span> - <span class="n">is_obj</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_obj'</span><span class="p">],</span> - <span class="n">is_rep</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_rep'</span><span class="p">],</span> - <span class="n">is_val</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_val'</span><span class="p">],</span> - <span class="n">is_lit</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_lit'</span><span class="p">],</span> - <span class="n">is_sug</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_sug'</span><span class="p">],</span> - <span class="n">comment_text</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'comment_text'</span><span class="p">],</span> - <span class="n">remarks_for_editors</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'remarks_for_editors'</span><span class="p">],</span> - <span class="n">date_submitted</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="p">)</span> - <span class="n">newcomment</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">author</span><span class="o">.</span><span class="n">nr_comments</span> <span class="o">=</span> <span class="n">Comment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author</span><span class="o">=</span><span class="n">author</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">author</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1">#request.session['commentary_id'] = commentary.id</span> - <span class="c1">#return HttpResponseRedirect(reverse('comments:comment_submission_ack'))</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'Thank you for contributing a Comment.'</span><span class="p">,</span> - <span class="s1">'ack_message'</span><span class="p">:</span> <span class="s1">'It will soon be vetted by an Editor.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Back to the '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span> - <span class="s1">'commentaries:commentary'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_or_DOI_string'</span><span class="p">:</span> <span class="n">newcomment</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span><span class="p">}</span> - <span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">' Commentary page you came from'</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">CommentForm</span><span class="p">()</span> - - <span class="k">try</span><span class="p">:</span> - <span class="n">author_replies</span> <span class="o">=</span> <span class="n">Comment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">commentary</span><span class="o">=</span><span class="n">commentary</span><span class="p">,</span> - <span class="n">is_author_reply</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">status__gte</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> - <span class="k">except</span> <span class="n">Comment</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span> - <span class="n">author_replies</span> <span class="o">=</span> <span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'commentary'</span><span class="p">:</span> <span class="n">commentary</span><span class="p">,</span> - <span class="s1">'comments'</span><span class="p">:</span> <span class="n">comments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status__gte</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date_submitted'</span><span class="p">),</span> - <span class="s1">'author_replies'</span><span class="p">:</span> <span class="n">author_replies</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'commentaries/commentary_detail.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> -</pre></div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_modules/comments/models.html b/docs/_build/html/_modules/comments/models.html deleted file mode 100644 index 2bb4d6f398f3b6e84b74f434be82e53ca095d9bf..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/comments/models.html +++ /dev/null @@ -1,532 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>comments.models — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../../genindex.html"/> - <link rel="search" title="Search" href="../../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../../index.html"/> - <link rel="up" title="Module code" href="../index.html"/> - - - <script src="../../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../../index.html">Docs</a> »</li> - - <li><a href="../index.html">Module code</a> »</li> - - <li>comments.models</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>Source code for comments.models</h1><div class="highlight"><pre> -<span></span><span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span> -<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">models</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span> -<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span class="k">import</span> <span class="n">get_object_or_404</span> -<span class="kn">from</span> <span class="nn">django.template</span> <span class="k">import</span> <span class="n">Template</span><span class="p">,</span> <span class="n">Context</span> -<span class="kn">from</span> <span class="nn">django.utils.safestring</span> <span class="k">import</span> <span class="n">mark_safe</span> - -<span class="kn">from</span> <span class="nn">.models</span> <span class="k">import</span> <span class="o">*</span> - -<span class="kn">from</span> <span class="nn">commentaries.models</span> <span class="k">import</span> <span class="n">Commentary</span> -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">Contributor</span> -<span class="kn">from</span> <span class="nn">submissions.models</span> <span class="k">import</span> <span class="n">Submission</span><span class="p">,</span> <span class="n">Report</span> -<span class="kn">from</span> <span class="nn">theses.models</span> <span class="k">import</span> <span class="n">ThesisLink</span> - -<span class="n">COMMENT_CATEGORIES</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'ERR'</span><span class="p">,</span> <span class="s1">'erratum'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'REM'</span><span class="p">,</span> <span class="s1">'remark'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'QUE'</span><span class="p">,</span> <span class="s1">'question'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'ANS'</span><span class="p">,</span> <span class="s1">'answer to question'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'OBJ'</span><span class="p">,</span> <span class="s1">'objection'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'REP'</span><span class="p">,</span> <span class="s1">'reply to objection'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'VAL'</span><span class="p">,</span> <span class="s1">'validation or rederivation'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'LIT'</span><span class="p">,</span> <span class="s1">'pointer to related literature'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'SUG'</span><span class="p">,</span> <span class="s1">'suggestion for further work'</span><span class="p">),</span> - <span class="p">)</span> - -<span class="n">COMMENT_STATUS</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'vetted'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'not yet vetted (pending)'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'rejected (unclear)'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'rejected (incorrect)'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'rejected (not useful)'</span><span class="p">),</span> -<span class="p">)</span> -<span class="n">comment_status_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">COMMENT_STATUS</span><span class="p">)</span> - -<div class="viewcode-block" id="Comment"><a class="viewcode-back" href="../../modules/models.html#comments.models.Comment">[docs]</a><span class="k">class</span> <span class="nc">Comment</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">""" A Comment is an unsollicited note, submitted by a Contributor,</span> -<span class="sd"> on a particular publication or in reply to an earlier Comment. """</span> - <span class="c1"># status:</span> - <span class="c1"># 1: vetted</span> - <span class="c1"># 0: unvetted</span> - <span class="c1"># -1: rejected (unclear)</span> - <span class="c1"># -2: rejected (incorrect)</span> - <span class="c1"># -3: rejected (not useful)</span> - <span class="n">status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> - <span class="n">vetted_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'comment_vetted_by'</span><span class="p">)</span> - <span class="c1"># a Comment is either for a Commentary or Submission</span> - <span class="n">commentary</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Commentary</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">thesislink</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">ThesisLink</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">is_author_reply</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">in_reply_to_comment</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'self'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">in_reply_to_report</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Report</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">author</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">anonymous</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'Publish anonymously'</span><span class="p">)</span> - <span class="c1"># Categories:</span> - <span class="n">is_cor</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'correction/erratum'</span><span class="p">)</span> - <span class="n">is_rem</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'remark'</span><span class="p">)</span> - <span class="n">is_que</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'question'</span><span class="p">)</span> - <span class="n">is_ans</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'answer to question'</span><span class="p">)</span> - <span class="n">is_obj</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'objection'</span><span class="p">)</span> - <span class="n">is_rep</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'reply to objection'</span><span class="p">)</span> - <span class="n">is_val</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'validation or rederivation'</span><span class="p">)</span> - <span class="n">is_lit</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'pointer to related literature'</span><span class="p">)</span> - <span class="n">is_sug</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'suggestion for further work'</span><span class="p">)</span> - <span class="n">comment_text</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - <span class="n">remarks_for_editors</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'optional remarks for the Editors only'</span><span class="p">)</span> - <span class="n">date_submitted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="s1">'date submitted'</span><span class="p">)</span> - <span class="c1"># Opinions</span> - <span class="n">nr_A</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> - <span class="n">in_agreement</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'in_agreement'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">nr_N</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> - <span class="n">in_notsure</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'in_notsure'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">nr_D</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> - <span class="n">in_disagreement</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'in_disagreement'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="s1">'by '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> - <span class="s1">' on '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">', '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">comment_text</span><span class="p">[:</span><span class="mi">30</span><span class="p">])</span> - - - <span class="k">def</span> <span class="nf">update_opinions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">contributor_id</span><span class="p">,</span> <span class="n">opinion</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">contributor_id</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">in_agreement</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">in_notsure</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">in_disagreement</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="k">if</span> <span class="n">opinion</span> <span class="o">==</span> <span class="s1">'A'</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">in_agreement</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">opinion</span> <span class="o">==</span> <span class="s1">'N'</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">in_notsure</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">opinion</span> <span class="o">==</span> <span class="s1">'D'</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">in_disagreement</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">nr_A</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_agreement</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="bp">self</span><span class="o">.</span><span class="n">nr_N</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_notsure</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="bp">self</span><span class="o">.</span><span class="n">nr_D</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_disagreement</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="bp">self</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - - - <span class="k">def</span> <span class="nf">opinions_as_ul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="s1">'''</span> -<span class="s1"> <ul class="opinionsDisplay"></span> -<span class="s1"> <li style="background-color: #000099">Agree {{ nr_A }}</li></span> -<span class="s1"> <li style="background-color: #555555">Not sure {{ nr_N }}</li></span> -<span class="s1"> <li style="background-color: #990000">Disagree {{ nr_D }}</li></span> -<span class="s1"> </ul></span> -<span class="s1"> '''</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span> <span class="p">({</span><span class="s1">'nr_A'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">nr_A</span><span class="p">,</span> <span class="s1">'nr_N'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">nr_N</span><span class="p">,</span> <span class="s1">'nr_D'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">nr_D</span><span class="p">})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">opinions_as_ul_tiny</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="s1">'''</span> -<span class="s1"> <ul class="opinionsDisplay"></span> -<span class="s1"> <li style="background-color: #000099; font-size: 8px; padding: 2px;">Agree {{ nr_A }}</li></span> -<span class="s1"> <li style="background-color: #555555; font-size: 8px; padding: 2px;">Not sure {{ nr_N }}</li></span> -<span class="s1"> <li style="background-color: #990000; font-size: 8px; padding: 2px;">Disagree {{ nr_D }}</li></span> -<span class="s1"> </ul></span> -<span class="s1"> '''</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span> <span class="p">({</span><span class="s1">'nr_A'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">nr_A</span><span class="p">,</span> <span class="s1">'nr_N'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">nr_N</span><span class="p">,</span> <span class="s1">'nr_D'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">nr_D</span><span class="p">})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">print_identifier</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for display</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<div class="commentid"></span><span class="se">\n</span><span class="s1">'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<h3><a id="comment_id{{ id }}"></a>'</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">})</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_author_reply</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'Author '</span> - <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">anonymous</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' <a href="/contributor/{{ author_id }}">'</span> - <span class="o">+</span> <span class="s1">'{{ first_name }} {{ last_name }}</a> on '</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'author_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">id</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'first_name'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'{{ date_comment_submitted }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'date_comment_submitted'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_comment</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' (in reply to <a href="#comment_id{{ in_reply_to_comment_id }}">'</span> - <span class="s1">'{{ in_reply_to_comment_first_name }} '</span> - <span class="s1">'{{ in_reply_to_comment_last_name }} on '</span> - <span class="s1">'{{ in_reply_to_comment_date }}</a>)'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_comment_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_comment_id</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_comment_first_name'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_comment</span> - <span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_comment_last_name'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_comment</span> - <span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_comment_date'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_comment</span> - <span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">' (in reply to <a href="#report_id{{ in_reply_to_report_id }}">'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_report_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report_id</span> - <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report</span><span class="o">.</span><span class="n">anonymous</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'{{ in_reply_to_report_first_name }} {{ in_reply_to_report_last_name}}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_report_first_name'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report</span> - <span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_report_last_name'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report</span> - <span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'Report {{ in_reply_to_report_id }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_report_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report_id</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">' on {{ date_report_submitted }}</a>)'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'date_report_submitted'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report</span><span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</h3></div>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">print_identifier_for_vetting</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for display, same as print_identifier but named even if anonymous, not linked</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<div class="commentid"></span><span class="se">\n</span><span class="s1">'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<h3>'</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">()</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_author_reply</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'Author '</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">' <a href="/contributor/{{ author_id }}">{{ first_name }} {{ last_name }}</a> on '</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'author_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">id</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'first_name'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'{{ date_submitted }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'date_submitted'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_comment</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' (in reply to <a href="#comment_id{{ in_reply_to_comment_id }}">'</span> - <span class="s1">'{{ in_reply_to_comment_first_name }} {{ in_reply_to_comment_last_name }} '</span> - <span class="s1">'on {{ in_reply_to_comment_date }}</a>)'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_comment_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_comment_id</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_comment_first_name'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_comment</span> - <span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_comment_last_name'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_comment</span> - <span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_comment_date'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_comment</span> - <span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">' (in reply to <a href="#report_id{{ in_reply_to_report_id }}">'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_report_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report_id</span> - <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report</span><span class="o">.</span><span class="n">anonymous</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'{{ in_reply_to_report_first_name }} {{ in_reply_to_report_last_name}}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_report_first_name'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report</span> - <span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_report_last_name'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report</span> - <span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'Report {{ in_reply_to_report_id }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'in_reply_to_report_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report_id</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</a> on {{ date_submitted }})'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'date_submitted'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_reply_to_report</span><span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</h3></div>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for search lists</span> - <span class="n">header</span> <span class="o">=</span> <span class="s1">'<li>'</span> - <span class="c1">#header += '<div class="flex-container"><div class="flex-whitebox0">'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'Nr {{ id }}'</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">})</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">', <div class="opinionsDisplay">'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">opinions_as_ul_tiny</span><span class="p">()</span> <span class="o">+</span> <span class="s1">'</div>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">', status: <span style="color:red">'</span> - <span class="o">+</span> <span class="n">comment_status_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">status</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</span>'</span><span class="p">)</span> - <span class="n">text_cut</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comment_text</span><span class="p">[:</span><span class="mi">50</span><span class="p">]</span> - <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">comment_text</span><span class="p">)</span> <span class="o">></span> <span class="mi">50</span><span class="p">:</span> - <span class="n">text_cut</span> <span class="o">+=</span> <span class="s1">'...'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'text_cut'</span><span class="p">]</span> <span class="o">=</span> <span class="n">text_cut</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'date_submitted'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">)</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">': '</span> - <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">anonymous</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' <a href="/contributor/{{ author_id }}">'</span> - <span class="s1">'{{ first_name }} {{ last_name }}</a>, '</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'author_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">id</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'first_name'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<a href="/submission/{{ arxiv_identifier_w_vn_nr }}#comment_id{{ id }}">'</span> - <span class="s1">' </span><span class="se">\"</span><span class="s1">{{ text_cut }}</span><span class="se">\"</span><span class="s1"></a><p>submitted on {{ date_submitted }}'</span><span class="p">)</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' in submission on <a href="/submission/{{ arxiv_identifier_w_vn_nr }}"'</span> - <span class="s1">' class="pubtitleli">{{ submission_title }}</a> by '</span> - <span class="s1">'{{ submission_author_list }}</p>'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'submission_title'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">title</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'submission_author_list'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">author_list</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentary</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<a href="/commentary/{{ commentary_url }}#comment_id{{ id }}">'</span> - <span class="s1">' </span><span class="se">\"</span><span class="s1">{{ text_cut }}</span><span class="se">\"</span><span class="s1"></a><p>submitted on {{ date_submitted }}'</span><span class="p">)</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' in commentary on <a href="/commentary/{{ commentary_url }}"'</span> - <span class="s1">' class="pubtitleli">'</span> - <span class="s1">'{{ commentary_pub_title }}</a> by {{ commentary_author_list }}</p>'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'commentary_url'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'commentary_pub_title'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">pub_title</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'commentary_author_list'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">author_list</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">thesislink</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<a href="/thesis/{{ thesislink_id }}#comment_id{{ id }}">'</span> - <span class="s1">' </span><span class="se">\"</span><span class="s1">{{ text_cut }}</span><span class="se">\"</span><span class="s1"></a><p>submitted on {{ date_submitted }}'</span><span class="p">)</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' in thesislink on <a href="/thesis/{{ thesislink_id }}" class="pubtitleli">'</span> - <span class="s1">'{{ thesislink_title }}</a> by {{ thesislink_author }}</p>'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'thesislink_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">thesislink</span><span class="o">.</span><span class="n">id</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'thesislink_title'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">thesislink</span><span class="o">.</span><span class="n">title</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'thesislink_author'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">thesislink</span><span class="o">.</span><span class="n">author</span> - <span class="c1">#header += '</div></div>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'</li>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">simple_header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for Lists</span> - <span class="n">header</span> <span class="o">=</span> <span class="s1">'<li>'</span> - <span class="c1">#header += '<div class="flex-container"><div class="flex-whitebox0">'</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({})</span> - <span class="n">text_cut</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comment_text</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> - <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">comment_text</span><span class="p">)</span> <span class="o">></span> <span class="mi">30</span><span class="p">:</span> - <span class="n">text_cut</span> <span class="o">+=</span> <span class="s1">'...'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'text_cut'</span><span class="p">]</span> <span class="o">=</span> <span class="n">text_cut</span> - <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">anonymous</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' <a href="/contributor/{{ author_id }}">{{ first_name }} {{ last_name }}</a>, '</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'author_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">id</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'first_name'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<a href="/submission/{{ arxiv_identifier_w_vn_nr }}#comment_id{{ id }}"> '</span> - <span class="s1">'</span><span class="se">\"</span><span class="s1">{{ text_cut }}</span><span class="se">\"</span><span class="s1"></a>'</span> - <span class="s1">' in submission on <a href="/submission/{{ arxiv_identifier_w_vn_nr }}" class="pubtitleli">'</span> - <span class="s1">'{{ submission_title }}</a> by {{ submission_author_list }}</p>'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'submission_title'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">title</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'submission_author_list'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">author_list</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentary</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<a href="/commentary/{{ commentary_url }}#comment_id{{ id }}"> '</span> - <span class="s1">'</span><span class="se">\"</span><span class="s1">{{ text_cut }}</span><span class="se">\"</span><span class="s1"></a>'</span> - <span class="s1">' in commentary on <a href="/commentary/{{ commentary_url }}" class="pubtitleli">'</span> - <span class="s1">'{{ commentary_pub_title }}</a> by {{ commentary_author_list }}</p>'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'commentary_url'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">arxiv_or_DOI_string</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'commentary_pub_title'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">pub_title</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'commentary_author_list'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">author_list</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">thesislink</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<a href="/thesis/{{ thesislink_id }}#comment_id{{ id }}"> </span><span class="se">\"</span><span class="s1">{{ text_cut }}</span><span class="se">\"</span><span class="s1"></a>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' in thesislink on <a href="/thesis/{{ thesislink_id }}" class="pubtitleli">'</span> <span class="o">+</span> - <span class="s1">'{{ thesislink_title }}</a> by {{ thesislink_author }}</p>'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'thesislink_id'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">thesislink</span><span class="o">.</span><span class="n">id</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'thesislink_title'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">thesislink</span><span class="o">.</span><span class="n">title</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'thesislink_author'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">thesislink</span><span class="o">.</span><span class="n">author</span> - <span class="c1">#header += '</div></div>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'</li>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">categories_as_ul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<div class="commentcategorydisplay"><h4>Category:</h4><ul>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_rem</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>remark</li>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_que</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>question</li>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_ans</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>answer to question</li>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_obj</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>objection</li>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_rep</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>reply to objection</li>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_cor</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>correction</li>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_val</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>validation or rederivation</li>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_lit</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>pointer to related literature</li>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_sug</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>suggestion for further work</li>'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</ul></div>'</span> - <span class="k">return</span> <span class="n">mark_safe</span><span class="p">(</span><span class="n">output</span><span class="p">)</span></div> -</pre></div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_modules/index.html b/docs/_build/html/_modules/index.html deleted file mode 100644 index d542b91370a855fff3243927830f20ab9f3307c9..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/index.html +++ /dev/null @@ -1,202 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>Overview: module code — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../genindex.html"/> - <link rel="search" title="Search" href="../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../index.html"/> - - - <script src="../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../index.html">Docs</a> »</li> - - <li>Overview: module code</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>All modules for which code is available</h1> -<ul><li><a href="commentaries/models.html">commentaries.models</a></li> -<li><a href="commentaries/views.html">commentaries.views</a></li> -<li><a href="comments/models.html">comments.models</a></li> -<li><a href="journals/models.html">journals.models</a></li> -<li><a href="journals/views.html">journals.views</a></li> -<li><a href="scipost/models.html">scipost.models</a></li> -<li><a href="scipost/views.html">scipost.views</a></li> -<li><a href="submissions/models.html">submissions.models</a></li> -<li><a href="submissions/views.html">submissions.views</a></li> -<li><a href="theses/models.html">theses.models</a></li> -</ul> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../_static/jquery.js"></script> - <script type="text/javascript" src="../_static/underscore.js"></script> - <script type="text/javascript" src="../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_modules/journals/models.html b/docs/_build/html/_modules/journals/models.html deleted file mode 100644 index 19b366e3146da55dc1716c2cdef797f6d46d2d81..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/journals/models.html +++ /dev/null @@ -1,545 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>journals.models — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../../genindex.html"/> - <link rel="search" title="Search" href="../../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../../index.html"/> - <link rel="up" title="Module code" href="../index.html"/> - - - <script src="../../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../../index.html">Docs</a> »</li> - - <li><a href="../index.html">Module code</a> »</li> - - <li>journals.models</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>Source code for journals.models</h1><div class="highlight"><pre> -<span></span><span class="kn">from</span> <span class="nn">django.contrib.postgres.fields</span> <span class="k">import</span> <span class="n">ArrayField</span><span class="p">,</span> <span class="n">JSONField</span> -<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">models</span> -<span class="kn">from</span> <span class="nn">django.template</span> <span class="k">import</span> <span class="n">Template</span><span class="p">,</span> <span class="n">Context</span> -<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span> - -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span> <span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">,</span> <span class="n">subject_areas_dict</span><span class="p">,</span> <span class="n">TITLE_CHOICES</span> -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">ChoiceArrayField</span><span class="p">,</span> <span class="n">Contributor</span> - - -<div class="viewcode-block" id="UnregisteredAuthor"><a class="viewcode-back" href="../../modules/models.html#journals.models.UnregisteredAuthor">[docs]</a><span class="k">class</span> <span class="nc">UnregisteredAuthor</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">first_name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span> - <span class="n">last_name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">', '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">first_name</span></div> - - -<span class="n">SCIPOST_JOURNALS</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'SciPost Physics Select'</span><span class="p">,</span> <span class="s1">'SciPost Physics Select'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'SciPost Physics'</span><span class="p">,</span> <span class="s1">'SciPost Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'SciPost Physics Lecture Notes'</span><span class="p">,</span> <span class="s1">'SciPost Physics Lecture Notes'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">journals_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SCIPOST_JOURNALS</span><span class="p">)</span> - -<span class="k">class</span> <span class="nc">JournalNameError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> - <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span> - <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span> - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> - -<span class="k">def</span> <span class="nf">journal_name_abbrev_citation</span><span class="p">(</span><span class="n">journal_name</span><span class="p">):</span> - <span class="k">if</span> <span class="n">journal_name</span> <span class="o">==</span> <span class="s1">'SciPost Physics'</span><span class="p">:</span> - <span class="k">return</span> <span class="s1">'SciPost Phys.'</span> - <span class="k">elif</span> <span class="n">journal_name</span> <span class="o">==</span> <span class="s1">'SciPost Physics Select'</span><span class="p">:</span> - <span class="k">return</span> <span class="s1">'SciPost Phys. Sel.'</span> - <span class="k">elif</span> <span class="n">journal_name</span> <span class="o">==</span> <span class="s1">'SciPost Physics Lecture Notes'</span><span class="p">:</span> - <span class="k">return</span> <span class="s1">'SciPost Phys. Lect. Notes'</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">raise</span> <span class="n">JournalNameError</span><span class="p">(</span><span class="n">journal_name</span><span class="p">)</span> - -<span class="k">def</span> <span class="nf">journal_name_abbrev_doi</span><span class="p">(</span><span class="n">journal_name</span><span class="p">):</span> - <span class="k">if</span> <span class="n">journal_name</span> <span class="o">==</span> <span class="s1">'SciPost Physics'</span><span class="p">:</span> - <span class="k">return</span> <span class="s1">'SciPostPhys'</span> - <span class="k">elif</span> <span class="n">journal_name</span> <span class="o">==</span> <span class="s1">'SciPost Physics Select'</span><span class="p">:</span> - <span class="k">return</span> <span class="s1">'SciPostPhysSel'</span> - <span class="k">elif</span> <span class="n">journal_name</span> <span class="o">==</span> <span class="s1">'SciPost Physics Lecture Notes'</span><span class="p">:</span> - <span class="k">return</span> <span class="s1">'SciPostPhysLectNotes'</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">raise</span> <span class="n">JournalNameError</span><span class="p">(</span><span class="n">journal_name</span><span class="p">)</span> - -<span class="k">class</span> <span class="nc">PaperNumberError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> - <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nr</span><span class="p">):</span> - <span class="bp">self</span><span class="o">.</span><span class="n">nr</span> <span class="o">=</span> <span class="n">nr</span> - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">nr</span> - -<span class="k">def</span> <span class="nf">paper_nr_string</span><span class="p">(</span><span class="n">nr</span><span class="p">):</span> - <span class="k">if</span> <span class="n">nr</span> <span class="o"><</span> <span class="mi">10</span><span class="p">:</span> - <span class="k">return</span> <span class="s1">'00'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">nr</span> <span class="o"><</span> <span class="mi">100</span><span class="p">:</span> - <span class="k">return</span> <span class="s1">'0'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">nr</span> <span class="o"><</span> <span class="mi">1000</span><span class="p">:</span> - <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">raise</span> <span class="n">PaperNumberError</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> - -<span class="k">class</span> <span class="nc">PaperNumberingError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span> - <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nr</span><span class="p">):</span> - <span class="bp">self</span><span class="o">.</span><span class="n">nr</span> <span class="o">=</span> <span class="n">nr</span> - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">nr</span> - -<span class="n">SCIPOST_JOURNALS_SUBMIT</span> <span class="o">=</span> <span class="p">(</span> <span class="c1"># Same as SCIPOST_JOURNALS, but SP Select deactivated</span> - <span class="p">(</span><span class="s1">'SciPost Physics'</span><span class="p">,</span> <span class="s1">'SciPost Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'SciPost Physics Lecture Notes'</span><span class="p">,</span> <span class="s1">'SciPost Physics Lecture Notes'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">journals_submit_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SCIPOST_JOURNALS_SUBMIT</span><span class="p">)</span> - -<span class="n">SCIPOST_JOURNALS_DOMAINS</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'E'</span><span class="p">,</span> <span class="s1">'Experimental'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'T'</span><span class="p">,</span> <span class="s1">'Theoretical'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'C'</span><span class="p">,</span> <span class="s1">'Computational'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'ET'</span><span class="p">,</span> <span class="s1">'Exp. & Theor.'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'EC'</span><span class="p">,</span> <span class="s1">'Exp. & Comp.'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'TC'</span><span class="p">,</span> <span class="s1">'Theor. & Comp.'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'ETC'</span><span class="p">,</span> <span class="s1">'Exp., Theor. & Comp.'</span><span class="p">),</span> -<span class="p">)</span> -<span class="n">journals_domains_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SCIPOST_JOURNALS_DOMAINS</span><span class="p">)</span> - -<span class="n">SCIPOST_JOURNALS_SPECIALIZATIONS</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'A'</span><span class="p">,</span> <span class="s1">'Atomic, Molecular and Optical Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'B'</span><span class="p">,</span> <span class="s1">'Biophysics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'C'</span><span class="p">,</span> <span class="s1">'Condensed Matter Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'F'</span><span class="p">,</span> <span class="s1">'Fluid Dynamics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'G'</span><span class="p">,</span> <span class="s1">'Gravitation, Cosmology and Astroparticle Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'H'</span><span class="p">,</span> <span class="s1">'High-Energy Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'M'</span><span class="p">,</span> <span class="s1">'Mathematical Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'N'</span><span class="p">,</span> <span class="s1">'Nuclear Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Q'</span><span class="p">,</span> <span class="s1">'Quantum Statistical Mechanics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'S'</span><span class="p">,</span> <span class="s1">'Statistical and Soft Matter Physics'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">journals_spec_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SCIPOST_JOURNALS_SPECIALIZATIONS</span><span class="p">)</span> - - - -<div class="viewcode-block" id="Journal"><a class="viewcode-back" href="../../modules/models.html#journals.models.Journal">[docs]</a><span class="k">class</span> <span class="nc">Journal</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_JOURNALS</span><span class="p">,</span> - <span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">doi_string</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">issn</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'2542-4653'</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span></div> - - -<div class="viewcode-block" id="Volume"><a class="viewcode-back" href="../../modules/models.html#journals.models.Volume">[docs]</a><span class="k">class</span> <span class="nc">Volume</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">in_journal</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Journal</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">number</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">start_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">until_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">doi_string</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_journal</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' Vol. '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">number</span><span class="p">)</span></div> - - -<div class="viewcode-block" id="Issue"><a class="viewcode-back" href="../../modules/models.html#journals.models.Issue">[docs]</a><span class="k">class</span> <span class="nc">Issue</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">in_volume</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Volume</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">number</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">unique</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">start_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">until_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">doi_string</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="c1"># absolute path on filesystem: (JOURNALS_DIR)/journal/vol/issue/</span> - <span class="n">path</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">text</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_volume</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' issue '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">number</span><span class="p">)</span> - <span class="c1">#if self.until_date >= timezone.now().date():</span> - <span class="c1"># text += ' (in progress)'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span><span class="o">.</span><span class="n">month</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">until_date</span><span class="o">.</span><span class="n">month</span><span class="p">:</span> - <span class="n">text</span> <span class="o">+=</span> <span class="s1">' ('</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">until_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%B'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">until_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">')'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">text</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' ('</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%B'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'-'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">until_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%B'</span><span class="p">)</span> <span class="o">+</span> - <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">until_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">')'</span><span class="p">)</span> - <span class="k">return</span> <span class="n">text</span> - - <span class="k">def</span> <span class="nf">period</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">text</span> <span class="o">=</span> <span class="s1">'up to {{ until_month }} {{ year }}'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">text</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'until_month'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%B'</span><span class="p">),</span> - <span class="s1">'year'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">until_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y'</span><span class="p">)})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - -<div class="viewcode-block" id="Publication"><a class="viewcode-back" href="../../modules/models.html#journals.models.Publication">[docs]</a><span class="k">class</span> <span class="nc">Publication</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">accepted_submission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">OneToOneField</span><span class="p">(</span><span class="s1">'submissions.Submission'</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">in_issue</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Issue</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">paper_nr</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">()</span> - <span class="n">discipline</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'physics'</span><span class="p">)</span> - <span class="n">domain</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_JOURNALS_DOMAINS</span><span class="p">)</span> - <span class="n">subject_area</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'Primary subject area'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'Phys:QP'</span><span class="p">)</span> - <span class="n">secondary_areas</span> <span class="o">=</span> <span class="n">ChoiceArrayField</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> - <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">),</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span> - <span class="n">author_list</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s2">"author list"</span><span class="p">)</span> - <span class="c1"># Authors which have been mapped to contributors:</span> - <span class="n">authors</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_pub'</span><span class="p">)</span> - <span class="n">authors_unregistered</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">UnregisteredAuthor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_unregistered'</span><span class="p">)</span> - <span class="n">first_author</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">first_author_unregistered</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span> <span class="p">(</span><span class="n">UnregisteredAuthor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'first_author_unregistered'</span><span class="p">)</span> - <span class="n">authors_claims</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_pub_claims'</span><span class="p">)</span> - <span class="n">authors_false_claims</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_pub_false_claims'</span><span class="p">)</span> - <span class="n">abstract</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - <span class="n">pdf_file</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">FileField</span><span class="p">(</span><span class="n">upload_to</span><span class="o">=</span><span class="s1">'UPLOADS/PUBLICATIONS/%Y/%m/'</span><span class="p">,</span> <span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">)</span> - <span class="n">metadata</span> <span class="o">=</span> <span class="n">JSONField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="p">{},</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">metadata_xml</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># for Crossref deposit</span> - <span class="n">BiBTeX_entry</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">doi_label</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># Used for file name</span> - <span class="n">doi_string</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">200</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">submission_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'submission date'</span><span class="p">)</span> - <span class="n">acceptance_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'acceptance date'</span><span class="p">)</span> - <span class="n">publication_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'publication date'</span><span class="p">)</span> - <span class="n">latest_activity</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">citedby</span> <span class="o">=</span> <span class="n">JSONField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="p">{},</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">citation</span><span class="p">()</span> <span class="o">+</span> <span class="s1">', '</span> - <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' by '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> - <span class="o">+</span> <span class="s1">', published '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1">'</span><span class="p">))</span> - <span class="k">return</span> <span class="n">header</span> - - <span class="k">def</span> <span class="nf">citation</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="n">journal_name_abbrev_citation</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> - <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">number</span><span class="p">)</span> - <span class="o">+</span> <span class="s1">'('</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">number</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'), '</span> - <span class="o">+</span> <span class="n">paper_nr_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">paper_nr</span><span class="p">)</span> - <span class="o">+</span> <span class="s1">' ('</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">')'</span> <span class="p">)</span> - - <span class="k">def</span> <span class="nf">citation_for_web</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">citation</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'{{ abbrev }} <strong>{{ volume_nr }}</strong>({{ issue_nr }}), '</span> - <span class="s1">'{{ paper_nr }} ({{ year }})'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">citation</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">(</span> - <span class="p">{</span><span class="s1">'abbrev'</span><span class="p">:</span> <span class="n">journal_name_abbrev_citation</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> - <span class="s1">'volume_nr'</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">number</span><span class="p">),</span> - <span class="s1">'issue_nr'</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">number</span><span class="p">),</span> - <span class="s1">'paper_nr'</span><span class="p">:</span> <span class="n">paper_nr_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">paper_nr</span><span class="p">),</span> - <span class="s1">'year'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y'</span><span class="p">),})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">citation_for_web_linked</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">citation</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<a href="{</span><span class="si">% u</span><span class="s1">rl </span><span class="se">\'</span><span class="s1">scipost:publication_detail</span><span class="se">\'</span><span class="s1"> doi_string=doi_string %}">'</span> - <span class="s1">'{{ abbrev }} <strong>{{ volume_nr }}</strong>({{ issue_nr }}), '</span> - <span class="s1">'{{ paper_nr }} ({{ year }})'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">citation</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">(</span> - <span class="p">{</span><span class="s1">'doi_string'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,</span> - <span class="s1">'abbrev'</span><span class="p">:</span> <span class="n">journal_name_abbrev_citation</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> - <span class="s1">'volume_nr'</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">number</span><span class="p">),</span> - <span class="s1">'issue_nr'</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">number</span><span class="p">),</span> - <span class="s1">'paper_nr'</span><span class="p">:</span> <span class="n">paper_nr_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">paper_nr</span><span class="p">),</span> - <span class="s1">'year'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y'</span><span class="p">),})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="c1"># def doi_label_as_str(self):</span> - <span class="c1"># label = (</span> - <span class="c1"># journal_name_abbrev_doi(self.in_issue.in_volume.in_journal.name)</span> - <span class="c1"># + '.' + str(self.in_issue.in_volume.number)</span> - <span class="c1"># + '.' + str(self.in_issue.number)</span> - <span class="c1"># + '.' + paper_nr_string(self.paper_nr) )</span> - <span class="c1"># return label</span> - - - <span class="k">def</span> <span class="nf">header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li class="publicationHeader">'</span> - <span class="s1">'<p class="publicationTitle"><a href="{</span><span class="si">% u</span><span class="s1">rl </span><span class="se">\'</span><span class="s1">scipost:publication_detail</span><span class="se">\'</span><span class="s1"> doi_string=doi_string %}">{{ title }}</a></p>'</span> - <span class="s1">'<p class="publicationAuthors">{{ author_list }}</p>'</span> - <span class="s1">'<p class="publicationReference">{{ citation }} &nbsp;&nbsp;'</span> - <span class="s1">'|&nbsp;published {{ pub_date }}</p>'</span> - <span class="s1">'<p class="publicationAbstract">{{ abstract }}</p>'</span> - <span class="s1">'<ul class="publicationClickables">'</span> - <span class="s1">'<li><button class="toggleAbstractButton">Toggle abstract</button></li>'</span> - <span class="s1">'<li class="publicationPDF"><a href="{</span><span class="si">% u</span><span class="s1">rl </span><span class="se">\'</span><span class="s1">scipost:publication_pdf</span><span class="se">\'</span><span class="s1"> doi_string=doi_string %}" target="_blank">pdf</a></li>'</span> - <span class="s1">'</ul>'</span> - <span class="s1">'</li>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'doi_string'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> - <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'citation'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">citation</span><span class="p">,</span> - <span class="s1">'pub_date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'</span><span class="si">%d</span><span class="s1"> %B %Y'</span><span class="p">),</span> - <span class="s1">'abstract'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">abstract</span><span class="p">,</span> - <span class="p">})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - -<div class="viewcode-block" id="Publication.details"><a class="viewcode-back" href="../../modules/models.html#journals.models.Publication.details">[docs]</a> <span class="k">def</span> <span class="nf">details</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> This method is called from the publication_detail template.</span> -<span class="sd"> It provides all the details for a publication.</span> -<span class="sd"> """</span> - <span class="n">pub_details</span> <span class="o">=</span> <span class="p">(</span> - <span class="s1">'<p class="publicationTitle"><a href="{</span><span class="si">% u</span><span class="s1">rl </span><span class="se">\'</span><span class="s1">scipost:publication_detail</span><span class="se">\'</span><span class="s1"> doi_string=doi_string %}">{{ title }}</a></p>'</span> - <span class="s1">'<p class="publicationAuthors">{{ author_list }}</p>'</span> - <span class="s1">'<p class="publicationReference">{{ citation }} &nbsp;&nbsp;'</span> - <span class="s1">'|&nbsp;published {{ pub_date}}</p>'</span> - <span class="s1">'<ul class="publicationClickables">'</span> - <span class="s1">'<li>doi: {{ doi_string }}</li>'</span> - <span class="s1">'<li class="publicationPDF">'</span> - <span class="s1">'<a href="{</span><span class="si">% u</span><span class="s1">rl </span><span class="se">\'</span><span class="s1">scipost:publication_pdf</span><span class="se">\'</span><span class="s1"> doi_string=doi_string %}" target="_blank">pdf</a>'</span> - <span class="s1">'</li>'</span> - <span class="s1">'<li><a href="#openModal">BiBTeX</a></li>'</span> - <span class="s1">'<li><a href="{</span><span class="si">% u</span><span class="s1">rl </span><span class="se">\'</span><span class="s1">submissions:submission</span><span class="se">\'</span><span class="s1"> arxiv_identifier_w_vn_nr='</span> - <span class="s1">'arxiv_identifier_w_vn_nr %}">Submissions/Reports</a></li>'</span> - <span class="s1">'</ul><br/><hr class="hr6"/>'</span> - <span class="s1">'<h3>Abstract:</h3>'</span> - <span class="s1">'<p class="publicationAbstract">{{ abstract }}</p>'</span> - <span class="s1">'<div id="openModal" class="modalDialog"><div>'</span> - <span class="s1">'<a href="#close" title="Close" class="close">X</a>'</span> - <span class="s1">'<h2>BiBTeX</h2><p>{{ BiBTeX|linebreaks }}</p></div></div>'</span> - <span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">pub_details</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> - <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'citation'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">citation_for_web</span><span class="p">,</span> - <span class="s1">'pub_date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'</span><span class="si">%d</span><span class="s1"> %B %Y'</span><span class="p">),</span> - <span class="s1">'abstract'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">abstract</span><span class="p">,</span> - <span class="s1">'doi_string'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,</span> - <span class="s1">'BiBTeX'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">BiBTeX_entry</span><span class="p">,</span> - <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">accepted_submission</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span> - <span class="p">})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - <span class="k">def</span> <span class="nf">citations_as_ul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<ul>'</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({})</span> - <span class="n">nr</span> <span class="o">=</span> <span class="mi">0</span> - <span class="k">for</span> <span class="n">cit</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">citedby</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>{{ auth_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'auth_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)]</span> <span class="o">=</span> <span class="p">(</span><span class="n">cit</span><span class="p">[</span><span class="s1">'first_author_given_name'</span><span class="p">]</span> - <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'first_author_surname'</span><span class="p">])</span> - <span class="k">if</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'multiauthors'</span><span class="p">]:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">' <em>et al.</em>'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">', <em>{{ title_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' }}</em>, <br/>'</span> - <span class="s1">'{{ journal_abbrev_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' }} '</span> - <span class="s1">'<strong>{{ volume_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' }}</strong>, '</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'title_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)]</span> <span class="o">=</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'article_title'</span><span class="p">]</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'journal_abbrev_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)]</span> <span class="o">=</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'journal_abbreviation'</span><span class="p">]</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'volume_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)]</span> <span class="o">=</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'volume'</span><span class="p">]</span> - <span class="k">if</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'first_page'</span><span class="p">]:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'{{ first_page_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'first_page_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)]</span> <span class="o">=</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'first_page'</span><span class="p">]</span> - <span class="k">elif</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'item_number'</span><span class="p">]:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'{{ item_number_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'item_number_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)]</span> <span class="o">=</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'item_number'</span><span class="p">]</span> - <span class="n">output</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' ({{ year_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' }}) '</span> - <span class="s1">'<a href="https://doi.org/{{ doi_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' }}" '</span> - <span class="s1">'target="_blank">[Crossref]</a>'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'year_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)]</span> <span class="o">=</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'year'</span><span class="p">]</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'doi_'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr</span><span class="p">)]</span> <span class="o">=</span> <span class="n">cit</span><span class="p">[</span><span class="s1">'doi'</span><span class="p">]</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</li>'</span> - <span class="n">nr</span> <span class="o">+=</span> <span class="mi">1</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</ul>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - -<div class="viewcode-block" id="Deposit"><a class="viewcode-back" href="../../modules/models.html#journals.models.Deposit">[docs]</a><span class="k">class</span> <span class="nc">Deposit</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Each time a Crossref deposit is made for a Publication,</span> -<span class="sd"> a Deposit object instance is created containing the Publication's</span> -<span class="sd"> current version of the metadata_xml field.</span> -<span class="sd"> All deposit history is thus contained here.</span> -<span class="sd"> """</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">doi_batch_id</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> - <span class="n">metadata_xml</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">deposition_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="n">deposition_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-%D'</span><span class="p">)</span> <span class="o">+</span> - <span class="s1">' for '</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span><span class="p">)</span></div> -</pre></div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_modules/journals/views.html b/docs/_build/html/_modules/journals/views.html deleted file mode 100644 index 489b7e15af34e192b507f4a78b621c0d4db097c4..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/journals/views.html +++ /dev/null @@ -1,1022 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>journals.views — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../../genindex.html"/> - <link rel="search" title="Search" href="../../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../../index.html"/> - <link rel="up" title="Module code" href="../index.html"/> - - - <script src="../../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../../index.html">Docs</a> »</li> - - <li><a href="../index.html">Module code</a> »</li> - - <li>journals.views</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>Source code for journals.views</h1><div class="highlight"><pre> -<span></span><span class="kn">import</span> <span class="nn">datetime</span> -<span class="kn">import</span> <span class="nn">hashlib</span> -<span class="kn">import</span> <span class="nn">os</span> -<span class="kn">import</span> <span class="nn">random</span> -<span class="kn">import</span> <span class="nn">requests</span> -<span class="kn">import</span> <span class="nn">string</span> -<span class="kn">import</span> <span class="nn">xml.etree.ElementTree</span> <span class="k">as</span> <span class="nn">ET</span> - -<span class="kn">from</span> <span class="nn">django.conf</span> <span class="k">import</span> <span class="n">settings</span> -<span class="c1">#from django.core import serializers</span> -<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span> -<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span class="k">import</span> <span class="n">get_object_or_404</span><span class="p">,</span> <span class="n">render</span><span class="p">,</span> <span class="n">redirect</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth</span> <span class="k">import</span> <span class="n">authenticate</span><span class="p">,</span> <span class="n">login</span><span class="p">,</span> <span class="n">logout</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span> -<span class="kn">from</span> <span class="nn">django.core.files</span> <span class="k">import</span> <span class="n">File</span> -<span class="kn">from</span> <span class="nn">django.core.mail</span> <span class="k">import</span> <span class="n">EmailMessage</span> -<span class="kn">from</span> <span class="nn">django.core.urlresolvers</span> <span class="k">import</span> <span class="n">reverse</span> -<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">transaction</span> -<span class="kn">from</span> <span class="nn">django.http</span> <span class="k">import</span> <span class="n">HttpResponse</span><span class="p">,</span> <span class="n">HttpResponseRedirect</span> -<span class="kn">from</span> <span class="nn">django.views.decorators.csrf</span> <span class="k">import</span> <span class="n">csrf_protect</span> -<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="k">import</span> <span class="n">Avg</span> - -<span class="kn">from</span> <span class="nn">.models</span> <span class="k">import</span> <span class="o">*</span> -<span class="kn">from</span> <span class="nn">.forms</span> <span class="k">import</span> <span class="o">*</span> - -<span class="kn">from</span> <span class="nn">journals.utils</span> <span class="k">import</span> <span class="n">JournalUtils</span> - -<span class="kn">from</span> <span class="nn">submissions.models</span> <span class="k">import</span> <span class="n">SUBMISSION_STATUS_PUBLICLY_UNLISTED</span> -<span class="kn">from</span> <span class="nn">submissions.models</span> <span class="k">import</span> <span class="n">Submission</span> - -<span class="kn">from</span> <span class="nn">guardian.decorators</span> <span class="k">import</span> <span class="n">permission_required</span> -<span class="kn">from</span> <span class="nn">guardian.decorators</span> <span class="k">import</span> <span class="n">permission_required_or_403</span> -<span class="kn">from</span> <span class="nn">guardian.shortcuts</span> <span class="k">import</span> <span class="n">assign_perm</span> - - - -<span class="c1"># from requests.adapters import HTTPAdapter</span> -<span class="c1"># from requests.packages.urllib3.poolmanager import PoolManager</span> -<span class="c1"># import ssl</span> - -<span class="c1"># class MyAdapter(HTTPAdapter):</span> -<span class="c1"># def init_poolmanager(self, connections, maxsize, block=False):</span> -<span class="c1"># self.poolmanager = PoolManager(num_pools=connections,</span> -<span class="c1"># maxsize=maxsize,</span> -<span class="c1"># block=block,</span> -<span class="c1"># ssl_version=ssl.PROTOCOL_TLSv1)</span> - -<span class="c1">############</span> -<span class="c1"># Journals</span> -<span class="c1">############</span> - - -<span class="c1"># Utilities</span> - - -<span class="c1"># @permission_required('scipost.can_publish_accepted_submission', return_403=True)</span> -<span class="c1"># @transaction.atomic</span> -<span class="c1"># def open_new_issue(request):</span> -<span class="c1"># """</span> -<span class="c1"># For a Journal/Volume, creates a new issue.</span> -<span class="c1"># """</span> - -<span class="c1"># settings.JOURNALS_DIR</span> -<span class="c1"># + journal_name_abbrev_doi(publication.in_issue.in_volume.in_journal.name)</span> -<span class="c1"># + '/' + str(publication.in_issue.in_volume.number)</span> -<span class="c1"># + '/' + str(publication.in_issue.number)</span> - - -<span class="k">def</span> <span class="nf">journals</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/journals.html'</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">scipost_physics</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="c1">#issues = Issue.objects.filter(</span> - <span class="c1"># in_volume__in_journal__name='SciPost Physics').order_by('-until_date')</span> - <span class="n">current_issue</span> <span class="o">=</span> <span class="n">Issue</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">in_volume__in_journal__name</span><span class="o">=</span><span class="s1">'SciPost Physics'</span><span class="p">,</span> - <span class="n">start_date__lte</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">until_date__gte</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">())</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-until_date'</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span> - <span class="n">latest_issue</span> <span class="o">=</span> <span class="n">Issue</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">in_volume__in_journal__name</span><span class="o">=</span><span class="s1">'SciPost Physics'</span><span class="p">,</span> - <span class="n">until_date__lte</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">())</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-until_date'</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span> - <span class="c1">#recent_papers = Publication.objects.filter(</span> - <span class="c1"># #in_issue=latest_issue).order_by('paper_nr')</span> - <span class="c1"># in_issue__in_volume__in_journal__name='SciPost Physics').order_by('-publication_date')[:20]</span> - <span class="c1">#accepted_SP_submissions = Submission.objects.filter(</span> - <span class="c1"># submitted_to_journal='SciPost Physics', status='accepted'</span> - <span class="c1">#).order_by('-latest_activity')</span> - <span class="c1">#current_SP_submissions = Submission.objects.filter(</span> - <span class="c1"># submitted_to_journal='SciPost Physics'</span> - <span class="c1"># ).exclude(status__in=SUBMISSION_STATUS_PUBLICLY_UNLISTED</span> - <span class="c1"># ).order_by('-submission_date')</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span> - <span class="c1">#'issues': issues,</span> - <span class="s1">'current_issue'</span><span class="p">:</span> <span class="n">current_issue</span><span class="p">,</span> - <span class="s1">'latest_issue'</span><span class="p">:</span> <span class="n">latest_issue</span><span class="p">,</span> - <span class="c1">#'recent_papers': recent_papers,</span> - <span class="c1">#'accepted_SP_submissions': accepted_SP_submissions,</span> - <span class="c1">#'current_SP_submissions': current_SP_submissions,</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/scipost_physics.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">scipost_physics_issues</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">issues</span> <span class="o">=</span> <span class="n">Issue</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">in_volume__in_journal__name</span><span class="o">=</span><span class="s1">'SciPost Physics'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-until_date'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'issues'</span><span class="p">:</span> <span class="n">issues</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/scipost_physics_issues.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<div class="viewcode-block" id="scipost_physics_recent"><a class="viewcode-back" href="../../modules/views.html#journals.views.scipost_physics_recent">[docs]</a><span class="k">def</span> <span class="nf">scipost_physics_recent</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Display page for the most recent 20 publications in SciPost Physics.</span> -<span class="sd"> """</span> - <span class="c1">#latest_issue = Issue.objects.filter(</span> - <span class="c1"># in_volume__in_journal__name='SciPost Physics').order_by('-until_date').first()</span> - <span class="n">recent_papers</span> <span class="o">=</span> <span class="n">Publication</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="c1">#in_issue=latest_issue).order_by('-publication_date')</span> - <span class="n">in_issue__in_volume__in_journal__name</span><span class="o">=</span><span class="s1">'SciPost Physics'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-publication_date'</span><span class="p">)[:</span><span class="mi">20</span><span class="p">]</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="c1">#'latest_issue': latest_issue,</span> - <span class="s1">'recent_papers'</span><span class="p">:</span> <span class="n">recent_papers</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/scipost_physics_recent.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<div class="viewcode-block" id="scipost_physics_accepted"><a class="viewcode-back" href="../../modules/views.html#journals.views.scipost_physics_accepted">[docs]</a><span class="k">def</span> <span class="nf">scipost_physics_accepted</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Display page for submissions to SciPost Physics which</span> -<span class="sd"> have been accepted but are not yet published.</span> -<span class="sd"> """</span> - <span class="n">accepted_SP_submissions</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">submitted_to_journal</span><span class="o">=</span><span class="s1">'SciPost Physics'</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="s1">'accepted'</span> - <span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-latest_activity'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'accepted_SP_submissions'</span><span class="p">:</span> <span class="n">accepted_SP_submissions</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/scipost_physics_accepted.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="c1"># def scipost_physics_submissions(request):</span> -<span class="c1"># """</span> -<span class="c1"># Display page for submissions to SciPost Physics which</span> -<span class="c1"># have been accepted but are not yet published.</span> -<span class="c1"># """</span> -<span class="c1"># current_SP_submissions = Submission.objects.filter(</span> -<span class="c1"># submitted_to_journal='SciPost Physics'</span> -<span class="c1"># ).exclude(status__in=SUBMISSION_STATUS_PUBLICLY_UNLISTED</span> -<span class="c1"># ).order_by('-submission_date')</span> -<span class="c1"># context = {'current_SP_submissions': current_SP_submissions}</span> -<span class="c1"># return render(request, 'journals/scipost_physics_submissions.html', context)</span> - - -<span class="k">def</span> <span class="nf">scipost_physics_info_for_authors</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/scipost_physics_info_for_authors.html'</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">scipost_physics_about</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/scipost_physics_about.html'</span><span class="p">)</span> - - - -<span class="k">def</span> <span class="nf">scipost_physics_issue_detail</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">volume_nr</span><span class="p">,</span> <span class="n">issue_nr</span><span class="p">):</span> - <span class="n">issue</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Issue</span><span class="p">,</span> <span class="n">in_volume__in_journal__name</span><span class="o">=</span><span class="s1">'SciPost Physics'</span><span class="p">,</span> - <span class="n">number</span><span class="o">=</span><span class="n">issue_nr</span><span class="p">)</span> - <span class="n">papers</span> <span class="o">=</span> <span class="n">issue</span><span class="o">.</span><span class="n">publication_set</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'paper_nr'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'issue'</span><span class="p">:</span> <span class="n">issue</span><span class="p">,</span> <span class="s1">'papers'</span><span class="p">:</span> <span class="n">papers</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/scipost_physics_issue_detail.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - - -<span class="c1">#######################</span> -<span class="c1"># Publication process #</span> -<span class="c1">#######################</span> - -<span class="c1"># @permission_required('scipost.can_publish_accepted_submission', return_403=True)</span> -<span class="c1"># @transaction.atomic</span> -<span class="c1"># def publishing_workspace(request):</span> -<span class="c1"># """</span> -<span class="c1"># Page containing post-acceptance publishing workflow items.</span> -<span class="c1"># """</span> -<span class="c1"># accepted_submissions = Submission.objects.filter(status='accepted')</span> -<span class="c1"># context = {'accepted_submissions': accepted_submissions,}</span> -<span class="c1"># return render(request, 'journals/publishing_workspace.html', context)</span> - -<div class="viewcode-block" id="upload_proofs"><a class="viewcode-back" href="../../modules/views.html#journals.views.upload_proofs">[docs]</a><span class="k">def</span> <span class="nf">upload_proofs</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> TODO</span> -<span class="sd"> Called by a member of the Production Team.</span> -<span class="sd"> Upload the production version .pdf of a submission.</span> -<span class="sd"> """</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/upload_proofs.html'</span><span class="p">)</span></div> - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="initiate_publication"><a class="viewcode-back" href="../../modules/views.html#journals.views.initiate_publication">[docs]</a><span class="k">def</span> <span class="nf">initiate_publication</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Called by an Editorial Administrator.</span> -<span class="sd"> Publish the manuscript after proofs have been accepted.</span> -<span class="sd"> This method prefills a ValidatePublicationForm for further</span> -<span class="sd"> processing (verification in validate_publication method).</span> -<span class="sd"> """</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">initiate_publication_form</span> <span class="o">=</span> <span class="n">InitiatePublicationForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">initiate_publication_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> - <span class="n">pk</span><span class="o">=</span><span class="n">initiate_publication_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'accepted_submission'</span><span class="p">]</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> - <span class="n">current_issue</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Issue</span><span class="p">,</span> - <span class="n">pk</span><span class="o">=</span><span class="n">initiate_publication_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'to_be_issued_in'</span><span class="p">]</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> - <span class="c1"># Determine next available paper number:</span> - <span class="n">papers_in_current_issue</span> <span class="o">=</span> <span class="n">Publication</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">in_issue</span><span class="o">=</span><span class="n">current_issue</span><span class="p">)</span> - <span class="n">paper_nr</span> <span class="o">=</span> <span class="mi">1</span> - <span class="k">while</span> <span class="n">papers_in_current_issue</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">paper_nr</span><span class="o">=</span><span class="n">paper_nr</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span> - <span class="n">paper_nr</span> <span class="o">+=</span> <span class="mi">1</span> - <span class="k">if</span> <span class="n">paper_nr</span> <span class="o">></span> <span class="mi">999</span><span class="p">:</span> - <span class="k">raise</span> <span class="n">PaperNumberingError</span><span class="p">(</span><span class="n">paper_nr</span><span class="p">)</span> - <span class="n">doi_label</span> <span class="o">=</span> <span class="p">(</span> - <span class="n">journal_name_abbrev_doi</span><span class="p">(</span><span class="n">current_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> - <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">current_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">number</span><span class="p">)</span> - <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">current_issue</span><span class="o">.</span><span class="n">number</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'.'</span> <span class="o">+</span> <span class="n">paper_nr_string</span><span class="p">(</span><span class="n">paper_nr</span><span class="p">)</span> - <span class="p">)</span> - <span class="n">doi_string</span><span class="o">=</span><span class="s1">'10.21468/'</span> <span class="o">+</span> <span class="n">doi_label</span> - <span class="n">BiBTeX_entry</span> <span class="o">=</span> <span class="p">(</span> - <span class="s1">'@Article{'</span> <span class="o">+</span> <span class="n">doi_label</span> <span class="o">+</span> <span class="s1">',</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</span><span class="se">\t</span><span class="s1">title={{'</span> <span class="o">+</span> <span class="n">submission</span><span class="o">.</span><span class="n">title</span> <span class="o">+</span> <span class="s1">'}},</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</span><span class="se">\t</span><span class="s1">author={'</span> <span class="o">+</span> <span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">','</span><span class="p">,</span> <span class="s1">' and'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'},</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</span><span class="se">\t</span><span class="s1">journal={'</span> - <span class="o">+</span> <span class="n">journal_name_abbrev_citation</span><span class="p">(</span><span class="n">current_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> - <span class="o">+</span> <span class="s1">'},</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</span><span class="se">\t</span><span class="s1">volume={'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">current_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">number</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'},</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</span><span class="se">\t</span><span class="s1">issue={'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">current_issue</span><span class="o">.</span><span class="n">number</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'},</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</span><span class="se">\t</span><span class="s1">pages={'</span> <span class="o">+</span> <span class="n">paper_nr_string</span><span class="p">(</span><span class="n">paper_nr</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'},</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</span><span class="se">\t</span><span class="s1">year={'</span> <span class="o">+</span> <span class="n">current_issue</span><span class="o">.</span><span class="n">until_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'},</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</span><span class="se">\t</span><span class="s1">publisher=</span><span class="si">{SciPost}</span><span class="s1">,</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</span><span class="se">\t</span><span class="s1">doi={'</span> <span class="o">+</span> <span class="n">doi_string</span> <span class="o">+</span> <span class="s1">'},</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</span><span class="se">\t</span><span class="s1">url={https://scipost.org/'</span> <span class="o">+</span> <span class="n">doi_string</span> <span class="o">+</span> <span class="s1">'},</span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'}</span><span class="se">\n</span><span class="s1">'</span> - <span class="p">)</span> - <span class="n">initial</span> <span class="o">=</span> <span class="p">{</span> - <span class="s1">'accepted_submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">,</span> - <span class="s1">'in_issue'</span><span class="p">:</span> <span class="n">current_issue</span><span class="p">,</span> - <span class="s1">'paper_nr'</span><span class="p">:</span> <span class="n">paper_nr</span><span class="p">,</span> - <span class="s1">'discipline'</span><span class="p">:</span> <span class="n">submission</span><span class="o">.</span><span class="n">discipline</span><span class="p">,</span> - <span class="s1">'domain'</span><span class="p">:</span> <span class="n">submission</span><span class="o">.</span><span class="n">domain</span><span class="p">,</span> - <span class="s1">'subject_area'</span><span class="p">:</span> <span class="n">submission</span><span class="o">.</span><span class="n">subject_area</span><span class="p">,</span> - <span class="s1">'secondary_areas'</span><span class="p">:</span> <span class="n">submission</span><span class="o">.</span><span class="n">secondary_areas</span><span class="p">,</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="n">submission</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> - <span class="s1">'author_list'</span><span class="p">:</span> <span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'abstract'</span><span class="p">:</span> <span class="n">submission</span><span class="o">.</span><span class="n">abstract</span><span class="p">,</span> - <span class="s1">'BiBTeX_entry'</span><span class="p">:</span> <span class="n">BiBTeX_entry</span><span class="p">,</span> - <span class="s1">'doi_label'</span><span class="p">:</span> <span class="n">doi_label</span><span class="p">,</span> - <span class="s1">'doi_string'</span><span class="p">:</span> <span class="n">doi_string</span><span class="p">,</span> - <span class="s1">'submission_date'</span><span class="p">:</span> <span class="n">initiate_publication_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'original_submission_date'</span><span class="p">],</span> - <span class="s1">'acceptance_date'</span><span class="p">:</span> <span class="n">initiate_publication_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'acceptance_date'</span><span class="p">],</span> - <span class="s1">'publication_date'</span><span class="p">:</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="s1">'latest_activity'</span><span class="p">:</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="p">}</span> - <span class="n">validate_publication_form</span> <span class="o">=</span> <span class="n">ValidatePublicationForm</span><span class="p">(</span><span class="n">initial</span><span class="o">=</span><span class="n">initial</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'validate_publication_form'</span><span class="p">:</span> <span class="n">validate_publication_form</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/validate_publication.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'The form was not filled validly.'</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'initiate_publication_form'</span><span class="p">:</span> <span class="n">initiate_publication_form</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/initiate_publication.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">initiate_publication_form</span> <span class="o">=</span> <span class="n">InitiatePublicationForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'initiate_publication_form'</span><span class="p">:</span> <span class="n">initiate_publication_form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/initiate_publication.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="validate_publication"><a class="viewcode-back" href="../../modules/views.html#journals.views.validate_publication">[docs]</a><span class="k">def</span> <span class="nf">validate_publication</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> This creates a Publication instance from the ValidatePublicationForm,</span> -<span class="sd"> pre-filled by the initiate_publication method above.</span> -<span class="sd"> """</span> - <span class="c1"># TODO: move from uploads to Journal folder</span> - <span class="c1"># TODO: create metadata</span> - <span class="c1"># TODO: set DOI, register with Crossref</span> - <span class="c1"># TODO: add funding info</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">validate_publication_form</span> <span class="o">=</span> <span class="n">ValidatePublicationForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">FILES</span><span class="p">)</span> - <span class="k">if</span> <span class="n">validate_publication_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">validate_publication_form</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1"># Fill in remaining data</span> - <span class="n">publication</span><span class="o">.</span><span class="n">pdf_file</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">FILES</span><span class="p">[</span><span class="s1">'pdf_file'</span><span class="p">]</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">publication</span><span class="o">.</span><span class="n">accepted_submission</span> - <span class="n">publication</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="o">*</span><span class="n">submission</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> - <span class="n">publication</span><span class="o">.</span><span class="n">authors_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="o">*</span><span class="n">submission</span><span class="o">.</span><span class="n">authors_claims</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> - <span class="n">publication</span><span class="o">.</span><span class="n">authors_false_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="o">*</span><span class="n">submission</span><span class="o">.</span><span class="n">authors_false_claims</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1"># Move file to final location</span> - <span class="n">initial_path</span> <span class="o">=</span> <span class="n">publication</span><span class="o">.</span><span class="n">pdf_file</span><span class="o">.</span><span class="n">path</span> - <span class="n">new_dir</span> <span class="o">=</span> <span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">path</span> - <span class="o">+</span> <span class="n">paper_nr_string</span><span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">paper_nr</span><span class="p">))</span> - <span class="n">new_path</span> <span class="o">=</span> <span class="n">new_dir</span> <span class="o">+</span> <span class="s1">'/'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_label</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">'.'</span><span class="p">,</span> <span class="s1">'_'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'.pdf'</span> - <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">new_dir</span><span class="p">)</span> - <span class="n">os</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">initial_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">)</span> - <span class="n">publication</span><span class="o">.</span><span class="n">pdf_file</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">new_path</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1"># Mark the submission as having been published:</span> - <span class="n">publication</span><span class="o">.</span><span class="n">accepted_submission</span><span class="o">.</span><span class="n">published_as</span> <span class="o">=</span> <span class="n">publication</span> - <span class="n">publication</span><span class="o">.</span><span class="n">accepted_submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'published'</span> - <span class="n">publication</span><span class="o">.</span><span class="n">accepted_submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1"># TODO: Create a Commentary Page</span> - <span class="c1"># Email authors</span> - <span class="n">JournalUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'publication'</span><span class="p">:</span> <span class="n">publication</span><span class="p">})</span> - <span class="n">JournalUtils</span><span class="o">.</span><span class="n">send_authors_paper_published_email</span><span class="p">()</span> - <span class="n">ack_header</span> <span class="o">=</span> <span class="s1">'The publication has been validated.'</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="n">ack_header</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'The form was invalid.'</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'publication'</span><span class="p">:</span> <span class="n">publication</span><span class="p">,</span> - <span class="s1">'validate_publication_form'</span><span class="p">:</span> <span class="n">validate_publication_form</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/validate_publication.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">validate_publication_form</span> <span class="o">=</span> <span class="n">ValidatePublicationForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'validate_publication_form'</span><span class="p">:</span> <span class="n">validate_publication_form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/validate_publication.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">mark_first_author</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">publication_id</span><span class="p">,</span> <span class="n">contributor_id</span><span class="p">):</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">publication_id</span><span class="p">)</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">contributor_id</span><span class="p">)</span> - <span class="n">publication</span><span class="o">.</span><span class="n">first_author</span> <span class="o">=</span> <span class="n">contributor</span> - <span class="n">publication</span><span class="o">.</span><span class="n">first_author_unregistered</span> <span class="o">=</span> <span class="kc">None</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:publication_detail'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'doi_string'</span><span class="p">:</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,}))</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">mark_first_author_unregistered</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">publication_id</span><span class="p">,</span> <span class="n">unregistered_author_id</span><span class="p">):</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">publication_id</span><span class="p">)</span> - <span class="n">unregistered_author</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">UnregisteredAuthor</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">unregistered_author_id</span><span class="p">)</span> - <span class="n">publication</span><span class="o">.</span><span class="n">first_author</span> <span class="o">=</span> <span class="kc">None</span> - <span class="n">publication</span><span class="o">.</span><span class="n">first_author_unregistered</span> <span class="o">=</span> <span class="n">unregistered_author</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:publication_detail'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'doi_string'</span><span class="p">:</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,}))</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="add_author"><a class="viewcode-back" href="../../modules/views.html#journals.views.add_author">[docs]</a><span class="k">def</span> <span class="nf">add_author</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">publication_id</span><span class="p">,</span> <span class="n">contributor_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">unregistered_author_id</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> If not all authors are registered Contributors or if they have not</span> -<span class="sd"> all claimed authorship, this method allows editorial administrators</span> -<span class="sd"> to associated them to the publication.</span> -<span class="sd"> This is important for the Crossref metadata, in which all authors must appear.</span> -<span class="sd"> """</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">publication_id</span><span class="p">)</span> - <span class="k">if</span> <span class="n">contributor_id</span><span class="p">:</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">contributor_id</span><span class="p">)</span> - <span class="n">publication</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:publication_detail'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'doi_string'</span><span class="p">:</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,}))</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">UnregisteredAuthorForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">contributors_found</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">user__last_name__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">])</span> - <span class="n">unregistered_authors_found</span> <span class="o">=</span> <span class="n">UnregisteredAuthor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">last_name__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">])</span> - <span class="n">new_unreg_author_form</span> <span class="o">=</span> <span class="n">UnregisteredAuthorForm</span><span class="p">(</span> - <span class="n">initial</span><span class="o">=</span><span class="p">{</span><span class="s1">'first_name'</span><span class="p">:</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'first_name'</span><span class="p">],</span> - <span class="s1">'last_name'</span><span class="p">:</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">],})</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'Please fill in the form properly'</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">UnregisteredAuthorForm</span><span class="p">()</span> - <span class="n">contributors_found</span> <span class="o">=</span> <span class="kc">None</span> - <span class="n">unregistered_authors_found</span> <span class="o">=</span> <span class="kc">None</span> - <span class="n">new_unreg_author_form</span> <span class="o">=</span> <span class="n">UnregisteredAuthorForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'publication'</span><span class="p">:</span> <span class="n">publication</span><span class="p">,</span> - <span class="s1">'contributors_found'</span><span class="p">:</span> <span class="n">contributors_found</span><span class="p">,</span> - <span class="s1">'unregistered_authors_found'</span><span class="p">:</span> <span class="n">unregistered_authors_found</span><span class="p">,</span> - <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> - <span class="s1">'new_unreg_author_form'</span><span class="p">:</span> <span class="n">new_unreg_author_form</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/add_author.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">add_unregistered_author</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">publication_id</span><span class="p">,</span> <span class="n">unregistered_author_id</span><span class="p">):</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">publication_id</span><span class="p">)</span> - <span class="n">unregistered_author</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">UnregisteredAuthor</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">unregistered_author_id</span><span class="p">)</span> - <span class="n">publication</span><span class="o">.</span><span class="n">unregistered_authors</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">unregistered_author</span><span class="p">)</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:publication_detail'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'doi_string'</span><span class="p">:</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,}))</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">add_new_unreg_author</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">publication_id</span><span class="p">):</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">publication_id</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">new_unreg_author_form</span> <span class="o">=</span> <span class="n">UnregisteredAuthorForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">new_unreg_author_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">new_unreg_author</span> <span class="o">=</span> <span class="n">UnregisteredAuthor</span><span class="p">(</span> - <span class="n">first_name</span> <span class="o">=</span> <span class="n">new_unreg_author_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'first_name'</span><span class="p">],</span> - <span class="n">last_name</span> <span class="o">=</span> <span class="n">new_unreg_author_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">],)</span> - <span class="n">new_unreg_author</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">publication</span><span class="o">.</span><span class="n">authors_unregistered</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">new_unreg_author</span><span class="p">)</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:publication_detail'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'doi_string'</span><span class="p">:</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,}))</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'Method add_new_unreg_author can only be called with POST.'</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="create_citation_list_metadata"><a class="viewcode-back" href="../../modules/views.html#journals.views.create_citation_list_metadata">[docs]</a><span class="k">def</span> <span class="nf">create_citation_list_metadata</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">doi_string</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Called by an Editorial Administrator.</span> -<span class="sd"> This populates the citation_list dictionary entry</span> -<span class="sd"> in the metadata field in a Publication instance.</span> -<span class="sd"> """</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="n">doi_string</span><span class="o">=</span><span class="n">doi_string</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">bibitems_form</span> <span class="o">=</span> <span class="n">CitationListBibitemsForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">FILES</span><span class="p">)</span> - <span class="k">if</span> <span class="n">bibitems_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">publication</span><span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'citation_list'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> - <span class="n">entries_list</span> <span class="o">=</span> <span class="n">bibitems_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'latex_bibitems'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'\doi{'</span><span class="p">)</span> - <span class="n">nentries</span> <span class="o">=</span> <span class="mi">1</span> - <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">entries_list</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> <span class="c1"># drop first bit before first \doi{</span> - <span class="n">publication</span><span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'citation_list'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> - <span class="p">{</span><span class="s1">'key'</span><span class="p">:</span> <span class="s1">'ref'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nentries</span><span class="p">),</span> - <span class="s1">'doi'</span><span class="p">:</span> <span class="n">entry</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s1">'}'</span><span class="p">)[</span><span class="mi">0</span><span class="p">],}</span> - <span class="p">)</span> - <span class="n">nentries</span> <span class="o">+=</span> <span class="mi">1</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">bibitems_form</span> <span class="o">=</span> <span class="n">CitationListBibitemsForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'publication'</span><span class="p">:</span> <span class="n">publication</span><span class="p">,</span> - <span class="s1">'bibitems_form'</span><span class="p">:</span> <span class="n">bibitems_form</span><span class="p">,</span> - <span class="p">}</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'citation_list'</span><span class="p">]</span> <span class="o">=</span> <span class="n">publication</span><span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'citation_list'</span><span class="p">]</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/create_citation_list_metadata.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="create_funding_info_metadata"><a class="viewcode-back" href="../../modules/views.html#journals.views.create_funding_info_metadata">[docs]</a><span class="k">def</span> <span class="nf">create_funding_info_metadata</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">doi_string</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Called by an Editorial Administrator.</span> -<span class="sd"> This populates the funding_info dictionary entry</span> -<span class="sd"> in the metadata field in a Publication instance.</span> -<span class="sd"> """</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="n">doi_string</span><span class="o">=</span><span class="n">doi_string</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">funding_info_form</span> <span class="o">=</span> <span class="n">FundingInfoForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">funding_info_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">publication</span><span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'funding_statement'</span><span class="p">]</span> <span class="o">=</span> <span class="n">funding_info_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'funding_statement'</span><span class="p">]</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - - <span class="n">initial</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'funding_statement'</span><span class="p">:</span> <span class="s1">''</span><span class="p">,}</span> - <span class="n">funding_statement</span> <span class="o">=</span> <span class="s1">''</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'funding_statement'</span><span class="p">]</span> <span class="o">=</span> <span class="n">publication</span><span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'funding_statement'</span><span class="p">]</span> - <span class="n">funding_statement</span> <span class="o">=</span> <span class="n">initial</span><span class="p">[</span><span class="s1">'funding_statement'</span><span class="p">]</span> - <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span> - <span class="k">pass</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'publication'</span><span class="p">:</span> <span class="n">publication</span><span class="p">,</span> - <span class="s1">'funding_info_form'</span><span class="p">:</span> <span class="n">FundingInfoForm</span><span class="p">(</span><span class="n">initial</span><span class="o">=</span><span class="n">initial</span><span class="p">),</span> - <span class="s1">'funding_statement'</span><span class="p">:</span> <span class="n">funding_statement</span><span class="p">,}</span> - - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/create_funding_info_metadata.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="create_metadata_xml"><a class="viewcode-back" href="../../modules/views.html#journals.views.create_metadata_xml">[docs]</a><span class="k">def</span> <span class="nf">create_metadata_xml</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">doi_string</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> To be called by an EdAdmin after the citation_list,</span> -<span class="sd"> funding_info entries have been filled.</span> -<span class="sd"> Populates the metadata_xml field of a Publication instance.</span> -<span class="sd"> The contents can then be sent to Crossref for registration.</span> -<span class="sd"> """</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="n">doi_string</span><span class="o">=</span><span class="n">doi_string</span><span class="p">)</span> - - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">create_metadata_xml_form</span> <span class="o">=</span> <span class="n">CreateMetadataXMLForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">create_metadata_xml_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">publication</span><span class="o">.</span><span class="n">metadata_xml</span> <span class="o">=</span> <span class="n">create_metadata_xml_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:publication_detail'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'doi_string'</span><span class="p">:</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,}))</span> - - <span class="c1"># create a doi_batch_id</span> - <span class="n">salt</span> <span class="o">=</span> <span class="s2">""</span> - <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span> - <span class="n">salt</span> <span class="o">=</span> <span class="n">salt</span> <span class="o">+</span> <span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">ascii_letters</span><span class="p">)</span> - <span class="n">salt</span> <span class="o">=</span> <span class="n">salt</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">'utf8'</span><span class="p">)</span> - <span class="n">idsalt</span> <span class="o">=</span> <span class="n">publication</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">10</span><span class="p">]</span> - <span class="n">idsalt</span> <span class="o">=</span> <span class="n">idsalt</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">'utf8'</span><span class="p">)</span> - <span class="n">doi_batch_id</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha1</span><span class="p">(</span><span class="n">salt</span><span class="o">+</span><span class="n">idsalt</span><span class="p">)</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span> - - <span class="c1">#publication.metadata_xml = (</span> - <span class="n">initial</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'metadata_xml'</span><span class="p">:</span> <span class="s1">''</span><span class="p">}</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span> - <span class="s1">'<?xml version="1.0" encoding="UTF-8"?></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<doi_batch version="4.3.7" xmlns="http://www.crossref.org/schema/4.3.7" '</span> - <span class="s1">'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '</span> - <span class="s1">'xsi:schemaLocation="http://www.crossref.org/schema/4.3.7 '</span> - <span class="s1">'http://www.crossref.org/shema/deposit/crossref4.3.7.xsd"></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<head></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<doi_batch_id>'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">doi_batch_id</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</doi_batch_id></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<timestamp>'</span> <span class="o">+</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y%m</span><span class="si">%d</span><span class="s1">%H%M%S'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</timestamp></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<depositor></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<depositor_name>scipost</depositor_name></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<email_address>admin@scipost.org</email_address></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</depositor></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<registrant>scipost</registrant></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</head></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<body></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<journal></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<journal_metadata></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<full_title>'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s1">'</full_title></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<abbrev_title>'</span> - <span class="o">+</span> <span class="n">journal_name_abbrev_citation</span><span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> <span class="o">+</span> - <span class="s1">'</abbrev_title></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<issn>'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">issn</span> <span class="o">+</span> <span class="s1">'</issn></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<doi_data></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<doi>'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">doi_string</span> <span class="o">+</span> <span class="s1">'</doi></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<resource>https://scipost.org/'</span> - <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">in_journal</span><span class="o">.</span><span class="n">doi_string</span> <span class="o">+</span> <span class="s1">'</resource></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</doi_data></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</journal_metadata></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<journal_issue></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<publication_date media_type=</span><span class="se">\'</span><span class="s1">online</span><span class="se">\'</span><span class="s1">></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<year>'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</year></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</publication_date></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<journal_volume></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<volume>'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">in_volume</span><span class="o">.</span><span class="n">number</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</volume></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</journal_volume></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<issue>'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">in_issue</span><span class="o">.</span><span class="n">number</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</issue></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</journal_issue></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<journal_article publication_type=</span><span class="se">\'</span><span class="s1">full_text</span><span class="se">\'</span><span class="s1">></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<titles><title>'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">title</span> <span class="o">+</span> <span class="s1">'</title></titles></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<contributors></span><span class="se">\n</span><span class="s1">'</span> - <span class="p">)</span> - <span class="c1"># Precondition: all authors MUST be listed in authors field of publication instance,</span> - <span class="c1"># this to be checked by EdAdmin before publishing.</span> - <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">publication</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="k">if</span> <span class="n">author</span> <span class="o">==</span> <span class="n">publication</span><span class="o">.</span><span class="n">first_author</span><span class="p">:</span> - <span class="c1">#publication.metadata_xml += (</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span> - <span class="s1">'<person_name sequence=</span><span class="se">\'</span><span class="s1">first</span><span class="se">\'</span><span class="s1"> contributor_role=</span><span class="se">\'</span><span class="s1">author</span><span class="se">\'</span><span class="s1">> '</span> - <span class="s1">'<given_name>'</span> <span class="o">+</span> <span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">'</given_name> '</span> - <span class="s1">'<surname>'</span> <span class="o">+</span> <span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">'</surname> '</span> - <span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="c1">#publication.metadata_xml += (</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span> - <span class="s1">'<person_name sequence=</span><span class="se">\'</span><span class="s1">additional</span><span class="se">\'</span><span class="s1"> contributor_role=</span><span class="se">\'</span><span class="s1">author</span><span class="se">\'</span><span class="s1">> '</span> - <span class="s1">'<given_name>'</span> <span class="o">+</span> <span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">'</given_name> '</span> - <span class="s1">'<surname>'</span> <span class="o">+</span> <span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">'</surname> '</span> - <span class="p">)</span> - <span class="k">if</span> <span class="n">author</span><span class="o">.</span><span class="n">orcid_id</span><span class="p">:</span> - <span class="c1">#publication.metadata_xml += '<ORCID>http://orcid.org' + author.orcid_id + '</ORCID>'</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'<ORCID>http://orcid.org/'</span> <span class="o">+</span> <span class="n">author</span><span class="o">.</span><span class="n">orcid_id</span> <span class="o">+</span> <span class="s1">'</ORCID>'</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'</person_name></span><span class="se">\n</span><span class="s1">'</span> - - <span class="k">for</span> <span class="n">author_unreg</span> <span class="ow">in</span> <span class="n">publication</span><span class="o">.</span><span class="n">authors_unregistered</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="k">if</span> <span class="n">author_unreg</span> <span class="o">==</span> <span class="n">publication</span><span class="o">.</span><span class="n">first_author_unregistered</span><span class="p">:</span> - <span class="c1">#publication.metadata_xml += (</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span> - <span class="s1">'<person_name sequence=</span><span class="se">\'</span><span class="s1">first</span><span class="se">\'</span><span class="s1"> contributor_role=</span><span class="se">\'</span><span class="s1">author</span><span class="se">\'</span><span class="s1">> '</span> - <span class="s1">'<given_name>'</span> <span class="o">+</span> <span class="n">author_unreg</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">'</given_name> '</span> - <span class="s1">'<surname>'</span> <span class="o">+</span> <span class="n">author_unreg</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">'</surname> '</span> - <span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="c1">#publication.metadata_xml += (</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span> - <span class="s1">'<person_name sequence=</span><span class="se">\'</span><span class="s1">additional</span><span class="se">\'</span><span class="s1"> contributor_role=</span><span class="se">\'</span><span class="s1">author</span><span class="se">\'</span><span class="s1">> '</span> - <span class="s1">'<given_name>'</span> <span class="o">+</span> <span class="n">author_unreg</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">'</given_name> '</span> - <span class="s1">'<surname>'</span> <span class="o">+</span> <span class="n">author_unreg</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">'</surname> '</span> - <span class="p">)</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'</person_name></span><span class="se">\n</span><span class="s1">'</span> - <span class="c1">#publication.metadata_xml += '</contributors>\n'</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'</contributors></span><span class="se">\n</span><span class="s1">'</span> - - <span class="c1">#publication.metadata_xml += (</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span> - <span class="s1">'<publication_date media_type=</span><span class="se">\'</span><span class="s1">online</span><span class="se">\'</span><span class="s1">></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<month>'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%m'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</month>'</span> - <span class="s1">'<day>'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</day>'</span> - <span class="s1">'<year>'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">publication_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</year>'</span> - <span class="s1">'</publication_date></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<publisher_item><item_number item_number_type="article_number">'</span> - <span class="o">+</span> <span class="n">paper_nr_string</span><span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">paper_nr</span><span class="p">)</span> <span class="o">+</span> - <span class="s1">'</item_number></publisher_item></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<doi_data></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<doi>'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span> <span class="o">+</span> <span class="s1">'</doi></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<resource>https://scipost.org/'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span> <span class="o">+</span> <span class="s1">'</resource></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<collection property="crawler-based"></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<item crawler="iParadigms"></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'<resource>https://scipost.org/'</span> - <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span> <span class="o">+</span> <span class="s1">'/pdf</resource></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</item></collection></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</doi_data></span><span class="se">\n</span><span class="s1">'</span> - <span class="p">)</span> - <span class="k">try</span><span class="p">:</span> - <span class="k">if</span> <span class="n">publication</span><span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'citation_list'</span><span class="p">]:</span> - <span class="c1">#publication.metadata_xml += '<citation_list>\n'</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'<citation_list></span><span class="se">\n</span><span class="s1">'</span> - <span class="k">for</span> <span class="n">ref</span> <span class="ow">in</span> <span class="n">publication</span><span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'citation_list'</span><span class="p">]:</span> - <span class="c1">#publication.metadata_xml += (</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span> - <span class="s1">'<citation key="'</span> <span class="o">+</span> <span class="n">ref</span><span class="p">[</span><span class="s1">'key'</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'">'</span> - <span class="s1">'<doi>'</span> <span class="o">+</span> <span class="n">ref</span><span class="p">[</span><span class="s1">'doi'</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</doi>'</span> - <span class="s1">'</citation></span><span class="se">\n</span><span class="s1">'</span> - <span class="p">)</span> - <span class="c1">#publication.metadata_xml += '</citation_list>\n'</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'</citation_list></span><span class="se">\n</span><span class="s1">'</span> - <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span> - <span class="k">pass</span> - <span class="c1">#publication.metadata_xml += (</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span> - <span class="s1">'</journal_article></span><span class="se">\n</span><span class="s1">'</span> - <span class="s1">'</journal></span><span class="se">\n</span><span class="s1">'</span> - <span class="p">)</span> - <span class="c1">#publication.metadata_xml += '</body>\n</doi_batch>'</span> - <span class="n">initial</span><span class="p">[</span><span class="s1">'metadata_xml'</span><span class="p">]</span> <span class="o">+=</span> <span class="s1">'</body></span><span class="se">\n</span><span class="s1"></doi_batch>'</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1">#else:</span> - <span class="c1"># errormessage = 'The form was invalidly filled.'</span> - - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'publication'</span><span class="p">:</span> <span class="n">publication</span><span class="p">,</span> - <span class="s1">'create_metadata_xml_form'</span><span class="p">:</span> <span class="n">CreateMetadataXMLForm</span><span class="p">(</span><span class="n">initial</span><span class="o">=</span><span class="n">initial</span><span class="p">),</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/create_metadata_xml.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="c1"># @permission_required('scipost.can_publish_accepted_submission', return_403=True)</span> -<span class="c1"># @transaction.atomic</span> -<span class="c1"># def test_metadata_xml_deposit(request, doi_string):</span> -<span class="c1"># """</span> -<span class="c1"># Prior to the actual Crossref metadata deposit,</span> -<span class="c1"># test the metadata_xml using the Crossref test server.</span> -<span class="c1"># Makes use of the python requests module.</span> -<span class="c1"># """</span> -<span class="c1"># publication = get_object_or_404 (Publication, doi_string=doi_string)</span> -<span class="c1"># url = 'http://test.crossref.org/servlet/deposit'</span> -<span class="c1"># #headers = {'Content-type': 'multipart/form-data'}</span> -<span class="c1"># params = {'operation': 'doMDUpload',</span> -<span class="c1"># 'login_id': settings.CROSSREF_LOGIN_ID,</span> -<span class="c1"># 'login_passwd': settings.CROSSREF_LOGIN_PASSWORD,</span> -<span class="c1"># }</span> -<span class="c1"># #files = {'fname': ('metadata.xml', publication.metadata_xml, 'multipart/form-data', {'Expires': '0'})}</span> -<span class="c1"># files = {'fname': ('metadata.xml', publication.metadata_xml, 'multipart/form-data')}</span> -<span class="c1"># r = requests.post(url,</span> -<span class="c1"># params=params,</span> -<span class="c1"># files=files,</span> -<span class="c1"># #verify=settings.CERTFILE,</span> -<span class="c1"># #verify=False,</span> -<span class="c1"># )</span> -<span class="c1"># #s = requests.Session()</span> -<span class="c1"># #s.mount('https://', MyAdapter())</span> -<span class="c1"># #r = s.post(url, params=params, files=files)</span> -<span class="c1"># response_headers = r.headers</span> -<span class="c1"># response_text = r.text</span> -<span class="c1"># context = {'publication': publication,</span> -<span class="c1"># 'response_headers': response_headers,</span> -<span class="c1"># 'response_text': response_text,</span> -<span class="c1"># }</span> -<span class="c1"># return render(request, 'journals/test_metadata_xml_deposit.html', context)</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="metadata_xml_deposit"><a class="viewcode-back" href="../../modules/views.html#journals.views.metadata_xml_deposit">[docs]</a><span class="k">def</span> <span class="nf">metadata_xml_deposit</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">doi_string</span><span class="p">,</span> <span class="n">option</span><span class="o">=</span><span class="s1">'test'</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Crossref metadata deposit.</span> -<span class="sd"> If test==True, test the metadata_xml using the Crossref test server.</span> -<span class="sd"> Makes use of the python requests module.</span> -<span class="sd"> """</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="n">doi_string</span><span class="o">=</span><span class="n">doi_string</span><span class="p">)</span> - <span class="k">if</span> <span class="n">option</span><span class="o">==</span><span class="s1">'deposit'</span><span class="p">:</span> - <span class="n">url</span> <span class="o">=</span> <span class="s1">'http://doi.crossref.org/servlet/deposit'</span> - <span class="k">elif</span> <span class="n">option</span><span class="o">==</span><span class="s1">'test'</span><span class="p">:</span> - <span class="n">url</span> <span class="o">=</span> <span class="s1">'http://test.crossref.org/servlet/deposit'</span> - <span class="k">else</span><span class="p">:</span> - <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="s1">'metadata_xml_deposit can only be called with options test or deposit'</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - - <span class="n">params</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'operation'</span><span class="p">:</span> <span class="s1">'doMDUpload'</span><span class="p">,</span> - <span class="s1">'login_id'</span><span class="p">:</span> <span class="n">settings</span><span class="o">.</span><span class="n">CROSSREF_LOGIN_ID</span><span class="p">,</span> - <span class="s1">'login_passwd'</span><span class="p">:</span> <span class="n">settings</span><span class="o">.</span><span class="n">CROSSREF_LOGIN_PASSWORD</span><span class="p">,</span> - <span class="p">}</span> - <span class="n">files</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'fname'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'metadata.xml'</span><span class="p">,</span> <span class="n">publication</span><span class="o">.</span><span class="n">metadata_xml</span><span class="p">,</span> <span class="s1">'multipart/form-data'</span><span class="p">)}</span> - <span class="n">r</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> - <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,</span> - <span class="n">files</span><span class="o">=</span><span class="n">files</span><span class="p">,</span> - <span class="p">)</span> - <span class="n">response_headers</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">headers</span> - <span class="n">response_text</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">text</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'option'</span><span class="p">:</span> <span class="n">option</span><span class="p">,</span> - <span class="s1">'publication'</span><span class="p">:</span> <span class="n">publication</span><span class="p">,</span> - <span class="s1">'response_headers'</span><span class="p">:</span> <span class="n">response_headers</span><span class="p">,</span> - <span class="s1">'response_text'</span><span class="p">:</span> <span class="n">response_text</span><span class="p">,</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/metadata_xml_deposit.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_publish_accepted_submission'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">harvest_citedby_links</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">doi_string</span><span class="p">):</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="n">doi_string</span><span class="o">=</span><span class="n">doi_string</span><span class="p">)</span> - <span class="c1"># create a doi_batch_id</span> - <span class="n">salt</span> <span class="o">=</span> <span class="s2">""</span> - <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span> - <span class="n">salt</span> <span class="o">=</span> <span class="n">salt</span> <span class="o">+</span> <span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">ascii_letters</span><span class="p">)</span> - <span class="n">salt</span> <span class="o">=</span> <span class="n">salt</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">'utf8'</span><span class="p">)</span> - <span class="n">idsalt</span> <span class="o">=</span> <span class="n">publication</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">10</span><span class="p">]</span> - <span class="n">idsalt</span> <span class="o">=</span> <span class="n">idsalt</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">'utf8'</span><span class="p">)</span> - <span class="n">doi_batch_id</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha1</span><span class="p">(</span><span class="n">salt</span><span class="o">+</span><span class="n">idsalt</span><span class="p">)</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span> - <span class="n">query_xml</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<?xml version = "1.0" encoding="UTF-8"?>'</span> - <span class="s1">'<query_batch version="2.0" xmlns = "http://www.crossref.org/qschema/2.0"'</span> - <span class="s1">'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'</span> - <span class="s1">'xsi:schemaLocation="http://www.crossref.org/qschema/2.0 '</span> - <span class="s1">'http://www.crossref.org/qschema/crossref_query_input2.0.xsd">'</span> - <span class="s1">'<head>'</span> - <span class="s1">'<email_address>admin@scipost.org</email_address>'</span> - <span class="s1">'<doi_batch_id>'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">doi_batch_id</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</doi_batch_id>'</span> - <span class="s1">'</head>'</span> - <span class="s1">'<body>'</span> - <span class="s1">'<fl_query alert="false">'</span> - <span class="s1">'<doi>'</span> <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span> <span class="o">+</span> <span class="s1">'</doi>'</span> - <span class="s1">'</fl_query>'</span> - <span class="s1">'</body>'</span> - <span class="s1">'</query_batch>'</span><span class="p">)</span> - <span class="n">url</span> <span class="o">=</span> <span class="s1">'http://doi.crossref.org/servlet/getForwardLinks'</span> - <span class="n">params</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'usr'</span><span class="p">:</span> <span class="n">settings</span><span class="o">.</span><span class="n">CROSSREF_LOGIN_ID</span><span class="p">,</span> - <span class="s1">'pwd'</span><span class="p">:</span> <span class="n">settings</span><span class="o">.</span><span class="n">CROSSREF_LOGIN_PASSWORD</span><span class="p">,</span> - <span class="s1">'qdata'</span><span class="p">:</span> <span class="n">query_xml</span><span class="p">,</span> - <span class="s1">'doi'</span><span class="p">:</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_string</span><span class="p">,}</span> - <span class="n">r</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">,)</span> - <span class="n">response_headers</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">headers</span> - <span class="c1">#response_text = bytes(r.text, 'utf-8').decode('unicode_escape')</span> - <span class="n">response_text</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">text</span> - <span class="n">response_deserialized</span> <span class="o">=</span> <span class="n">ET</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> - <span class="n">prefix</span> <span class="o">=</span> <span class="s1">'{http://www.crossref.org/qrschema/2.0}'</span> - <span class="n">citations</span> <span class="o">=</span> <span class="p">[]</span> - <span class="k">for</span> <span class="n">link</span> <span class="ow">in</span> <span class="n">response_deserialized</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'forward_link'</span><span class="p">):</span> - <span class="n">doi</span> <span class="o">=</span> <span class="n">link</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'journal_cite'</span><span class="p">)</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'doi'</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> - <span class="n">article_title</span> <span class="o">=</span> <span class="n">link</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'journal_cite'</span><span class="p">)</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'article_title'</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> - <span class="n">journal_abbreviation</span> <span class="o">=</span> <span class="n">link</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'journal_cite'</span><span class="p">)</span><span class="o">.</span><span class="n">find</span><span class="p">(</span> - <span class="n">prefix</span> <span class="o">+</span> <span class="s1">'journal_abbreviation'</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> - <span class="n">volume</span> <span class="o">=</span> <span class="n">link</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'journal_cite'</span><span class="p">)</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'volume'</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">first_page</span> <span class="o">=</span> <span class="n">link</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'journal_cite'</span><span class="p">)</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'first_page'</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> - <span class="k">except</span><span class="p">:</span> - <span class="n">first_page</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">item_number</span> <span class="o">=</span> <span class="n">link</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'journal_cite'</span><span class="p">)</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'item_number'</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> - <span class="k">except</span><span class="p">:</span> - <span class="n">item_number</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">link</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'journal_cite'</span><span class="p">)</span><span class="o">.</span><span class="n">find</span><span class="p">(</span> - <span class="n">prefix</span> <span class="o">+</span> <span class="s1">'contributors'</span><span class="p">)</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'contributor'</span><span class="p">):</span> - <span class="k">if</span> <span class="n">author</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'sequence'</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'first'</span><span class="p">:</span> - <span class="n">first_author_given_name</span> <span class="o">=</span> <span class="n">author</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'given_name'</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> - <span class="n">first_author_surname</span> <span class="o">=</span> <span class="n">author</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'surname'</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">multiauthors</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">year</span> <span class="o">=</span> <span class="n">link</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'journal_cite'</span><span class="p">)</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'year'</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> - <span class="n">citations</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s1">'doi'</span><span class="p">:</span> <span class="n">doi</span><span class="p">,</span> - <span class="s1">'article_title'</span><span class="p">:</span> <span class="n">article_title</span><span class="p">,</span> - <span class="s1">'journal_abbreviation'</span><span class="p">:</span> <span class="n">journal_abbreviation</span><span class="p">,</span> - <span class="s1">'first_author_given_name'</span><span class="p">:</span> <span class="n">first_author_given_name</span><span class="p">,</span> - <span class="s1">'first_author_surname'</span><span class="p">:</span> <span class="n">first_author_surname</span><span class="p">,</span> - <span class="s1">'multiauthors'</span><span class="p">:</span> <span class="n">multiauthors</span><span class="p">,</span> - <span class="s1">'volume'</span><span class="p">:</span> <span class="n">volume</span><span class="p">,</span> - <span class="s1">'first_page'</span><span class="p">:</span> <span class="n">first_page</span><span class="p">,</span> - <span class="s1">'item_number'</span><span class="p">:</span> <span class="n">item_number</span><span class="p">,</span> - <span class="s1">'year'</span><span class="p">:</span> <span class="n">year</span><span class="p">,})</span> - <span class="n">publication</span><span class="o">.</span><span class="n">citedby</span> <span class="o">=</span> <span class="n">citations</span> - <span class="n">publication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'publication'</span><span class="p">:</span> <span class="n">publication</span><span class="p">,</span> - <span class="s1">'response_headers'</span><span class="p">:</span> <span class="n">response_headers</span><span class="p">,</span> - <span class="s1">'response_text'</span><span class="p">:</span> <span class="n">response_text</span><span class="p">,</span> - <span class="s1">'response_deserialized'</span><span class="p">:</span> <span class="n">response_deserialized</span><span class="p">,</span> - <span class="s1">'citations'</span><span class="p">:</span> <span class="n">citations</span><span class="p">,</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/harvest_citedby_links.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - - -<span class="c1">###########</span> -<span class="c1"># Viewing #</span> -<span class="c1">###########</span> - -<span class="k">def</span> <span class="nf">publication_detail</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">doi_string</span><span class="p">):</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="n">doi_string</span><span class="o">=</span><span class="n">doi_string</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'publication'</span><span class="p">:</span> <span class="n">publication</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/publication_detail.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">publication_pdf</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">doi_string</span><span class="p">):</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="n">doi_string</span><span class="o">=</span><span class="n">doi_string</span><span class="p">)</span> - <span class="n">pdf</span> <span class="o">=</span> <span class="n">File</span><span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">pdf_file</span><span class="p">)</span> - <span class="n">response</span> <span class="o">=</span> <span class="n">HttpResponse</span><span class="p">(</span><span class="n">pdf</span><span class="p">,</span> <span class="n">content_type</span><span class="o">=</span><span class="s1">'application/pdf'</span><span class="p">)</span> - <span class="n">response</span><span class="p">[</span><span class="s1">'Content-Disposition'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'filename='</span> - <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_label</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">'.'</span><span class="p">,</span> <span class="s1">'_'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'.pdf'</span><span class="p">)</span> - <span class="k">return</span> <span class="n">response</span> - - -<span class="k">def</span> <span class="nf">publication_detail_from_doi_label</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">doi_label</span><span class="p">):</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="n">doi_label</span><span class="o">=</span><span class="n">doi_label</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'publication'</span><span class="p">:</span> <span class="n">publication</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'journals/publication_detail.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">publication_pdf_from_doi_label</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">doi_label</span><span class="p">):</span> - <span class="n">publication</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Publication</span><span class="p">,</span> <span class="n">doi_label</span><span class="o">=</span><span class="n">doi_label</span><span class="p">)</span> - <span class="n">pdf</span> <span class="o">=</span> <span class="n">File</span><span class="p">(</span><span class="n">publication</span><span class="o">.</span><span class="n">pdf_file</span><span class="p">)</span> - <span class="n">response</span> <span class="o">=</span> <span class="n">HttpResponse</span><span class="p">(</span><span class="n">pdf</span><span class="p">,</span> <span class="n">content_type</span><span class="o">=</span><span class="s1">'application/pdf'</span><span class="p">)</span> - <span class="n">response</span><span class="p">[</span><span class="s1">'Content-Disposition'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'filename='</span> - <span class="o">+</span> <span class="n">publication</span><span class="o">.</span><span class="n">doi_label</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">'.'</span><span class="p">,</span> <span class="s1">'_'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'.pdf'</span><span class="p">)</span> - <span class="k">return</span> <span class="n">response</span> -</pre></div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_modules/scipost/models.html b/docs/_build/html/_modules/scipost/models.html deleted file mode 100644 index 8b24fabcf8242ceebcc02bbdead3fc2f36e2dc53..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/scipost/models.html +++ /dev/null @@ -1,1120 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>scipost.models — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../../genindex.html"/> - <link rel="search" title="Search" href="../../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../../index.html"/> - <link rel="up" title="Module code" href="../index.html"/> - - - <script src="../../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../../index.html">Docs</a> »</li> - - <li><a href="../index.html">Module code</a> »</li> - - <li>scipost.models</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>Source code for scipost.models</h1><div class="highlight"><pre> -<span></span><span class="kn">import</span> <span class="nn">datetime</span> - -<span class="kn">from</span> <span class="nn">django</span> <span class="k">import</span> <span class="n">forms</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span><span class="p">,</span> <span class="n">Group</span> -<span class="kn">from</span> <span class="nn">django.contrib.postgres.fields</span> <span class="k">import</span> <span class="n">ArrayField</span><span class="p">,</span> <span class="n">JSONField</span> -<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">models</span> -<span class="kn">from</span> <span class="nn">django.template</span> <span class="k">import</span> <span class="n">Template</span><span class="p">,</span> <span class="n">Context</span> -<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span> -<span class="kn">from</span> <span class="nn">django.utils.safestring</span> <span class="k">import</span> <span class="n">mark_safe</span> - -<span class="kn">from</span> <span class="nn">django_countries.fields</span> <span class="k">import</span> <span class="n">CountryField</span> - -<span class="kn">from</span> <span class="nn">.models</span> <span class="k">import</span> <span class="o">*</span> - - -<span class="n">SCIPOST_DISCIPLINES</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'physics'</span><span class="p">,</span> <span class="s1">'Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'astrophysics'</span><span class="p">,</span> <span class="s1">'Astrophysics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'mathematics'</span><span class="p">,</span> <span class="s1">'Mathematics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'computerscience'</span><span class="p">,</span> <span class="s1">'Computer Science'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">disciplines_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SCIPOST_DISCIPLINES</span><span class="p">)</span> - -<span class="n">SCIPOST_SUBJECT_AREAS</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'Physics'</span><span class="p">,</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'Phys:AE'</span><span class="p">,</span> <span class="s1">'Atomic, Molecular and Optical Physics - Experiment'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:AT'</span><span class="p">,</span> <span class="s1">'Atomic, Molecular and Optical Physics - Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:BI'</span><span class="p">,</span> <span class="s1">'Biophysics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:CE'</span><span class="p">,</span> <span class="s1">'Condensed Matter Physics - Experiment'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:CT'</span><span class="p">,</span> <span class="s1">'Condensed Matter Physics - Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:FD'</span><span class="p">,</span> <span class="s1">'Fluid Dynamics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:GR'</span><span class="p">,</span> <span class="s1">'Gravitation, Cosmology and Astroparticle Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:HE'</span><span class="p">,</span> <span class="s1">'High-Energy Physics - Experiment'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:HT'</span><span class="p">,</span> <span class="s1">'High-Energy Physics- Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:HP'</span><span class="p">,</span> <span class="s1">'High-Energy Physics - Phenomenology'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:MP'</span><span class="p">,</span> <span class="s1">'Mathematical Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:NE'</span><span class="p">,</span> <span class="s1">'Nuclear Physics - Experiment'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:NT'</span><span class="p">,</span> <span class="s1">'Nuclear Physics - Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:QP'</span><span class="p">,</span> <span class="s1">'Quantum Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Phys:SM'</span><span class="p">,</span> <span class="s1">'Statistical and Soft Matter Physics'</span><span class="p">),</span> - <span class="p">)</span> - <span class="p">),</span> - <span class="p">(</span><span class="s1">'Astrophysics'</span><span class="p">,</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'Astro:GA'</span><span class="p">,</span> <span class="s1">'Astrophysics of Galaxies'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Astro:CO'</span><span class="p">,</span> <span class="s1">'Cosmology and Nongalactic Astrophysics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Astro:EP'</span><span class="p">,</span> <span class="s1">'Earth and Planetary Astrophysics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Astro:HE'</span><span class="p">,</span> <span class="s1">'High Energy Astrophysical Phenomena'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Astro:IM'</span><span class="p">,</span> <span class="s1">'Instrumentation and Methods for Astrophysics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Astro:SR'</span><span class="p">,</span> <span class="s1">'Solar and Stellar Astrophysics'</span><span class="p">),</span> - <span class="p">)</span> - <span class="p">),</span> - <span class="p">(</span><span class="s1">'Mathematics'</span><span class="p">,</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'Math:AG'</span><span class="p">,</span> <span class="s1">'Algebraic Geometry'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:AT'</span><span class="p">,</span> <span class="s1">'Algebraic Topology'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:AP'</span><span class="p">,</span> <span class="s1">'Analysis of PDEs'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:CT'</span><span class="p">,</span> <span class="s1">'Category Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:CA'</span><span class="p">,</span> <span class="s1">'Classical Analysis and ODEs'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:CO'</span><span class="p">,</span> <span class="s1">'Combinatorics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:AC'</span><span class="p">,</span> <span class="s1">'Commutative Algebra'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:CV'</span><span class="p">,</span> <span class="s1">'Complex Variables'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:DG'</span><span class="p">,</span> <span class="s1">'Differential Geometry'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:DS'</span><span class="p">,</span> <span class="s1">'Dynamical Systems'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:FA'</span><span class="p">,</span> <span class="s1">'Functional Analysis'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:GM'</span><span class="p">,</span> <span class="s1">'General Mathematics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:GN'</span><span class="p">,</span> <span class="s1">'General Topology'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:GT'</span><span class="p">,</span> <span class="s1">'Geometric Topology'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:GR'</span><span class="p">,</span> <span class="s1">'Group Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:HO'</span><span class="p">,</span> <span class="s1">'History and Overview'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:IT'</span><span class="p">,</span> <span class="s1">'Information Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:KT'</span><span class="p">,</span> <span class="s1">'K-Theory and Homology'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:LO'</span><span class="p">,</span> <span class="s1">'Logic'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:MP'</span><span class="p">,</span> <span class="s1">'Mathematical Physics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:MG'</span><span class="p">,</span> <span class="s1">'Metric Geometry'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:NT'</span><span class="p">,</span> <span class="s1">'Number Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:NA'</span><span class="p">,</span> <span class="s1">'Numerical Analysis'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:OA'</span><span class="p">,</span> <span class="s1">'Operator Algebras'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:OC'</span><span class="p">,</span> <span class="s1">'Optimization and Control'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:PR'</span><span class="p">,</span> <span class="s1">'Probability'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:QA'</span><span class="p">,</span> <span class="s1">'Quantum Algebra'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:RT'</span><span class="p">,</span> <span class="s1">'Representation Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:RA'</span><span class="p">,</span> <span class="s1">'Rings and Algebras'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:SP'</span><span class="p">,</span> <span class="s1">'Spectral Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:ST'</span><span class="p">,</span> <span class="s1">'Statistics Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Math:SG'</span><span class="p">,</span> <span class="s1">'Symplectic Geometry'</span><span class="p">),</span> - <span class="p">)</span> - <span class="p">),</span> - <span class="p">(</span><span class="s1">'Computer Science'</span><span class="p">,</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'Comp:AI'</span><span class="p">,</span> <span class="s1">'Artificial Intelligence'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:CC'</span><span class="p">,</span> <span class="s1">'Computational Complexity'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:CE'</span><span class="p">,</span> <span class="s1">'Computational Engineering, Finance, and Science'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:CG'</span><span class="p">,</span> <span class="s1">'Computational Geometry'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:GT'</span><span class="p">,</span> <span class="s1">'Computer Science and Game Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:CV'</span><span class="p">,</span> <span class="s1">'Computer Vision and Pattern Recognition'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:CY'</span><span class="p">,</span> <span class="s1">'Computers and Society'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:CR'</span><span class="p">,</span> <span class="s1">'Cryptography and Security'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:DS'</span><span class="p">,</span> <span class="s1">'Data Structures and Algorithms'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:DB'</span><span class="p">,</span> <span class="s1">'Databases'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:DL'</span><span class="p">,</span> <span class="s1">'Digital Libraries'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:DM'</span><span class="p">,</span> <span class="s1">'Discrete Mathematics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:DC'</span><span class="p">,</span> <span class="s1">'Distributed, Parallel, and Cluster Computing'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:ET'</span><span class="p">,</span> <span class="s1">'Emerging Technologies'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:FL'</span><span class="p">,</span> <span class="s1">'Formal Languages and Automata Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:GL'</span><span class="p">,</span> <span class="s1">'General Literature'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:GR'</span><span class="p">,</span> <span class="s1">'Graphics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:AR'</span><span class="p">,</span> <span class="s1">'Hardware Architecture'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:HC'</span><span class="p">,</span> <span class="s1">'Human-Computer Interaction'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:IR'</span><span class="p">,</span> <span class="s1">'Information Retrieval'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:IT'</span><span class="p">,</span> <span class="s1">'Information Theory'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:LG'</span><span class="p">,</span> <span class="s1">'Learning'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:LO'</span><span class="p">,</span> <span class="s1">'Logic in Computer Science'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:MS'</span><span class="p">,</span> <span class="s1">'Mathematical Software'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:MA'</span><span class="p">,</span> <span class="s1">'Multiagent Systems'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:MM'</span><span class="p">,</span> <span class="s1">'Multimedia'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:NI'</span><span class="p">,</span> <span class="s1">'Networking and Internet Architecture'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:NE'</span><span class="p">,</span> <span class="s1">'Neural and Evolutionary Computing'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:NA'</span><span class="p">,</span> <span class="s1">'Numerical Analysis'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:OS'</span><span class="p">,</span> <span class="s1">'Operating Systems'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:OH'</span><span class="p">,</span> <span class="s1">'Other Computer Science'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:PF'</span><span class="p">,</span> <span class="s1">'Performance'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:PL'</span><span class="p">,</span> <span class="s1">'Programming Languages'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:RO'</span><span class="p">,</span> <span class="s1">'Robotics'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:SI'</span><span class="p">,</span> <span class="s1">'Social and Information Networks'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:SE'</span><span class="p">,</span> <span class="s1">'Software Engineering'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:SD'</span><span class="p">,</span> <span class="s1">'Sound'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:SC'</span><span class="p">,</span> <span class="s1">'Symbolic Computation'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Comp:SY'</span><span class="p">,</span> <span class="s1">'Systems and Control'</span><span class="p">),</span> - <span class="p">)</span> - <span class="p">),</span> -<span class="p">)</span> -<span class="n">subject_areas_raw_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">)</span> -<span class="c1"># We want a dict of the form {'Phys:AT': 'Atomic...', ...}</span> -<span class="n">subject_areas_dict</span> <span class="o">=</span> <span class="p">{}</span> -<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">subject_areas_raw_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> - <span class="n">subject_areas_dict</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="n">subject_areas_raw_dict</span><span class="p">[</span><span class="n">k</span><span class="p">]))</span> - - -<div class="viewcode-block" id="ChoiceArrayField"><a class="viewcode-back" href="../../modules/models.html#scipost.models.ChoiceArrayField">[docs]</a><span class="k">class</span> <span class="nc">ChoiceArrayField</span><span class="p">(</span><span class="n">ArrayField</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> A field that allows us to store an array of choices.</span> -<span class="sd"> Uses Django 1.9's postgres ArrayField</span> -<span class="sd"> and a MultipleChoiceField for its formfield.</span> -<span class="sd"> """</span> - - <span class="k">def</span> <span class="nf">formfield</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> - <span class="n">defaults</span> <span class="o">=</span> <span class="p">{</span> - <span class="s1">'form_class'</span><span class="p">:</span> <span class="n">forms</span><span class="o">.</span><span class="n">MultipleChoiceField</span><span class="p">,</span> - <span class="s1">'widget'</span><span class="p">:</span> <span class="n">forms</span><span class="o">.</span><span class="n">CheckboxSelectMultiple</span><span class="p">,</span> - <span class="s1">'choices'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">base_field</span><span class="o">.</span><span class="n">choices</span><span class="p">,</span> - <span class="p">}</span> - <span class="n">defaults</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">kwargs</span><span class="p">)</span> - <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">ArrayField</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">formfield</span><span class="p">(</span><span class="o">**</span><span class="n">defaults</span><span class="p">)</span></div> - - -<span class="n">CONTRIBUTOR_STATUS</span> <span class="o">=</span> <span class="p">(</span> - <span class="c1"># status determine the type of Contributor:</span> - <span class="c1"># 0: newly registered (unverified; not allowed to submit, comment or vote)</span> - <span class="c1"># 1: contributor has been vetted through</span> - <span class="c1">#</span> - <span class="c1"># Negative status denotes rejected requests or:</span> - <span class="c1"># -1: not a professional scientist (>= PhD student in known university)</span> - <span class="c1"># -2: other account already exists for this person</span> - <span class="c1"># -3: barred from SciPost (abusive behaviour)</span> - <span class="c1"># -4: disabled account (deceased)</span> - <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'newly registered'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'normal user'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'not a professional scientist'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'other account already exists'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'barred from SciPost'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">4</span><span class="p">,</span> <span class="s1">'account disabled'</span><span class="p">),</span> - <span class="p">)</span> - -<span class="n">TITLE_CHOICES</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'PR'</span><span class="p">,</span> <span class="s1">'Prof.'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'DR'</span><span class="p">,</span> <span class="s1">'Dr'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'MR'</span><span class="p">,</span> <span class="s1">'Mr'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'MRS'</span><span class="p">,</span> <span class="s1">'Mrs'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">title_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">TITLE_CHOICES</span><span class="p">)</span> - - -<div class="viewcode-block" id="Contributor"><a class="viewcode-back" href="../../modules/models.html#scipost.models.Contributor">[docs]</a><span class="k">class</span> <span class="nc">Contributor</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> All users of SciPost are Contributors.</span> -<span class="sd"> Permissions determine the sub-types.</span> -<span class="sd"> username, password, email, first_name and last_name are inherited from User.</span> -<span class="sd"> """</span> - <span class="n">user</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">OneToOneField</span><span class="p">(</span><span class="n">User</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">invitation_key</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">activation_key</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> - <span class="n">key_expires</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">CONTRIBUTOR_STATUS</span><span class="p">)</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">TITLE_CHOICES</span><span class="p">)</span> - <span class="n">discipline</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span> - <span class="n">default</span><span class="o">=</span><span class="s1">'physics'</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'Main discipline'</span><span class="p">)</span> - <span class="n">expertises</span> <span class="o">=</span> <span class="n">ChoiceArrayField</span><span class="p">(</span> - <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">),</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">orcid_id</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s2">"ORCID id"</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">country_of_employment</span> <span class="o">=</span> <span class="n">CountryField</span><span class="p">()</span> - <span class="n">affiliation</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'affiliation'</span><span class="p">)</span> - <span class="n">address</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s2">"address"</span><span class="p">,</span> - <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">personalwebpage</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">URLField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'personal web page'</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">vetted_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'self'</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s2">"contrib_vetted_by"</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">accepts_SciPost_emails</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span> - <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s2">"I accept to receive SciPost emails"</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">', '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> - - - <span class="k">def</span> <span class="nf">is_currently_available</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">unav_periods</span> <span class="o">=</span> <span class="n">UnavailabilityPeriod</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">contributor</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> - <span class="n">available</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">today</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">today</span><span class="p">()</span> - <span class="k">for</span> <span class="n">unav</span> <span class="ow">in</span> <span class="n">unav_periods</span><span class="p">:</span> - <span class="k">if</span> <span class="n">unav</span><span class="o">.</span><span class="n">start</span> <span class="o"><</span> <span class="n">today</span> <span class="ow">and</span> <span class="n">unav</span><span class="o">.</span><span class="n">end</span> <span class="o">></span> <span class="n">today</span><span class="p">:</span> - <span class="n">available</span> <span class="o">=</span> <span class="kc">False</span> - <span class="k">return</span> <span class="n">available</span> - - - <span class="k">def</span> <span class="nf">private_info_as_table</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="s1">'''</span> -<span class="s1"> <table></span> -<span class="s1"> <tr><td>Title: </td><td>&nbsp;</td><td>{{ title }}</td></tr></span> -<span class="s1"> <tr><td>First name: </td><td>&nbsp;</td><td>{{ first_name }}</td></tr></span> -<span class="s1"> <tr><td>Last name: </td><td>&nbsp;</td><td>{{ last_name }}</td></tr></span> -<span class="s1"> <tr><td>Email: </td><td>&nbsp;</td><td>{{ email }}</td></tr></span> -<span class="s1"> <tr><td>ORCID id: </td><td>&nbsp;</td><td>{{ orcid_id }}</td></tr></span> -<span class="s1"> <tr><td>Country of employment: </td><td>&nbsp;</td></span> -<span class="s1"> <td>{{ country_of_employment }}</td></tr></span> -<span class="s1"> <tr><td>Affiliation: </td><td>&nbsp;</td><td>{{ affiliation }}</td></tr></span> -<span class="s1"> <tr><td>Address: </td><td>&nbsp;</td><td>{{ address }}</td></tr></span> -<span class="s1"> <tr><td>Personal web page: </td><td>&nbsp;</td><td>{{ personalwebpage }}</td></tr></span> -<span class="s1"> <tr><td>Accept SciPost emails: </td><td>&nbsp;</td><td>{{ accepts_SciPost_emails }}</td></tr></span> -<span class="s1"> </table></span> -<span class="s1"> '''</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="n">title_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">],</span> - <span class="s1">'first_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> - <span class="s1">'last_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span> - <span class="s1">'email'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">,</span> - <span class="s1">'orcid_id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">orcid_id</span><span class="p">,</span> - <span class="s1">'country_of_employment'</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">country_of_employment</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> - <span class="s1">'affiliation'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">affiliation</span><span class="p">,</span> - <span class="s1">'address'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> - <span class="s1">'personalwebpage'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">personalwebpage</span><span class="p">,</span> - <span class="s1">'accepts_SciPost_emails'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">accepts_SciPost_emails</span><span class="p">,</span> - <span class="p">})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - -<div class="viewcode-block" id="Contributor.public_info_as_table"><a class="viewcode-back" href="../../modules/models.html#scipost.models.Contributor.public_info_as_table">[docs]</a> <span class="k">def</span> <span class="nf">public_info_as_table</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Prints out all publicly-accessible info as a table.</span> -<span class="sd"> """</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="s1">'''</span> -<span class="s1"> <table></span> -<span class="s1"> <tr><td>Title: </td><td>&nbsp;</td><td>{{ title }}</td></tr></span> -<span class="s1"> <tr><td>First name: </td><td>&nbsp;</td><td>{{ first_name }}</td></tr></span> -<span class="s1"> <tr><td>Last name: </td><td>&nbsp;</td><td>{{ last_name }}</td></tr></span> -<span class="s1"> <tr><td>ORCID id: </td><td>&nbsp;</td><td>{{ orcid_id }}</td></tr></span> -<span class="s1"> <tr><td>Country of employment: </td><td>&nbsp;</td></span> -<span class="s1"> <td>{{ country_of_employment }}</td></tr></span> -<span class="s1"> <tr><td>Affiliation: </td><td>&nbsp;</td><td>{{ affiliation }}</td></tr></span> -<span class="s1"> <tr><td>Personal web page: </td><td>&nbsp;</td><td>{{ personalwebpage }}</td></tr></span> -<span class="s1"> </table></span> -<span class="s1"> '''</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="n">title_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">],</span> - <span class="s1">'first_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> - <span class="s1">'last_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span> - <span class="s1">'email'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">,</span> - <span class="s1">'orcid_id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">orcid_id</span><span class="p">,</span> - <span class="s1">'country_of_employment'</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">country_of_employment</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> - <span class="s1">'affiliation'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">affiliation</span><span class="p">,</span> - <span class="s1">'address'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> - <span class="s1">'personalwebpage'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">personalwebpage</span> - <span class="p">})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - <span class="k">def</span> <span class="nf">discipline_as_string</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="n">disciplines_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">discipline</span><span class="p">]</span> - - <span class="k">def</span> <span class="nf">expertises_as_ul</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<ul>'</span> - <span class="k">for</span> <span class="n">exp</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expertises</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<li>'</span> <span class="o">+</span> <span class="n">subject_areas_dict</span><span class="p">[</span><span class="n">exp</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</li>'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</ul>'</span> - <span class="k">return</span> <span class="n">mark_safe</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">assignments_summary_as_td</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">assignments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">editorialassignment_set</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> - <span class="n">nr_ongoing</span> <span class="o">=</span> <span class="n">assignments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">accepted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">completed</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_last_12mo</span> <span class="o">=</span> <span class="n">assignments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">date_created__gt</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">-</span> <span class="n">timezone</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">365</span><span class="p">))</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_accepted</span> <span class="o">=</span> <span class="n">assignments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">accepted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_accepted_last_12mo</span> <span class="o">=</span> <span class="n">assignments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">accepted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">date_created__gt</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">-</span> <span class="n">timezone</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">365</span><span class="p">))</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_refused</span> <span class="o">=</span> <span class="n">assignments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">accepted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_refused_last_12mo</span> <span class="o">=</span> <span class="n">assignments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">accepted</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">date_created__gt</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">-</span> <span class="n">timezone</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">365</span><span class="p">))</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_ignored</span> <span class="o">=</span> <span class="n">assignments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">accepted</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_ignored_last_12mo</span> <span class="o">=</span> <span class="n">assignments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">accepted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">date_created__gt</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">-</span> <span class="n">timezone</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">365</span><span class="p">))</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_completed</span> <span class="o">=</span> <span class="n">assignments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">completed</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_completed_last_12mo</span> <span class="o">=</span> <span class="n">assignments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">completed</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">date_created__gt</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">-</span> <span class="n">timezone</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">365</span><span class="p">))</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span> - <span class="s1">'nr_ongoing'</span><span class="p">:</span> <span class="n">nr_ongoing</span><span class="p">,</span> - <span class="s1">'nr_total'</span><span class="p">:</span> <span class="n">assignments</span><span class="o">.</span><span class="n">count</span><span class="p">(),</span> - <span class="s1">'nr_last_12mo'</span><span class="p">:</span> <span class="n">nr_last_12mo</span><span class="p">,</span> - <span class="s1">'nr_accepted'</span><span class="p">:</span> <span class="n">nr_accepted</span><span class="p">,</span> - <span class="s1">'nr_accepted_last_12mo'</span><span class="p">:</span> <span class="n">nr_accepted_last_12mo</span><span class="p">,</span> - <span class="s1">'nr_refused'</span><span class="p">:</span> <span class="n">nr_refused</span><span class="p">,</span> - <span class="s1">'nr_refused_last_12mo'</span><span class="p">:</span> <span class="n">nr_refused_last_12mo</span><span class="p">,</span> - <span class="s1">'nr_ignored'</span><span class="p">:</span> <span class="n">nr_ignored</span><span class="p">,</span> - <span class="s1">'nr_ignored_last_12mo'</span><span class="p">:</span> <span class="n">nr_ignored_last_12mo</span><span class="p">,</span> - <span class="s1">'nr_completed'</span><span class="p">:</span> <span class="n">nr_completed</span><span class="p">,</span> - <span class="s1">'nr_completed_last_12mo'</span><span class="p">:</span> <span class="n">nr_completed_last_12mo</span><span class="p">,</span> - <span class="p">})</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<td>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">expertises</span><span class="p">:</span> - <span class="k">for</span> <span class="n">expertise</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expertises</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="n">subject_areas_dict</span><span class="p">[</span><span class="n">expertise</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'<br/>'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'</td>'</span> - <span class="s1">'<td>{{ nr_ongoing }}</td>'</span> - <span class="s1">'<td>{{ nr_last_12mo }} / {{ nr_total }}</td>'</span> - <span class="s1">'<td>{{ nr_accepted_last_12mo }} / {{ nr_accepted }}</td>'</span> - <span class="s1">'<td>{{ nr_refused_last_12mo }} / {{ nr_refused }}</td>'</span> - <span class="s1">'<td>{{ nr_ignored_last_12mo }} / {{ nr_ignored }}</td>'</span> - <span class="s1">'<td>{{ nr_completed_last_12mo }} / {{ nr_completed }}</td></span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - -<div class="viewcode-block" id="UnavailabilityPeriod"><a class="viewcode-back" href="../../modules/models.html#scipost.models.UnavailabilityPeriod">[docs]</a><span class="k">class</span> <span class="nc">UnavailabilityPeriod</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">start</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">()</span> - <span class="n">end</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">()</span></div> - - -<div class="viewcode-block" id="Remark"><a class="viewcode-back" href="../../modules/models.html#scipost.models.Remark">[docs]</a><span class="k">class</span> <span class="nc">Remark</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'submissions.EICRecommendation'</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">()</span> - <span class="n">remark</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="n">title_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">' on '</span> - <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> - - <span class="k">def</span> <span class="nf">as_li</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<li>{{ by }}<p>{{ remark }}</p>'</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'by'</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span> - <span class="s1">'remark'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">remark</span><span class="p">})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - -<span class="c1">##################</span> -<span class="c1">## Invitations ###</span> -<span class="c1">##################</span> - -<span class="n">INVITATION_TYPE</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'F'</span><span class="p">,</span> <span class="s1">'Editorial Fellow'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'C'</span><span class="p">,</span> <span class="s1">'Contributor'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'R'</span><span class="p">,</span> <span class="s1">'Refereeing'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'ci'</span><span class="p">,</span> <span class="s1">'cited in submission'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'cp'</span><span class="p">,</span> <span class="s1">'cited in publication'</span><span class="p">),</span> - <span class="p">)</span> - -<span class="n">INVITATION_STYLE</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'F'</span><span class="p">,</span> <span class="s1">'formal'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'P'</span><span class="p">,</span> <span class="s1">'personal'</span><span class="p">),</span> - <span class="p">)</span> - -<div class="viewcode-block" id="RegistrationInvitation"><a class="viewcode-back" href="../../modules/models.html#scipost.models.RegistrationInvitation">[docs]</a><span class="k">class</span> <span class="nc">RegistrationInvitation</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Invitation to particular persons for registration</span> -<span class="sd"> """</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">TITLE_CHOICES</span><span class="p">)</span> - <span class="n">first_name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> - <span class="n">last_name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> - <span class="n">email</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">EmailField</span><span class="p">()</span> - <span class="n">invitation_type</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">INVITATION_TYPE</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'C'</span><span class="p">)</span> - <span class="n">cited_in_submission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'submissions.Submission'</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">cited_in_publication</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'journals.Publication'</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">message_style</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">INVITATION_STYLE</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'F'</span><span class="p">)</span> - <span class="n">personal_message</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">invitation_key</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> - <span class="n">key_expires</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">date_sent</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">invited_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">nr_reminders</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> - <span class="n">date_last_reminded</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">responded</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">declined</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">invitation_type</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_name</span> - <span class="o">+</span> <span class="s1">' on '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_sent</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span></div> - - - -<span class="n">AUTHORSHIP_CLAIM_STATUS</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'accepted'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'not yet vetted (pending)'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'rejected'</span><span class="p">),</span> -<span class="p">)</span> - -<div class="viewcode-block" id="AuthorshipClaim"><a class="viewcode-back" href="../../modules/models.html#scipost.models.AuthorshipClaim">[docs]</a><span class="k">class</span> <span class="nc">AuthorshipClaim</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">claimant</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'claimant'</span><span class="p">)</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'submissions.Submission'</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">commentary</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'commentaries.Commentary'</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">thesislink</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'theses.ThesisLink'</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">vetted_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">AUTHORSHIP_CLAIM_STATUS</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span></div> - - - -<span class="c1">#######################</span> -<span class="c1">### Assessments objects</span> -<span class="c1">#######################</span> - - -<span class="c1">### Assessments</span> - -<span class="c1">#ASSESSMENT_CHOICES = (</span> -<span class="c1"># (101, '-'), # Only values between 0 and 100 are kept, anything outside limits is discarded.</span> -<span class="c1"># (100, 'top'), (80, 'high'), (60, 'good'), (40, 'ok'), (20, 'low'), (0, 'poor')</span> -<span class="c1"># )</span> - -<span class="c1">#class Assessment(models.Model):</span> -<span class="c1"># """</span> -<span class="c1"># Base class for all assessments.</span> -<span class="c1"># """</span> -<span class="c1"># rater = models.ForeignKey(Contributor, on_delete=models.CASCADE)</span> -<span class="c1"># submission = models.ForeignKey('submissions.Submission', on_delete=models.CASCADE, blank=True, null=True)</span> -<span class="c1"># comment = models.ForeignKey('comments.Comment', on_delete=models.CASCADE, blank=True, null=True)</span> -<span class="c1"># relevance = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span> -<span class="c1"># importance = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span> -<span class="c1"># clarity = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span> -<span class="c1"># validity = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span> -<span class="c1"># rigour = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span> -<span class="c1"># originality = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span> -<span class="c1"># significance = models.PositiveSmallIntegerField(choices=ASSESSMENT_CHOICES, default=101)</span> - - -<span class="c1">### Opinions</span> - -<span class="c1">#OPINION_CHOICES = (</span> -<span class="c1"># ('ABS', '-'),</span> -<span class="c1"># ('A', 'agree'),</span> -<span class="c1"># ('N', 'not sure'),</span> -<span class="c1"># ('D', 'disagree'),</span> -<span class="c1">#)</span> -<span class="c1">#opinion_choices_dict = dict(OPINION_CHOICES)</span> - -<span class="c1">#class Opinion(models.Model):</span> -<span class="c1"># rater = models.ForeignKey(Contributor, on_delete=models.CASCADE)</span> -<span class="c1"># comment = models.ForeignKey('comments.Comment', on_delete=models.CASCADE)</span> -<span class="c1"># opinion = models.CharField(max_length=3, choices=OPINION_CHOICES, default='ABS')</span> - - -<span class="c1">### AssessmentAggregates</span> - -<span class="c1">#class AssessmentAggregate(models.Model):</span> -<span class="c1"># """</span> -<span class="c1"># Aggregated assessments for an object.</span> -<span class="c1"># """</span> -<span class="c1"># nr = models.PositiveSmallIntegerField(default=0)</span> -<span class="c1"># nr_relevance_ratings = models.IntegerField(default=0)</span> -<span class="c1"># relevance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span> -<span class="c1"># nr_importance_ratings = models.IntegerField(default=0)</span> -<span class="c1"># importance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span> -<span class="c1"># nr_clarity_ratings = models.IntegerField(default=0)</span> -<span class="c1"># clarity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span> -<span class="c1"># nr_validity_ratings = models.IntegerField(default=0)</span> -<span class="c1"># validity_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span> -<span class="c1"># nr_rigour_ratings = models.IntegerField(default=0)</span> -<span class="c1"># rigour_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span> -<span class="c1"># nr_originality_ratings = models.IntegerField(default=0)</span> -<span class="c1"># originality_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span> -<span class="c1"># nr_significance_ratings = models.IntegerField(default=0)</span> -<span class="c1"># significance_rating = models.DecimalField(default=0, max_digits=3, decimal_places=0)</span> - - -<span class="c1">##########</span> -<span class="c1"># Emails #</span> -<span class="c1">##########</span> - -<span class="c1"># class EmailedTo(models.Model):</span> -<span class="c1"># """</span> -<span class="c1"># An email address used for emailing.</span> -<span class="c1"># An instance is created by a method as send_precooked_email</span> -<span class="c1"># if the chosen message hasn't been sent to this address before.</span> -<span class="c1"># Helps prevent multiple emailing with same message.</span> -<span class="c1"># """</span> -<span class="c1"># email = models.EmailField()</span> - - -<span class="n">SCIPOST_FROM_ADDRESSES</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'Admin'</span><span class="p">,</span> <span class="s1">'SciPost Admin <admin@scipost.org>'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'J.-S. Caux'</span><span class="p">,</span> <span class="s1">'J.-S. Caux <jscaux@scipost.org>'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'J. van Wezel'</span><span class="p">,</span> <span class="s1">'J. van Wezel <vanwezel@scipost.org>'</span><span class="p">),</span> -<span class="p">)</span> -<span class="n">SciPost_from_addresses_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SCIPOST_FROM_ADDRESSES</span><span class="p">)</span> - - -<div class="viewcode-block" id="PrecookedEmail"><a class="viewcode-back" href="../../modules/models.html#scipost.models.PrecookedEmail">[docs]</a><span class="k">class</span> <span class="nc">PrecookedEmail</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Each instance contains an email template in both plain and html formats.</span> -<span class="sd"> Can only be created by Admins.</span> -<span class="sd"> For further use in scipost:send_precooked_email method.</span> -<span class="sd"> """</span> - <span class="n">email_subject</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span> - <span class="n">email_text</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - <span class="n">email_text_html</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - <span class="n">date_created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="c1">#emailed_to = models.ManyToManyField(EmailedTo, blank=True)</span> - <span class="n">emailed_to</span> <span class="o">=</span> <span class="n">ArrayField</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">EmailField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">date_last_used</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">deprecated</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">email_subject</span></div> - - -<span class="c1">#############</span> -<span class="c1"># NewsItems #</span> -<span class="c1">#############</span> - -<div class="viewcode-block" id="NewsItem"><a class="viewcode-back" href="../../modules/models.html#scipost.models.NewsItem">[docs]</a><span class="k">class</span> <span class="nc">NewsItem</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">()</span> - <span class="n">headline</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span> - <span class="n">blurb</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - <span class="n">followup_link</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">URLField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">followup_link_text</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">', '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">headline</span> - -<div class="viewcode-block" id="NewsItem.descriptor_full"><a class="viewcode-back" href="../../modules/models.html#scipost.models.NewsItem.descriptor_full">[docs]</a> <span class="k">def</span> <span class="nf">descriptor_full</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="sd">""" For News page. """</span> - <span class="n">descriptor</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<div class="flex-greybox640">'</span> - <span class="s1">'<h3 class="NewsHeadline">{{ headline }}</h3>'</span> - <span class="s1">'<p>{{ date }}</p>'</span> - <span class="s1">'<p>{{ blurb }}</p>'</span> - <span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'headline'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">headline</span><span class="p">,</span> - <span class="s1">'date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1">'</span><span class="p">),</span> - <span class="s1">'blurb'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">blurb</span><span class="p">,})</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">followup_link</span><span class="p">:</span> - <span class="n">descriptor</span> <span class="o">+=</span> <span class="s1">'<p><a href="{{ followup_link }}">{{ followup_link_text }}</a></p>'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'followup_link'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">followup_link</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'followup_link_text'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">followup_link_text</span> - <span class="n">descriptor</span> <span class="o">+=</span> <span class="s1">'</div>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">descriptor</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - -<div class="viewcode-block" id="NewsItem.descriptor_small"><a class="viewcode-back" href="../../modules/models.html#scipost.models.NewsItem.descriptor_small">[docs]</a> <span class="k">def</span> <span class="nf">descriptor_small</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="sd">""" For index page. """</span> - <span class="n">descriptor</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<h3 class="NewsHeadline">{{ headline }}</h3>'</span> - <span class="s1">'<p>{{ date }}</p>'</span> - <span class="s1">'<p>{{ blurb }}</p>'</span> - <span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'headline'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">headline</span><span class="p">,</span> - <span class="s1">'date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1">'</span><span class="p">),</span> - <span class="s1">'blurb'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">blurb</span><span class="p">,})</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">followup_link</span><span class="p">:</span> - <span class="n">descriptor</span> <span class="o">+=</span> <span class="s1">'<p><a href="{{ followup_link }}">{{ followup_link_text }}</a></p>'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'followup_link'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">followup_link</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'followup_link_text'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">followup_link_text</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">descriptor</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div></div> - - - -<span class="c1">#########</span> -<span class="c1"># Lists #</span> -<span class="c1">#########</span> - -<div class="viewcode-block" id="List"><a class="viewcode-back" href="../../modules/models.html#scipost.models.List">[docs]</a><span class="k">class</span> <span class="nc">List</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> A collection of commentaries, submissions, thesislinks, comments, etc</span> -<span class="sd"> defined by a Contributor, for use in Graphs, etc</span> -<span class="sd"> """</span> - <span class="n">owner</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">private</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">teams_with_access</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="s1">'scipost.Team'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span> - <span class="n">description</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">submissions</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="s1">'submissions.Submission'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'list_submissions'</span><span class="p">)</span> - <span class="n">commentaries</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="s1">'commentaries.Commentary'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'list_commentaries'</span><span class="p">)</span> - <span class="n">thesislinks</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="s1">'theses.ThesisLink'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'list_thesislinks'</span><span class="p">)</span> - <span class="n">comments</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="s1">'comments.Comment'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'list_comments'</span><span class="p">)</span> - - <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span> - <span class="n">default_permissions</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'add'</span><span class="p">,</span> <span class="s1">'view'</span><span class="p">,</span> <span class="s1">'change'</span><span class="p">,</span> <span class="s1">'delete'</span><span class="p">]</span> - - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' (owner: '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">')'</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> - <span class="s1">'first_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> - <span class="s1">'last_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="s1">'''</span> -<span class="s1"> <p>List <a href="{</span><span class="si">% u</span><span class="s1">rl 'scipost:list' list_id=id %}">{{ title }}</span> -<span class="s1"> </a> (owner: {{ first_name }} {{ last_name }})</p></span> -<span class="s1"> '''</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">header_as_li</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> - <span class="s1">'first_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> - <span class="s1">'last_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="s1">'''</span> -<span class="s1"> <li><p>List <a href="{</span><span class="si">% u</span><span class="s1">rl 'scipost:list' list_id=id %}"></span> -<span class="s1"> {{ title }}</a> (owner: {{ first_name }} {{ last_name }})</p></li></span> -<span class="s1"> '''</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">contents</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({})</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<p>'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">+</span> <span class="s1">'</p>'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<hr class="hr6"/>'</span> - <span class="n">emptylist</span> <span class="o">=</span> <span class="kc">True</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">submissions</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span> - <span class="n">emptylist</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<p>Submissions:<ul>'</span> - <span class="k">for</span> <span class="n">submission</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">submissions</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">output</span> <span class="o">+=</span> <span class="n">submission</span><span class="o">.</span><span class="n">simple_header_as_li</span><span class="p">()</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</ul></p>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentaries</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span> - <span class="n">emptylist</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<p>Commentaries:<ul>'</span> - <span class="k">for</span> <span class="n">commentary</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">commentaries</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">output</span> <span class="o">+=</span> <span class="n">commentary</span><span class="o">.</span><span class="n">simple_header_as_li</span><span class="p">()</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</ul></p>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">thesislinks</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span> - <span class="n">emptylist</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<p>Thesislinks:<ul>'</span> - <span class="k">for</span> <span class="n">thesislink</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">thesislinks</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">output</span> <span class="o">+=</span> <span class="n">thesislink</span><span class="o">.</span><span class="n">simple_header_as_li</span><span class="p">()</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</ul></p>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span> - <span class="n">emptylist</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<p>Comments:<ul>'</span> - <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">output</span> <span class="o">+=</span> <span class="n">comment</span><span class="o">.</span><span class="n">simple_header_as_li</span><span class="p">()</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</ul></p>'</span> - <span class="k">if</span> <span class="n">emptylist</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<br/><h3>This List is empty.</h3>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - -<span class="c1">#########</span> -<span class="c1"># Teams #</span> -<span class="c1">#########</span> - -<div class="viewcode-block" id="Team"><a class="viewcode-back" href="../../modules/models.html#scipost.models.Team">[docs]</a><span class="k">class</span> <span class="nc">Team</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Team of Contributors, to enable private collaborations.</span> -<span class="sd"> """</span> - <span class="n">leader</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">members</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'team_members'</span><span class="p">)</span> - <span class="n">name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span> - <span class="n">established</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - - <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span> - <span class="n">default_permissions</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'add'</span><span class="p">,</span> <span class="s1">'view'</span><span class="p">,</span> <span class="s1">'change'</span><span class="p">,</span> <span class="s1">'delete'</span><span class="p">]</span> - - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s1">' (led by '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">leader</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">leader</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">')'</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">header_as_li</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,})</span> - <span class="n">output</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li><p>Team {{ name }}, led by '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">leader</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">leader</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">'</p>'</span><span class="p">)</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<p>Members: '</span> - <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">members</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'(none yet, except for the leader)'</span> - <span class="k">else</span> <span class="p">:</span> - <span class="k">for</span> <span class="n">member</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">members</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">output</span> <span class="o">+=</span> <span class="n">member</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">member</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">', '</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</p></li>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - -<span class="c1">##########</span> -<span class="c1"># Graphs #</span> -<span class="c1">##########</span> - -<div class="viewcode-block" id="Graph"><a class="viewcode-back" href="../../modules/models.html#scipost.models.Graph">[docs]</a><span class="k">class</span> <span class="nc">Graph</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> A Graph is a collection of Nodes with directed arrows,</span> -<span class="sd"> representing e.g. a reading list, exploration path, etc.</span> -<span class="sd"> If private, only the teams in teams_with_access can see/edit it.</span> -<span class="sd"> """</span> - <span class="n">owner</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">private</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">teams_with_access</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="n">Team</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span> - <span class="n">description</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - - <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span> - <span class="n">default_permissions</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'add'</span><span class="p">,</span> <span class="s1">'view'</span><span class="p">,</span> <span class="s1">'change'</span><span class="p">,</span> <span class="s1">'delete'</span><span class="p">]</span> - - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' (owner: '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">')'</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">header_as_li</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> - <span class="s1">'first_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> - <span class="s1">'last_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="s1">'''</span> -<span class="s1"> <li><p>Graph <a href="{</span><span class="si">% u</span><span class="s1">rl 'scipost:graph' graph_id=id %}"></span> -<span class="s1"> {{ title }}</a> (owner: {{ first_name }} {{ last_name }})</li></span> -<span class="s1"> '''</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">contents</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({})</span> - <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">description</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - -<div class="viewcode-block" id="Node"><a class="viewcode-back" href="../../modules/models.html#scipost.models.Node">[docs]</a><span class="k">class</span> <span class="nc">Node</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Node of a graph (directed).</span> -<span class="sd"> Each node is composed of a set of submissions, commentaries, thesislinks.</span> -<span class="sd"> Accessibility rights are set in the Graph ForeignKey.</span> -<span class="sd"> """</span> - <span class="n">graph</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Graph</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> - <span class="n">added_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> - <span class="n">created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">100</span><span class="p">)</span> - <span class="n">description</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">submissions</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="s1">'submissions.Submission'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'node_submissions'</span><span class="p">)</span> - <span class="n">commentaries</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="s1">'commentaries.Commentary'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'node_commentaries'</span><span class="p">)</span> - <span class="n">thesislinks</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span><span class="p">(</span><span class="s1">'theses.ThesisLink'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'node_thesislinks'</span><span class="p">)</span> - - <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span> - <span class="n">default_permissions</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'add'</span><span class="p">,</span> <span class="s1">'view'</span><span class="p">,</span> <span class="s1">'change'</span><span class="p">,</span> <span class="s1">'delete'</span><span class="p">]</span> - - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">20</span><span class="p">]</span> <span class="o">+</span> <span class="s1">': '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">[:</span><span class="mi">20</span><span class="p">]</span> - - <span class="k">def</span> <span class="nf">header_as_p</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'graph_id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">})</span> - <span class="n">output</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<p class="node_p" id="node_id{{ id }}">'</span> - <span class="s1">'<a href="{</span><span class="si">% u</span><span class="s1">rl </span><span class="se">\'</span><span class="s1">scipost:graph</span><span class="se">\'</span><span class="s1"> graph_id=graph_id %}">{{ name }}</a></p>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">contents</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'graph_id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> - <span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">'name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> - <span class="s1">'description'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">description</span><span class="p">})</span> - <span class="n">output</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<div class="node_contents node_id{{ id }}">'</span> - <span class="o">+</span> <span class="s1">'<h3>{{ name }}</h3><p>{{ description }}</p></div>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">contents_small</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<div style="font-size: 60%">'</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">contents</span> <span class="o">+</span> <span class="s1">'</div>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">()</span></div> - - -<span class="n">ARC_LENGTHS</span> <span class="o">=</span> <span class="p">[</span> -<span class="c1"># (4, '4'), (8, '8'), (16, '16'), (32, '32'), (64, '64'), (128, '128')</span> - <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'1'</span><span class="p">),</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'2'</span><span class="p">),</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'3'</span><span class="p">),</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="s1">'4'</span><span class="p">),</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="s1">'5'</span><span class="p">),</span> <span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="s1">'6'</span><span class="p">),</span> <span class="p">(</span><span class="mi">7</span><span class="p">,</span> <span class="s1">'7'</span><span class="p">),</span> <span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="s1">'8'</span><span class="p">),</span> - <span class="p">]</span> - -<div class="viewcode-block" id="Arc"><a class="viewcode-back" href="../../modules/models.html#scipost.models.Arc">[docs]</a><span class="k">class</span> <span class="nc">Arc</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Arc of a graph, linking two nodes.</span> -<span class="sd"> The length is user-adjustable.</span> -<span class="sd"> """</span> - <span class="n">graph</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Graph</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> - <span class="n">added_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> - <span class="n">created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">source</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'source'</span><span class="p">)</span> - <span class="n">target</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'target'</span><span class="p">)</span> - <span class="n">length</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">ARC_LENGTHS</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">32</span><span class="p">)</span></div> - - - -<span class="c1">#######################</span> -<span class="c1"># Affiliation Objects #</span> -<span class="c1">#######################</span> - -<div class="viewcode-block" id="AffiliationObject"><a class="viewcode-back" href="../../modules/models.html#scipost.models.AffiliationObject">[docs]</a><span class="k">class</span> <span class="nc">AffiliationObject</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">country</span> <span class="o">=</span> <span class="n">CountryField</span><span class="p">()</span> - <span class="n">institution</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">128</span><span class="p">)</span> - <span class="n">subunit</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">128</span><span class="p">)</span></div> - - -<span class="c1">#############################</span> -<span class="c1"># Supporting Partners Board #</span> -<span class="c1">#############################</span> - -<span class="n">PARTNER_TYPES</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'Int. Fund. Agency'</span><span class="p">,</span> <span class="s1">'International Funding Agency'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Nat. Fund. Agency'</span><span class="p">,</span> <span class="s1">'National Funding Agency'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Nat. Library'</span><span class="p">,</span> <span class="s1">'National Library'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Univ. Library'</span><span class="p">,</span> <span class="s1">'University Library'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Res. Library'</span><span class="p">,</span> <span class="s1">'Research Library'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Consortium'</span><span class="p">,</span> <span class="s1">'Consortium'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Foundation'</span><span class="p">,</span> <span class="s1">'Foundation'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Individual'</span><span class="p">,</span> <span class="s1">'Individual'</span><span class="p">),</span> -<span class="p">)</span> -<span class="n">partner_types_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">PARTNER_TYPES</span><span class="p">)</span> - -<span class="n">PARTNER_STATUS</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'Prospective'</span><span class="p">,</span> <span class="s1">'Prospective'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Active'</span><span class="p">,</span> <span class="s1">'Active'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Inactive'</span><span class="p">,</span> <span class="s1">'Inactive'</span><span class="p">),</span> -<span class="p">)</span> -<span class="n">partner_status_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">PARTNER_STATUS</span><span class="p">)</span> - - -<div class="viewcode-block" id="SupportingPartner"><a class="viewcode-back" href="../../modules/models.html#scipost.models.SupportingPartner">[docs]</a><span class="k">class</span> <span class="nc">SupportingPartner</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Supporting Partners.</span> -<span class="sd"> """</span> - <span class="n">partner_type</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">PARTNER_TYPES</span><span class="p">)</span> - <span class="n">status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">PARTNER_STATUS</span><span class="p">)</span> - <span class="n">institution</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">256</span><span class="p">)</span> - <span class="n">institution_acronym</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span> - <span class="n">institution_address</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span> - <span class="n">consortium_members</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">contact_person</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">institution_acronym</span> <span class="o">+</span> <span class="s1">' ('</span> <span class="o">+</span> <span class="n">partner_status_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">status</span><span class="p">]</span> <span class="o">+</span> <span class="s1">')'</span></div> - -<span class="n">SPB_MEMBERSHIP_AGREEMENT_STATUS</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'Submitted'</span><span class="p">,</span> <span class="s1">'Request submitted by Partner'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Pending'</span><span class="p">,</span> <span class="s1">'Sent to Partner, response pending'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Signed'</span><span class="p">,</span> <span class="s1">'Signed by Partner'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Honoured'</span><span class="p">,</span> <span class="s1">'Honoured: payment of Partner received'</span><span class="p">),</span> -<span class="p">)</span> -<span class="n">SPB_membership_agreement_status_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SPB_MEMBERSHIP_AGREEMENT_STATUS</span><span class="p">)</span> - -<span class="n">SPB_MEMBERSHIP_DURATION</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">365</span><span class="p">),</span> <span class="s1">'1 year'</span><span class="p">),</span> - <span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">730</span><span class="p">),</span> <span class="s1">'2 years'</span><span class="p">),</span> - <span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1095</span><span class="p">),</span> <span class="s1">'3 years'</span><span class="p">),</span> - <span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1460</span><span class="p">),</span> <span class="s1">'4 years'</span><span class="p">),</span> - <span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1825</span><span class="p">),</span> <span class="s1">'5 years'</span><span class="p">),</span> -<span class="p">)</span> -<span class="n">spb_membership_duration_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SPB_MEMBERSHIP_DURATION</span><span class="p">)</span> - -<div class="viewcode-block" id="SPBMembershipAgreement"><a class="viewcode-back" href="../../modules/models.html#scipost.models.SPBMembershipAgreement">[docs]</a><span class="k">class</span> <span class="nc">SPBMembershipAgreement</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Agreement for membership of the Supporting Partners Board.</span> -<span class="sd"> A new instance is created each time an Agreement is made or renewed.</span> -<span class="sd"> """</span> - <span class="n">partner</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">SupportingPartner</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">16</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SPB_MEMBERSHIP_AGREEMENT_STATUS</span><span class="p">)</span> - <span class="n">date_requested</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">()</span> - <span class="n">start_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">()</span> - <span class="n">duration</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DurationField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">SPB_MEMBERSHIP_DURATION</span><span class="p">)</span> - <span class="n">offered_yearly_contribution</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">partner</span><span class="p">)</span> <span class="o">+</span> - <span class="s1">' ['</span> <span class="o">+</span> <span class="n">spb_membership_duration_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">duration</span><span class="p">]</span> <span class="o">+</span> - <span class="s1">' from '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1">'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">']'</span><span class="p">)</span></div> -</pre></div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_modules/scipost/views.html b/docs/_build/html/_modules/scipost/views.html deleted file mode 100644 index c193238b05712f53316097889d5da40acf5a7738..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/scipost/views.html +++ /dev/null @@ -1,1744 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>scipost.views — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../../genindex.html"/> - <link rel="search" title="Search" href="../../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../../index.html"/> - <link rel="up" title="Module code" href="../index.html"/> - - - <script src="../../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../../index.html">Docs</a> »</li> - - <li><a href="../index.html">Module code</a> »</li> - - <li>scipost.views</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>Source code for scipost.views</h1><div class="highlight"><pre> -<span></span><span class="kn">import</span> <span class="nn">datetime</span> -<span class="kn">import</span> <span class="nn">hashlib</span> -<span class="kn">import</span> <span class="nn">random</span> -<span class="kn">import</span> <span class="nn">re</span> -<span class="kn">import</span> <span class="nn">string</span> - -<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span> -<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span class="k">import</span> <span class="n">get_object_or_404</span><span class="p">,</span> <span class="n">render</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth</span> <span class="k">import</span> <span class="n">authenticate</span><span class="p">,</span> <span class="n">login</span><span class="p">,</span> <span class="n">logout</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.decorators</span> <span class="k">import</span> <span class="n">login_required</span> -<span class="c1">#from django.contrib.auth.decorators import permission_required # Superseded by guardian</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span><span class="p">,</span> <span class="n">Group</span><span class="p">,</span> <span class="n">Permission</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.views</span> <span class="k">import</span> <span class="n">password_reset</span><span class="p">,</span> <span class="n">password_reset_confirm</span> -<span class="kn">from</span> <span class="nn">django.core.exceptions</span> <span class="k">import</span> <span class="n">MultipleObjectsReturned</span><span class="p">,</span> <span class="n">ObjectDoesNotExist</span><span class="p">,</span> <span class="n">PermissionDenied</span> -<span class="kn">from</span> <span class="nn">django.core</span> <span class="k">import</span> <span class="n">mail</span> -<span class="kn">from</span> <span class="nn">django.core.mail</span> <span class="k">import</span> <span class="n">EmailMessage</span><span class="p">,</span> <span class="n">EmailMultiAlternatives</span> -<span class="kn">from</span> <span class="nn">django.core.paginator</span> <span class="k">import</span> <span class="n">Paginator</span><span class="p">,</span> <span class="n">EmptyPage</span><span class="p">,</span> <span class="n">PageNotAnInteger</span> -<span class="kn">from</span> <span class="nn">django.core.urlresolvers</span> <span class="k">import</span> <span class="n">reverse</span> -<span class="kn">from</span> <span class="nn">django.http</span> <span class="k">import</span> <span class="n">HttpResponse</span><span class="p">,</span> <span class="n">HttpResponseRedirect</span><span class="p">,</span> <span class="n">JsonResponse</span> -<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span class="k">import</span> <span class="n">redirect</span> -<span class="kn">from</span> <span class="nn">django.template</span> <span class="k">import</span> <span class="n">Context</span><span class="p">,</span> <span class="n">RequestContext</span><span class="p">,</span> <span class="n">Template</span> -<span class="kn">from</span> <span class="nn">django.utils.http</span> <span class="k">import</span> <span class="n">is_safe_url</span> -<span class="kn">from</span> <span class="nn">django.views.decorators.csrf</span> <span class="k">import</span> <span class="n">csrf_protect</span> -<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="k">import</span> <span class="n">Avg</span> - -<span class="kn">from</span> <span class="nn">guardian.decorators</span> <span class="k">import</span> <span class="n">permission_required</span> -<span class="kn">from</span> <span class="nn">guardian.decorators</span> <span class="k">import</span> <span class="n">permission_required_or_403</span> -<span class="kn">from</span> <span class="nn">guardian.shortcuts</span> <span class="k">import</span> <span class="n">assign_perm</span> - -<span class="kn">from</span> <span class="nn">.models</span> <span class="k">import</span> <span class="o">*</span> -<span class="kn">from</span> <span class="nn">.forms</span> <span class="k">import</span> <span class="o">*</span> - -<span class="kn">from</span> <span class="nn">.global_methods</span> <span class="k">import</span> <span class="o">*</span> -<span class="kn">from</span> <span class="nn">.utils</span> <span class="k">import</span> <span class="o">*</span> - -<span class="kn">from</span> <span class="nn">commentaries.models</span> <span class="k">import</span> <span class="n">Commentary</span> -<span class="kn">from</span> <span class="nn">commentaries.forms</span> <span class="k">import</span> <span class="n">CommentarySearchForm</span> -<span class="kn">from</span> <span class="nn">comments.models</span> <span class="k">import</span> <span class="n">Comment</span> -<span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">Publication</span> -<span class="kn">from</span> <span class="nn">submissions.models</span> <span class="k">import</span> <span class="n">SUBMISSION_STATUS_PUBLICLY_UNLISTED</span> -<span class="kn">from</span> <span class="nn">submissions.models</span> <span class="k">import</span> <span class="n">Submission</span><span class="p">,</span> <span class="n">EditorialAssignment</span> -<span class="kn">from</span> <span class="nn">submissions.models</span> <span class="k">import</span> <span class="n">RefereeInvitation</span><span class="p">,</span> <span class="n">Report</span><span class="p">,</span> <span class="n">EICRecommendation</span> -<span class="kn">from</span> <span class="nn">submissions.forms</span> <span class="k">import</span> <span class="n">SubmissionSearchForm</span> -<span class="kn">from</span> <span class="nn">theses.models</span> <span class="k">import</span> <span class="n">ThesisLink</span> -<span class="kn">from</span> <span class="nn">theses.forms</span> <span class="k">import</span> <span class="n">ThesisLinkSearchForm</span> - - -<span class="c1">##############</span> -<span class="c1"># Utilitites #</span> -<span class="c1">##############</span> - -<span class="k">def</span> <span class="nf">is_registered</span><span class="p">(</span><span class="n">user</span><span class="p">):</span> - <span class="k">return</span> <span class="n">user</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'Registered Contributors'</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> - -<span class="k">def</span> <span class="nf">is_SP_Admin</span><span class="p">(</span><span class="n">user</span><span class="p">):</span> - <span class="k">return</span> <span class="n">user</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'SciPost Administrators'</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> - -<span class="k">def</span> <span class="nf">is_MEC</span><span class="p">(</span><span class="n">user</span><span class="p">):</span> - <span class="k">return</span> <span class="n">user</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'Editorial College'</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> - -<span class="k">def</span> <span class="nf">is_VE</span><span class="p">(</span><span class="n">user</span><span class="p">):</span> - <span class="k">return</span> <span class="n">user</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'Vetting Editors'</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> - - -<span class="c1"># Global search</span> - -<div class="viewcode-block" id="normalize_query"><a class="viewcode-back" href="../../modules/views.html#scipost.views.normalize_query">[docs]</a><span class="k">def</span> <span class="nf">normalize_query</span><span class="p">(</span><span class="n">query_string</span><span class="p">,</span> - <span class="n">findterms</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s1">r'"([^"]+)"|(\S+)'</span><span class="p">)</span><span class="o">.</span><span class="n">findall</span><span class="p">,</span> - <span class="n">normspace</span><span class="o">=</span><span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s1">r'\s{2,}'</span><span class="p">)</span><span class="o">.</span><span class="n">sub</span><span class="p">):</span> - <span class="sd">""" Splits a query string in individual keywords, keeping quoted words together. """</span> - <span class="k">return</span> <span class="p">[</span><span class="n">normspace</span><span class="p">(</span><span class="s1">' '</span><span class="p">,</span> <span class="p">(</span><span class="n">t</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">or</span> <span class="n">t</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">findterms</span><span class="p">(</span><span class="n">query_string</span><span class="p">)]</span></div> - -<div class="viewcode-block" id="get_query"><a class="viewcode-back" href="../../modules/views.html#scipost.views.get_query">[docs]</a><span class="k">def</span> <span class="nf">get_query</span><span class="p">(</span><span class="n">query_string</span><span class="p">,</span> <span class="n">search_fields</span><span class="p">):</span> - <span class="sd">""" Returns a query, namely a combination of Q objects. """</span> - <span class="n">query</span> <span class="o">=</span> <span class="kc">None</span> - <span class="n">terms</span> <span class="o">=</span> <span class="n">normalize_query</span><span class="p">(</span><span class="n">query_string</span><span class="p">)</span> - <span class="k">for</span> <span class="n">term</span> <span class="ow">in</span> <span class="n">terms</span><span class="p">:</span> - <span class="n">or_query</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">for</span> <span class="n">field_name</span> <span class="ow">in</span> <span class="n">search_fields</span><span class="p">:</span> - <span class="n">q</span> <span class="o">=</span> <span class="n">Q</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="s2">"</span><span class="si">%s</span><span class="s2">__icontains"</span> <span class="o">%</span> <span class="n">field_name</span><span class="p">:</span> <span class="n">term</span><span class="p">})</span> - <span class="k">if</span> <span class="n">or_query</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">or_query</span> <span class="o">=</span> <span class="n">q</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">or_query</span> <span class="o">=</span> <span class="n">or_query</span> <span class="o">|</span> <span class="n">q</span> - <span class="k">if</span> <span class="n">query</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">query</span> <span class="o">=</span> <span class="n">or_query</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">query</span> <span class="o">=</span> <span class="n">query</span> <span class="o">&</span> <span class="n">or_query</span> - <span class="k">return</span> <span class="n">query</span></div> - - -<div class="viewcode-block" id="documentsSearchResults"><a class="viewcode-back" href="../../modules/views.html#scipost.views.documentsSearchResults">[docs]</a><span class="k">def</span> <span class="nf">documentsSearchResults</span><span class="p">(</span><span class="n">query</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Searches through commentaries, submissions and thesislinks.</span> -<span class="sd"> Returns a Context object which can be further used in templates.</span> -<span class="sd"> Naive implementation based on exact match of query.</span> -<span class="sd"> NEEDS UPDATING with e.g. Haystack.</span> -<span class="sd"> """</span> - <span class="n">publication_query</span> <span class="o">=</span> <span class="n">get_query</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> - <span class="p">[</span><span class="s1">'title'</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">,</span> <span class="s1">'abstract'</span><span class="p">,</span> <span class="s1">'doi_string'</span><span class="p">])</span> - <span class="n">commentary_query</span> <span class="o">=</span> <span class="n">get_query</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> - <span class="p">[</span><span class="s1">'pub_title'</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">,</span> <span class="s1">'pub_abstract'</span><span class="p">])</span> - <span class="n">submission_query</span> <span class="o">=</span> <span class="n">get_query</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> - <span class="p">[</span><span class="s1">'title'</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">,</span> <span class="s1">'abstract'</span><span class="p">])</span> - <span class="n">thesislink_query</span> <span class="o">=</span> <span class="n">get_query</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> - <span class="p">[</span><span class="s1">'title'</span><span class="p">,</span> <span class="s1">'author'</span><span class="p">,</span> <span class="s1">'abstract'</span><span class="p">,</span> <span class="s1">'supervisor'</span><span class="p">])</span> - <span class="n">comment_query</span> <span class="o">=</span> <span class="n">get_query</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> - <span class="p">[</span><span class="s1">'comment_text'</span><span class="p">])</span> - - <span class="n">publication_search_queryset</span> <span class="o">=</span> <span class="n">Publication</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">publication_query</span><span class="p">,</span> - <span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-publication_date'</span><span class="p">)</span> - <span class="n">commentary_search_queryset</span> <span class="o">=</span> <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="c1">#commentary_search_list = Commentary.objects.filter(</span> - <span class="n">commentary_query</span><span class="p">,</span> - <span class="n">vetted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-pub_date'</span><span class="p">)</span> - <span class="n">submission_search_queryset</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="c1">#submission_search_list = Submission.objects.filter(</span> - <span class="n">submission_query</span><span class="p">,</span> - <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">status__in</span><span class="o">=</span><span class="n">SUBMISSION_STATUS_PUBLICLY_UNLISTED</span> - <span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-submission_date'</span><span class="p">)</span> - <span class="n">thesislink_search_list</span> <span class="o">=</span> <span class="n">ThesisLink</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">thesislink_query</span><span class="p">,</span> - <span class="n">vetted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-defense_date'</span><span class="p">)</span> - <span class="n">comment_search_list</span> <span class="o">=</span> <span class="n">Comment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">comment_query</span><span class="p">,</span> - <span class="n">status__gte</span><span class="o">=</span><span class="s1">'1'</span><span class="p">,</span> - <span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date_submitted'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'publication_search_queryset'</span><span class="p">:</span> <span class="n">publication_search_queryset</span><span class="p">,</span> - <span class="s1">'commentary_search_queryset'</span><span class="p">:</span> <span class="n">commentary_search_queryset</span><span class="p">,</span> - <span class="c1">#'commentary_search_list': commentary_search_list,</span> - <span class="s1">'submission_search_queryset'</span><span class="p">:</span> <span class="n">submission_search_queryset</span><span class="p">,</span> - <span class="c1">#'submission_search_list': submission_search_list,</span> - <span class="s1">'thesislink_search_list'</span><span class="p">:</span> <span class="n">thesislink_search_list</span><span class="p">,</span> - <span class="s1">'comment_search_list'</span><span class="p">:</span> <span class="n">comment_search_list</span><span class="p">}</span> - <span class="k">return</span> <span class="n">context</span></div> - - -<div class="viewcode-block" id="search"><a class="viewcode-back" href="../../modules/views.html#scipost.views.search">[docs]</a><span class="k">def</span> <span class="nf">search</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">""" For the global search form in navbar """</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SearchForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">documentsSearchResults</span><span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'query'</span><span class="p">])</span> - <span class="n">request</span><span class="o">.</span><span class="n">session</span><span class="p">[</span><span class="s1">'query'</span><span class="p">]</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'query'</span><span class="p">]</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{}</span> - <span class="k">elif</span> <span class="s1">'query'</span> <span class="ow">in</span> <span class="n">request</span><span class="o">.</span><span class="n">session</span><span class="p">:</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">documentsSearchResults</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">session</span><span class="p">[</span><span class="s1">'query'</span><span class="p">])</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{}</span> - - <span class="k">if</span> <span class="s1">'publication_search_queryset'</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span> - <span class="n">publication_search_list_paginator</span> <span class="o">=</span> <span class="n">Paginator</span> <span class="p">(</span><span class="n">context</span><span class="p">[</span><span class="s1">'publication_search_queryset'</span><span class="p">],</span> <span class="mi">10</span><span class="p">)</span> - <span class="n">publication_search_list_page</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">GET</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'publication_search_list_page'</span><span class="p">)</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">publication_search_list</span> <span class="o">=</span> <span class="n">publication_search_list_paginator</span><span class="o">.</span><span class="n">page</span><span class="p">(</span> - <span class="n">publication_search_list_page</span><span class="p">)</span> - <span class="k">except</span> <span class="n">PageNotAnInteger</span><span class="p">:</span> - <span class="n">publication_search_list</span> <span class="o">=</span> <span class="n">publication_search_list_paginator</span><span class="o">.</span><span class="n">page</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> - <span class="k">except</span> <span class="n">EmptyPage</span><span class="p">:</span> - <span class="n">publication_search_list</span> <span class="o">=</span> <span class="n">publication_search_list_paginator</span><span class="o">.</span><span class="n">page</span><span class="p">(</span> - <span class="n">publication_search_list_paginator</span><span class="o">.</span><span class="n">num_pages</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'publication_search_list'</span><span class="p">]</span> <span class="o">=</span> <span class="n">publication_search_list</span> - - <span class="k">if</span> <span class="s1">'commentary_search_queryset'</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span> - <span class="n">commentary_search_list_paginator</span> <span class="o">=</span> <span class="n">Paginator</span> <span class="p">(</span><span class="n">context</span><span class="p">[</span><span class="s1">'commentary_search_queryset'</span><span class="p">],</span> <span class="mi">10</span><span class="p">)</span> - <span class="n">commentary_search_list_page</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">GET</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'commentary_search_list_page'</span><span class="p">)</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">commentary_search_list</span> <span class="o">=</span> <span class="n">commentary_search_list_paginator</span><span class="o">.</span><span class="n">page</span><span class="p">(</span> - <span class="n">commentary_search_list_page</span><span class="p">)</span> - <span class="k">except</span> <span class="n">PageNotAnInteger</span><span class="p">:</span> - <span class="n">commentary_search_list</span> <span class="o">=</span> <span class="n">commentary_search_list_paginator</span><span class="o">.</span><span class="n">page</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> - <span class="k">except</span> <span class="n">EmptyPage</span><span class="p">:</span> - <span class="n">commentary_search_list</span> <span class="o">=</span> <span class="n">commentary_search_list_paginator</span><span class="o">.</span><span class="n">page</span><span class="p">(</span> - <span class="n">commentary_search_list_paginator</span><span class="o">.</span><span class="n">num_pages</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'commentary_search_list'</span><span class="p">]</span> <span class="o">=</span> <span class="n">commentary_search_list</span> - - <span class="k">if</span> <span class="s1">'submission_search_queryset'</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span> - <span class="n">submission_search_list_paginator</span> <span class="o">=</span> <span class="n">Paginator</span> <span class="p">(</span><span class="n">context</span><span class="p">[</span><span class="s1">'submission_search_queryset'</span><span class="p">],</span> <span class="mi">10</span><span class="p">)</span> - <span class="n">submission_search_list_page</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">GET</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'submission_search_list_page'</span><span class="p">)</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">submission_search_list</span> <span class="o">=</span> <span class="n">submission_search_list_paginator</span><span class="o">.</span><span class="n">page</span><span class="p">(</span> - <span class="n">submission_search_list_page</span><span class="p">)</span> - <span class="k">except</span> <span class="n">PageNotAnInteger</span><span class="p">:</span> - <span class="n">submission_search_list</span> <span class="o">=</span> <span class="n">submission_search_list_paginator</span><span class="o">.</span><span class="n">page</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> - <span class="k">except</span> <span class="n">EmptyPage</span><span class="p">:</span> - <span class="n">submission_search_list</span> <span class="o">=</span> <span class="n">submission_search_list_paginator</span><span class="o">.</span><span class="n">page</span><span class="p">(</span> - <span class="n">submission_search_list_paginator</span><span class="o">.</span><span class="n">num_pages</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'submission_search_list'</span><span class="p">]</span> <span class="o">=</span> <span class="n">submission_search_list</span> - - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/search.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="c1">#############</span> -<span class="c1"># Main view</span> -<span class="c1">#############</span> - -<div class="viewcode-block" id="index"><a class="viewcode-back" href="../../modules/views.html#scipost.views.index">[docs]</a><span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">""" Main page """</span> - <span class="n">latest_newsitems</span> <span class="o">=</span> <span class="n">NewsItem</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date'</span><span class="p">)[:</span><span class="mi">2</span><span class="p">]</span> - <span class="n">submission_search_form</span> <span class="o">=</span> <span class="n">SubmissionSearchForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">commentary_search_form</span> <span class="o">=</span> <span class="n">CommentarySearchForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">thesislink_search_form</span> <span class="o">=</span> <span class="n">ThesisLinkSearchForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'latest_newsitems'</span><span class="p">:</span> <span class="n">latest_newsitems</span><span class="p">,</span> - <span class="s1">'submission_search_form'</span><span class="p">:</span> <span class="n">submission_search_form</span><span class="p">,</span> - <span class="s1">'commentary_search_form'</span><span class="p">:</span> <span class="n">commentary_search_form</span><span class="p">,</span> - <span class="s1">'thesislink_search_form'</span><span class="p">:</span> <span class="n">thesislink_search_form</span><span class="p">,</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/index.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - -<span class="c1">###############</span> -<span class="c1"># Information</span> -<span class="c1">###############</span> - -<div class="viewcode-block" id="base"><a class="viewcode-back" href="../../modules/views.html#scipost.views.base">[docs]</a><span class="k">def</span> <span class="nf">base</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">""" Skeleton for pages, used in template inheritance """</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/base.html'</span><span class="p">)</span></div> - -<span class="k">def</span> <span class="nf">news</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">newsitems</span> <span class="o">=</span> <span class="n">NewsItem</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'newsitems'</span><span class="p">:</span> <span class="n">newsitems</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/news.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - -<span class="c1">################</span> -<span class="c1"># Contributors:</span> -<span class="c1">################</span> - -<span class="k">def</span> <span class="nf">register</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">is_authenticated</span><span class="p">():</span> - <span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="s1">'personal_page'</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RegistrationForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">})</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="k">if</span> <span class="n">Utils</span><span class="o">.</span><span class="n">password_mismatch</span><span class="p">():</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/register.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'errormessage'</span><span class="p">:</span> <span class="s1">'Your passwords must match'</span><span class="p">})</span> - <span class="k">if</span> <span class="n">Utils</span><span class="o">.</span><span class="n">username_already_taken</span><span class="p">():</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/register.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'errormessage'</span><span class="p">:</span> <span class="s1">'This username is already in use'</span><span class="p">})</span> - <span class="k">if</span> <span class="n">Utils</span><span class="o">.</span><span class="n">email_already_taken</span><span class="p">():</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/register.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'errormessage'</span><span class="p">:</span> <span class="s1">'This email address is already in use'</span><span class="p">})</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">create_and_save_contributor</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">send_registration_email</span><span class="p">()</span> - <span class="c1"># If this email was associated to an invitation, mark it as responded to</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> - <span class="n">email</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email'</span><span class="p">])</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">responded</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">except</span> <span class="n">ObjectDoesNotExist</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">except</span> <span class="n">MultipleObjectsReturned</span><span class="p">:</span> - <span class="c1"># Delete the first invitation</span> - <span class="n">invitation_to_delete</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">email</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email'</span><span class="p">])</span><span class="o">.</span><span class="n">first</span><span class="p">()</span> - <span class="n">invitation_to_delete</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'Thanks for registering to SciPost.'</span><span class="p">,</span> - <span class="s1">'ack_message'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'You will receive an email with a link to verify '</span> - <span class="s1">'your email address. Please visit this link within 48 hours. '</span> - <span class="s1">'Your credentials will thereafter be verified. '</span> - <span class="s1">'If your registration is vetted through by the '</span> - <span class="s1">'administrators, you will be enabled to contribute.'</span><span class="p">),</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RegistrationForm</span><span class="p">()</span> - <span class="n">invited</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'invited'</span><span class="p">:</span> <span class="n">invited</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/register.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<div class="viewcode-block" id="invitation"><a class="viewcode-back" href="../../modules/views.html#scipost.views.invitation">[docs]</a><span class="k">def</span> <span class="nf">invitation</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> - <span class="sd">""" Register, by invitation """</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">RegistrationInvitation</span><span class="p">,</span> <span class="n">invitation_key</span><span class="o">=</span><span class="n">key</span><span class="p">)</span> - <span class="k">if</span> <span class="n">invitation</span><span class="o">.</span><span class="n">responded</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'This invitation token has already been used, '</span> - <span class="s1">'or this email address is already associated to a registration.'</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">></span> <span class="n">invitation</span><span class="o">.</span><span class="n">key_expires</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'The invitation key has expired.'</span> - <span class="k">elif</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RegistrationForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">})</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="k">if</span> <span class="n">Utils</span><span class="o">.</span><span class="n">password_mismatch</span><span class="p">():</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/register.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'invited'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'key'</span><span class="p">:</span> <span class="n">key</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="s1">'Your passwords must match'</span><span class="p">})</span> - <span class="k">if</span> <span class="n">Utils</span><span class="o">.</span><span class="n">username_already_taken</span><span class="p">():</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/register.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'invited'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'key'</span><span class="p">:</span> <span class="n">key</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="s1">'This username is already in use'</span><span class="p">})</span> - <span class="k">if</span> <span class="n">Utils</span><span class="o">.</span><span class="n">email_already_taken</span><span class="p">():</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/register.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'invited'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'key'</span><span class="p">:</span> <span class="n">key</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="s1">'This email address is already in use'</span><span class="p">})</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">responded</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">create_and_save_contributor</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">send_registration_email</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'Thanks for registering to SciPost.'</span><span class="p">,</span> - <span class="s1">'ack_message'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'You will receive an email with a link to verify '</span> - <span class="s1">'your email address. Please visit this link within 48 hours. '</span> - <span class="s1">'Your credentials will thereafter be verified. '</span> - <span class="s1">'If your registration is vetted through by the '</span> - <span class="s1">'administrators, you will be enabled to contribute.'</span><span class="p">),</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'form is invalidly filled'</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/register.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'invited'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'key'</span><span class="p">:</span> <span class="n">key</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RegistrationForm</span><span class="p">()</span> - <span class="n">form</span><span class="o">.</span><span class="n">fields</span><span class="p">[</span><span class="s1">'title'</span><span class="p">]</span><span class="o">.</span><span class="n">initial</span> <span class="o">=</span> <span class="n">invitation</span><span class="o">.</span><span class="n">title</span> - <span class="n">form</span><span class="o">.</span><span class="n">fields</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">]</span><span class="o">.</span><span class="n">initial</span> <span class="o">=</span> <span class="n">invitation</span><span class="o">.</span><span class="n">last_name</span> - <span class="n">form</span><span class="o">.</span><span class="n">fields</span><span class="p">[</span><span class="s1">'first_name'</span><span class="p">]</span><span class="o">.</span><span class="n">initial</span> <span class="o">=</span> <span class="n">invitation</span><span class="o">.</span><span class="n">first_name</span> - <span class="n">form</span><span class="o">.</span><span class="n">fields</span><span class="p">[</span><span class="s1">'email'</span><span class="p">]</span><span class="o">.</span><span class="n">initial</span> <span class="o">=</span> <span class="n">invitation</span><span class="o">.</span><span class="n">email</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">''</span> - <span class="n">welcome_message</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Welcome, '</span> <span class="o">+</span> <span class="n">title_dict</span><span class="p">[</span><span class="n">invitation</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="n">invitation</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">', and thanks in advance for '</span> - <span class="s1">'registering (by completing this form)'</span><span class="p">)</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/register.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'invited'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'key'</span><span class="p">:</span> <span class="n">key</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span> <span class="s1">'welcome_message'</span><span class="p">:</span> <span class="n">welcome_message</span><span class="p">})</span> - - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/accept_invitation_error.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - - -<div class="viewcode-block" id="activation"><a class="viewcode-back" href="../../modules/views.html#scipost.views.activation">[docs]</a><span class="k">def</span> <span class="nf">activation</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> After registration, an email verification link is sent.</span> -<span class="sd"> Once clicked, the account is activated.</span> -<span class="sd"> """</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">activation_key</span><span class="o">=</span><span class="n">key</span><span class="p">)</span> - <span class="k">if</span> <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">is_active</span> <span class="o">==</span> <span class="kc">False</span><span class="p">:</span> - <span class="k">if</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">></span> <span class="n">contributor</span><span class="o">.</span><span class="n">key_expires</span><span class="p">:</span> - <span class="n">id_user</span> <span class="o">=</span> <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">id</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'oldkey'</span><span class="p">:</span> <span class="n">key</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/request_new_activation_link.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">is_active</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1">#return render(request, 'scipost/activation_ack.html')</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'Your email address has been confirmed.'</span><span class="p">,</span> - <span class="s1">'ack_message'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'Your SciPost account will soon be vetted. '</span> - <span class="s1">'You will soon receive an email from us.'</span><span class="p">),</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/already_activated.html'</span><span class="p">)</span></div> - - -<span class="k">def</span> <span class="nf">request_new_activation_link</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">oldkey</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">activation_key</span><span class="o">=</span><span class="n">oldkey</span><span class="p">)</span> - <span class="c1"># Generate a new email activation key and link</span> - <span class="n">salt</span> <span class="o">=</span> <span class="s2">""</span> - <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span> - <span class="n">salt</span> <span class="o">=</span> <span class="n">salt</span> <span class="o">+</span> <span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">ascii_letters</span><span class="p">)</span> - <span class="c1">#salt = hashlib.sha1(str(random.random()).encode('utf8')).hexdigest()[:5]</span> - <span class="n">salt</span> <span class="o">=</span> <span class="n">salt</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">'utf8'</span><span class="p">)</span> - <span class="n">usernamesalt</span> <span class="o">=</span> <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">username</span> - <span class="n">usernamesalt</span> <span class="o">=</span> <span class="n">usernamesalt</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">'utf8'</span><span class="p">)</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">activation_key</span> <span class="o">=</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">sha1</span><span class="p">(</span><span class="n">salt</span><span class="o">+</span><span class="n">usernamesalt</span><span class="p">)</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">key_expires</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span> - <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">2</span><span class="p">),</span> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2"> %H:%M:%S"</span><span class="p">)</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">email_text</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Dear '</span> <span class="o">+</span> <span class="n">title_dict</span><span class="p">[</span><span class="n">contributor</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> - <span class="s1">', </span><span class="se">\n\n</span><span class="s1">'</span> - <span class="s1">'Your request for a new email activation link for registration to the SciPost '</span> - <span class="s1">'publication portal has been received. You now need to visit this link within '</span> - <span class="s1">'the next 48 hours: </span><span class="se">\n\n</span><span class="s1">'</span> - <span class="s1">'https://scipost.org/activation/'</span> <span class="o">+</span> <span class="n">contributor</span><span class="o">.</span><span class="n">activation_key</span> <span class="o">+</span> - <span class="s1">'</span><span class="se">\n\n</span><span class="s1">Your registration will thereafter be vetted. Many thanks for your interest.'</span> - <span class="s1">'</span><span class="se">\n\n</span><span class="s1">The SciPost Team.'</span><span class="p">)</span> - <span class="n">emailmessage</span> <span class="o">=</span> <span class="n">EmailMessage</span><span class="p">(</span><span class="s1">'SciPost registration: new email activation link'</span><span class="p">,</span> - <span class="n">email_text</span><span class="p">,</span> <span class="s1">'SciPost registration <registration@scipost.org>'</span><span class="p">,</span> - <span class="p">[</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">,</span> <span class="s1">'registration@scipost.org'</span><span class="p">],</span> - <span class="n">reply_to</span><span class="o">=</span><span class="p">[</span><span class="s1">'registration@scipost.org'</span><span class="p">])</span> - <span class="n">emailmessage</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">fail_silently</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="c1">#return render (request, 'scipost/request_new_activation_link_ack.html')</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'We have emailed you a new activation link.'</span><span class="p">,</span> - <span class="s1">'ack_message'</span><span class="p">:</span> <span class="p">(</span><span class="s1">'Please acknowledge it within its 48 hours validity '</span> - <span class="s1">'window if you want us to proceed with vetting your registraion.'</span><span class="p">),</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_vet_registration_requests'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">vet_registration_requests</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">contributors_to_vet</span> <span class="o">=</span> <span class="p">(</span><span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">user__is_active</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'key_expires'</span><span class="p">))</span> - <span class="n">reg_cont_group</span> <span class="o">=</span> <span class="n">Group</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'Registered Contributors'</span><span class="p">)</span> <span class="c1"># TODO: remove this line?</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">VetRegistrationForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'contributors_to_vet'</span><span class="p">:</span> <span class="n">contributors_to_vet</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/vet_registration_requests.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_vet_registration_requests'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">vet_registration_request_ack</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">contributor_id</span><span class="p">):</span> - <span class="c1"># process the form</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">VetRegistrationForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">contributor_id</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'promote_to_registered_contributor'</span><span class="p">]:</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="mi">1</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">vetted_by</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">group</span> <span class="o">=</span> <span class="n">Group</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'Registered Contributors'</span><span class="p">)</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">group</span><span class="p">)</span> - <span class="c1"># Verify if there is a pending refereeing invitation</span> - <span class="n">pending_ref_inv_exists</span> <span class="o">=</span> <span class="kc">True</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">pending_ref_inv</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> - <span class="n">invitation_key</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">invitation_key</span><span class="p">,</span> <span class="n">cancelled</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">pending_ref_inv</span><span class="o">.</span><span class="n">referee</span> <span class="o">=</span> <span class="n">contributor</span> - <span class="n">pending_ref_inv</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">except</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span> - <span class="n">pending_ref_inv_exists</span> <span class="o">=</span> <span class="kc">False</span> - - <span class="n">email_text</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Dear '</span> <span class="o">+</span> <span class="n">title_dict</span><span class="p">[</span><span class="n">contributor</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> - <span class="s1">', </span><span class="se">\n\n</span><span class="s1">Your registration to the SciPost publication portal '</span> - <span class="s1">'has been accepted. '</span> - <span class="s1">'You can now login at https://scipost.org and contribute. </span><span class="se">\n\n</span><span class="s1">'</span><span class="p">)</span> - <span class="k">if</span> <span class="n">pending_ref_inv_exists</span><span class="p">:</span> - <span class="n">email_text</span> <span class="o">+=</span> <span class="p">(</span> - <span class="s1">'Note that you have pending refereeing invitations; please navigate to '</span> - <span class="s1">'https://scipost.org/submissions/accept_or_decline_ref_invitations '</span> - <span class="s1">'(login required) to accept or decline them.</span><span class="se">\n\n</span><span class="s1">'</span><span class="p">)</span> - <span class="n">email_text</span> <span class="o">+=</span> <span class="s1">'Thank you very much in advance, </span><span class="se">\n</span><span class="s1">The SciPost Team.'</span> - <span class="n">emailmessage</span> <span class="o">=</span> <span class="n">EmailMessage</span><span class="p">(</span><span class="s1">'SciPost registration accepted'</span><span class="p">,</span> <span class="n">email_text</span><span class="p">,</span> - <span class="s1">'SciPost registration <registration@scipost.org>'</span><span class="p">,</span> - <span class="p">[</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">],</span> - <span class="n">bcc</span><span class="o">=</span><span class="p">[</span><span class="s1">'registration@scipost.org'</span><span class="p">],</span> - <span class="n">reply_to</span><span class="o">=</span><span class="p">[</span><span class="s1">'registration@scipost.org'</span><span class="p">])</span> - <span class="n">emailmessage</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">fail_silently</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">ref_reason</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'refusal_reason'</span><span class="p">])</span> - <span class="n">email_text</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Dear '</span> <span class="o">+</span> <span class="n">title_dict</span><span class="p">[</span><span class="n">contributor</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> - <span class="o">+</span> <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> - <span class="s1">', </span><span class="se">\n\n</span><span class="s1">Your registration to the SciPost publication portal '</span> - <span class="s1">'has been turned down, the reason being: '</span> - <span class="o">+</span> <span class="n">reg_ref_dict</span><span class="p">[</span><span class="n">ref_reason</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'. You can however still view '</span> - <span class="s1">'all SciPost contents, just not submit papers, '</span> - <span class="s1">'comments or votes. We nonetheless thank you for your interest.'</span> - <span class="s1">'</span><span class="se">\n\n</span><span class="s1">The SciPost Team.'</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_response_field'</span><span class="p">]:</span> - <span class="n">email_text</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'</span><span class="se">\n\n</span><span class="s1">Further explanations: '</span> - <span class="o">+</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_response_field'</span><span class="p">])</span> - <span class="n">emailmessage</span> <span class="o">=</span> <span class="n">EmailMessage</span><span class="p">(</span><span class="s1">'SciPost registration: unsuccessful'</span><span class="p">,</span> - <span class="n">email_text</span><span class="p">,</span> - <span class="s1">'SciPost registration <registration@scipost.org>'</span><span class="p">,</span> - <span class="p">[</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">],</span> - <span class="n">bcc</span><span class="o">=</span><span class="p">[</span><span class="s1">'registration@scipost.org'</span><span class="p">],</span> - <span class="n">reply_to</span><span class="o">=</span><span class="p">[</span><span class="s1">'registration@scipost.org'</span><span class="p">])</span> - <span class="n">emailmessage</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">fail_silently</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'refusal_reason'</span><span class="p">]</span> - <span class="n">contributor</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - - <span class="c1">#context = {}</span> - <span class="c1">#return render(request, 'scipost/vet_registration_request_ack.html', context)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'SciPost Registration request vetted.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Back to '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:vet_registration_requests'</span><span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'Registration requests page'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_manage_registration_invitations'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="registration_invitations"><a class="viewcode-back" href="../../modules/views.html#scipost.views.registration_invitations">[docs]</a><span class="k">def</span> <span class="nf">registration_invitations</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">""" Overview and tools for administrators """</span> - <span class="c1"># List invitations sent; send new ones</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">''</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="c1"># Send invitation from form information</span> - <span class="n">reg_inv_form</span> <span class="o">=</span> <span class="n">RegistrationInvitationForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'contributor'</span><span class="p">:</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">reg_inv_form</span><span class="p">})</span> - <span class="k">if</span> <span class="n">reg_inv_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="k">if</span> <span class="n">Utils</span><span class="o">.</span><span class="n">email_already_invited</span><span class="p">():</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'DUPLICATE ERROR: '</span> - <span class="s1">'This email address has already been used for an invitation'</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">Utils</span><span class="o">.</span><span class="n">email_already_taken</span><span class="p">():</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'DUPLICATE ERROR: '</span> - <span class="s1">'This email address is already associated to a Contributor'</span><span class="p">)</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">reg_inv_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'invitation_type'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'F'</span> - <span class="ow">and</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">has_perm</span><span class="p">(</span><span class="s1">'scipost.can_invite_Fellows'</span><span class="p">)):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'You do not have the authorization to send a Fellow-type '</span> - <span class="s1">'invitation. Consider Contributor, or cited (sub/pub). '</span><span class="p">)</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">reg_inv_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'invitation_type'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'R'</span><span class="p">):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Referee-type invitations must be made by the Editor-in-charge '</span> - <span class="s1">'at the relevant Submission</span><span class="se">\'</span><span class="s1">s Editorial Page. '</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">create_invitation</span><span class="p">()</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">send_registration_invitation_email</span><span class="p">()</span> - <span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="s1">'registration_invitation_sent'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'The form was not filled validly.'</span> - - <span class="k">else</span><span class="p">:</span> - <span class="n">reg_inv_form</span> <span class="o">=</span> <span class="n">RegistrationInvitationForm</span><span class="p">()</span> - - <span class="n">sent_reg_inv</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">responded</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">declined</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">sent_reg_inv_fellows</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">'F'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'last_name'</span><span class="p">)</span> - <span class="n">nr_sent_reg_inv_fellows</span> <span class="o">=</span> <span class="n">sent_reg_inv_fellows</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">sent_reg_inv_contrib</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">'C'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'last_name'</span><span class="p">)</span> - <span class="n">nr_sent_reg_inv_contrib</span> <span class="o">=</span> <span class="n">sent_reg_inv_contrib</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">sent_reg_inv_ref</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">'R'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'last_name'</span><span class="p">)</span> - <span class="n">nr_sent_reg_inv_ref</span> <span class="o">=</span> <span class="n">sent_reg_inv_ref</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">sent_reg_inv_cited_sub</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">'ci'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'last_name'</span><span class="p">)</span> - <span class="n">nr_sent_reg_inv_cited_sub</span> <span class="o">=</span> <span class="n">sent_reg_inv_cited_sub</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">sent_reg_inv_cited_pub</span> <span class="o">=</span> <span class="n">sent_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">'cp'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'last_name'</span><span class="p">)</span> - <span class="n">nr_sent_reg_inv_cited_pub</span> <span class="o">=</span> <span class="n">sent_reg_inv_cited_pub</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - - <span class="n">resp_reg_inv</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">responded</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">declined</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">resp_reg_inv_fellows</span> <span class="o">=</span> <span class="n">resp_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">'F'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'last_name'</span><span class="p">)</span> - <span class="n">nr_resp_reg_inv_fellows</span> <span class="o">=</span> <span class="n">resp_reg_inv_fellows</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">resp_reg_inv_contrib</span> <span class="o">=</span> <span class="n">resp_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">'C'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'last_name'</span><span class="p">)</span> - <span class="n">nr_resp_reg_inv_contrib</span> <span class="o">=</span> <span class="n">resp_reg_inv_contrib</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">resp_reg_inv_ref</span> <span class="o">=</span> <span class="n">resp_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">'R'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'last_name'</span><span class="p">)</span> - <span class="n">nr_resp_reg_inv_ref</span> <span class="o">=</span> <span class="n">resp_reg_inv_ref</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">resp_reg_inv_cited_sub</span> <span class="o">=</span> <span class="n">resp_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">'ci'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'last_name'</span><span class="p">)</span> - <span class="n">nr_resp_reg_inv_cited_sub</span> <span class="o">=</span> <span class="n">resp_reg_inv_cited_sub</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">resp_reg_inv_cited_pub</span> <span class="o">=</span> <span class="n">resp_reg_inv</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">invitation_type</span><span class="o">=</span><span class="s1">'cp'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'last_name'</span><span class="p">)</span> - <span class="n">nr_resp_reg_inv_cited_pub</span> <span class="o">=</span> <span class="n">resp_reg_inv_cited_pub</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - - <span class="n">decl_reg_inv</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">responded</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">declined</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - - <span class="n">names_reg_contributors</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">status</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'user__last_name'</span><span class="p">)</span><span class="o">.</span><span class="n">values_list</span><span class="p">(</span> - <span class="s1">'user__first_name'</span><span class="p">,</span> <span class="s1">'user__last_name'</span><span class="p">)</span> - - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'reg_inv_form'</span><span class="p">:</span> <span class="n">reg_inv_form</span><span class="p">,</span> <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span> - <span class="s1">'sent_reg_inv_fellows'</span><span class="p">:</span> <span class="n">sent_reg_inv_fellows</span><span class="p">,</span> - <span class="s1">'nr_sent_reg_inv_fellows'</span><span class="p">:</span> <span class="n">nr_sent_reg_inv_fellows</span><span class="p">,</span> - <span class="s1">'sent_reg_inv_contrib'</span><span class="p">:</span> <span class="n">sent_reg_inv_contrib</span><span class="p">,</span> - <span class="s1">'nr_sent_reg_inv_contrib'</span><span class="p">:</span> <span class="n">nr_sent_reg_inv_contrib</span><span class="p">,</span> - <span class="s1">'sent_reg_inv_ref'</span><span class="p">:</span> <span class="n">sent_reg_inv_ref</span><span class="p">,</span> - <span class="s1">'nr_sent_reg_inv_ref'</span><span class="p">:</span> <span class="n">nr_sent_reg_inv_ref</span><span class="p">,</span> - <span class="s1">'sent_reg_inv_cited_sub'</span><span class="p">:</span> <span class="n">sent_reg_inv_cited_sub</span><span class="p">,</span> - <span class="s1">'nr_sent_reg_inv_cited_sub'</span><span class="p">:</span> <span class="n">nr_sent_reg_inv_cited_sub</span><span class="p">,</span> - <span class="s1">'sent_reg_inv_cited_pub'</span><span class="p">:</span> <span class="n">sent_reg_inv_cited_pub</span><span class="p">,</span> - <span class="s1">'nr_sent_reg_inv_cited_pub'</span><span class="p">:</span> <span class="n">nr_sent_reg_inv_cited_pub</span><span class="p">,</span> - <span class="s1">'resp_reg_inv_fellows'</span><span class="p">:</span> <span class="n">resp_reg_inv_fellows</span><span class="p">,</span> - <span class="s1">'nr_resp_reg_inv_fellows'</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_fellows</span><span class="p">,</span> - <span class="s1">'resp_reg_inv_contrib'</span><span class="p">:</span> <span class="n">resp_reg_inv_contrib</span><span class="p">,</span> - <span class="s1">'nr_resp_reg_inv_contrib'</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_contrib</span><span class="p">,</span> - <span class="s1">'resp_reg_inv_ref'</span><span class="p">:</span> <span class="n">resp_reg_inv_ref</span><span class="p">,</span> - <span class="s1">'nr_resp_reg_inv_ref'</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_ref</span><span class="p">,</span> - <span class="s1">'resp_reg_inv_cited_sub'</span><span class="p">:</span> <span class="n">resp_reg_inv_cited_sub</span><span class="p">,</span> - <span class="s1">'nr_resp_reg_inv_cited_sub'</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_cited_sub</span><span class="p">,</span> - <span class="s1">'resp_reg_inv_cited_pub'</span><span class="p">:</span> <span class="n">resp_reg_inv_cited_pub</span><span class="p">,</span> - <span class="s1">'nr_resp_reg_inv_cited_pub'</span><span class="p">:</span> <span class="n">nr_resp_reg_inv_cited_pub</span><span class="p">,</span> - <span class="s1">'decl_reg_inv'</span><span class="p">:</span> <span class="n">decl_reg_inv</span><span class="p">,</span> - <span class="s1">'names_reg_contributors'</span><span class="p">:</span> <span class="n">names_reg_contributors</span><span class="p">,</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/registration_invitations.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_manage_registration_invitations'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="registration_invitations_cleanup"><a class="viewcode-back" href="../../modules/views.html#scipost.views.registration_invitations_cleanup">[docs]</a><span class="k">def</span> <span class="nf">registration_invitations_cleanup</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Compares the email addresses of invitations with those in the</span> -<span class="sd"> database of registered Contributors. Flags overlaps.</span> -<span class="sd"> """</span> - <span class="n">contributor_email_list</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">values_list</span><span class="p">(</span><span class="s1">'user__email'</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">invs_to_cleanup</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">responded</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">email__in</span><span class="o">=</span><span class="n">contributor_email_list</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'invs_to_cleanup'</span><span class="p">:</span> <span class="n">invs_to_cleanup</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/registration_invitations_cleanup.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_manage_registration_invitations'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="remove_registration_invitation"><a class="viewcode-back" href="../../modules/views.html#scipost.views.remove_registration_invitation">[docs]</a><span class="k">def</span> <span class="nf">remove_registration_invitation</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">invitation_id</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Remove an invitation (called from registration_invitations_cleanup).</span> -<span class="sd"> """</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">RegistrationInvitation</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">invitation_id</span><span class="p">)</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:registration_invitations_cleanup'</span><span class="p">))</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_manage_registration_invitations'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">edit_invitation_personal_message</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">invitation_id</span><span class="p">):</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">RegistrationInvitation</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">invitation_id</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">ModifyPersonalMessageForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">personal_message</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'personal_message'</span><span class="p">]</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:registration_invitations'</span><span class="p">))</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'The form was invalid.'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">ModifyPersonalMessageForm</span><span class="p">(</span> - <span class="n">initial</span><span class="o">=</span><span class="p">{</span><span class="s1">'personal_message'</span><span class="p">:</span> <span class="n">invitation</span><span class="o">.</span><span class="n">personal_message</span><span class="p">,})</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'invitation'</span><span class="p">:</span> <span class="n">invitation</span><span class="p">,</span> - <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/edit_invitation_personal_message.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_manage_registration_invitations'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="renew_registration_invitation"><a class="viewcode-back" href="../../modules/views.html#scipost.views.renew_registration_invitation">[docs]</a><span class="k">def</span> <span class="nf">renew_registration_invitation</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">invitation_id</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Renew an invitation (called from registration_invitations).</span> -<span class="sd"> """</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">RegistrationInvitation</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">invitation_id</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="p">(</span><span class="n">invitation</span><span class="o">.</span><span class="n">invitation_type</span> <span class="o">==</span> <span class="s1">'F'</span> - <span class="ow">and</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">has_perm</span><span class="p">(</span><span class="s1">'scipost.can_invite_Fellows'</span><span class="p">)):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'You do not have the authorization to send a Fellow-type '</span> - <span class="s1">'invitation. Consider Contributor, or cited (sub/pub). '</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">invitation</span><span class="o">.</span><span class="n">invitation_type</span> <span class="o">==</span> <span class="s1">'R'</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Referee-type invitations must be made by the Editor-in-charge '</span> - <span class="s1">'at the relevant Submission</span><span class="se">\'</span><span class="s1">s Editorial Page. '</span><span class="p">)</span> - <span class="k">if</span> <span class="n">errormessage</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - - <span class="n">Utils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'invitation'</span><span class="p">:</span> <span class="n">invitation</span><span class="p">})</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">send_registration_invitation_email</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:registration_invitations'</span><span class="p">))</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_manage_registration_invitations'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="mark_reg_inv_as_declined"><a class="viewcode-back" href="../../modules/views.html#scipost.views.mark_reg_inv_as_declined">[docs]</a><span class="k">def</span> <span class="nf">mark_reg_inv_as_declined</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">invitation_id</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Mark an invitation as declined (called from registration_invitations.html).</span> -<span class="sd"> """</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">RegistrationInvitation</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">invitation_id</span><span class="p">)</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">responded</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">declined</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:registration_invitations'</span><span class="p">))</span></div> - - -<span class="k">def</span> <span class="nf">login_view</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">redirect_to</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'next'</span><span class="p">,</span> - <span class="n">request</span><span class="o">.</span><span class="n">GET</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'next'</span><span class="p">,</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:personal_page'</span><span class="p">)))</span> - <span class="n">redirect_to</span> <span class="o">=</span> <span class="p">(</span><span class="n">redirect_to</span> - <span class="k">if</span> <span class="n">is_safe_url</span><span class="p">(</span><span class="n">redirect_to</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">get_host</span><span class="p">())</span> - <span class="k">else</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:personal_page'</span><span class="p">))</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">username</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">[</span><span class="s1">'username'</span><span class="p">]</span> - <span class="n">password</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">[</span><span class="s1">'password'</span><span class="p">]</span> - <span class="n">user</span> <span class="o">=</span> <span class="n">authenticate</span><span class="p">(</span><span class="n">username</span><span class="o">=</span><span class="n">username</span><span class="p">,</span> <span class="n">password</span><span class="o">=</span><span class="n">password</span><span class="p">)</span> - <span class="k">if</span> <span class="n">user</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">is_registered</span><span class="p">(</span><span class="n">user</span><span class="p">):</span> - <span class="k">if</span> <span class="n">user</span><span class="o">.</span><span class="n">is_active</span><span class="p">:</span> - <span class="n">login</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">user</span><span class="p">)</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'contributor'</span><span class="p">:</span> <span class="n">contributor</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">redirect_to</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/disabled_account.html'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/login_error.html'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">AuthenticationForm</span><span class="p">()</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/login.html'</span><span class="p">,</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'next'</span><span class="p">:</span> <span class="n">redirect_to</span><span class="p">})</span> - - -<span class="k">def</span> <span class="nf">logout_view</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">logout</span><span class="p">(</span><span class="n">request</span><span class="p">)</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/logout.html'</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">mark_unavailable_period</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">unav_form</span> <span class="o">=</span> <span class="n">UnavailabilityPeriodForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="n">unav_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">now</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="k">if</span> <span class="n">unav_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'start'</span><span class="p">]</span> <span class="o">></span> <span class="n">unav_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'end'</span><span class="p">]:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'The start date you have entered is later than the end date.'</span> - <span class="k">elif</span> <span class="n">unav_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'end'</span><span class="p">]</span> <span class="o"><</span> <span class="n">now</span><span class="o">.</span><span class="n">date</span><span class="p">():</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'You have entered an end date in the past.'</span> - <span class="k">if</span> <span class="n">errormessage</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">unav</span> <span class="o">=</span> <span class="n">UnavailabilityPeriod</span><span class="p">(</span> - <span class="n">contributor</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">start</span><span class="o">=</span><span class="n">unav_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'start'</span><span class="p">],</span> - <span class="n">end</span><span class="o">=</span><span class="n">unav_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'end'</span><span class="p">])</span> - <span class="n">unav</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'Please enter valid dates (format: YYYY-MM-DD).'</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="s1">'scipost:personal_page'</span><span class="p">)</span> - - -<div class="viewcode-block" id="personal_page"><a class="viewcode-back" href="../../modules/views.html#scipost.views.personal_page">[docs]</a><span class="k">def</span> <span class="nf">personal_page</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> The Personal Page is the main view for accessing user functions.</span> -<span class="sd"> """</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">is_authenticated</span><span class="p">():</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="c1"># Compile the unavailability periods:</span> - <span class="n">now</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="n">unavailabilities</span> <span class="o">=</span> <span class="n">UnavailabilityPeriod</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">contributor</span><span class="o">=</span><span class="n">contributor</span><span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">end__lt</span><span class="o">=</span><span class="n">now</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'start'</span><span class="p">)</span> - <span class="n">unavailability_form</span> <span class="o">=</span> <span class="n">UnavailabilityPeriodForm</span><span class="p">()</span> - <span class="c1"># if an editor, count the number of actions required:</span> - <span class="n">nr_reg_to_vet</span> <span class="o">=</span> <span class="mi">0</span> - <span class="n">nr_reg_awaiting_validation</span> <span class="o">=</span> <span class="mi">0</span> - <span class="n">nr_submissions_to_assign</span> <span class="o">=</span> <span class="mi">0</span> - <span class="n">nr_recommendations_to_prepare_for_voting</span> <span class="o">=</span> <span class="mi">0</span> - <span class="k">if</span> <span class="n">is_SP_Admin</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">):</span> - <span class="n">intwodays</span> <span class="o">=</span> <span class="n">now</span> <span class="o">+</span> <span class="n">timezone</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span> - <span class="c1"># count the number of pending registration requests</span> - <span class="n">nr_reg_to_vet</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">user__is_active</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_reg_awaiting_validation</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">user__is_active</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">key_expires__gte</span><span class="o">=</span><span class="n">now</span><span class="p">,</span> - <span class="n">key_expires__lte</span><span class="o">=</span><span class="n">intwodays</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_submissions_to_assign</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status__in</span><span class="o">=</span><span class="p">[</span><span class="s1">'unassigned'</span><span class="p">])</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_recommendations_to_prepare_for_voting</span> <span class="o">=</span> <span class="n">EICRecommendation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">submission__status__in</span><span class="o">=</span><span class="p">[</span><span class="s1">'voting_in_preparation'</span><span class="p">])</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_assignments_to_consider</span> <span class="o">=</span> <span class="mi">0</span> - <span class="n">active_assignments</span> <span class="o">=</span> <span class="kc">None</span> - <span class="n">nr_reports_to_vet</span> <span class="o">=</span> <span class="mi">0</span> - <span class="k">if</span> <span class="n">is_MEC</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">):</span> - <span class="n">nr_assignments_to_consider</span> <span class="o">=</span> <span class="p">(</span><span class="n">EditorialAssignment</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">to</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">accepted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">deprecated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="o">.</span><span class="n">count</span><span class="p">())</span> - <span class="n">active_assignments</span> <span class="o">=</span> <span class="n">EditorialAssignment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">to</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">accepted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">completed</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">nr_reports_to_vet</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">status</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">submission__editor_in_charge</span><span class="o">=</span><span class="n">contributor</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_commentary_page_requests_to_vet</span> <span class="o">=</span> <span class="mi">0</span> - <span class="n">nr_comments_to_vet</span> <span class="o">=</span> <span class="mi">0</span> - <span class="n">nr_thesislink_requests_to_vet</span> <span class="o">=</span> <span class="mi">0</span> - <span class="n">nr_authorship_claims_to_vet</span> <span class="o">=</span> <span class="mi">0</span> - <span class="k">if</span> <span class="n">is_VE</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">):</span> - <span class="n">nr_commentary_page_requests_to_vet</span> <span class="o">=</span> <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">vetted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_comments_to_vet</span> <span class="o">=</span> <span class="n">Comment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_thesislink_requests_to_vet</span> <span class="o">=</span> <span class="n">ThesisLink</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">vetted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_authorship_claims_to_vet</span> <span class="o">=</span> <span class="n">AuthorshipClaim</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="s1">'0'</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_ref_inv_to_consider</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">referee</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">accepted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">cancelled</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">pending_ref_tasks</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">referee</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">accepted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">fulfilled</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="c1"># Verify if there exist objects authored by this contributor,</span> - <span class="c1"># whose authorship hasn't been claimed yet</span> - <span class="n">own_submissions</span> <span class="o">=</span> <span class="p">(</span><span class="n">Submission</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">authors__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">],</span> <span class="n">is_current</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-submission_date'</span><span class="p">))</span> - <span class="n">own_commentaries</span> <span class="o">=</span> <span class="p">(</span><span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">authors__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-latest_activity'</span><span class="p">))</span> - <span class="n">own_thesislinks</span> <span class="o">=</span> <span class="n">ThesisLink</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author_as_cont__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="n">nr_submission_authorships_to_claim</span> <span class="o">=</span> <span class="p">(</span><span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">author_list__contains</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors_false_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">count</span><span class="p">())</span> - <span class="n">nr_commentary_authorships_to_claim</span> <span class="o">=</span> <span class="p">(</span><span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">author_list__contains</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors_false_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">count</span><span class="p">())</span> - <span class="n">nr_thesis_authorships_to_claim</span> <span class="o">=</span> <span class="p">(</span><span class="n">ThesisLink</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">author__contains</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">author_as_cont__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">author_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">author_false_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">count</span><span class="p">())</span> - <span class="n">own_comments</span> <span class="o">=</span> <span class="p">(</span><span class="n">Comment</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span><span class="n">is_author_reply</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date_submitted'</span><span class="p">))</span> - <span class="n">own_authorreplies</span> <span class="o">=</span> <span class="p">(</span><span class="n">Comment</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span><span class="n">is_author_reply</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date_submitted'</span><span class="p">))</span> - <span class="n">lists_owned</span> <span class="o">=</span> <span class="n">List</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">owner</span><span class="o">=</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">lists</span> <span class="o">=</span> <span class="n">List</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">teams_with_access__members__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="n">teams_led</span> <span class="o">=</span> <span class="n">Team</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">leader</span><span class="o">=</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">teams</span> <span class="o">=</span> <span class="n">Team</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">members__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="n">graphs_owned</span> <span class="o">=</span> <span class="n">Graph</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">owner</span><span class="o">=</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">graphs_private</span> <span class="o">=</span> <span class="n">Graph</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">Q</span><span class="p">(</span><span class="n">teams_with_access__leader</span><span class="o">=</span><span class="n">contributor</span><span class="p">)</span> - <span class="o">|</span> <span class="n">Q</span><span class="p">(</span><span class="n">teams_with_access__members__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">]))</span> - <span class="n">appellation</span> <span class="o">=</span> <span class="n">title_dict</span><span class="p">[</span><span class="n">contributor</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'contributor'</span><span class="p">:</span> <span class="n">contributor</span><span class="p">,</span> - <span class="s1">'appellation'</span><span class="p">:</span> <span class="n">appellation</span><span class="p">,</span> - <span class="s1">'unavailabilities'</span><span class="p">:</span> <span class="n">unavailabilities</span><span class="p">,</span> - <span class="s1">'unavailability_form'</span><span class="p">:</span> <span class="n">unavailability_form</span><span class="p">,</span> - <span class="s1">'nr_reg_to_vet'</span><span class="p">:</span> <span class="n">nr_reg_to_vet</span><span class="p">,</span> - <span class="s1">'nr_reg_awaiting_validation'</span><span class="p">:</span> <span class="n">nr_reg_awaiting_validation</span><span class="p">,</span> - <span class="s1">'nr_commentary_page_requests_to_vet'</span><span class="p">:</span> <span class="n">nr_commentary_page_requests_to_vet</span><span class="p">,</span> - <span class="s1">'nr_comments_to_vet'</span><span class="p">:</span> <span class="n">nr_comments_to_vet</span><span class="p">,</span> - <span class="s1">'nr_thesislink_requests_to_vet'</span><span class="p">:</span> <span class="n">nr_thesislink_requests_to_vet</span><span class="p">,</span> - <span class="s1">'nr_authorship_claims_to_vet'</span><span class="p">:</span> <span class="n">nr_authorship_claims_to_vet</span><span class="p">,</span> - <span class="s1">'nr_reports_to_vet'</span><span class="p">:</span> <span class="n">nr_reports_to_vet</span><span class="p">,</span> - <span class="s1">'nr_submissions_to_assign'</span><span class="p">:</span> <span class="n">nr_submissions_to_assign</span><span class="p">,</span> - <span class="s1">'nr_recommendations_to_prepare_for_voting'</span><span class="p">:</span> <span class="n">nr_recommendations_to_prepare_for_voting</span><span class="p">,</span> - <span class="s1">'nr_assignments_to_consider'</span><span class="p">:</span> <span class="n">nr_assignments_to_consider</span><span class="p">,</span> - <span class="s1">'active_assignments'</span><span class="p">:</span> <span class="n">active_assignments</span><span class="p">,</span> - <span class="s1">'nr_submission_authorships_to_claim'</span><span class="p">:</span> <span class="n">nr_submission_authorships_to_claim</span><span class="p">,</span> - <span class="s1">'nr_commentary_authorships_to_claim'</span><span class="p">:</span> <span class="n">nr_commentary_authorships_to_claim</span><span class="p">,</span> - <span class="s1">'nr_thesis_authorships_to_claim'</span><span class="p">:</span> <span class="n">nr_thesis_authorships_to_claim</span><span class="p">,</span> - <span class="s1">'nr_ref_inv_to_consider'</span><span class="p">:</span> <span class="n">nr_ref_inv_to_consider</span><span class="p">,</span> - <span class="s1">'pending_ref_tasks'</span><span class="p">:</span> <span class="n">pending_ref_tasks</span><span class="p">,</span> - <span class="s1">'own_submissions'</span><span class="p">:</span> <span class="n">own_submissions</span><span class="p">,</span> - <span class="s1">'own_commentaries'</span><span class="p">:</span> <span class="n">own_commentaries</span><span class="p">,</span> - <span class="s1">'own_thesislinks'</span><span class="p">:</span> <span class="n">own_thesislinks</span><span class="p">,</span> - <span class="s1">'own_comments'</span><span class="p">:</span> <span class="n">own_comments</span><span class="p">,</span> <span class="s1">'own_authorreplies'</span><span class="p">:</span> <span class="n">own_authorreplies</span><span class="p">,</span> - <span class="s1">'lists_owned'</span><span class="p">:</span> <span class="n">lists_owned</span><span class="p">,</span> - <span class="s1">'lists'</span><span class="p">:</span> <span class="n">lists</span><span class="p">,</span> - <span class="s1">'teams_led'</span><span class="p">:</span> <span class="n">teams_led</span><span class="p">,</span> - <span class="s1">'teams'</span><span class="p">:</span> <span class="n">teams</span><span class="p">,</span> - <span class="s1">'graphs_owned'</span><span class="p">:</span> <span class="n">graphs_owned</span><span class="p">,</span> - <span class="s1">'graphs_private'</span><span class="p">:</span> <span class="n">graphs_private</span><span class="p">,</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/personal_page.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">AuthenticationForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/login.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@login_required</span> -<span class="k">def</span> <span class="nf">change_password</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">PasswordChangeForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">check_password</span><span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'password_prev'</span><span class="p">]):</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span> - <span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/change_password.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="s1">'The currently existing password you entered is incorrect'</span><span class="p">})</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'password_new'</span><span class="p">]</span> <span class="o">!=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'password_verif'</span><span class="p">]:</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/change_password.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'errormessage'</span><span class="p">:</span> <span class="s1">'Your new password entries must match'</span><span class="p">})</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">set_password</span><span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'password_new'</span><span class="p">])</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">ack</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">PasswordChangeForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack'</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span> <span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/change_password.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">reset_password_confirm</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">uidb64</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">token</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> - <span class="k">return</span> <span class="n">password_reset_confirm</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">template_name</span><span class="o">=</span><span class="s1">'scipost/reset_password_confirm.html'</span><span class="p">,</span> - <span class="n">uidb64</span><span class="o">=</span><span class="n">uidb64</span><span class="p">,</span> <span class="n">token</span><span class="o">=</span><span class="n">token</span><span class="p">,</span> - <span class="n">post_reset_redirect</span><span class="o">=</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:login'</span><span class="p">))</span> - -<span class="k">def</span> <span class="nf">reset_password</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">return</span> <span class="n">password_reset</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">template_name</span><span class="o">=</span><span class="s1">'scipost/reset_password.html'</span><span class="p">,</span> - <span class="n">email_template_name</span><span class="o">=</span><span class="s1">'scipost/reset_password_email.html'</span><span class="p">,</span> - <span class="n">subject_template_name</span><span class="o">=</span><span class="s1">'scipost/reset_password_subject.txt'</span><span class="p">,</span> - <span class="n">post_reset_redirect</span><span class="o">=</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:login'</span><span class="p">))</span> - - -<span class="nd">@login_required</span> -<span class="k">def</span> <span class="nf">update_personal_data</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">user_form</span> <span class="o">=</span> <span class="n">UpdateUserDataForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">cont_form</span> <span class="o">=</span> <span class="n">UpdatePersonalDataForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">user_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">cont_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">email</span> <span class="o">=</span> <span class="n">user_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">=</span> <span class="n">user_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'first_name'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">=</span> <span class="n">user_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="n">cont_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'title'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">discipline</span> <span class="o">=</span> <span class="n">cont_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'discipline'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">expertises</span> <span class="o">=</span> <span class="n">cont_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'expertises'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">orcid_id</span> <span class="o">=</span> <span class="n">cont_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'orcid_id'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">country_of_employment</span> <span class="o">=</span> <span class="n">cont_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'country_of_employment'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">address</span> <span class="o">=</span> <span class="n">cont_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'address'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">affiliation</span> <span class="o">=</span> <span class="n">cont_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'affiliation'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">personalwebpage</span> <span class="o">=</span> <span class="n">cont_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'personalwebpage'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">accepts_SciPost_emails</span> <span class="o">=</span> <span class="n">cont_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'accepts_SciPost_emails'</span><span class="p">]</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1">#return render(request, 'scipost/update_personal_data_ack.html')</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'Your personal data has been updated.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Return to your '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:personal_page'</span><span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'personal page'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">user_form</span> <span class="o">=</span> <span class="n">UpdateUserDataForm</span><span class="p">(</span><span class="n">instance</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">cont_form</span> <span class="o">=</span> <span class="n">UpdatePersonalDataForm</span><span class="p">(</span><span class="n">instance</span><span class="o">=</span><span class="n">contributor</span><span class="p">)</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/update_personal_data.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'user_form'</span><span class="p">:</span> <span class="n">user_form</span><span class="p">,</span> <span class="s1">'cont_form'</span><span class="p">:</span> <span class="n">cont_form</span><span class="p">})</span> - - -<span class="nd">@login_required</span> -<div class="viewcode-block" id="claim_authorships"><a class="viewcode-back" href="../../modules/views.html#scipost.views.claim_authorships">[docs]</a><span class="k">def</span> <span class="nf">claim_authorships</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> The system auto-detects potential authorships (of submissions,</span> -<span class="sd"> papers subject to commentaries, theses, ...).</span> -<span class="sd"> The contributor must confirm/deny authorship from the</span> -<span class="sd"> Personal Page.</span> -<span class="sd"> """</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - - <span class="n">submission_authorships_to_claim</span> <span class="o">=</span> <span class="p">(</span><span class="n">Submission</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author_list__contains</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors_false_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">]))</span> - <span class="n">sub_auth_claim_form</span> <span class="o">=</span> <span class="n">AuthorshipClaimForm</span><span class="p">()</span> - <span class="n">commentary_authorships_to_claim</span> <span class="o">=</span> <span class="p">(</span><span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author_list__contains</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">authors_false_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">]))</span> - <span class="n">com_auth_claim_form</span> <span class="o">=</span> <span class="n">AuthorshipClaimForm</span><span class="p">()</span> - <span class="n">thesis_authorships_to_claim</span> <span class="o">=</span> <span class="p">(</span><span class="n">ThesisLink</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author__contains</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">)</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">author_as_cont__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">author_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">author_false_claims__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">]))</span> - <span class="n">thesis_auth_claim_form</span> <span class="o">=</span> <span class="n">AuthorshipClaimForm</span><span class="p">()</span> - - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'submission_authorships_to_claim'</span><span class="p">:</span> <span class="n">submission_authorships_to_claim</span><span class="p">,</span> - <span class="s1">'sub_auth_claim_form'</span><span class="p">:</span> <span class="n">sub_auth_claim_form</span><span class="p">,</span> - <span class="s1">'commentary_authorships_to_claim'</span><span class="p">:</span> <span class="n">commentary_authorships_to_claim</span><span class="p">,</span> - <span class="s1">'com_auth_claim_form'</span><span class="p">:</span> <span class="n">com_auth_claim_form</span><span class="p">,</span> - <span class="s1">'thesis_authorships_to_claim'</span><span class="p">:</span> <span class="n">thesis_authorships_to_claim</span><span class="p">,</span> - <span class="s1">'thesis_auth_claim_form'</span><span class="p">:</span> <span class="n">thesis_auth_claim_form</span><span class="p">,</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/claim_authorships.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@login_required</span> -<span class="k">def</span> <span class="nf">claim_sub_authorship</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">submission_id</span><span class="p">,</span> <span class="n">claim</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span><span class="n">pk</span><span class="o">=</span><span class="n">submission_id</span><span class="p">)</span> - <span class="k">if</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'1'</span><span class="p">:</span> - <span class="n">submission</span><span class="o">.</span><span class="n">authors_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">newclaim</span> <span class="o">=</span> <span class="n">AuthorshipClaim</span><span class="p">(</span><span class="n">claimant</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">)</span> - <span class="n">newclaim</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">elif</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'0'</span><span class="p">:</span> - <span class="n">submission</span><span class="o">.</span><span class="n">authors_false_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="s1">'scipost:claim_authorships'</span><span class="p">)</span> - -<span class="nd">@login_required</span> -<span class="k">def</span> <span class="nf">claim_com_authorship</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">commentary_id</span><span class="p">,</span> <span class="n">claim</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Commentary</span><span class="p">,</span><span class="n">pk</span><span class="o">=</span><span class="n">commentary_id</span><span class="p">)</span> - <span class="k">if</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'1'</span><span class="p">:</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">authors_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">newclaim</span> <span class="o">=</span> <span class="n">AuthorshipClaim</span><span class="p">(</span><span class="n">claimant</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">commentary</span><span class="o">=</span><span class="n">commentary</span><span class="p">)</span> - <span class="n">newclaim</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">elif</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'0'</span><span class="p">:</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">authors_false_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">commentary</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="s1">'scipost:claim_authorships'</span><span class="p">)</span> - -<span class="nd">@login_required</span> -<span class="k">def</span> <span class="nf">claim_thesis_authorship</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">thesis_id</span><span class="p">,</span> <span class="n">claim</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">thesislink</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">ThesisLink</span><span class="p">,</span><span class="n">pk</span><span class="o">=</span><span class="n">thesis_id</span><span class="p">)</span> - <span class="k">if</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'1'</span><span class="p">:</span> - <span class="n">thesislink</span><span class="o">.</span><span class="n">author_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">newclaim</span> <span class="o">=</span> <span class="n">AuthorshipClaim</span><span class="p">(</span><span class="n">claimant</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">thesislink</span><span class="o">=</span><span class="n">thesislink</span><span class="p">)</span> - <span class="n">newclaim</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">elif</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'0'</span><span class="p">:</span> - <span class="n">thesislink</span><span class="o">.</span><span class="n">author_false_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">thesislink</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="s1">'scipost:claim_authorships'</span><span class="p">)</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_vet_authorship_claims'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">vet_authorship_claims</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">claims_to_vet</span> <span class="o">=</span> <span class="n">AuthorshipClaim</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="s1">'0'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'claims_to_vet'</span><span class="p">:</span> <span class="n">claims_to_vet</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/vet_authorship_claims.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_vet_authorship_claims'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">vet_authorship_claim</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">claim_id</span><span class="p">,</span> <span class="n">claim</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">vetting_contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">claim_to_vet</span> <span class="o">=</span> <span class="n">AuthorshipClaim</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">claim_id</span><span class="p">)</span> - - <span class="k">if</span> <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">submission</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">authors_claims</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">claim_to_vet</span><span class="o">.</span><span class="n">claimant</span><span class="p">)</span> - <span class="k">if</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'1'</span><span class="p">:</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">claim_to_vet</span><span class="o">.</span><span class="n">claimant</span><span class="p">)</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'1'</span> - <span class="k">elif</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'0'</span><span class="p">:</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">authors_false_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">claim_to_vet</span><span class="o">.</span><span class="n">claimant</span><span class="p">)</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'-1'</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">if</span> <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">commentary</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">authors_claims</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">claim_to_vet</span><span class="o">.</span><span class="n">claimant</span><span class="p">)</span> - <span class="k">if</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'1'</span><span class="p">:</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">claim_to_vet</span><span class="o">.</span><span class="n">claimant</span><span class="p">)</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'1'</span> - <span class="k">elif</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'0'</span><span class="p">:</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">authors_false_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">claim_to_vet</span><span class="o">.</span><span class="n">claimant</span><span class="p">)</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'-1'</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">commentary</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">if</span> <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">thesislink</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">thesislink</span><span class="o">.</span><span class="n">author_claims</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">claim_to_vet</span><span class="o">.</span><span class="n">claimant</span><span class="p">)</span> - <span class="k">if</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'1'</span><span class="p">:</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">thesislink</span><span class="o">.</span><span class="n">author_as_cont</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">claim_to_vet</span><span class="o">.</span><span class="n">claimant</span><span class="p">)</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'1'</span> - <span class="k">elif</span> <span class="n">claim</span> <span class="o">==</span> <span class="s1">'0'</span><span class="p">:</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">thesislink</span><span class="o">.</span><span class="n">author_false_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">claim_to_vet</span><span class="o">.</span><span class="n">claimant</span><span class="p">)</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'-1'</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">thesislink</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">vetted_by</span> <span class="o">=</span> <span class="n">vetting_contributor</span> - <span class="n">claim_to_vet</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="s1">'scipost:vet_authorship_claims'</span><span class="p">)</span> - - -<span class="nd">@login_required</span> -<div class="viewcode-block" id="contributor_info"><a class="viewcode-back" href="../../modules/views.html#scipost.views.contributor_info">[docs]</a><span class="k">def</span> <span class="nf">contributor_info</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">contributor_id</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Logged-in Contributors can see a digest of another</span> -<span class="sd"> Contributor's activities/contributions by clicking</span> -<span class="sd"> on the relevant name (in listing headers of Submissions, ...).</span> -<span class="sd"> """</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">contributor_id</span><span class="p">)</span> - <span class="n">contributor_publications</span> <span class="o">=</span> <span class="n">Publication</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">authors__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="n">contributor_submissions</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">authors__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="n">contributor_commentaries</span> <span class="o">=</span> <span class="n">Commentary</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">authors__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="n">contributor_theses</span> <span class="o">=</span> <span class="n">ThesisLink</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author_as_cont__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="n">contributor_comments</span> <span class="o">=</span> <span class="p">(</span><span class="n">Comment</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">is_author_reply</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">status__gte</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date_submitted'</span><span class="p">))</span> - <span class="n">contributor_authorreplies</span> <span class="o">=</span> <span class="p">(</span><span class="n">Comment</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">is_author_reply</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">status__gte</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date_submitted'</span><span class="p">))</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'contributor'</span><span class="p">:</span> <span class="n">contributor</span><span class="p">,</span> - <span class="s1">'contributor_publications'</span><span class="p">:</span> <span class="n">contributor_publications</span><span class="p">,</span> - <span class="s1">'contributor_submissions'</span><span class="p">:</span> <span class="n">contributor_submissions</span><span class="p">,</span> - <span class="s1">'contributor_commentaries'</span><span class="p">:</span> <span class="n">contributor_commentaries</span><span class="p">,</span> - <span class="s1">'contributor_theses'</span><span class="p">:</span> <span class="n">contributor_theses</span><span class="p">,</span> - <span class="s1">'contributor_comments'</span><span class="p">:</span> <span class="n">contributor_comments</span><span class="p">,</span> - <span class="s1">'contributor_authorreplies'</span><span class="p">:</span> <span class="n">contributor_authorreplies</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/contributor_info.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="c1">####################</span> -<span class="c1"># Email facilities #</span> -<span class="c1">####################</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_email_group_members'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="email_group_members"><a class="viewcode-back" href="../../modules/views.html#scipost.views.email_group_members">[docs]</a><span class="k">def</span> <span class="nf">email_group_members</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Method to send bulk emails to (members of) selected groups</span> -<span class="sd"> """</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">EmailGroupMembersForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="c1"># recipient_emails = []</span> - <span class="c1"># for member in form.cleaned_data['group'].user_set.all():</span> - <span class="c1"># recipient_emails.append(member.email)</span> - <span class="c1"># emailmessage = EmailMessage(</span> - <span class="c1"># form.cleaned_data['email_subject'],</span> - <span class="c1"># form.cleaned_data['email_text'],</span> - <span class="c1"># 'SciPost Admin <admin@scipost.org>',</span> - <span class="c1"># ['admin@scipost.org'],</span> - <span class="c1"># bcc=recipient_emails,</span> - <span class="c1"># reply_to=['admin@scipost.org'])</span> - <span class="c1"># emailmessage.send(fail_silently=False)</span> - <span class="c1"># with mail.get_connection() as connection:</span> - <span class="c1"># for member in form.cleaned_data['group'].user_set.all():</span> - <span class="c1"># email_text = ('Dear ' + title_dict[member.contributor.title] + ' ' +</span> - <span class="c1"># member.last_name + ', \n\n'</span> - <span class="c1"># + form.cleaned_data['email_text'])</span> - <span class="c1"># mail.EmailMessage(form.cleaned_data['email_subject'],</span> - <span class="c1"># email_text, 'SciPost Admin <admin@scipost.org>',</span> - <span class="c1"># [member.email], connection=connection).send()</span> - <span class="n">group_members</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'group'</span><span class="p">]</span><span class="o">.</span><span class="n">user_set</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> - <span class="n">p</span> <span class="o">=</span> <span class="n">Paginator</span><span class="p">(</span><span class="n">group_members</span><span class="p">,</span> <span class="mi">32</span><span class="p">)</span> - <span class="k">for</span> <span class="n">pagenr</span> <span class="ow">in</span> <span class="n">p</span><span class="o">.</span><span class="n">page_range</span><span class="p">:</span> - <span class="n">page</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">page</span><span class="p">(</span><span class="n">pagenr</span><span class="p">)</span> - <span class="k">with</span> <span class="n">mail</span><span class="o">.</span><span class="n">get_connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">connection</span><span class="p">:</span> - <span class="k">for</span> <span class="n">member</span> <span class="ow">in</span> <span class="n">page</span><span class="o">.</span><span class="n">object_list</span><span class="p">:</span> - <span class="k">if</span> <span class="n">member</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">accepts_SciPost_emails</span><span class="p">:</span> - <span class="n">email_text</span> <span class="o">=</span> <span class="s1">''</span> - <span class="n">email_text_html</span> <span class="o">=</span> <span class="s1">''</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'personalize'</span><span class="p">]:</span> - <span class="n">email_text</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Dear '</span> <span class="o">+</span> <span class="n">title_dict</span><span class="p">[</span><span class="n">member</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> - <span class="n">member</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">', </span><span class="se">\n\n</span><span class="s1">'</span><span class="p">)</span> - <span class="n">email_text_html</span> <span class="o">=</span> <span class="s1">'Dear {{ title }} {{ last_name }},<br/>'</span> - <span class="n">email_text</span> <span class="o">+=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_text'</span><span class="p">]</span> - <span class="n">email_text_html</span> <span class="o">+=</span> <span class="s1">'{{ email_text|linebreaks }}'</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'include_scipost_summary'</span><span class="p">]:</span> - <span class="n">email_text</span> <span class="o">+=</span> <span class="n">SCIPOST_SUMMARY_FOOTER</span> - <span class="n">email_text_html</span> <span class="o">+=</span> <span class="n">SCIPOST_SUMMARY_FOOTER_HTML</span> - <span class="n">email_text_html</span> <span class="o">+=</span> <span class="n">EMAIL_FOOTER</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'personalize'</span><span class="p">]:</span> - <span class="n">email_text</span> <span class="o">+=</span> <span class="n">EMAIL_UNSUBSCRIBE_LINK_PLAIN</span> - <span class="n">email_text_html</span> <span class="o">+=</span> <span class="n">EMAIL_UNSUBSCRIBE_LINK_HTML</span> - <span class="n">email_context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="n">title_dict</span><span class="p">[</span><span class="n">member</span><span class="o">.</span><span class="n">contributor</span><span class="o">.</span><span class="n">title</span><span class="p">],</span> - <span class="s1">'last_name'</span><span class="p">:</span> <span class="n">member</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span> - <span class="s1">'email_text'</span><span class="p">:</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_text'</span><span class="p">],</span> - <span class="p">})</span> - <span class="n">html_template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">email_text_html</span><span class="p">)</span> - <span class="n">html_version</span> <span class="o">=</span> <span class="n">html_template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">email_context</span><span class="p">)</span> - <span class="c1"># mail.EmailMessage(form.cleaned_data['email_subject'],</span> - <span class="c1"># email_text, 'SciPost Admin <admin@scipost.org>',</span> - <span class="c1"># [member.email], connection=connection).send()</span> - <span class="n">message</span> <span class="o">=</span> <span class="n">EmailMultiAlternatives</span><span class="p">(</span> - <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_subject'</span><span class="p">],</span> - <span class="n">email_text</span><span class="p">,</span> <span class="s1">'SciPost Admin <admin@scipost.org>'</span><span class="p">,</span> - <span class="p">[</span><span class="n">member</span><span class="o">.</span><span class="n">email</span><span class="p">],</span> <span class="n">connection</span><span class="o">=</span><span class="n">connection</span><span class="p">)</span> - <span class="n">message</span><span class="o">.</span><span class="n">attach_alternative</span><span class="p">(</span><span class="n">html_version</span><span class="p">,</span> <span class="s1">'text/html'</span><span class="p">)</span> - <span class="n">message</span><span class="o">.</span><span class="n">send</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'The email has been sent.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Return to your '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:personal_page'</span><span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'personal page'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'The form was invalidly filled.'</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/email_group_members.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">EmailGroupMembersForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/email_group_members.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_email_particulars'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="email_particular"><a class="viewcode-back" href="../../modules/views.html#scipost.views.email_particular">[docs]</a><span class="k">def</span> <span class="nf">email_particular</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Method to send emails to individuals (registered or not)</span> -<span class="sd"> """</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">EmailParticularForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">email_text</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_text'</span><span class="p">]</span> - <span class="n">email_text_html</span> <span class="o">=</span> <span class="s1">'{{ email_text|linebreaks }}'</span> - <span class="n">email_context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'email_text'</span><span class="p">:</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_text'</span><span class="p">]})</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'include_scipost_summary'</span><span class="p">]:</span> - <span class="n">email_text</span> <span class="o">+=</span> <span class="n">SCIPOST_SUMMARY_FOOTER</span> - <span class="n">email_text_html</span> <span class="o">+=</span> <span class="n">SCIPOST_SUMMARY_FOOTER_HTML</span> - - <span class="n">email_text_html</span> <span class="o">+=</span> <span class="s1">'<br/>'</span> <span class="o">+</span> <span class="n">EMAIL_FOOTER</span> - <span class="n">html_template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">email_text_html</span><span class="p">)</span> - <span class="n">html_version</span> <span class="o">=</span> <span class="n">html_template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">email_context</span><span class="p">)</span> - <span class="n">message</span> <span class="o">=</span> <span class="n">EmailMultiAlternatives</span><span class="p">(</span> - <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_subject'</span><span class="p">],</span> - <span class="n">email_text</span><span class="p">,</span> <span class="s1">'SciPost Admin <admin@scipost.org>'</span><span class="p">,</span> - <span class="p">[</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_address'</span><span class="p">]],</span> - <span class="n">bcc</span><span class="o">=</span><span class="p">[</span><span class="s1">'admin@scipost.org'</span><span class="p">])</span> - <span class="n">message</span><span class="o">.</span><span class="n">attach_alternative</span><span class="p">(</span><span class="n">html_version</span><span class="p">,</span> <span class="s1">'text/html'</span><span class="p">)</span> - <span class="n">message</span><span class="o">.</span><span class="n">send</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'The email has been sent.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Return to your '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:personal_page'</span><span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'personal page'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">EmailParticularForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/email_particular.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_email_particulars'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="send_precooked_email"><a class="viewcode-back" href="../../modules/views.html#scipost.views.send_precooked_email">[docs]</a><span class="k">def</span> <span class="nf">send_precooked_email</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Method to send precooked emails to individuals (registered or not)</span> -<span class="sd"> """</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SendPrecookedEmailForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">precookedEmail</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_option'</span><span class="p">]</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_address'</span><span class="p">]</span> <span class="ow">in</span> <span class="n">precookedEmail</span><span class="o">.</span><span class="n">emailed_to</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'This message has already been sent to this address'</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> - <span class="n">context</span><span class="o">=</span><span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - <span class="n">precookedEmail</span><span class="o">.</span><span class="n">emailed_to</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_address'</span><span class="p">])</span> - <span class="n">precookedEmail</span><span class="o">.</span><span class="n">date_last_used</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">date</span><span class="p">()</span> - <span class="n">precookedEmail</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">email_text</span> <span class="o">=</span> <span class="n">precookedEmail</span><span class="o">.</span><span class="n">email_text</span> - <span class="n">email_text_html</span> <span class="o">=</span> <span class="s1">'{{ email_text|linebreaks }}'</span> - <span class="n">email_context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'email_text'</span><span class="p">:</span> <span class="n">precookedEmail</span><span class="o">.</span><span class="n">email_text_html</span><span class="p">})</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'include_scipost_summary'</span><span class="p">]:</span> - <span class="n">email_text</span> <span class="o">+=</span> <span class="n">SCIPOST_SUMMARY_FOOTER</span> - <span class="n">email_text_html</span> <span class="o">+=</span> <span class="n">SCIPOST_SUMMARY_FOOTER_HTML</span> - - <span class="n">email_text_html</span> <span class="o">+=</span> <span class="s1">'<br/>'</span> <span class="o">+</span> <span class="n">EMAIL_FOOTER</span> - <span class="n">html_template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">email_text_html</span><span class="p">)</span> - <span class="n">html_version</span> <span class="o">=</span> <span class="n">html_template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">email_context</span><span class="p">)</span> - <span class="n">message</span> <span class="o">=</span> <span class="n">EmailMultiAlternatives</span><span class="p">(</span> - <span class="n">precookedEmail</span><span class="o">.</span><span class="n">email_subject</span><span class="p">,</span> - <span class="c1">#email_text, 'SciPost Admin <admin@scipost.org>',</span> - <span class="n">email_text</span><span class="p">,</span> - <span class="n">SciPost_from_addresses_dict</span><span class="p">[</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'from_address'</span><span class="p">]],</span> - <span class="p">[</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_address'</span><span class="p">]],</span> - <span class="n">bcc</span><span class="o">=</span><span class="p">[</span><span class="s1">'admin@scipost.org'</span><span class="p">])</span> - <span class="n">message</span><span class="o">.</span><span class="n">attach_alternative</span><span class="p">(</span><span class="n">html_version</span><span class="p">,</span> <span class="s1">'text/html'</span><span class="p">)</span> - <span class="n">message</span><span class="o">.</span><span class="n">send</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'The email has been sent.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Return to your '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:personal_page'</span><span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'personal page'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SendPrecookedEmailForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/send_precooked_email.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="c1">#####################</span> -<span class="c1"># Editorial College #</span> -<span class="c1">#####################</span> - - -<span class="k">def</span> <span class="nf">EdCol_bylaws</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/EdCol_by-laws.html'</span><span class="p">)</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_view_pool'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">Fellow_activity_overview</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">Fellow_id</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> - <span class="n">Fellows</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">user__groups__name</span><span class="o">=</span><span class="s1">'Editorial College'</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'user__last_name'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'Fellows'</span><span class="p">:</span> <span class="n">Fellows</span><span class="p">,}</span> - <span class="k">if</span> <span class="n">Fellow_id</span><span class="p">:</span> - <span class="n">Fellow</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">Fellow_id</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'Fellow'</span><span class="p">]</span> <span class="o">=</span> <span class="n">Fellow</span> - <span class="n">assignments_of_Fellow</span> <span class="o">=</span> <span class="n">EditorialAssignment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">to</span><span class="o">=</span><span class="n">Fellow</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date_created'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'assignments_of_Fellow'</span><span class="p">]</span> <span class="o">=</span> <span class="n">assignments_of_Fellow</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/Fellow_activity_overview.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="c1">#########</span> -<span class="c1"># Lists #</span> -<span class="c1">#########</span> - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.add_list'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">create_list</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">listcreated</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">message</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span> - <span class="n">create_list_form</span> <span class="o">=</span> <span class="n">CreateListForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">create_list_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">newlist</span> <span class="o">=</span> <span class="n">List</span><span class="p">(</span><span class="n">owner</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">title</span><span class="o">=</span><span class="n">create_list_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'title'</span><span class="p">],</span> - <span class="n">description</span><span class="o">=</span><span class="n">create_list_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'description'</span><span class="p">],</span> - <span class="n">private</span><span class="o">=</span><span class="n">create_list_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'private'</span><span class="p">],</span> - <span class="n">created</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">())</span> - <span class="n">newlist</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">listcreated</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'scipost.change_list'</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">newlist</span><span class="p">)</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'scipost.view_list'</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">newlist</span><span class="p">)</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'scipost.delete_list'</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">newlist</span><span class="p">)</span> - <span class="n">message</span> <span class="o">=</span> <span class="s1">'List '</span> <span class="o">+</span> <span class="n">create_list_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'title'</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' was successfully created.'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">create_list_form</span> <span class="o">=</span> <span class="n">CreateListForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'create_list_form'</span><span class="p">:</span> <span class="n">create_list_form</span><span class="p">,</span> <span class="s1">'listcreated'</span><span class="p">:</span> <span class="n">listcreated</span><span class="p">,</span> - <span class="s1">'message'</span><span class="p">:</span> <span class="n">message</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/create_list.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'scipost.view_list'</span><span class="p">,</span> <span class="p">(</span><span class="n">List</span><span class="p">,</span> <span class="s1">'id'</span><span class="p">,</span> <span class="s1">'list_id'</span><span class="p">))</span> -<span class="k">def</span> <span class="nf">list</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">list_id</span><span class="p">):</span> - <span class="nb">list</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">List</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">list_id</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'list'</span><span class="p">:</span> <span class="nb">list</span><span class="p">}</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span> - <span class="n">search_for_list_form</span> <span class="o">=</span> <span class="n">SearchForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">search_for_list_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">context</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">documentsSearchResults</span><span class="p">(</span><span class="n">search_for_list_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'query'</span><span class="p">]))</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">search_for_list_form</span> <span class="o">=</span> <span class="n">SearchForm</span><span class="p">()</span> - <span class="n">context</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s1">'search_for_list_form'</span><span class="p">:</span> <span class="n">search_for_list_form</span><span class="p">})</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/list.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'scipost.change_list'</span><span class="p">,</span> <span class="p">(</span><span class="n">List</span><span class="p">,</span> <span class="s1">'id'</span><span class="p">,</span> <span class="s1">'list_id'</span><span class="p">))</span> -<span class="k">def</span> <span class="nf">list_add_element</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">list_id</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">element_id</span><span class="p">):</span> - <span class="nb">list</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">List</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">list_id</span><span class="p">)</span> - <span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="s1">'C'</span><span class="p">:</span> - <span class="n">commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Commentary</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">element_id</span><span class="p">)</span> - <span class="nb">list</span><span class="o">.</span><span class="n">commentaries</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">commentary</span><span class="p">)</span> - <span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="s1">'S'</span><span class="p">:</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">element_id</span><span class="p">)</span> - <span class="nb">list</span><span class="o">.</span><span class="n">submissions</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">submission</span><span class="p">)</span> - <span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="s1">'T'</span><span class="p">:</span> - <span class="n">thesislink</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">ThesisLink</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">element_id</span><span class="p">)</span> - <span class="nb">list</span><span class="o">.</span><span class="n">thesislinks</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">thesislink</span><span class="p">)</span> - <span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="s1">'c'</span><span class="p">:</span> - <span class="n">comment</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Comment</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">element_id</span><span class="p">)</span> - <span class="nb">list</span><span class="o">.</span><span class="n">comments</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">comment</span><span class="p">)</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:list'</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'list_id'</span><span class="p">:</span> <span class="n">list_id</span><span class="p">}))</span> - - -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'scipost.change_list'</span><span class="p">,</span> <span class="p">(</span><span class="n">List</span><span class="p">,</span> <span class="s1">'id'</span><span class="p">,</span> <span class="s1">'list_id'</span><span class="p">))</span> -<span class="k">def</span> <span class="nf">list_remove_element</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">list_id</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">element_id</span><span class="p">):</span> - <span class="nb">list</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">List</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">list_id</span><span class="p">)</span> - <span class="k">if</span> <span class="nb">type</span> <span class="o">==</span> <span class="s1">'C'</span><span class="p">:</span> - <span class="n">commentary</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Commentary</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">element_id</span><span class="p">)</span> - <span class="nb">list</span><span class="o">.</span><span class="n">commentaries</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">commentary</span><span class="p">)</span> - <span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="s1">'S'</span><span class="p">:</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">element_id</span><span class="p">)</span> - <span class="nb">list</span><span class="o">.</span><span class="n">submissions</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">submission</span><span class="p">)</span> - <span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="s1">'T'</span><span class="p">:</span> - <span class="n">thesislink</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">ThesisLink</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">element_id</span><span class="p">)</span> - <span class="nb">list</span><span class="o">.</span><span class="n">thesislinks</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">thesislink</span><span class="p">)</span> - <span class="k">elif</span> <span class="nb">type</span> <span class="o">==</span> <span class="s1">'c'</span><span class="p">:</span> - <span class="n">comment</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Comment</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">element_id</span><span class="p">)</span> - <span class="nb">list</span><span class="o">.</span><span class="n">comments</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">comment</span><span class="p">)</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:list'</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'list_id'</span><span class="p">:</span> <span class="n">list_id</span><span class="p">}))</span> - - -<span class="c1">#########</span> -<span class="c1"># Teams #</span> -<span class="c1">#########</span> - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.add_team'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">create_team</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span> - <span class="n">create_team_form</span> <span class="o">=</span> <span class="n">CreateTeamForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">create_team_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">newteam</span> <span class="o">=</span> <span class="n">Team</span><span class="p">(</span><span class="n">leader</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">name</span><span class="o">=</span><span class="n">create_team_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'name'</span><span class="p">],</span> - <span class="n">established</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">())</span> - <span class="n">newteam</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'scipost.change_team'</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">newteam</span><span class="p">)</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'scipost.view_team'</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">newteam</span><span class="p">)</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'scipost.delete_team'</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">newteam</span><span class="p">)</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:add_team_member'</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'team_id'</span><span class="p">:</span> <span class="n">newteam</span><span class="o">.</span><span class="n">id</span><span class="p">}))</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">create_team_form</span> <span class="o">=</span> <span class="n">CreateTeamForm</span><span class="p">()</span> - <span class="n">add_team_member_form</span> <span class="o">=</span> <span class="n">AddTeamMemberForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'create_team_form'</span><span class="p">:</span> <span class="n">create_team_form</span><span class="p">,</span> - <span class="s1">'add_team_member_form'</span><span class="p">:</span> <span class="n">add_team_member_form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/create_team.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'scipost.change_team'</span><span class="p">,</span> <span class="p">(</span><span class="n">Team</span><span class="p">,</span> <span class="s1">'id'</span><span class="p">,</span> <span class="s1">'team_id'</span><span class="p">))</span> -<span class="k">def</span> <span class="nf">add_team_member</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">team_id</span><span class="p">,</span> <span class="n">contributor_id</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> - <span class="n">team</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Team</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">team_id</span><span class="p">)</span> - <span class="n">contributors_found</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="n">contributor_id</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">contributor_id</span><span class="p">)</span> - <span class="n">team</span><span class="o">.</span><span class="n">members</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">team</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'scipost.view_team'</span><span class="p">,</span> <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">team</span><span class="p">)</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:add_team_member'</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'team_id'</span><span class="p">:</span> <span class="n">team_id</span><span class="p">}))</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span> - <span class="n">add_team_member_form</span> <span class="o">=</span> <span class="n">AddTeamMemberForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">add_team_member_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">contributors_found</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">user__last_name__icontains</span><span class="o">=</span><span class="n">add_team_member_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">])</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">add_team_member_form</span> <span class="o">=</span> <span class="n">AddTeamMemberForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'team'</span><span class="p">:</span> <span class="n">team</span><span class="p">,</span> <span class="s1">'add_team_member_form'</span><span class="p">:</span> <span class="n">add_team_member_form</span><span class="p">,</span> - <span class="s1">'contributors_found'</span><span class="p">:</span> <span class="n">contributors_found</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/add_team_member.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="c1">##########</span> -<span class="c1"># Graphs #</span> -<span class="c1">##########</span> - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.add_graph'</span><span class="p">,</span> <span class="n">return_403</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">create_graph</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">graphcreated</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">message</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span> - <span class="n">create_graph_form</span> <span class="o">=</span> <span class="n">CreateGraphForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">create_graph_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">newgraph</span> <span class="o">=</span> <span class="n">Graph</span><span class="p">(</span><span class="n">owner</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">title</span><span class="o">=</span><span class="n">create_graph_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'title'</span><span class="p">],</span> - <span class="n">description</span><span class="o">=</span><span class="n">create_graph_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'description'</span><span class="p">],</span> - <span class="n">private</span><span class="o">=</span><span class="n">create_graph_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'private'</span><span class="p">],</span> - <span class="n">created</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">())</span> - <span class="n">newgraph</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'scipost.change_graph'</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">newgraph</span><span class="p">)</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'scipost.view_graph'</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">newgraph</span><span class="p">)</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'scipost.delete_graph'</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">newgraph</span><span class="p">)</span> - <span class="n">graphcreated</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">message</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Graph '</span> <span class="o">+</span> <span class="n">create_graph_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'title'</span><span class="p">]</span> - <span class="o">+</span> <span class="s1">' was successfully created.'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">create_graph_form</span> <span class="o">=</span> <span class="n">CreateGraphForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'create_graph_form'</span><span class="p">:</span> <span class="n">create_graph_form</span><span class="p">,</span> <span class="s1">'graphcreated'</span><span class="p">:</span> <span class="n">graphcreated</span><span class="p">,</span> - <span class="s1">'message'</span><span class="p">:</span> <span class="n">message</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/create_graph.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'scipost.view_graph'</span><span class="p">,</span> <span class="p">(</span><span class="n">Graph</span><span class="p">,</span> <span class="s1">'id'</span><span class="p">,</span> <span class="s1">'graph_id'</span><span class="p">))</span> -<span class="k">def</span> <span class="nf">graph</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">graph_id</span><span class="p">):</span> - <span class="n">graph</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Graph</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">graph_id</span><span class="p">)</span> - <span class="n">nodes</span> <span class="o">=</span> <span class="n">Node</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">graph</span><span class="p">)</span> - <span class="n">arcs</span> <span class="o">=</span> <span class="n">Arc</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">graph</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span> - <span class="n">attach_teams_form</span> <span class="o">=</span> <span class="n">ManageTeamsForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">,</span> - <span class="n">contributor</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">initial</span><span class="o">=</span><span class="p">{</span> - <span class="s1">'teams_with_access'</span><span class="p">:</span> <span class="n">graph</span><span class="o">.</span><span class="n">teams_with_access</span><span class="o">.</span><span class="n">all</span><span class="p">()}</span> - <span class="p">)</span> - <span class="n">create_node_form</span> <span class="o">=</span> <span class="n">CreateNodeForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">create_arc_form</span> <span class="o">=</span> <span class="n">CreateArcForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">,</span> <span class="n">graph</span><span class="o">=</span><span class="n">graph</span><span class="p">)</span> - <span class="k">if</span> <span class="n">attach_teams_form</span><span class="o">.</span><span class="n">has_changed</span><span class="p">()</span> <span class="ow">and</span> <span class="n">attach_teams_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">graph</span><span class="o">.</span><span class="n">teams_with_access</span> <span class="o">=</span> <span class="n">attach_teams_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'teams_with_access'</span><span class="p">]</span> - <span class="n">graph</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">elif</span> <span class="n">create_node_form</span><span class="o">.</span><span class="n">has_changed</span><span class="p">()</span> <span class="ow">and</span> <span class="n">create_node_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">newnode</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">graph</span><span class="p">,</span> - <span class="n">added_by</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">created</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">name</span><span class="o">=</span><span class="n">create_node_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'name'</span><span class="p">],</span> - <span class="n">description</span><span class="o">=</span><span class="n">create_node_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'description'</span><span class="p">])</span> - <span class="n">newnode</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">elif</span> <span class="n">create_arc_form</span><span class="o">.</span><span class="n">has_changed</span><span class="p">()</span> <span class="ow">and</span> <span class="n">create_arc_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">sourcenode</span> <span class="o">=</span> <span class="n">create_arc_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'source'</span><span class="p">]</span> - <span class="n">targetnode</span> <span class="o">=</span> <span class="n">create_arc_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'target'</span><span class="p">]</span> - <span class="k">if</span> <span class="n">sourcenode</span> <span class="o">!=</span> <span class="n">targetnode</span><span class="p">:</span> - <span class="n">newarc</span> <span class="o">=</span> <span class="n">Arc</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">graph</span><span class="p">,</span> - <span class="n">added_by</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">created</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">source</span><span class="o">=</span><span class="n">sourcenode</span><span class="p">,</span> - <span class="n">target</span><span class="o">=</span><span class="n">targetnode</span><span class="p">,</span> - <span class="n">length</span><span class="o">=</span><span class="n">create_arc_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'length'</span><span class="p">]</span> - <span class="p">)</span> - <span class="n">newarc</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">attach_teams_form</span> <span class="o">=</span> <span class="n">ManageTeamsForm</span><span class="p">(</span><span class="n">contributor</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">initial</span><span class="o">=</span><span class="p">{</span> - <span class="s1">'teams_with_access'</span><span class="p">:</span> <span class="n">graph</span><span class="o">.</span><span class="n">teams_with_access</span><span class="o">.</span><span class="n">all</span><span class="p">()}</span> - <span class="p">)</span> - <span class="n">create_node_form</span> <span class="o">=</span> <span class="n">CreateNodeForm</span><span class="p">()</span> - <span class="n">create_arc_form</span> <span class="o">=</span> <span class="n">CreateArcForm</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">graph</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'graph'</span><span class="p">:</span> <span class="n">graph</span><span class="p">,</span> <span class="s1">'nodes'</span><span class="p">:</span> <span class="n">nodes</span><span class="p">,</span> - <span class="s1">'attach_teams_form'</span><span class="p">:</span> <span class="n">attach_teams_form</span><span class="p">,</span> - <span class="s1">'create_node_form'</span><span class="p">:</span> <span class="n">create_node_form</span><span class="p">,</span> - <span class="s1">'create_arc_form'</span><span class="p">:</span> <span class="n">create_arc_form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/graph.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">edit_graph_node</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">node_id</span><span class="p">):</span> - <span class="n">node</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">node_id</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">''</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">has_perm</span><span class="p">(</span><span class="s1">'scipost.change_graph'</span><span class="p">,</span> <span class="n">node</span><span class="o">.</span><span class="n">graph</span><span class="p">):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'You do not have permission to edit this graph.'</span> - <span class="k">elif</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span> - <span class="n">edit_node_form</span> <span class="o">=</span> <span class="n">CreateNodeForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">,</span> <span class="n">instance</span><span class="o">=</span><span class="n">node</span><span class="p">)</span> - <span class="k">if</span> <span class="n">edit_node_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="o">=</span><span class="n">edit_node_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span> - <span class="n">node</span><span class="o">.</span><span class="n">description</span><span class="o">=</span><span class="n">edit_node_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'description'</span><span class="p">]</span> - <span class="n">node</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">create_node_form</span> <span class="o">=</span> <span class="n">CreateNodeForm</span><span class="p">()</span> - <span class="n">create_arc_form</span> <span class="o">=</span> <span class="n">CreateArcForm</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">graph</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'create_node_form'</span><span class="p">:</span> <span class="n">create_node_form</span><span class="p">,</span> - <span class="s1">'create_arc_form'</span><span class="p">:</span> <span class="n">create_arc_form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:graph'</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'graph_id'</span><span class="p">:</span> <span class="n">node</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">id</span><span class="p">}),</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">edit_node_form</span> <span class="o">=</span> <span class="n">CreateNodeForm</span><span class="p">(</span><span class="n">instance</span><span class="o">=</span><span class="n">node</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'graph'</span><span class="p">:</span> <span class="n">graph</span><span class="p">,</span> <span class="s1">'node'</span><span class="p">:</span> <span class="n">node</span><span class="p">,</span> <span class="s1">'edit_node_form'</span><span class="p">:</span> <span class="n">edit_node_form</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/edit_graph_node.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">delete_graph_node</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">node_id</span><span class="p">):</span> - <span class="n">node</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">node_id</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">''</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">has_perm</span><span class="p">(</span><span class="s1">'scipost.change_graph'</span><span class="p">,</span> <span class="n">node</span><span class="o">.</span><span class="n">graph</span><span class="p">):</span> - <span class="k">raise</span> <span class="n">PermissionDenied</span> - <span class="k">else</span><span class="p">:</span> - <span class="c1"># Remove all the graph arcs</span> - <span class="n">Arc</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">source</span><span class="o">=</span><span class="n">node</span><span class="p">)</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span> - <span class="n">Arc</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">node</span><span class="p">)</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span> - <span class="c1"># Delete node itself</span> - <span class="n">node</span><span class="o">.</span><span class="n">delete</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:graph'</span><span class="p">,</span> <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'graph_id'</span><span class="p">:</span> <span class="n">node</span><span class="o">.</span><span class="n">graph</span><span class="o">.</span><span class="n">id</span><span class="p">}))</span> - - -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'scipost.view_graph'</span><span class="p">,</span> <span class="p">(</span><span class="n">Graph</span><span class="p">,</span> <span class="s1">'id'</span><span class="p">,</span> <span class="s1">'graph_id'</span><span class="p">))</span> -<div class="viewcode-block" id="api_graph"><a class="viewcode-back" href="../../modules/views.html#scipost.views.api_graph">[docs]</a><span class="k">def</span> <span class="nf">api_graph</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">graph_id</span><span class="p">):</span> - <span class="sd">""" Produce JSON data to plot graph """</span> - <span class="n">graph</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Graph</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">graph_id</span><span class="p">)</span> - <span class="n">nodes</span> <span class="o">=</span> <span class="n">Node</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">graph</span><span class="p">)</span> - <span class="n">arcs</span> <span class="o">=</span> <span class="n">Arc</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">graph</span><span class="p">)</span> - <span class="n">nodesjson</span> <span class="o">=</span> <span class="p">[]</span> - <span class="n">arcsjson</span> <span class="o">=</span> <span class="p">[]</span> - <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">nodes</span><span class="p">:</span> - <span class="n">nodesjson</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s1">'name'</span><span class="p">:</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="s1">'id'</span><span class="p">:</span> <span class="n">node</span><span class="o">.</span><span class="n">id</span><span class="p">})</span> -<span class="c1"># for origin in node.arcs_in.all():</span> -<span class="c1"># links.append({'source': origin.name, 'source_id': origin.id,</span> -<span class="c1"># 'target': node.name, 'target_id': node.id})</span> - <span class="k">for</span> <span class="n">arc</span> <span class="ow">in</span> <span class="n">arcs</span><span class="p">:</span> - <span class="n">arcsjson</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s1">'id'</span><span class="p">:</span> <span class="n">arc</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> - <span class="s1">'source'</span><span class="p">:</span> <span class="n">arc</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="s1">'source_id'</span><span class="p">:</span> <span class="n">arc</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> - <span class="s1">'target'</span><span class="p">:</span> <span class="n">arc</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="s1">'target_id'</span><span class="p">:</span> <span class="n">arc</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> - <span class="s1">'length'</span><span class="p">:</span> <span class="n">arc</span><span class="o">.</span><span class="n">length</span><span class="p">})</span> - <span class="k">return</span> <span class="n">JsonResponse</span><span class="p">({</span><span class="s1">'nodes'</span><span class="p">:</span> <span class="n">nodesjson</span><span class="p">,</span> <span class="s1">'arcs'</span><span class="p">:</span> <span class="n">arcsjson</span><span class="p">},</span> <span class="n">safe</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></div> - - - -<span class="c1">#############################</span> -<span class="c1"># Supporting Partners Board #</span> -<span class="c1">#############################</span> - -<span class="k">def</span> <span class="nf">supporting_partners</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/supporting_partners.html'</span><span class="p">)</span> - -<span class="nd">@login_required</span> -<span class="k">def</span> <span class="nf">SPB_membership_request</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">''</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">SP_form</span> <span class="o">=</span> <span class="n">SupportingPartnerForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">membership_form</span> <span class="o">=</span> <span class="n">SPBMembershipForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">SP_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">membership_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">partner</span> <span class="o">=</span> <span class="n">SupportingPartner</span><span class="p">(</span> - <span class="n">partner_type</span><span class="o">=</span><span class="n">SP_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'partner_type'</span><span class="p">],</span> - <span class="n">status</span><span class="o">=</span><span class="s1">'Prospective'</span><span class="p">,</span> - <span class="n">institution</span><span class="o">=</span><span class="n">SP_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'institution'</span><span class="p">],</span> - <span class="n">institution_acronym</span><span class="o">=</span><span class="n">SP_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'institution_acronym'</span><span class="p">],</span> - <span class="n">institution_address</span><span class="o">=</span><span class="n">SP_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'institution_address'</span><span class="p">],</span> - <span class="n">contact_person</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="p">)</span> - <span class="n">partner</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">agreement</span> <span class="o">=</span> <span class="n">SPBMembershipAgreement</span><span class="p">(</span> - <span class="n">partner</span><span class="o">=</span><span class="n">partner</span><span class="p">,</span> - <span class="n">status</span><span class="o">=</span><span class="s1">'Submitted'</span><span class="p">,</span> - <span class="n">date_requested</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">date</span><span class="p">(),</span> - <span class="n">start_date</span><span class="o">=</span><span class="n">membership_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'start_date'</span><span class="p">],</span> - <span class="n">duration</span><span class="o">=</span><span class="n">membership_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'duration'</span><span class="p">],</span> - <span class="n">offered_yearly_contribution</span><span class="o">=</span><span class="n">membership_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'offered_yearly_contribution'</span><span class="p">],</span> - <span class="p">)</span> - <span class="n">agreement</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">ack_message</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Thank you for your SPB Membership request. '</span> - <span class="s1">'We will get back to you in the very near future '</span> - <span class="s1">'with details of the proposed agreement.'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_message'</span><span class="p">:</span> <span class="n">ack_message</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'The form was not filled properly.'</span> - - <span class="k">else</span><span class="p">:</span> - <span class="n">SP_form</span> <span class="o">=</span> <span class="n">SupportingPartnerForm</span><span class="p">()</span> - <span class="n">membership_form</span> <span class="o">=</span> <span class="n">SPBMembershipForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span> - <span class="s1">'SP_form'</span><span class="p">:</span> <span class="n">SP_form</span><span class="p">,</span> - <span class="s1">'membership_form'</span><span class="p">:</span> <span class="n">membership_form</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/SPB_membership_request.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> -</pre></div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_modules/submissions/models.html b/docs/_build/html/_modules/submissions/models.html deleted file mode 100644 index a2ff681c22d9f599d7e8de22e5840d6238dc0f61..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/submissions/models.html +++ /dev/null @@ -1,1009 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>submissions.models — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../../genindex.html"/> - <link rel="search" title="Search" href="../../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../../index.html"/> - <link rel="up" title="Module code" href="../index.html"/> - - - <script src="../../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../../index.html">Docs</a> »</li> - - <li><a href="../index.html">Module code</a> »</li> - - <li>submissions.models</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>Source code for submissions.models</h1><div class="highlight"><pre> -<span></span><span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span> -<span class="kn">from</span> <span class="nn">django.utils.safestring</span> <span class="k">import</span> <span class="n">mark_safe</span> -<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">models</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span> -<span class="kn">from</span> <span class="nn">django.contrib.postgres.fields</span> <span class="k">import</span> <span class="n">ArrayField</span><span class="p">,</span> <span class="n">JSONField</span> -<span class="kn">from</span> <span class="nn">django.template</span> <span class="k">import</span> <span class="n">Template</span><span class="p">,</span> <span class="n">Context</span> - -<span class="kn">from</span> <span class="nn">.models</span> <span class="k">import</span> <span class="o">*</span> - -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">ChoiceArrayField</span><span class="p">,</span> <span class="n">Contributor</span><span class="p">,</span> <span class="n">title_dict</span><span class="p">,</span> <span class="n">Remark</span> -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span> <span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">,</span> <span class="n">subject_areas_dict</span><span class="p">,</span> <span class="n">TITLE_CHOICES</span> -<span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">SCIPOST_JOURNALS_SUBMIT</span><span class="p">,</span> <span class="n">SCIPOST_JOURNALS_DOMAINS</span><span class="p">,</span> <span class="n">SCIPOST_JOURNALS_SPECIALIZATIONS</span> -<span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">journals_submit_dict</span><span class="p">,</span> <span class="n">journals_domains_dict</span><span class="p">,</span> <span class="n">journals_spec_dict</span> -<span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">Publication</span> - - -<span class="c1">###############</span> -<span class="c1"># Submissions:</span> -<span class="c1">###############</span> - -<span class="n">SUBMISSION_STATUS</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'unassigned'</span><span class="p">,</span> <span class="s1">'Unassigned, undergoing pre-screening'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'assignment_failed'</span><span class="p">,</span> <span class="s1">'Failed to assign Editor-in-charge; manuscript rejected'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'EICassigned'</span><span class="p">,</span> <span class="s1">'Editor-in-charge assigned, manuscript under review'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'review_closed'</span><span class="p">,</span> <span class="s1">'Review period closed, editorial recommendation pending'</span><span class="p">),</span> - <span class="c1"># If revisions required: resubmission creates a new Submission object</span> - <span class="p">(</span><span class="s1">'revision_requested'</span><span class="p">,</span> <span class="s1">'Editor-in-charge has requested revision'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'resubmitted'</span><span class="p">,</span> <span class="s1">'Has been resubmitted'</span><span class="p">),</span> - <span class="c1"># If acceptance/rejection:</span> - <span class="p">(</span><span class="s1">'voting_in_preparation'</span><span class="p">,</span> <span class="s1">'Voting in preparation (eligible Fellows being selected)'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'put_to_EC_voting'</span><span class="p">,</span> <span class="s1">'Undergoing voting at the Editorial College'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'EC_vote_completed'</span><span class="p">,</span> <span class="s1">'Editorial College voting rounded up'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'accepted'</span><span class="p">,</span> <span class="s1">'Publication decision taken: accept'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'rejected'</span><span class="p">,</span> <span class="s1">'Publication decision taken: reject'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'rejected_visible'</span><span class="p">,</span> <span class="s1">'Publication decision taken: reject (still publicly visible)'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'published'</span><span class="p">,</span> <span class="s1">'Published'</span><span class="p">),</span> - <span class="c1"># If withdrawn:</span> - <span class="p">(</span><span class="s1">'withdrawn'</span><span class="p">,</span> <span class="s1">'Withdrawn by the Authors'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">submission_status_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SUBMISSION_STATUS</span><span class="p">)</span> - -<span class="n">SUBMISSION_STATUS_OUT_OF_POOL</span> <span class="o">=</span> <span class="p">[</span> - <span class="s1">'assignment_failed'</span><span class="p">,</span> - <span class="s1">'resubmitted'</span><span class="p">,</span> - <span class="s1">'published'</span><span class="p">,</span> - <span class="s1">'withdrawn'</span><span class="p">,</span> -<span class="p">]</span> - -<span class="n">SUBMISSION_STATUS_PUBLICLY_UNLISTED</span> <span class="o">=</span> <span class="p">[</span> - <span class="s1">'unassigned'</span><span class="p">,</span> - <span class="s1">'assignment_failed'</span><span class="p">,</span> - <span class="s1">'resubmitted'</span><span class="p">,</span> - <span class="s1">'rejected'</span><span class="p">,</span> - <span class="s1">'published'</span><span class="p">,</span> - <span class="s1">'withdrawn'</span><span class="p">,</span> -<span class="p">]</span> - -<span class="c1"># SUBMISSION_ACTION_REQUIRED = (</span> -<span class="c1"># ('assign_EIC', 'Editor-in-charge to be assigned'),</span> -<span class="c1"># # ('Fellow_accepts_or_refuse_assignment', 'Fellow must accept or refuse assignment'),</span> -<span class="c1"># ('EIC_runs_refereeing_round', 'Editor-in-charge to run refereeing round (inviting referees)'),</span> -<span class="c1"># ('EIC_closes_refereeing_round', 'Editor-in-charge to close refereeing round'),</span> -<span class="c1"># ('EIC_invites_author_response', 'Editor-in-charge invites authors to complete their replies'),</span> -<span class="c1"># ('EIC_formulates_editorial_recommendation', 'Editor-in-charge to formulate editorial recommendation'),</span> -<span class="c1"># ('EC_ratification', 'Editorial College ratifies editorial recommendation'),</span> -<span class="c1"># ('Decision_to_authors', 'Editor-in-charge forwards decision to authors'),</span> -<span class="c1"># )</span> - -<span class="n">SUBMISSION_TYPE</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'Letter'</span><span class="p">,</span> <span class="s1">'Letter (broad-interest breakthrough results)'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Article'</span><span class="p">,</span> <span class="s1">'Article (in-depth reports on specialized research)'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Review'</span><span class="p">,</span> <span class="s1">'Review (candid snapshot of current research in a given area)'</span><span class="p">),</span> -<span class="p">)</span> -<span class="n">submission_type_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">SUBMISSION_TYPE</span><span class="p">)</span> - - -<div class="viewcode-block" id="Submission"><a class="viewcode-back" href="../../modules/models.html#submissions.models.Submission">[docs]</a><span class="k">class</span> <span class="nc">Submission</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">is_current</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">is_resubmission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">submitted_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">editor_in_charge</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'EIC'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">submitted_to_journal</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_JOURNALS_SUBMIT</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s2">"Journal to be submitted to"</span><span class="p">)</span> - <span class="n">submission_type</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SUBMISSION_TYPE</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> - <span class="n">discipline</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'physics'</span><span class="p">)</span> - <span class="n">domain</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_JOURNALS_DOMAINS</span><span class="p">)</span> -<span class="c1"># specialization = models.CharField(max_length=1, choices=SCIPOST_JOURNALS_SPECIALIZATIONS)</span> - <span class="n">subject_area</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'Primary subject area'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'Phys:QP'</span><span class="p">)</span> - <span class="n">secondary_areas</span> <span class="o">=</span> <span class="n">ChoiceArrayField</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">),</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SUBMISSION_STATUS</span><span class="p">)</span> <span class="c1"># set by Editors</span> - <span class="n">author_comments</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">list_of_changes</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">remarks_for_editors</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">referees_suggested</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">referees_flagged</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">open_for_reporting</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">reporting_deadline</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">open_for_commenting</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">300</span><span class="p">)</span> - <span class="n">author_list</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s2">"author list"</span><span class="p">)</span> - <span class="c1"># Authors which have been mapped to contributors:</span> - <span class="n">authors</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_sub'</span><span class="p">)</span> - <span class="n">authors_claims</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_sub_claims'</span><span class="p">)</span> - <span class="n">authors_false_claims</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_sub_false_claims'</span><span class="p">)</span> - <span class="n">abstract</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - <span class="n">arxiv_identifier_w_vn_nr</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'0000.00000v0'</span><span class="p">)</span> - <span class="n">arxiv_identifier_wo_vn_nr</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'0000.00000'</span><span class="p">)</span> - <span class="n">arxiv_vn_nr</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> - <span class="n">arxiv_link</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">URLField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'arXiv link (including version nr)'</span><span class="p">)</span> - <span class="n">metadata</span> <span class="o">=</span> <span class="n">JSONField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="p">{},</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">submission_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'submission date'</span><span class="p">)</span> - <span class="n">latest_activity</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - - <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span> - <span class="n">permissions</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> <span class="s1">'Can take editorial actions'</span><span class="p">),</span> - <span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span> <span class="o">+</span> <span class="s1">', '</span> - <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' by '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">[:</span><span class="mi">30</span><span class="p">])</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_current</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (current version)'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (deprecated version '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arxiv_vn_nr</span><span class="p">)</span> <span class="o">+</span> <span class="s1">')'</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (published as '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">publication</span><span class="o">.</span><span class="n">citation</span><span class="p">()</span> <span class="o">+</span> <span class="s1">')'</span> - <span class="k">except</span> <span class="n">Publication</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">return</span> <span class="n">header</span> - - <span class="nd">@property</span> - <span class="k">def</span> <span class="nf">reporting_deadline_has_passed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">if</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">reporting_deadline</span><span class="p">:</span> - <span class="k">return</span> <span class="kc">True</span> - <span class="k">return</span> <span class="kc">False</span> - - - <span class="k">def</span> <span class="nf">header_as_table</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for Submission page</span> - <span class="n">header</span> <span class="o">=</span> <span class="s1">'<table>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<tr><td>Title: </td><td>&nbsp;</td><td>{{ title }}</td></tr>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<tr><td>Author(s): </td><td>&nbsp;</td><td>{{ author_list }}</td></tr>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<tr><td>As Contributors: </td><td>&nbsp;</td>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<td>'</span> - <span class="k">for</span> <span class="n">auth</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<a href="/contributor/'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">auth</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'">'</span> <span class="o">+</span> <span class="n">auth</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> - <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">auth</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">'</a>&nbsp;&nbsp;'</span><span class="p">)</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'</td>'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<td>(none claimed)</td>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'</tr>'</span> - <span class="s1">'<tr><td>arxiv Link: </td><td>&nbsp;</td>'</span> - <span class="s1">'<td><a href="{{ arxiv_link }}" target="_blank">{{ arxiv_link }}</a></td></tr>'</span> - <span class="s1">'<tr><td>Date submitted: </td><td>&nbsp;</td><td>{{ submission_date }}</td></tr>'</span> - <span class="s1">'<tr><td>Submitted by: </td><td>&nbsp;</td><td>{{ submitted_by }}</td></tr>'</span> - <span class="s1">'<tr><td>Submitted to: </td><td>&nbsp;</td><td>{{ to_journal }}</td></tr>'</span> - <span class="s1">'<tr><td>Domain(s): </td><td>&nbsp;</td><td>{{ domain }}</td></tr>'</span> -<span class="c1"># '<tr><td>Specialization: </td><td>&nbsp;</td><td>{{ spec }}</td></tr>'</span> - <span class="s1">'<tr><td>Subject area: </td><td>&nbsp;</td><td>{{ subject_area }}</td></tr>'</span> - <span class="s1">'</table>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'arxiv_link'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_link</span><span class="p">,</span> <span class="s1">'submission_date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission_date</span><span class="p">,</span> - <span class="s1">'submitted_by'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submitted_by</span><span class="p">,</span> - <span class="s1">'to_journal'</span><span class="p">:</span> <span class="n">journals_submit_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">submitted_to_journal</span><span class="p">],</span> - <span class="s1">'domain'</span><span class="p">:</span> <span class="n">journals_domains_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">domain</span><span class="p">],</span> -<span class="c1"># 'spec': journals_spec_dict[self.specialization],</span> - <span class="s1">'subject_area'</span><span class="p">:</span> <span class="n">subject_areas_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">subject_area</span><span class="p">],</span> - <span class="p">})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for search lists</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li>'</span> - <span class="c1">#'<div class="flex-container">'</span> - <span class="c1">#'<div class="flex-whitebox0">'</span> - <span class="s1">'<p>'</span> - <span class="s1">'<a href="/submission/{{ arxiv_identifier_w_vn_nr }}" '</span> - <span class="s1">'class="pubtitleli">{{ title }}</a></p>'</span> - <span class="s1">'<p>by {{ author_list }}</p>'</span> - <span class="s1">'<p>Version {{ arxiv_vn_nr }}'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_current</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (current version)'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (deprecated version {{ arxiv_vn_nr }})'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'</p><p> Submitted {{ submission_date }} to {{ to_journal }}'</span> - <span class="s1">' - latest activity: {{ latest_activity }}</p>'</span> - <span class="c1">#'</div></div>'</span> - <span class="s1">'</li>'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> - <span class="s1">'arxiv_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_vn_nr</span><span class="p">,</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'submission_date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission_date</span><span class="p">,</span> - <span class="s1">'to_journal'</span><span class="p">:</span> <span class="n">journals_submit_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">submitted_to_journal</span><span class="p">],</span> - <span class="s1">'latest_activity'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">latest_activity</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">)})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">header_as_li_for_authors</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># includes status specification</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li>'</span> - <span class="c1">#'<div class="flex-container">'</span> - <span class="c1">#'<div class="flex-whitebox0">'</span> - <span class="s1">'<p><a href="/submission/{{ arxiv_identifier_w_vn_nr }}" '</span> - <span class="s1">'class="pubtitleli">{{ title }}</a></p>'</span> - <span class="s1">'<p>by {{ author_list }}</p>'</span> - <span class="s1">'<p>Version {{ arxiv_vn_nr }}'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_current</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (current version)'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (deprecated version {{ arxiv_vn_nr }})'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'</p><p>Submitted {{ submission_date }} to {{ to_journal }}'</span> - <span class="s1">' - latest activity: {{ latest_activity }}</p>'</span> - <span class="s1">'<p>Status: {{ status }}</p>'</span> - <span class="c1">#'</div></div>'</span> - <span class="s1">'</li>'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> - <span class="s1">'arxiv_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_vn_nr</span><span class="p">,</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'submission_date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission_date</span><span class="p">,</span> - <span class="s1">'to_journal'</span><span class="p">:</span> <span class="n">journals_submit_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">submitted_to_journal</span><span class="p">],</span> - <span class="s1">'latest_activity'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">latest_activity</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">),</span> - <span class="s1">'status'</span><span class="p">:</span> <span class="n">submission_status_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">status</span><span class="p">]})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">refereeing_status_as_p</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">nr_ref_invited</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_ref_accepted</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">accepted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_ref_declined</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">accepted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_invited_reports_in</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">invited</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_contrib_reports_in</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">invited</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_reports_awaiting_vetting</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">status</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">nr_reports_refused</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">status__lte</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<p>Nr referees invited: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr_ref_invited</span><span class="p">)</span> <span class="o">+</span> - <span class="s1">' ['</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr_ref_accepted</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' accepted/ '</span> <span class="o">+</span> - <span class="nb">str</span><span class="p">(</span><span class="n">nr_ref_declined</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' declined/ '</span> <span class="o">+</span> - <span class="nb">str</span><span class="p">(</span><span class="n">nr_ref_invited</span> <span class="o">-</span> <span class="n">nr_ref_accepted</span> <span class="o">-</span> <span class="n">nr_ref_declined</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' response pending]</p>'</span> <span class="o">+</span> - <span class="s1">'<p>Nr reports obtained: '</span> <span class="o">+</span> - <span class="nb">str</span><span class="p">(</span><span class="n">nr_invited_reports_in</span> <span class="o">+</span> <span class="n">nr_contrib_reports_in</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' ['</span> <span class="o">+</span> - <span class="nb">str</span><span class="p">(</span><span class="n">nr_invited_reports_in</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' invited/ '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr_contrib_reports_in</span><span class="p">)</span> <span class="o">+</span> - <span class="s1">' contributed], nr refused: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr_reports_refused</span><span class="p">)</span> <span class="o">+</span> - <span class="s1">', nr awaiting vetting: '</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">nr_reports_awaiting_vetting</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'</p>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">header_as_li_for_Fellows</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for submissions pool</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li>'</span> - <span class="c1">#'<div class="flex-container">'</span> - <span class="c1">#'<div class="flex-whitebox0">'</span> - <span class="s1">'<p><a href="/submission/{{ arxiv_identifier_w_vn_nr }}" '</span> - <span class="s1">'class="pubtitleli">{{ title }}</a></p>'</span> - <span class="s1">'<p>by {{ author_list }}</p>'</span> - <span class="s1">'<p>Version {{ arxiv_vn_nr }}'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_current</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (current version)'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (deprecated version {{ arxiv_vn_nr }})'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'</p><p> Submitted {{ submission_date }} to {{ to_journal }}'</span> - <span class="s1">' - latest activity: {{ latest_activity }}</p>'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">==</span> <span class="s1">'unassigned'</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<p style="color: red">Status: {{ status }}.'</span> - <span class="s1">' You can volunteer to become Editor-in-charge by '</span> - <span class="s1">'<a href="/submissions/volunteer_as_EIC/{{ arxiv_identifier_w_vn_nr }}">clicking here</a>.</p>'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<p>Editor-in-charge: {{ EIC }}</p><p>Status: {{ status }}</p>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">refereeing_status_as_p</span><span class="p">()</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="c1">#'</div></div>'</span> - <span class="s1">'</li>'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> - <span class="s1">'arxiv_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_vn_nr</span><span class="p">,</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'submission_date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission_date</span><span class="p">,</span> - <span class="s1">'to_journal'</span><span class="p">:</span> <span class="n">journals_submit_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">submitted_to_journal</span><span class="p">],</span> - <span class="s1">'latest_activity'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">latest_activity</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">),</span> - <span class="s1">'EIC'</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="p">),</span> - <span class="s1">'status'</span><span class="p">:</span> <span class="n">submission_status_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">status</span><span class="p">]})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">simple_header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for Lists</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li>'</span> - <span class="c1">#'<div class="flex-container">'</span> - <span class="c1">#'<div class="flex-whitebox0">'</span> - <span class="s1">'<p>'</span> - <span class="s1">'<a href="/submission/{{ arxiv_identifier_w_vn_nr }}" '</span> - <span class="s1">'class="pubtitleli">{{ title }}</a></p>'</span> - <span class="s1">'<p>by {{ author_list }}</p>'</span> - <span class="s1">'<p>Version {{ arxiv_vn_nr }}'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_current</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (current version)'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (deprecated version {{ arxiv_vn_nr }})'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'</p>'</span> - <span class="c1">#'</div></div>'</span> - <span class="s1">'</li>'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> - <span class="s1">'arxiv_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_vn_nr</span><span class="p">,</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_list</span><span class="p">})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">version_info_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for listing all versions of a Submission</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li>'</span> - <span class="c1">#'<div class="flex-whitebox0">'</span> - <span class="s1">'<p>'</span> - <span class="s1">'<a href="/submission/{{ arxiv_identifier_w_vn_nr }}" '</span> - <span class="s1">'class="pubtitleli">version {{ arxiv_vn_nr }}</a>'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_current</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (current version)'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' (deprecated version {{ arxiv_vn_nr }})'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'</p>'</span> - <span class="c1">#'</div>'</span> - <span class="s1">'</li>'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> - <span class="s1">'arxiv_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">arxiv_vn_nr</span><span class="p">,})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">status_info_as_table</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">header</span> <span class="o">=</span> <span class="s1">'<table><tr><td>Current status: </td><td>&nbsp;</td><td>{{ status }}'</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'status'</span><span class="p">:</span> <span class="n">submission_status_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">status</span><span class="p">],})</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'citation'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">publication</span><span class="o">.</span><span class="n">citation_for_web_linked</span><span class="p">()</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">' as {{ citation }}'</span> - <span class="k">except</span> <span class="n">Publication</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span> - <span class="k">pass</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'</td></tr></table>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - - -<span class="c1">######################</span> -<span class="c1"># Editorial workflow #</span> -<span class="c1">######################</span> - -<span class="n">ASSIGNMENT_BOOL</span> <span class="o">=</span> <span class="p">((</span><span class="kc">True</span><span class="p">,</span> <span class="s1">'Accept'</span><span class="p">),</span> <span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="s1">'Decline'</span><span class="p">))</span> -<span class="n">ASSIGNMENT_NULLBOOL</span> <span class="o">=</span> <span class="p">((</span><span class="kc">None</span><span class="p">,</span> <span class="s1">'Response pending'</span><span class="p">),</span> <span class="p">(</span><span class="kc">True</span><span class="p">,</span> <span class="s1">'Accept'</span><span class="p">),</span> <span class="p">(</span><span class="kc">False</span><span class="p">,</span> <span class="s1">'Decline'</span><span class="p">))</span> - -<span class="n">ASSIGNMENT_REFUSAL_REASONS</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'BUS'</span><span class="p">,</span> <span class="s1">'Too busy'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'VAC'</span><span class="p">,</span> <span class="s1">'Away on vacation'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'COI'</span><span class="p">,</span> <span class="s1">'Conflict of interest: coauthor in last 5 years'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'CCC'</span><span class="p">,</span> <span class="s1">'Conflict of interest: close colleague'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'NIR'</span><span class="p">,</span> <span class="s1">'Cannot give an impartial assessment'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'NIE'</span><span class="p">,</span> <span class="s1">'Not interested enough'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'DNP'</span><span class="p">,</span> <span class="s1">'SciPost should not even consider this paper'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">assignment_refusal_reasons_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">ASSIGNMENT_REFUSAL_REASONS</span><span class="p">)</span> - -<div class="viewcode-block" id="EditorialAssignment"><a class="viewcode-back" href="../../modules/models.html#submissions.models.EditorialAssignment">[docs]</a><span class="k">class</span> <span class="nc">EditorialAssignment</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">to</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">accepted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">NullBooleanField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">ASSIGNMENT_NULLBOOL</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> - <span class="c1"># attribute `deprecated' becomes True if another Fellow becomes Editor-in-charge</span> - <span class="n">deprecated</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">completed</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">refusal_reason</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">ASSIGNMENT_REFUSAL_REASONS</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">date_created</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">date_answered</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">' to become EIC of '</span> <span class="o">+</span> - <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' by '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> - <span class="s1">', requested on '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_created</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1">'</span><span class="p">))</span> - - <span class="k">def</span> <span class="nf">info_as_li</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'first_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> - <span class="s1">'last_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span> - <span class="s1">'date_created'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_created</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">)})</span> - <span class="n">info</span> <span class="o">=</span> <span class="s1">'<li'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span><span class="p">:</span> - <span class="n">info</span> <span class="o">+=</span> <span class="s1">' style="color: green"'</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">deprecated</span><span class="p">:</span> - <span class="n">info</span> <span class="o">+=</span> <span class="s1">' style="color: purple"'</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span> <span class="o">==</span> <span class="kc">False</span><span class="p">:</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">refusal_reason</span> <span class="o">==</span> <span class="s1">'NIE'</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">refusal_reason</span> <span class="o">==</span> <span class="s1">'DNP'</span><span class="p">:</span> - <span class="n">info</span> <span class="o">+=</span> <span class="s1">' style="color: #CC0000"'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">info</span> <span class="o">+=</span> <span class="s1">' style="color: #FF7700"'</span> - <span class="n">info</span> <span class="o">+=</span> <span class="s1">'>{{ first_name }} {{ last_name }}, requested {{ date_created }}'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span><span class="p">:</span> - <span class="n">info</span> <span class="o">+=</span> <span class="s1">', accepted {{ date_answered }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'date_answered'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_answered</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">deprecated</span><span class="p">:</span> - <span class="n">info</span> <span class="o">+=</span> <span class="s1">', deprecated'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">refusal_reason</span><span class="p">:</span> - <span class="n">info</span> <span class="o">+=</span> <span class="s1">', declined {{ date_answered }}, reason: {{ reason }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'date_answered'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_answered</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">)</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'reason'</span><span class="p">]</span> <span class="o">=</span> <span class="n">assignment_refusal_reasons_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">refusal_reason</span><span class="p">]</span> - <span class="n">info</span> <span class="o">+=</span> <span class="s1">'</li>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">info</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">header_as_li_for_eic</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li>'</span> - <span class="c1">#'<div class="flex-container">'</span> - <span class="c1">#'<div class="flex-whitebox0">'</span> - <span class="s1">'<p><a href="/submission/{{ arxiv_identifier_w_vn_nr }}" '</span> - <span class="s1">'class="pubtitleli">{{ title }}</a></p>'</span> - <span class="s1">'<p>by {{ author_list }}</p>'</span> - <span class="s1">'<p> (submitted {{ date }} to {{ to_journal }})</p>'</span> - <span class="s1">'<p>Status: {{ status }}</p><p>Manage this Submission from its '</span> - <span class="s1">'<a href="/submissions/editorial_page/{{ arxiv_identifier_w_vn_nr }}">Editorial Page</a>.'</span> - <span class="s1">'</p>'</span> - <span class="c1">#'</div></div>'</span> - <span class="s1">'</li>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> - <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">submission_date</span><span class="p">,</span> - <span class="s1">'to_journal'</span><span class="p">:</span> <span class="n">journals_submit_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">submitted_to_journal</span><span class="p">],</span> - <span class="s1">'status'</span><span class="p">:</span> <span class="n">submission_status_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span><span class="p">]})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - -<div class="viewcode-block" id="EditorialAssignment.header_as_li"><a class="viewcode-back" href="../../modules/models.html#submissions.models.EditorialAssignment.header_as_li">[docs]</a> <span class="k">def</span> <span class="nf">header_as_li</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="sd">""" Same as above, but without link to Editorial Page. """</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li>'</span> - <span class="c1">#'<div class="flex-container">'</span> - <span class="c1">#'<div class="flex-whitebox0">'</span> - <span class="s1">'<p><a href="/submission/{{ arxiv_identifier_w_vn_nr }}" '</span> - <span class="s1">'class="pubtitleli">{{ title }}</a></p>'</span> - <span class="s1">'<p>by {{ author_list }}</p>'</span> - <span class="s1">'<p> (submitted {{ date }} to {{ to_journal }})</p>'</span> - <span class="s1">'<p>Status: {{ status }}</p>'</span> - <span class="c1">#'</div></div>'</span> - <span class="s1">'</li>'</span> - <span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> - <span class="s1">'author_list'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="p">,</span> - <span class="s1">'date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">submission_date</span><span class="p">,</span> - <span class="s1">'to_journal'</span><span class="p">:</span> <span class="n">journals_submit_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">submitted_to_journal</span><span class="p">],</span> - <span class="s1">'status'</span><span class="p">:</span> <span class="n">submission_status_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span><span class="p">]})</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div></div> - - -<div class="viewcode-block" id="RefereeInvitation"><a class="viewcode-back" href="../../modules/models.html#submissions.models.RefereeInvitation">[docs]</a><span class="k">class</span> <span class="nc">RefereeInvitation</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">referee</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'referee'</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">TITLE_CHOICES</span><span class="p">)</span> - <span class="n">first_name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> - <span class="n">last_name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> - <span class="n">email_address</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">EmailField</span><span class="p">()</span> - <span class="c1"># if Contributor not found, person is invited to register</span> - <span class="n">invitation_key</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> - <span class="n">date_invited</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">invited_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'referee_invited_by'</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">nr_reminders</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> - <span class="n">date_last_reminded</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">accepted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">NullBooleanField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">ASSIGNMENT_NULLBOOL</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> - <span class="n">date_responded</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">refusal_reason</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">ASSIGNMENT_REFUSAL_REASONS</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">fulfilled</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="c1"># True if a Report has been submitted</span> - <span class="n">cancelled</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="c1"># True if EIC has deactivated invitation</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">' to referee '</span> <span class="o">+</span> - <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' by '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> - <span class="s1">', invited on '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_invited</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1">'</span><span class="p">))</span> - - <span class="c1"># def summary_as_li(self):</span> - <span class="c1"># context = Context({'first_name': self.first_name, 'last_name': self.last_name,</span> - <span class="c1"># 'date_invited': self.date_invited.strftime('%Y-%m-%d %H:%M')})</span> - <span class="c1"># output = '<li>{{ first_name }} {{ last_name }}, invited {{ date_invited }}, '</span> - <span class="c1"># if self.accepted is not None:</span> - <span class="c1"># if self.accepted:</span> - <span class="c1"># output += '<strong style="color: green">task accepted</strong> '</span> - <span class="c1"># else:</span> - <span class="c1"># output += '<strong style="color: red">task declined</strong> '</span> - <span class="c1"># output += '{{ date_responded }}'</span> - <span class="c1"># context['date_responded'] = self.date_responded.strftime('%Y-%m-%d %H:%M')</span> - <span class="c1"># else:</span> - <span class="c1"># output += 'response pending'</span> - <span class="c1"># if self.fulfilled:</span> - <span class="c1"># output += '; Report has been delivered'</span> - <span class="c1"># template = Template(output)</span> - <span class="c1"># return template.render(context)</span> - - <span class="k">def</span> <span class="nf">summary_as_tds</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'first_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> <span class="s1">'last_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span> - <span class="s1">'date_invited'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_invited</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">)})</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<td>{{ first_name }} {{ last_name }}</td><td>invited <br/>{{ date_invited }}</td><td>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cancelled</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<strong style="color: red;">cancelled</strong>'</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">accepted</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<strong style="color: green">task accepted</strong> '</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<strong style="color: red">task declined</strong> '</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<br/>{{ date_responded }}'</span> - <span class="n">context</span><span class="p">[</span><span class="s1">'date_responded'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_responded</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'response pending'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fulfilled</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<br/><strong style="color: green">task fulfilled</strong>'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'</td>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - -<span class="c1">###########</span> -<span class="c1"># Reports:</span> -<span class="c1">###########</span> - -<span class="n">REFEREE_QUALIFICATION</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="s1">'expert in this subject'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'very knowledgeable in this subject'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'knowledgeable in this subject'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'generally qualified'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'not qualified'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">ref_qualif_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">REFEREE_QUALIFICATION</span><span class="p">)</span> - -<span class="n">QUALITY_SPEC</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="s1">'perfect'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="s1">'excellent'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="s1">'good'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'reasonable'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'acceptable'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'below threshold'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'mediocre'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">quality_spec_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">QUALITY_SPEC</span><span class="p">)</span> - - -<span class="n">RANKING_CHOICES</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="mi">101</span><span class="p">,</span> <span class="s1">'-'</span><span class="p">),</span> <span class="c1"># Only values between 0 and 100 are kept, anything outside those limits is discarded.</span> - <span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="s1">'top'</span><span class="p">),</span> <span class="p">(</span><span class="mi">80</span><span class="p">,</span> <span class="s1">'high'</span><span class="p">),</span> <span class="p">(</span><span class="mi">60</span><span class="p">,</span> <span class="s1">'good'</span><span class="p">),</span> <span class="p">(</span><span class="mi">40</span><span class="p">,</span> <span class="s1">'ok'</span><span class="p">),</span> <span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="s1">'low'</span><span class="p">),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s1">'poor'</span><span class="p">)</span> - <span class="p">)</span> -<span class="n">ranking_choices_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">RANKING_CHOICES</span><span class="p">)</span> - -<span class="n">REPORT_REC</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'Publish as Tier I (top 10</span><span class="si">% o</span><span class="s1">f papers in this journal, qualifies as Select) NOTE: SELECT NOT YET OPEN, STARTS EARLY 2017'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'Publish as Tier II (top 50</span><span class="si">% o</span><span class="s1">f papers in this journal)'</span><span class="p">),</span> - <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'Publish as Tier III (meets the criteria of this journal)'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'Ask for minor revision'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'Ask for major revision'</span><span class="p">),</span> - <span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'Reject'</span><span class="p">)</span> - <span class="p">)</span> -<span class="n">report_rec_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">REPORT_REC</span><span class="p">)</span> - -<div class="viewcode-block" id="Report"><a class="viewcode-back" href="../../modules/models.html#submissions.models.Report">[docs]</a><span class="k">class</span> <span class="nc">Report</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">""" Both types of reports, invited or contributed. """</span> - <span class="c1"># status: see forms.py:REPORT_REFUSAL_CHOICES</span> - <span class="c1"># 1: vetted</span> - <span class="c1"># 0: unvetted</span> - <span class="c1"># -1: rejected (unclear)</span> - <span class="c1"># -2: rejected (incorrect)</span> - <span class="c1"># -3: rejected (not useful)</span> - <span class="c1"># -4: rejected (not academic in style)</span> - <span class="n">status</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">vetted_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s2">"report_vetted_by"</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="c1"># `invited' filled from RefereeInvitation objects at moment of report submission</span> - <span class="n">invited</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="c1"># `flagged' if author of report has been flagged by submission authors (surname check only)</span> - <span class="n">flagged</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">date_submitted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="s1">'date submitted'</span><span class="p">)</span> - <span class="n">author</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">qualification</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">REFEREE_QUALIFICATION</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s2">"Qualification to referee this: I am "</span><span class="p">)</span> - <span class="c1"># Text-based reporting</span> - <span class="n">strengths</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - <span class="n">weaknesses</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - <span class="n">report</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - <span class="n">requested_changes</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s2">"requested changes"</span><span class="p">)</span> - <span class="c1"># Qualities:</span> - <span class="n">validity</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">RANKING_CHOICES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">101</span><span class="p">)</span> - <span class="n">significance</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">RANKING_CHOICES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">101</span><span class="p">)</span> - <span class="n">originality</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">RANKING_CHOICES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">101</span><span class="p">)</span> - <span class="n">clarity</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">PositiveSmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">RANKING_CHOICES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">101</span><span class="p">)</span> - <span class="n">formatting</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">QUALITY_SPEC</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s2">"Quality of paper formatting"</span><span class="p">)</span> - <span class="n">grammar</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">QUALITY_SPEC</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s2">"Quality of English grammar"</span><span class="p">)</span> - <span class="c1">#</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">REPORT_REC</span><span class="p">)</span> - <span class="n">remarks_for_editors</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'optional remarks for the Editors only'</span><span class="p">)</span> - <span class="n">anonymous</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'Publish anonymously'</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">' on '</span> <span class="o">+</span> - <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">50</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' by '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="p">[:</span><span class="mi">50</span><span class="p">])</span> - - <span class="k">def</span> <span class="nf">print_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">'author_id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> - <span class="s1">'first_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> - <span class="s1">'last_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span> - <span class="s1">'date_submitted'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">)})</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<div class="reportid"></span><span class="se">\n</span><span class="s1">'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<h3><a id="report_id{{ id }}"></a>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">anonymous</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'Anonymous Report {{ id }}'</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<a href="/contributor/{{ author_id }}">{{ first_name }} {{ last_name }}</a>'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">' on {{ date_submitted }}</h3></div>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">print_contents</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'strengths'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">strengths</span><span class="p">,</span> <span class="s1">'weaknesses'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">weaknesses</span><span class="p">,</span> - <span class="s1">'report'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">report</span><span class="p">,</span> <span class="s1">'requested_changes'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">requested_changes</span><span class="p">})</span> - <span class="n">output</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<div class="row"><div class="col-2">'</span> - <span class="s1">'<p>Strengths:</p></div><div class="col-10"><p>{{ strengths }}</p></div></div>'</span> - <span class="s1">'<div class="row"><div class="col-2">'</span> - <span class="s1">'<p>Weaknesses:</p></div><div class="col-10"><p>{{ weaknesses }}</p></div></div>'</span> - <span class="s1">'<div class="row"><div class="col-2">'</span> - <span class="s1">'<p>Report:</p></div><div class="col-10"><p>{{ report }}</p></div></div>'</span> - <span class="s1">'<div class="row"><div class="col-2">'</span> - <span class="s1">'<p>Requested changes:</p></div>'</span> - <span class="s1">'<div class="col-10"><p>{{ requested_changes }}</p></div></div>'</span> - <span class="s1">'<div class="reportRatings"><ul>'</span> - <span class="s1">'<li>validity: '</span> <span class="o">+</span> <span class="n">ranking_choices_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">validity</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</li>'</span> - <span class="s1">'<li>significance: '</span> <span class="o">+</span> <span class="n">ranking_choices_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">significance</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</li>'</span> - <span class="s1">'<li>originality: '</span> <span class="o">+</span> <span class="n">ranking_choices_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">originality</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</li>'</span> - <span class="s1">'<li>clarity: '</span> <span class="o">+</span> <span class="n">ranking_choices_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">clarity</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</li>'</span> - <span class="s1">'<li>formatting: '</span> <span class="o">+</span> <span class="n">quality_spec_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">formatting</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</li>'</span> - <span class="s1">'<li>grammar: '</span> <span class="o">+</span> <span class="n">quality_spec_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">grammar</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</li>'</span> - <span class="s1">'</ul></div>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">print_contents_for_editors</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">'author_id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> - <span class="s1">'author_first_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> - <span class="s1">'author_last_name'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span> - <span class="s1">'date_submitted'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">),</span> - <span class="s1">'remarks_for_editors'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">remarks_for_editors</span><span class="p">,</span> - <span class="p">})</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<div class="reportid"></span><span class="se">\n</span><span class="s1">'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<h3><a id="report_id{{ id }}"></a>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">anonymous</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'(chose public anonymity) '</span> - <span class="n">output</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<a href="/contributor/{{ author_id }}">'</span> - <span class="s1">'{{ author_first_name }} {{ author_last_name }}</a>'</span> - <span class="s1">' on {{ date_submitted }}</h3></div>'</span> - <span class="s1">'<div class="row"><div class="col-2">Qualification:</p></div>'</span> - <span class="s1">'<div class="col-10"><p>'</span> - <span class="o">+</span> <span class="n">ref_qualif_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">qualification</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</p></div></div>'</span><span class="p">)</span> - <span class="n">output</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">print_contents</span><span class="p">()</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<h3>Remarks for editors</h3><p>{{ remarks_for_editors }}</p>'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'<h3>Recommendation: '</span> <span class="o">+</span> <span class="n">report_rec_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">recommendation</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</h3>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - -<span class="c1">##########################</span> -<span class="c1"># EditorialCommunication #</span> -<span class="c1">##########################</span> - -<span class="n">ED_COMM_CHOICES</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'EtoA'</span><span class="p">,</span> <span class="s1">'Editor-in-charge to Author'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'EtoR'</span><span class="p">,</span> <span class="s1">'Editor-in-charge to Referee'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'EtoS'</span><span class="p">,</span> <span class="s1">'Editor-in-charge to SciPost Editorial Administration'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'AtoE'</span><span class="p">,</span> <span class="s1">'Author to Editor-in-charge'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'RtoE'</span><span class="p">,</span> <span class="s1">'Referee to Editor-in-Charge'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'StoE'</span><span class="p">,</span> <span class="s1">'SciPost Editorial Administration to Editor-in-charge'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">ed_comm_choices_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">ED_COMM_CHOICES</span><span class="p">)</span> - -<div class="viewcode-block" id="EditorialCommunication"><a class="viewcode-back" href="../../modules/models.html#submissions.models.EditorialCommunication">[docs]</a><span class="k">class</span> <span class="nc">EditorialCommunication</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Each individual communication between Editor-in-charge</span> -<span class="sd"> to and from Referees and Authors becomes an instance of this class.</span> -<span class="sd"> """</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">referee</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'referee_in_correspondence'</span><span class="p">,</span> - <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">comtype</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">ED_COMM_CHOICES</span><span class="p">)</span> - <span class="n">timestamp</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">text</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span> - - <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comtype</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">referee</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">referee</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">referee</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> - <span class="n">output</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">' for submission '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' by '</span> - <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="p">[:</span><span class="mi">30</span><span class="p">])</span> - <span class="k">return</span> <span class="n">output</span> - - <span class="k">def</span> <span class="nf">print_contents_as_li</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'timestamp'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2"> %H:%M"</span><span class="p">),</span> - <span class="s1">'text'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">})</span> - <span class="n">output</span> <span class="o">=</span> <span class="s1">'<li><p>'</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">comtype</span> <span class="o">==</span> <span class="s1">'EtoA'</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'From you to Authors'</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">comtype</span> <span class="o">==</span> <span class="s1">'EtoR'</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'From you to Referee '</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">referee</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">referee</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> - <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">comtype</span> <span class="o">==</span> <span class="s1">'EtoS'</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'From you to SciPost Ed Admin'</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">comtype</span> <span class="o">==</span> <span class="s1">'AtoE'</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'From Authors to you'</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">comtype</span> <span class="o">==</span> <span class="s1">'RtoE'</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'From Referee '</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">referee</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">referee</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">' to you'</span> - <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">comtype</span> <span class="o">==</span> <span class="s1">'StoE'</span><span class="p">:</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">'From SciPost Ed Admin to you'</span> - <span class="n">output</span> <span class="o">+=</span> <span class="s1">' on {{ timestamp }}</p><p>{{ text }}</p>'</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> - - - -<span class="c1">############################</span> -<span class="c1"># Editorial Recommendation #</span> -<span class="c1">############################</span> - -<span class="c1"># From the Editor-in-charge of a Submission</span> -<div class="viewcode-block" id="EICRecommendation"><a class="viewcode-back" href="../../modules/models.html#submissions.models.EICRecommendation">[docs]</a><span class="k">class</span> <span class="nc">EICRecommendation</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">date_submitted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="s1">'date submitted'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - <span class="n">remarks_for_authors</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">requested_changes</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s2">"requested changes"</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">remarks_for_editorial_college</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span> - <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'optional remarks for the Editorial College'</span><span class="p">)</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">SmallIntegerField</span><span class="p">(</span><span class="n">choices</span><span class="o">=</span><span class="n">REPORT_REC</span><span class="p">)</span> - <span class="c1"># Editorial Fellows who have assessed this recommendation:</span> - <span class="n">eligible_to_vote</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'eligible_to_vote'</span><span class="p">)</span> - <span class="n">voted_for</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'voted_for'</span><span class="p">)</span> - <span class="n">voted_against</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'voted_against'</span><span class="p">)</span> - <span class="n">voted_abstain</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'voted_abstain'</span><span class="p">)</span> - <span class="n">voting_deadline</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="s1">'date submitted'</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">title</span><span class="p">[:</span><span class="mi">20</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' by '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="p">[:</span><span class="mi">30</span><span class="p">]</span> <span class="o">+</span> - <span class="s1">', '</span> <span class="o">+</span> <span class="n">report_rec_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">recommendation</span><span class="p">])</span> - - <span class="nd">@property</span> - <span class="k">def</span> <span class="nf">nr_for</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">voted_for</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - - <span class="nd">@property</span> - <span class="k">def</span> <span class="nf">nr_against</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">voted_against</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - - <span class="nd">@property</span> - <span class="k">def</span> <span class="nf">nr_abstained</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">voted_abstain</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - - <span class="k">def</span> <span class="nf">print_for_authors</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">output</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<h3>Date: {{ date_submitted }}</h3>'</span> - <span class="s1">'<h3>Remarks for authors</h3>'</span> - <span class="s1">'<p>{{ remarks_for_authors }}</p>'</span> - <span class="s1">'<h3>Requested changes</h3>'</span> - <span class="s1">'<p>{{ requested_changes }}</p>'</span> - <span class="s1">'<h3>Recommendation</h3>'</span> - <span class="s1">'<p>{{ recommendation }}</p>'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'date_submitted'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">),</span> - <span class="s1">'remarks_for_authors'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">remarks_for_authors</span><span class="p">,</span> - <span class="s1">'requested_changes'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">requested_changes</span><span class="p">,</span> - <span class="s1">'recommendation'</span><span class="p">:</span> <span class="n">report_rec_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">recommendation</span><span class="p">],})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">print_for_Fellows</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">output</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<h3>By {{ Fellow }}, formulated on {{ date_submitted }}</h3>'</span> - <span class="s1">'<h3>Remarks for authors</h3>'</span> - <span class="s1">'<p>{{ remarks_for_authors }}</p>'</span> - <span class="s1">'<h3>Requested changes</h3>'</span> - <span class="s1">'<p>{{ requested_changes }}</p>'</span> - <span class="s1">'<h3>Remarks for Editorial College</h3>'</span> - <span class="s1">'<p>{{ remarks_for_editorial_college }}</p>'</span> - <span class="s1">'<h3>Recommendation</h3>'</span> - <span class="s1">'<p>{{ recommendation }}</p>'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span> - <span class="s1">'Fellow'</span><span class="p">:</span> <span class="p">(</span><span class="n">title_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> - <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> - <span class="s1">' '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">),</span> - <span class="s1">'date_submitted'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">date_submitted</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">),</span> - <span class="s1">'remarks_for_authors'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">remarks_for_authors</span><span class="p">,</span> - <span class="s1">'requested_changes'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">requested_changes</span><span class="p">,</span> - <span class="s1">'remarks_for_editorial_college'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">remarks_for_editorial_college</span><span class="p">,</span> - <span class="s1">'recommendation'</span><span class="p">:</span> <span class="n">report_rec_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">recommendation</span><span class="p">],})</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">output</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> -</pre></div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_modules/submissions/views.html b/docs/_build/html/_modules/submissions/views.html deleted file mode 100644 index 2228df5a9ff1221bb9e543f2029933bde7d6cc52..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/submissions/views.html +++ /dev/null @@ -1,1465 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>submissions.views — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../../genindex.html"/> - <link rel="search" title="Search" href="../../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../../index.html"/> - <link rel="up" title="Module code" href="../index.html"/> - - - <script src="../../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../../index.html">Docs</a> »</li> - - <li><a href="../index.html">Module code</a> »</li> - - <li>submissions.views</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>Source code for submissions.views</h1><div class="highlight"><pre> -<span></span><span class="kn">import</span> <span class="nn">datetime</span> -<span class="kn">import</span> <span class="nn">feedparser</span> -<span class="kn">import</span> <span class="nn">re</span> -<span class="kn">import</span> <span class="nn">requests</span> -<span class="kn">import</span> <span class="nn">sys</span> - -<span class="kn">from</span> <span class="nn">django.contrib.auth</span> <span class="k">import</span> <span class="n">authenticate</span><span class="p">,</span> <span class="n">login</span><span class="p">,</span> <span class="n">logout</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.decorators</span> <span class="k">import</span> <span class="n">login_required</span><span class="p">,</span> <span class="n">permission_required</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span><span class="p">,</span> <span class="n">Group</span><span class="p">,</span> <span class="n">Permission</span> -<span class="kn">from</span> <span class="nn">django.core.mail</span> <span class="k">import</span> <span class="n">EmailMessage</span> -<span class="kn">from</span> <span class="nn">django.core.urlresolvers</span> <span class="k">import</span> <span class="n">reverse</span> -<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">transaction</span> -<span class="kn">from</span> <span class="nn">django.db.models</span> <span class="k">import</span> <span class="n">Avg</span> -<span class="kn">from</span> <span class="nn">django.http</span> <span class="k">import</span> <span class="n">HttpResponse</span><span class="p">,</span> <span class="n">HttpResponseRedirect</span> -<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span class="k">import</span> <span class="n">get_object_or_404</span><span class="p">,</span> <span class="n">render</span><span class="p">,</span> <span class="n">redirect</span> -<span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span> -<span class="kn">from</span> <span class="nn">django.utils.safestring</span> <span class="k">import</span> <span class="n">mark_safe</span> -<span class="kn">from</span> <span class="nn">django.views.decorators.csrf</span> <span class="k">import</span> <span class="n">csrf_protect</span> - -<span class="kn">from</span> <span class="nn">guardian.decorators</span> <span class="k">import</span> <span class="n">permission_required_or_403</span> -<span class="kn">from</span> <span class="nn">guardian.shortcuts</span> <span class="k">import</span> <span class="n">assign_perm</span> - -<span class="kn">from</span> <span class="nn">.models</span> <span class="k">import</span> <span class="o">*</span> -<span class="kn">from</span> <span class="nn">.forms</span> <span class="k">import</span> <span class="o">*</span> -<span class="kn">from</span> <span class="nn">.utils</span> <span class="k">import</span> <span class="n">SubmissionUtils</span> - -<span class="kn">from</span> <span class="nn">comments.models</span> <span class="k">import</span> <span class="n">Comment</span> -<span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="n">journals_submit_dict</span> -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="n">Contributor</span><span class="p">,</span> <span class="n">title_dict</span><span class="p">,</span> <span class="n">Remark</span><span class="p">,</span> <span class="n">RegistrationInvitation</span> - -<span class="kn">from</span> <span class="nn">scipost.utils</span> <span class="k">import</span> <span class="n">Utils</span> - -<span class="kn">from</span> <span class="nn">comments.forms</span> <span class="k">import</span> <span class="n">CommentForm</span> - - - -<span class="c1">###############</span> -<span class="c1"># SUBMISSIONS:</span> -<span class="c1">###############</span> - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_submit_manuscript'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">prefill_using_identifier</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s2">"POST"</span><span class="p">:</span> - <span class="n">identifierform</span> <span class="o">=</span> <span class="n">SubmissionIdentifierForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">identifierform</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="c1"># we allow 1 or 2 digits for version</span> - <span class="n">identifierpattern</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s2">"^[0-9]{4,}.[0-9]{4,5}v[0-9]{1,2}$"</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">''</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">identifierpattern</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">]):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'The identifier you entered is improperly formatted '</span> - <span class="s1">'(did you forget the version number?)'</span><span class="p">)</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">Submission</span><span class="o">.</span><span class="n">objects</span> - <span class="c1">#.filter(arxiv_link__contains=identifierform.cleaned_data['identifier'])</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">])</span> - <span class="o">.</span><span class="n">exists</span><span class="p">()):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'This preprint version has already been submitted to SciPost.'</span> - <span class="k">if</span> <span class="n">errormessage</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SubmissionForm</span><span class="p">()</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submit_manuscript.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - <span class="c1"># Otherwise we query arXiv for the information:</span> - <span class="n">identifier_without_vn_nr</span> <span class="o">=</span> <span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">]</span><span class="o">.</span><span class="n">rpartition</span><span class="p">(</span><span class="s1">'v'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> - <span class="n">arxiv_vn_nr</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">]</span><span class="o">.</span><span class="n">rpartition</span><span class="p">(</span><span class="s1">'v'</span><span class="p">)[</span><span class="mi">2</span><span class="p">])</span> - <span class="n">is_resubmission</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">resubmessage</span> <span class="o">=</span> <span class="s1">''</span> - <span class="n">previous_submissions</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">arxiv_identifier_wo_vn_nr</span><span class="o">=</span><span class="n">identifier_without_vn_nr</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-arxiv_vn_nr'</span><span class="p">)</span> - <span class="k">if</span> <span class="n">previous_submissions</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span> - <span class="c1"># If the Editorial Recommendation hasn't been formulated, ask to wait</span> - <span class="k">if</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">status</span> <span class="o">!=</span> <span class="s1">'revision_requested'</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<p>There exists a preprint with this arXiv identifier '</span> - <span class="s1">'but an earlier version number, which is still undergoing '</span> - <span class="s1">'peer refereeing.</p>'</span> - <span class="s1">'<p>A resubmission can only be performed after request '</span> - <span class="s1">'from the Editor-in-charge. Please wait until the '</span> - <span class="s1">'closing of the previous refereeing round and '</span> - <span class="s1">'formulation of the Editorial Recommendation '</span> - <span class="s1">'before proceeding with a resubmission.</p>'</span><span class="p">)</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">mark_safe</span><span class="p">(</span><span class="n">errormessage</span><span class="p">)})</span> - <span class="n">is_resubmission</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">resubmessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'There already exists a preprint with this arXiv identifier '</span> - <span class="s1">'but a different version number. </span><span class="se">\n</span><span class="s1">Your Submission will be '</span> - <span class="s1">'handled as a resubmission.'</span><span class="p">)</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">queryurl</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'http://export.arxiv.org/api/query?id_list=</span><span class="si">%s</span><span class="s1">'</span> - <span class="o">%</span> <span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">])</span> - <span class="n">arxivquery</span> <span class="o">=</span> <span class="n">feedparser</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">queryurl</span><span class="p">)</span> - <span class="c1"># Flag error if preprint doesn't exist</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">test</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'title'</span><span class="p">]</span> - <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'A preprint associated to this identifier does not exist.'</span> - <span class="k">except</span><span class="p">:</span> - <span class="k">pass</span> - <span class="c1"># If paper has been published, should comment on published version</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">arxiv_journal_ref</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'arxiv_journal_ref'</span><span class="p">]</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'This paper has been published as '</span> <span class="o">+</span> <span class="n">arxiv_journal_ref</span> <span class="o">+</span> - <span class="s1">'. You cannot submit it to SciPost anymore.'</span><span class="p">)</span> - <span class="k">except</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">arxiv_doi</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'arxiv_doi'</span><span class="p">]</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'This paper has been published under DOI '</span> <span class="o">+</span> <span class="n">arxiv_DOI</span> - <span class="o">+</span> <span class="s1">'. You cannot submit it to SciPost anymore.'</span><span class="p">)</span> - <span class="k">except</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">if</span> <span class="n">errormessage</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SubmissionForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submit_manuscript.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="c1"># otherwise prefill the form:</span> - <span class="c1"># metadata = arxivquery</span> - <span class="c1"># title = arxivquery['entries'][0]['title']</span> - <span class="c1"># authorlist = arxivquery['entries'][0]['authors'][0]['name']</span> - <span class="c1"># for author in arxivquery['entries'][0]['authors'][1:]:</span> - <span class="c1"># authorlist += ', ' + author['name']</span> - <span class="c1"># arxiv_link = arxivquery['entries'][0]['id']</span> - <span class="c1"># abstract = arxivquery['entries'][0]['summary']</span> - <span class="c1"># form = SubmissionForm(</span> - <span class="c1"># initial={'is_resubmission': is_resubmission,</span> - <span class="c1"># 'metadata': metadata,</span> - <span class="c1"># 'title': title, 'author_list': authorlist,</span> - <span class="c1"># 'arxiv_identifier_w_vn_nr': identifierform.cleaned_data['identifier'],</span> - <span class="c1"># 'arxiv_identifier_wo_vn_nr': identifier_without_vn_nr,</span> - <span class="c1"># 'arxiv_vn_nr': arxiv_vn_nr,</span> - <span class="c1"># 'arxiv_link': arxiv_link, 'abstract': abstract})</span> - <span class="n">metadata</span> <span class="o">=</span> <span class="n">arxivquery</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'title'</span><span class="p">]</span> - <span class="n">authorlist</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'authors'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'name'</span><span class="p">]</span> - <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'authors'</span><span class="p">][</span><span class="mi">1</span><span class="p">:]:</span> - <span class="n">authorlist</span> <span class="o">+=</span> <span class="s1">', '</span> <span class="o">+</span> <span class="n">author</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span> - <span class="n">arxiv_link</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'id'</span><span class="p">]</span> - <span class="n">abstract</span> <span class="o">=</span> <span class="n">arxivquery</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'summary'</span><span class="p">]</span> - <span class="n">initialdata</span><span class="o">=</span><span class="p">{</span><span class="s1">'is_resubmission'</span><span class="p">:</span> <span class="n">is_resubmission</span><span class="p">,</span> - <span class="s1">'metadata'</span><span class="p">:</span> <span class="n">metadata</span><span class="p">,</span> - <span class="s1">'title'</span><span class="p">:</span> <span class="n">title</span><span class="p">,</span> <span class="s1">'author_list'</span><span class="p">:</span> <span class="n">authorlist</span><span class="p">,</span> - <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">identifierform</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'identifier'</span><span class="p">],</span> - <span class="s1">'arxiv_identifier_wo_vn_nr'</span><span class="p">:</span> <span class="n">identifier_without_vn_nr</span><span class="p">,</span> - <span class="s1">'arxiv_vn_nr'</span><span class="p">:</span> <span class="n">arxiv_vn_nr</span><span class="p">,</span> - <span class="s1">'arxiv_link'</span><span class="p">:</span> <span class="n">arxiv_link</span><span class="p">,</span> <span class="s1">'abstract'</span><span class="p">:</span> <span class="n">abstract</span><span class="p">}</span> - <span class="k">if</span> <span class="n">is_resubmission</span><span class="p">:</span> - <span class="n">initialdata</span><span class="p">[</span><span class="s1">'submitted_to_journal'</span><span class="p">]</span> <span class="o">=</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">submitted_to_journal</span> - <span class="n">initialdata</span><span class="p">[</span><span class="s1">'submission_type'</span><span class="p">]</span> <span class="o">=</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">submission_type</span> - <span class="n">initialdata</span><span class="p">[</span><span class="s1">'discipline'</span><span class="p">]</span> <span class="o">=</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">discipline</span> - <span class="n">initialdata</span><span class="p">[</span><span class="s1">'domain'</span><span class="p">]</span> <span class="o">=</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">domain</span> -<span class="c1"># initialdata['specialization'] = previous_submissions[0].specialization</span> - <span class="n">initialdata</span><span class="p">[</span><span class="s1">'subject_area'</span><span class="p">]</span> <span class="o">=</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">subject_area</span> - <span class="n">initialdata</span><span class="p">[</span><span class="s1">'secondary_areas'</span><span class="p">]</span> <span class="o">=</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">secondary_areas</span> - <span class="n">initialdata</span><span class="p">[</span><span class="s1">'referees_suggested'</span><span class="p">]</span> <span class="o">=</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">referees_suggested</span> - <span class="n">initialdata</span><span class="p">[</span><span class="s1">'referees_flagged'</span><span class="p">]</span> <span class="o">=</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">referees_flagged</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SubmissionForm</span><span class="p">(</span><span class="n">initial</span><span class="o">=</span><span class="n">initialdata</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> - <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> - <span class="s1">'resubmessage'</span><span class="p">:</span> <span class="n">resubmessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submit_manuscript.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">except</span><span class="p">:</span> - <span class="nb">print</span><span class="p">(</span><span class="s2">"Unexpected error in prefill_using_identifier:"</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">exc_info</span><span class="p">()[</span><span class="mi">0</span><span class="p">])</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> - <span class="s1">'form'</span><span class="p">:</span> <span class="n">SubmissionForm</span><span class="p">(),</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submit_manuscript.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">pass</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:submit_manuscript'</span><span class="p">))</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_submit_manuscript'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">submit_manuscript</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SubmissionForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">submitted_by</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="c1"># Verify if submitter is among the authors</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">submitted_by</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="ow">in</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'author_list'</span><span class="p">]:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Your name does not match that of any of the authors. '</span> - <span class="s1">'You are not authorized to submit this preprint.'</span><span class="p">)</span> - <span class="n">identifierform</span> <span class="o">=</span> <span class="n">SubmissionIdentifierForm</span><span class="p">()</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submit_manuscript.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> - <span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">Submission</span> <span class="p">(</span> - <span class="n">is_current</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> - <span class="n">is_resubmission</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_resubmission'</span><span class="p">],</span> - <span class="n">submitted_by</span> <span class="o">=</span> <span class="n">submitted_by</span><span class="p">,</span> - <span class="n">submitted_to_journal</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'submitted_to_journal'</span><span class="p">],</span> - <span class="n">submission_type</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'submission_type'</span><span class="p">],</span> - <span class="n">discipline</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'discipline'</span><span class="p">],</span> - <span class="n">domain</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'domain'</span><span class="p">],</span> -<span class="c1"># specialization = form.cleaned_data['specialization'],</span> - <span class="n">subject_area</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'subject_area'</span><span class="p">],</span> - <span class="n">secondary_areas</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'secondary_areas'</span><span class="p">],</span> - <span class="n">status</span> <span class="o">=</span> <span class="s1">'unassigned'</span><span class="p">,</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'title'</span><span class="p">],</span> - <span class="n">author_list</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'author_list'</span><span class="p">],</span> - <span class="n">abstract</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'abstract'</span><span class="p">],</span> - <span class="n">arxiv_identifier_w_vn_nr</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">],</span> - <span class="n">arxiv_identifier_wo_vn_nr</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'arxiv_identifier_wo_vn_nr'</span><span class="p">],</span> - <span class="n">arxiv_vn_nr</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'arxiv_vn_nr'</span><span class="p">],</span> - <span class="n">arxiv_link</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'arxiv_link'</span><span class="p">],</span> - <span class="n">metadata</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'metadata'</span><span class="p">],</span> - <span class="n">submission_date</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">remarks_for_editors</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'remarks_for_editors'</span><span class="p">],</span> - <span class="n">referees_suggested</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'referees_suggested'</span><span class="p">],</span> - <span class="n">referees_flagged</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'referees_flagged'</span><span class="p">],</span> - <span class="p">)</span> - <span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">submission</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">submitted_by</span><span class="p">)</span> <span class="c1"># must be author to be able to submit</span> - <span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1"># If this is a resubmission, mark previous submissions as deprecated:</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_resubmission'</span><span class="p">]:</span> - <span class="n">previous_submissions</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">arxiv_identifier_wo_vn_nr</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'arxiv_identifier_wo_vn_nr'</span><span class="p">]</span> - <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">submission</span><span class="o">.</span><span class="n">id</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-arxiv_vn_nr'</span><span class="p">)</span> - <span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">previous_submissions</span><span class="p">:</span> - <span class="n">sub</span><span class="o">.</span><span class="n">is_current</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">sub</span><span class="o">.</span><span class="n">open_for_reporting</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">sub</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'resubmitted'</span> - <span class="n">sub</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1"># Handle this submission in same way as if assignment had been accepted</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_reporting</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">deadline</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">28</span><span class="p">)</span> <span class="c1"># for papers</span> - <span class="k">if</span> <span class="n">submission</span><span class="o">.</span><span class="n">submitted_to_journal</span> <span class="o">==</span> <span class="s1">'SciPost Physics Lecture Notes'</span><span class="p">:</span> - <span class="n">deadline</span> <span class="o">+=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">28</span><span class="p">)</span> - <span class="n">submission</span><span class="o">.</span><span class="n">reporting_deadline</span> <span class="o">=</span> <span class="n">deadline</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_commenting</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">submission</span><span class="o">.</span><span class="n">latest_activity</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="c1"># We keep the same (most recent) Editor-in-charge by default</span> - <span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span> <span class="o">=</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">editor_in_charge</span> - <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'EICassigned'</span> - <span class="c1"># Keep the info about authors:</span> - <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">submission</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">author</span><span class="p">)</span> - <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">authors_claims</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">submission</span><span class="o">.</span><span class="n">authors_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">author</span><span class="p">)</span> - <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">previous_submissions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">authors_false_claims</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">submission</span><span class="o">.</span><span class="n">authors_false_claims</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">author</span><span class="p">)</span> - <span class="n">submission</span><span class="o">.</span><span class="n">author_comments</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'author_comments'</span><span class="p">]</span> - <span class="n">submission</span><span class="o">.</span><span class="n">list_of_changes</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'list_of_changes'</span><span class="p">]</span> - <span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">assignment</span> <span class="o">=</span> <span class="n">EditorialAssignment</span><span class="p">(</span> - <span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> - <span class="n">to</span><span class="o">=</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="p">,</span> - <span class="n">accepted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">date_created</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">date_answered</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="p">)</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_authors_resubmission_ack_email</span><span class="p">()</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> <span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">submission</span><span class="p">)</span> - <span class="n">ed_admins</span> <span class="o">=</span> <span class="n">Group</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'Editorial Administrators'</span><span class="p">)</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> <span class="n">ed_admins</span><span class="p">,</span> <span class="n">submission</span><span class="p">)</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_EIC_reappointment_email</span><span class="p">()</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_authors_submission_ack_email</span><span class="p">()</span> - - <span class="c1">#return HttpResponseRedirect(reverse('submissions:submit_manuscript_ack'))</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'Thank you for your Submission to SciPost'</span><span class="p">,</span> - <span class="s1">'ack_message'</span><span class="p">:</span> <span class="s1">'Your Submission will soon be handled by an Editor. '</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Return to your '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:personal_page'</span><span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'personal page'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> <span class="c1"># form is invalid</span> - <span class="k">pass</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SubmissionForm</span><span class="p">()</span> - <span class="n">identifierform</span> <span class="o">=</span> <span class="n">SubmissionIdentifierForm</span><span class="p">()</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submit_manuscript.html'</span><span class="p">,</span> - <span class="p">{</span><span class="s1">'identifierform'</span><span class="p">:</span> <span class="n">identifierform</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">})</span> - - -<div class="viewcode-block" id="submissions"><a class="viewcode-back" href="../../modules/views.html#submissions.views.submissions">[docs]</a><span class="k">def</span> <span class="nf">submissions</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">to_journal</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Main method for viewing Submissions.</span> -<span class="sd"> """</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SubmissionSearchForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">form</span><span class="o">.</span><span class="n">has_changed</span><span class="p">():</span> - <span class="n">submission_search_list</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">title__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'title_keyword'</span><span class="p">],</span> - <span class="n">author_list__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'author'</span><span class="p">],</span> - <span class="n">abstract__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'abstract_keyword'</span><span class="p">],</span> - <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">status__in</span><span class="o">=</span><span class="n">SUBMISSION_STATUS_PUBLICLY_UNLISTED</span><span class="p">,</span> - <span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-submission_date'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">submission_search_list</span> <span class="o">=</span> <span class="p">[]</span> - - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SubmissionSearchForm</span><span class="p">()</span> - <span class="n">submission_search_list</span> <span class="o">=</span> <span class="p">[]</span> - - <span class="n">submission_recent_list</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">latest_activity__gte</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=-</span><span class="mi">60</span><span class="p">)</span> - <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">status__in</span><span class="o">=</span><span class="n">SUBMISSION_STATUS_PUBLICLY_UNLISTED</span> - <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">is_current</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-submission_date'</span><span class="p">)</span> - <span class="c1"># If doing a journal-specific listing:</span> - <span class="k">if</span> <span class="n">to_journal</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">submission_recent_list</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submitted_to_journal</span><span class="o">=</span><span class="n">to_journal</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'submission_search_list'</span><span class="p">:</span> <span class="n">submission_search_list</span><span class="p">,</span> - <span class="s1">'submission_recent_list'</span><span class="p">:</span> <span class="n">submission_recent_list</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submissions.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="k">def</span> <span class="nf">browse</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">discipline</span><span class="p">,</span> <span class="n">nrweeksback</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SubmissionSearchForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">()</span> <span class="ow">and</span> <span class="n">form</span><span class="o">.</span><span class="n">has_changed</span><span class="p">():</span> - <span class="n">submission_search_list</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">title__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'title_keyword'</span><span class="p">],</span> - <span class="n">author_list__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'author'</span><span class="p">],</span> - <span class="n">abstract__icontains</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'abstract_keyword'</span><span class="p">],</span> - <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">status__in</span><span class="o">=</span><span class="n">SUBMISSION_STATUS_PUBLICLY_UNLISTED</span><span class="p">,</span> - <span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-submission_date'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">submission_search_list</span> <span class="o">=</span> <span class="p">[]</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'submission_search_list'</span><span class="p">:</span> <span class="n">submission_search_list</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submissions.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SubmissionSearchForm</span><span class="p">()</span> - <span class="n">submission_browse_list</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">discipline</span><span class="o">=</span><span class="n">discipline</span><span class="p">,</span> - <span class="n">latest_activity__gte</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">weeks</span><span class="o">=-</span><span class="nb">int</span><span class="p">(</span><span class="n">nrweeksback</span><span class="p">))</span> - <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">status__in</span><span class="o">=</span><span class="n">SUBMISSION_STATUS_PUBLICLY_UNLISTED</span> - <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">is_current</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-submission_date'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> <span class="s1">'discipline'</span><span class="p">:</span> <span class="n">discipline</span><span class="p">,</span> <span class="s1">'nrweeksback'</span><span class="p">:</span> <span class="n">nrweeksback</span><span class="p">,</span> - <span class="s1">'submission_browse_list'</span><span class="p">:</span> <span class="n">submission_browse_list</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submissions.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="k">def</span> <span class="nf">submission_detail_wo_vn_nr</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_wo_vn_nr</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_wo_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_wo_vn_nr</span><span class="p">,</span> - <span class="n">is_current</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="k">return</span><span class="p">(</span><span class="n">submission_detail</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">))</span> - - -<span class="k">def</span> <span class="nf">submission_detail</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="n">other_versions</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">arxiv_identifier_wo_vn_nr</span><span class="o">=</span><span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_wo_vn_nr</span> - <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">submission</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> - <span class="n">comments</span> <span class="o">=</span> <span class="n">submission</span><span class="o">.</span><span class="n">comment_set</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">CommentForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">author</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">newcomment</span> <span class="o">=</span> <span class="n">Comment</span> <span class="p">(</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">submission</span><span class="p">,</span> - <span class="n">author</span> <span class="o">=</span> <span class="n">author</span><span class="p">,</span> - <span class="n">is_rem</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_rem'</span><span class="p">],</span> - <span class="n">is_que</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_que'</span><span class="p">],</span> - <span class="n">is_ans</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_ans'</span><span class="p">],</span> - <span class="n">is_obj</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_obj'</span><span class="p">],</span> - <span class="n">is_rep</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_rep'</span><span class="p">],</span> - <span class="n">is_val</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_val'</span><span class="p">],</span> - <span class="n">is_lit</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_lit'</span><span class="p">],</span> - <span class="n">is_sug</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'is_sug'</span><span class="p">],</span> - <span class="n">comment_text</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'comment_text'</span><span class="p">],</span> - <span class="n">remarks_for_editors</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'remarks_for_editors'</span><span class="p">],</span> - <span class="n">date_submitted</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="p">)</span> - <span class="n">newcomment</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">author</span><span class="o">.</span><span class="n">nr_comments</span> <span class="o">=</span> <span class="n">Comment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author</span><span class="o">=</span><span class="n">author</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">author</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1">#request.session['arxiv_identifier_w_vn_nr'] = submission.arxiv_identifier_w_vn_nr</span> - <span class="c1">#return HttpResponseRedirect(reverse('comments:comment_submission_ack'))</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'Thank you for contributing a Comment.'</span><span class="p">,</span> - <span class="s1">'ack_message'</span><span class="p">:</span> <span class="s1">'It will soon be vetted by an Editor.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Back to the '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span> - <span class="s1">'submissions:submission'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">newcomment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}</span> - <span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">' Submission page you came from'</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">CommentForm</span><span class="p">()</span> - - <span class="n">reports</span> <span class="o">=</span> <span class="n">submission</span><span class="o">.</span><span class="n">report_set</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">author_replies</span> <span class="o">=</span> <span class="n">Comment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> - <span class="n">is_author_reply</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">status__gte</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> - <span class="k">except</span> <span class="n">Comment</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span> - <span class="n">author_replies</span> <span class="o">=</span> <span class="p">()</span> - <span class="c1"># To check in template whether the user can submit a report:</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">is_author</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span> <span class="ow">in</span> <span class="n">submission</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> - <span class="n">is_author_unchecked</span> <span class="o">=</span> <span class="p">(</span><span class="ow">not</span> <span class="n">is_author</span> - <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span> <span class="ow">in</span> <span class="n">submission</span><span class="o">.</span><span class="n">authors_false_claims</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> - <span class="ow">and</span> <span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="ow">in</span> <span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="p">))</span> - <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span> - <span class="n">is_author</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">is_author_unchecked</span> <span class="o">=</span> <span class="kc">False</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">EICRecommendation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">)</span> - <span class="k">except</span> <span class="n">EICRecommendation</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="kc">None</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">,</span> - <span class="s1">'other_versions'</span><span class="p">:</span> <span class="n">other_versions</span><span class="p">,</span> - <span class="s1">'recommendation'</span><span class="p">:</span> <span class="n">recommendation</span><span class="p">,</span> - <span class="s1">'comments'</span><span class="p">:</span> <span class="p">(</span><span class="n">comments</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status__gte</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">is_author_reply</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-date_submitted'</span><span class="p">)),</span> - <span class="s1">'invited_reports'</span><span class="p">:</span> <span class="n">reports</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status__gte</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">invited</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> - <span class="s1">'contributed_reports'</span><span class="p">:</span> <span class="n">reports</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status__gte</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">invited</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> - <span class="s1">'author_replies'</span><span class="p">:</span> <span class="n">author_replies</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">,</span> - <span class="s1">'is_author'</span><span class="p">:</span> <span class="n">is_author</span><span class="p">,</span> <span class="s1">'is_author_unchecked'</span><span class="p">:</span> <span class="n">is_author_unchecked</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submission_detail.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="c1">######################</span> -<span class="c1"># Editorial workflow #</span> -<span class="c1">######################</span> - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_take_charge_of_submissions'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="editorial_workflow"><a class="viewcode-back" href="../../modules/views.html#submissions.views.editorial_workflow">[docs]</a><span class="k">def</span> <span class="nf">editorial_workflow</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Summary page for Editorial Fellows, containing a digest</span> -<span class="sd"> of the actions to take to handle Submissions.</span> -<span class="sd"> """</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/editorial_workflow.html'</span><span class="p">)</span></div> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_view_pool'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<div class="viewcode-block" id="pool"><a class="viewcode-back" href="../../modules/views.html#submissions.views.pool">[docs]</a><span class="k">def</span> <span class="nf">pool</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> The Submissions pool contains all submissions which are undergoing</span> -<span class="sd"> the editorial process, from submission</span> -<span class="sd"> to publication acceptance or rejection.</span> -<span class="sd"> All members of the Editorial College have access.</span> -<span class="sd"> """</span> - <span class="n">submissions_in_pool</span><span class="o">=</span><span class="p">(</span><span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">status__in</span><span class="o">=</span><span class="n">SUBMISSION_STATUS_OUT_OF_POOL</span><span class="p">)</span> - <span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">is_current</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'-submission_date'</span><span class="p">))</span> - <span class="n">recommendations_undergoing_voting</span> <span class="o">=</span> <span class="p">(</span><span class="n">EICRecommendation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">submission__status__in</span><span class="o">=</span><span class="p">[</span><span class="s1">'put_to_EC_voting'</span><span class="p">]))</span> - <span class="n">recommendations_to_prepare_for_voting</span> <span class="o">=</span> <span class="p">(</span><span class="n">EICRecommendation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">submission__status__in</span><span class="o">=</span><span class="p">[</span><span class="s1">'voting_in_preparation'</span><span class="p">]))</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">assignments_to_consider</span> <span class="o">=</span> <span class="n">EditorialAssignment</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">to</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">accepted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">deprecated</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">consider_assignment_form</span> <span class="o">=</span> <span class="n">ConsiderAssignmentForm</span><span class="p">()</span> - <span class="n">recs_to_vote_on</span> <span class="o">=</span> <span class="n">EICRecommendation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">eligible_to_vote__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span> - <span class="n">recommendation</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">recommendation</span><span class="o">=-</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span> - <span class="n">voted_for__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span> - <span class="n">voted_against__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span> - <span class="n">voted_abstain__in</span><span class="o">=</span><span class="p">[</span><span class="n">contributor</span><span class="p">])</span> - <span class="n">rec_vote_form</span> <span class="o">=</span> <span class="n">RecommendationVoteForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'submissions_in_pool'</span><span class="p">:</span> <span class="n">submissions_in_pool</span><span class="p">,</span> - <span class="s1">'recommendations_undergoing_voting'</span><span class="p">:</span> <span class="n">recommendations_undergoing_voting</span><span class="p">,</span> - <span class="s1">'recommendations_to_prepare_for_voting'</span><span class="p">:</span> <span class="n">recommendations_to_prepare_for_voting</span><span class="p">,</span> - <span class="s1">'assignments_to_consider'</span><span class="p">:</span> <span class="n">assignments_to_consider</span><span class="p">,</span> - <span class="s1">'consider_assignment_form'</span><span class="p">:</span> <span class="n">consider_assignment_form</span><span class="p">,</span> - <span class="s1">'recs_to_vote_on'</span><span class="p">:</span> <span class="n">recs_to_vote_on</span><span class="p">,</span> - <span class="s1">'rec_vote_form'</span><span class="p">:</span> <span class="n">rec_vote_form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/pool.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_assign_submissions'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">assign_submission</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="n">submission_to_assign</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> - <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="c1">#form = AssignSubmissionForm(discipline=submission_to_assign.discipline, subject_area=submission_to_assign.subject_area) # reactivate later on</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">AssignSubmissionForm</span><span class="p">(</span><span class="n">discipline</span><span class="o">=</span><span class="n">submission_to_assign</span><span class="o">.</span><span class="n">discipline</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'submission_to_assign'</span><span class="p">:</span> <span class="n">submission_to_assign</span><span class="p">,</span> - <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/assign_submission.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_assign_submissions'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">assign_submission_ack</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> - <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">AssignSubmissionForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">,</span> <span class="n">discipline</span><span class="o">=</span><span class="n">submission</span><span class="o">.</span><span class="n">discipline</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">suggested_editor_in_charge</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'editor_in_charge'</span><span class="p">]</span> - <span class="c1"># TODO: check for possible co-authorships, disqualifying this suggested EIC</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">suggested_editor_in_charge</span><span class="o">.</span><span class="n">is_currently_available</span><span class="p">():</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'This Fellow is marked as currently unavailable. '</span> - <span class="s1">'Please go back and select another one.'</span><span class="p">)</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - <span class="n">ed_assignment</span> <span class="o">=</span> <span class="n">EditorialAssignment</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> - <span class="n">to</span><span class="o">=</span><span class="n">suggested_editor_in_charge</span><span class="p">,</span> - <span class="n">date_created</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">())</span> - <span class="n">ed_assignment</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'assignment'</span><span class="p">:</span> <span class="n">ed_assignment</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_assignment_request_email</span><span class="p">()</span> - - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'Your assignment request has been sent successfully.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Return to the '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:pool'</span><span class="p">),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'Submissions pool'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_take_charge_of_submissions'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">accept_or_decline_assignment_ack</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">assignment_id</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">assignment</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">EditorialAssignment</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">assignment_id</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">==</span> <span class="s1">'assignment_failed'</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'This Submission has failed pre-screening and has been rejected.'</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/accept_or_decline_assignment_ack.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">if</span> <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="n">title_dict</span><span class="p">[</span><span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> - <span class="s1">' has already agreed to be Editor-in-charge of this Submission.'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/accept_or_decline_assignment_ack.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">ConsiderAssignmentForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">date_answered</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'accept'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'True'</span><span class="p">:</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">accepted</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">to</span> <span class="o">=</span> <span class="n">contributor</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'EICassigned'</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span> <span class="o">=</span> <span class="n">contributor</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">open_for_reporting</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">deadline</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">28</span><span class="p">)</span> <span class="c1"># for papers</span> - <span class="k">if</span> <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">submitted_to_journal</span> <span class="o">==</span> <span class="s1">'SciPost Physics Lecture Notes'</span><span class="p">:</span> - <span class="n">deadline</span> <span class="o">+=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">28</span><span class="p">)</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">reporting_deadline</span> <span class="o">=</span> <span class="n">deadline</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">open_for_commenting</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">latest_activity</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'assignment'</span><span class="p">:</span> <span class="n">assignment</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">deprecate_other_assignments</span><span class="p">()</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="p">)</span> - <span class="n">ed_admins</span> <span class="o">=</span> <span class="n">Group</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'Editorial Administrators'</span><span class="p">)</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> <span class="n">ed_admins</span><span class="p">,</span> <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="p">)</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_EIC_appointment_email</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_author_prescreening_passed_email</span><span class="p">()</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">accepted</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">refusal_reason</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'refusal_reason'</span><span class="p">]</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'unassigned'</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'assignment'</span><span class="p">:</span> <span class="n">assignment</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/accept_or_decline_assignment_ack.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_take_charge_of_submissions'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="volunteer_as_EIC"><a class="viewcode-back" href="../../modules/views.html#submissions.views.volunteer_as_EIC">[docs]</a><span class="k">def</span> <span class="nf">volunteer_as_EIC</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Called when a Fellow volunteers while perusing the submissions pool.</span> -<span class="sd"> This is an adapted version of the accept_or_decline_assignment_ack method.</span> -<span class="sd"> """</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">==</span> <span class="s1">'assignment_failed'</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'This Submission has failed pre-screening and has been rejected.'</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/accept_or_decline_assignment_ack.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">if</span> <span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="n">title_dict</span><span class="p">[</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> - <span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> - <span class="s1">' has already agreed to be Editor-in-charge of this Submission.'</span><span class="p">)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/accept_or_decline_assignment_ack.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">assignment</span> <span class="o">=</span> <span class="n">EditorialAssignment</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> - <span class="n">to</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">accepted</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">date_created</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">date_answered</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">())</span> - <span class="n">deadline</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">28</span><span class="p">)</span> <span class="c1"># for papers</span> - <span class="k">if</span> <span class="n">submission</span><span class="o">.</span><span class="n">submitted_to_journal</span> <span class="o">==</span> <span class="s1">'SciPost Physics Lecture Notes'</span><span class="p">:</span> - <span class="n">deadline</span> <span class="o">+=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">28</span><span class="p">)</span> - <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'EICassigned'</span> - <span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span> <span class="o">=</span> <span class="n">contributor</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_reporting</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">submission</span><span class="o">.</span><span class="n">reporting_deadline</span> <span class="o">=</span> <span class="n">deadline</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_commenting</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">submission</span><span class="o">.</span><span class="n">latest_activity</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'assignment'</span><span class="p">:</span> <span class="n">assignment</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">deprecate_other_assignments</span><span class="p">()</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> <span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="p">,</span> <span class="n">submission</span><span class="p">)</span> - <span class="n">ed_admins</span> <span class="o">=</span> <span class="n">Group</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'Editorial Administrators'</span><span class="p">)</span> - <span class="n">assign_perm</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> <span class="n">ed_admins</span><span class="p">,</span> <span class="n">submission</span><span class="p">)</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_EIC_appointment_email</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_author_prescreening_passed_email</span><span class="p">()</span> - - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'assignment'</span><span class="p">:</span> <span class="n">assignment</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/accept_or_decline_assignment_ack.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_assign_submissions'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="assignment_failed"><a class="viewcode-back" href="../../modules/views.html#submissions.views.assignment_failed">[docs]</a><span class="k">def</span> <span class="nf">assignment_failed</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> No Editorial Fellow has accepted or volunteered to become Editor-in-charge.</span> -<span class="sd"> The submission is rejected.</span> -<span class="sd"> This method is called from pool.html by an Editorial Administrator.</span> -<span class="sd"> """</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'assignment_failed'</span> - <span class="n">submission</span><span class="o">.</span><span class="n">latest_activity</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">deprecate_all_assignments</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">assignment_failed_email_authors</span><span class="p">()</span> - - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/assignment_failed_ack.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> - <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">))</span> -<span class="k">def</span> <span class="nf">editorial_page</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="n">other_versions</span> <span class="o">=</span> <span class="n">Submission</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">arxiv_identifier_wo_vn_nr</span><span class="o">=</span><span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_wo_vn_nr</span> - <span class="p">)</span><span class="o">.</span><span class="n">exclude</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">submission</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> - <span class="n">ref_invitations</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">)</span> - <span class="n">nr_reports_to_vet</span> <span class="o">=</span> <span class="p">(</span><span class="n">Report</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">submission__editor_in_charge</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="o">.</span><span class="n">count</span><span class="p">())</span> - <span class="n">communications</span> <span class="o">=</span> <span class="p">(</span><span class="n">EditorialCommunication</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">)</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="s1">'timestamp'</span><span class="p">))</span> - <span class="k">try</span><span class="p">:</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">EICRecommendation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">)</span> - <span class="k">except</span> <span class="n">EICRecommendation</span><span class="o">.</span><span class="n">DoesNotExist</span><span class="p">:</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="kc">None</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">,</span> - <span class="s1">'other_versions'</span><span class="p">:</span> <span class="n">other_versions</span><span class="p">,</span> - <span class="s1">'recommendation'</span><span class="p">:</span> <span class="n">recommendation</span><span class="p">,</span> - <span class="s1">'set_deadline_form'</span><span class="p">:</span> <span class="n">SetRefereeingDeadlineForm</span><span class="p">(),</span> - <span class="s1">'ref_invitations'</span><span class="p">:</span> <span class="n">ref_invitations</span><span class="p">,</span> - <span class="s1">'nr_reports_to_vet'</span><span class="p">:</span> <span class="n">nr_reports_to_vet</span><span class="p">,</span> - <span class="s1">'communications'</span><span class="p">:</span> <span class="n">communications</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/editorial_page.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> - <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">))</span> -<span class="k">def</span> <span class="nf">select_referee</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="n">queryresults</span> <span class="o">=</span> <span class="s1">''</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">ref_search_form</span> <span class="o">=</span> <span class="n">RefereeSelectForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">ref_search_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">contributors_found</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">user__last_name__icontains</span><span class="o">=</span><span class="n">ref_search_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">])</span> - <span class="c1"># Check for recent co-authorship (thus referee disqualification)</span> - <span class="k">if</span> <span class="n">submission</span><span class="o">.</span><span class="n">metadata</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">sub_auth_boolean_str</span> <span class="o">=</span> <span class="s1">'(('</span> <span class="o">+</span> <span class="p">(</span><span class="n">submission</span> - <span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'authors'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'name'</span><span class="p">]</span> - <span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> - <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">submission</span><span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'authors'</span><span class="p">][</span><span class="mi">1</span><span class="p">:]:</span> - <span class="n">sub_auth_boolean_str</span> <span class="o">+=</span> <span class="s1">'+OR+'</span> <span class="o">+</span> <span class="n">author</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> - <span class="n">sub_auth_boolean_str</span> <span class="o">+=</span> <span class="s1">')+AND+'</span> - <span class="n">search_str</span> <span class="o">=</span> <span class="n">sub_auth_boolean_str</span> <span class="o">+</span> <span class="n">ref_search_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">]</span> <span class="o">+</span> <span class="s1">')'</span> - <span class="n">queryurl</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'http://export.arxiv.org/api/query?search_query=au:</span><span class="si">%s</span><span class="s1">'</span> - <span class="o">%</span> <span class="n">search_str</span> <span class="o">+</span> <span class="s1">'&sortBy=submittedDate&sortOrder=descending'</span> - <span class="s1">'&max_results=5'</span><span class="p">)</span> - <span class="n">arxivquery</span> <span class="o">=</span> <span class="n">feedparser</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">queryurl</span><span class="p">)</span> - <span class="n">queryresults</span> <span class="o">=</span> <span class="n">arxivquery</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">ref_search_form</span> <span class="o">=</span> <span class="n">RefereeSelectForm</span><span class="p">()</span> - <span class="n">contributors_found</span> <span class="o">=</span> <span class="kc">None</span> - <span class="n">ref_recruit_form</span> <span class="o">=</span> <span class="n">RefereeRecruitmentForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">,</span> <span class="s1">'ref_search_form'</span><span class="p">:</span> <span class="n">ref_search_form</span><span class="p">,</span> - <span class="s1">'contributors_found'</span><span class="p">:</span> <span class="n">contributors_found</span><span class="p">,</span> - <span class="s1">'ref_recruit_form'</span><span class="p">:</span> <span class="n">ref_recruit_form</span><span class="p">,</span> - <span class="s1">'queryresults'</span><span class="p">:</span> <span class="n">queryresults</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/select_referee.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> - <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">))</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="recruit_referee"><a class="viewcode-back" href="../../modules/views.html#submissions.views.recruit_referee">[docs]</a><span class="k">def</span> <span class="nf">recruit_referee</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> If the Editor-in-charge does not find the desired referee among Contributors</span> -<span class="sd"> (otherwise, the method send_refereeing_invitation below is used instead),</span> -<span class="sd"> he/she can invite somebody by providing name + contact details.</span> -<span class="sd"> This function emails a registration invitation to this person.</span> -<span class="sd"> The pending refereeing invitation is then recognized upon registration,</span> -<span class="sd"> using the invitation token.</span> -<span class="sd"> """</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">ref_recruit_form</span> <span class="o">=</span> <span class="n">RefereeRecruitmentForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">ref_recruit_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="c1"># TODO check if email already taken</span> - <span class="n">ref_invitation</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="p">(</span> - <span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> - <span class="n">title</span><span class="o">=</span><span class="n">ref_recruit_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'title'</span><span class="p">],</span> - <span class="n">first_name</span><span class="o">=</span><span class="n">ref_recruit_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'first_name'</span><span class="p">],</span> - <span class="n">last_name</span><span class="o">=</span><span class="n">ref_recruit_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">],</span> - <span class="n">email_address</span><span class="o">=</span><span class="n">ref_recruit_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_address'</span><span class="p">],</span> - <span class="n">date_invited</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">invited_by</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">ref_invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1"># Create and send a registration invitation</span> - <span class="n">ref_inv_message_head</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'On behalf of the Editor-in-charge '</span> <span class="o">+</span> - <span class="n">title_dict</span><span class="p">[</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="o">.</span><span class="n">title</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> - <span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> - <span class="s1">', we would like to invite you to referee a Submission to '</span> - <span class="o">+</span> <span class="n">journals_submit_dict</span><span class="p">[</span><span class="n">submission</span><span class="o">.</span><span class="n">submitted_to_journal</span><span class="p">]</span> - <span class="o">+</span> <span class="s1">', namely</span><span class="se">\n\n</span><span class="s1">'</span> <span class="o">+</span> <span class="n">submission</span><span class="o">.</span><span class="n">title</span> - <span class="o">+</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">by '</span> <span class="o">+</span> <span class="n">submission</span><span class="o">.</span><span class="n">author_list</span> <span class="o">+</span> <span class="s1">'.'</span><span class="p">)</span> - <span class="n">reg_invitation</span> <span class="o">=</span> <span class="n">RegistrationInvitation</span> <span class="p">(</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">ref_recruit_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'title'</span><span class="p">],</span> - <span class="n">first_name</span> <span class="o">=</span> <span class="n">ref_recruit_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'first_name'</span><span class="p">],</span> - <span class="n">last_name</span> <span class="o">=</span> <span class="n">ref_recruit_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'last_name'</span><span class="p">],</span> - <span class="n">email</span> <span class="o">=</span> <span class="n">ref_recruit_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_address'</span><span class="p">],</span> - <span class="n">invitation_type</span> <span class="o">=</span> <span class="s1">'R'</span><span class="p">,</span> - <span class="n">invited_by</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">message_style</span> <span class="o">=</span> <span class="s1">'F'</span><span class="p">,</span> - <span class="n">personal_message</span> <span class="o">=</span> <span class="n">ref_inv_message_head</span><span class="p">,</span> - <span class="p">)</span> - <span class="n">reg_invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'invitation'</span><span class="p">:</span> <span class="n">reg_invitation</span><span class="p">})</span> - <span class="n">Utils</span><span class="o">.</span><span class="n">send_registration_invitation_email</span><span class="p">()</span> - <span class="c1"># Copy the key to the refereeing invitation:</span> - <span class="n">ref_invitation</span><span class="o">.</span><span class="n">invitation_key</span> <span class="o">=</span> <span class="n">reg_invitation</span><span class="o">.</span><span class="n">invitation_key</span> - <span class="n">ref_invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}))</span></div> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> - <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">))</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="send_refereeing_invitation"><a class="viewcode-back" href="../../modules/views.html#submissions.views.send_refereeing_invitation">[docs]</a><span class="k">def</span> <span class="nf">send_refereeing_invitation</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> <span class="n">contributor_id</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> This method is called by the EIC from the submission's editorial_page,</span> -<span class="sd"> in the case where the referee is an identified Contributor.</span> -<span class="sd"> For a referee who isn't a Contributor yet, the method recruit_referee above</span> -<span class="sd"> is called instead.</span> -<span class="sd"> """</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">contributor_id</span><span class="p">)</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">contributor</span><span class="o">.</span><span class="n">is_currently_available</span><span class="p">():</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'This Contributor is marked as currently unavailable. '</span> - <span class="s1">'Please go back and select another referee.'</span><span class="p">)</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> - <span class="n">referee</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">title</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> - <span class="n">first_name</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span><span class="p">,</span> - <span class="n">last_name</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">,</span> - <span class="n">email_address</span><span class="o">=</span><span class="n">contributor</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">email</span><span class="p">,</span> - <span class="c1"># the key is only used for inviting unregistered users</span> - <span class="n">invitation_key</span><span class="o">=</span><span class="s1">'notused'</span><span class="p">,</span> - <span class="n">date_invited</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">invited_by</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'invitation'</span><span class="p">:</span> <span class="n">invitation</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_refereeing_invitation_email</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}))</span></div> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> - <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">))</span> -<div class="viewcode-block" id="ref_invitation_reminder"><a class="viewcode-back" href="../../modules/views.html#submissions.views.ref_invitation_reminder">[docs]</a><span class="k">def</span> <span class="nf">ref_invitation_reminder</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> <span class="n">invitation_id</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> This method is used by the Editor-in-charge from the editorial_page</span> -<span class="sd"> when a referee has been invited but hasn't answered yet.</span> -<span class="sd"> It can be used for registered as well as unregistered referees.</span> -<span class="sd"> """</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">RefereeInvitation</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">invitation_id</span><span class="p">)</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">nr_reminders</span> <span class="o">+=</span> <span class="mi">1</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">date_last_reminded</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'invitation'</span><span class="p">:</span> <span class="n">invitation</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_ref_reminder_email</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}))</span></div> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_referee'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">accept_or_decline_ref_invitations</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">referee</span><span class="o">=</span><span class="n">contributor</span><span class="p">,</span> <span class="n">accepted</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">ConsiderRefereeInvitationForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'invitation_to_consider'</span><span class="p">:</span> <span class="n">invitation</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/accept_or_decline_ref_invitations.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_referee'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">accept_or_decline_ref_invitation_ack</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">invitation_id</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">RefereeInvitation</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">invitation_id</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">ConsiderRefereeInvitationForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">date_responded</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'accept'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'True'</span><span class="p">:</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">accepted</span> <span class="o">=</span> <span class="kc">True</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">accepted</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">refusal_reason</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'refusal_reason'</span><span class="p">]</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'invitation'</span><span class="p">:</span> <span class="n">invitation</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">email_referee_response_to_EIC</span><span class="p">()</span> - - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'invitation'</span><span class="p">:</span> <span class="n">invitation</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/accept_or_decline_ref_invitation_ack.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> - <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">))</span> -<div class="viewcode-block" id="cancel_ref_invitation"><a class="viewcode-back" href="../../modules/views.html#submissions.views.cancel_ref_invitation">[docs]</a><span class="k">def</span> <span class="nf">cancel_ref_invitation</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> <span class="n">invitation_id</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> This method is used by the Editor-in-charge from the editorial_page</span> -<span class="sd"> to remove a referee for the list of invited ones.</span> -<span class="sd"> It can be used for registered as well as unregistered referees.</span> -<span class="sd"> """</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">RefereeInvitation</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">invitation_id</span><span class="p">)</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">cancelled</span><span class="o">=</span><span class="kc">True</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'invitation'</span><span class="p">:</span> <span class="n">invitation</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_ref_cancellation_email</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}))</span></div> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> - <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">))</span> -<span class="k">def</span> <span class="nf">extend_refereeing_deadline</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> <span class="n">days</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="n">submission</span><span class="o">.</span><span class="n">reporting_deadline</span> <span class="o">+=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">days</span><span class="p">))</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_reporting</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_commenting</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'EICassigned'</span> - <span class="n">submission</span><span class="o">.</span><span class="n">latest_activity</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}))</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> - <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">))</span> -<span class="k">def</span> <span class="nf">set_refereeing_deadline</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">SetRefereeingDeadlineForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">submission</span><span class="o">.</span><span class="n">reporting_deadline</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'deadline'</span><span class="p">]</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'deadline'</span><span class="p">]</span> <span class="o">></span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">date</span><span class="p">():</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_reporting</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_commenting</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'EICassigned'</span> - <span class="n">submission</span><span class="o">.</span><span class="n">latest_activity</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'New reporting deadline set.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Return to the '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'Submission</span><span class="se">\'</span><span class="s1">s Editorial Page'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'The set reporting deadline form was improperly filled'</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}))</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> - <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">))</span> -<div class="viewcode-block" id="close_refereeing_round"><a class="viewcode-back" href="../../modules/views.html#submissions.views.close_refereeing_round">[docs]</a><span class="k">def</span> <span class="nf">close_refereeing_round</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Called by the Editor-in-charge when a satisfactory number of</span> -<span class="sd"> reports have been gathered.</span> -<span class="sd"> Automatically emails the authors to ask them if they want to</span> -<span class="sd"> round off any replies to reports or comments before the</span> -<span class="sd"> editorial recommendation is formulated.</span> -<span class="sd"> """</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_reporting</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_commenting</span> <span class="o">=</span> <span class="kc">False</span> - <span class="k">if</span> <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">==</span> <span class="s1">'EICassigned'</span><span class="p">:</span> <span class="c1"># only close if currently undergoing refereeing</span> - <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'review_closed'</span> - <span class="n">submission</span><span class="o">.</span><span class="n">reporting_deadline</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="n">submission</span><span class="o">.</span><span class="n">latest_activity</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}))</span></div> - - -<span class="nd">@login_required</span> -<div class="viewcode-block" id="communication"><a class="viewcode-back" href="../../modules/views.html#submissions.views.communication">[docs]</a><span class="k">def</span> <span class="nf">communication</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">,</span> <span class="n">comtype</span><span class="p">,</span> <span class="n">referee_id</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Communication between editor-in-charge, author or referee</span> -<span class="sd"> occurring during the submission refereeing.</span> -<span class="sd"> """</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">comtype</span> <span class="ow">in</span> <span class="n">ed_comm_choices_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'Unknown type of cummunication.'</span> - <span class="c1"># TODO: Verify that this is requested by an authorized contributor (eic, ref, author)</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">comtype</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'EtoA'</span><span class="p">,</span> <span class="s1">'EtoR'</span><span class="p">,</span> <span class="s1">'EtoS'</span><span class="p">]</span> <span class="ow">and</span> - <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">has_perm</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> <span class="n">submission</span><span class="p">)):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'Only the Editor-in-charge can perform this action.'</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">comtype</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'AtoE'</span><span class="p">]</span> <span class="ow">and</span> - <span class="ow">not</span> <span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span> <span class="o">==</span> <span class="n">submission</span><span class="o">.</span><span class="n">submitted_by</span><span class="p">)):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'Only the corresponding author can perform this action.'</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">comtype</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'RtoE'</span><span class="p">]</span> <span class="ow">and</span> - <span class="ow">not</span> <span class="p">(</span><span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span> - <span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> <span class="n">referee</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">())):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'Only invited referees for this Submission can perform this action.'</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">comtype</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'StoE'</span><span class="p">]</span> <span class="ow">and</span> - <span class="ow">not</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">groups</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'Editorial Administrators'</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">()):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'Only Editorial Administrators can perform this action.'</span> - <span class="k">if</span> <span class="n">errormessage</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">,</span> <span class="s1">'comtype'</span><span class="p">:</span> <span class="n">comtype</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/communication.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">EditorialCommunicationForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">communication</span> <span class="o">=</span> <span class="n">EditorialCommunication</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> - <span class="n">comtype</span><span class="o">=</span><span class="n">comtype</span><span class="p">,</span> - <span class="n">timestamp</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">text</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'text'</span><span class="p">])</span> - <span class="k">if</span> <span class="n">referee_id</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">referee</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">referee_id</span><span class="p">)</span> - <span class="n">communication</span><span class="o">.</span><span class="n">referee</span> <span class="o">=</span> <span class="n">referee</span> - <span class="n">communication</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'communication'</span><span class="p">:</span> <span class="n">communication</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_communication_email</span><span class="p">()</span> - <span class="k">if</span> <span class="n">comtype</span> <span class="o">==</span> <span class="s1">'EtoA'</span> <span class="ow">or</span> <span class="n">comtype</span> <span class="o">==</span> <span class="s1">'EtoR'</span> <span class="ow">or</span> <span class="n">comtype</span> <span class="o">==</span> <span class="s1">'EtoS'</span><span class="p">:</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}))</span> - <span class="k">elif</span> <span class="n">comtype</span> <span class="o">==</span> <span class="s1">'AtoE'</span> <span class="ow">or</span> <span class="n">comtype</span> <span class="o">==</span> <span class="s1">'RtoE'</span><span class="p">:</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'scipost:personal_page'</span><span class="p">))</span> - <span class="k">elif</span> <span class="n">comtype</span> <span class="o">==</span> <span class="s1">'StoE'</span><span class="p">:</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:pool'</span><span class="p">))</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">EditorialCommunicationForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">,</span> <span class="s1">'comtype'</span><span class="p">:</span> <span class="n">comtype</span><span class="p">,</span> <span class="s1">'referee_id'</span><span class="p">:</span> <span class="n">referee_id</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/communication.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span></div> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required_or_403</span><span class="p">(</span><span class="s1">'can_take_editorial_actions'</span><span class="p">,</span> - <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">,</span> <span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">))</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">eic_recommendation</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="k">if</span> <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">'EICassigned'</span><span class="p">,</span> <span class="s1">'review_closed'</span><span class="p">]:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'This submission</span><span class="se">\'</span><span class="s1">s current status is: '</span> - <span class="o">+</span> <span class="n">submission_status_dict</span><span class="p">[</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'. '</span> - <span class="s1">'An Editorial Recommendation is not required.'</span><span class="p">)</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/error.html'</span><span class="p">,</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">})</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">EICRecommendationForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="c1">#recommendation = form.save()</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">EICRecommendation</span><span class="p">(</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">submission</span><span class="p">,</span> - <span class="n">date_submitted</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">remarks_for_authors</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'remarks_for_authors'</span><span class="p">],</span> - <span class="n">requested_changes</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'requested_changes'</span><span class="p">],</span> - <span class="n">remarks_for_editorial_college</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'remarks_for_editorial_college'</span><span class="p">],</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'recommendation'</span><span class="p">],</span> - <span class="n">voting_deadline</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">7</span><span class="p">),</span> - <span class="p">)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1"># If recommendation is to accept or reject,</span> - <span class="c1"># it is forwarded to the Editorial College for voting</span> - <span class="c1"># If it is to carry out minor or major revisions,</span> - <span class="c1"># it is returned to the Author who is asked to resubmit</span> - <span class="k">if</span> <span class="p">(</span><span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span> <span class="o">==</span> <span class="mi">1</span> - <span class="ow">or</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span> <span class="o">==</span> <span class="mi">2</span> - <span class="ow">or</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span> <span class="o">==</span> <span class="mi">3</span> - <span class="ow">or</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span> <span class="o">==</span> <span class="o">-</span><span class="mi">3</span><span class="p">):</span> - <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'voting_in_preparation'</span> - <span class="k">elif</span> <span class="p">(</span><span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span> - <span class="ow">or</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span> <span class="o">==</span> <span class="o">-</span><span class="mi">2</span><span class="p">):</span> - <span class="n">submission</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s1">'revision_requested'</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">,</span> - <span class="s1">'recommendation'</span><span class="p">:</span> <span class="n">recommendation</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_author_revision_requested_email</span><span class="p">()</span> - <span class="n">submission</span><span class="o">.</span><span class="n">open_for_reporting</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - - <span class="c1"># The EIC has fulfilled this editorial assignment.</span> - <span class="n">assignment</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">EditorialAssignment</span><span class="p">,</span> - <span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">completed</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">assignment</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}))</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">EICRecommendationForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">,</span> - <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/eic_recommendation.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="c1">###########</span> -<span class="c1"># Reports</span> -<span class="c1">###########</span> - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_referee'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">submit_report</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="p">):</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">get_object_or_404</span> <span class="p">(</span><span class="n">Submission</span><span class="p">,</span> <span class="n">arxiv_identifier_w_vn_nr</span><span class="o">=</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">)</span> - <span class="c1"># Check whether the user can submit a report:</span> - <span class="n">is_author</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span> <span class="ow">in</span> <span class="n">submission</span><span class="o">.</span><span class="n">authors</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> - <span class="n">is_author_unchecked</span> <span class="o">=</span> <span class="p">(</span><span class="ow">not</span> <span class="n">is_author</span> - <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span> <span class="ow">in</span> <span class="n">submission</span><span class="o">.</span><span class="n">authors_false_claims</span><span class="o">.</span><span class="n">all</span><span class="p">())</span> - <span class="ow">and</span> <span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="ow">in</span> <span class="n">submission</span><span class="o">.</span><span class="n">author_list</span><span class="p">))</span> - <span class="n">invited</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> - <span class="n">referee</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">()</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="kc">None</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">invited</span> <span class="ow">and</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> <span class="o">></span> <span class="n">submission</span><span class="o">.</span><span class="n">reporting_deadline</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">days</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'The reporting deadline has passed. You cannot submit'</span> - <span class="s1">' a Report anymore.'</span><span class="p">)</span> - <span class="k">if</span> <span class="n">is_author</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="s1">'You are an author of this Submission and cannot submit a Report.'</span> - <span class="k">if</span> <span class="n">is_author_unchecked</span><span class="p">:</span> - <span class="n">errormessage</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'The system flagged you as a potential author of this Submission. '</span> - <span class="s1">'Please go to your personal page under the Submissions tab to clarify this.'</span><span class="p">)</span> - <span class="k">if</span> <span class="n">errormessage</span><span class="p">:</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'errormessage'</span><span class="p">:</span> <span class="n">errormessage</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submit_report_ack.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">ReportForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">author</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="k">if</span> <span class="n">invited</span><span class="p">:</span> - <span class="n">invitation</span> <span class="o">=</span> <span class="n">RefereeInvitation</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">submission</span><span class="o">=</span><span class="n">submission</span><span class="p">,</span> - <span class="n">referee</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">fulfilled</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">invitation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">flagged</span> <span class="o">=</span> <span class="kc">False</span> - <span class="k">if</span> <span class="n">submission</span><span class="o">.</span><span class="n">referees_flagged</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="k">if</span> <span class="n">author</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="ow">in</span> <span class="n">submission</span><span class="o">.</span><span class="n">referees_flagged</span><span class="p">:</span> - <span class="n">flagged</span> <span class="o">=</span> <span class="kc">True</span> - <span class="n">newreport</span> <span class="o">=</span> <span class="n">Report</span> <span class="p">(</span> - <span class="n">submission</span> <span class="o">=</span> <span class="n">submission</span><span class="p">,</span> - <span class="n">author</span> <span class="o">=</span> <span class="n">author</span><span class="p">,</span> - <span class="n">invited</span> <span class="o">=</span> <span class="n">invited</span><span class="p">,</span> - <span class="n">flagged</span> <span class="o">=</span> <span class="n">flagged</span><span class="p">,</span> - <span class="n">qualification</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'qualification'</span><span class="p">],</span> - <span class="n">strengths</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'strengths'</span><span class="p">],</span> - <span class="n">weaknesses</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'weaknesses'</span><span class="p">],</span> - <span class="n">report</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'report'</span><span class="p">],</span> - <span class="n">requested_changes</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'requested_changes'</span><span class="p">],</span> - <span class="n">validity</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'validity'</span><span class="p">],</span> - <span class="n">significance</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'significance'</span><span class="p">],</span> - <span class="n">originality</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'originality'</span><span class="p">],</span> - <span class="n">clarity</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'clarity'</span><span class="p">],</span> - <span class="n">formatting</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'formatting'</span><span class="p">],</span> - <span class="n">grammar</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'grammar'</span><span class="p">],</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'recommendation'</span><span class="p">],</span> - <span class="n">remarks_for_editors</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'remarks_for_editors'</span><span class="p">],</span> - <span class="n">anonymous</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'anonymous'</span><span class="p">],</span> - <span class="n">date_submitted</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="p">)</span> - <span class="n">newreport</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">author</span><span class="o">.</span><span class="n">nr_reports</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">author</span><span class="o">=</span><span class="n">author</span><span class="p">)</span><span class="o">.</span><span class="n">count</span><span class="p">()</span> - <span class="n">author</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'report'</span><span class="p">:</span> <span class="n">newreport</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">email_EIC_report_delivered</span><span class="p">()</span> - <span class="n">request</span><span class="o">.</span><span class="n">session</span><span class="p">[</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">]</span> <span class="o">=</span> <span class="n">arxiv_identifier_w_vn_nr</span> - <span class="k">return</span> <span class="n">HttpResponseRedirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:submit_report_ack'</span><span class="p">))</span> - - <span class="k">else</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">ReportForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">submission</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span> <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/submit_report.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@login_required</span> -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_take_charge_of_submissions'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="k">def</span> <span class="nf">vet_submitted_reports</span><span class="p">(</span><span class="n">request</span><span class="p">):</span> - <span class="n">contributor</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">user</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="p">)</span> - <span class="n">report_to_vet</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">status</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> - <span class="n">submission__editor_in_charge</span><span class="o">=</span><span class="n">contributor</span><span class="p">)</span><span class="o">.</span><span class="n">first</span><span class="p">()</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">VetReportForm</span><span class="p">()</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'contributor'</span><span class="p">:</span> <span class="n">contributor</span><span class="p">,</span> <span class="s1">'report_to_vet'</span><span class="p">:</span> <span class="n">report_to_vet</span><span class="p">,</span> <span class="s1">'form'</span><span class="p">:</span> <span class="n">form</span> <span class="p">}</span> - <span class="k">return</span><span class="p">(</span><span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/vet_submitted_reports.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">))</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_take_charge_of_submissions'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">vet_submitted_report_ack</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">report_id</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">VetReportForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="n">report</span> <span class="o">=</span> <span class="n">Report</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">report_id</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">report</span><span class="o">.</span><span class="n">vetted_by</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'action_option'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'1'</span><span class="p">:</span> - <span class="c1"># accept the report as is</span> - <span class="n">report</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="mi">1</span> - <span class="n">report</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">report</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">latest_activity</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> - <span class="n">report</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">elif</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'action_option'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'2'</span><span class="p">:</span> - <span class="c1"># the report is simply rejected</span> - <span class="n">report</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'refusal_reason'</span><span class="p">]</span> - <span class="n">report</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="c1"># email report author</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'report'</span><span class="p">:</span> <span class="n">report</span><span class="p">,</span> - <span class="s1">'email_response'</span><span class="p">:</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'email_response_field'</span><span class="p">]})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">acknowledge_report_email</span><span class="p">()</span> <span class="c1"># email report author, bcc EIC</span> - <span class="k">if</span> <span class="n">report</span><span class="o">.</span><span class="n">status</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_author_report_received_email</span><span class="p">()</span> - <span class="c1">#context = {'submission': report.submission}</span> - <span class="c1">#return render(request, 'submissions/vet_submitted_report_ack.html', context)</span> - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ack_header'</span><span class="p">:</span> <span class="s1">'Submitted Report vetted.'</span><span class="p">,</span> - <span class="s1">'followup_message'</span><span class="p">:</span> <span class="s1">'Return to the '</span><span class="p">,</span> - <span class="s1">'followup_link'</span><span class="p">:</span> <span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:editorial_page'</span><span class="p">,</span> - <span class="n">kwargs</span><span class="o">=</span><span class="p">{</span><span class="s1">'arxiv_identifier_w_vn_nr'</span><span class="p">:</span> <span class="n">report</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">arxiv_identifier_w_vn_nr</span><span class="p">}),</span> - <span class="s1">'followup_link_label'</span><span class="p">:</span> <span class="s1">'Submission</span><span class="se">\'</span><span class="s1">s Editorial Page'</span><span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_prepare_recommendations_for_voting'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">prepare_for_voting</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">rec_id</span><span class="p">):</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">EICRecommendation</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">rec_id</span><span class="p">)</span> - <span class="n">Fellows_with_expertise</span> <span class="o">=</span> <span class="n">Contributor</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span> - <span class="n">user__groups__name__in</span><span class="o">=</span><span class="p">[</span><span class="s1">'Editorial College'</span><span class="p">],</span> - <span class="n">expertises__contains</span><span class="o">=</span><span class="p">[</span><span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">subject_area</span><span class="p">])</span> - <span class="n">coauthorships</span> <span class="o">=</span> <span class="p">{}</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">eligibility_form</span> <span class="o">=</span> <span class="n">VotingEligibilityForm</span><span class="p">(</span> - <span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">,</span> - <span class="n">discipline</span><span class="o">=</span><span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">discipline</span><span class="p">,</span> - <span class="n">subject_area</span><span class="o">=</span><span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">subject_area</span> - <span class="p">)</span> - <span class="k">if</span> <span class="n">eligibility_form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">eligible_to_vote</span> <span class="o">=</span> <span class="n">eligibility_form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'eligible_Fellows'</span><span class="p">]</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">voted_for</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">editor_in_charge</span><span class="p">)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span><span class="o">=</span><span class="s1">'put_to_EC_voting'</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">render</span> <span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> - <span class="n">context</span><span class="o">=</span><span class="p">{</span><span class="s1">'ack_message'</span><span class="p">:</span> <span class="s1">'We have registered your selection.'</span><span class="p">})</span> - <span class="k">else</span><span class="p">:</span> - <span class="c1"># Identify possible co-authorships in last 3 years, disqualifying Fellow from voting:</span> - <span class="k">if</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">metadata</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> - <span class="k">for</span> <span class="n">Fellow</span> <span class="ow">in</span> <span class="n">Fellows_with_expertise</span><span class="p">:</span> - <span class="n">sub_auth_boolean_str</span> <span class="o">=</span> <span class="s1">'(('</span> <span class="o">+</span> <span class="p">(</span><span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span> - <span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'authors'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'name'</span><span class="p">]</span> - <span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> - <span class="k">for</span> <span class="n">author</span> <span class="ow">in</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">metadata</span><span class="p">[</span><span class="s1">'entries'</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">'authors'</span><span class="p">][</span><span class="mi">1</span><span class="p">:]:</span> - <span class="n">sub_auth_boolean_str</span> <span class="o">+=</span> <span class="s1">'+OR+'</span> <span class="o">+</span> <span class="n">author</span><span class="p">[</span><span class="s1">'name'</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> - <span class="n">sub_auth_boolean_str</span> <span class="o">+=</span> <span class="s1">')+AND+'</span> - <span class="n">search_str</span> <span class="o">=</span> <span class="n">sub_auth_boolean_str</span> <span class="o">+</span> <span class="n">Fellow</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">')'</span> - <span class="n">queryurl</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'http://export.arxiv.org/api/query?search_query=au:</span><span class="si">%s</span><span class="s1">'</span> - <span class="o">%</span> <span class="n">search_str</span> <span class="o">+</span> <span class="s1">'&sortBy=submittedDate&sortOrder=descending'</span> - <span class="s1">'&max_results=5'</span><span class="p">)</span> - <span class="n">arxivquery</span> <span class="o">=</span> <span class="n">feedparser</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">queryurl</span><span class="p">)</span> - <span class="n">queryresults</span> <span class="o">=</span> <span class="n">arxivquery</span> - <span class="k">if</span> <span class="n">queryresults</span><span class="o">.</span><span class="n">entries</span><span class="p">:</span> - <span class="n">coauthorships</span><span class="p">[</span><span class="n">Fellow</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">queryresults</span> - - <span class="n">eligibility_form</span> <span class="o">=</span> <span class="n">VotingEligibilityForm</span><span class="p">(</span> - <span class="n">discipline</span><span class="o">=</span><span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">discipline</span><span class="p">,</span> - <span class="n">subject_area</span><span class="o">=</span><span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">subject_area</span><span class="p">)</span> - - <span class="n">context</span> <span class="o">=</span> <span class="p">{</span> - <span class="s1">'recommendation'</span><span class="p">:</span> <span class="n">recommendation</span><span class="p">,</span> - <span class="s1">'Fellows_with_expertise'</span><span class="p">:</span> <span class="n">Fellows_with_expertise</span><span class="p">,</span> - <span class="s1">'coauthorships'</span><span class="p">:</span> <span class="n">coauthorships</span><span class="p">,</span> - <span class="s1">'eligibility_form'</span><span class="p">:</span> <span class="n">eligibility_form</span><span class="p">,</span> - <span class="p">}</span> - <span class="k">return</span> <span class="n">render</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'submissions/prepare_for_voting.html'</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_take_charge_of_submissions'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<span class="k">def</span> <span class="nf">vote_on_rec</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">rec_id</span><span class="p">):</span> - <span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">method</span> <span class="o">==</span> <span class="s1">'POST'</span><span class="p">:</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">EICRecommendation</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">rec_id</span><span class="p">)</span> - <span class="n">form</span> <span class="o">=</span> <span class="n">RecommendationVoteForm</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">POST</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">is_valid</span><span class="p">():</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'vote'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'agree'</span><span class="p">:</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">voted_for</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">voted_against</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">voted_abstain</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'vote'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'disagree'</span><span class="p">:</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">voted_for</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">voted_against</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">voted_abstain</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="k">elif</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'vote'</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'abstain'</span><span class="p">:</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">voted_for</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">voted_against</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">voted_abstain</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">)</span> - <span class="k">if</span> <span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'remark'</span><span class="p">]:</span> - <span class="n">remark</span> <span class="o">=</span> <span class="n">Remark</span><span class="p">(</span><span class="n">contributor</span><span class="o">=</span><span class="n">request</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">contributor</span><span class="p">,</span> - <span class="n">recommendation</span><span class="o">=</span><span class="n">recommendation</span><span class="p">,</span> - <span class="n">date</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">(),</span> - <span class="n">remark</span><span class="o">=</span><span class="n">form</span><span class="o">.</span><span class="n">cleaned_data</span><span class="p">[</span><span class="s1">'remark'</span><span class="p">])</span> - <span class="n">remark</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:pool'</span><span class="p">))</span> - - <span class="k">return</span> <span class="n">redirect</span><span class="p">(</span><span class="n">reverse</span><span class="p">(</span><span class="s1">'submissions:pool'</span><span class="p">))</span> - - -<span class="nd">@permission_required</span><span class="p">(</span><span class="s1">'scipost.can_fix_College_decision'</span><span class="p">,</span> <span class="n">raise_exception</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="nd">@transaction</span><span class="o">.</span><span class="n">atomic</span> -<div class="viewcode-block" id="fix_College_decision"><a class="viewcode-back" href="../../modules/views.html#submissions.views.fix_College_decision">[docs]</a><span class="k">def</span> <span class="nf">fix_College_decision</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">rec_id</span><span class="p">):</span> - <span class="sd">"""</span> -<span class="sd"> Terminates the voting on a Recommendation.</span> -<span class="sd"> Called by an Editorial Administrator.</span> -<span class="sd"> """</span> - <span class="n">recommendation</span> <span class="o">=</span> <span class="n">get_object_or_404</span><span class="p">(</span><span class="n">EICRecommendation</span><span class="p">,</span> <span class="n">pk</span><span class="o">=</span><span class="n">rec_id</span><span class="p">)</span> - <span class="k">if</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span><span class="o">==</span><span class="mi">1</span><span class="p">:</span> - <span class="c1"># Publish as Tier I (top 10%)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span><span class="o">=</span><span class="s1">'accepted'</span> - <span class="k">elif</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span><span class="o">==</span><span class="mi">2</span><span class="p">:</span> - <span class="c1"># Publish as Tier II (top 50%)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span><span class="o">=</span><span class="s1">'accepted'</span> - <span class="k">elif</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span><span class="o">==</span><span class="mi">3</span><span class="p">:</span> - <span class="c1"># Publish as Tier III (meets criteria)</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span><span class="o">=</span><span class="s1">'accepted'</span> - <span class="k">elif</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">recommendation</span><span class="o">==-</span><span class="mi">3</span><span class="p">:</span> - <span class="c1"># Reject</span> - <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">status</span><span class="o">=</span><span class="s1">'rejected'</span> - - <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">load</span><span class="p">({</span><span class="s1">'submission'</span><span class="p">:</span> <span class="n">recommendation</span><span class="o">.</span><span class="n">submission</span><span class="p">,</span> - <span class="s1">'recommendation'</span><span class="p">:</span> <span class="n">recommendation</span><span class="p">})</span> - <span class="n">SubmissionUtils</span><span class="o">.</span><span class="n">send_author_College_decision_email</span><span class="p">()</span> - <span class="n">ack_message</span> <span class="o">=</span> <span class="s1">'The Editorial College</span><span class="se">\'</span><span class="s1">s decision has been fixed.'</span> - <span class="k">return</span> <span class="n">render</span> <span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="s1">'scipost/acknowledgement.html'</span><span class="p">,</span> - <span class="n">context</span><span class="o">=</span><span class="p">{</span><span class="s1">'ack_message'</span><span class="p">:</span> <span class="n">ack_message</span><span class="p">})</span></div> -</pre></div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_modules/theses/models.html b/docs/_build/html/_modules/theses/models.html deleted file mode 100644 index c63914aa817c7497f3248c147d92abccde79a193..0000000000000000000000000000000000000000 --- a/docs/_build/html/_modules/theses/models.html +++ /dev/null @@ -1,315 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>theses.models — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../../genindex.html"/> - <link rel="search" title="Search" href="../../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../../index.html"/> - <link rel="up" title="Module code" href="../index.html"/> - - - <script src="../../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="../../modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="../../modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../../index.html">Docs</a> »</li> - - <li><a href="../index.html">Module code</a> »</li> - - <li>theses.models</li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <h1>Source code for theses.models</h1><div class="highlight"><pre> -<span></span><span class="kn">from</span> <span class="nn">django.utils</span> <span class="k">import</span> <span class="n">timezone</span> -<span class="kn">from</span> <span class="nn">django.db</span> <span class="k">import</span> <span class="n">models</span> -<span class="kn">from</span> <span class="nn">django.contrib.auth.models</span> <span class="k">import</span> <span class="n">User</span> -<span class="kn">from</span> <span class="nn">django.template</span> <span class="k">import</span> <span class="n">Template</span><span class="p">,</span> <span class="n">Context</span> - -<span class="kn">from</span> <span class="nn">.models</span> <span class="k">import</span> <span class="o">*</span> - -<span class="kn">from</span> <span class="nn">journals.models</span> <span class="k">import</span> <span class="o">*</span> -<span class="kn">from</span> <span class="nn">scipost.models</span> <span class="k">import</span> <span class="o">*</span> - -<span class="n">THESIS_TYPES</span> <span class="o">=</span> <span class="p">(</span> - <span class="p">(</span><span class="s1">'MA'</span><span class="p">,</span> <span class="s1">'Master</span><span class="se">\'</span><span class="s1">s'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'PhD'</span><span class="p">,</span> <span class="s1">'Ph.D.'</span><span class="p">),</span> - <span class="p">(</span><span class="s1">'Hab'</span><span class="p">,</span> <span class="s1">'Habilitation'</span><span class="p">),</span> - <span class="p">)</span> -<span class="n">thesis_type_dict</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">THESIS_TYPES</span><span class="p">)</span> - - -<div class="viewcode-block" id="ThesisLink"><a class="viewcode-back" href="../../modules/models.html#theses.models.ThesisLink">[docs]</a><span class="k">class</span> <span class="nc">ThesisLink</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span> - <span class="sd">""" An URL pointing to a thesis """</span> - <span class="n">requested_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'thesislink_requested_by'</span><span class="p">,</span> - <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="n">vetted</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> - <span class="n">vetted_by</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">null</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span> - <span class="nb">type</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">THESIS_TYPES</span><span class="p">)</span> - <span class="n">discipline</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_DISCIPLINES</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'physics'</span><span class="p">)</span> - <span class="n">domain</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_JOURNALS_DOMAINS</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -<span class="c1"># specialization = models.CharField(max_length=1, choices=SCIPOST_JOURNALS_SPECIALIZATIONS,</span> -<span class="c1"># blank=True)</span> - <span class="n">subject_area</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">choices</span><span class="o">=</span><span class="n">SCIPOST_SUBJECT_AREAS</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">'Phys:QP'</span><span class="p">)</span> - <span class="n">open_for_commenting</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">BooleanField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> - <span class="n">title</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'title'</span><span class="p">)</span> - <span class="n">pub_link</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">URLField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'URL (external repository)'</span><span class="p">)</span> - <span class="n">author</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span> - <span class="n">author_as_cont</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'author_cont'</span><span class="p">)</span> - <span class="n">author_claims</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_thesis_claims'</span><span class="p">)</span> - <span class="n">author_false_claims</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'authors_thesis_false_claims'</span><span class="p">)</span> - <span class="n">supervisor</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span> - <span class="n">supervisor_as_cont</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ManyToManyField</span> <span class="p">(</span><span class="n">Contributor</span><span class="p">,</span> <span class="n">blank</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> - <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'supervisor(s)'</span><span class="p">,</span> - <span class="n">related_name</span><span class="o">=</span><span class="s1">'supervisor_cont'</span><span class="p">)</span> - <span class="n">institution</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> <span class="n">verbose_name</span><span class="o">=</span><span class="s1">'degree granting institution'</span><span class="p">)</span> - <span class="n">defense_date</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'date of thesis defense'</span><span class="p">)</span> - <span class="n">abstract</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">(</span><span class="n">verbose_name</span><span class="o">=</span><span class="s1">'abstract, outline or summary'</span><span class="p">)</span> - <span class="n">latest_activity</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">timezone</span><span class="o">.</span><span class="n">now</span><span class="p">)</span> - - <span class="k">def</span> <span class="nf">__str__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span> - - <span class="k">def</span> <span class="nf">header_as_table</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> <span class="s1">'author'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="p">,</span> - <span class="s1">'pub_link'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_link</span><span class="p">,</span> <span class="s1">'institution'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">institution</span><span class="p">,</span> - <span class="s1">'supervisor'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">supervisor</span><span class="p">,</span> <span class="s1">'defense_date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">defense_date</span><span class="p">})</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<table>'</span> - <span class="s1">'<tr><td>Title: </td><td>&nbsp;</td><td>{{ title }}</td></tr>'</span> - <span class="s1">'<tr><td>Author: </td><td>&nbsp;</td><td>{{ author }}</td></tr>'</span> - <span class="s1">'<tr><td>As Contributor: </td><td>&nbsp;</td>'</span><span class="p">)</span> - <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_as_cont</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="k">for</span> <span class="n">auth</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">author_as_cont</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'<td><a href="/contributor/'</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">auth</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'">'</span> - <span class="o">+</span> <span class="n">auth</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">first_name</span> <span class="o">+</span> <span class="s1">' '</span> <span class="o">+</span> <span class="n">auth</span><span class="o">.</span><span class="n">user</span><span class="o">.</span><span class="n">last_name</span> <span class="o">+</span> <span class="s1">'</a></td>'</span><span class="p">)</span> - <span class="k">else</span><span class="p">:</span> - <span class="n">header</span> <span class="o">+=</span> <span class="s1">'<td>(not claimed)</td>'</span> - <span class="n">header</span> <span class="o">+=</span> <span class="p">(</span><span class="s1">'</tr>'</span> - <span class="s1">'<tr><td>Type: </td><td></td><td>'</span> <span class="o">+</span> <span class="n">thesis_type_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</td></tr>'</span> - <span class="s1">'<tr><td>Discipline: </td><td></td><td>'</span> <span class="o">+</span> <span class="n">disciplines_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">discipline</span><span class="p">]</span> - <span class="o">+</span> <span class="s1">'</td></tr>'</span> - <span class="s1">'<tr><td>Domain: </td><td></td><td>'</span> <span class="o">+</span> <span class="n">journals_domains_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">domain</span><span class="p">]</span> - <span class="o">+</span> <span class="s1">'</td></tr>'</span> -<span class="c1"># '<tr><td>Specialization: </td><td></td><td>'</span> -<span class="c1"># + journals_spec_dict[self.specialization] + '</td></tr>'</span> - <span class="s1">'<tr><td>Subject area: </td><td></td><td>'</span> - <span class="o">+</span> <span class="n">subject_areas_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">subject_area</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'</td></tr>'</span> - <span class="s1">'<tr><td>URL: </td><td>&nbsp;</td><td><a href="{{ pub_link }}" '</span> - <span class="s1">'target="_blank">{{ pub_link }}</a></td></tr>'</span> - <span class="s1">'<tr><td>Degree granting institution: </td><td>&nbsp;</td>'</span> - <span class="s1">'<td>{{ institution }}</td></tr>'</span> - <span class="s1">'<tr><td>Supervisor(s): </td><td></td><td>{{ supervisor }}</td></tr>'</span> - <span class="s1">'<tr><td>Defense date: </td><td>&nbsp;</td><td>{{ defense_date }}</td></tr>'</span> - <span class="s1">'</table>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> <span class="s1">'author'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="p">,</span> - <span class="s1">'pub_link'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">pub_link</span><span class="p">,</span> <span class="s1">'institution'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">institution</span><span class="p">,</span> - <span class="s1">'supervisor'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">supervisor</span><span class="p">,</span> <span class="s1">'defense_date'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">defense_date</span><span class="p">,</span> - <span class="s1">'latest_activity'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">latest_activity</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H:%M'</span><span class="p">)})</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li><div class="flex-container">'</span> - <span class="s1">'<div class="flex-whitebox0"><p><a href="/thesis/{{ id }}" '</span> - <span class="s1">'class="pubtitleli">{{ title }}</a></p>'</span> - <span class="s1">'<p>'</span> <span class="o">+</span> <span class="n">thesis_type_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' thesis by {{ author }} '</span> - <span class="s1">'(supervisor(s): {{ supervisor }}) in '</span> - <span class="o">+</span> <span class="n">disciplines_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">discipline</span><span class="p">]</span> <span class="o">+</span> <span class="s1">', '</span> - <span class="o">+</span> <span class="n">journals_domains_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">domain</span><span class="p">]</span> <span class="o">+</span> <span class="s1">' '</span> -<span class="c1"># + journals_spec_dict[self.specialization] + ' '</span> - <span class="o">+</span> <span class="n">subject_areas_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">subject_area</span><span class="p">]</span> - <span class="o">+</span> <span class="s1">'</p>'</span> - <span class="s1">'<p>Defense date: {{ defense_date }} - '</span> - <span class="s1">'Latest activity: {{ latest_activity }}</p></div>'</span> - <span class="s1">'</div></li>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> - - - <span class="k">def</span> <span class="nf">simple_header_as_li</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> - <span class="c1"># for Lists</span> - <span class="n">context</span> <span class="o">=</span> <span class="n">Context</span><span class="p">({</span><span class="s1">'id'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="s1">'title'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">,</span> <span class="s1">'author'</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">author</span><span class="p">})</span> - <span class="n">header</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'<li><div class="flex-container">'</span> - <span class="s1">'<div class="flex-whitebox0"><p><a href="/thesis/{{ id }}" '</span> - <span class="s1">'class="pubtitleli">{{ title }}</a></p>'</span> - <span class="s1">'<p>'</span> <span class="o">+</span> <span class="n">thesis_type_dict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">]</span> - <span class="o">+</span> <span class="s1">' thesis by {{ author }} </div></div></li>'</span><span class="p">)</span> - <span class="n">template</span> <span class="o">=</span> <span class="n">Template</span><span class="p">(</span><span class="n">header</span><span class="p">)</span> - <span class="k">return</span> <span class="n">template</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></div> -</pre></div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/_sources/modules/models.txt b/docs/_build/html/_sources/modules/models.txt deleted file mode 100644 index f9e2b5f1f473a8ac5bf42b77d6b0f903446f7121..0000000000000000000000000000000000000000 --- a/docs/_build/html/_sources/modules/models.txt +++ /dev/null @@ -1,20 +0,0 @@ -Models -====== - -.. automodule:: scipost.models - :members: - -.. automodule:: journals.models - :members: - -.. automodule:: comments.models - :members: - -.. automodule:: commentaries.models - :members: - -.. automodule:: submissions.models - :members: - -.. automodule:: theses.models - :members: diff --git a/docs/_build/html/_sources/modules/views.txt b/docs/_build/html/_sources/modules/views.txt deleted file mode 100644 index 72b290744546b9c5fb2dfd42c437084f7edb4127..0000000000000000000000000000000000000000 --- a/docs/_build/html/_sources/modules/views.txt +++ /dev/null @@ -1,20 +0,0 @@ -Views -====== - -.. automodule:: scipost.views - :members: - -.. automodule:: journals.views - :members: - -.. automodule:: comments.views - :members: - -.. automodule:: commentaries.views - :members: - -.. automodule:: submissions.views - :members: - -.. automodule:: theses.views - :members: diff --git a/docs/_build/html/_static/alabaster.css b/docs/_build/html/_static/alabaster.css deleted file mode 100644 index a88ce299cbaec439c46585aecaf5dd53312347d6..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/alabaster.css +++ /dev/null @@ -1,693 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -@import url("basic.css"); - -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif; - font-size: 17px; - background-color: #fff; - color: #000; - margin: 0; - padding: 0; -} - - -div.document { - width: 940px; - margin: 30px auto 0 auto; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 220px; -} - -div.sphinxsidebar { - width: 220px; - font-size: 14px; - line-height: 1.5; -} - -hr { - border: 1px solid #B1B4B6; -} - -div.body { - background-color: #fff; - color: #3E4349; - padding: 0 30px 0 30px; -} - -div.body > .section { - text-align: left; -} - -div.footer { - width: 940px; - margin: 20px auto 30px auto; - font-size: 14px; - color: #888; - text-align: right; -} - -div.footer a { - color: #888; -} - -p.caption { - font-family: inherit; - font-size: inherit; -} - - -div.relations { - display: none; -} - - -div.sphinxsidebar a { - color: #444; - text-decoration: none; - border-bottom: 1px dotted #999; -} - -div.sphinxsidebar a:hover { - border-bottom: 1px solid #999; -} - -div.sphinxsidebarwrapper { - padding: 18px 10px; -} - -div.sphinxsidebarwrapper p.logo { - padding: 0; - margin: -10px 0 0 0px; - text-align: center; -} - -div.sphinxsidebarwrapper h1.logo { - margin-top: -10px; - text-align: center; - margin-bottom: 5px; - text-align: left; -} - -div.sphinxsidebarwrapper h1.logo-name { - margin-top: 0px; -} - -div.sphinxsidebarwrapper p.blurb { - margin-top: 0; - font-style: normal; -} - -div.sphinxsidebar h3, -div.sphinxsidebar h4 { - font-family: 'Garamond', 'Georgia', serif; - color: #444; - font-size: 24px; - font-weight: normal; - margin: 0 0 5px 0; - padding: 0; -} - -div.sphinxsidebar h4 { - font-size: 20px; -} - -div.sphinxsidebar h3 a { - color: #444; -} - -div.sphinxsidebar p.logo a, -div.sphinxsidebar h3 a, -div.sphinxsidebar p.logo a:hover, -div.sphinxsidebar h3 a:hover { - border: none; -} - -div.sphinxsidebar p { - color: #555; - margin: 10px 0; -} - -div.sphinxsidebar ul { - margin: 10px 0; - padding: 0; - color: #000; -} - -div.sphinxsidebar ul li.toctree-l1 > a { - font-size: 120%; -} - -div.sphinxsidebar ul li.toctree-l2 > a { - font-size: 110%; -} - -div.sphinxsidebar input { - border: 1px solid #CCC; - font-family: 'goudy old style', 'minion pro', 'bell mt', Georgia, 'Hiragino Mincho Pro', serif; - font-size: 1em; -} - -div.sphinxsidebar hr { - border: none; - height: 1px; - color: #AAA; - background: #AAA; - - text-align: left; - margin-left: 0; - width: 50%; -} - -/* -- body styles ----------------------------------------------------------- */ - -a { - color: #004B6B; - text-decoration: underline; -} - -a:hover { - color: #6D4100; - text-decoration: underline; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: 'Garamond', 'Georgia', serif; - font-weight: normal; - margin: 30px 0px 10px 0px; - padding: 0; -} - -div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } -div.body h2 { font-size: 180%; } -div.body h3 { font-size: 150%; } -div.body h4 { font-size: 130%; } -div.body h5 { font-size: 100%; } -div.body h6 { font-size: 100%; } - -a.headerlink { - color: #DDD; - padding: 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - color: #444; - background: #EAEAEA; -} - -div.body p, div.body dd, div.body li { - line-height: 1.4em; -} - -div.admonition { - margin: 20px 0px; - padding: 10px 30px; - background-color: #EEE; - border: 1px solid #CCC; -} - -div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { - background-color: ; - border-bottom: 1px solid #fafafa; -} - -dd div.admonition { - margin-left: -60px; - padding-left: 60px; -} - -div.admonition p.admonition-title { - font-family: 'Garamond', 'Georgia', serif; - font-weight: normal; - font-size: 24px; - margin: 0 0 10px 0; - padding: 0; - line-height: 1; -} - -div.admonition p.last { - margin-bottom: 0; -} - -div.highlight { - background-color: #fff; -} - -dt:target, .highlight { - background: #FAF3E8; -} - -div.warning { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.danger { - background-color: #FCC; - border: 1px solid #FAA; - -moz-box-shadow: 2px 2px 4px #D52C2C; - -webkit-box-shadow: 2px 2px 4px #D52C2C; - box-shadow: 2px 2px 4px #D52C2C; -} - -div.error { - background-color: #FCC; - border: 1px solid #FAA; - -moz-box-shadow: 2px 2px 4px #D52C2C; - -webkit-box-shadow: 2px 2px 4px #D52C2C; - box-shadow: 2px 2px 4px #D52C2C; -} - -div.caution { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.attention { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.important { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.note { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.tip { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.hint { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.seealso { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.topic { - background-color: #EEE; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre, tt, code { - font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; - font-size: 0.9em; -} - -.hll { - background-color: #FFC; - margin: 0 -12px; - padding: 0 12px; - display: block; -} - -img.screenshot { -} - -tt.descname, tt.descclassname, code.descname, code.descclassname { - font-size: 0.95em; -} - -tt.descname, code.descname { - padding-right: 0.08em; -} - -img.screenshot { - -moz-box-shadow: 2px 2px 4px #EEE; - -webkit-box-shadow: 2px 2px 4px #EEE; - box-shadow: 2px 2px 4px #EEE; -} - -table.docutils { - border: 1px solid #888; - -moz-box-shadow: 2px 2px 4px #EEE; - -webkit-box-shadow: 2px 2px 4px #EEE; - box-shadow: 2px 2px 4px #EEE; -} - -table.docutils td, table.docutils th { - border: 1px solid #888; - padding: 0.25em 0.7em; -} - -table.field-list, table.footnote { - border: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -table.footnote { - margin: 15px 0; - width: 100%; - border: 1px solid #EEE; - background: #FDFDFD; - font-size: 0.9em; -} - -table.footnote + table.footnote { - margin-top: -15px; - border-top: none; -} - -table.field-list th { - padding: 0 0.8em 0 0; -} - -table.field-list td { - padding: 0; -} - -table.field-list p { - margin-bottom: 0.8em; -} - -table.footnote td.label { - width: .1px; - padding: 0.3em 0 0.3em 0.5em; -} - -table.footnote td { - padding: 0.3em 0.5em; -} - -dl { - margin: 0; - padding: 0; -} - -dl dd { - margin-left: 30px; -} - -blockquote { - margin: 0 0 0 30px; - padding: 0; -} - -ul, ol { - /* Matches the 30px from the narrow-screen "li > ul" selector below */ - margin: 10px 0 10px 30px; - padding: 0; -} - -pre { - background: #EEE; - padding: 7px 30px; - margin: 15px 0px; - line-height: 1.3em; -} - -div.viewcode-block:target { - background: #ffd; -} - -dl pre, blockquote pre, li pre { - margin-left: 0; - padding-left: 30px; -} - -dl dl pre { - margin-left: -90px; - padding-left: 90px; -} - -tt, code { - background-color: #ecf0f3; - color: #222; - /* padding: 1px 2px; */ -} - -tt.xref, code.xref, a tt { - background-color: #FBFBFB; - border-bottom: 1px solid #fff; -} - -a.reference { - text-decoration: none; - border-bottom: 1px dotted #004B6B; -} - -/* Don't put an underline on images */ -a.image-reference, a.image-reference:hover { - border-bottom: none; -} - -a.reference:hover { - border-bottom: 1px solid #6D4100; -} - -a.footnote-reference { - text-decoration: none; - font-size: 0.7em; - vertical-align: top; - border-bottom: 1px dotted #004B6B; -} - -a.footnote-reference:hover { - border-bottom: 1px solid #6D4100; -} - -a:hover tt, a:hover code { - background: #EEE; -} - - -@media screen and (max-width: 870px) { - - div.sphinxsidebar { - display: none; - } - - div.document { - width: 100%; - - } - - div.documentwrapper { - margin-left: 0; - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - } - - div.bodywrapper { - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - margin-left: 0; - } - - ul { - margin-left: 0; - } - - li > ul { - /* Matches the 30px from the "ul, ol" selector above */ - margin-left: 30px; - } - - .document { - width: auto; - } - - .footer { - width: auto; - } - - .bodywrapper { - margin: 0; - } - - .footer { - width: auto; - } - - .github { - display: none; - } - - - -} - - - -@media screen and (max-width: 875px) { - - body { - margin: 0; - padding: 20px 30px; - } - - div.documentwrapper { - float: none; - background: #fff; - } - - div.sphinxsidebar { - display: block; - float: none; - width: 102.5%; - margin: 50px -30px -20px -30px; - padding: 10px 20px; - background: #333; - color: #FFF; - } - - div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, - div.sphinxsidebar h3 a { - color: #fff; - } - - div.sphinxsidebar a { - color: #AAA; - } - - div.sphinxsidebar p.logo { - display: none; - } - - div.document { - width: 100%; - margin: 0; - } - - div.footer { - display: none; - } - - div.bodywrapper { - margin: 0; - } - - div.body { - min-height: 0; - padding: 0; - } - - .rtd_doc_footer { - display: none; - } - - .document { - width: auto; - } - - .footer { - width: auto; - } - - .footer { - width: auto; - } - - .github { - display: none; - } -} - - -/* misc. */ - -.revsys-inline { - display: none!important; -} - -/* Make nested-list/multi-paragraph items look better in Releases changelog - * pages. Without this, docutils' magical list fuckery causes inconsistent - * formatting between different release sub-lists. - */ -div#changelog > div.section > ul > li > p:only-child { - margin-bottom: 0; -} - -/* Hide fugly table cell borders in ..bibliography:: directive output */ -table.docutils.citation, table.docutils.citation td, table.docutils.citation th { - border: none; - /* Below needed in some edge cases; if not applied, bottom shadows appear */ - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} \ No newline at end of file diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css deleted file mode 100644 index 0b79414a16adfcf062bf14fc3c040bc335eb79ad..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/basic.css +++ /dev/null @@ -1,611 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox input[type="text"] { - width: 170px; -} - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable dl, table.indextable dd { - margin-top: 0; - margin-bottom: 0; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.field-list ul { - padding-left: 1em; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.field-list td, table.field-list th { - border: 0 !important; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text { -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -dl { - margin-bottom: 15px; -} - -dd p { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, .highlighted { - background-color: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -div.code-block-caption { - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - padding: 1em 1em 0; -} - -div.literal-block-wrapper div.highlight { - margin: 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/docs/_build/html/_static/css/badge_only.css b/docs/_build/html/_static/css/badge_only.css deleted file mode 100644 index 7e17fb148c63fa9780c3dd65cef5b7593927ef62..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/css/badge_only.css +++ /dev/null @@ -1,2 +0,0 @@ -.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../font/fontawesome_webfont.eot");src:url("../font/fontawesome_webfont.eot?#iefix") format("embedded-opentype"),url("../font/fontawesome_webfont.woff") format("woff"),url("../font/fontawesome_webfont.ttf") format("truetype"),url("../font/fontawesome_webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:0.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:"ï€"}.icon-book:before{content:"ï€"}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}} -/*# sourceMappingURL=badge_only.css.map */ diff --git a/docs/_build/html/_static/css/theme.css b/docs/_build/html/_static/css/theme.css deleted file mode 100644 index 7be93399a4f530da7eb43e2c214ec42cea89a6c3..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/css/theme.css +++ /dev/null @@ -1,5 +0,0 @@ -*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:0.2em 0;background:#ccc;color:#000;padding:0.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.2.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff?v=4.2.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.2.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:"ï€"}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:"ï€"}.fa-search-plus:before{content:""}.fa-search-minus:before{content:"ï€"}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:"ï€"}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:"ï€"}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:"ï€"}.fa-map-marker:before{content:"ï"}.fa-adjust:before{content:"ï‚"}.fa-tint:before{content:"ïƒ"}.fa-edit:before,.fa-pencil-square-o:before{content:"ï„"}.fa-share-square-o:before{content:"ï…"}.fa-check-square-o:before{content:"ï†"}.fa-arrows:before{content:"ï‡"}.fa-step-backward:before{content:"ïˆ"}.fa-fast-backward:before{content:"ï‰"}.fa-backward:before{content:"ïŠ"}.fa-play:before{content:"ï‹"}.fa-pause:before{content:"ïŒ"}.fa-stop:before{content:"ï"}.fa-forward:before{content:"ïŽ"}.fa-fast-forward:before{content:"ï"}.fa-step-forward:before{content:"ï‘"}.fa-eject:before{content:"ï’"}.fa-chevron-left:before{content:"ï“"}.fa-chevron-right:before{content:"ï”"}.fa-plus-circle:before{content:"ï•"}.fa-minus-circle:before{content:"ï–"}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:"ï—"}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:"ï˜"}.fa-question-circle:before{content:"ï™"}.fa-info-circle:before{content:"ïš"}.fa-crosshairs:before{content:"ï›"}.fa-times-circle-o:before{content:"ïœ"}.fa-check-circle-o:before{content:"ï"}.fa-ban:before{content:"ïž"}.fa-arrow-left:before{content:"ï "}.fa-arrow-right:before{content:"ï¡"}.fa-arrow-up:before{content:"ï¢"}.fa-arrow-down:before{content:"ï£"}.fa-mail-forward:before,.fa-share:before{content:"ï¤"}.fa-expand:before{content:"ï¥"}.fa-compress:before{content:"ï¦"}.fa-plus:before{content:"ï§"}.fa-minus:before{content:"ï¨"}.fa-asterisk:before{content:"ï©"}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:"ïª"}.fa-gift:before{content:"ï«"}.fa-leaf:before{content:"ï¬"}.fa-fire:before,.icon-fire:before{content:"ï"}.fa-eye:before{content:"ï®"}.fa-eye-slash:before{content:"ï°"}.fa-warning:before,.fa-exclamation-triangle:before{content:"ï±"}.fa-plane:before{content:"ï²"}.fa-calendar:before{content:"ï³"}.fa-random:before{content:"ï´"}.fa-comment:before{content:"ïµ"}.fa-magnet:before{content:"ï¶"}.fa-chevron-up:before{content:"ï·"}.fa-chevron-down:before{content:"ï¸"}.fa-retweet:before{content:"ï¹"}.fa-shopping-cart:before{content:"ïº"}.fa-folder:before{content:"ï»"}.fa-folder-open:before{content:"ï¼"}.fa-arrows-v:before{content:"ï½"}.fa-arrows-h:before{content:"ï¾"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"ï‚€"}.fa-twitter-square:before{content:"ï‚"}.fa-facebook-square:before{content:"ï‚‚"}.fa-camera-retro:before{content:""}.fa-key:before{content:"ï‚„"}.fa-gears:before,.fa-cogs:before{content:"ï‚…"}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:"ï‚Š"}.fa-sign-out:before{content:"ï‚‹"}.fa-linkedin-square:before{content:"ï‚Œ"}.fa-thumb-tack:before{content:"ï‚"}.fa-external-link:before{content:"ï‚Ž"}.fa-sign-in:before{content:"ï‚"}.fa-trophy:before{content:"ï‚‘"}.fa-github-square:before{content:"ï‚’"}.fa-upload:before{content:"ï‚“"}.fa-lemon-o:before{content:"ï‚”"}.fa-phone:before{content:"ï‚•"}.fa-square-o:before{content:"ï‚–"}.fa-bookmark-o:before{content:"ï‚—"}.fa-phone-square:before{content:""}.fa-twitter:before{content:"ï‚™"}.fa-facebook:before{content:"ï‚š"}.fa-github:before,.icon-github:before{content:"ï‚›"}.fa-unlock:before{content:"ï‚œ"}.fa-credit-card:before{content:"ï‚"}.fa-rss:before{content:"ï‚ž"}.fa-hdd-o:before{content:"ï‚ "}.fa-bullhorn:before{content:"ï‚¡"}.fa-bell:before{content:""}.fa-certificate:before{content:"ï‚£"}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:"ï‚¥"}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:"ï‚©"}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:"ï‚«"}.fa-globe:before{content:""}.fa-wrench:before{content:"ï‚"}.fa-tasks:before{content:"ï‚®"}.fa-filter:before{content:"ï‚°"}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:"ïƒ"}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:"ïƒ"}.fa-table:before{content:""}.fa-magic:before{content:"ïƒ"}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:"ïƒ"}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:"ïƒ "}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:"ïƒ"}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:"ï‚¢"}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:"ï„€"}.fa-angle-double-right:before{content:"ï„"}.fa-angle-double-up:before{content:"ï„‚"}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:"ï„„"}.fa-angle-right:before{content:"ï„…"}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:"ï„Š"}.fa-mobile-phone:before,.fa-mobile:before{content:"ï„‹"}.fa-circle-o:before{content:"ï„Œ"}.fa-quote-left:before{content:"ï„"}.fa-quote-right:before{content:"ï„Ž"}.fa-spinner:before{content:"ï„"}.fa-circle:before{content:"ï„‘"}.fa-mail-reply:before,.fa-reply:before{content:"ï„’"}.fa-github-alt:before{content:"ï„“"}.fa-folder-o:before{content:"ï„”"}.fa-folder-open-o:before{content:"ï„•"}.fa-smile-o:before{content:""}.fa-frown-o:before{content:"ï„™"}.fa-meh-o:before{content:"ï„š"}.fa-gamepad:before{content:"ï„›"}.fa-keyboard-o:before{content:"ï„œ"}.fa-flag-o:before{content:"ï„"}.fa-flag-checkered:before{content:"ï„ž"}.fa-terminal:before{content:"ï„ "}.fa-code:before{content:"ï„¡"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"ï„¢"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"ï„£"}.fa-location-arrow:before{content:""}.fa-crop:before{content:"ï„¥"}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:"ï„©"}.fa-exclamation:before{content:""}.fa-superscript:before{content:"ï„«"}.fa-subscript:before{content:""}.fa-eraser:before{content:"ï„"}.fa-puzzle-piece:before{content:"ï„®"}.fa-microphone:before{content:"ï„°"}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:"ï„´"}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:"ï„·"}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:"ï„»"}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:"ï…€"}.fa-ellipsis-h:before{content:"ï…"}.fa-ellipsis-v:before{content:"ï…‚"}.fa-rss-square:before{content:"ï…ƒ"}.fa-play-circle:before{content:"ï…„"}.fa-ticket:before{content:"ï……"}.fa-minus-square:before{content:"ï…†"}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:"ï…‡"}.fa-level-up:before{content:"ï…ˆ"}.fa-level-down:before{content:"ï…‰"}.fa-check-square:before{content:"ï…Š"}.fa-pencil-square:before{content:"ï…‹"}.fa-external-link-square:before{content:"ï…Œ"}.fa-share-square:before{content:"ï…"}.fa-compass:before{content:"ï…Ž"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"ï…"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"ï…‘"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"ï…’"}.fa-euro:before,.fa-eur:before{content:"ï…“"}.fa-gbp:before{content:"ï…”"}.fa-dollar:before,.fa-usd:before{content:"ï…•"}.fa-rupee:before,.fa-inr:before{content:"ï…–"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"ï…—"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"ï…˜"}.fa-won:before,.fa-krw:before{content:"ï…™"}.fa-bitcoin:before,.fa-btc:before{content:"ï…š"}.fa-file:before{content:"ï…›"}.fa-file-text:before{content:"ï…œ"}.fa-sort-alpha-asc:before{content:"ï…"}.fa-sort-alpha-desc:before{content:"ï…ž"}.fa-sort-amount-asc:before{content:"ï… "}.fa-sort-amount-desc:before{content:"ï…¡"}.fa-sort-numeric-asc:before{content:"ï…¢"}.fa-sort-numeric-desc:before{content:"ï…£"}.fa-thumbs-up:before{content:"ï…¤"}.fa-thumbs-down:before{content:"ï…¥"}.fa-youtube-square:before{content:"ï…¦"}.fa-youtube:before{content:"ï…§"}.fa-xing:before{content:"ï…¨"}.fa-xing-square:before{content:"ï…©"}.fa-youtube-play:before{content:"ï…ª"}.fa-dropbox:before{content:"ï…«"}.fa-stack-overflow:before{content:"ï…¬"}.fa-instagram:before{content:"ï…"}.fa-flickr:before{content:"ï…®"}.fa-adn:before{content:"ï…°"}.fa-bitbucket:before,.icon-bitbucket:before{content:"ï…±"}.fa-bitbucket-square:before{content:"ï…²"}.fa-tumblr:before{content:"ï…³"}.fa-tumblr-square:before{content:"ï…´"}.fa-long-arrow-down:before{content:"ï…µ"}.fa-long-arrow-up:before{content:"ï…¶"}.fa-long-arrow-left:before{content:"ï…·"}.fa-long-arrow-right:before{content:"ï…¸"}.fa-apple:before{content:"ï…¹"}.fa-windows:before{content:"ï…º"}.fa-android:before{content:"ï…»"}.fa-linux:before{content:"ï…¼"}.fa-dribbble:before{content:"ï…½"}.fa-skype:before{content:"ï…¾"}.fa-foursquare:before{content:""}.fa-trello:before{content:"ï†"}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:"ï†"}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:"ï†"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:"ï†"}.fa-yahoo:before{content:""}.fa-google:before{content:"ï† "}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:"ï†"}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:"ï‡"}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"ï‡"}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before{content:"ï‡"}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:"ï‡"}.fa-sliders:before{content:""}.fa-share-alt:before{content:"ï‡ "}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:"ï‡"}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:"ïˆ"}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:0.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:0.5;-webkit-transition:opacity 0.05s ease-in;-moz-transition:opacity 0.05s ease-in;transition:opacity 0.05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;transition:all 0.3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all 0.1s linear;-moz-transition:all 0.1s linear;transition:all 0.1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:0.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 0.3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.35765%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:0.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:0.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}input[type="datetime-local"]{padding:0.34375em 0.625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:0.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:0.5em 0.625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border 0.3s linear;-moz-transition:border 0.3s linear;transition:border 0.3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{width:36px;height:12px;margin:12px 0;position:relative;border-radius:4px;background:#ccc;cursor:pointer;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.wy-switch:before{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.wy-switch:after{content:"false";position:absolute;left:48px;display:block;font-size:12px;color:#ccc}.wy-switch.active{background:#1e8449}.wy-switch.active:before{left:24px;background:#27AE60}.wy-switch.active:after{content:"true"}.wy-switch.disabled,.wy-switch.active.disabled{cursor:not-allowed}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:0.5em 0.625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:0.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0.3em;display:block}.wy-form label{margin-bottom:0.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:0.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.codeblock-example{border:1px solid #e1e4e5;border-bottom:none;padding:24px;padding-top:48px;font-weight:500;background:#fff;position:relative}.codeblock-example:after{content:"Example";position:absolute;top:0px;left:0px;background:#9B59B6;color:#fff;padding:6px 12px}.codeblock-example.prettyprint-example-only{border:1px solid #e1e4e5;margin-bottom:24px}.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight']{border:1px solid #e1e4e5;padding:0px;overflow-x:auto;background:#fff;margin:1px 0 24px 0}.codeblock div[class^='highlight'],pre.literal-block div[class^='highlight'],.rst-content .literal-block div[class^='highlight'],div[class^='highlight'] div[class^='highlight']{border:none;background:none;margin:0}div[class^='highlight'] td.code{width:100%}.linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:12px;line-height:1.5;color:#d9d9d9}div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:12px;line-height:1.5;display:block;overflow:auto;color:#404040}@media print{.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight'],div[class^='highlight'] pre{white-space:pre-wrap}}.hll{background-color:#ffc;margin:0 -12px;padding:0 12px;display:block}.c{color:#998;font-style:italic}.err{color:#a61717;background-color:#e3d2d2}.k{font-weight:bold}.o{font-weight:bold}.cm{color:#998;font-style:italic}.cp{color:#999;font-weight:bold}.c1{color:#998;font-style:italic}.cs{color:#999;font-weight:bold;font-style:italic}.gd{color:#000;background-color:#fdd}.gd .x{color:#000;background-color:#faa}.ge{font-style:italic}.gr{color:#a00}.gh{color:#999}.gi{color:#000;background-color:#dfd}.gi .x{color:#000;background-color:#afa}.go{color:#888}.gp{color:#555}.gs{font-weight:bold}.gu{color:purple;font-weight:bold}.gt{color:#a00}.kc{font-weight:bold}.kd{font-weight:bold}.kn{font-weight:bold}.kp{font-weight:bold}.kr{font-weight:bold}.kt{color:#458;font-weight:bold}.m{color:#099}.s{color:#d14}.n{color:#333}.na{color:teal}.nb{color:#0086b3}.nc{color:#458;font-weight:bold}.no{color:teal}.ni{color:purple}.ne{color:#900;font-weight:bold}.nf{color:#900;font-weight:bold}.nn{color:#555}.nt{color:navy}.nv{color:teal}.ow{font-weight:bold}.w{color:#bbb}.mf{color:#099}.mh{color:#099}.mi{color:#099}.mo{color:#099}.sb{color:#d14}.sc{color:#d14}.sd{color:#d14}.s2{color:#d14}.se{color:#d14}.sh{color:#d14}.si{color:#d14}.sx{color:#d14}.sr{color:#009926}.s1{color:#d14}.ss{color:#990073}.bp{color:#999}.vc{color:teal}.vg{color:teal}.vi{color:teal}.il{color:#099}.gc{color:#999;background-color:#EAF2F5}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin-bottom:0;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#555;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:0.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:0.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:0.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:0.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:0.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:0.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:0.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:0.4045em 5.663em;border-top:none;border-bottom:none}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4{font-size:0.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical .local-toc li ul{display:block}.wy-menu-vertical li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:0.4045em 1.618em;display:block;position:relative;font-size:90%;color:#b3b3b3}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#b3b3b3}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:0.809em;margin-bottom:0.809em;z-index:200;background-color:#2980B9;text-align:center;padding:0.809em;display:block;color:#fcfcfc;margin-bottom:0.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto 0.809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:0.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:0.85em}.wy-side-nav-search>div.version{margin-top:-0.4045em;margin-bottom:0.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all 0.2s ease-in;-moz-transition:all 0.2s ease-in;transition:all 0.2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:left repeat-y #fcfcfc;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);background-size:300px 1px}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:0.4045em 0.809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:#999}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:1em;background:none;border:none;color:#999}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-side-scroll{width:auto}.wy-side-nav-search{width:auto}.wy-menu.wy-menu-vertical{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1400px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid 10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}.rst-content img{max-width:100%;height:auto !important}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .line-block{margin-left:24px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto;display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink{display:none;visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after{visibility:visible;content:"ïƒ";font-family:FontAwesome;display:inline-block}.rst-content h1:hover .headerlink,.rst-content h2:hover .headerlink,.rst-content .toctree-wrapper p.caption:hover .headerlink,.rst-content h3:hover .headerlink,.rst-content h4:hover .headerlink,.rst-content h5:hover .headerlink,.rst-content h6:hover .headerlink,.rst-content dl dt:hover .headerlink,.rst-content p.caption:hover .headerlink{display:inline-block}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:super;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:#999}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation tt,.rst-content table.docutils.citation code,.rst-content table.docutils.footnote tt,.rst-content table.docutils.footnote code{color:#555}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none;padding-top:5px}.rst-content table.field-list td>strong{display:inline-block;margin-top:3px}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left;padding-left:0}.rst-content tt,.rst-content tt,.rst-content code{color:#000;padding:2px 5px}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal{color:#E74C3C}.rst-content tt.xref,a .rst-content tt,.rst-content tt.xref,.rst-content code.xref,a .rst-content tt,a .rst-content code{font-weight:bold;color:#404040}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:inline-block;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:400;src:local("Inconsolata"),local("Inconsolata-Regular"),url(../fonts/Inconsolata-Regular.ttf) format("truetype")}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:700;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../fonts/Inconsolata-Bold.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:400;src:local("Lato Regular"),local("Lato-Regular"),url(../fonts/Lato-Regular.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:700;src:local("Lato Bold"),local("Lato-Bold"),url(../fonts/Lato-Bold.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:local("Roboto Slab Regular"),local("RobotoSlab-Regular"),url(../fonts/RobotoSlab-Regular.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:local("Roboto Slab Bold"),local("RobotoSlab-Bold"),url(../fonts/RobotoSlab-Bold.ttf) format("truetype")} -/*# sourceMappingURL=theme.css.map */ diff --git a/docs/_build/html/_static/custom.css b/docs/_build/html/_static/custom.css deleted file mode 100644 index 2a924f1d6a8bc930c5296bdb2d5c2d3e39b04a1c..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/custom.css +++ /dev/null @@ -1 +0,0 @@ -/* This file intentionally left blank. */ diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js deleted file mode 100644 index 816349563588e87ca99c7cf2d6e54268e52e761d..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/doctools.js +++ /dev/null @@ -1,287 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for all documentation. - * - * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s == 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node) { - if (node.nodeType == 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { - var span = document.createElement("span"); - span.className = className; - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this); - }); - } - } - return this.each(function() { - highlight(this); - }); -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated == 'undefined') - return string; - return (typeof translated == 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated == 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('<a class="headerlink">\u00B6</a>'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('<a class="headerlink">\u00B6</a>'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); - } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('<p class="highlight-link"><a href="javascript:Documentation.' + - 'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) == 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this == '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - }, - - initOnKeyListeners: function() { - $(document).keyup(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; - } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; - } - } - } - }); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); \ No newline at end of file diff --git a/docs/_build/html/_static/fonts/Inconsolata-Bold.ttf b/docs/_build/html/_static/fonts/Inconsolata-Bold.ttf deleted file mode 100644 index 58c9fef3a01c899867e280f49283fbb8e57d631d..0000000000000000000000000000000000000000 Binary files a/docs/_build/html/_static/fonts/Inconsolata-Bold.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Inconsolata-Regular.ttf b/docs/_build/html/_static/fonts/Inconsolata-Regular.ttf deleted file mode 100644 index a87ffba6bef48195c8cf4e3ccb42ea77034f7cbc..0000000000000000000000000000000000000000 Binary files a/docs/_build/html/_static/fonts/Inconsolata-Regular.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato-Bold.ttf b/docs/_build/html/_static/fonts/Lato-Bold.ttf deleted file mode 100644 index 74343694e2b2114272f38b1124813b972cb592e5..0000000000000000000000000000000000000000 Binary files a/docs/_build/html/_static/fonts/Lato-Bold.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/Lato-Regular.ttf b/docs/_build/html/_static/fonts/Lato-Regular.ttf deleted file mode 100644 index 04ea8efb1367727b081dea87e63818be0a4d02f0..0000000000000000000000000000000000000000 Binary files a/docs/_build/html/_static/fonts/Lato-Regular.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf b/docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf deleted file mode 100644 index df5d1df2730433013f41bf2698cbe249b075aa02..0000000000000000000000000000000000000000 Binary files a/docs/_build/html/_static/fonts/RobotoSlab-Bold.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf b/docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf deleted file mode 100644 index eb52a7907362cc3392eb74892883f5d9e260b638..0000000000000000000000000000000000000000 Binary files a/docs/_build/html/_static/fonts/RobotoSlab-Regular.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.eot b/docs/_build/html/_static/fonts/fontawesome-webfont.eot deleted file mode 100644 index 84677bc0c5f37f1fac9d87548c4554b5c91717cf..0000000000000000000000000000000000000000 Binary files a/docs/_build/html/_static/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.svg b/docs/_build/html/_static/fonts/fontawesome-webfont.svg deleted file mode 100644 index d907b25ae60ec7e3d32e4027aa6e6b7595de97af..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,520 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata></metadata> -<defs> -<font id="fontawesomeregular" horiz-adv-x="1536" > -<font-face units-per-em="1792" ascent="1536" descent="-256" /> -<missing-glyph horiz-adv-x="448" /> -<glyph unicode=" " horiz-adv-x="448" /> -<glyph unicode="	" horiz-adv-x="448" /> -<glyph unicode=" " horiz-adv-x="448" /> -<glyph unicode="¨" horiz-adv-x="1792" /> -<glyph unicode="©" horiz-adv-x="1792" /> -<glyph unicode="®" horiz-adv-x="1792" /> -<glyph unicode="´" horiz-adv-x="1792" /> -<glyph unicode="Æ" horiz-adv-x="1792" /> -<glyph unicode="Ø" horiz-adv-x="1792" /> -<glyph unicode=" " horiz-adv-x="768" /> -<glyph unicode=" " horiz-adv-x="1537" /> -<glyph unicode=" " horiz-adv-x="768" /> -<glyph unicode=" " horiz-adv-x="1537" /> -<glyph unicode=" " horiz-adv-x="512" /> -<glyph unicode=" " horiz-adv-x="384" /> -<glyph unicode=" " horiz-adv-x="256" /> -<glyph unicode=" " horiz-adv-x="256" /> -<glyph unicode=" " horiz-adv-x="192" /> -<glyph unicode=" " horiz-adv-x="307" /> -<glyph unicode=" " horiz-adv-x="85" /> -<glyph unicode=" " horiz-adv-x="307" /> -<glyph unicode=" " horiz-adv-x="384" /> -<glyph unicode="™" horiz-adv-x="1792" /> -<glyph unicode="∞" horiz-adv-x="1792" /> -<glyph unicode="≠" horiz-adv-x="1792" /> -<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" /> -<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> -<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " /> -<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" /> -<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " /> -<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" /> -<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" /> -<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" /> -<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" /> -<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" /> -<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" /> -<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" /> -<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" /> -<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> -<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" /> -<glyph unicode="" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" /> -<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" /> -<glyph unicode="" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" /> -<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> -<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" /> -<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" /> -<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" /> -<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> -<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" /> -<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" /> -<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" /> -<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" /> -<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" /> -<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" /> -<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" /> -<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" /> -<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" /> -<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" /> -<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " /> -<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" /> -<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" /> -<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " /> -<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" /> -<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" /> -<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1536 160q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5v-960z" /> -<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" /> -<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" /> -<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" /> -<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" /> -<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" /> -<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" /> -<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" /> -<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" /> -<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" /> -<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" /> -<glyph unicode="" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" /> -<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" /> -<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" /> -<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> -<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" /> -<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" /> -<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" /> -<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" /> -<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" /> -<glyph unicode="" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" /> -<glyph unicode="" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" /> -<glyph unicode="" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " /> -<glyph unicode="" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " /> -<glyph unicode="" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" /> -<glyph unicode="" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" /> -<glyph unicode="" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" /> -<glyph unicode="" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" /> -<glyph unicode="" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" /> -<glyph unicode="" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" /> -<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" /> -<glyph unicode="" d="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" /> -<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" /> -<glyph unicode="" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" /> -<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" /> -<glyph unicode="" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" /> -<glyph unicode="" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" /> -<glyph unicode="" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" /> -<glyph unicode="" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" /> -<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" /> -<glyph unicode="" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" /> -<glyph unicode="" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" /> -<glyph unicode="" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" /> -<glyph unicode="" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" /> -<glyph unicode="" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" /> -<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" /> -<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" /> -<glyph unicode="" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" /> -<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" /> -<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" /> -<glyph unicode="" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> -<glyph unicode="" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" /> -<glyph unicode="" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" /> -<glyph unicode="" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" /> -<glyph unicode="" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> -<glyph unicode="" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" /> -<glyph unicode="" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" /> -<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" /> -<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" /> -<glyph unicode="" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" /> -<glyph unicode="" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" /> -<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" /> -<glyph unicode="" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" /> -<glyph unicode="" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" /> -<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> -<glyph unicode="" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" /> -<glyph unicode="" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" /> -<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" /> -<glyph unicode="" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" /> -<glyph unicode="" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" /> -<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" /> -<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" /> -<glyph unicode="" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" /> -<glyph unicode="" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" /> -<glyph unicode="" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" /> -<glyph unicode="" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" /> -<glyph unicode="" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" /> -<glyph unicode="" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" /> -<glyph unicode="" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" /> -<glyph unicode="" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" /> -<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" /> -<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" /> -<glyph unicode="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" /> -<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" /> -<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" /> -<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" /> -<glyph unicode="" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" /> -<glyph unicode="" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" /> -<glyph unicode="" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" /> -<glyph unicode="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" /> -<glyph unicode="" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" /> -<glyph unicode="" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" /> -<glyph unicode="" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" /> -<glyph unicode="" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" /> -<glyph unicode="" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" /> -<glyph unicode="" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " /> -<glyph unicode="" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" /> -<glyph unicode="" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" /> -<glyph unicode="" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" /> -<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" /> -<glyph unicode="" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" /> -<glyph unicode="" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" /> -<glyph unicode="" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" /> -<glyph unicode="" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" /> -<glyph unicode="" horiz-adv-x="1984" d="M831 572q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41t96.5 -41t40.5 -98zM1292 711q56 0 96.5 -41t40.5 -98q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41zM1984 722q0 -62 -31 -114t-83 -82q5 -33 5 -61 q0 -121 -68.5 -230.5t-197.5 -193.5q-125 -82 -285.5 -125.5t-335.5 -43.5q-176 0 -336.5 43.5t-284.5 125.5q-129 84 -197.5 193t-68.5 231q0 29 5 66q-48 31 -77 81.5t-29 109.5q0 94 66 160t160 66q83 0 148 -55q248 158 592 164l134 423q4 14 17.5 21.5t28.5 4.5 l347 -82q22 50 68.5 81t102.5 31q77 0 131.5 -54.5t54.5 -131.5t-54.5 -132t-131.5 -55q-76 0 -130.5 54t-55.5 131l-315 74l-116 -366q327 -14 560 -166q64 58 151 58q94 0 160 -66t66 -160zM1664 1459q-45 0 -77 -32t-32 -77t32 -77t77 -32t77 32t32 77t-32 77t-77 32z M77 722q0 -67 51 -111q49 131 180 235q-36 25 -82 25q-62 0 -105.5 -43.5t-43.5 -105.5zM1567 105q112 73 171.5 166t59.5 194t-59.5 193.5t-171.5 165.5q-116 75 -265.5 115.5t-313.5 40.5t-313.5 -40.5t-265.5 -115.5q-112 -73 -171.5 -165.5t-59.5 -193.5t59.5 -194 t171.5 -166q116 -75 265.5 -115.5t313.5 -40.5t313.5 40.5t265.5 115.5zM1850 605q57 46 57 117q0 62 -43.5 105.5t-105.5 43.5q-49 0 -86 -28q131 -105 178 -238zM1258 237q11 11 27 11t27 -11t11 -27.5t-11 -27.5q-99 -99 -319 -99h-2q-220 0 -319 99q-11 11 -11 27.5 t11 27.5t27 11t27 -11q77 -77 265 -77h2q188 0 265 77z" /> -<glyph unicode="" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" /> -<glyph unicode="" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" /> -<glyph unicode="" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" /> -<glyph unicode="" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" /> -<glyph unicode="" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" /> -<glyph unicode="" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" /> -<glyph unicode="" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" /> -<glyph unicode="" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" /> -<glyph unicode="" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" /> -<glyph unicode="" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " /> -<glyph unicode="" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" /> -<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" /> -<glyph unicode="" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " /> -<glyph unicode="" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" /> -<glyph unicode="" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" /> -<glyph unicode="" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" /> -<glyph unicode="" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M1397 1408q58 0 98.5 -40.5t40.5 -98.5v-1258q0 -58 -40.5 -98.5t-98.5 -40.5h-1258q-58 0 -98.5 40.5t-40.5 98.5v1258q0 58 40.5 98.5t98.5 40.5h1258zM1465 11v1258q0 28 -20 48t-48 20h-1258q-28 0 -48 -20t-20 -48v-1258q0 -28 20 -48t48 -20h1258q28 0 48 20t20 48 zM694 749l188 -387l533 145v-496q0 -7 -5.5 -12.5t-12.5 -5.5h-1258q-7 0 -12.5 5.5t-5.5 12.5v141l711 195l-212 439q4 1 12 2.5t12 1.5q170 32 303.5 21.5t221 -46t143.5 -94.5q27 -28 -25 -42q-64 -16 -256 -62l-97 198q-111 7 -240 -16zM1397 1287q7 0 12.5 -5.5 t5.5 -12.5v-428q-85 30 -188 52q-294 64 -645 12l-18 -3l-65 134h-233l85 -190q-132 -51 -230 -137v560q0 7 5.5 12.5t12.5 5.5h1258zM286 387q-14 -3 -26 4.5t-14 21.5q-24 203 166 305l129 -270z" /> -<glyph unicode="" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" /> -<glyph unicode="" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" /> -<glyph unicode="" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" /> -<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" /> -<glyph unicode="" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" /> -<glyph unicode="" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" /> -<glyph unicode="" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" /> -<glyph unicode="" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" /> -<glyph unicode="" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" /> -<glyph unicode="" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" /> -<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" /> -<glyph unicode="" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" /> -<glyph unicode="" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" /> -<glyph unicode="" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" /> -<glyph unicode="" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" /> -<glyph unicode="" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" /> -<glyph unicode="" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" /> -<glyph unicode="" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" /> -<glyph unicode="" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" /> -<glyph unicode="" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" /> -<glyph unicode="" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" /> -<glyph unicode="" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" /> -<glyph unicode="" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" /> -<glyph unicode="" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" /> -<glyph unicode="" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" /> -<glyph unicode="" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" /> -<glyph unicode="" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" /> -<glyph unicode="" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" /> -<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" /> -<glyph unicode="" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" /> -<glyph unicode="" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" /> -<glyph unicode="" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" /> -<glyph unicode="" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" /> -<glyph unicode="" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" /> -<glyph unicode="" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" /> -<glyph unicode="" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" /> -<glyph unicode="" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" /> -<glyph unicode="" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" /> -<glyph unicode="" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -<glyph unicode="" horiz-adv-x="1792" /> -</font> -</defs></svg> \ No newline at end of file diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.ttf b/docs/_build/html/_static/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 96a3639cdde5e8ab459c6380e3b9524ee81641dc..0000000000000000000000000000000000000000 Binary files a/docs/_build/html/_static/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/docs/_build/html/_static/fonts/fontawesome-webfont.woff b/docs/_build/html/_static/fonts/fontawesome-webfont.woff deleted file mode 100644 index 628b6a52a87e62c6f22426e17c01f6a303aa194e..0000000000000000000000000000000000000000 Binary files a/docs/_build/html/_static/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/docs/_build/html/_static/js/modernizr.min.js b/docs/_build/html/_static/js/modernizr.min.js deleted file mode 100644 index f65d47974786ee51c258f680bd9be621629244f5..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/js/modernizr.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.6.2 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load - */ -;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))}; diff --git a/docs/_build/html/_static/js/theme.js b/docs/_build/html/_static/js/theme.js deleted file mode 100644 index 48a9f06b5b893afd1afca05d880273eb6cbaf941..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/js/theme.js +++ /dev/null @@ -1,153 +0,0 @@ -require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"sphinx-rtd-theme":[function(require,module,exports){ -var jQuery = (typeof(window) != 'undefined') ? window.jQuery : require('jquery'); - -// Sphinx theme nav state -function ThemeNav () { - - var nav = { - navBar: null, - win: null, - winScroll: false, - winResize: false, - linkScroll: false, - winPosition: 0, - winHeight: null, - docHeight: null, - isRunning: null - }; - - nav.enable = function () { - var self = this; - - jQuery(function ($) { - self.init($); - - self.reset(); - self.win.on('hashchange', self.reset); - - // Set scroll monitor - self.win.on('scroll', function () { - if (!self.linkScroll) { - self.winScroll = true; - } - }); - setInterval(function () { if (self.winScroll) self.onScroll(); }, 25); - - // Set resize monitor - self.win.on('resize', function () { - self.winResize = true; - }); - setInterval(function () { if (self.winResize) self.onResize(); }, 25); - self.onResize(); - }); - }; - - nav.init = function ($) { - var doc = $(document), - self = this; - - this.navBar = $('div.wy-side-scroll:first'); - this.win = $(window); - - // Set up javascript UX bits - $(document) - // Shift nav in mobile when clicking the menu. - .on('click', "[data-toggle='wy-nav-top']", function() { - $("[data-toggle='wy-nav-shift']").toggleClass("shift"); - $("[data-toggle='rst-versions']").toggleClass("shift"); - }) - - // Nav menu link click operations - .on('click', ".wy-menu-vertical .current ul li a", function() { - var target = $(this); - // Close menu when you click a link. - $("[data-toggle='wy-nav-shift']").removeClass("shift"); - $("[data-toggle='rst-versions']").toggleClass("shift"); - // Handle dynamic display of l3 and l4 nav lists - self.toggleCurrent(target); - self.hashChange(); - }) - .on('click', "[data-toggle='rst-current-version']", function() { - $("[data-toggle='rst-versions']").toggleClass("shift-up"); - }) - - // Make tables responsive - $("table.docutils:not(.field-list)") - .wrap("<div class='wy-table-responsive'></div>"); - - // Add expand links to all parents of nested ul - $('.wy-menu-vertical ul').not('.simple').siblings('a').each(function () { - var link = $(this); - expand = $('<span class="toctree-expand"></span>'); - expand.on('click', function (ev) { - self.toggleCurrent(link); - ev.stopPropagation(); - return false; - }); - link.prepend(expand); - }); - }; - - nav.reset = function () { - // Get anchor from URL and open up nested nav - var anchor = encodeURI(window.location.hash); - if (anchor) { - try { - var link = $('.wy-menu-vertical') - .find('[href="' + anchor + '"]'); - $('.wy-menu-vertical li.toctree-l1 li.current') - .removeClass('current'); - link.closest('li.toctree-l2').addClass('current'); - link.closest('li.toctree-l3').addClass('current'); - link.closest('li.toctree-l4').addClass('current'); - } - catch (err) { - console.log("Error expanding nav for anchor", err); - } - } - }; - - nav.onScroll = function () { - this.winScroll = false; - var newWinPosition = this.win.scrollTop(), - winBottom = newWinPosition + this.winHeight, - navPosition = this.navBar.scrollTop(), - newNavPosition = navPosition + (newWinPosition - this.winPosition); - if (newWinPosition < 0 || winBottom > this.docHeight) { - return; - } - this.navBar.scrollTop(newNavPosition); - this.winPosition = newWinPosition; - }; - - nav.onResize = function () { - this.winResize = false; - this.winHeight = this.win.height(); - this.docHeight = $(document).height(); - }; - - nav.hashChange = function () { - this.linkScroll = true; - this.win.one('hashchange', function () { - this.linkScroll = false; - }); - }; - - nav.toggleCurrent = function (elem) { - var parent_li = elem.closest('li'); - parent_li.siblings('li.current').removeClass('current'); - parent_li.siblings().find('li.current').removeClass('current'); - parent_li.find('> ul li.current').removeClass('current'); - parent_li.toggleClass('current'); - } - - return nav; -}; - -module.exports.ThemeNav = ThemeNav(); - -if (typeof(window) != 'undefined') { - window.SphinxRtdTheme = { StickyNav: module.exports.ThemeNav }; -} - -},{"jquery":"jquery"}]},{},["sphinx-rtd-theme"]); diff --git a/docs/_build/html/_static/pygments.css b/docs/_build/html/_static/pygments.css deleted file mode 100644 index 8213e90bed399b1ddc4914808df328f5803e953f..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/pygments.css +++ /dev/null @@ -1,65 +0,0 @@ -.highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } -.highlight .c { color: #408090; font-style: italic } /* Comment */ -.highlight .err { border: 1px solid #FF0000 } /* Error */ -.highlight .k { color: #007020; font-weight: bold } /* Keyword */ -.highlight .o { color: #666666 } /* Operator */ -.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ -.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #007020 } /* Comment.Preproc */ -.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ -.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ -.highlight .gd { color: #A00000 } /* Generic.Deleted */ -.highlight .ge { font-style: italic } /* Generic.Emph */ -.highlight .gr { color: #FF0000 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00A000 } /* Generic.Inserted */ -.highlight .go { color: #333333 } /* Generic.Output */ -.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #0044DD } /* Generic.Traceback */ -.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #007020 } /* Keyword.Pseudo */ -.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #902000 } /* Keyword.Type */ -.highlight .m { color: #208050 } /* Literal.Number */ -.highlight .s { color: #4070a0 } /* Literal.String */ -.highlight .na { color: #4070a0 } /* Name.Attribute */ -.highlight .nb { color: #007020 } /* Name.Builtin */ -.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ -.highlight .no { color: #60add5 } /* Name.Constant */ -.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ -.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ -.highlight .ne { color: #007020 } /* Name.Exception */ -.highlight .nf { color: #06287e } /* Name.Function */ -.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ -.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ -.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #bb60d5 } /* Name.Variable */ -.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mb { color: #208050 } /* Literal.Number.Bin */ -.highlight .mf { color: #208050 } /* Literal.Number.Float */ -.highlight .mh { color: #208050 } /* Literal.Number.Hex */ -.highlight .mi { color: #208050 } /* Literal.Number.Integer */ -.highlight .mo { color: #208050 } /* Literal.Number.Oct */ -.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ -.highlight .sc { color: #4070a0 } /* Literal.String.Char */ -.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ -.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ -.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ -.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ -.highlight .sx { color: #c65d09 } /* Literal.String.Other */ -.highlight .sr { color: #235388 } /* Literal.String.Regex */ -.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ -.highlight .ss { color: #517918 } /* Literal.String.Symbol */ -.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ -.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ -.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ -.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ -.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/docs/_build/html/_static/searchtools.js b/docs/_build/html/_static/searchtools.js deleted file mode 100644 index ba82ad4877ca5803883434a08f1aea6afb43f3b6..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/searchtools.js +++ /dev/null @@ -1,751 +0,0 @@ -/* - * searchtools.js_t - * ~~~~~~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for the full-text search. - * - * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - - -/* Non-minified version JS is _stemmer.js if file is provided */ -/** - * Porter Stemmer - */ -var Stemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - - - -/** - * Simple result scoring code. - */ -var Scorer = { - // Implement the following function to further tweak the score for each result - // The function takes a result array [filename, title, anchor, descr, score] - // and returns the new score. - /* - score: function(result) { - return result[4]; - }, - */ - - // query matches the full name of an object - objNameMatch: 11, - // or matches in the last dotted part of the object name - objPartialMatch: 6, - // Additive scores depending on the priority of the object - objPrio: {0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5}, // used to be unimportantResults - // Used when the priority is not in the mapping. - objPrioDefault: 0, - - // query found in title - title: 15, - // query found in terms - term: 5 -}; - - - - - -var splitChars = (function() { - var result = {}; - var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, - 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, - 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, - 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, - 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, - 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, - 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, - 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, - 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, - 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; - var i, j, start, end; - for (i = 0; i < singles.length; i++) { - result[singles[i]] = true; - } - var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], - [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], - [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], - [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], - [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], - [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], - [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], - [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], - [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], - [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], - [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], - [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], - [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], - [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], - [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], - [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], - [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], - [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], - [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], - [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], - [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], - [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], - [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], - [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], - [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], - [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], - [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], - [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], - [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], - [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], - [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], - [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], - [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], - [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], - [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], - [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], - [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], - [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], - [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], - [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], - [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], - [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], - [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], - [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], - [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], - [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], - [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], - [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], - [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; - for (i = 0; i < ranges.length; i++) { - start = ranges[i][0]; - end = ranges[i][1]; - for (j = start; j <= end; j++) { - result[j] = true; - } - } - return result; -})(); - -function splitQuery(query) { - var result = []; - var start = -1; - for (var i = 0; i < query.length; i++) { - if (splitChars[query.charCodeAt(i)]) { - if (start !== -1) { - result.push(query.slice(start, i)); - start = -1; - } - } else if (start === -1) { - start = i; - } - } - if (start !== -1) { - result.push(query.slice(start)); - } - return result; -} - - - - -/** - * Search Module - */ -var Search = { - - _index : null, - _queued_query : null, - _pulse_status : -1, - - init : function() { - var params = $.getQueryParameters(); - if (params.q) { - var query = params.q[0]; - $('input[name="q"]')[0].value = query; - this.performSearch(query); - } - }, - - loadIndex : function(url) { - $.ajax({type: "GET", url: url, data: null, - dataType: "script", cache: true, - complete: function(jqxhr, textstatus) { - if (textstatus != "success") { - document.getElementById("searchindexloader").src = url; - } - }}); - }, - - setIndex : function(index) { - var q; - this._index = index; - if ((q = this._queued_query) !== null) { - this._queued_query = null; - Search.query(q); - } - }, - - hasIndex : function() { - return this._index !== null; - }, - - deferQuery : function(query) { - this._queued_query = query; - }, - - stopPulse : function() { - this._pulse_status = 0; - }, - - startPulse : function() { - if (this._pulse_status >= 0) - return; - function pulse() { - var i; - Search._pulse_status = (Search._pulse_status + 1) % 4; - var dotString = ''; - for (i = 0; i < Search._pulse_status; i++) - dotString += '.'; - Search.dots.text(dotString); - if (Search._pulse_status > -1) - window.setTimeout(pulse, 500); - } - pulse(); - }, - - /** - * perform a search for something (or wait until index is loaded) - */ - performSearch : function(query) { - // create the required interface elements - this.out = $('#search-results'); - this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out); - this.dots = $('<span></span>').appendTo(this.title); - this.status = $('<p style="display: none"></p>').appendTo(this.out); - this.output = $('<ul class="search"/>').appendTo(this.out); - - $('#search-progress').text(_('Preparing search...')); - this.startPulse(); - - // index already loaded, the browser was quick! - if (this.hasIndex()) - this.query(query); - else - this.deferQuery(query); - }, - - /** - * execute search (requires search index to be loaded) - */ - query : function(query) { - var i; - var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"]; - - // stem the searchterms and add them to the correct list - var stemmer = new Stemmer(); - var searchterms = []; - var excluded = []; - var hlterms = []; - var tmp = splitQuery(query); - var objectterms = []; - for (i = 0; i < tmp.length; i++) { - if (tmp[i] !== "") { - objectterms.push(tmp[i].toLowerCase()); - } - - if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i].match(/^\d+$/) || - tmp[i] === "") { - // skip this "word" - continue; - } - // stem the word - var word = stemmer.stemWord(tmp[i].toLowerCase()); - var toAppend; - // select the correct list - if (word[0] == '-') { - toAppend = excluded; - word = word.substr(1); - } - else { - toAppend = searchterms; - hlterms.push(tmp[i].toLowerCase()); - } - // only add if not already in the list - if (!$u.contains(toAppend, word)) - toAppend.push(word); - } - var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" ")); - - // console.debug('SEARCH: searching for:'); - // console.info('required: ', searchterms); - // console.info('excluded: ', excluded); - - // prepare search - var terms = this._index.terms; - var titleterms = this._index.titleterms; - - // array of [filename, title, anchor, descr, score] - var results = []; - $('#search-progress').empty(); - - // lookup as object - for (i = 0; i < objectterms.length; i++) { - var others = [].concat(objectterms.slice(0, i), - objectterms.slice(i+1, objectterms.length)); - results = results.concat(this.performObjectSearch(objectterms[i], others)); - } - - // lookup as search terms in fulltext - results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms)); - - // let the scorer override scores with a custom scoring function - if (Scorer.score) { - for (i = 0; i < results.length; i++) - results[i][4] = Scorer.score(results[i]); - } - - // now sort the results by score (in opposite order of appearance, since the - // display function below uses pop() to retrieve items) and then - // alphabetically - results.sort(function(a, b) { - var left = a[4]; - var right = b[4]; - if (left > right) { - return 1; - } else if (left < right) { - return -1; - } else { - // same score: sort alphabetically - left = a[1].toLowerCase(); - right = b[1].toLowerCase(); - return (left > right) ? -1 : ((left < right) ? 1 : 0); - } - }); - - // for debugging - //Search.lastresults = results.slice(); // a copy - //console.info('search results:', Search.lastresults); - - // print the results - var resultCount = results.length; - function displayNextItem() { - // results left, load the summary and display it - if (results.length) { - var item = results.pop(); - var listItem = $('<li style="display:none"></li>'); - if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') { - // dirhtml builder - var dirname = item[0] + '/'; - if (dirname.match(/\/index\/$/)) { - dirname = dirname.substring(0, dirname.length-6); - } else if (dirname == 'index/') { - dirname = ''; - } - listItem.append($('<a/>').attr('href', - DOCUMENTATION_OPTIONS.URL_ROOT + dirname + - highlightstring + item[2]).html(item[1])); - } else { - // normal html builders - listItem.append($('<a/>').attr('href', - item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX + - highlightstring + item[2]).html(item[1])); - } - if (item[3]) { - listItem.append($('<span> (' + item[3] + ')</span>')); - Search.output.append(listItem); - listItem.slideDown(5, function() { - displayNextItem(); - }); - } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { - $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt', - dataType: "text", - complete: function(jqxhr, textstatus) { - var data = jqxhr.responseText; - if (data !== '' && data !== undefined) { - listItem.append(Search.makeSearchSummary(data, searchterms, hlterms)); - } - Search.output.append(listItem); - listItem.slideDown(5, function() { - displayNextItem(); - }); - }}); - } else { - // no source available, just display title - Search.output.append(listItem); - listItem.slideDown(5, function() { - displayNextItem(); - }); - } - } - // search finished, update title and status message - else { - Search.stopPulse(); - Search.title.text(_('Search Results')); - if (!resultCount) - Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.')); - else - Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount)); - Search.status.fadeIn(500); - } - } - displayNextItem(); - }, - - /** - * search for object names - */ - performObjectSearch : function(object, otherterms) { - var filenames = this._index.filenames; - var objects = this._index.objects; - var objnames = this._index.objnames; - var titles = this._index.titles; - - var i; - var results = []; - - for (var prefix in objects) { - for (var name in objects[prefix]) { - var fullname = (prefix ? prefix + '.' : '') + name; - if (fullname.toLowerCase().indexOf(object) > -1) { - var score = 0; - var parts = fullname.split('.'); - // check for different match types: exact matches of full name or - // "last name" (i.e. last dotted part) - if (fullname == object || parts[parts.length - 1] == object) { - score += Scorer.objNameMatch; - // matches in last name - } else if (parts[parts.length - 1].indexOf(object) > -1) { - score += Scorer.objPartialMatch; - } - var match = objects[prefix][name]; - var objname = objnames[match[1]][2]; - var title = titles[match[0]]; - // If more than one term searched for, we require other words to be - // found in the name/title/description - if (otherterms.length > 0) { - var haystack = (prefix + ' ' + name + ' ' + - objname + ' ' + title).toLowerCase(); - var allfound = true; - for (i = 0; i < otherterms.length; i++) { - if (haystack.indexOf(otherterms[i]) == -1) { - allfound = false; - break; - } - } - if (!allfound) { - continue; - } - } - var descr = objname + _(', in ') + title; - - var anchor = match[3]; - if (anchor === '') - anchor = fullname; - else if (anchor == '-') - anchor = objnames[match[1]][1] + '-' + fullname; - // add custom score for some objects according to scorer - if (Scorer.objPrio.hasOwnProperty(match[2])) { - score += Scorer.objPrio[match[2]]; - } else { - score += Scorer.objPrioDefault; - } - results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]); - } - } - } - - return results; - }, - - /** - * search for full-text terms in the index - */ - performTermsSearch : function(searchterms, excluded, terms, titleterms) { - var filenames = this._index.filenames; - var titles = this._index.titles; - - var i, j, file; - var fileMap = {}; - var scoreMap = {}; - var results = []; - - // perform the search on the required terms - for (i = 0; i < searchterms.length; i++) { - var word = searchterms[i]; - var files = []; - var _o = [ - {files: terms[word], score: Scorer.term}, - {files: titleterms[word], score: Scorer.title} - ]; - - // no match but word was a required one - if ($u.every(_o, function(o){return o.files === undefined;})) { - break; - } - // found search word in contents - $u.each(_o, function(o) { - var _files = o.files; - if (_files === undefined) - return - - if (_files.length === undefined) - _files = [_files]; - files = files.concat(_files); - - // set score for the word in each file to Scorer.term - for (j = 0; j < _files.length; j++) { - file = _files[j]; - if (!(file in scoreMap)) - scoreMap[file] = {} - scoreMap[file][word] = o.score; - } - }); - - // create the mapping - for (j = 0; j < files.length; j++) { - file = files[j]; - if (file in fileMap) - fileMap[file].push(word); - else - fileMap[file] = [word]; - } - } - - // now check if the files don't contain excluded terms - for (file in fileMap) { - var valid = true; - - // check if all requirements are matched - if (fileMap[file].length != searchterms.length) - continue; - - // ensure that none of the excluded terms is in the search result - for (i = 0; i < excluded.length; i++) { - if (terms[excluded[i]] == file || - titleterms[excluded[i]] == file || - $u.contains(terms[excluded[i]] || [], file) || - $u.contains(titleterms[excluded[i]] || [], file)) { - valid = false; - break; - } - } - - // if we have still a valid result we can add it to the result list - if (valid) { - // select one (max) score for the file. - // for better ranking, we should calculate ranking by using words statistics like basic tf-idf... - var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]})); - results.push([filenames[file], titles[file], '', null, score]); - } - } - return results; - }, - - /** - * helper function to return a node containing the - * search summary for a given text. keywords is a list - * of stemmed words, hlwords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. - */ - makeSearchSummary : function(text, keywords, hlwords) { - var textLower = text.toLowerCase(); - var start = 0; - $.each(keywords, function() { - var i = textLower.indexOf(this.toLowerCase()); - if (i > -1) - start = i; - }); - start = Math.max(start - 120, 0); - var excerpt = ((start > 0) ? '...' : '') + - $.trim(text.substr(start, 240)) + - ((start + 240 - text.length) ? '...' : ''); - var rv = $('<div class="context"></div>').text(excerpt); - $.each(hlwords, function() { - rv = rv.highlightText(this, 'highlighted'); - }); - return rv; - } -}; - -$(document).ready(function() { - Search.init(); -}); \ No newline at end of file diff --git a/docs/_build/html/_static/websupport.js b/docs/_build/html/_static/websupport.js deleted file mode 100644 index 98e7f40b6327e673e382068cdfb3bf3674a06cca..0000000000000000000000000000000000000000 --- a/docs/_build/html/_static/websupport.js +++ /dev/null @@ -1,808 +0,0 @@ -/* - * websupport.js - * ~~~~~~~~~~~~~ - * - * sphinx.websupport utilities for all documentation. - * - * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -(function($) { - $.fn.autogrow = function() { - return this.each(function() { - var textarea = this; - - $.fn.autogrow.resize(textarea); - - $(textarea) - .focus(function() { - textarea.interval = setInterval(function() { - $.fn.autogrow.resize(textarea); - }, 500); - }) - .blur(function() { - clearInterval(textarea.interval); - }); - }); - }; - - $.fn.autogrow.resize = function(textarea) { - var lineHeight = parseInt($(textarea).css('line-height'), 10); - var lines = textarea.value.split('\n'); - var columns = textarea.cols; - var lineCount = 0; - $.each(lines, function() { - lineCount += Math.ceil(this.length / columns) || 1; - }); - var height = lineHeight * (lineCount + 1); - $(textarea).css('height', height); - }; -})(jQuery); - -(function($) { - var comp, by; - - function init() { - initEvents(); - initComparator(); - } - - function initEvents() { - $(document).on("click", 'a.comment-close', function(event) { - event.preventDefault(); - hide($(this).attr('id').substring(2)); - }); - $(document).on("click", 'a.vote', function(event) { - event.preventDefault(); - handleVote($(this)); - }); - $(document).on("click", 'a.reply', function(event) { - event.preventDefault(); - openReply($(this).attr('id').substring(2)); - }); - $(document).on("click", 'a.close-reply', function(event) { - event.preventDefault(); - closeReply($(this).attr('id').substring(2)); - }); - $(document).on("click", 'a.sort-option', function(event) { - event.preventDefault(); - handleReSort($(this)); - }); - $(document).on("click", 'a.show-proposal', function(event) { - event.preventDefault(); - showProposal($(this).attr('id').substring(2)); - }); - $(document).on("click", 'a.hide-proposal', function(event) { - event.preventDefault(); - hideProposal($(this).attr('id').substring(2)); - }); - $(document).on("click", 'a.show-propose-change', function(event) { - event.preventDefault(); - showProposeChange($(this).attr('id').substring(2)); - }); - $(document).on("click", 'a.hide-propose-change', function(event) { - event.preventDefault(); - hideProposeChange($(this).attr('id').substring(2)); - }); - $(document).on("click", 'a.accept-comment', function(event) { - event.preventDefault(); - acceptComment($(this).attr('id').substring(2)); - }); - $(document).on("click", 'a.delete-comment', function(event) { - event.preventDefault(); - deleteComment($(this).attr('id').substring(2)); - }); - $(document).on("click", 'a.comment-markup', function(event) { - event.preventDefault(); - toggleCommentMarkupBox($(this).attr('id').substring(2)); - }); - } - - /** - * Set comp, which is a comparator function used for sorting and - * inserting comments into the list. - */ - function setComparator() { - // If the first three letters are "asc", sort in ascending order - // and remove the prefix. - if (by.substring(0,3) == 'asc') { - var i = by.substring(3); - comp = function(a, b) { return a[i] - b[i]; }; - } else { - // Otherwise sort in descending order. - comp = function(a, b) { return b[by] - a[by]; }; - } - - // Reset link styles and format the selected sort option. - $('a.sel').attr('href', '#').removeClass('sel'); - $('a.by' + by).removeAttr('href').addClass('sel'); - } - - /** - * Create a comp function. If the user has preferences stored in - * the sortBy cookie, use those, otherwise use the default. - */ - function initComparator() { - by = 'rating'; // Default to sort by rating. - // If the sortBy cookie is set, use that instead. - if (document.cookie.length > 0) { - var start = document.cookie.indexOf('sortBy='); - if (start != -1) { - start = start + 7; - var end = document.cookie.indexOf(";", start); - if (end == -1) { - end = document.cookie.length; - by = unescape(document.cookie.substring(start, end)); - } - } - } - setComparator(); - } - - /** - * Show a comment div. - */ - function show(id) { - $('#ao' + id).hide(); - $('#ah' + id).show(); - var context = $.extend({id: id}, opts); - var popup = $(renderTemplate(popupTemplate, context)).hide(); - popup.find('textarea[name="proposal"]').hide(); - popup.find('a.by' + by).addClass('sel'); - var form = popup.find('#cf' + id); - form.submit(function(event) { - event.preventDefault(); - addComment(form); - }); - $('#s' + id).after(popup); - popup.slideDown('fast', function() { - getComments(id); - }); - } - - /** - * Hide a comment div. - */ - function hide(id) { - $('#ah' + id).hide(); - $('#ao' + id).show(); - var div = $('#sc' + id); - div.slideUp('fast', function() { - div.remove(); - }); - } - - /** - * Perform an ajax request to get comments for a node - * and insert the comments into the comments tree. - */ - function getComments(id) { - $.ajax({ - type: 'GET', - url: opts.getCommentsURL, - data: {node: id}, - success: function(data, textStatus, request) { - var ul = $('#cl' + id); - var speed = 100; - $('#cf' + id) - .find('textarea[name="proposal"]') - .data('source', data.source); - - if (data.comments.length === 0) { - ul.html('<li>No comments yet.</li>'); - ul.data('empty', true); - } else { - // If there are comments, sort them and put them in the list. - var comments = sortComments(data.comments); - speed = data.comments.length * 100; - appendComments(comments, ul); - ul.data('empty', false); - } - $('#cn' + id).slideUp(speed + 200); - ul.slideDown(speed); - }, - error: function(request, textStatus, error) { - showError('Oops, there was a problem retrieving the comments.'); - }, - dataType: 'json' - }); - } - - /** - * Add a comment via ajax and insert the comment into the comment tree. - */ - function addComment(form) { - var node_id = form.find('input[name="node"]').val(); - var parent_id = form.find('input[name="parent"]').val(); - var text = form.find('textarea[name="comment"]').val(); - var proposal = form.find('textarea[name="proposal"]').val(); - - if (text == '') { - showError('Please enter a comment.'); - return; - } - - // Disable the form that is being submitted. - form.find('textarea,input').attr('disabled', 'disabled'); - - // Send the comment to the server. - $.ajax({ - type: "POST", - url: opts.addCommentURL, - dataType: 'json', - data: { - node: node_id, - parent: parent_id, - text: text, - proposal: proposal - }, - success: function(data, textStatus, error) { - // Reset the form. - if (node_id) { - hideProposeChange(node_id); - } - form.find('textarea') - .val('') - .add(form.find('input')) - .removeAttr('disabled'); - var ul = $('#cl' + (node_id || parent_id)); - if (ul.data('empty')) { - $(ul).empty(); - ul.data('empty', false); - } - insertComment(data.comment); - var ao = $('#ao' + node_id); - ao.find('img').attr({'src': opts.commentBrightImage}); - if (node_id) { - // if this was a "root" comment, remove the commenting box - // (the user can get it back by reopening the comment popup) - $('#ca' + node_id).slideUp(); - } - }, - error: function(request, textStatus, error) { - form.find('textarea,input').removeAttr('disabled'); - showError('Oops, there was a problem adding the comment.'); - } - }); - } - - /** - * Recursively append comments to the main comment list and children - * lists, creating the comment tree. - */ - function appendComments(comments, ul) { - $.each(comments, function() { - var div = createCommentDiv(this); - ul.append($(document.createElement('li')).html(div)); - appendComments(this.children, div.find('ul.comment-children')); - // To avoid stagnating data, don't store the comments children in data. - this.children = null; - div.data('comment', this); - }); - } - - /** - * After adding a new comment, it must be inserted in the correct - * location in the comment tree. - */ - function insertComment(comment) { - var div = createCommentDiv(comment); - - // To avoid stagnating data, don't store the comments children in data. - comment.children = null; - div.data('comment', comment); - - var ul = $('#cl' + (comment.node || comment.parent)); - var siblings = getChildren(ul); - - var li = $(document.createElement('li')); - li.hide(); - - // Determine where in the parents children list to insert this comment. - for(i=0; i < siblings.length; i++) { - if (comp(comment, siblings[i]) <= 0) { - $('#cd' + siblings[i].id) - .parent() - .before(li.html(div)); - li.slideDown('fast'); - return; - } - } - - // If we get here, this comment rates lower than all the others, - // or it is the only comment in the list. - ul.append(li.html(div)); - li.slideDown('fast'); - } - - function acceptComment(id) { - $.ajax({ - type: 'POST', - url: opts.acceptCommentURL, - data: {id: id}, - success: function(data, textStatus, request) { - $('#cm' + id).fadeOut('fast'); - $('#cd' + id).removeClass('moderate'); - }, - error: function(request, textStatus, error) { - showError('Oops, there was a problem accepting the comment.'); - } - }); - } - - function deleteComment(id) { - $.ajax({ - type: 'POST', - url: opts.deleteCommentURL, - data: {id: id}, - success: function(data, textStatus, request) { - var div = $('#cd' + id); - if (data == 'delete') { - // Moderator mode: remove the comment and all children immediately - div.slideUp('fast', function() { - div.remove(); - }); - return; - } - // User mode: only mark the comment as deleted - div - .find('span.user-id:first') - .text('[deleted]').end() - .find('div.comment-text:first') - .text('[deleted]').end() - .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id + - ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id) - .remove(); - var comment = div.data('comment'); - comment.username = '[deleted]'; - comment.text = '[deleted]'; - div.data('comment', comment); - }, - error: function(request, textStatus, error) { - showError('Oops, there was a problem deleting the comment.'); - } - }); - } - - function showProposal(id) { - $('#sp' + id).hide(); - $('#hp' + id).show(); - $('#pr' + id).slideDown('fast'); - } - - function hideProposal(id) { - $('#hp' + id).hide(); - $('#sp' + id).show(); - $('#pr' + id).slideUp('fast'); - } - - function showProposeChange(id) { - $('#pc' + id).hide(); - $('#hc' + id).show(); - var textarea = $('#pt' + id); - textarea.val(textarea.data('source')); - $.fn.autogrow.resize(textarea[0]); - textarea.slideDown('fast'); - } - - function hideProposeChange(id) { - $('#hc' + id).hide(); - $('#pc' + id).show(); - var textarea = $('#pt' + id); - textarea.val('').removeAttr('disabled'); - textarea.slideUp('fast'); - } - - function toggleCommentMarkupBox(id) { - $('#mb' + id).toggle(); - } - - /** Handle when the user clicks on a sort by link. */ - function handleReSort(link) { - var classes = link.attr('class').split(/\s+/); - for (var i=0; i<classes.length; i++) { - if (classes[i] != 'sort-option') { - by = classes[i].substring(2); - } - } - setComparator(); - // Save/update the sortBy cookie. - var expiration = new Date(); - expiration.setDate(expiration.getDate() + 365); - document.cookie= 'sortBy=' + escape(by) + - ';expires=' + expiration.toUTCString(); - $('ul.comment-ul').each(function(index, ul) { - var comments = getChildren($(ul), true); - comments = sortComments(comments); - appendComments(comments, $(ul).empty()); - }); - } - - /** - * Function to process a vote when a user clicks an arrow. - */ - function handleVote(link) { - if (!opts.voting) { - showError("You'll need to login to vote."); - return; - } - - var id = link.attr('id'); - if (!id) { - // Didn't click on one of the voting arrows. - return; - } - // If it is an unvote, the new vote value is 0, - // Otherwise it's 1 for an upvote, or -1 for a downvote. - var value = 0; - if (id.charAt(1) != 'u') { - value = id.charAt(0) == 'u' ? 1 : -1; - } - // The data to be sent to the server. - var d = { - comment_id: id.substring(2), - value: value - }; - - // Swap the vote and unvote links. - link.hide(); - $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id) - .show(); - - // The div the comment is displayed in. - var div = $('div#cd' + d.comment_id); - var data = div.data('comment'); - - // If this is not an unvote, and the other vote arrow has - // already been pressed, unpress it. - if ((d.value !== 0) && (data.vote === d.value * -1)) { - $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide(); - $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show(); - } - - // Update the comments rating in the local data. - data.rating += (data.vote === 0) ? d.value : (d.value - data.vote); - data.vote = d.value; - div.data('comment', data); - - // Change the rating text. - div.find('.rating:first') - .text(data.rating + ' point' + (data.rating == 1 ? '' : 's')); - - // Send the vote information to the server. - $.ajax({ - type: "POST", - url: opts.processVoteURL, - data: d, - error: function(request, textStatus, error) { - showError('Oops, there was a problem casting that vote.'); - } - }); - } - - /** - * Open a reply form used to reply to an existing comment. - */ - function openReply(id) { - // Swap out the reply link for the hide link - $('#rl' + id).hide(); - $('#cr' + id).show(); - - // Add the reply li to the children ul. - var div = $(renderTemplate(replyTemplate, {id: id})).hide(); - $('#cl' + id) - .prepend(div) - // Setup the submit handler for the reply form. - .find('#rf' + id) - .submit(function(event) { - event.preventDefault(); - addComment($('#rf' + id)); - closeReply(id); - }) - .find('input[type=button]') - .click(function() { - closeReply(id); - }); - div.slideDown('fast', function() { - $('#rf' + id).find('textarea').focus(); - }); - } - - /** - * Close the reply form opened with openReply. - */ - function closeReply(id) { - // Remove the reply div from the DOM. - $('#rd' + id).slideUp('fast', function() { - $(this).remove(); - }); - - // Swap out the hide link for the reply link - $('#cr' + id).hide(); - $('#rl' + id).show(); - } - - /** - * Recursively sort a tree of comments using the comp comparator. - */ - function sortComments(comments) { - comments.sort(comp); - $.each(comments, function() { - this.children = sortComments(this.children); - }); - return comments; - } - - /** - * Get the children comments from a ul. If recursive is true, - * recursively include childrens' children. - */ - function getChildren(ul, recursive) { - var children = []; - ul.children().children("[id^='cd']") - .each(function() { - var comment = $(this).data('comment'); - if (recursive) - comment.children = getChildren($(this).find('#cl' + comment.id), true); - children.push(comment); - }); - return children; - } - - /** Create a div to display a comment in. */ - function createCommentDiv(comment) { - if (!comment.displayed && !opts.moderator) { - return $('<div class="moderate">Thank you! Your comment will show up ' - + 'once it is has been approved by a moderator.</div>'); - } - // Prettify the comment rating. - comment.pretty_rating = comment.rating + ' point' + - (comment.rating == 1 ? '' : 's'); - // Make a class (for displaying not yet moderated comments differently) - comment.css_class = comment.displayed ? '' : ' moderate'; - // Create a div for this comment. - var context = $.extend({}, opts, comment); - var div = $(renderTemplate(commentTemplate, context)); - - // If the user has voted on this comment, highlight the correct arrow. - if (comment.vote) { - var direction = (comment.vote == 1) ? 'u' : 'd'; - div.find('#' + direction + 'v' + comment.id).hide(); - div.find('#' + direction + 'u' + comment.id).show(); - } - - if (opts.moderator || comment.text != '[deleted]') { - div.find('a.reply').show(); - if (comment.proposal_diff) - div.find('#sp' + comment.id).show(); - if (opts.moderator && !comment.displayed) - div.find('#cm' + comment.id).show(); - if (opts.moderator || (opts.username == comment.username)) - div.find('#dc' + comment.id).show(); - } - return div; - } - - /** - * A simple template renderer. Placeholders such as <%id%> are replaced - * by context['id'] with items being escaped. Placeholders such as <#id#> - * are not escaped. - */ - function renderTemplate(template, context) { - var esc = $(document.createElement('div')); - - function handle(ph, escape) { - var cur = context; - $.each(ph.split('.'), function() { - cur = cur[this]; - }); - return escape ? esc.text(cur || "").html() : cur; - } - - return template.replace(/<([%#])([\w\.]*)\1>/g, function() { - return handle(arguments[2], arguments[1] == '%' ? true : false); - }); - } - - /** Flash an error message briefly. */ - function showError(message) { - $(document.createElement('div')).attr({'class': 'popup-error'}) - .append($(document.createElement('div')) - .attr({'class': 'error-message'}).text(message)) - .appendTo('body') - .fadeIn("slow") - .delay(2000) - .fadeOut("slow"); - } - - /** Add a link the user uses to open the comments popup. */ - $.fn.comment = function() { - return this.each(function() { - var id = $(this).attr('id').substring(1); - var count = COMMENT_METADATA[id]; - var title = count + ' comment' + (count == 1 ? '' : 's'); - var image = count > 0 ? opts.commentBrightImage : opts.commentImage; - var addcls = count == 0 ? ' nocomment' : ''; - $(this) - .append( - $(document.createElement('a')).attr({ - href: '#', - 'class': 'sphinx-comment-open' + addcls, - id: 'ao' + id - }) - .append($(document.createElement('img')).attr({ - src: image, - alt: 'comment', - title: title - })) - .click(function(event) { - event.preventDefault(); - show($(this).attr('id').substring(2)); - }) - ) - .append( - $(document.createElement('a')).attr({ - href: '#', - 'class': 'sphinx-comment-close hidden', - id: 'ah' + id - }) - .append($(document.createElement('img')).attr({ - src: opts.closeCommentImage, - alt: 'close', - title: 'close' - })) - .click(function(event) { - event.preventDefault(); - hide($(this).attr('id').substring(2)); - }) - ); - }); - }; - - var opts = { - processVoteURL: '/_process_vote', - addCommentURL: '/_add_comment', - getCommentsURL: '/_get_comments', - acceptCommentURL: '/_accept_comment', - deleteCommentURL: '/_delete_comment', - commentImage: '/static/_static/comment.png', - closeCommentImage: '/static/_static/comment-close.png', - loadingImage: '/static/_static/ajax-loader.gif', - commentBrightImage: '/static/_static/comment-bright.png', - upArrow: '/static/_static/up.png', - downArrow: '/static/_static/down.png', - upArrowPressed: '/static/_static/up-pressed.png', - downArrowPressed: '/static/_static/down-pressed.png', - voting: false, - moderator: false - }; - - if (typeof COMMENT_OPTIONS != "undefined") { - opts = jQuery.extend(opts, COMMENT_OPTIONS); - } - - var popupTemplate = '\ - <div class="sphinx-comments" id="sc<%id%>">\ - <p class="sort-options">\ - Sort by:\ - <a href="#" class="sort-option byrating">best rated</a>\ - <a href="#" class="sort-option byascage">newest</a>\ - <a href="#" class="sort-option byage">oldest</a>\ - </p>\ - <div class="comment-header">Comments</div>\ - <div class="comment-loading" id="cn<%id%>">\ - loading comments... <img src="<%loadingImage%>" alt="" /></div>\ - <ul id="cl<%id%>" class="comment-ul"></ul>\ - <div id="ca<%id%>">\ - <p class="add-a-comment">Add a comment\ - (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\ - <div class="comment-markup-box" id="mb<%id%>">\ - reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \ - <code>``code``</code>, \ - code blocks: <code>::</code> and an indented block after blank line</div>\ - <form method="post" id="cf<%id%>" class="comment-form" action="">\ - <textarea name="comment" cols="80"></textarea>\ - <p class="propose-button">\ - <a href="#" id="pc<%id%>" class="show-propose-change">\ - Propose a change ▹\ - </a>\ - <a href="#" id="hc<%id%>" class="hide-propose-change">\ - Propose a change ▿\ - </a>\ - </p>\ - <textarea name="proposal" id="pt<%id%>" cols="80"\ - spellcheck="false"></textarea>\ - <input type="submit" value="Add comment" />\ - <input type="hidden" name="node" value="<%id%>" />\ - <input type="hidden" name="parent" value="" />\ - </form>\ - </div>\ - </div>'; - - var commentTemplate = '\ - <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\ - <div class="vote">\ - <div class="arrow">\ - <a href="#" id="uv<%id%>" class="vote" title="vote up">\ - <img src="<%upArrow%>" />\ - </a>\ - <a href="#" id="uu<%id%>" class="un vote" title="vote up">\ - <img src="<%upArrowPressed%>" />\ - </a>\ - </div>\ - <div class="arrow">\ - <a href="#" id="dv<%id%>" class="vote" title="vote down">\ - <img src="<%downArrow%>" id="da<%id%>" />\ - </a>\ - <a href="#" id="du<%id%>" class="un vote" title="vote down">\ - <img src="<%downArrowPressed%>" />\ - </a>\ - </div>\ - </div>\ - <div class="comment-content">\ - <p class="tagline comment">\ - <span class="user-id"><%username%></span>\ - <span class="rating"><%pretty_rating%></span>\ - <span class="delta"><%time.delta%></span>\ - </p>\ - <div class="comment-text comment"><#text#></div>\ - <p class="comment-opts comment">\ - <a href="#" class="reply hidden" id="rl<%id%>">reply ▹</a>\ - <a href="#" class="close-reply" id="cr<%id%>">reply ▿</a>\ - <a href="#" id="sp<%id%>" class="show-proposal">proposal ▹</a>\ - <a href="#" id="hp<%id%>" class="hide-proposal">proposal ▿</a>\ - <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\ - <span id="cm<%id%>" class="moderation hidden">\ - <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\ - </span>\ - </p>\ - <pre class="proposal" id="pr<%id%>">\ -<#proposal_diff#>\ - </pre>\ - <ul class="comment-children" id="cl<%id%>"></ul>\ - </div>\ - <div class="clearleft"></div>\ - </div>\ - </div>'; - - var replyTemplate = '\ - <li>\ - <div class="reply-div" id="rd<%id%>">\ - <form id="rf<%id%>">\ - <textarea name="comment" cols="80"></textarea>\ - <input type="submit" value="Add reply" />\ - <input type="button" value="Cancel" />\ - <input type="hidden" name="parent" value="<%id%>" />\ - <input type="hidden" name="node" value="" />\ - </form>\ - </div>\ - </li>'; - - $(document).ready(function() { - init(); - }); -})(jQuery); - -$(document).ready(function() { - // add comment anchors for all paragraphs that are commentable - $('.sphinx-has-comment').comment(); - - // highlight search words in search results - $("div.context").each(function() { - var params = $.getQueryParameters(); - var terms = (params.q) ? params.q[0].split(/\s+/) : []; - var result = $(this); - $.each(terms, function() { - result.highlightText(this.toLowerCase(), 'highlighted'); - }); - }); - - // directly open comment window if requested - var anchor = document.location.hash; - if (anchor.substring(0, 9) == '#comment-') { - $('#ao' + anchor.substring(9)).click(); - document.location.hash = '#s' + anchor.substring(9); - } -}); diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html deleted file mode 100644 index 5976ed7ecd27699d44cb180c171db2994e85d846..0000000000000000000000000000000000000000 --- a/docs/_build/html/genindex.html +++ /dev/null @@ -1,741 +0,0 @@ - - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>Index — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="#"/> - <link rel="search" title="Search" href="search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="index.html"/> - - - <script src="_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="index.html">Docs</a> »</li> - - <li></li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - -<h1 id="index">Index</h1> - -<div class="genindex-jumpbox"> - <a href="#A"><strong>A</strong></a> - | <a href="#B"><strong>B</strong></a> - | <a href="#C"><strong>C</strong></a> - | <a href="#D"><strong>D</strong></a> - | <a href="#E"><strong>E</strong></a> - | <a href="#F"><strong>F</strong></a> - | <a href="#G"><strong>G</strong></a> - | <a href="#H"><strong>H</strong></a> - | <a href="#I"><strong>I</strong></a> - | <a href="#J"><strong>J</strong></a> - | <a href="#L"><strong>L</strong></a> - | <a href="#M"><strong>M</strong></a> - | <a href="#N"><strong>N</strong></a> - | <a href="#P"><strong>P</strong></a> - | <a href="#R"><strong>R</strong></a> - | <a href="#S"><strong>S</strong></a> - | <a href="#T"><strong>T</strong></a> - | <a href="#U"><strong>U</strong></a> - | <a href="#V"><strong>V</strong></a> - -</div> -<h2 id="A">A</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#scipost.views.activation">activation() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/views.html#journals.views.add_author">add_author() (in module journals.views)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.AffiliationObject">AffiliationObject (class in scipost.models)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#scipost.views.api_graph">api_graph() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.Arc">Arc (class in scipost.models)</a> - </dt> - - - <dt><a href="modules/views.html#submissions.views.assignment_failed">assignment_failed() (in module submissions.views)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.AuthorshipClaim">AuthorshipClaim (class in scipost.models)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="B">B</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#scipost.views.base">base() (in module scipost.views)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="C">C</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#submissions.views.cancel_ref_invitation">cancel_ref_invitation() (in module submissions.views)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.ChoiceArrayField">ChoiceArrayField (class in scipost.models)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.claim_authorships">claim_authorships() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/views.html#submissions.views.close_refereeing_round">close_refereeing_round() (in module submissions.views)</a> - </dt> - - - <dt><a href="modules/models.html#comments.models.Comment">Comment (class in comments.models)</a> - </dt> - - - <dt><a href="modules/models.html#module-commentaries.models">commentaries.models (module)</a> - </dt> - - - <dt><a href="modules/views.html#module-commentaries.views">commentaries.views (module)</a> - </dt> - - - <dt><a href="modules/models.html#commentaries.models.Commentary">Commentary (class in commentaries.models)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#module-comments.models">comments.models (module)</a> - </dt> - - - <dt><a href="modules/views.html#module-comments.views">comments.views (module)</a> - </dt> - - - <dt><a href="modules/views.html#submissions.views.communication">communication() (in module submissions.views)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.Contributor">Contributor (class in scipost.models)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.contributor_info">contributor_info() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/views.html#journals.views.create_citation_list_metadata">create_citation_list_metadata() (in module journals.views)</a> - </dt> - - - <dt><a href="modules/views.html#journals.views.create_funding_info_metadata">create_funding_info_metadata() (in module journals.views)</a> - </dt> - - - <dt><a href="modules/views.html#journals.views.create_metadata_xml">create_metadata_xml() (in module journals.views)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="D">D</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#journals.models.Deposit">Deposit (class in journals.models)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.NewsItem.descriptor_full">descriptor_full() (scipost.models.NewsItem method)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#scipost.models.NewsItem.descriptor_small">descriptor_small() (scipost.models.NewsItem method)</a> - </dt> - - - <dt><a href="modules/models.html#journals.models.Publication.details">details() (journals.models.Publication method)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.documentsSearchResults">documentsSearchResults() (in module scipost.views)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="E">E</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#submissions.views.editorial_workflow">editorial_workflow() (in module submissions.views)</a> - </dt> - - - <dt><a href="modules/models.html#submissions.models.EditorialAssignment">EditorialAssignment (class in submissions.models)</a> - </dt> - - - <dt><a href="modules/models.html#submissions.models.EditorialCommunication">EditorialCommunication (class in submissions.models)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#submissions.models.EICRecommendation">EICRecommendation (class in submissions.models)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.email_group_members">email_group_members() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.email_particular">email_particular() (in module scipost.views)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="F">F</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#submissions.views.fix_College_decision">fix_College_decision() (in module submissions.views)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="G">G</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#scipost.views.get_query">get_query() (in module scipost.views)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#scipost.models.Graph">Graph (class in scipost.models)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="H">H</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#submissions.models.EditorialAssignment.header_as_li">header_as_li() (submissions.models.EditorialAssignment method)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="I">I</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#scipost.views.index">index() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/views.html#journals.views.initiate_publication">initiate_publication() (in module journals.views)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#scipost.views.invitation">invitation() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/models.html#journals.models.Issue">Issue (class in journals.models)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="J">J</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#journals.models.Journal">Journal (class in journals.models)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#module-journals.models">journals.models (module)</a> - </dt> - - - <dt><a href="modules/views.html#module-journals.views">journals.views (module)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="L">L</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#scipost.models.List">List (class in scipost.models)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="M">M</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#scipost.views.mark_reg_inv_as_declined">mark_reg_inv_as_declined() (in module scipost.views)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#journals.views.metadata_xml_deposit">metadata_xml_deposit() (in module journals.views)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="N">N</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#scipost.models.NewsItem">NewsItem (class in scipost.models)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#scipost.models.Node">Node (class in scipost.models)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.normalize_query">normalize_query() (in module scipost.views)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="P">P</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#commentaries.models.Commentary.parse_links_into_urls">parse_links_into_urls() (commentaries.models.Commentary method)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.personal_page">personal_page() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/views.html#submissions.views.pool">pool() (in module submissions.views)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.PrecookedEmail">PrecookedEmail (class in scipost.models)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#commentaries.views.prefill_using_DOI">prefill_using_DOI() (in module commentaries.views)</a> - </dt> - - - <dt><a href="modules/views.html#commentaries.views.prefill_using_identifier">prefill_using_identifier() (in module commentaries.views)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.Contributor.public_info_as_table">public_info_as_table() (scipost.models.Contributor method)</a> - </dt> - - - <dt><a href="modules/models.html#journals.models.Publication">Publication (class in journals.models)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="R">R</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#submissions.views.recruit_referee">recruit_referee() (in module submissions.views)</a> - </dt> - - - <dt><a href="modules/views.html#submissions.views.ref_invitation_reminder">ref_invitation_reminder() (in module submissions.views)</a> - </dt> - - - <dt><a href="modules/models.html#submissions.models.RefereeInvitation">RefereeInvitation (class in submissions.models)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.registration_invitations">registration_invitations() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.registration_invitations_cleanup">registration_invitations_cleanup() (in module scipost.views)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#scipost.models.RegistrationInvitation">RegistrationInvitation (class in scipost.models)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.Remark">Remark (class in scipost.models)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.remove_registration_invitation">remove_registration_invitation() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.renew_registration_invitation">renew_registration_invitation() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/models.html#submissions.models.Report">Report (class in submissions.models)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="S">S</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#module-scipost.models">scipost.models (module)</a> - </dt> - - - <dt><a href="modules/views.html#module-scipost.views">scipost.views (module)</a> - </dt> - - - <dt><a href="modules/views.html#journals.views.scipost_physics_accepted">scipost_physics_accepted() (in module journals.views)</a> - </dt> - - - <dt><a href="modules/views.html#journals.views.scipost_physics_recent">scipost_physics_recent() (in module journals.views)</a> - </dt> - - - <dt><a href="modules/models.html#commentaries.models.Commentary.scipost_url">scipost_url() (commentaries.models.Commentary method)</a> - </dt> - - - <dt><a href="modules/models.html#commentaries.models.Commentary.scipost_url_full">scipost_url_full() (commentaries.models.Commentary method)</a> - </dt> - - - <dt><a href="modules/views.html#scipost.views.search">search() (in module scipost.views)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#scipost.views.send_precooked_email">send_precooked_email() (in module scipost.views)</a> - </dt> - - - <dt><a href="modules/views.html#submissions.views.send_refereeing_invitation">send_refereeing_invitation() (in module submissions.views)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.SPBMembershipAgreement">SPBMembershipAgreement (class in scipost.models)</a> - </dt> - - - <dt><a href="modules/models.html#submissions.models.Submission">Submission (class in submissions.models)</a> - </dt> - - - <dt><a href="modules/views.html#submissions.views.submissions">submissions() (in module submissions.views)</a> - </dt> - - - <dt><a href="modules/models.html#module-submissions.models">submissions.models (module)</a> - </dt> - - - <dt><a href="modules/views.html#module-submissions.views">submissions.views (module)</a> - </dt> - - - <dt><a href="modules/models.html#scipost.models.SupportingPartner">SupportingPartner (class in scipost.models)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="T">T</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#scipost.models.Team">Team (class in scipost.models)</a> - </dt> - - - <dt><a href="modules/models.html#module-theses.models">theses.models (module)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#module-theses.views">theses.views (module)</a> - </dt> - - - <dt><a href="modules/models.html#theses.models.ThesisLink">ThesisLink (class in theses.models)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="U">U</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#scipost.models.UnavailabilityPeriod">UnavailabilityPeriod (class in scipost.models)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#journals.models.UnregisteredAuthor">UnregisteredAuthor (class in journals.models)</a> - </dt> - - - <dt><a href="modules/views.html#journals.views.upload_proofs">upload_proofs() (in module journals.views)</a> - </dt> - - </dl></td> -</tr></table> - -<h2 id="V">V</h2> -<table style="width: 100%" class="indextable genindextable"><tr> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/views.html#journals.views.validate_publication">validate_publication() (in module journals.views)</a> - </dt> - - </dl></td> - <td style="width: 33%" valign="top"><dl> - - <dt><a href="modules/models.html#journals.models.Volume">Volume (class in journals.models)</a> - </dt> - - - <dt><a href="modules/views.html#submissions.views.volunteer_as_EIC">volunteer_as_EIC() (in module submissions.views)</a> - </dt> - - </dl></td> -</tr></table> - - - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'./', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html deleted file mode 100644 index 6ac380fba5f19077ffadef77fe0f57e9085ce780..0000000000000000000000000000000000000000 --- a/docs/_build/html/index.html +++ /dev/null @@ -1,219 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>Welcome to SciPost’s documentation! — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="genindex.html"/> - <link rel="search" title="Search" href="search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="#"/> - <link rel="next" title="Models" href="modules/models.html"/> - - - <script src="_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="#" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="#">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="#">Docs</a> »</li> - - <li>Welcome to SciPost’s documentation!</li> - <li class="wy-breadcrumbs-aside"> - - - <a href="_sources/index.txt" rel="nofollow"> View page source</a> - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="welcome-to-scipost-s-documentation"> -<h1>Welcome to SciPost’s documentation!<a class="headerlink" href="#welcome-to-scipost-s-documentation" title="Permalink to this headline">¶</a></h1> -<p>Contents:</p> -<div class="toctree-wrapper compound"> -<ul> -<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li> -</ul> -</div> -</div> -<div class="section" id="indices-and-tables"> -<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1> -<ul class="simple"> -<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li> -<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li> -<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li> -</ul> -</div> - - - </div> - </div> - <footer> - - <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - - <a href="modules/models.html" class="btn btn-neutral float-right" title="Models" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> - - - </div> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'./', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/modules/models.html b/docs/_build/html/modules/models.html deleted file mode 100644 index 86f0fb2653cd71d5f01c03f319e981c1515834a4..0000000000000000000000000000000000000000 --- a/docs/_build/html/modules/models.html +++ /dev/null @@ -1,446 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>Models — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../genindex.html"/> - <link rel="search" title="Search" href="../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../index.html"/> - <link rel="next" title="Views" href="views.html"/> - <link rel="prev" title="Welcome to SciPost’s documentation!" href="../index.html"/> - - - <script src="../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul class="current"> -<li class="toctree-l1 current"><a class="current reference internal" href="#">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../index.html">Docs</a> »</li> - - <li>Models</li> - <li class="wy-breadcrumbs-aside"> - - - <a href="../_sources/modules/models.txt" rel="nofollow"> View page source</a> - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="module-scipost.models"> -<span id="models"></span><h1>Models<a class="headerlink" href="#module-scipost.models" title="Permalink to this headline">¶</a></h1> -<dl class="class"> -<dt id="scipost.models.AffiliationObject"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">AffiliationObject</code><span class="sig-paren">(</span><em>id</em>, <em>country</em>, <em>institution</em>, <em>subunit</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#AffiliationObject"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.AffiliationObject" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="class"> -<dt id="scipost.models.Arc"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">Arc</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#Arc"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.Arc" title="Permalink to this definition">¶</a></dt> -<dd><p>Arc of a graph, linking two nodes. -The length is user-adjustable.</p> -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.AuthorshipClaim"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">AuthorshipClaim</code><span class="sig-paren">(</span><em>id</em>, <em>claimant</em>, <em>submission</em>, <em>commentary</em>, <em>thesislink</em>, <em>vetted_by</em>, <em>status</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#AuthorshipClaim"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.AuthorshipClaim" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="class"> -<dt id="scipost.models.ChoiceArrayField"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">ChoiceArrayField</code><span class="sig-paren">(</span><em>base_field</em>, <em>size=None</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#ChoiceArrayField"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.ChoiceArrayField" title="Permalink to this definition">¶</a></dt> -<dd><p>A field that allows us to store an array of choices. -Uses Django 1.9’s postgres ArrayField -and a MultipleChoiceField for its formfield.</p> -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.Contributor"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">Contributor</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#Contributor"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.Contributor" title="Permalink to this definition">¶</a></dt> -<dd><p>All users of SciPost are Contributors. -Permissions determine the sub-types. -username, password, email, first_name and last_name are inherited from User.</p> -<dl class="method"> -<dt id="scipost.models.Contributor.public_info_as_table"> -<code class="descname">public_info_as_table</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#Contributor.public_info_as_table"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.Contributor.public_info_as_table" title="Permalink to this definition">¶</a></dt> -<dd><p>Prints out all publicly-accessible info as a table.</p> -</dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.Graph"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">Graph</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#Graph"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.Graph" title="Permalink to this definition">¶</a></dt> -<dd><p>A Graph is a collection of Nodes with directed arrows, -representing e.g. a reading list, exploration path, etc. -If private, only the teams in teams_with_access can see/edit it.</p> -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.List"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">List</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#List"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.List" title="Permalink to this definition">¶</a></dt> -<dd><p>A collection of commentaries, submissions, thesislinks, comments, etc -defined by a Contributor, for use in Graphs, etc</p> -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.NewsItem"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">NewsItem</code><span class="sig-paren">(</span><em>id</em>, <em>date</em>, <em>headline</em>, <em>blurb</em>, <em>followup_link</em>, <em>followup_link_text</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#NewsItem"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.NewsItem" title="Permalink to this definition">¶</a></dt> -<dd><dl class="method"> -<dt id="scipost.models.NewsItem.descriptor_full"> -<code class="descname">descriptor_full</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#NewsItem.descriptor_full"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.NewsItem.descriptor_full" title="Permalink to this definition">¶</a></dt> -<dd><p>For News page.</p> -</dd></dl> - -<dl class="method"> -<dt id="scipost.models.NewsItem.descriptor_small"> -<code class="descname">descriptor_small</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#NewsItem.descriptor_small"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.NewsItem.descriptor_small" title="Permalink to this definition">¶</a></dt> -<dd><p>For index page.</p> -</dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.Node"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">Node</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#Node"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.Node" title="Permalink to this definition">¶</a></dt> -<dd><p>Node of a graph (directed). -Each node is composed of a set of submissions, commentaries, thesislinks. -Accessibility rights are set in the Graph ForeignKey.</p> -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.PrecookedEmail"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">PrecookedEmail</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#PrecookedEmail"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.PrecookedEmail" title="Permalink to this definition">¶</a></dt> -<dd><p>Each instance contains an email template in both plain and html formats. -Can only be created by Admins. -For further use in scipost:send_precooked_email method.</p> -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.RegistrationInvitation"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">RegistrationInvitation</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#RegistrationInvitation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.RegistrationInvitation" title="Permalink to this definition">¶</a></dt> -<dd><p>Invitation to particular persons for registration</p> -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.Remark"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">Remark</code><span class="sig-paren">(</span><em>id</em>, <em>contributor</em>, <em>recommendation</em>, <em>date</em>, <em>remark</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#Remark"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.Remark" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="class"> -<dt id="scipost.models.SPBMembershipAgreement"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">SPBMembershipAgreement</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#SPBMembershipAgreement"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.SPBMembershipAgreement" title="Permalink to this definition">¶</a></dt> -<dd><p>Agreement for membership of the Supporting Partners Board. -A new instance is created each time an Agreement is made or renewed.</p> -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.SupportingPartner"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">SupportingPartner</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#SupportingPartner"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.SupportingPartner" title="Permalink to this definition">¶</a></dt> -<dd><p>Supporting Partners.</p> -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.Team"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">Team</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#Team"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.Team" title="Permalink to this definition">¶</a></dt> -<dd><p>Team of Contributors, to enable private collaborations.</p> -</dd></dl> - -<dl class="class"> -<dt id="scipost.models.UnavailabilityPeriod"> -<em class="property">class </em><code class="descclassname">scipost.models.</code><code class="descname">UnavailabilityPeriod</code><span class="sig-paren">(</span><em>id</em>, <em>contributor</em>, <em>start</em>, <em>end</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/models.html#UnavailabilityPeriod"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.models.UnavailabilityPeriod" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<span class="target" id="module-journals.models"></span><dl class="class"> -<dt id="journals.models.Deposit"> -<em class="property">class </em><code class="descclassname">journals.models.</code><code class="descname">Deposit</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/models.html#Deposit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.models.Deposit" title="Permalink to this definition">¶</a></dt> -<dd><p>Each time a Crossref deposit is made for a Publication, -a Deposit object instance is created containing the Publication’s -current version of the metadata_xml field. -All deposit history is thus contained here.</p> -</dd></dl> - -<dl class="class"> -<dt id="journals.models.Issue"> -<em class="property">class </em><code class="descclassname">journals.models.</code><code class="descname">Issue</code><span class="sig-paren">(</span><em>id</em>, <em>in_volume</em>, <em>number</em>, <em>start_date</em>, <em>until_date</em>, <em>doi_string</em>, <em>path</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/models.html#Issue"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.models.Issue" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="class"> -<dt id="journals.models.Journal"> -<em class="property">class </em><code class="descclassname">journals.models.</code><code class="descname">Journal</code><span class="sig-paren">(</span><em>id</em>, <em>name</em>, <em>doi_string</em>, <em>issn</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/models.html#Journal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.models.Journal" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="class"> -<dt id="journals.models.Publication"> -<em class="property">class </em><code class="descclassname">journals.models.</code><code class="descname">Publication</code><span class="sig-paren">(</span><em>id</em>, <em>accepted_submission</em>, <em>in_issue</em>, <em>paper_nr</em>, <em>discipline</em>, <em>domain</em>, <em>subject_area</em>, <em>secondary_areas</em>, <em>title</em>, <em>author_list</em>, <em>first_author</em>, <em>first_author_unregistered</em>, <em>abstract</em>, <em>pdf_file</em>, <em>metadata</em>, <em>metadata_xml</em>, <em>BiBTeX_entry</em>, <em>doi_label</em>, <em>doi_string</em>, <em>submission_date</em>, <em>acceptance_date</em>, <em>publication_date</em>, <em>latest_activity</em>, <em>citedby</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/models.html#Publication"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.models.Publication" title="Permalink to this definition">¶</a></dt> -<dd><dl class="method"> -<dt id="journals.models.Publication.details"> -<code class="descname">details</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/models.html#Publication.details"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.models.Publication.details" title="Permalink to this definition">¶</a></dt> -<dd><p>This method is called from the publication_detail template. -It provides all the details for a publication.</p> -</dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="journals.models.UnregisteredAuthor"> -<em class="property">class </em><code class="descclassname">journals.models.</code><code class="descname">UnregisteredAuthor</code><span class="sig-paren">(</span><em>id</em>, <em>first_name</em>, <em>last_name</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/models.html#UnregisteredAuthor"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.models.UnregisteredAuthor" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="class"> -<dt id="journals.models.Volume"> -<em class="property">class </em><code class="descclassname">journals.models.</code><code class="descname">Volume</code><span class="sig-paren">(</span><em>id</em>, <em>in_journal</em>, <em>number</em>, <em>start_date</em>, <em>until_date</em>, <em>doi_string</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/models.html#Volume"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.models.Volume" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<span class="target" id="module-comments.models"></span><dl class="class"> -<dt id="comments.models.Comment"> -<em class="property">class </em><code class="descclassname">comments.models.</code><code class="descname">Comment</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/comments/models.html#Comment"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#comments.models.Comment" title="Permalink to this definition">¶</a></dt> -<dd><p>A Comment is an unsollicited note, submitted by a Contributor, -on a particular publication or in reply to an earlier Comment.</p> -</dd></dl> - -<span class="target" id="module-commentaries.models"></span><dl class="class"> -<dt id="commentaries.models.Commentary"> -<em class="property">class </em><code class="descclassname">commentaries.models.</code><code class="descname">Commentary</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/commentaries/models.html#Commentary"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#commentaries.models.Commentary" title="Permalink to this definition">¶</a></dt> -<dd><p>A Commentary contains all the contents of a SciPost Commentary page for a given publication.</p> -<dl class="method"> -<dt id="commentaries.models.Commentary.parse_links_into_urls"> -<code class="descname">parse_links_into_urls</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/commentaries/models.html#Commentary.parse_links_into_urls"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#commentaries.models.Commentary.parse_links_into_urls" title="Permalink to this definition">¶</a></dt> -<dd><p>Takes the arXiv nr or DOI and turns it into the urls</p> -</dd></dl> - -<dl class="method"> -<dt id="commentaries.models.Commentary.scipost_url"> -<code class="descname">scipost_url</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/commentaries/models.html#Commentary.scipost_url"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#commentaries.models.Commentary.scipost_url" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the url of the SciPost Commentary Page</p> -</dd></dl> - -<dl class="method"> -<dt id="commentaries.models.Commentary.scipost_url_full"> -<code class="descname">scipost_url_full</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/commentaries/models.html#Commentary.scipost_url_full"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#commentaries.models.Commentary.scipost_url_full" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns the url of the SciPost Commentary Page</p> -</dd></dl> - -</dd></dl> - -<span class="target" id="module-submissions.models"></span><dl class="class"> -<dt id="submissions.models.EICRecommendation"> -<em class="property">class </em><code class="descclassname">submissions.models.</code><code class="descname">EICRecommendation</code><span class="sig-paren">(</span><em>id</em>, <em>submission</em>, <em>date_submitted</em>, <em>remarks_for_authors</em>, <em>requested_changes</em>, <em>remarks_for_editorial_college</em>, <em>recommendation</em>, <em>voting_deadline</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/models.html#EICRecommendation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.models.EICRecommendation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="class"> -<dt id="submissions.models.EditorialAssignment"> -<em class="property">class </em><code class="descclassname">submissions.models.</code><code class="descname">EditorialAssignment</code><span class="sig-paren">(</span><em>id</em>, <em>submission</em>, <em>to</em>, <em>accepted</em>, <em>deprecated</em>, <em>completed</em>, <em>refusal_reason</em>, <em>date_created</em>, <em>date_answered</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/models.html#EditorialAssignment"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.models.EditorialAssignment" title="Permalink to this definition">¶</a></dt> -<dd><dl class="method"> -<dt id="submissions.models.EditorialAssignment.header_as_li"> -<code class="descname">header_as_li</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/models.html#EditorialAssignment.header_as_li"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.models.EditorialAssignment.header_as_li" title="Permalink to this definition">¶</a></dt> -<dd><p>Same as above, but without link to Editorial Page.</p> -</dd></dl> - -</dd></dl> - -<dl class="class"> -<dt id="submissions.models.EditorialCommunication"> -<em class="property">class </em><code class="descclassname">submissions.models.</code><code class="descname">EditorialCommunication</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/models.html#EditorialCommunication"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.models.EditorialCommunication" title="Permalink to this definition">¶</a></dt> -<dd><p>Each individual communication between Editor-in-charge -to and from Referees and Authors becomes an instance of this class.</p> -</dd></dl> - -<dl class="class"> -<dt id="submissions.models.RefereeInvitation"> -<em class="property">class </em><code class="descclassname">submissions.models.</code><code class="descname">RefereeInvitation</code><span class="sig-paren">(</span><em>id</em>, <em>submission</em>, <em>referee</em>, <em>title</em>, <em>first_name</em>, <em>last_name</em>, <em>email_address</em>, <em>invitation_key</em>, <em>date_invited</em>, <em>invited_by</em>, <em>nr_reminders</em>, <em>date_last_reminded</em>, <em>accepted</em>, <em>date_responded</em>, <em>refusal_reason</em>, <em>fulfilled</em>, <em>cancelled</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/models.html#RefereeInvitation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.models.RefereeInvitation" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<dl class="class"> -<dt id="submissions.models.Report"> -<em class="property">class </em><code class="descclassname">submissions.models.</code><code class="descname">Report</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/models.html#Report"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.models.Report" title="Permalink to this definition">¶</a></dt> -<dd><p>Both types of reports, invited or contributed.</p> -</dd></dl> - -<dl class="class"> -<dt id="submissions.models.Submission"> -<em class="property">class </em><code class="descclassname">submissions.models.</code><code class="descname">Submission</code><span class="sig-paren">(</span><em>id</em>, <em>is_current</em>, <em>is_resubmission</em>, <em>submitted_by</em>, <em>editor_in_charge</em>, <em>submitted_to_journal</em>, <em>submission_type</em>, <em>discipline</em>, <em>domain</em>, <em>subject_area</em>, <em>secondary_areas</em>, <em>status</em>, <em>author_comments</em>, <em>list_of_changes</em>, <em>remarks_for_editors</em>, <em>referees_suggested</em>, <em>referees_flagged</em>, <em>open_for_reporting</em>, <em>reporting_deadline</em>, <em>open_for_commenting</em>, <em>title</em>, <em>author_list</em>, <em>abstract</em>, <em>arxiv_identifier_w_vn_nr</em>, <em>arxiv_identifier_wo_vn_nr</em>, <em>arxiv_vn_nr</em>, <em>arxiv_link</em>, <em>metadata</em>, <em>submission_date</em>, <em>latest_activity</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/models.html#Submission"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.models.Submission" title="Permalink to this definition">¶</a></dt> -<dd></dd></dl> - -<span class="target" id="module-theses.models"></span><dl class="class"> -<dt id="theses.models.ThesisLink"> -<em class="property">class </em><code class="descclassname">theses.models.</code><code class="descname">ThesisLink</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/theses/models.html#ThesisLink"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#theses.models.ThesisLink" title="Permalink to this definition">¶</a></dt> -<dd><p>An URL pointing to a thesis</p> -</dd></dl> - -</div> - - - </div> - </div> - <footer> - - <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - - <a href="views.html" class="btn btn-neutral float-right" title="Views" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a> - - - <a href="../index.html" class="btn btn-neutral" title="Welcome to SciPost’s documentation!" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> - - </div> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../_static/jquery.js"></script> - <script type="text/javascript" src="../_static/underscore.js"></script> - <script type="text/javascript" src="../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/modules/views.html b/docs/_build/html/modules/views.html deleted file mode 100644 index 3ca5170a024a00fef1239e9a31661a621be43926..0000000000000000000000000000000000000000 --- a/docs/_build/html/modules/views.html +++ /dev/null @@ -1,522 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>Views — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="../genindex.html"/> - <link rel="search" title="Search" href="../search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="../index.html"/> - <link rel="prev" title="Models" href="models.html"/> - - - <script src="../_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="../index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul class="current"> -<li class="toctree-l1"><a class="reference internal" href="models.html">Models</a></li> -<li class="toctree-l1 current"><a class="current reference internal" href="#">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="../index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="../index.html">Docs</a> »</li> - - <li>Views</li> - <li class="wy-breadcrumbs-aside"> - - - <a href="../_sources/modules/views.txt" rel="nofollow"> View page source</a> - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <div class="section" id="module-scipost.views"> -<span id="views"></span><h1>Views<a class="headerlink" href="#module-scipost.views" title="Permalink to this headline">¶</a></h1> -<dl class="function"> -<dt id="scipost.views.activation"> -<code class="descclassname">scipost.views.</code><code class="descname">activation</code><span class="sig-paren">(</span><em>request</em>, <em>key</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#activation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.activation" title="Permalink to this definition">¶</a></dt> -<dd><p>After registration, an email verification link is sent. -Once clicked, the account is activated.</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.api_graph"> -<code class="descclassname">scipost.views.</code><code class="descname">api_graph</code><span class="sig-paren">(</span><em>request</em>, <em>graph_id</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#api_graph"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.api_graph" title="Permalink to this definition">¶</a></dt> -<dd><p>Produce JSON data to plot graph</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.base"> -<code class="descclassname">scipost.views.</code><code class="descname">base</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#base"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.base" title="Permalink to this definition">¶</a></dt> -<dd><p>Skeleton for pages, used in template inheritance</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.claim_authorships"> -<code class="descclassname">scipost.views.</code><code class="descname">claim_authorships</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#claim_authorships"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.claim_authorships" title="Permalink to this definition">¶</a></dt> -<dd><p>The system auto-detects potential authorships (of submissions, -papers subject to commentaries, theses, ...). -The contributor must confirm/deny authorship from the -Personal Page.</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.contributor_info"> -<code class="descclassname">scipost.views.</code><code class="descname">contributor_info</code><span class="sig-paren">(</span><em>request</em>, <em>contributor_id</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#contributor_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.contributor_info" title="Permalink to this definition">¶</a></dt> -<dd><p>Logged-in Contributors can see a digest of another -Contributor’s activities/contributions by clicking -on the relevant name (in listing headers of Submissions, ...).</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.documentsSearchResults"> -<code class="descclassname">scipost.views.</code><code class="descname">documentsSearchResults</code><span class="sig-paren">(</span><em>query</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#documentsSearchResults"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.documentsSearchResults" title="Permalink to this definition">¶</a></dt> -<dd><p>Searches through commentaries, submissions and thesislinks. -Returns a Context object which can be further used in templates. -Naive implementation based on exact match of query. -NEEDS UPDATING with e.g. Haystack.</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.email_group_members"> -<code class="descclassname">scipost.views.</code><code class="descname">email_group_members</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#email_group_members"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.email_group_members" title="Permalink to this definition">¶</a></dt> -<dd><p>Method to send bulk emails to (members of) selected groups</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.email_particular"> -<code class="descclassname">scipost.views.</code><code class="descname">email_particular</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#email_particular"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.email_particular" title="Permalink to this definition">¶</a></dt> -<dd><p>Method to send emails to individuals (registered or not)</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.get_query"> -<code class="descclassname">scipost.views.</code><code class="descname">get_query</code><span class="sig-paren">(</span><em>query_string</em>, <em>search_fields</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#get_query"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.get_query" title="Permalink to this definition">¶</a></dt> -<dd><p>Returns a query, namely a combination of Q objects.</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.index"> -<code class="descclassname">scipost.views.</code><code class="descname">index</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.index" title="Permalink to this definition">¶</a></dt> -<dd><p>Main page</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.invitation"> -<code class="descclassname">scipost.views.</code><code class="descname">invitation</code><span class="sig-paren">(</span><em>request</em>, <em>key</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#invitation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.invitation" title="Permalink to this definition">¶</a></dt> -<dd><p>Register, by invitation</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.mark_reg_inv_as_declined"> -<code class="descclassname">scipost.views.</code><code class="descname">mark_reg_inv_as_declined</code><span class="sig-paren">(</span><em>request</em>, <em>invitation_id</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#mark_reg_inv_as_declined"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.mark_reg_inv_as_declined" title="Permalink to this definition">¶</a></dt> -<dd><p>Mark an invitation as declined (called from registration_invitations.html).</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.normalize_query"> -<code class="descclassname">scipost.views.</code><code class="descname">normalize_query</code><span class="sig-paren">(</span><em>query_string</em>, <em>findterms=<built-in method findall of _sre.SRE_Pattern object></em>, <em>normspace=<built-in method sub of _sre.SRE_Pattern object></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#normalize_query"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.normalize_query" title="Permalink to this definition">¶</a></dt> -<dd><p>Splits a query string in individual keywords, keeping quoted words together.</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.personal_page"> -<code class="descclassname">scipost.views.</code><code class="descname">personal_page</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#personal_page"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.personal_page" title="Permalink to this definition">¶</a></dt> -<dd><p>The Personal Page is the main view for accessing user functions.</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.registration_invitations"> -<code class="descclassname">scipost.views.</code><code class="descname">registration_invitations</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#registration_invitations"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.registration_invitations" title="Permalink to this definition">¶</a></dt> -<dd><p>Overview and tools for administrators</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.registration_invitations_cleanup"> -<code class="descclassname">scipost.views.</code><code class="descname">registration_invitations_cleanup</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#registration_invitations_cleanup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.registration_invitations_cleanup" title="Permalink to this definition">¶</a></dt> -<dd><p>Compares the email addresses of invitations with those in the -database of registered Contributors. Flags overlaps.</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.remove_registration_invitation"> -<code class="descclassname">scipost.views.</code><code class="descname">remove_registration_invitation</code><span class="sig-paren">(</span><em>request</em>, <em>invitation_id</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#remove_registration_invitation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.remove_registration_invitation" title="Permalink to this definition">¶</a></dt> -<dd><p>Remove an invitation (called from registration_invitations_cleanup).</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.renew_registration_invitation"> -<code class="descclassname">scipost.views.</code><code class="descname">renew_registration_invitation</code><span class="sig-paren">(</span><em>request</em>, <em>invitation_id</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#renew_registration_invitation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.renew_registration_invitation" title="Permalink to this definition">¶</a></dt> -<dd><p>Renew an invitation (called from registration_invitations).</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.search"> -<code class="descclassname">scipost.views.</code><code class="descname">search</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#search"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.search" title="Permalink to this definition">¶</a></dt> -<dd><p>For the global search form in navbar</p> -</dd></dl> - -<dl class="function"> -<dt id="scipost.views.send_precooked_email"> -<code class="descclassname">scipost.views.</code><code class="descname">send_precooked_email</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/scipost/views.html#send_precooked_email"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#scipost.views.send_precooked_email" title="Permalink to this definition">¶</a></dt> -<dd><p>Method to send precooked emails to individuals (registered or not)</p> -</dd></dl> - -<span class="target" id="module-journals.views"></span><dl class="function"> -<dt id="journals.views.add_author"> -<code class="descclassname">journals.views.</code><code class="descname">add_author</code><span class="sig-paren">(</span><em>request</em>, <em>publication_id</em>, <em>contributor_id=None</em>, <em>unregistered_author_id=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/views.html#add_author"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.views.add_author" title="Permalink to this definition">¶</a></dt> -<dd><p>If not all authors are registered Contributors or if they have not -all claimed authorship, this method allows editorial administrators -to associated them to the publication. -This is important for the Crossref metadata, in which all authors must appear.</p> -</dd></dl> - -<dl class="function"> -<dt id="journals.views.create_citation_list_metadata"> -<code class="descclassname">journals.views.</code><code class="descname">create_citation_list_metadata</code><span class="sig-paren">(</span><em>request</em>, <em>doi_string</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/views.html#create_citation_list_metadata"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.views.create_citation_list_metadata" title="Permalink to this definition">¶</a></dt> -<dd><p>Called by an Editorial Administrator. -This populates the citation_list dictionary entry -in the metadata field in a Publication instance.</p> -</dd></dl> - -<dl class="function"> -<dt id="journals.views.create_funding_info_metadata"> -<code class="descclassname">journals.views.</code><code class="descname">create_funding_info_metadata</code><span class="sig-paren">(</span><em>request</em>, <em>doi_string</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/views.html#create_funding_info_metadata"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.views.create_funding_info_metadata" title="Permalink to this definition">¶</a></dt> -<dd><p>Called by an Editorial Administrator. -This populates the funding_info dictionary entry -in the metadata field in a Publication instance.</p> -</dd></dl> - -<dl class="function"> -<dt id="journals.views.create_metadata_xml"> -<code class="descclassname">journals.views.</code><code class="descname">create_metadata_xml</code><span class="sig-paren">(</span><em>request</em>, <em>doi_string</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/views.html#create_metadata_xml"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.views.create_metadata_xml" title="Permalink to this definition">¶</a></dt> -<dd><p>To be called by an EdAdmin after the citation_list, -funding_info entries have been filled. -Populates the metadata_xml field of a Publication instance. -The contents can then be sent to Crossref for registration.</p> -</dd></dl> - -<dl class="function"> -<dt id="journals.views.initiate_publication"> -<code class="descclassname">journals.views.</code><code class="descname">initiate_publication</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/views.html#initiate_publication"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.views.initiate_publication" title="Permalink to this definition">¶</a></dt> -<dd><p>Called by an Editorial Administrator. -Publish the manuscript after proofs have been accepted. -This method prefills a ValidatePublicationForm for further -processing (verification in validate_publication method).</p> -</dd></dl> - -<dl class="function"> -<dt id="journals.views.metadata_xml_deposit"> -<code class="descclassname">journals.views.</code><code class="descname">metadata_xml_deposit</code><span class="sig-paren">(</span><em>request</em>, <em>doi_string</em>, <em>option='test'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/views.html#metadata_xml_deposit"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.views.metadata_xml_deposit" title="Permalink to this definition">¶</a></dt> -<dd><p>Crossref metadata deposit. -If test==True, test the metadata_xml using the Crossref test server. -Makes use of the python requests module.</p> -</dd></dl> - -<dl class="function"> -<dt id="journals.views.scipost_physics_accepted"> -<code class="descclassname">journals.views.</code><code class="descname">scipost_physics_accepted</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/views.html#scipost_physics_accepted"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.views.scipost_physics_accepted" title="Permalink to this definition">¶</a></dt> -<dd><p>Display page for submissions to SciPost Physics which -have been accepted but are not yet published.</p> -</dd></dl> - -<dl class="function"> -<dt id="journals.views.scipost_physics_recent"> -<code class="descclassname">journals.views.</code><code class="descname">scipost_physics_recent</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/views.html#scipost_physics_recent"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.views.scipost_physics_recent" title="Permalink to this definition">¶</a></dt> -<dd><p>Display page for the most recent 20 publications in SciPost Physics.</p> -</dd></dl> - -<dl class="function"> -<dt id="journals.views.upload_proofs"> -<code class="descclassname">journals.views.</code><code class="descname">upload_proofs</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/views.html#upload_proofs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.views.upload_proofs" title="Permalink to this definition">¶</a></dt> -<dd><p>TODO -Called by a member of the Production Team. -Upload the production version .pdf of a submission.</p> -</dd></dl> - -<dl class="function"> -<dt id="journals.views.validate_publication"> -<code class="descclassname">journals.views.</code><code class="descname">validate_publication</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/journals/views.html#validate_publication"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#journals.views.validate_publication" title="Permalink to this definition">¶</a></dt> -<dd><p>This creates a Publication instance from the ValidatePublicationForm, -pre-filled by the initiate_publication method above.</p> -</dd></dl> - -<span class="target" id="module-comments.views"></span><span class="target" id="module-commentaries.views"></span><dl class="function"> -<dt id="commentaries.views.prefill_using_DOI"> -<code class="descclassname">commentaries.views.</code><code class="descname">prefill_using_DOI</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/commentaries/views.html#prefill_using_DOI"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#commentaries.views.prefill_using_DOI" title="Permalink to this definition">¶</a></dt> -<dd><p>Probes CrossRef API with the DOI, to pre-fill the form.</p> -</dd></dl> - -<dl class="function"> -<dt id="commentaries.views.prefill_using_identifier"> -<code class="descclassname">commentaries.views.</code><code class="descname">prefill_using_identifier</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/commentaries/views.html#prefill_using_identifier"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#commentaries.views.prefill_using_identifier" title="Permalink to this definition">¶</a></dt> -<dd><p>Probes arXiv with the identifier, to pre-fill the form.</p> -</dd></dl> - -<span class="target" id="module-submissions.views"></span><dl class="function"> -<dt id="submissions.views.assignment_failed"> -<code class="descclassname">submissions.views.</code><code class="descname">assignment_failed</code><span class="sig-paren">(</span><em>request</em>, <em>arxiv_identifier_w_vn_nr</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#assignment_failed"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.assignment_failed" title="Permalink to this definition">¶</a></dt> -<dd><p>No Editorial Fellow has accepted or volunteered to become Editor-in-charge. -The submission is rejected. -This method is called from pool.html by an Editorial Administrator.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.cancel_ref_invitation"> -<code class="descclassname">submissions.views.</code><code class="descname">cancel_ref_invitation</code><span class="sig-paren">(</span><em>request</em>, <em>arxiv_identifier_w_vn_nr</em>, <em>invitation_id</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#cancel_ref_invitation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.cancel_ref_invitation" title="Permalink to this definition">¶</a></dt> -<dd><p>This method is used by the Editor-in-charge from the editorial_page -to remove a referee for the list of invited ones. -It can be used for registered as well as unregistered referees.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.close_refereeing_round"> -<code class="descclassname">submissions.views.</code><code class="descname">close_refereeing_round</code><span class="sig-paren">(</span><em>request</em>, <em>arxiv_identifier_w_vn_nr</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#close_refereeing_round"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.close_refereeing_round" title="Permalink to this definition">¶</a></dt> -<dd><p>Called by the Editor-in-charge when a satisfactory number of -reports have been gathered. -Automatically emails the authors to ask them if they want to -round off any replies to reports or comments before the -editorial recommendation is formulated.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.communication"> -<code class="descclassname">submissions.views.</code><code class="descname">communication</code><span class="sig-paren">(</span><em>request</em>, <em>arxiv_identifier_w_vn_nr</em>, <em>comtype</em>, <em>referee_id=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#communication"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.communication" title="Permalink to this definition">¶</a></dt> -<dd><p>Communication between editor-in-charge, author or referee -occurring during the submission refereeing.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.editorial_workflow"> -<code class="descclassname">submissions.views.</code><code class="descname">editorial_workflow</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#editorial_workflow"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.editorial_workflow" title="Permalink to this definition">¶</a></dt> -<dd><p>Summary page for Editorial Fellows, containing a digest -of the actions to take to handle Submissions.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.fix_College_decision"> -<code class="descclassname">submissions.views.</code><code class="descname">fix_College_decision</code><span class="sig-paren">(</span><em>request</em>, <em>rec_id</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#fix_College_decision"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.fix_College_decision" title="Permalink to this definition">¶</a></dt> -<dd><p>Terminates the voting on a Recommendation. -Called by an Editorial Administrator.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.pool"> -<code class="descclassname">submissions.views.</code><code class="descname">pool</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#pool"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.pool" title="Permalink to this definition">¶</a></dt> -<dd><p>The Submissions pool contains all submissions which are undergoing -the editorial process, from submission -to publication acceptance or rejection. -All members of the Editorial College have access.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.recruit_referee"> -<code class="descclassname">submissions.views.</code><code class="descname">recruit_referee</code><span class="sig-paren">(</span><em>request</em>, <em>arxiv_identifier_w_vn_nr</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#recruit_referee"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.recruit_referee" title="Permalink to this definition">¶</a></dt> -<dd><p>If the Editor-in-charge does not find the desired referee among Contributors -(otherwise, the method send_refereeing_invitation below is used instead), -he/she can invite somebody by providing name + contact details. -This function emails a registration invitation to this person. -The pending refereeing invitation is then recognized upon registration, -using the invitation token.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.ref_invitation_reminder"> -<code class="descclassname">submissions.views.</code><code class="descname">ref_invitation_reminder</code><span class="sig-paren">(</span><em>request</em>, <em>arxiv_identifier_w_vn_nr</em>, <em>invitation_id</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#ref_invitation_reminder"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.ref_invitation_reminder" title="Permalink to this definition">¶</a></dt> -<dd><p>This method is used by the Editor-in-charge from the editorial_page -when a referee has been invited but hasn’t answered yet. -It can be used for registered as well as unregistered referees.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.send_refereeing_invitation"> -<code class="descclassname">submissions.views.</code><code class="descname">send_refereeing_invitation</code><span class="sig-paren">(</span><em>request</em>, <em>arxiv_identifier_w_vn_nr</em>, <em>contributor_id</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#send_refereeing_invitation"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.send_refereeing_invitation" title="Permalink to this definition">¶</a></dt> -<dd><p>This method is called by the EIC from the submission’s editorial_page, -in the case where the referee is an identified Contributor. -For a referee who isn’t a Contributor yet, the method recruit_referee above -is called instead.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.submissions"> -<code class="descclassname">submissions.views.</code><code class="descname">submissions</code><span class="sig-paren">(</span><em>request</em>, <em>to_journal=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#submissions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.submissions" title="Permalink to this definition">¶</a></dt> -<dd><p>Main method for viewing Submissions.</p> -</dd></dl> - -<dl class="function"> -<dt id="submissions.views.volunteer_as_EIC"> -<code class="descclassname">submissions.views.</code><code class="descname">volunteer_as_EIC</code><span class="sig-paren">(</span><em>request</em>, <em>arxiv_identifier_w_vn_nr</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/submissions/views.html#volunteer_as_EIC"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#submissions.views.volunteer_as_EIC" title="Permalink to this definition">¶</a></dt> -<dd><p>Called when a Fellow volunteers while perusing the submissions pool. -This is an adapted version of the accept_or_decline_assignment_ack method.</p> -</dd></dl> - -<span class="target" id="module-theses.views"></span></div> - - - </div> - </div> - <footer> - - <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> - - - <a href="models.html" class="btn btn-neutral" title="Models" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a> - - </div> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="../_static/jquery.js"></script> - <script type="text/javascript" src="../_static/underscore.js"></script> - <script type="text/javascript" src="../_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="../_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv deleted file mode 100644 index 1bb1e0db757c291c2a48e29f5a9040f46d02b6c2..0000000000000000000000000000000000000000 Binary files a/docs/_build/html/objects.inv and /dev/null differ diff --git a/docs/_build/html/py-modindex.html b/docs/_build/html/py-modindex.html deleted file mode 100644 index 4b2fea650130acc7846179eff77f50587d99802d..0000000000000000000000000000000000000000 --- a/docs/_build/html/py-modindex.html +++ /dev/null @@ -1,314 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>Python Module Index — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="genindex.html"/> - <link rel="search" title="Search" href="search.html"/> - <link rel="top" title="SciPost 1.0 documentation" href="index.html"/> - - - - - - <script src="_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="index.html">Docs</a> »</li> - - <li></li> - <li class="wy-breadcrumbs-aside"> - - - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - - <h1>Python Module Index</h1> - - <div class="modindex-jumpbox"> - <a href="#cap-c"><strong>c</strong></a> | - <a href="#cap-j"><strong>j</strong></a> | - <a href="#cap-s"><strong>s</strong></a> | - <a href="#cap-t"><strong>t</strong></a> - </div> - - <table class="indextable modindextable" cellspacing="0" cellpadding="2"> - <tr class="pcap"><td></td><td> </td><td></td></tr> - <tr class="cap" id="cap-c"><td></td><td> - <strong>c</strong></td><td></td></tr> - <tr> - <td><img src="_static/minus.png" class="toggler" - id="toggle-1" style="display: none" alt="-" /></td> - <td> - <code class="xref">commentaries</code></td><td> - <em></em></td></tr> - <tr class="cg-1"> - <td></td> - <td>    - <a href="modules/models.html#module-commentaries.models"><code class="xref">commentaries.models</code></a></td><td> - <em></em></td></tr> - <tr class="cg-1"> - <td></td> - <td>    - <a href="modules/views.html#module-commentaries.views"><code class="xref">commentaries.views</code></a></td><td> - <em></em></td></tr> - <tr> - <td><img src="_static/minus.png" class="toggler" - id="toggle-2" style="display: none" alt="-" /></td> - <td> - <code class="xref">comments</code></td><td> - <em></em></td></tr> - <tr class="cg-2"> - <td></td> - <td>    - <a href="modules/models.html#module-comments.models"><code class="xref">comments.models</code></a></td><td> - <em></em></td></tr> - <tr class="cg-2"> - <td></td> - <td>    - <a href="modules/views.html#module-comments.views"><code class="xref">comments.views</code></a></td><td> - <em></em></td></tr> - <tr class="pcap"><td></td><td> </td><td></td></tr> - <tr class="cap" id="cap-j"><td></td><td> - <strong>j</strong></td><td></td></tr> - <tr> - <td><img src="_static/minus.png" class="toggler" - id="toggle-3" style="display: none" alt="-" /></td> - <td> - <code class="xref">journals</code></td><td> - <em></em></td></tr> - <tr class="cg-3"> - <td></td> - <td>    - <a href="modules/models.html#module-journals.models"><code class="xref">journals.models</code></a></td><td> - <em></em></td></tr> - <tr class="cg-3"> - <td></td> - <td>    - <a href="modules/views.html#module-journals.views"><code class="xref">journals.views</code></a></td><td> - <em></em></td></tr> - <tr class="pcap"><td></td><td> </td><td></td></tr> - <tr class="cap" id="cap-s"><td></td><td> - <strong>s</strong></td><td></td></tr> - <tr> - <td><img src="_static/minus.png" class="toggler" - id="toggle-4" style="display: none" alt="-" /></td> - <td> - <code class="xref">scipost</code></td><td> - <em></em></td></tr> - <tr class="cg-4"> - <td></td> - <td>    - <a href="modules/models.html#module-scipost.models"><code class="xref">scipost.models</code></a></td><td> - <em></em></td></tr> - <tr class="cg-4"> - <td></td> - <td>    - <a href="modules/views.html#module-scipost.views"><code class="xref">scipost.views</code></a></td><td> - <em></em></td></tr> - <tr> - <td><img src="_static/minus.png" class="toggler" - id="toggle-5" style="display: none" alt="-" /></td> - <td> - <code class="xref">submissions</code></td><td> - <em></em></td></tr> - <tr class="cg-5"> - <td></td> - <td>    - <a href="modules/models.html#module-submissions.models"><code class="xref">submissions.models</code></a></td><td> - <em></em></td></tr> - <tr class="cg-5"> - <td></td> - <td>    - <a href="modules/views.html#module-submissions.views"><code class="xref">submissions.views</code></a></td><td> - <em></em></td></tr> - <tr class="pcap"><td></td><td> </td><td></td></tr> - <tr class="cap" id="cap-t"><td></td><td> - <strong>t</strong></td><td></td></tr> - <tr> - <td><img src="_static/minus.png" class="toggler" - id="toggle-6" style="display: none" alt="-" /></td> - <td> - <code class="xref">theses</code></td><td> - <em></em></td></tr> - <tr class="cg-6"> - <td></td> - <td>    - <a href="modules/models.html#module-theses.models"><code class="xref">theses.models</code></a></td><td> - <em></em></td></tr> - <tr class="cg-6"> - <td></td> - <td>    - <a href="modules/views.html#module-theses.views"><code class="xref">theses.views</code></a></td><td> - <em></em></td></tr> - </table> - - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'./', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - - - - - - <script type="text/javascript" src="_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html deleted file mode 100644 index 7c63216f448fa84986018bcc4e4a17fb0911e669..0000000000000000000000000000000000000000 --- a/docs/_build/html/search.html +++ /dev/null @@ -1,209 +0,0 @@ - - -<!DOCTYPE html> -<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> -<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> -<head> - <meta charset="utf-8"> - - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - - <title>Search — SciPost 1.0 documentation</title> - - - - - - - - - - - - - - - - <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> - - - - - - <link rel="index" title="Index" - href="genindex.html"/> - <link rel="search" title="Search" href="#"/> - <link rel="top" title="SciPost 1.0 documentation" href="index.html"/> - - - <script src="_static/js/modernizr.min.js"></script> - -</head> - -<body class="wy-body-for-nav" role="document"> - - <div class="wy-grid-for-nav"> - - - <nav data-toggle="wy-nav-shift" class="wy-nav-side"> - <div class="wy-side-scroll"> - <div class="wy-side-nav-search"> - - - - <a href="index.html" class="icon icon-home"> SciPost - - - - </a> - - - - - <div class="version"> - 1.0 - </div> - - - - -<div role="search"> - <form id="rtd-search-form" class="wy-form" action="#" method="get"> - <input type="text" name="q" placeholder="Search docs" /> - <input type="hidden" name="check_keywords" value="yes" /> - <input type="hidden" name="area" value="default" /> - </form> -</div> - - - </div> - - <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> - - - - <ul> -<li class="toctree-l1"><a class="reference internal" href="modules/models.html">Models</a></li> -<li class="toctree-l1"><a class="reference internal" href="modules/views.html">Views</a></li> -</ul> - - - - </div> - </div> - </nav> - - <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> - - - <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> - <i data-toggle="wy-nav-top" class="fa fa-bars"></i> - <a href="index.html">SciPost</a> - </nav> - - - - <div class="wy-nav-content"> - <div class="rst-content"> - - - - - - -<div role="navigation" aria-label="breadcrumbs navigation"> - <ul class="wy-breadcrumbs"> - <li><a href="index.html">Docs</a> »</li> - - <li></li> - <li class="wy-breadcrumbs-aside"> - - </li> - </ul> - <hr/> -</div> - <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> - <div itemprop="articleBody"> - - <noscript> - <div id="fallback" class="admonition warning"> - <p class="last"> - Please activate JavaScript to enable the search - functionality. - </p> - </div> - </noscript> - - - <div id="search-results"> - - </div> - - </div> - </div> - <footer> - - - <hr/> - - <div role="contentinfo"> - <p> - © Copyright 2016, Jean-Sébastien Caux. - - </p> - </div> - Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. - -</footer> - - </div> - </div> - - </section> - - </div> - - - - - - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'./', - VERSION:'1.0', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true - }; - </script> - <script type="text/javascript" src="_static/jquery.js"></script> - <script type="text/javascript" src="_static/underscore.js"></script> - <script type="text/javascript" src="_static/doctools.js"></script> - <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> - <script type="text/javascript" src="_static/searchtools.js"></script> - - - - - - <script type="text/javascript" src="_static/js/theme.js"></script> - - - - - <script type="text/javascript"> - jQuery(function () { - SphinxRtdTheme.StickyNav.enable(); - }); - </script> - - <script type="text/javascript"> - jQuery(function() { Search.loadIndex("searchindex.js"); }); - </script> - - <script type="text/javascript" id="searchindexloader"></script> - - - -</body> -</html> \ No newline at end of file diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js deleted file mode 100644 index d8cbf55fd5dddf18f945cb7c894c0db1e262ec0e..0000000000000000000000000000000000000000 --- a/docs/_build/html/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({envversion:50,filenames:["index","modules/models","modules/views"],objects:{"commentaries.models":{Commentary:[1,1,1,""]},"commentaries.models.Commentary":{parse_links_into_urls:[1,2,1,""],scipost_url:[1,2,1,""],scipost_url_full:[1,2,1,""]},"commentaries.views":{prefill_using_DOI:[2,3,1,""],prefill_using_identifier:[2,3,1,""]},"comments.models":{Comment:[1,1,1,""]},"journals.models":{Deposit:[1,1,1,""],Issue:[1,1,1,""],Journal:[1,1,1,""],Publication:[1,1,1,""],UnregisteredAuthor:[1,1,1,""],Volume:[1,1,1,""]},"journals.models.Publication":{details:[1,2,1,""]},"journals.views":{add_author:[2,3,1,""],create_citation_list_metadata:[2,3,1,""],create_funding_info_metadata:[2,3,1,""],create_metadata_xml:[2,3,1,""],initiate_publication:[2,3,1,""],metadata_xml_deposit:[2,3,1,""],scipost_physics_accepted:[2,3,1,""],scipost_physics_recent:[2,3,1,""],upload_proofs:[2,3,1,""],validate_publication:[2,3,1,""]},"scipost.models":{AffiliationObject:[1,1,1,""],Arc:[1,1,1,""],AuthorshipClaim:[1,1,1,""],ChoiceArrayField:[1,1,1,""],Contributor:[1,1,1,""],Graph:[1,1,1,""],List:[1,1,1,""],NewsItem:[1,1,1,""],Node:[1,1,1,""],PrecookedEmail:[1,1,1,""],RegistrationInvitation:[1,1,1,""],Remark:[1,1,1,""],SPBMembershipAgreement:[1,1,1,""],SupportingPartner:[1,1,1,""],Team:[1,1,1,""],UnavailabilityPeriod:[1,1,1,""]},"scipost.models.Contributor":{public_info_as_table:[1,2,1,""]},"scipost.models.NewsItem":{descriptor_full:[1,2,1,""],descriptor_small:[1,2,1,""]},"scipost.views":{activation:[2,3,1,""],api_graph:[2,3,1,""],base:[2,3,1,""],claim_authorships:[2,3,1,""],contributor_info:[2,3,1,""],documentsSearchResults:[2,3,1,""],email_group_members:[2,3,1,""],email_particular:[2,3,1,""],get_query:[2,3,1,""],index:[2,3,1,""],invitation:[2,3,1,""],mark_reg_inv_as_declined:[2,3,1,""],normalize_query:[2,3,1,""],personal_page:[2,3,1,""],registration_invitations:[2,3,1,""],registration_invitations_cleanup:[2,3,1,""],remove_registration_invitation:[2,3,1,""],renew_registration_invitation:[2,3,1,""],search:[2,3,1,""],send_precooked_email:[2,3,1,""]},"submissions.models":{EICRecommendation:[1,1,1,""],EditorialAssignment:[1,1,1,""],EditorialCommunication:[1,1,1,""],RefereeInvitation:[1,1,1,""],Report:[1,1,1,""],Submission:[1,1,1,""]},"submissions.models.EditorialAssignment":{header_as_li:[1,2,1,""]},"submissions.views":{assignment_failed:[2,3,1,""],cancel_ref_invitation:[2,3,1,""],close_refereeing_round:[2,3,1,""],communication:[2,3,1,""],editorial_workflow:[2,3,1,""],fix_College_decision:[2,3,1,""],pool:[2,3,1,""],recruit_referee:[2,3,1,""],ref_invitation_reminder:[2,3,1,""],send_refereeing_invitation:[2,3,1,""],submissions:[2,3,1,""],volunteer_as_EIC:[2,3,1,""]},"theses.models":{ThesisLink:[1,1,1,""]},commentaries:{models:[1,0,0,"-"],views:[2,0,0,"-"]},comments:{models:[1,0,0,"-"],views:[2,0,0,"-"]},journals:{models:[1,0,0,"-"],views:[2,0,0,"-"]},scipost:{models:[1,0,0,"-"],views:[2,0,0,"-"]},submissions:{models:[1,0,0,"-"],views:[2,0,0,"-"]},theses:{models:[1,0,0,"-"],views:[2,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function"},terms:{"abstract":1,"case":2,"class":1,"function":2,"import":2,"new":1,"public":[1,2],"return":[1,2],"true":2,"while":2,_sre:2,abov:[1,2],accept:[1,2],accept_or_decline_assignment_ack:2,acceptance_d:1,accepted_submiss:1,access:[1,2],accessibl:1,account:2,action:2,activ:2,adapt:2,add_author:2,address:2,adjust:1,admin:1,administr:2,affiliationobject:1,after:2,agreement:1,all:[1,2],allow:[1,2],among:2,ani:2,anoth:2,answer:2,api:2,api_graph:2,appear:2,arc:1,arg:1,arrai:1,arrayfield:1,arrow:1,arxiv:[1,2],arxiv_identifier_w_vn_nr:[1,2],arxiv_identifier_wo_vn_nr:1,arxiv_link:1,arxiv_vn_nr:1,ask:2,assignment_fail:2,associ:2,author:[1,2],author_com:1,author_list:1,authorship:2,authorshipclaim:1,auto:2,automat:2,base:2,base_field:1,becom:[1,2],been:2,befor:2,below:2,between:[1,2],bibtex_entri:1,blurb:1,board:1,both:1,built:2,bulk:2,call:[1,2],can:[1,2],cancel:1,cancel_ref_invit:2,charg:[1,2],choic:1,choicearrayfield:1,citation_list:2,citedbi:1,claim:2,claim_authorship:2,claimant:1,click:2,close_refereeing_round:2,collabor:1,collect:1,colleg:2,combin:2,comment:[1,2],commentari:[1,2],commun:[1,2],compar:2,complet:1,compos:1,comtyp:2,confirm:2,contact:2,contain:[1,2],content:[0,1,2],context:2,contribut:[1,2],contributor:[1,2],contributor_id:2,contributor_info:2,countri:1,creat:[1,2],create_citation_list_metadata:2,create_funding_info_metadata:2,create_metadata_xml:2,crossref:[1,2],current:1,data:2,databas:2,date:1,date_answ:1,date_cr:1,date_invit:1,date_last_remind:1,date_respond:1,date_submit:1,declin:2,defin:1,deni:2,deposit:[1,2],deprec:1,descriptor_ful:1,descriptor_smal:1,desir:2,detail:[1,2],detect:2,determin:1,dictionari:2,digest:2,direct:1,disciplin:1,displai:2,django:1,documentssearchresult:2,doe:2,doi:[1,2],doi_label:1,doi_str:[1,2],domain:1,dure:2,each:1,earlier:1,edadmin:2,edit:1,editor:[1,2],editor_in_charg:1,editori:[1,2],editorial_pag:2,editorial_workflow:2,editorialassign:1,editorialcommun:1,eic:2,eicrecommend:1,email:[1,2],email_address:1,email_group_memb:2,email_particular:2,enabl:1,end:1,entri:2,etc:1,exact:2,explor:1,fellow:2,field:[1,2],fill:2,find:2,findal:2,findterm:2,first_author:1,first_author_unregist:1,first_nam:1,fix_college_decis:2,flag:2,followup_link:1,followup_link_text:1,foreignkei:1,form:2,format:1,formfield:1,formul:2,from:[1,2],fulfil:1,funding_info:2,further:[1,2],gather:2,get_queri:2,given:1,global:2,graph:[1,2],graph_id:2,group:2,handl:2,hasn:2,have:2,haystack:2,header:2,header_as_li:1,headlin:1,here:1,histori:1,html:[1,2],identifi:2,implement:2,in_issu:1,in_journ:1,in_volum:1,index:[0,1,2],individu:[1,2],info:1,inherit:[1,2],initiate_publ:2,instanc:[1,2],instead:2,institut:1,invit:[1,2],invitat:1,invitation_id:2,invitation_kei:1,invited_bi:1,is_curr:1,is_resubmiss:1,isn:2,issn:1,issue:1,journal:[1,2],json:2,keep:2,kei:2,keyword:2,kwarg:1,last_nam:1,latest_act:1,length:1,link:[1,2],list:[1,2],list_of_chang:1,log:2,made:1,main:2,make:2,manuscript:2,mark:2,mark_reg_inv_as_declin:2,match:2,member:2,membership:1,metadata:[1,2],metadata_xml:[1,2],metadata_xml_deposit:2,method:[1,2],model:[],modul:[0,2],most:2,multiplechoicefield:1,must:2,naiv:2,name:[1,2],navbar:2,needs:2,newsitem:1,node:1,none:[1,2],normalize_queri:2,normspac:2,note:1,nr_remind:1,number:[1,2],object:[1,2],occur:2,off:2,once:2,onli:1,open_for_com:1,open_for_report:1,option:2,otherwis:2,out:1,overlap:2,overview:2,page:[0,1,2],paper:2,paper_nr:1,parse_links_into_url:1,particular:1,partner:1,password:1,path:1,pdf:2,pdf_file:1,pend:2,permiss:1,person:[1,2],personal_pag:2,perus:2,physic:2,plain:1,plot:2,point:1,pool:2,popul:2,postgr:1,potenti:2,pre:2,precook:2,precookedemail:1,prefil:2,prefill_using_doi:2,prefill_using_identifi:2,print:1,privat:1,probe:2,process:2,produc:2,product:2,proof:2,provid:[1,2],public_info_as_t:1,publication_d:1,publication_detail:1,publication_id:2,publicli:1,publish:2,python:2,queri:2,query_str:2,quot:2,read:1,rec_id:2,recent:2,recogn:2,recommend:[1,2],recruit_refere:2,ref_invitation_remind:2,refere:[1,2],referee_id:2,refereeinvit:1,referees_flag:1,referees_suggest:1,refusal_reason:1,regist:2,registr:[1,2],registration_invit:2,registration_invitations_cleanup:2,registrationinvit:1,reject:2,relev:2,remark:1,remarks_for_author:1,remarks_for_editor:1,remarks_for_editorial_colleg:1,remov:2,remove_registration_invit:2,renew:[1,2],renew_registration_invit:2,repli:[1,2],report:[1,2],reporting_deadlin:1,repres:1,request:2,requested_chang:1,right:1,round:2,same:1,satisfactori:2,scipost_physics_accept:2,scipost_physics_rec:2,scipost_url:1,scipost_url_ful:1,search:[0,2],search_field:2,secondary_area:1,see:[1,2],select:2,send:2,send_precooked_email:[1,2],send_refereeing_invit:2,sent:2,server:2,set:1,she:2,size:1,skeleton:2,somebodi:2,sourc:[1,2],spbmembershipagr:1,split:2,sre_pattern:2,start:1,start_dat:1,statu:1,store:1,string:2,sub:[1,2],subject:2,subject_area:1,submiss:[1,2],submission_d:1,submission_typ:1,submit:1,submitted_bi:1,submitted_to_journ:1,subunit:1,summari:2,support:1,supportingpartn:1,system:2,take:[1,2],team:[1,2],teams_with_access:1,templat:[1,2],termin:2,test:2,thei:2,them:2,thesi:1,thesislink:[1,2],thi:[1,2],those:2,through:2,thu:1,time:1,titl:1,to_journ:2,todo:2,togeth:2,token:2,tool:2,turn:1,two:1,type:1,unavailabilityperiod:1,undergo:2,unregist:2,unregistered_author_id:2,unregisteredauthor:1,unsollicit:1,until_d:1,updating:2,upload:2,upload_proof:2,upon:2,url:1,use:1,user:[1,2],usernam:1,validate_publ:2,validatepublicationform:2,verif:2,version:[1,2],vetted_bi:1,view:[],volum:1,volunt:2,volunteer_as_eic:2,vote:2,voting_deadlin:1,want:2,well:2,when:2,where:2,which:2,who:2,without:1,word:2,yet:2},titles:["Welcome to SciPost’s documentation!","Models","Views"],titleterms:{document:0,indice:0,model:1,scipost:0,tabl:0,view:2,welcom:0}}) \ No newline at end of file diff --git a/docs/contributors/contributors.rst b/docs/contributors/contributors.rst new file mode 100644 index 0000000000000000000000000000000000000000..a8de5a00fe9861ad6ba1ed60d219b6d1eebba549 --- /dev/null +++ b/docs/contributors/contributors.rst @@ -0,0 +1,9 @@ +For Contributors +================ + + +.. toctree:: + :maxdepth: 2 + + editorial_fellows/editorial_fellows + editorial_administrators/editorial_administrators diff --git a/docs/contributors/editorial_administrators/editorial_administrators.rst b/docs/contributors/editorial_administrators/editorial_administrators.rst new file mode 100644 index 0000000000000000000000000000000000000000..33e054b533e1a4951058019a0f2644e8622f11cd --- /dev/null +++ b/docs/contributors/editorial_administrators/editorial_administrators.rst @@ -0,0 +1,10 @@ +Editorial Administrators +======================== + + +.. toctree:: + :maxdepth: 2 + + submission_processing + production + maintenance diff --git a/docs/contributors/editorial_administrators/maintenance.rst b/docs/contributors/editorial_administrators/maintenance.rst new file mode 100644 index 0000000000000000000000000000000000000000..ee7dc9e6f594a447dd3e25c5a95a5e3634fab86b --- /dev/null +++ b/docs/contributors/editorial_administrators/maintenance.rst @@ -0,0 +1,13 @@ +Maintenance of published material +================================= + +This guide is meant for **Editorial Administrators**. +It describes the post-publication maintenance of the published material. + + +Maintenance +----------- + + +Cited-by updates +~~~~~~~~~~~~~~~~ diff --git a/docs/contributors/editorial_administrators/production.rst b/docs/contributors/editorial_administrators/production.rst new file mode 100644 index 0000000000000000000000000000000000000000..2874996d45c72dd7fba5ddb77d7e20e440964d99 --- /dev/null +++ b/docs/contributors/editorial_administrators/production.rst @@ -0,0 +1,541 @@ +.. Howto for publication production + +Production of SciPost Publications +================================== + +This guide is meant for **Editorial Administrators** and **Production Officers**. It describes the post-acceptance workflow from paper acceptance to publication. + +Version: 2016-12-20. + + +Formatting check +---------------- + + If the Submission's references are not properly formatted, + and/or if these do not include the required DOIs, + the authors should be emailed and asked to do so, + by providing either the ``.bbl`` file or the ``.bib`` source. + + Any extra material provided by the authors which supplements + the arXiv source should be put in a folder ``EXTRA_FROM_AUTH``. + + +Source retrieval and folder preparation +--------------------------------------- + + #. On the SciPost server, navigate to folder + ``[Journal full name]/IN PRODUCTION``. + #. Create a folder + ``[journal abbrev. name]_[arxiv identifier]_[first author last name]``, + e.g. ``SciPost_Phys_1604.98141v3_Smart``. + #. Save the source from arXiv into this folder. + #. NOTE: the file will be named ``####.#####v#``, which is not recognized + as a ``.tar.gz`` file on a UNIX system. Rename the file + ``####.####v#.tar.gz``. Unzip it to produce the folder ``####.#####v#``. + #. Copy the paper’s sources one level down (so from ``####.#####v#`` to + the current directory). BE CAREFUL: if the authors have included any of + the SciPost style files (``SciPost.cls``, ``SciPost_bibstyle.bst``), DO NOT + copy those down. + #. Copy the files in + ``[Journal full name]/v##_production/FILES_TO_COPY_IN_PAPER_DIR`` + to the current directory. There are 5 files: + + * ``by.eps`` + * ``logo_scipost_with_bgd.pdf`` + * ``SciPost_bibstyle.bst`` + * ``SciPost.cls`` + * ``SciPost_Phys_Skeleton.tex`` + + #. Copy the skeleton ``.tex`` source to a new file using the name convention + ``[Journal abbrev. name]_####_#####v#_[first author last name].tex`` + (careful: use underscore instead of . between numbers). + + +LaTeX file preparation +---------------------- + + The next step is to transfer the submission's LaTeX contents into the final file. + + All steps involed appear in the skeleton ``.tex`` source in the form ``%%%%%%%%%% TODO: [TOKEN]`` opening marked, followed by a corresponding ``%%%%%%%%%% END TODO: [TOKEN]`` marker. + + The easiest way to proceed is to copy and paste material from the authors' ``.tex`` + source directly into the (appropriately renamed as per the instructions above) + skeleton file. + + During the file preparation, if there is anything worth noting about the + production process, please include this in the:: + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % Production Notes + % [your name here] + % + % [your notes here] + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + block at the beginning of the document, just before the ``\documentclass`` declaration. + + As the person running the production, please identify yourself by writing + your initials and surname in this block. + + +General LaTeX tips +~~~~~~~~~~~~~~~~~~ + + * Prefer the ``align`` (from package ``amsmath``) environment to ``eqnarray``. + For a technical discussion, see *e.g.* `this link <http://tug.org/TUGboat/tb33-1/tb103madsen.pdf>`_. + + You do **not** have to systematically replace all ``eqnarray`` with ``align``. + However, if you do reformat some equations, do shift to ``align``. + + +Step-by-step procedure +~~~~~~~~~~~~~~~~~~~~~~ + + #. TODO: PAPER CITATION 1 and 2 + + In these two places, fill the missing numbers in the citation header:: + + \rhead{\small \href{https://scipost.org/SciPostPhys.?.?.???}{SciPost Phys. ?, ??? (20??)}} + + + The first argument of the ``href`` is the simple permanent URL for the publication. This includes 3 numbers: the volume number, issue, and three-digit paper number, for example ``SciPostPhys.1.2.011``. At this stage, leave the paper number to ``???``: this number will be assigned and filled in in the last stage of production. + + The second argument to the ``href`` uses the simple citation, dropping the issue number, for example ``SciPostPhys. 1, 011 (2016)``. + + + #. TODO: PACKAGES + + The ``SciPost.cls`` (v1b) class definition requires the following packages: + + * amsmath [NOTE: amssymb is redundant and clashes with mathdesign] + * cite + * doi + * fancyhdr + * geometry + * graphicx + * hyperref + * inputenc + * lineno [for proofs only] + * titlesec + * tocloft, nottoc,notlot,notlof + * xcolor + + If the authors are using extra packages not already in the list above, + you should paste their list within this TODO block. + + Any package originally included by the authors which you do **not** + include should be commented out with a ``% REMOVED IN PROD`` + comments prepended. + + Any package which is added during production should be listed after + the ``% ADDED IN PRODUCTION`` marker. + + + #. TODO: COMMANDS + + If the authors have redefined commands, paste the redefinitions in this block. + + Discard (namely: do not copy and paste) any length (and similar) redefinitions. + + + #. TODO: TITLE + + The title is enclosed in:: + + \begin{center}{\Large \textbf{\color{scipostdeepblue}{ + [title] + }}}\end{center} + + Paste the title in this block. If the title is multiline, end it with ``\\`` + in order to ensure proper uniform spacing between the lines. + + + #. TODO: AUTHORS + + Put the author names in textbf. No ``comma`` but rather an ``and`` before + the last author. If multiple authors and affiliations, use ``\textsuperscript`` + and positive integer labels, with a ``*`` for the corresponding author. + + + #. TODO: AFFILIATIONS + + If there are many affiliations, each is prepended by the appropriate + ``{\bf [nr]}``. Separate affiliations with double-backslash. + + Put a ``\\[\baselineskip]`` after the affiliations. + + + #. TODO: EMAIL (OPTION) + + Optionally, provide the email of the corresponding author using:: + + ``\href{mailto:[email]}{\small \sf [email]}`` + + prepended with ``*`` if corresponding author. If no email is to be given, + comment out the ``* \href{mailto:[email]}{\small \sf [email]}`` line. + + If a web link is offered, use the format ``{\small \url{[url]}}``. + + + #. TODO: ABSTRACT + + Paste the abstract in the provided block:: + + \section*{\color{scipostdeepblue}{Abstract}} + {\bf + [abstract] + } + + + #. TODO: TOC + + As a general guideline, the paper should contain a table of contents + if it has more than 6 pages. + + If a TOC should be included, leave the skeleton as it is. If no TOC + should be there, simply comment out the lines:: + + \vspace{10pt} + \noindent\rule{\textwidth}{1pt} + \tableofcontents\thispagestyle{fancy} + \noindent\rule{\textwidth}{1pt} + \vspace{10pt} + + + #. TODO: COPYRIGHT + + Include the first author's initials and family name in the copyright + statement. If there are just two authors: give both authors' initials + and last names. If there are more than two authors, use the format + ``A. Bee {\it et al.}``. Be respectful of any special (non-latin) + characters in authors' names. + + + #. TODO: DATES + + Fill in the appropriate received and accepted dates in + format ``DD-MM-YYYY``. Be careful to use the correct submission data, + namely that of the original submission. + + The published date will be filled in later on. + + + #. TODO: DOI + + Provide the volume and issue numbers (two places) in the DOI specifier. + The paper number will be assigned in the final stage of production. + + + #. TODO: LINENO + + During proofs stage, activate line numbers. + + + #. TODO: CONTENTS + + Paste the entire bulk of the paper in this block, + including all sections and eventual appendices. + + + #. TODO: BIBNR + + If the bibliography contains more than 100 entries, use + ``999`` instead of ``99`` in the ``\begin{thebibliotraphy}{[nr]}`` + statement. + + + #. TODO: BBL + + The references are explicitly pasted into this block. + + If using BiBTeX, use a ``\bibliography{[bibfilename]}`` command, + and comment out the ``\begin{thebibliography}`` and ``\end{thebibliography}`` + commands. After running BiBTeX, the contents of the generated + ``.bib`` file should be pasted in the uncommented ``\begin,\end{thebibliography}`` + block, and the ``\bibliography{[bibfilename]}`` should be commented out. + + *Note: the reason to not use BiBTeX from now on is to easy in-file + correction of improperly formatted references (instead of having to correct + the ``.bib`` file)*. + + + **You are now ready to typeset the ``.tex`` file**. Simple issues are listed + below. If you encounter further problems, see the **Problems** list below. + + If you need to run BiBTeX for the references, do so (remembering to do it + at least twice so the references appear), and then paste the contents of the + ``.bbl`` file in the ``% TODO: REFERENCES`` block. **Make sure you use the + correct** ``.bib`` **file**. + + + + +Simple issues +~~~~~~~~~~~~~ + + * *LaTeX Error: environment acknowledgements undefined* or + *Undefined control sequence \acknowledgements* + + The users have used ReVTeX; simply change the ``\begin{acknowledgements}`` + or ``\acknowledgements`` + to ``\section*{Acknowledgements}`` (of course also removing any eventual + ``\end{acknowledgements}``). + + + * *LaTeX Error: Environment widetext undefined.* + + The authors have used ReVTeX; simply comment out all ``\begin{widetext}`` + and ``\end{widetext}`` markers. + + +Problems +~~~~~~~~ + + * package ``lineno`` and ``amsmath`` are incompatible + + Problem: line numbers don't appear when paragraph is followed by align etc. + + Solution: [from `this link <http://phaseportrait.blogspot.nl/2007/08/lineno-and-amsmath-compatibility.html>`_]: paste this in the preamble:: + + %% Patch lineno when used with amsmath + \newcommand*\patchAmsMathEnvironmentForLineno[1]{% + \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname + \expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname + \renewenvironment{#1}% + {\linenomath\csname old#1\endcsname}% + {\csname oldend#1\endcsname\endlinenomath}}% + \newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{% + \patchAmsMathEnvironmentForLineno{#1}% + \patchAmsMathEnvironmentForLineno{#1*}}% + \AtBeginDocument{% + \patchBothAmsMathEnvironmentsForLineno{equation}% + \patchBothAmsMathEnvironmentsForLineno{align}% + \patchBothAmsMathEnvironmentsForLineno{flalign}% + \patchBothAmsMathEnvironmentsForLineno{alignat}% + \patchBothAmsMathEnvironmentsForLineno{gather}% + \patchBothAmsMathEnvironmentsForLineno{multline}% + } + %% End patch lineno + + + * Breaking of in-line math equations + + Simply prevent by forcing equations into a math atom by surrouding them with braces,:: + + Here is an equation that should not be broken: ${E=mc^2}$. + + + * package ``MnSymbol`` is problematic and clashes with amsmath. + + One solution is to import individual symbols according to these + `instructions <http://tex.stackexchange.com/questions/36006/importing-single-symbol-from-mnsymbol>`_. + + + * Equations spacing in ``align`` environment is too tight. + + The simple solution is to include a spacing specifier of the form ``\nonumber \\[5pt]``, + where ``5pt`` is a good compromise. + + This spacing can also be set globally by including ``\setlength{\jot}{5pt}`` before the + ``\begin{document}``. + + +References formatting +~~~~~~~~~~~~~~~~~~~~~ + + References should be in the following format: + + * Author names are in comma-separated list (except for the last author, + with no comma and an *and*) with format [initials] [last name]. + + * Titles are in italics, and capitalization is displayed (using *e.g.* \{\{ [title] \}\} in BiBTeX). For PRL: nouns capitalized. + + * Journal names are abbreviated. A useful resource is this `list of journal abbreviations <http://www.efm.leeds.ac.uk/~mark/ISIabbr/A_abrvjt.html>`_. + + * Volume number is in bold. + + * Year is in parentheses. + + * Commas separate all elements. + + * All doi are present and displayed in format doi:[doi]. Note that the doi does + *not* include any ``http://doi.org`` or similar URL prefix. Instead, it should + be of the form ``10.###[...]/[...]``. + + * The reference is closed by a ``.`` + + + For arXiv entries, verify if the paper has been published in the meantime. + If so, replace this reference with its proper citation. + If not, use the format ``\href{https://arxiv.org/abs/####.#####}{arXiv:####.#####}``, + and remove any ``(YEAR)``. + + \J. Stat. Mech. is annoying (volume number is year). Manually remove volume nr for + these, so the format becomes ``A. Bee, \emp{Bee's nice paper}, J. Stat. Mech.: Th. Exp. [P,L]##### (20##), \doi{10...}.`` + + +Layout verification +~~~~~~~~~~~~~~~~~~~ + + The whole paper should be scanned through, and the layout of equations + and figures should be checked and corrected if necessary. + + In particular, the punctuation of equations should be checked and corrected + if necessary. + + +Proofs +------ + + * Once the paper has been properly formatted, the ``.tex`` and ``.pdf`` files + should be copied into new files carrying the ``_proofs_v[nr]`` suffix, + for example ``SciPost_Phys_1699_9999v9_Bee_proofs_v1.tex``. + + * The ``.pdf`` proofs should be email to the authors for verification. + Authors should return either an annotated pdf or a list of corrections + by plain text email. + + * Any modifications should be implemented directly in the main ``.tex`` file. + + * If any further check by the authors are required, start this proofs + todo-list again, increasing the proofs version number. + + * Once the authors have approved the proofs, the paper can be put forward + to online publication. + + +Online publication +------------------ + + These tasks must be performed by an **Editorial Administrator**. + + +Preparation of final version of record +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + #. Copy the whole paper folder from folder [journal name]/IN\_PRODUCTION \\to [journal name]/Volume\_[volume nr]. + + #. Check online to see which paper number is next available. + + #. Rename this folder using the convention [journal name]\_[volume number]([issue number])\_[paper nr]. + + #. Within this folder, take the author-accepted version tex file and rename it using the convention [journal name abbrev]\_[volume nr]\_[issue nr]\_[paper nr].tex. + + #. In this tex source, replace the ??? with the 3-digit paper number (6 places: 4 in preamble, 2 in copyright statement). + + #. Ensure that the author names are in format A. Bee, C. Dee and E. Final. + + #. Insert the correct Received, Accepted and Published dates in copyright statement. + + #. Make sure linenumbers are deactivated. + + #. Does the table of contents (if present) look OK? (Beware of hanging closing + line pushed to top of second page.) + + #. If the author-accepted proofs version used BiBTeX, copy the contents of the bbl + file into the .tex file, so that BiBTeX is not needed anymore. + + #. Manually correct any incorrect references. + + #. Recompile the LaTeX, and CAREFULLY CHECK EVERYTHING. + + +Uploading to ``scipost.org`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + #. From the Submissions Pool, click on the link to initiate the publication process. + + #. Fill in the initiate publication form (using the dates in format YYYY-MM-DD). Submit. You are now on the validate publication page. + + #. Check that the paper number is correct. If not, modify the final tex source to account for this (see previous subsection). + + #. Select who the first author is (if registered as a Contributor; if not, inform the EdAdmin, and choose another author who is registered). + + #. Select the final version's pdf file. + + #. Submit. The paper is now published online. + + +Metadata preparation and DOI registration with Crossref +------------------------------------------------------- + + These tasks must be performed by **Editorial Administrators**, + who have access to the Publication's editorial tools + by navigating to the Publication's page. + + +Author listing +~~~~~~~~~~~~~~ + + If not all authors appear in the list presented at the top of the EdAdmin tools, + these should be added by following the ``Add a missing author`` link. + + The search form can be used to find missing authors who might be + Registered Contributors. If found, a one-click process adds them. + + You can otherwise create an UnregisteredAuthor object instance and link + it to the publication, by simply filling in the first and last name fields + and clicking on ``Add``. + + +Preparation of the citations list +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Follow the ``Create/update citation list metadata`` link. + + In the text area, paste the entire list of bibitems from the paper's + final ``.tex`` file. Upon clicking on ``Submit``, all DOI entires + are extracted and formatted into XML metadata which is saved in the + database. + + Citations with no valid DOI (*e.g.* arXiv preprints, books, etc) + do not appear in the metadata. + + +Funding info +~~~~~~~~~~~~ + + Following the ``Create/update funding info metadata`` link leads to a + page where the funding statement of the Publication's ``.tex`` file + (found either as a separate subsection or in the Acknowledgements) + can be pasted. + + +Preparation of the metadata XML +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Following the ``Create/update metadata XML`` link auto-generates a + full XML text field containing all the provided information, + properly formatted for the upcoming submission to Crossref. + + Verify that the first author is indeed enclosed in a + ``<person_name sequence='first' contributor_role='author'>`` tag, + and that subsequent authors (enclosed in + ``<person_name sequence='additional' contributor_role='author'>`` tags) + appear in the order of the Publication's author list. + + Once the metadata is set, clicking on ``Accept the metadata`` + saves the metadata to the database and returns one to the Publication's + page. + + +Metadata testing and deposit +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + At this stage, the metadata is ready for uploading to Crossref. + This occurs via a POST query to either the test or live Crossref server. + + Clicking on ``Test metadata deposit`` immediately posts the metadata + to the test server, and takes you to a page where the server's + response headers are displayed. The server also sends a more detailed + response via email + (to ``admin@scipost.org``; if you do not have access to this mailbox, + ask SciPost Administration) with the success status. + + Similarly, the actual deposit is immediately performed upon clicking on the + ``Deposit the metadata to Crossref``. The response headers are displayed, + and a detailed email response is sent by Crossref to ``admin@scipost.org``. + + + **This completes the publication process.** diff --git a/docs/contributors/editorial_administrators/submission_processing.rst b/docs/contributors/editorial_administrators/submission_processing.rst new file mode 100644 index 0000000000000000000000000000000000000000..a7d0181e2af776f5b3da113f7398e999c9c326d3 --- /dev/null +++ b/docs/contributors/editorial_administrators/submission_processing.rst @@ -0,0 +1,27 @@ +Submission processing +===================== + + +Pre-screening +------------- + + +Plagiarism check +~~~~~~~~~~~~~~~~ + + +Assignments +~~~~~~~~~~~ + + +During refereeing +----------------- + + +Compliance with Crossref DOI requirements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If the Submission's references are not properly formatted, +and/or if these do not include the required DOIs, +the authors should be asked to do so in their eventual +resubmission. diff --git a/docs/contributors/editorial_fellows/editorial_fellows.rst b/docs/contributors/editorial_fellows/editorial_fellows.rst new file mode 100644 index 0000000000000000000000000000000000000000..506d4173785b2206f943563ecafa68f4b0ae1a6c --- /dev/null +++ b/docs/contributors/editorial_fellows/editorial_fellows.rst @@ -0,0 +1,2 @@ +For Editorial Fellows +===================== diff --git a/docs/developers/codebase/codebase.rst b/docs/developers/codebase/codebase.rst new file mode 100644 index 0000000000000000000000000000000000000000..936a62247219a43e5cdb921cd6e505c64098f92d --- /dev/null +++ b/docs/developers/codebase/codebase.rst @@ -0,0 +1,9 @@ +SciPost codebase +================ + + +.. toctree:: + :maxdepth: 2 + + modules/models + modules/views diff --git a/docs/modules/models.rst b/docs/developers/codebase/modules/models.rst similarity index 100% rename from docs/modules/models.rst rename to docs/developers/codebase/modules/models.rst diff --git a/docs/modules/views.rst b/docs/developers/codebase/modules/views.rst similarity index 100% rename from docs/modules/views.rst rename to docs/developers/codebase/modules/views.rst diff --git a/docs/developers/developers.rst b/docs/developers/developers.rst new file mode 100644 index 0000000000000000000000000000000000000000..557c2eaf7ba92fea4f507844425a4920b0c464ea --- /dev/null +++ b/docs/developers/developers.rst @@ -0,0 +1,9 @@ +For Developers +============== + + +.. toctree:: + :maxdepth: 2 + + maintenance/maintenance + codebase/codebase diff --git a/docs/developers/maintenance/docs.rst b/docs/developers/maintenance/docs.rst new file mode 100644 index 0000000000000000000000000000000000000000..784ada5758831940930019f828c95c6c354d8de4 --- /dev/null +++ b/docs/developers/maintenance/docs.rst @@ -0,0 +1,22 @@ +Maintenance of SciPost documentation +==================================== + + +Sphinx-generated docs +--------------------- + + +Generating the static html files +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In the docs folder, invoke ``make html``. + + + +Sphinxdoc-generated docs (viewable online) +------------------------------------------ + +Updating the docs: +~~~~~~~~~~~~~~~~~~ + +Use the management command ``python manage.py updatedoc -b <project-slug>`` with slug scipost. diff --git a/docs/developers/maintenance/maintenance.rst b/docs/developers/maintenance/maintenance.rst new file mode 100644 index 0000000000000000000000000000000000000000..3122094aaccb78ef912ad93b26daff58a6b985b7 --- /dev/null +++ b/docs/developers/maintenance/maintenance.rst @@ -0,0 +1,8 @@ +Maintenance +=========== + + +.. toctree:: + :maxdepth: 2 + + docs diff --git a/docs/index.rst b/docs/index.rst index 1fae5f89bd05e67441af1490d9bb6ec64e4bae1b..5b4a14377165a55f0ee5a0355ad9ec4095e357c9 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -9,10 +9,10 @@ Welcome to SciPost's documentation! Contents: .. toctree:: - :maxdepth: 2 + :maxdepth: 3 - modules/models - modules/views + contributors/contributors + developers/developers Indices and tables diff --git a/journals/models.py b/journals/models.py index 80464164d6915e51439452e8d41f5739657fa91a..f5b65028034176f1c7e97d1ee01d00958df8defc 100644 --- a/journals/models.py +++ b/journals/models.py @@ -201,13 +201,14 @@ class Publication(models.Model): def citation (self): return (journal_name_abbrev_citation(self.in_issue.in_volume.in_journal.name) + ' ' + str(self.in_issue.in_volume.number) - + '(' + str(self.in_issue.number) + '), ' - + paper_nr_string(self.paper_nr) + #+ '(' + str(self.in_issue.number) + ')' + + ', ' + paper_nr_string(self.paper_nr) + ' (' + self.publication_date.strftime('%Y') + ')' ) def citation_for_web (self): - citation = ('{{ abbrev }} <strong>{{ volume_nr }}</strong>({{ issue_nr }}), ' - '{{ paper_nr }} ({{ year }})') + citation = ('{{ abbrev }} <strong>{{ volume_nr }}</strong>' + #'({{ issue_nr }})' + ', {{ paper_nr }} ({{ year }})') template = Template(citation) context = Context( {'abbrev': journal_name_abbrev_citation(self.in_issue.in_volume.in_journal.name), @@ -219,8 +220,9 @@ class Publication(models.Model): def citation_for_web_linked (self): citation = ('<a href="{% url \'scipost:publication_detail\' doi_string=doi_string %}">' - '{{ abbrev }} <strong>{{ volume_nr }}</strong>({{ issue_nr }}), ' - '{{ paper_nr }} ({{ year }})') + '{{ abbrev }} <strong>{{ volume_nr }}</strong>' + #'({{ issue_nr }})' + ', {{ paper_nr }} ({{ year }})') template = Template(citation) context = Context( {'doi_string': self.doi_string, diff --git a/journals/templates/journals/publication_detail.html b/journals/templates/journals/publication_detail.html index fae74accbc5dde383316c5fdb907da1581a657bd..75569d8d96f3d57f8f73aa6e125b50769fc08c06 100644 --- a/journals/templates/journals/publication_detail.html +++ b/journals/templates/journals/publication_detail.html @@ -1,8 +1,26 @@ {% extends 'scipost/base.html' %} +{% load journals_extras %} + {% block pagetitle %}: Publication detail{% endblock pagetitle %} {% block headsup %} +<meta name="citation_title" content="{{ publication.title }}"/> +{% for author in publication.authors.all %} +<meta name="citation_author" content="{{ author.user.last_name }}, {{ author.user.first_name }}"/> +{% endfor %} +{% for author in publication.authors_unregistered.all %} +<meta name="citation_author" content="{{ author.last_name }}, {{ author.first_name }}"/> +{% endfor %} +<meta name="citation_doi" content="{{ publication.doi_string }}"/> +<meta name="citation_publication_date" content="{{ publication.publication_date|date:'Y/m/d' }}"/> +<meta name="citation_journal_title" content="{{ publication.in_issue.in_volume.in_journal.name }}"/> +<meta name="citation_issn" content="{{ publication.in_issue.in_volume.in_journal.issn }}"/> +<meta name="citation_volume" content="{{ publication.in_issue.in_volume.number }}"/> +<meta name="citation_issue" content="{{ publication.in_issue.number }}"/> +<meta name="citation_firstpage" content="{{ publication.paper_nr|paper_nr_string_filter }}"/> +<meta name="citation_pdf_url" content="https://scipost.org/{{ publication.doi_string }}/pdf"/> + <script> $(document).ready(function(){ $("#citationslist").hide(); diff --git a/journals/templates/journals/scipost_physics_issues.html b/journals/templates/journals/scipost_physics_issues.html index f2a0d6170bdbd628b4af9d81a0b634c602ffc52d..e60d99d4acc6abe13c18485f9caa9f2f4d5de077 100644 --- a/journals/templates/journals/scipost_physics_issues.html +++ b/journals/templates/journals/scipost_physics_issues.html @@ -19,7 +19,7 @@ <ul> {% for issue in issues %} <li> - <a href="{% url 'journals:scipost_physics_issue_detail' volume_nr=issue.in_volume.number issue_nr=issue.number %}">{{ issue }}</a> + <a href="{% url 'scipost:SciPostPhys_issue_detail' volume_nr=issue.in_volume.number issue_nr=issue.number %}">{{ issue }}</a> </li> {% endfor %} </div> diff --git a/journals/templatetags/__init__.py b/journals/templatetags/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/journals/templatetags/journals_extras.py b/journals/templatetags/journals_extras.py new file mode 100644 index 0000000000000000000000000000000000000000..c5625821237805fb08970b9be997c43384996c73 --- /dev/null +++ b/journals/templatetags/journals_extras.py @@ -0,0 +1,10 @@ +from django import template + +from journals.models import paper_nr_string + +register = template.Library() + + +@register.filter(name='paper_nr_string_filter') +def paper_nr_string_filter(nr): + return paper_nr_string(nr) diff --git a/journals/views.py b/journals/views.py index 98d221daf7692ab65df8f5d6b8cca6669f0f63d3..e3ba969601240c8255c1caa91a267b871f3e1eb1 100644 --- a/journals/views.py +++ b/journals/views.py @@ -292,7 +292,7 @@ def validate_publication(request): publication.save() # Move file to final location initial_path = publication.pdf_file.path - new_dir = (publication.in_issue.path + new_dir = (publication.in_issue.path + '/' + paper_nr_string(publication.paper_nr)) new_path = new_dir + '/' + publication.doi_label.replace('.', '_') + '.pdf' os.makedirs(new_dir) diff --git a/package.json b/package.json new file mode 100644 index 0000000000000000000000000000000000000000..8532c718ab3a888928c2e7c4f06ec6d85d5c8eab --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "scipost_v1", + "version": "1.0.0", + "description": "SciPost's frontend dependencies", + "main": "scipost.js", + "directories": { + "doc": "docs" + }, + "scripts": { + "webpack": "./node_modules/.bin/webpack", + "webpack-live": "./node_modules/.bin/webpack --watch" + }, + "repository": { + "type": "git", + "url": "git+https://scipostdev@bitbucket.org/scipostdev/scipost_v1.git" + }, + "author": "SciPost", + "homepage": "https://www.scipost.org", + "devDependencies": { + "bootstrap": "^4.0.0-alpha.6", + "bootstrap-loader": "^2.0.0-beta.19", + "clean-webpack-plugin": "^0.1.15", + "css-loader": "^0.26.1", + "extract-text-webpack-plugin": "^2.0.0-beta.2", + "file-loader": "^0.8.4", + "imports-loader": "^0.7.0", + "jquery": "^2.2.0", + "node-loader": "^0.6.0", + "node-sass": "^4.3.0", + "postcss-load-config": "1.0.0", + "postcss-loader": "^1.2.2", + "resolve-url-loader": "^1.6.1", + "sass-loader": "^4.1.1", + "sass-resources-loader": "^1.2.0-beta.1", + "style-loader": "^0.13.1", + "tether": "^1.4.0", + "url-loader": "^0.5.7", + "webpack": "^2.1.0-beta.19", + "webpack-bundle-tracker": "^0.2.0", + "webpack-glob-entry": "^2.1.1" + } +} diff --git a/requirements.txt b/requirements.txt index b25c7e2fba57bc091dcc0578fac5910b75817117..ed95a8c45df3e2d9fb33ffd1e17ea1c1c25c90c7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,9 +5,12 @@ django-countries==4.0 django-crispy-forms==1.6.1 django-filter==1.0.0 django-guardian==1.4.6 +django-haystack==2.5.1 django-mathjax==0.0.5 django-mptt==0.8.6 django-simple-captcha==0.5.3 +django-sphinxdoc==1.5.1 +django-webpack-loader==0.4.1 djangorestframework==3.5.3 docutils==0.12 factory-boy==2.7.0 @@ -28,3 +31,4 @@ six==1.10.0 snowballstemmer==1.2.1 Sphinx==1.4.9 sphinx-rtd-theme==0.1.9 +Whoosh==2.7.4 diff --git a/scipost/constants.py b/scipost/constants.py index 7c7933e18e787769f830f999423730a6af836d82..7a64c84d499aa7c53bf5e78a121db533e881dd56 100644 --- a/scipost/constants.py +++ b/scipost/constants.py @@ -1,3 +1,7 @@ +DISCIPLINE_PHYSICS = 'physics' +DISCIPLINE_ASTROPHYSICS = 'astrophysics' +DISCIPLINE_MATH = 'mathematics' +DISCIPLINE_COMPUTERSCIENCE = 'computerscience' SCIPOST_DISCIPLINES = ( ('physics', 'Physics'), ('astrophysics', 'Astrophysics'), diff --git a/scipost/feeds.py b/scipost/feeds.py index 42e86ecfba26862377c1279aad4722c1d040d31d..297ea1c779d387687b71a39c3a02abe3f7809c70 100644 --- a/scipost/feeds.py +++ b/scipost/feeds.py @@ -1,23 +1,30 @@ +import datetime + from django.contrib.syndication.views import Feed from django.utils.feedgenerator import Atom1Feed from django.core.urlresolvers import reverse +from django.db.models import Q from scipost.models import NewsItem +from scipost.models import subject_areas_dict from comments.models import Comment +from journals.models import Publication +from submissions.models import Submission, SUBMISSION_STATUS_PUBLICLY_INVISIBLE + class LatestCommentsFeedRSS(Feed): - title = "SciPost Latest Comments" - description = "SciPost Latest Comments" + title = "SciPost: Latest Comments" + description = "SciPost: Latest Comments" link = "/comments/" def items(self): - return Comment.objects.filter(status__gte=0).order_by('-date_submitted')[:5] + return Comment.objects.filter(status__gte=0).order_by('-date_submitted')[:10] def item_title(self, item): return item.comment_text[:50] def item_description(self, item): - return item.description + return item.comment_text[:50] def item_link(self, item): if item.commentary: @@ -35,14 +42,19 @@ class LatestCommentsFeedRSS(Feed): class LatestCommentsFeedAtom(LatestCommentsFeedRSS): feed_type = Atom1Feed - description = LatestCommentsFeedRSS.description + subtitle = LatestCommentsFeedRSS.description + + def author_name(self): + return 'SciPost' + def item_updateddate(self, item): + return item.date_submitted class LatestNewsFeedRSS(Feed): - title = 'SciPost Latest News' + title = 'SciPost: Latest News' link = '/news/' - description = "SciPost recent news and announcements" + description = "SciPost: recent news and announcements" def items(self): return NewsItem.objects.order_by('-date')[:5] @@ -59,4 +71,116 @@ class LatestNewsFeedRSS(Feed): class LatestNewsFeedAtom(LatestNewsFeedRSS): feed_type = Atom1Feed - description = LatestNewsFeedRSS.description + subtitle = LatestNewsFeedRSS.description + + def author_name(self): + return 'SciPost' + + def item_updateddate(self, item): + return datetime.datetime(item.date.year, item.date.month, item.date.day) + + +class LatestSubmissionsFeedRSS(Feed): + title_template = 'feeds/latest_submissions_title.html' + description_template = 'feeds/latest_submissions_description.html' + link = "/submissions/" + + def get_object(self, request, subject_area=''): + if subject_area != '': + queryset = Submission.objects.filter( + Q(subject_area=subject_area) | Q(secondary_areas__contains=[subject_area]) + ).exclude(status__in=SUBMISSION_STATUS_PUBLICLY_INVISIBLE + ).order_by('-submission_date')[:10] + queryset.subject_area = subject_area + else: + queryset = Submission.objects.exclude(status__in=SUBMISSION_STATUS_PUBLICLY_INVISIBLE + ).order_by('-submission_date')[:10] + queryset.subject_area = None + return queryset + + def title(self, obj): + title_text = 'SciPost: Latest Submissions' + if obj.subject_area: + title_text += ' in %s' % subject_areas_dict[obj.subject_area] + return title_text + + def description(self, obj): + desc = 'SciPost: most recent submissions' + try: + if obj.subject_area: + desc += ' in %s' % subject_areas_dict[obj.subject_area] + except KeyError: + pass + return desc + + def items(self, obj): + return obj + + def item_link(self, item): + return reverse('submissions:submission', + kwargs={'arxiv_identifier_w_vn_nr': item.arxiv_identifier_w_vn_nr}) + + +class LatestSubmissionsFeedAtom(LatestSubmissionsFeedRSS): + feed_type = Atom1Feed + subtitle = LatestSubmissionsFeedRSS.description + + def author_name(self): + return 'SciPost' + + def item_updateddate(self, item): + return datetime.datetime(item.submission_date.year, + item.submission_date.month, + item.submission_date.day) + + +class LatestPublicationsFeedRSS(Feed): + title_template = 'feeds/latest_publications_title.html' + description_template = 'feeds/latest_publications_description.html' + link = "/journals/" + + def get_object(self, request, subject_area=''): + if subject_area != '': + queryset = Publication.objects.filter( + Q(subject_area=subject_area) | Q(secondary_areas__contains=[subject_area]) + ).order_by('-publication_date')[:10] + queryset.subject_area = subject_area + else: + queryset = Publication.objects.order_by('-publication_date')[:10] + queryset.subject_area = None + return queryset + + def title(self, obj): + title_text = 'SciPost: Latest Publications' + if obj.subject_area: + title_text += ' in %s' % subject_areas_dict[obj.subject_area] + return title_text + + def description(self, obj): + desc = 'SciPost: most recent publications' + try: + if obj.subject_area: + desc += ' in %s' % subject_areas_dict[obj.subject_area] + except KeyError: + pass + return desc + + def items(self, obj): + return obj + + def item_link(self, item): + return reverse('scipost:publication_detail', + kwargs={'doi_string': item.doi_string}) + + +class LatestPublicationsFeedAtom(LatestPublicationsFeedRSS): + feed_type = Atom1Feed + subtitle = LatestPublicationsFeedRSS.description + + def author_name(self): + return 'SciPost' + + def item_updateddate(self, item): + return datetime.datetime(item.publication_date.year, + item.publication_date.month, + item.publication_date.day) diff --git a/scipost/forms.py b/scipost/forms.py index f8d0629bd7684d0ae9d2ee559d420167aadaf496..d58a27352b45f3827e88aef7ae39e47e43ab7514 100644 --- a/scipost/forms.py +++ b/scipost/forms.py @@ -179,8 +179,18 @@ class UnavailabilityPeriodForm(forms.ModelForm): self.fields['end'].widget.attrs.update({'placeholder': 'YYYY-MM-DD'}) +class RemarkForm(forms.Form): + remark = forms.CharField(widget=forms.Textarea(), label='') + + def __init__(self, *args, **kwargs): + super(RemarkForm, self).__init__(*args, **kwargs) + self.fields['remark'].widget.attrs.update( + {'rows': 3, 'cols': 40, 'placeholder': 'Enter your remarks here. You can use LaTeX in $...$ or \[ \].'}) + + class SearchForm(forms.Form): - query = forms.CharField(max_length=100, label='') + query = forms.CharField(max_length=100, label='', + widget=forms.TextInput(attrs={'class': 'form-control mr-0 mb-2 mr-lg-2 mb-lg-0'})) class EmailGroupMembersForm(forms.Form): diff --git a/scipost/management/commands/add_groups_and_permissions.py b/scipost/management/commands/add_groups_and_permissions.py index 86a4ef7af77102d1c21cb930873bd6a59ee4d58f..7dbe007f4d9199739afb4ca4256122dc8ff9d178 100644 --- a/scipost/management/commands/add_groups_and_permissions.py +++ b/scipost/management/commands/add_groups_and_permissions.py @@ -28,6 +28,7 @@ class Command(BaseCommand): EditorialCollege, created = Group.objects.get_or_create(name='Editorial College') VettingEditors, created = Group.objects.get_or_create(name='Vetting Editors') RegisteredContributors, created = Group.objects.get_or_create(name='Registered Contributors') + Developers, created = Group.objects.get_or_create(name='Developers') Testers, created = Group.objects.get_or_create(name='Testers') Ambassadors, created = Group.objects.get_or_create(name='Ambassadors') JuniorAmbassadors, created = Group.objects.get_or_create(name='Junior Ambassadors') @@ -151,6 +152,13 @@ class Command(BaseCommand): name='Can publish accepted submission', content_type=content_type) + # Documentation + can_view_docs_scipost, created = Permission.objects.get_or_create( + codename='can_view_docs_scipost', + name='Can view docs: scipost', + content_type=content_type) + + # Assign permissions to groups SciPostAdmin.permissions.add( can_manage_registration_invitations, @@ -196,6 +204,9 @@ class Command(BaseCommand): can_request_thesislinks, can_referee, ) + Developers.permissions.add( + can_view_docs_scipost, + ) Ambassadors.permissions.add( can_manage_registration_invitations, ) diff --git a/scipost/migrations/0027_citationnotification.py b/scipost/migrations/0027_citationnotification.py new file mode 100644 index 0000000000000000000000000000000000000000..1c0a8e27cf3204f382f2504c667599e81ee42309 --- /dev/null +++ b/scipost/migrations/0027_citationnotification.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-12-29 09:47 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('submissions', '0028_auto_20161212_1931'), + ('journals', '0006_publication_citedby'), + ('scipost', '0026_draftinvitation'), + ] + + operations = [ + migrations.CreateModel( + name='CitationNotification', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date_drafted', models.DateTimeField(default=django.utils.timezone.now)), + ('processed', models.BooleanField(default=False)), + ('cited_in_publication', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='journals.Publication')), + ('cited_in_submission', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='submissions.Submission')), + ('contributor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='scipost.Contributor')), + ], + ), + ] diff --git a/scipost/migrations/0028_remove_citationnotification_date_drafted.py b/scipost/migrations/0028_remove_citationnotification_date_drafted.py new file mode 100644 index 0000000000000000000000000000000000000000..79b4fa512e38c172a645cce0cdba293d74a6c31d --- /dev/null +++ b/scipost/migrations/0028_remove_citationnotification_date_drafted.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-12-29 09:47 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('scipost', '0027_citationnotification'), + ] + + operations = [ + migrations.RemoveField( + model_name='citationnotification', + name='date_drafted', + ), + ] diff --git a/scipost/migrations/0029_remark_submission.py b/scipost/migrations/0029_remark_submission.py new file mode 100644 index 0000000000000000000000000000000000000000..e07a0ad86d5d5f6e50b97c93b803cfd6403caace --- /dev/null +++ b/scipost/migrations/0029_remark_submission.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2017-01-17 16:45 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('submissions', '0028_auto_20161212_1931'), + ('scipost', '0028_remove_citationnotification_date_drafted'), + ] + + operations = [ + migrations.AddField( + model_name='remark', + name='submission', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='submissions.Submission'), + ), + ] diff --git a/scipost/models.py b/scipost/models.py index 033c08ec50202e4cc88e200a4db4f8ee523a5be2..85f5b085086c85eb376ba8b7886131d78cddeb56 100644 --- a/scipost/models.py +++ b/scipost/models.py @@ -109,6 +109,9 @@ class Contributor(models.Model): def __str__(self): return '%s, %s' % (self.user.last_name, self.user.first_name) + def get_title(self): + return title_dict[self.title] + def is_currently_available(self): unav_periods = UnavailabilityPeriod.objects.filter(contributor=self) @@ -241,6 +244,9 @@ class UnavailabilityPeriod(models.Model): class Remark(models.Model): contributor = models.ForeignKey(Contributor, on_delete=models.CASCADE) + submission = models.ForeignKey('submissions.Submission', + on_delete=models.CASCADE, + blank=True, null=True) recommendation = models.ForeignKey('submissions.EICRecommendation', on_delete=models.CASCADE, blank=True, null=True) @@ -336,6 +342,25 @@ class RegistrationInvitation(models.Model): + ' on ' + self.date_sent.strftime("%Y-%m-%d")) +class CitationNotification(models.Model): + contributor = models.ForeignKey(Contributor, on_delete=models.CASCADE) + cited_in_submission = models.ForeignKey('submissions.Submission', + on_delete=models.CASCADE, + blank=True, null=True) + cited_in_publication = models.ForeignKey('journals.Publication', + on_delete=models.CASCADE, + blank=True, null=True) + processed = models.BooleanField(default=False) + + def __str__(self): + text = str(self.contributor) + ', cited in ' + if self.cited_in_submission: + text += self.cited_in_submission.arxiv_nr_w_vn_nr + elif self.cited_in_publication: + text += self.cited_in_publication.citation() + if self.processed: + text += ' (processed)' + return text AUTHORSHIP_CLAIM_STATUS = ( (1, 'accepted'), diff --git a/scipost/static/scipost/SciPost.css b/scipost/static/scipost/SciPost.css index 2067c030efd00f111cae02ea41ca39fd64975232..825c43bfcffa06857fbdc86e3e55287760da3183 100644 --- a/scipost/static/scipost/SciPost.css +++ b/scipost/static/scipost/SciPost.css @@ -15,8 +15,8 @@ General style sheet for SciPost } [class*="col-"] { - float: left; - padding: 5px; + /*float: left; + padding: 5px;*/ } /* For desktop: */ .col-1 {width: 8.33%;} @@ -311,7 +311,7 @@ body { /* font-family: Merriweather, sans-serif; */ font-family: 'Merriweather Sans'; font-weight: lighter; - font-size: 80%; + font-size: 0.8rem; margin: 0px; padding: 0px; background-color: #ffffff; @@ -374,68 +374,17 @@ header p { nav { background-color: #f0f0f0; - color: #002B49; + /*color: #002B49; margin:0px; padding:0px; float:center; - clear:both; - font-size: 12px; - font-weight: 500; -} -nav #loggedinas { - font-size: 12px; -} -nav ul { - margin: 0; - padding: 5px; -} -nav ul li { - display: inline; - margin: 5px; - padding: 5px; - background-color: #204080; - color: #002B49; -/* color: #222222; */ - float: center; - clear: both; -} -nav a { - margin: 5px; - padding: 5px; - background-color: #f0f0f0; - color: #002B49; -/* color: #000000; */ - text-decoration: none; - display: inline-block; - target: _parent; -} -nav a:visited { - color: #002B49; -/* color: #000000; */ -} -nav a:hover { - color: #000000; -/* color: #FFA300 */ - text-decoration: none; - background-color: #FFFFFF; -} -nav a:active { - color: #222222; -} -nav a.highlighted { -/* background-color: #FFFFFF; */ - border: 1px solid black; -} -nav p { - display: inline-block; - margin: 10px; - padding: 0px; -} -nav form { - display: inline-block; + clear:both;*/ + /*font-size: 12px;*/ + /*font-weight: 500;*/ } + ol { list-style-type: none; counter-reset: item; @@ -472,7 +421,6 @@ section { text-align: justify; } section a { - color: #103050; color: #6884C2; text-decoration: none; target: _parent; @@ -535,6 +483,13 @@ section ul li { padding: 2px; } +table.tablePadded10 th { + padding: 5px 10px; +} +table.tablePadded10 td { + padding: 0px 10px; +} + #NWOOpenAccess { font-size: 80%; } @@ -631,9 +586,7 @@ article { footer { background-color: #002B49; color: #ffffff; - border: 1px solid grey; border-radius:1px; - margin:5px; margin-bottom:10px; - padding:5px; + border-top: 1px solid grey; } footer a { color: #eeeeee; @@ -649,7 +602,6 @@ input, textarea { border: 1px solid black; border-radius: 1px; } input[type='text'], input[type='URL'], textarea { - width: 80%; max-width: 800px; min-width: 200px; } @@ -884,4 +836,56 @@ li.publicationPDF { #preview-requested_changes { border: 1px solid black; white-space: pre-wrap; -} \ No newline at end of file +} + +/* Styling of sphinxdoc-generated docs */ +.pagination-top { + background-color: #dddddd; + color: black; + margin: 10px; + padding: 10px; +} +.pagination-top a { + color: #666666; + target: _parent; +} +.pagination-top a:hover { + color: #aaaaaa; + text-decoration: underline; +} + +.sphinx { + color: black; + margin: 10px; + padding: 10px; +} +.sphinx a { + color: #666666; + target: _parent; +} +.sphinx a:hover { + color: #aaaaaa; + text-decoration: underline; +} +.sphinx a.headerlink { + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; + visibility: hidden; +} +.sphinx *:hover > a.headerlink { visibility: visible; } + +.pagination-bottom { + background-color: #dddddd; + color: black; + margin: 10px; + padding: 10px; +} +.pagination-bottom a { + color: #666666; + target: _parent; +} +.pagination-bottom a:hover { + color: #aaaaaa; + text-decoration: underline; +} diff --git a/scipost/static/scipost/assets/config/config.scss b/scipost/static/scipost/assets/config/config.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/scipost/static/scipost/assets/config/preconfig.scss b/scipost/static/scipost/assets/config/preconfig.scss new file mode 100644 index 0000000000000000000000000000000000000000..2890b8c4d888ba79625c3722cb5b91cf2a5141ba --- /dev/null +++ b/scipost/static/scipost/assets/config/preconfig.scss @@ -0,0 +1,42 @@ +// General variable structure +// +// + +// Grid +// +$grid-gutter-width-base: 20px; +$container-max-widths: ( + sm: 546px, + md: 738px, + lg: 962px, + xl: 1170px +); +.row { + margin-bottom: 1rem; +} + +// Colors +// +$scipost-lightblue: #6884C2 !default; +$scipost-darkblue: #002b49 !default; + +$blue: $scipost-lightblue !default; +$body-color: $scipost-darkblue !default; + +// Fonts +// +$font-family-sans-serif: 'Merriweather Sans', "Helvetica Neue", Arial, sans-serif !default; +$font-family-serif: $font-family-sans-serif !default; +$font-family-monospace: $font-family-sans-serif !default; +$font-family-base: $font-family-sans-serif !default; + +$font-size-base: 0.8rem !default; + + +// Navbar +// +$navbar-light-color: $scipost-darkblue !default; +$navbar-light-hover-color: $scipost-darkblue !default; + +$input-border-radius: 0.15rem !default; +$btn-border-radius: 0.15rem !default; diff --git a/scipost/static/scipost/assets/css/style.scss b/scipost/static/scipost/assets/css/style.scss new file mode 100644 index 0000000000000000000000000000000000000000..936fe0a4706e8cd24ad509a6ce70a47cc77d4e8e --- /dev/null +++ b/scipost/static/scipost/assets/css/style.scss @@ -0,0 +1,91 @@ +@import "node_modules/bootstrap/scss/_variables"; +@import "node_modules/bootstrap/scss/_mixins"; +@import "./../config/preconfig.scss"; +/** + * Make variables defined in preconfig.scss accessable in this file, + * plus default variables and mixins of Bootstrap@4 + * - SciPost custom sass + * + */ + + +/** + * Buttons + * + */ +.btn { + cursor: pointer; + font-family: inherit; +} + +/** + * Type + * + */ +a { + color: $scipost-lightblue; + text-decoration: none; +} +a:hover { + color: $scipost-darkblue; + text-decoration: underline; +} +h1, h2, h3, h4, h5, h6 { + margin: 0; + padding: 5px 0; + text-shadow: none; + font-weight: 500; +} + +/** + * Form + * + */ +.form-control { + font-family: inherit; +} + +/** + * Navbar + * + */ +.navbar { + margin-bottom: 0.75rem; + + .nav-link { + padding-right: 1rem; + padding-left: 1rem; + border: 1px solid transparent; + border-radius: 0.1rem; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + + @include hover-focus { + background-color: $white; + } + } + + .active > .nav-link { + border-color: $scipost-darkblue; + } + + .highlighted > .nav-link { + background-color: rgba(255, 255, 255, 0.6); + } + + .nav-item { + margin-right: 0.5rem; + } +} +.navbar-brand { + height: 38px; + margin: 0; +} +.navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 43, 73, 1.0)"); +} +.panel { + padding: 0.75rem; + background-color: #f4f4f4; +} diff --git a/scipost/templates/feeds/latest_publications_description.html b/scipost/templates/feeds/latest_publications_description.html new file mode 100644 index 0000000000000000000000000000000000000000..d355de5be7df81ec81a4bcc9269e442a80575eaa --- /dev/null +++ b/scipost/templates/feeds/latest_publications_description.html @@ -0,0 +1 @@ +{{ obj.title }} diff --git a/scipost/templates/feeds/latest_publications_title.html b/scipost/templates/feeds/latest_publications_title.html new file mode 100644 index 0000000000000000000000000000000000000000..68a1f74feaf664fd8edf3109b2843ef04d0fa0da --- /dev/null +++ b/scipost/templates/feeds/latest_publications_title.html @@ -0,0 +1 @@ +{{ obj.citation_for_web }}, by {{ obj.author_list }} diff --git a/scipost/templates/feeds/latest_submissions_description.html b/scipost/templates/feeds/latest_submissions_description.html new file mode 100644 index 0000000000000000000000000000000000000000..f5e3b9494cf1a74404324f159e90ba0affd4dd28 --- /dev/null +++ b/scipost/templates/feeds/latest_submissions_description.html @@ -0,0 +1 @@ +Submitted on {{ obj.submission_date|date:'Y-m-d' }}, refereeing deadline {{ obj.reporting_deadline|date:'Y-m-d' }}. diff --git a/scipost/templates/feeds/latest_submissions_title.html b/scipost/templates/feeds/latest_submissions_title.html new file mode 100644 index 0000000000000000000000000000000000000000..f9cfe99395d508638feeeb7e62cd24274cbc80cb --- /dev/null +++ b/scipost/templates/feeds/latest_submissions_title.html @@ -0,0 +1 @@ +{{ obj.title }}, by {{ obj.author_list }} diff --git a/scipost/templates/scipost/about.html b/scipost/templates/scipost/about.html index 95b3c052245556cb222a8c959e650d16a90be383..6b89228b362007b8563070cd70cde2770c69569b 100644 --- a/scipost/templates/scipost/about.html +++ b/scipost/templates/scipost/about.html @@ -103,11 +103,8 @@ <div class="flex-whitebox"> <h3>Code Development and Server Maintenance</h3> <ul> - <li>J.-S. Caux</li> - </ul> - <h4>Technical advice</h4> - <ul> - <li>M. Moeys, J. Roodhart, R. van Dam</li> + <li>Lead programmer: J.-S. Caux</li> + <li>Dev team: J. de Wit, G. Kapteijns, M. Moeys and B. Ponsioen</li> </ul> </div> </div> @@ -154,43 +151,49 @@ <div class="flex-container"> <div class="flex-whitebox"> <ul> - <li>Prof. <a href="https://www.uni-tuebingen.de/en/faculties/faculty-of-science/departments/physics/institutes/institute-for-theoretical-physics/research-groups/andergassen-group.html">S. Andergassen</a><br/>(Tübingen)</li> - <li>Prof. <a href="http://www.physik.uni-wuerzburg.de/~assaad/">F. F. Assaad</a><br/>(Würzbrug)</li> - <li>Dr <a href="http://www.attaccalite.com">C. Attaccalite</a><br/>(Marseille)</li> - <li>Prof. <a href="http://ipht.cea.fr/Pisp/giulio.biroli/index_en.php">G. Biroli</a><br/>(CEA Saclay)</li> - <li>Prof. <a href="https://staff.fnwi.uva.nl/j.deboer/">J. de Boer</a><br/>(U. van Amsterdam)</li> - <li>Prof. <a href="http://www.uva.nl/en/about-the-uva/organisation/staff-members/content/b/o/d.bonn/d.bonn.html">D. Bonn</a><br/>(U. van Amsterdam)</li> - <li>Prof. <a href="http://www.statphys.sissa.it/wordpress/?page_id=1731">P. Calabrese</a><br/>(SISSA)</li> - <li>Prof. <a href="http://www.saha.ac.in/cmp/bikask.chakrabarti/bikas.html">B. Chakrabarti</a><br/>(Kolkata)</li> - <li>Prof. <a href="http://www.tcm.phy.cam.ac.uk/~nrc25/">N. Cooper</a><br/>(Cambridge)</li> - <li>Prof. <a href="http://researchers.uq.edu.au/researcher/1134">M. Davis</a><br/>(U. of Queensland)</li> + <li>Prof. <a href="https://www.uni-tuebingen.de/en/faculties/faculty-of-science/departments/physics/institutes/institute-for-theoretical-physics/research-groups/andergassen-group.html">Sabine Andergassen</a><br/>(Tübingen)</li> + <li>Prof. <a href="http://www.physik.uni-wuerzburg.de/~assaad/">Fakher Assaad</a><br/>(Würzbrug)</li> + <li>Dr <a href="http://www.attaccalite.com">Claudio Attaccalite</a><br/>(Marseille)</li> + <li>Prof. <a href="http://www.physik.unizh.ch/~lbaudis/index.html">Laura Baudis</a><br/>(Zurich)</li> + <li>Prof. <a href="http://www.lorentz.leidenuniv.nl/beenakker/">Carlo Beenakker</a><br/>(Leiden)</li> + <li>Prof. <a href="http://ipht.cea.fr/Pisp/giulio.biroli/index_en.php">Giulio Biroli</a><br/>(CEA Saclay)</li> + <li>Prof. <a href="http://www.en.physik.uni-muenchen.de/personen/professoren/bloch/index.html">Immanuel Bloch</a><br/>(LMU Munich)</li> + <li>Prof. <a href="https://staff.fnwi.uva.nl/j.deboer/">Jan de Boer</a><br/>(U. van Amsterdam)</li> + <li>Prof. <a href="http://www.uva.nl/en/about-the-uva/organisation/staff-members/content/b/o/d.bonn/d.bonn.html">Daniel Bonn</a><br/>(U. van Amsterdam)</li> + <li>Prof. <a href="http://www.statphys.sissa.it/wordpress/?page_id=1731">Pasquale Calabrese</a><br/>(SISSA)</li> + <li>Prof. <a href="http://www.saha.ac.in/cmp/bikask.chakrabarti/bikas.html">Bikas Chakrabarti</a><br/>(Kolkata)</li> + <li>Prof. <a href="http://www.tcm.phy.cam.ac.uk/~nrc25/">Nigel Cooper</a><br/>(Cambridge)</li> </ul> </div> <div class="flex-whitebox"> <ul> - <li>Prof. <a href="http://www-thphys.physics.ox.ac.uk/people/FabianEssler/">F. H. L. Essler</a><br/>(U. of Oxford)</li> - <li>Prof. <a href="http://www.ms.unimelb.edu.au/~jdgier@unimelb/">J. de Gier</a><br/>(U. of Melbourne)</li> - <li>Prof. <a href="http://katzgraber.org">H. Katzgraber</a><br/>(Texas A&M)</li> - <li>Prof. <a href="https://www.pmmh.espci.fr/~jorge/">J. Kurchan</a><br/>(<a href="https://www.pmmh.espci.fr/?-Home-">PMMH</a> Paris, CNRS)</li> - <li>Prof. <a href="http://www.ens-lyon.fr/PHYSIQUE/presentation/annuaire/maillet-jean-michel">J.M. Maillet</a><br/>(ENS Lyon)</li> - <li>Prof. <a href="https://www.mpg.de/343435/physik_komplexer_systeme_wissM28">R. Moessner</a><br/>(MPIPKS Dresden)</li> - <li>Prof. <a href="https://www.uibk.ac.at/exphys/ultracold/people/christoph.naegerl/">H.-C. Nägerl</a><br/>(Innsbruck)</li> - <li>Prof. <a href="http://www.physics.miami.edu/~nepomechie/">R. Nepomechie</a><br/>(U. of Miami)</li> - <li>Prof. <a href="https://staff.fnwi.uva.nl/b.nienhuis/">B. Nienhuis</a><br/>(U. van Amsterdam)</li> + <li>Prof. <a href="http://theory.tifr.res.in/~kedar/">Kedar Damle</a><br/>(TIFR Mumbai)</li> + <li>Prof. <a href="http://researchers.uq.edu.au/researcher/1134">Matthew Davis</a><br/>(U. of Queensland)</li> + <li>Prof. <a href="http://www-thphys.physics.ox.ac.uk/people/FabianEssler/">Fabian Essler</a><br/>(U. of Oxford)</li> + <li>Prof. <a href="http://www.ms.unimelb.edu.au/~jdgier@unimelb/">Jan de Gier</a><br/>(U. of Melbourne)</li> + <li>Prof. <a href="http://physics.berkeley.edu/people/faculty/beate-heinemann">Beate Heinemann</a><br/>(Berkeley)</li> + <li>Prof. <a href="http://katzgraber.org">Helmut Katzgraber</a><br/>(Texas A&M)</li> + <li>Prof. <a href="https://www.pmmh.espci.fr/~jorge/">Jorge Kurchan</a><br/>(<a href="https://www.pmmh.espci.fr/?-Home-">PMMH</a> Paris, CNRS)</li> + <li>Prof. <a href="http://www.ens-lyon.fr/PHYSIQUE/presentation/annuaire/maillet-jean-michel">Jean Michel Maillet</a><br/>(ENS Lyon)</li> + <li>Prof. <a href="https://www.mpg.de/343435/physik_komplexer_systeme_wissM28">Roderich Moessner</a><br/>(MPIPKS Dresden)</li> + <li>Prof. <a href="https://www.uibk.ac.at/exphys/ultracold/people/christoph.naegerl/">Hanns-Christoph Nägerl</a><br/>(Innsbruck)</li> + <li>Prof. <a href="http://www.physics.miami.edu/~nepomechie/">Rafael Nepomechie</a><br/>(U. of Miami)</li> </ul> </div> <div class="flex-whitebox"> <ul> - <li>Prof. <a href="http://www.kip.uni-heidelberg.de/people/index.php?num=552">M. Oberthaler</a><br/>(U. Heidelberg)</li> - <li>Prof. <a href="http://www.thp.uni-koeln.de/rosch">A. Rosch</a><br/>(U. of Cologne)</li> - <li>Prof. <a href="http://saleur.sandvox.net">H. Saleur</a><br/>(CEA Saclay/USC)</li> - <li>Prof. <a href="http://www.phy.ohiou.edu/people/faculty/sandler.html">N. Sandler</a><br/>(Ohio)</li> - <li>Prof. <a href="https://staff.fnwi.uva.nl/c.j.m.schoutens/">C.J.M. Schoutens</a><br/>(U. van Amsterdam)</li> - <li>Prof. <a href="http://www-thphys.physics.ox.ac.uk/people/SteveSimon/">S. H. Simon</a><br/>(U. of Oxford)</li> - <li>Prof. <a href="http://bec.science.unitn.it/infm-bec/people/stringari.html">S. Stringari</a><br/>(Trento)</li> - <li>Prof. <a href="http://www.damtp.cam.ac.uk/user/tong/">D. Tong</a><br/>(Cambridge)</li> - <li>Prof. <a href="http://www.physique.usherbrooke.ca/pages/en/node/3412">A.-M. Tremblay</a><br/>(Sherbrooke)</li> - <li>Prof. <a href="http://trivediresearch.org.ohio-state.edu">N. Trivedi</a><br/>(Ohio State U.)</li> + <li>Prof. <a href="https://staff.fnwi.uva.nl/b.nienhuis/">Bernard Nienhuis</a><br/>(U. van Amsterdam)</li> + <li>Prof. <a href="http://www.kip.uni-heidelberg.de/people/index.php?num=552">Markus Oberthaler</a><br/>(U. Heidelberg)</li> + <li>Prof. <a href="https://www.uu.nl/staff/RHHGvanRoij/0">René van Roij</a><br/>(Utrecht)</li> + <li>Prof. <a href="http://www.thp.uni-koeln.de/rosch">Achim Rosch</a><br/>(U. of Cologne)</li> + <li>Prof. <a href="http://saleur.sandvox.net">Hubert Saleur</a><br/>(CEA Saclay/USC)</li> + <li>Prof. <a href="http://www.phy.ohiou.edu/people/faculty/sandler.html">Nancy Sandler</a><br/>(Ohio)</li> + <li>Prof. <a href="https://staff.fnwi.uva.nl/c.j.m.schoutens/">Kareljan Schoutens</a><br/>(U. van Amsterdam)</li> + <li>Prof. <a href="http://www-thphys.physics.ox.ac.uk/people/SteveSimon/">Steve Simon</a><br/>(U. of Oxford)</li> + <li>Prof. <a href="http://bec.science.unitn.it/infm-bec/people/stringari.html">Sandro Stringari</a><br/>(Trento)</li> + <li>Prof. <a href="http://www.damtp.cam.ac.uk/user/tong/">David Tong</a><br/>(Cambridge)</li> + <li>Prof. <a href="http://www.physique.usherbrooke.ca/pages/en/node/3412">André-Marie Tremblay</a><br/>(Sherbrooke)</li> + <li>Prof. <a href="http://trivediresearch.org.ohio-state.edu">Nandini Trivedi</a><br/>(Ohio State U.)</li> </ul> </div> diff --git a/scipost/templates/scipost/base.html b/scipost/templates/scipost/base.html index b8c940011d79d91d630f4750454ab81dd4f80502..2bedef9de0857fbfb823f74ed24c21783a37cd06 100644 --- a/scipost/templates/scipost/base.html +++ b/scipost/templates/scipost/base.html @@ -1,24 +1,24 @@ +{% load render_bundle from webpack_loader %} + <!DOCTYPE html> <html lang="en"> <head> + {% load staticfiles %} + <link rel="stylesheet" type="text/css" href="{% static 'scipost/SciPost.css' %}" /> - <link rel="shortcut icon" href="{% static 'scipost/images/scipost_favicon.png' %}"/> + {% render_bundle 'bootstrap' 'css' %} + {% render_bundle 'main' 'css' %} - <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script> + <link rel="shortcut icon" href="{% static 'scipost/images/scipost_favicon.png' %}"/> - <script type="text/x-mathjax-config"> - MathJax.Hub.Config({ - tex2jax: { - inlineMath: [['$','$'], ['\\(','\\)']], - processEscapes: true - }}); - </script> - <script type="text/javascript" async src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>SciPost{% block pagetitle %}{% endblock pagetitle %}</title> + <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script> + {% block headsup %} {% endblock headsup %} </head> @@ -26,11 +26,30 @@ <body> {% include 'scipost/header.html' %} {% include 'scipost/navbar.html' %} + {% include 'scipost/messages.html' %} {% block bodysup %} {% endblock bodysup %} + {% block content %} + {% endblock content %} + {% include 'scipost/footer.html' %} - </body> + + <script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + tex2jax: { + inlineMath: [['$','$'], ['\\(','\\)']], + processEscapes: true + }}); + </script> + <script type="text/javascript" async src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script> + + {% render_bundle 'main' 'js' %} + {% render_bundle 'bootstrap' 'js' %} + + {% block footer_script %} + {% endblock footer_script %} +</body> </html> diff --git a/scipost/templates/scipost/citation_notifications.html b/scipost/templates/scipost/citation_notifications.html new file mode 100644 index 0000000000000000000000000000000000000000..65bcd3e8f6a8b38b1079caf63d43917ce895e2c4 --- /dev/null +++ b/scipost/templates/scipost/citation_notifications.html @@ -0,0 +1,29 @@ +{% extends 'scipost/base.html' %} + +{% block pagetitle %}: citation notifications{% endblock pagetitle %} + +{% block bodysup %} + + +<section> + <div class="flex-greybox"> + <h1>Citation notifications to process</h1> + </div> + + {% if errormessage %} + <h3 style="color: red;">{{ errormessage }}</h3> + {% endif %} + + {% if unprocessed_notifications %} + <ul> + {% for un in unprocessed_notifications %} + <li>{{ un }} <a href="{% url 'scipost:process_citation_notification' cn_id=un.id %}">Process this notification</a></li> + {% endfor %} + </ul> + {% else %} + <h3>There are no citation notifications to process.</h3> + <p>Return to your <a href="{% url 'scipost:personal_page' %}">personal page</a>.</p> + {% endif %} + + +{% endblock bodysup %} diff --git a/scipost/templates/scipost/edit_draft_reg_inv.html b/scipost/templates/scipost/edit_draft_reg_inv.html new file mode 100644 index 0000000000000000000000000000000000000000..fd3e872cba4410dca215921871304c9a00ec1d7b --- /dev/null +++ b/scipost/templates/scipost/edit_draft_reg_inv.html @@ -0,0 +1,56 @@ +{% extends 'scipost/base.html' %} + +{% block pagetitle %}: edit draft reg inv{% endblock pagetitle %} + +{% block bodysup %} + +<script> + $(document).ready(function(){ + + switch ($('select#id_invitation_type').val()) { + case "ci": + $("#div_id_cited_in_submission").show(); + $("#div_id_cited_in_publication").hide(); + break; + case "cp": + $("#div_id_cited_in_submission").hide(); + $("#div_id_cited_in_publication").show(); + break; + default: + $("#div_id_cited_in_submission").hide(); + $("#div_id_cited_in_publication").hide(); + } + + $('select#id_invitation_type').on('change', function() { + switch ($('select#id_invitation_type').val()) { + case "ci": + $("#div_id_cited_in_submission").show(); + $("#div_id_cited_in_publication").hide(); + break; + case "cp": + $("#div_id_cited_in_submission").hide(); + $("#div_id_cited_in_publication").show(); + break; + default: + $("#div_id_cited_in_submission").hide(); + $("#div_id_cited_in_publication").hide(); + } + }); + }); +</script> + +<section> + <div class="flex-greybox"> + <h1>Edit a draft registration invitation</h1> + </div> + {% if errormessage %} + <h3 style="color: red;">{{ errormessage }}</h3> + {% endif %} + <form action="{% url 'scipost:edit_draft_reg_inv' draft_id=draft.id %}" method="post"> + {% csrf_token %} + {% load crispy_forms_tags %} + {% crispy draft_inv_form %} + </form> +</section> + +{% endblock bodysup %} diff --git a/scipost/templates/scipost/feeds.html b/scipost/templates/scipost/feeds.html index 45a1b3892c12cb82f20fd047aac6cb73142b9317..336b807b220abd776222bcd0330dd0e8ae58f9e2 100644 --- a/scipost/templates/scipost/feeds.html +++ b/scipost/templates/scipost/feeds.html @@ -15,14 +15,71 @@ </div> <div class="flex-container"> - <div class="flex-whitebox"> + <div class="flex-greybox"> <h3>News feeds</h3> + </div> + </div> + <div class="flex-container"> + <div class="flex-whitebox"> <p>We provide both RSS (2.0) and Atom feeds for latest news and announcements.</p> <p>The URL of the RSS feed is <a href="https://scipost.org/rss/news/">https://scipost.org/rss/news/</a>.</p> <p>The URL of the Atom feed is <a href="https://scipost.org/atom/news/">https://scipost.org/atom/news/</a>.</p> </div> </div> - + <div class="flex-container"> + <div class="flex-greybox"> + <h3>Publications feeds</h3> + </div> + </div> + <div class="flex-container"> + <div class="flex-whitebox"> + <p>Similarly, we provide feeds for the latest publications.</p> + <p>The URL of the general RSS feed is <a href="https://scipost.org/rss/publications/">https://scipost.org/rss/publications</a>.</p> + <p>The URL of the general Atom feed is <a href="https://scipost.org/atom/publications/">https://scipost.org/atom/publications/</a>.</p> + <br/> + <p>You can also obtain feeds only for any specific specialization by using the links in the table below.</p> + </div> + </div> + <div class="flex-container"> + <div class="flex-greybox"> + <h3>Submissions feeds</h3> + </div> + </div> + <div class="flex-container"> + <div class="flex-whitebox"> + <p>We also provide feeds for the latest submissions.</p> + <p>The URL of the general RSS feed is <a href="https://scipost.org/rss/submissions/">https://scipost.org/rss/submissions</a>.</p> + <p>The URL of the general Atom feed is <a href="https://scipost.org/atom/submissions/">https://scipost.org/atom/submissions/</a>.</p> + <br/> + <p>You can also obtain feeds only for any specific specialization by using the links in the table below.</p> + </div> + </div> + <div class="flex-container"> + <div class="flex-greybox"> + <h3>Feeds by specific subject area</h3> + </div> + </div> + <div class="flex-container"> + <div class="flex-whitebox"> + <h3>Physics:</h3> + <table class="tablePadded10"> + <thead> + <th>Subject area</th><th>Submissions</th><th>Publications</th> + </thead> + <tbody> + {% for key, val in subject_areas_physics %} + <tr> + <td>{{ val }}</td> + <td><a href="{% url 'scipost:sub_feed_spec_rss' subject_area=key %}">RSS</a> + <a href="{% url 'scipost:sub_feed_spec_atom' subject_area=key %}">Atom</a></td> + <td><a href="{% url 'scipost:pub_feed_spec_rss' subject_area=key %}">RSS</a> + <a href="{% url 'scipost:pub_feed_spec_atom' subject_area=key %}">Atom</a></td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + </div> </section> diff --git a/scipost/templates/scipost/footer.html b/scipost/templates/scipost/footer.html index 58536d05471b1d96f358f6c5826b06d56c26cb8e..cf0e93dc29cf72679937cf6a27267644e1cd678a 100644 --- a/scipost/templates/scipost/footer.html +++ b/scipost/templates/scipost/footer.html @@ -1,28 +1,26 @@ {% load staticfiles %} -<footer> +<footer class="container-fluid py-2"> <div class="row"> - <div class="col-4"> - Copyright © <a href="{% url 'scipost:foundation' %}">SciPost Foundation</a>. + <div class="col-md-4"> + Copyright © <a href="{% url 'scipost:foundation' %}" target="_">SciPost Foundation</a>. <br/> <a href="mailto:admin@scipost.org">Contact the administrators.</a> <br/> <a href="{% url 'scipost:terms_and_conditions' %}">Terms and conditions.</a> </div> - <div class="col-2"> - Follow us on:<br/> + <div class="col-md-3"> + Follow us:<br/> <table> - <tr> - <td><a href="https://www.facebook.com/scipost" target="_blank" title="Facebook"><img src="{% static 'scipost/images/FB-f-Logo__white_29.png' %}" width="20" alt="Facebook"/></a></td> - <td><a href="https://twitter.com/scipost_dot_org" target="_blank" title="Twitter"><img src="{% static 'scipost/images/Twitter_Logo_Blue.png' %}" width="32" alt="Twitter"/></a></td> - </tr> + <tr> + <td><a href="//www.facebook.com/scipost" target="_blank" title="Facebook"><img src="{% static 'scipost/images/FB-f-Logo__white_29.png' %}" width="20" alt="Facebook"/></a></td> + <td><a href="//twitter.com/scipost_dot_org" target="_blank" title="Twitter"><img src="{% static 'scipost/images/Twitter_Logo_Blue.png' %}" width="32" alt="Twitter"/></a></td> + <td><a style="float: right;" href="{% url 'scipost:feeds' %}"><img src="{% static 'scipost/images/feed-icon-28x28.png' %}" alt="Feed logo" width="20"></a></td> + </tr> </table> </div> - <div class="col-1"> + <div class="col-md-5"> + <a rel="license" href="//creativecommons.org/licenses/by/4.0/" target="_blank"><img alt="Creative Commons License" style="border-width:0" src="//i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />Except where otherwise noted, all content on SciPost is licensed under a <a rel="license" href="//creativecommons.org/licenses/by/4.0/" target="_blank">Creative Commons Attribution 4.0 International License</a>. </div> - <div class="col-5"> - <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />Except where otherwise noted, all content on SciPost is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>. - </div> - </div> </footer> diff --git a/scipost/templates/scipost/header.html b/scipost/templates/scipost/header.html index e585931b2ba71b9f82bbfbb16da64fd16060cfdb..2f9ddf2da8de3355fb651ceb26017797df7015ca 100644 --- a/scipost/templates/scipost/header.html +++ b/scipost/templates/scipost/header.html @@ -5,7 +5,7 @@ <div class="flex-logobox"> <a href="{% url 'scipost:index' %}"><img src="{% static 'scipost/images/logo_scipost_RGB_HTML_groot.png' %}" alt="SciPost logo" width="240" /></a> </div> - <div class="flex-blurbbox"> + <div class="flex-blurbbox hidden-sm-down"> <p> <i>The complete scientific publication portal</i><br /> <i>Managed by professional scientists</i><br /> diff --git a/scipost/templates/scipost/howto.html b/scipost/templates/scipost/howto.html new file mode 100644 index 0000000000000000000000000000000000000000..f01dfda26dbd2a5a387fb77e4b2463485c38f77a --- /dev/null +++ b/scipost/templates/scipost/howto.html @@ -0,0 +1,25 @@ +{% extends 'scipost/base.html' %} + +{% block pagetitle %}: Howto Guides{% endblock pagetitle %} + +{% block bodysup %} + +{% load scipost_extras %} + + +<section> + <h1>SciPost Howto Guides</h1> + + <ul> + <li> + Post-acceptance: + <ul> + <li><a href="{% url 'scipost:howto_production' %}">production</a></li> + </ul> + </li> + </ul> + +</section> + + +{% endblock bodysup %} diff --git a/scipost/templates/scipost/howto_production.html b/scipost/templates/scipost/howto_production.html new file mode 100644 index 0000000000000000000000000000000000000000..d5fe13f22ab35ee5919adfc486e2f095b9909076 --- /dev/null +++ b/scipost/templates/scipost/howto_production.html @@ -0,0 +1,135 @@ +{% extends 'scipost/base.html' %} + +{% block pagetitle %}: Howto: Production{% endblock pagetitle %} + +{% block bodysup %} + +{% load scipost_extras %} + + +<section> + <h1>SciPost Publications: Production</h1> + <ul><li>Go back to the <a href="{% url 'scipost:howto' %}">Howto Guides</a> Page</li></ul> + + <p>This guide is meant for <strong>Editorial Administrators</strong> and <strong>Production Officers</strong>. It describes the post-acceptance workflow from paper acceptance to publication.</p> + + <p>Version: 2016-12-16</p> + + <hr class="hr12"/> + + <ol> + <li> + <h3>Preparation</h3> + <ol> + <li> + <p>Check the Submission's list of references: if the syle isn’t right (most importantly: DOI missing), ask authors to provide an updated <code>bibliography</code> or <code>.bbl</code> file by email.</p> + </li> + </ol> + </li><!-- Preparation --> + + <li> + <h3>Source retrieval and folder preparation</h3> + + <ol> + <li> + <p>On the SciPost server, navigate to folder <code>[Journal full name]/IN PRODUCTION</code>.</p> + </li> + <li> + <p>Create a folder <code>[journal abbrev. name]_[arxiv identifier]_[first author last name]</code>, e.g. <code>SciPost_Phys_1604.98141v3_Smart</code>.</p> + </li> + <li> + <p>Save the source from arXiv into this folder.</p> + </li> + <li> + <p>NOTE: the file will be named <code>####.#####v#</code>, which is not recognized as a <code>.tar.gz</code> file on a UNIX system.</p> + <p>Rename the file <code>####.####v#.tar.gz</code>. Unzipping it produces the folder <code>####.#####v#</code>.</p> + </li> + <li> + <p>Copy the files in <code>[Journal full name]/v##_production/FILES_TO_COPY_IN_PAPER_DIR</code> to the paper-in-production’s folder. There are 4 files: <code>by.eps, logo_scipost_with_bgd.pdf, SciPost_bibstyle.bst, SciPost.cls</code>.</p> + </p> + </li> + <li> + <p>Copy all the paper’s sources one level down (so from <code>####.#####v#</code> to the current directory).</p> + </li> + <li> + <p>Copy the <code>.tex</code> source to a new file using the name convention <code>[Journal abbrev. name]_####_#####v#_[first author last name].tex</code> (careful: use underscore instead of . between numbers).</p> + </li> + </ol> + + </li><!-- Source retrieval --> + + <li> + <h3>LaTeX file preparation</h3> + + + <ol> + <li> + <h4>Handling references</h4> + </li> + + <li> + <h4>Implementing the SciPost style</h4> + <ol> + <li> + <pre><code> +%%%%%%%% Begin SciPost Production addition + +\usepackage[bitstream-charter]{mathdesign} + +\hypersetup{ +colorlinks, +linkcolor={red!50!black}, +citecolor={blue!50!black}, +urlcolor={blue!80!black} +} + +\urlstyle{sf} + +\fancypagestyle{SPtitlepage}{% +\fancyhf{} +\fancyfoot[C]{\textbf{\thepage}} +\lhead{\raisebox{-1.5mm}[0pt][0pt]{\href{https://scipost.org}{\includegraphics[width=20mm]{logo_scipost_with_bgd.pdf}}}} +\chead{} +\rhead{\small \href{https://scipost.org/SciPostPhys.1.1.???}{SciPost Phys. 1, ??? (2016)}} +\renewcommand{\headrulewidth}{1pt} +} + +\fancypagestyle{SPbulk}{ +\fancyhf{} +\lhead{\raisebox{-1.5mm}[0pt][0pt]{\href{https://scipost.org}{\includegraphics[width=20mm]{logo_scipost_with_bgd.pdf}}}} +\rhead{\small \href{https://scipost.org/SciPostPhys.1.1.???}{SciPost Phys. 1, ??? (2016)}} +\fancyfoot[C]{\textbf{\thepage}} +\renewcommand{\headrulewidth}{1pt} +} + +%%%%%%%% End SciPost Production addition + </code></pre> + </li> + </ol> + </li> + </ol> + </li><!-- Implementing the SciPost style --> + + <li> + <h3>References validation</h3> + </li><!-- References validation --> + + <li> + <h3>Proofs</h3> + </li><!-- Proofs --> + + <li> + <h3>Online publication</h3> + </li><!-- Online publication --> + + <li> + <h3>Metadata preparation and DOI registration with Crossref</h3> + </li><!-- Metadata, DOI --> + + </ol> + + +</section> + + +{% endblock bodysup %} diff --git a/scipost/templates/scipost/index.html b/scipost/templates/scipost/index.html index 31733dda70ff5c43bd4880cbc000014ee92aa58c..dabc9388ca83178ee8bcce6235d67d1928e4f39d 100644 --- a/scipost/templates/scipost/index.html +++ b/scipost/templates/scipost/index.html @@ -4,135 +4,148 @@ {% block bodysup %} +<div class="container"> + <div class="row"> + {% if latest_newsitems %} + <div class="col-md-6 {% if user.is_authenticated %}col-lg-4{% else %}col-lg-3{% endif %}"> + <div class="panel"> + <h1><a href="{% url 'scipost:news' %}">News</a><a style="float: right;" href="{% url 'scipost:feeds' %}"><img src="{% static 'scipost/images/feed-icon-14x14.png' %}" alt="Feed logo" width="14"></a></h1> + <p>Latest news and announcements.</p> + <hr class="hr6"/> + <ul class="NewsItemsList"> + {% for item in latest_newsitems %} + <li>{{ item.descriptor_small|linebreaks }}</li> + {% endfor %} + </ul> + </div> + </div> + {% endif %} -<section> - <div class="flex-container"> - {% if latest_newsitems %} - <div class="flex-greybox320"> - <h1><a href="{% url 'scipost:news' %}">News</a><a style="float: right;" href="{% url 'scipost:feeds' %}"><img src="{% static 'scipost/images/feed-icon-14x14.png' %}" alt="Feed logo" width="14"></a></h1> - <p>Latest news and announcements.</p> - <hr class="hr6"/> - <ul class="NewsItemsList"> - {% for item in latest_newsitems %} - <li>{{ item.descriptor_small|linebreaks }}</li> - {% endfor %} - </ul> - </div> - {% endif %} - <div class="flex-greybox320"> - <h1><a href="{% url 'scipost:about' %}">About SciPost</a></h1> - <p>SciPost is a complete scientific publication portal managed by active professional scientists.</p> - <p>It is purely online-based and offers openly, globally and perpetually accessible science.</p> - <h3><a href="{% url 'scipost:about' %}#advisory_board">Advisory Board</a></h3> - <h3><a href="{% url 'scipost:call' %}">A call for openness</a></h3> - <h3><a href="{% url 'scipost:quick_tour' %}">Quick Tour</a></h3> - <h3><a href="{% url 'scipost:FAQ' %}">Frequently asked questions</a></h3> - <h3><a href="{% url 'scipost:about' %}">Read more</a></h3> - <h4><em>In the press:</em></h4> - <ul> - <li><a href="{% static 'scipost/press/SciPost_in_FOM_expres_mei_2016.pdf' %}">FOM expres 5/2016</a> (<a href="{% static 'scipost/press/SciPost_in_FOM_expres_mei_2016_eng.pdf' %}">English vn</a>)</li> - <li><a href="http://www.uva.nl/en/news-events/news/uva-news/content/news/2016/10/open-access-platform-scipost-launches-inaugural-edition-of-first-journal.html">Inaugural issue 10/2016</a></li> - </ul> - </div> + <div class="col-md-6 {% if user.is_authenticated %}col-lg-4{% else %}col-lg-3{% endif %}"> + <div class="panel"> + <h1><a href="{% url 'scipost:about' %}">About SciPost</a></h1> + <p>SciPost is a complete scientific publication portal managed by active professional scientists.</p> + <p>It is purely online-based and offers openly, globally and perpetually accessible science.</p> + <h3><a href="{% url 'scipost:about' %}#advisory_board">Advisory Board</a></h3> + <h3><a href="{% url 'scipost:call' %}">A call for openness</a></h3> + <h3><a href="{% url 'scipost:quick_tour' %}">Quick Tour</a></h3> + <h3><a href="{% url 'scipost:FAQ' %}">Frequently asked questions</a></h3> + <h3><a href="{% url 'scipost:about' %}">Read more</a></h3> + <h4><em>In the press:</em></h4> + <ul> + <li><a href="{% static 'scipost/press/SciPost_in_FOM_expres_mei_2016.pdf' %}">FOM expres 5/2016</a> (<a href="{% static 'scipost/press/SciPost_in_FOM_expres_mei_2016_eng.pdf' %}">English vn</a>)</li> + <li><a href="http://www.uva.nl/en/news-events/news/uva-news/content/news/2016/10/open-access-platform-scipost-launches-inaugural-edition-of-first-journal.html">Inaugural issue 10/2016</a></li> + </ul> + </div> + </div> - {% if not user.is_authenticated %} - <div class="flex-greybox320"> - <h1><a href="{% url 'scipost:register' %}">Register</a></h1> - <p>Professional scientists (PhD students and above) can become Contributors to SciPost by filling the - <a href="{% url 'scipost:register' %}">registration form</a>.</p> - <h4>Registered contributors can among others:</h4> - <ul> - <li>Submit manuscripts to SciPost Journals</li> - <li>Post reports and comments</li> - <li>Express opinions on contributions</li> - <li>Subscribe to feeds</li> - <li>Use productivity tools</li> - </ul> - </div> - {% endif %} + {% if not user.is_authenticated %} + <div class="col-md-6 col-lg-3"> + <div class="panel"> + <h1><a href="{% url 'scipost:register' %}">Register</a></h1> + <p>Professional scientists (PhD students and above) can become Contributors to SciPost by filling the + <a href="{% url 'scipost:register' %}">registration form</a>.</p> + <h4>Registered contributors can among others:</h4> + <ul> + <li>Submit manuscripts to SciPost Journals</li> + <li>Post reports and comments</li> + <li>Express opinions on contributions</li> + <li>Subscribe to feeds</li> + <li>Use productivity tools</li> + </ul> + </div> + </div> + {% endif %} - <div class="flex-greybox320"> - <h1><a href="{% url 'journals:journals' %}">Journals</a></h1> - <p>SciPost publishes a portfolio of high-quality two-way open access scientific journals.</p> - <p>All SciPost Journals implement the stringent <a href="/FAQ#pwr">peer-witnessed refereeing</a> principle.</p> - <p>All Journals are fully managed by professional scientists.</p> - <h3><a href="{% url 'scipost:about' %}#editorial_college_physics">Editorial College (Physics)</a></h3> - <h3><a href="{% url 'submissions:sub_and_ref_procedure' %}">Submission and refereeing procedure</a></h3> - <br/> - <p>View and comment on (login required) recent <a href="{% url 'submissions:submissions' %}">Submissions</a></p> - <br/> - <div class="SciPostPhysicsBanner"> - <h3><a href="{% url 'journals:scipost_physics' %}">SciPost Physics</a></h3> - </div> - <br/> - <p style="color: red;"><em>If you support and believe in our mission, <br/>be a pioneer and submit a manuscript!</em></p> - </div> + <div class="col-md-6 {% if user.is_authenticated %}col-lg-4{% else %}col-lg-3{% endif %}"> + <div class="panel"> + <h1><a href="{% url 'journals:journals' %}">Journals</a></h1> + <p>SciPost publishes a portfolio of high-quality two-way open access scientific journals.</p> + <p>All SciPost Journals implement the stringent <a href="/FAQ#pwr">peer-witnessed refereeing</a> principle.</p> + <p>All Journals are fully managed by professional scientists.</p> + <h3><a href="{% url 'scipost:about' %}#editorial_college_physics">Editorial College (Physics)</a></h3> + <h3><a href="{% url 'submissions:sub_and_ref_procedure' %}">Submission and refereeing procedure</a></h3> + + <br/> + + <p>View and comment on (login required) recent <a href="{% url 'submissions:submissions' %}">Submissions</a></p> - <br/> - </div> - <div class="flex-container"> - <div class="flex-greybox320"> - <h1><a href="{% url 'commentaries:commentaries' %}">Commentaries</a></h1> - <p>SciPost Commentaries allow Contributors to comment and build on all existing literature.</p> - <br/> - {% comment %} - <h3>Search SciPost Commentaries:</h3> - <form action="{% url 'commentaries:commentaries' %}" method="post"> - {% csrf_token %} - <table> - {{ commentary_search_form.as_table }} - </table> - <input type="submit" name="Submit" /> - </form> - {% endcomment %} - <h3><a href="{% url 'commentaries:howto' %}">SciPost Commentaries how-to</a></h3> - <h3><a href="{% url 'commentaries:request_commentary' %}">Request a new Commentary Page</a></h3> + <br/> + + <div class="SciPostPhysicsBanner"> + <h3><a href="{% url 'journals:scipost_physics' %}">SciPost Physics</a></h3> + </div> + <br/> + <p style="color: red;"><em>If you support and believe in our mission, <br/>be a pioneer and submit a manuscript!</em></p> + </div> + </div> </div> - <div class="flex-greybox320"> - <h1><a href="{% url 'theses:theses' %}">Theses</a></h1> - <p>SciPost Theses allow Contributors to find Master's, Ph.D. and Habilitation theses relevant to their work.</p> - <br/> - {% comment %} - <h3>Search SciPost Theses:</h3> - <form action="{% url 'theses:theses' %}" method="post"> - {% csrf_token %} - <table> - {{ thesislink_search_form.as_table }} - </table> - <input type="submit" name="Submit" /> - </form> - {% endcomment %} - <h3><a href="{% url 'theses:request_thesislink' %}">Request a new Thesis Link</a></h3> + + <div class="row"> + <div class="col-md-6 col-lg-3"> + <div class="panel"> + <h1><a href="{% url 'commentaries:commentaries' %}">Commentaries</a></h1> + <p>SciPost Commentaries allow Contributors to comment and build on all existing literature.</p> + <br/> + {% comment %} + <h3>Search SciPost Commentaries:</h3> + <form action="{% url 'commentaries:commentaries' %}" method="post"> + {% csrf_token %} + <table> + {{ commentary_search_form.as_table }} + </table> + <input type="submit" name="Submit" /> + </form> + {% endcomment %} + <h3><a href="{% url 'commentaries:howto' %}">SciPost Commentaries how-to</a></h3> + <h3><a href="{% url 'commentaries:request_commentary' %}">Request a new Commentary Page</a></h3> + </div> + </div> + <div class="col-md-6 col-lg-3"> + <div class="panel"> + <h1><a href="{% url 'theses:theses' %}">Theses</a></h1> + <p>SciPost Theses allow Contributors to find Master's, Ph.D. and Habilitation theses relevant to their work.</p> + <br/> + {% comment %} + <h3>Search SciPost Theses:</h3> + <form action="{% url 'theses:theses' %}" method="post"> + {% csrf_token %} + <table> + {{ thesislink_search_form.as_table }} + </table> + <input type="submit" name="Submit" /> + </form> + {% endcomment %} + <h3><a href="{% url 'theses:request_thesislink' %}">Request a new Thesis Link</a></h3> + </div> + </div> </div> - </div> -</section> +</div> -<section> - <hr class="hr12"> - <div class="row"> - <div class="col-6"> - <h1>SciPost is endorsed by</h1> - <div class="row"> - <div class="col-6"> - <a href="https://www.nwo.nl/en"><img src="{% static 'scipost/images/NWO_logo_EN.jpg' %}" alt="NWO logo" width="300" /></a> - <p id="NWOOpenAccess">All articles published in SciPost Journals fulfill the Gold standard Open Access requirements of the NWO, as - stipulated on the NWO’s <a href="https://www.nwo.nl/en/policies/open+science">Open Science page</a>.</p> - </div> - <div class="col-1"> - </div> - <div class="col-4"> - <a href="https://www.fom.nl"><img src="{% static 'scipost/images/FOMlogo_fc.jpg' %}" alt="FOM logo" width="100" /></a> - <p style="font-size: 50%">FOM is part of NWO</p> - </div> - </div> - </div> - <div class="col-6"> - <h1>SciPost is a member of</h1> - <br/> - <a href="http://www.crossref.org"><img src="https://assets.crossref.org/logo/crossref-logo-200.svg" width="100" alt="Crossref logo"></a> +<div class="container"> + <hr class="hr12"> + <div class="row"> + <div class="col-md-6"> + <h1>SciPost is endorsed by</h1> + <div class="row"> + <div class="col-md-6"> + <a href="//www.nwo.nl/en" target="_blank"><img src="{% static 'scipost/images/NWO_logo_EN.jpg' %}" alt="NWO logo" width="300" /></a> + <p id="NWOOpenAccess">All articles published in SciPost Journals fulfill the Gold standard Open Access requirements of the NWO, as + stipulated on the NWO’s <a href="//www.nwo.nl/en/policies/open+science" target="_blank">Open Science page</a>.</p> + </div> + <div class="col-md-6"> + <a href="//www.fom.nl" target="_blank"><img src="{% static 'scipost/images/FOMlogo_fc.jpg' %}" alt="FOM logo" width="100" /></a> + <p style="font-size: 50%">FOM is part of NWO</p> + </div> + </div> + </div> + <div class="col-md-6"> + <h1>SciPost is a member of</h1> + <br/> + <a href="//www.crossref.org" target="_blank"><img src="//assets.crossref.org/logo/crossref-logo-200.svg" width="100" alt="Crossref logo"></a> + </div> </div> - </div> -</section> +</div> {% endblock bodysup %} diff --git a/scipost/templates/scipost/login.html b/scipost/templates/scipost/login.html index fc67e14a2e8f54c2d0e89af847216a8a33775e95..f52e1cc6a656030c50b797c16ff4ea3297aff19b 100644 --- a/scipost/templates/scipost/login.html +++ b/scipost/templates/scipost/login.html @@ -4,34 +4,35 @@ {% block bodysup %} -<section> - <div class="row"> - <div class="col-6"> - <h1>Log in to SciPost</h1> +{% load bootstrap %} + +<div class="container"> + <div class="row my-4"> + <div class="col-md-6"> + <h1 class="mb-md-2">Log in to SciPost</h1> <form action="{% url 'scipost:login' %}" method="post"> - {% csrf_token %} - <table> - <ul> - {{ form.as_table }} - </ul> - </table> - <input type="submit" value="Login" /> - {% if next %} - <input type="hidden" name="next" value="{{ next }}"/> - {% endif %} + {% csrf_token %} + + {{ form|bootstrap }} + + <input class="btn btn-primary" type="submit" value="Login" /> + + {% if next %} + <input type="hidden" name="next" value="{{ next }}"/> + {% endif %} </form> <br/> <a href="{% url 'scipost:reset_password' %}">Forgot your password?</a> </div> - <div class="col-6"> + <div class="col-md-6"> <h1>Not registered as a Contributor to SciPost?</h1> <p>If you are a professional scientist (PhD student and above), you can register by filling the <a href="{% url 'scipost:register' %}">registration form</a>.</p> </div> </div> -</section> +</div> {% endblock bodysup %} diff --git a/scipost/templates/scipost/messages.html b/scipost/templates/scipost/messages.html new file mode 100644 index 0000000000000000000000000000000000000000..ac8c6dff8c12a6bea16bcdaca31738d52cd55336 --- /dev/null +++ b/scipost/templates/scipost/messages.html @@ -0,0 +1,8 @@ +{% for message in messages %} + <div class="alert {{ message.tags }} alert-dismissible" role="alert"> + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + {{ message }} + </div> +{% endfor %} diff --git a/scipost/templates/scipost/navbar.html b/scipost/templates/scipost/navbar.html index 06bce0dfb280c0d4e512d7b8102552fc09385e1b..a8742b17d79f3a1c11c3adc064b4850c9ce695d1 100644 --- a/scipost/templates/scipost/navbar.html +++ b/scipost/templates/scipost/navbar.html @@ -1,27 +1,47 @@ -<nav> - <div class="row"> - <div class="col-5"> - <a href="{% url 'scipost:index' %}" {% if request.path == '/' %}class="highlighted"{% endif %}>Home</a> - <a href="{% url 'journals:journals' %}" {% if "/journals/" in request.path %}class="highlighted"{% endif %}>Journals</a> - <a href="{% url 'submissions:submissions' %}" {% if "/submissions/" in request.path %}class="highlighted"{% endif %}>Submissions</a> - <a href="{% url 'commentaries:commentaries' %}" {% if "/commentaries/" in request.path %}class="highlighted"{% endif %}>Commentaries</a> - <a href="{% url 'theses:theses' %}" {% if "/theses/" in request.path %}class="highlighted"{% endif %}>Theses</a> - </div> - <div class="col-4"> +<nav class="navbar navbar-light navbar-toggleable-md"> + <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#header-navbar"> + <span class="navbar-toggler-icon"></span> + </button> + <a class="navbar-brand" href="#"></a> + <div class="collapse navbar-collapse" id="header-navbar"> + <ul class="navbar-nav mr-auto"> + <li class="nav-item{% if request.path == '/' %} active{% endif %}"> + <a href="{% url 'scipost:index' %}" class="nav-link">Home</a> + </li> + <li class="nav-item{% if '/journals/' in request.path %} active{% endif %}"> + <a href="{% url 'journals:journals' %}" class="nav-link">Journals</a> + </li> + <li class="nav-item{% if '/submissions/' in request.path %} active{% endif %}"> + <a class="nav-link" href="{% url 'submissions:submissions' %}">Submissions</a> + </li> + <li class="nav-item{% if '/commentaries/' in request.path %} active{% endif %}"> + <a class="nav-link" href="{% url 'commentaries:commentaries' %}">Commentaries</a> + </li> + <li class="nav-item{% if '/theses/' in request.path %} active{% endif %}"> + <a class="nav-link" href="{% url 'theses:theses' %}">Theses</a> + </li> + {% if user.is_authenticated %} - <p id="loggedinas"><em>Logged in as {{ user.username }}</em></p> - <a href="{% url 'scipost:logout' %}">Logout</a> - <a href="{% url 'scipost:personal_page' %}" {% if "/personal_page" in request.path %}class="highlighted"{% endif %}>Personal Page</a> + <li class="nav-item highlighted"> + <span class="nav-link">Logged in as {{ user.username }}</span> + </li> + <li class="nav-item{% if '/personal_page' in request.path %} active{% endif %}"> + <a class="nav-link" href="{% url 'scipost:personal_page' %}">Personal Page</a> + </li> + <li class="nav-item"> + <a class="nav-link" href="{% url 'scipost:logout' %}">Logout</a> + </li> {% else %} - <a href="{% url 'scipost:login' %}">Login</a> + <li class="nav-item{% if request.path == '/login/' %} active{% endif %}"> + <a class="nav-link" href="{% url 'scipost:login' %}">Login</a> + </li> {% endif %} - </div> - <div class="col-3"> - <form action="{% url 'scipost:search' %}" method="post"> - {% csrf_token %} - {{ search_form.as_p }} - <input type="submit" value="Search"/> - </form> - </div> + + </ul> + <form action="{% url 'scipost:search' %}" method="post" class="form-inline"> + {% csrf_token %} + {{ search_form }} + <button class="btn btn-primary" type="submit">Search</button> + </form> </div> </nav> diff --git a/scipost/templates/scipost/personal_page.html b/scipost/templates/scipost/personal_page.html index dba8b6bad2fccb0a85032e2275c86a594f585220..d2645698fd4982108e18cd393f6bad8a3bee8bed 100644 --- a/scipost/templates/scipost/personal_page.html +++ b/scipost/templates/scipost/personal_page.html @@ -102,7 +102,7 @@ <ul class="personalTabMenu"> <li><a class="TabItem" id="AccountTab">Account</a></li> - {% if request.user|is_in_group:'Editorial Administrators' or request.user|is_in_group:'Advisory Board' or request.user|is_in_group:'Editorial College' or request.user|is_in_group:'Vetting Editors' or request.user|is_in_group:'Ambassadors' %} + {% if request.user|is_in_group:'Editorial Administrators' or request.user|is_in_group:'Advisory Board' or request.user|is_in_group:'Editorial College' or request.user|is_in_group:'Vetting Editors' or request.user|is_in_group:'Ambassadors' or request.user|is_in_group:'Junior Ambassadors' %} <li><a class="TabItem" id="EdActionTab">Editorial Actions</a></li> {% endif %} <li><a class="TabItem" id="RefereeingTab">Refereeing</a></li> @@ -221,7 +221,7 @@ </section> -{% if request.user|is_in_group:'SciPost Administrators' or request.user|is_in_group:'Editorial Administrators' or request.user|is_in_group:'Editorial College' or request.user|is_in_group:'Vetting Editors' or request.user|is_in_group:'Ambassadors' %} +{% if request.user|is_in_group:'SciPost Administrators' or request.user|is_in_group:'Editorial Administrators' or request.user|is_in_group:'Editorial College' or request.user|is_in_group:'Vetting Editors' or request.user|is_in_group:'Ambassadors' or request.user|is_in_group:'Junior Ambassadors' %} <section class="TabSection" id="EdActions"> <hr class="hr12"> <div class="flex-greybox"> @@ -244,6 +244,12 @@ <li><a href="{% url 'scipost:registration_invitations' %}">Manage Registration Invitations</a></li> {% endif %} </ul> + <h3>Notifications</h3> + <ul> + {% if perms.scipost.can_manage_registration_invitations %} + <li><a href="{% url 'scipost:citation_notifications' %}">Manage citation notifications</a></li> + {% endif %} + </ul> <h3>Email communications</h3> <ul> {% if perms.scipost.can_email_group_members %} diff --git a/scipost/templates/scipost/registration_invitations.html b/scipost/templates/scipost/registration_invitations.html index f74909628e7797f71ad13b1c829c1ec66acdfab7..0b5b8cb50a7d1072c853a8658c2bba0aeb8fabda 100644 --- a/scipost/templates/scipost/registration_invitations.html +++ b/scipost/templates/scipost/registration_invitations.html @@ -9,8 +9,19 @@ <script> $(document).ready(function(){ + switch ($('select#id_invitation_type').val()) { + case "ci": + $("#div_id_cited_in_submission").show(); + $("#div_id_cited_in_publication").hide(); + break; + case "cp": + $("#div_id_cited_in_submission").hide(); + $("#div_id_cited_in_publication").show(); + break; + default: $("#div_id_cited_in_submission").hide(); $("#div_id_cited_in_publication").hide(); + } $('select#id_invitation_type').on('change', function() { switch ($('select#id_invitation_type').val()) { @@ -67,7 +78,12 @@ <td>{{ draft.date_drafted }} </td> <td>{{ draft.invitation_type }}</td> <td>{{ draft.drafted_by.user.last_name }}</td> + <td><a href="{% url 'scipost:edit_draft_reg_inv' draft_id=draft.id %}">Edit</a></td> <td><a href="{% url 'scipost:registration_invitations_from_draft' draft_id=draft.id %}">Process</a></td> + <td><a href="{% url 'scipost:mark_draft_inv_as_processed' draft_id=draft.id %}">Mark as processed</a></td> + {% for ac in draft|associated_contributors %} + <td><a href="{% url 'scipost:map_draft_reg_inv_to_contributor' draft_id=draft.id contributor_id=ac.id %}">Map to {{ ac.user.first_name }} {{ ac.user.last_name }}</a></td> + {% endfor %} </tr> {% endfor %} </table> diff --git a/scipost/templates/scipost/reset_password.html b/scipost/templates/scipost/reset_password.html index d8704d84a1185ae01fafd430ee6a774ef3f5b09a..429ed46c71c7a1f728fdb45bd427a4b18bc62ffd 100644 --- a/scipost/templates/scipost/reset_password.html +++ b/scipost/templates/scipost/reset_password.html @@ -3,12 +3,19 @@ {% block pagetitle %}: Reset Password{% endblock pagetitle %} {% block bodysup %} -<section> + +{% load bootstrap %} + +<div class="container"> + <div class="row"> + <div class="col-md-4"> <h3>Reset password request form</h3> <form method="post"> {% csrf_token %} - {{ form.as_p }} - <button type="submit">Submit</button> + {{ form|bootstrap }} + <input class="btn btn-primary" type="submit" value="Submit" /> </form> -</section> + </div> + </div> +</div> {% endblock bodysup %} diff --git a/scipost/templates/scipost/unsubscribe.html b/scipost/templates/scipost/unsubscribe.html new file mode 100644 index 0000000000000000000000000000000000000000..c32b358b0aae78a5d9510678719531e29e479708 --- /dev/null +++ b/scipost/templates/scipost/unsubscribe.html @@ -0,0 +1,14 @@ +{% extends 'scipost/base.html' %} + +{% block pagetitle %}: Unsubscribe{% endblock pagetitle %} + +{% block bodysup %} +<section> + <h3>Unsubscribe</h3> + <p>To let us know that you do not want to receive any non-essential email + from SciPost (citation notifications, announcements etc), + <a href="{% url 'scipost:unsubscribe_confirm' key=contributor.activation_key %}">click here</a>. + </p> + <p>You can reset this preference at any time from your <a href="{% url 'scipost:personal_page' %}">personal page</a>.</p> +</section> +{% endblock bodysup %} diff --git a/scipost/templates/tags/bootstrap/field.html b/scipost/templates/tags/bootstrap/field.html new file mode 100644 index 0000000000000000000000000000000000000000..803a3e09bd4d51e93a8e7e844ef70d025236316e --- /dev/null +++ b/scipost/templates/tags/bootstrap/field.html @@ -0,0 +1,66 @@ +{% load bootstrap %} + +<div class="form-group row{% if field.errors %} has-error{% endif %}"> + {% if field|is_checkbox %} + <div class="{{ classes.single_value }}"> + <div class="checkbox"> + {% if field.auto_id %} + <label {% if field.field.required and form.required_css_class %}class="{{ form.required_css_class }}"{% endif %}> + {{ field }} <span>{{ field.label }}</span> + </label> + {% endif %} + {% for error in field.errors %} + <span class="help-block {{ form.error_css_class }}">{{ error }}</span> + {% endfor %} + + {% if field.help_text %} + <p class="help-block"> + {{ field.help_text|safe }} + </p> + {% endif %} + </div> + </div> + {% elif field|is_radio %} + {% if field.auto_id %} + <label class="col-form-label {{ classes.label }}{% if field.field.required %} {{ form.required_css_class }}{% endif %}">{{ field.label }}</label> + {% endif %} + <div class="{{ classes.value }}"> + {% for choice in field %} + <div class="radio"> + <label> + {{ choice.tag }} + {{ choice.choice_label }} + </label> + </div> + {% endfor %} + + {% for error in field.errors %} + <span class="help-block {{ form.error_css_class }}">{{ error }}</span> + {% endfor %} + + {% if field.help_text %} + <p class="help-block"> + {{ field.help_text|safe }} + </p> + {% endif %} + </div> + {% else %} + {% if field.auto_id %} + <label class="col-form-label {{ classes.label }}{% if field.field.required %} {{ form.required_css_class }}{% endif %}" for="{{ field.auto_id }}">{{ field.label }}</label> + {% endif %} + + <div class="{{ classes.value }}{% if field|is_multiple_checkbox %} multiple-checkbox{% endif %}"> + {{ field }} + + {% for error in field.errors %} + <span class="help-block {{ form.error_css_class }}">{{ error }}</span> + {% endfor %} + + {% if field.help_text %} + <p class="help-block"> + {{ field.help_text|safe }} + </p> + {% endif %} + </div> + {% endif %} +</div> diff --git a/scipost/templates/tags/bootstrap/form.html b/scipost/templates/tags/bootstrap/form.html new file mode 100644 index 0000000000000000000000000000000000000000..97a499eb78aedd6a105adde185ac06df059b55c1 --- /dev/null +++ b/scipost/templates/tags/bootstrap/form.html @@ -0,0 +1,16 @@ +{% if form.non_field_errors %} + <div class="alert alert-danger"> + <a class="close" data-dismiss="alert">×</a> + {% for non_field_error in form.non_field_errors %} + {{ non_field_error }} + {% endfor %} + </div> +{% endif %} + +{% for field in form.hidden_fields %} + {{ field }} +{% endfor %} + +{% for field in form.visible_fields %} + {% include 'tags/bootstrap/field.html' %} +{% endfor %} diff --git a/scipost/templates/tags/bootstrap/formset.html b/scipost/templates/tags/bootstrap/formset.html new file mode 100644 index 0000000000000000000000000000000000000000..eb5722f819c06ea17cfc9bf104411aa73c30b2e6 --- /dev/null +++ b/scipost/templates/tags/bootstrap/formset.html @@ -0,0 +1,11 @@ +{{ formset.management_form }} + +{% for form in formset %} + {% if classes.label == 'sr-only' %} + <div class="form-inline"> + {% include "tags/bootstrap/form.html" with form=form %} + </div> + {%else%} + {% include "tags/bootstrap/form.html" with form=form %} + {% endif %} +{% endfor %} diff --git a/scipost/templatetags/bootstrap.py b/scipost/templatetags/bootstrap.py new file mode 100644 index 0000000000000000000000000000000000000000..7e381793995bebe008e001b14e19cba6a7a5125f --- /dev/null +++ b/scipost/templatetags/bootstrap.py @@ -0,0 +1,78 @@ +from django import forms +from django.template import Context +from django.template.loader import get_template +from django import template + + +register = template.Library() + +# Custom filter originally created by tzangms +# and customized for use with Bootstrap 4.x +# https://github.com/tzangms/django-bootstrap-form + + +@register.filter +def bootstrap(element): + markup_classes = {'label': 'col-md-2', 'value': 'col-md-10', 'single_value': ''} + return render(element, markup_classes) + + +@register.filter +def bootstrap_inline(element): + markup_classes = {'label': 'sr-only', 'value': '', 'single_value': ''} + return render(element, markup_classes) + + +@register.filter +def add_input_classes(field): + if not is_checkbox(field) and not is_multiple_checkbox(field) \ + and not is_radio(field) and not is_file(field): + field_classes = field.field.widget.attrs.get('class', '') + field_classes += ' form-control' + field.field.widget.attrs['class'] = field_classes + + +def render(element, markup_classes): + element_type = element.__class__.__name__.lower() + + if element_type == 'boundfield': + add_input_classes(element) + template = get_template("tags/bootstrap/field.html") + context = Context({'field': element, 'classes': markup_classes, 'form': element.form}) + else: + has_management = getattr(element, 'management_form', None) + if has_management: + for form in element.forms: + for field in form.visible_fields(): + add_input_classes(field) + + template = get_template("tags/bootstrap/formset.html") + context = Context({'formset': element, 'classes': markup_classes}) + else: + for field in element.visible_fields(): + add_input_classes(field) + + template = get_template("tags/bootstrap/form.html") + context = Context({'form': element, 'classes': markup_classes}) + + return template.render(context) + + +@register.filter +def is_checkbox(field): + return isinstance(field.field.widget, forms.CheckboxInput) + + +@register.filter +def is_multiple_checkbox(field): + return isinstance(field.field.widget, forms.CheckboxSelectMultiple) + + +@register.filter +def is_radio(field): + return isinstance(field.field.widget, forms.RadioSelect) + + +@register.filter +def is_file(field): + return isinstance(field.field.widget, forms.FileInput) diff --git a/scipost/templatetags/scipost_extras.py b/scipost/templatetags/scipost_extras.py index 2c7c70788eab4fd90681437b46a96ba4b874a9b9..3a34f87e76bc8559d8943d360f43469a14860f95 100644 --- a/scipost/templatetags/scipost_extras.py +++ b/scipost/templatetags/scipost_extras.py @@ -1,6 +1,8 @@ from django import template from django.contrib.auth.models import Group +from scipost.models import Contributor + register = template.Library() @@ -21,3 +23,9 @@ def sort_by(queryset, order): def is_in_group(user, group_name): group = Group.objects.get(name=group_name) return True if group in user.groups.all() else False + + +@register.filter(name='associated_contributors') +def associated_contributors(draft): + return Contributor.objects.filter( + user__last_name__icontains=draft.last_name) diff --git a/scipost/urls.py b/scipost/urls.py index e9438ef27af09ec6be7c11d0a9f5c18fef22fd93..facaec8388b3c35a219c831f1d02871fb6cd4338 100644 --- a/scipost/urls.py +++ b/scipost/urls.py @@ -2,7 +2,7 @@ from django.conf.urls import include, url from django.views.generic import TemplateView from . import views -from .feeds import LatestNewsFeedRSS, LatestNewsFeedAtom, LatestCommentsFeedRSS, LatestCommentsFeedAtom +from .feeds import LatestNewsFeedRSS, LatestNewsFeedAtom, LatestCommentsFeedRSS, LatestCommentsFeedAtom, LatestSubmissionsFeedRSS, LatestSubmissionsFeedAtom, LatestPublicationsFeedRSS, LatestPublicationsFeedAtom from journals import views as journals_views @@ -31,14 +31,36 @@ urlpatterns = [ name='privacy_policy'), # Feeds - url(r'^feeds$', TemplateView.as_view(template_name='scipost/feeds.html'), name='feeds'), + url(r'^feeds$', views.feeds, #TemplateView.as_view(template_name='scipost/feeds.html'), + name='feeds'), url(r'^rss/news/$', LatestNewsFeedRSS()), url(r'^atom/news/$', LatestNewsFeedAtom()), url(r'^rss/comments/$', LatestCommentsFeedRSS()), url(r'^atom/comments/$', LatestCommentsFeedAtom()), + url(r'^rss/submissions/$', + LatestSubmissionsFeedRSS()), + url(r'^rss/submissions/(?P<subject_area>[a-zA-Z]+:[A-Z]{2,})$', + LatestSubmissionsFeedRSS(), + name='sub_feed_spec_rss'), + url(r'^atom/submissions/$', + LatestSubmissionsFeedAtom()), + url(r'^atom/submissions/(?P<subject_area>[a-zA-Z]+:[A-Z]{2,})$', + LatestSubmissionsFeedAtom(), + name='sub_feed_spec_atom'), + url(r'^rss/publications/$', + LatestPublicationsFeedRSS()), + url(r'^rss/publications/(?P<subject_area>[a-zA-Z]+:[A-Z]{2,})$', + LatestPublicationsFeedRSS(), + name='pub_feed_spec_rss'), + url(r'^atom/publications/$', + LatestPublicationsFeedAtom()), + url(r'^atom/publications/(?P<subject_area>[a-zA-Z]+:[A-Z]{2,})$', + LatestPublicationsFeedAtom(), + name='pub_feed_spec_atom'), # Search url(r'^search$', views.search, name='search'), + url(r'^search/', include('haystack.urls')), ################ # Contributors: @@ -56,6 +78,9 @@ urlpatterns = [ url(r'^already_activated$', TemplateView.as_view(template_name='scipost/already_activated.html'), name='already_activated'), + url(r'^unsubscribe/(?P<key>.+)$', views.unsubscribe, name='unsubscribe'), + url(r'^unsubscribe_confirm/(?P<key>.+)$', + views.unsubscribe_confirm, name='unsubscribe_confirm'), url(r'^vet_registration_requests$', views.vet_registration_requests, name='vet_registration_requests'), url(r'^vet_registration_request_ack/(?P<contributor_id>[0-9]+)$', @@ -66,6 +91,10 @@ urlpatterns = [ views.registration_invitations, name="registration_invitations"), url(r'^draft_registration_invitation$', views.draft_registration_invitation, name="draft_registration_invitation"), + url(r'^edit_draft_reg_inv/(?P<draft_id>[0-9]+)$', + views.edit_draft_reg_inv, name="edit_draft_reg_inv"), + url(r'^map_draft_reg_inv_to_contributor/(?P<draft_id>[0-9]+)/(?P<contributor_id>[0-9]+)$', + views.map_draft_reg_inv_to_contributor, name="map_draft_reg_inv_to_contributor"), url(r'^registration_invitations_cleanup$', views.registration_invitations_cleanup, name="registration_invitations_cleanup"), @@ -89,6 +118,12 @@ urlpatterns = [ url(r'^accept_invitation_error$', TemplateView.as_view(template_name='scipost/accept_invitation_error.html'), name='accept_invitation_error'), + url(r'^mark_draft_inv_as_processed/(?P<draft_id>[0-9]+)$', + views.mark_draft_inv_as_processed, name='mark_draft_inv_as_processed'), + url(r'^citation_notifications$', + views.citation_notifications, name='citation_notifications'), + url(r'^process_citation_notification/(?P<cn_id>[0-9]+)$', + views.process_citation_notification, name='process_citation_notification'), ## Authentication url(r'^login/$', views.login_view, name='login'), @@ -149,10 +184,10 @@ urlpatterns = [ name='doi_SciPostPhys'), url(r'^SciPostPhys.(?P<volume_nr>[0-9]+).(?P<issue_nr>[0-9]+)$', journals_views.scipost_physics_issue_detail, - name='SciPostPhys_issue_detail'), + name='SciPostPhys_issue_detail_from_doi_label'), url(r'^10.21468/SciPostPhys.(?P<volume_nr>[0-9]+).(?P<issue_nr>[0-9]+)$', journals_views.scipost_physics_issue_detail, - name='doi_SciPostPhys_issue_detail'), + name='SciPostPhys_issue_detail'), url(r'^(?P<doi_string>10.21468/[a-zA-Z]+.[0-9]+.[0-9]+.[0-9]{3,})$', journals_views.publication_detail, @@ -168,6 +203,18 @@ urlpatterns = [ name='publication_pdf_from_doi_label'), + ################ + # Howto guides # + ################ + + url(r'^howto$', + TemplateView.as_view(template_name='scipost/howto.html'), + name='howto'), + url(r'^howto/production$', + TemplateView.as_view(template_name='scipost/howto_production.html'), + name='howto_production'), + + ######### # Lists # ######### diff --git a/scipost/utils.py b/scipost/utils.py index d263d7ced541b06427f8dde4c08645dbde84a5c2..0c7a0a6d25ecf1b8f805f2a85b08263306c7b779 100644 --- a/scipost/utils.py +++ b/scipost/utils.py @@ -65,12 +65,12 @@ EMAIL_FOOTER = ( ) EMAIL_UNSUBSCRIBE_LINK_PLAIN = ( - '\n\nUnsubscribe from our email list by ' + '\n\nDon\'t want to receive such emails? Unsubscribe by ' 'updating your personal data at https://scipost.org/update_personal_data.' ) -EMAIL_UNSUBSCRIBE_LINK = ( - '\n\n<p style="font-size: 10px;">Unsubscribe from our email list by ' +EMAIL_UNSUBSCRIBE_LINK_HTML = ( + '\n\n<p style="font-size: 10px;">Don\'t want to receive such emails? Unsubscribe by ' '<a href="https://scipost.org/update_personal_data">updating your personal data</a>.</p>' ) @@ -441,7 +441,7 @@ class Utils(object): 'Contributor to the site.') email_text_html += ( '<p>Your work has been cited in a paper published by SciPost,</p>' - '<p>{{ pub_title }}</p> <p>by {{ pub_author_list }}<p/>' + '<p>{{ pub_title }}</p> <p>by {{ pub_author_list }}</p>' '(published as <a href="https://scipost.org/{{ doi_label }}">{{ citation }}</a>).' '</p>' '\n<p>I would hereby like to use this opportunity to quickly introduce ' @@ -653,3 +653,84 @@ class Utils(object): # This function is now for all invitation types: emailmessage.send(fail_silently=False) + + + @classmethod + def send_citation_notification_email(cls): + """ + Requires loading the 'notification' attribute. + """ + email_context = Context({}) + email_text = ('Dear ' + title_dict[cls.notification.contributor.title] + + ' ' + cls.notification.contributor.user.last_name) + email_text_html = 'Dear {{ title }} {{ last_name }}' + email_context['title'] = title_dict[cls.notification.contributor.title] + email_context['last_name'] = cls.notification.contributor.user.last_name + email_text += ',\n\n' + email_text_html += ',<br/>' + if cls.notification.cited_in_publication: + email_text += ( + 'We would like to notify you that ' + 'your work has been cited in a paper published by SciPost,' + '\n\n' + cls.notification.cited_in_publication.title + + '\nby ' + cls.notification.cited_in_publication.author_list + + '\n\n(published as ' + cls.notification.cited_in_publication.citation() + + ').\n\nWe hope you will find this paper of interest to your own research.' + '\n\nBest regards,\n\nThe SciPost Team' + '\n\nDon\'t want to receive such emails? Unsubscribe by visiting ' + 'https://scipost.org/unsubscribe/' + + cls.notification.contributor.activation_key + '.') + email_text_html += ( + '<p>We would like to notify you that ' + 'your work has been cited in a paper published by SciPost,</p>' + '<p>{{ pub_title }}</p><p>by {{ pub_author_list }}</p>' + '<p>(published as <a href="https://scipost.org/{{ doi_label }}">' + '{{ citation }}</a>).</p>' + '<p>We hope you will find this paper of interest to your own research.</p>' + '<p>Best regards,</p><p>The SciPost Team</p><br/>' + + EMAIL_FOOTER + '<br/>' + '\n<p style="font-size: 10px;">Don\'t want to receive such emails? ' + '<a href="https://scipost.org/unsubscribe/{{ key }}">Unsubscribe</a>.</p>') + email_context['pub_title'] = cls.notification.cited_in_publication.title + email_context['pub_author_list'] = cls.notification.cited_in_publication.author_list + email_context['doi_label'] = cls.notification.cited_in_publication.doi_label + email_context['citation'] = cls.notification.cited_in_publication.citation() + email_context['key'] = cls.notification.contributor.activation_key + html_template = Template(email_text_html) + html_version = html_template.render(email_context) + elif cls.notification.cited_in_submission: + email_text += ( + 'Your work has been cited in a manuscript submitted to SciPost,' + '\n\n' + cls.notification.cited_in_submission.title + + ' by ' + cls.notification.cited_in_submission.author_list + '.\n\n' + 'You might for example consider reporting or ' + 'commenting on the above submission before the refereeing deadline.\n\n' + 'Best regards,\n\nThe SciPost Team' + '\n\nDon\'t want to receive such emails? Unsubscribe by visiting ' + 'https://scipost.org/unsubscribe/' + + cls.notification.contributor.activation_key + '.') + email_text_html += ( + '<p>Your work has been cited in a manuscript submitted to SciPost,</p>' + '<p>{{ sub_title }} <br>by {{ sub_author_list }},</p>' + '<p>which you can find online at the ' + '<a href="https://scipost.org/submission/{{ arxiv_nr_w_vn_nr }}">' + 'submission\'s page</a>.</p>' + '<p>You might for example consider reporting or ' + 'commenting on the above submission before the refereeing deadline.</p>' + '<p>Best regards,</p><p>The SciPost Team</p><br/>' + + EMAIL_FOOTER + '<br/>' + '\n<p style="font-size: 10px;">Don\'t want to receive such emails? ' + '<a href="https://scipost.org/unsubscribe/{{ key }}">Unsubscribe</a>.</p>') + email_context['sub_title'] = cls.notification.cited_in_submission.title + email_context['sub_author_list'] = cls.notification.cited_in_submission.author_list + email_context['arxiv_identifier_w_vn_nr'] = cls.notification.cited_in_submission.arxiv_identifier_w_vn_nr + email_context['key'] = cls.notification.contributor.activation_key + + emailmessage = EmailMultiAlternatives( + 'SciPost: citation notification', email_text, + 'SciPost admin <admin@scipost.org>', + [cls.notification.contributor.user.email], + bcc=['admin@scipost.org'], + reply_to=['admin@scipost.org']) + emailmessage.attach_alternative(html_version, 'text/html') + emailmessage.send(fail_silently=False) diff --git a/scipost/views.py b/scipost/views.py index 5e76ab6a33a2fd13027a3ae98c88f32cb6a556e7..c3029a670b2f78cd617e4f5e1b086f4b79e6213e 100644 --- a/scipost/views.py +++ b/scipost/views.py @@ -223,6 +223,11 @@ def news(request): context = {'newsitems': newsitems} return render(request, 'scipost/news.html', context) +def feeds(request): + context = {'subject_areas_physics': SCIPOST_SUBJECT_AREAS[0][1]} + return render(request, 'scipost/feeds.html', context) + + ################ # Contributors: ################ @@ -392,6 +397,30 @@ def request_new_activation_link(request, oldkey): return render(request, 'scipost/acknowledgement.html', context) +def unsubscribe(request, key): + """ + The link to this method is included in all email communications + with a Contributor. The key used is the original activation key. + At this link, the Contributor can confirm that he/she does not + want to receive any non-essential email notifications from SciPost. + """ + contributor = get_object_or_404(Contributor, activation_key=key) + context = {'contributor': contributor,} + return render(request, 'scipost/unsubscribe.html', context) + +def unsubscribe_confirm(request, key): + contributor = get_object_or_404(Contributor, activation_key=key) + contributor.accepts_SciPost_emails=False + contributor.save() + context = {'ack_header': 'Unsubscribe', + 'followup_message': ('We have recorded your preference: you will ' + 'no longer receive non-essential email ' + 'from SciPost. You can go back to your '), + 'followup_link': reverse('scipost:personal_page'), + 'followup_link_label': 'personal page'} + return render(request, 'scipost/acknowledgement.html', context) + + @permission_required('scipost.can_vet_registration_requests', return_403=True) def vet_registration_requests(request): contributor = Contributor.objects.get(user=request.user) @@ -540,7 +569,8 @@ def draft_registration_invitation(request): resp_reg_inv_cited_pub = resp_reg_inv.filter(invitation_type='cp').order_by('last_name') nr_resp_reg_inv_cited_pub = resp_reg_inv_cited_pub.count() - decl_reg_inv = RegistrationInvitation.objects.filter(responded=True, declined=True) + decl_reg_inv = RegistrationInvitation.objects.filter( + responded=True, declined=True).order_by('last_name') names_reg_contributors = Contributor.objects.filter( status=1).order_by('user__last_name').values_list( @@ -575,11 +605,57 @@ def draft_registration_invitation(request): return render(request, 'scipost/draft_registration_invitation.html', context) +@permission_required('scipost.can_manage_registration_invitations', return_403=True) +def edit_draft_reg_inv(request, draft_id): + draft = get_object_or_404(DraftInvitation, id=draft_id) + errormessage = '' + if request.method == 'POST': + draft_inv_form = DraftInvitationForm(request.POST) + if draft_inv_form.is_valid(): + draft.title = draft_inv_form.cleaned_data['title'] + draft.first_name = draft_inv_form.cleaned_data['first_name'] + draft.last_name = draft_inv_form.cleaned_data['last_name'] + draft.email = draft_inv_form.cleaned_data['email'] + draft.save() + return redirect(reverse('scipost:registration_invitations')) + else: + errormessage = 'The form is invalidly filled' + else: + draft_inv_form = DraftInvitationForm(instance=draft) + context = {'draft_inv_form': draft_inv_form, + 'draft': draft, + 'errormessage': errormessage,} + return render(request, 'scipost/edit_draft_reg_inv.html', context) + + +@permission_required('scipost.can_manage_registration_invitations', return_403=True) +def map_draft_reg_inv_to_contributor(request, draft_id, contributor_id): + """ + If a draft invitation actually points to an already-registered + Contributor, this method marks the draft invitation as processed + and, if the draft invitation was for a citation type, + creates an instance of CitationNotification. + """ + draft = get_object_or_404(DraftInvitation, id=draft_id) + contributor = get_object_or_404(Contributor, id=contributor_id) + errormessage = '' + draft.processed = True + draft.save() + citation = CitationNotification( + contributor=contributor, + cited_in_submission=draft.cited_in_submission, + cited_in_publication=draft.cited_in_publication, + processed=False) + citation.save() + return redirect(reverse('scipost:registration_invitations')) + + @permission_required('scipost.can_manage_registration_invitations', return_403=True) def registration_invitations(request, draft_id=None): """ Overview and tools for administrators """ # List invitations sent; send new ones errormessage = '' + associated_contributors = None if request.method == 'POST': # Send invitation from form information reg_inv_form = RegistrationInvitationForm(request.POST) @@ -621,6 +697,8 @@ def registration_invitations(request, draft_id=None): initial = {} if draft_id: draft = get_object_or_404(DraftInvitation, id=draft_id) + associated_contributors = Contributor.objects.filter( + user__last_name__icontains=draft.last_name) initial = {'title': draft.title, 'first_name': draft.first_name, 'last_name': draft.last_name, @@ -686,6 +764,7 @@ def registration_invitations(request, draft_id=None): 'decl_reg_inv': decl_reg_inv, 'names_reg_contributors': names_reg_contributors, 'existing_drafts': existing_drafts, + 'associated_contributors': associated_contributors, } return render(request, 'scipost/registration_invitations.html', context) @@ -767,6 +846,33 @@ def mark_reg_inv_as_declined(request, invitation_id): return redirect(reverse('scipost:registration_invitations')) +@permission_required('scipost.can_manage_registration_invitations', return_403=True) +def citation_notifications(request): + unprocessed_notifications = CitationNotification.objects.filter( + processed=False).order_by('contributor__user__last_name') + context = {'unprocessed_notifications': unprocessed_notifications,} + return render(request, 'scipost/citation_notifications.html', context) + + +@permission_required('scipost.can_manage_registration_invitations', return_403=True) +def process_citation_notification(request, cn_id): + notification = get_object_or_404(CitationNotification, id=cn_id) + notification.processed=True + notification.save() + if notification.contributor.accepts_SciPost_emails: + Utils.load({'notification': notification}) + Utils.send_citation_notification_email() + return redirect(reverse('scipost:citation_notifications')) + + +@permission_required('scipost.can_manage_registration_invitations', return_403=True) +def mark_draft_inv_as_processed(request, draft_id): + draft = get_object_or_404(DraftInvitation, id=draft_id) + draft.processed = True + draft.save() + return redirect(reverse('scipost:registration_invitations')) + + def login_view(request): redirect_to = request.POST.get('next', request.GET.get('next', reverse('scipost:personal_page'))) @@ -1225,13 +1331,19 @@ def email_group_members(request): email_text += SCIPOST_SUMMARY_FOOTER email_text_html += SCIPOST_SUMMARY_FOOTER_HTML email_text_html += EMAIL_FOOTER - if form.cleaned_data['personalize']: - email_text += EMAIL_UNSUBSCRIBE_LINK_PLAIN - email_text_html += EMAIL_UNSUBSCRIBE_LINK_HTML + email_text += ('\n\nDon\'t want to receive such emails? ' + 'Unsubscribe by visiting ' + 'https://scipost.org/unsubscribe/' + + member.contributor.activation_key + '.') + email_text_html += ( + '<br/>\n<p style="font-size: 10px;">Don\'t want to receive such ' + 'emails? <a href="https://scipost.org/unsubscribe/{{ key }}">' + 'Unsubscribe</a>.</p>') email_context = Context({ 'title': title_dict[member.contributor.title], 'last_name': member.last_name, 'email_text': form.cleaned_data['email_text'], + 'key': member.contributor.activation_key, }) html_template = Template(email_text_html) html_version = html_template.render(email_context) @@ -1321,7 +1433,6 @@ def send_precooked_email(request): html_version = html_template.render(email_context) message = EmailMultiAlternatives( precookedEmail.email_subject, - #email_text, 'SciPost Admin <admin@scipost.org>', email_text, SciPost_from_addresses_dict[form.cleaned_data['from_address']], [form.cleaned_data['email_address']], diff --git a/static/admin/css/base.css b/static/admin/css/base.css deleted file mode 100644 index a37555aeb5203c0b13ba2ac7cc52d476dbab50d9..0000000000000000000000000000000000000000 --- a/static/admin/css/base.css +++ /dev/null @@ -1,967 +0,0 @@ -/* - DJANGO Admin styles -*/ - -@import url(fonts.css); - -body { - margin: 0; - padding: 0; - font-size: 14px; - font-family: "Roboto","Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif; - color: #333; - background: #fff; -} - -/* LINKS */ - -a:link, a:visited { - color: #447e9b; - text-decoration: none; -} - -a:focus, a:hover { - color: #036; -} - -a:focus { - text-decoration: underline; -} - -a img { - border: none; -} - -a.section:link, a.section:visited { - color: #fff; - text-decoration: none; -} - -a.section:focus, a.section:hover { - text-decoration: underline; -} - -/* GLOBAL DEFAULTS */ - -p, ol, ul, dl { - margin: .2em 0 .8em 0; -} - -p { - padding: 0; - line-height: 140%; -} - -h1,h2,h3,h4,h5 { - font-weight: bold; -} - -h1 { - margin: 0 0 20px; - font-weight: 300; - font-size: 20px; - color: #666; -} - -h2 { - font-size: 16px; - margin: 1em 0 .5em 0; -} - -h2.subhead { - font-weight: normal; - margin-top: 0; -} - -h3 { - font-size: 14px; - margin: .8em 0 .3em 0; - color: #666; - font-weight: bold; -} - -h4 { - font-size: 12px; - margin: 1em 0 .8em 0; - padding-bottom: 3px; -} - -h5 { - font-size: 10px; - margin: 1.5em 0 .5em 0; - color: #666; - text-transform: uppercase; - letter-spacing: 1px; -} - -ul li { - list-style-type: square; - padding: 1px 0; -} - -li ul { - margin-bottom: 0; -} - -li, dt, dd { - font-size: 13px; - line-height: 20px; -} - -dt { - font-weight: bold; - margin-top: 4px; -} - -dd { - margin-left: 0; -} - -form { - margin: 0; - padding: 0; -} - -fieldset { - margin: 0; - padding: 0; - border: none; - border-top: 1px solid #eee; -} - -blockquote { - font-size: 11px; - color: #777; - margin-left: 2px; - padding-left: 10px; - border-left: 5px solid #ddd; -} - -code, pre { - font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; - color: #666; - font-size: 12px; -} - -pre.literal-block { - margin: 10px; - background: #eee; - padding: 6px 8px; -} - -code strong { - color: #930; -} - -hr { - clear: both; - color: #eee; - background-color: #eee; - height: 1px; - border: none; - margin: 0; - padding: 0; - font-size: 1px; - line-height: 1px; -} - -/* TEXT STYLES & MODIFIERS */ - -.small { - font-size: 11px; -} - -.tiny { - font-size: 10px; -} - -p.tiny { - margin-top: -2px; -} - -.mini { - font-size: 10px; -} - -p.mini { - margin-top: -3px; -} - -.help, p.help, form p.help { - font-size: 11px; - color: #999; -} - -.help-tooltip { - cursor: help; -} - -p img, h1 img, h2 img, h3 img, h4 img, td img { - vertical-align: middle; -} - -.quiet, a.quiet:link, a.quiet:visited { - color: #999; - font-weight: normal; -} - -.float-right { - float: right; -} - -.float-left { - float: left; -} - -.clear { - clear: both; -} - -.align-left { - text-align: left; -} - -.align-right { - text-align: right; -} - -.example { - margin: 10px 0; - padding: 5px 10px; - background: #efefef; -} - -.nowrap { - white-space: nowrap; -} - -/* TABLES */ - -table { - border-collapse: collapse; - border-color: #ccc; -} - -td, th { - font-size: 13px; - line-height: 16px; - border-bottom: 1px solid #eee; - vertical-align: top; - padding: 8px; - font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; -} - -th { - font-weight: 600; - text-align: left; -} - -thead th, -tfoot td { - color: #666; - padding: 5px 10px; - font-size: 11px; - background: #fff; - border: none; - border-top: 1px solid #eee; - border-bottom: 1px solid #eee; -} - -tfoot td { - border-bottom: none; - border-top: 1px solid #eee; -} - -tr.alt { - background: #f6f6f6; -} - -.row1 { - background: #fff; -} - -.row2 { - background: #f9f9f9; -} - -/* SORTABLE TABLES */ - -thead th { - padding: 5px 10px; - line-height: normal; - text-transform: uppercase; - background: #f6f6f6; -} - -thead th a:link, thead th a:visited { - color: #666; -} - -thead th.sorted { - background: #eee; -} - -thead th.sorted .text { - padding-right: 42px; -} - -table thead th .text span { - padding: 8px 10px; - display: block; -} - -table thead th .text a { - display: block; - cursor: pointer; - padding: 8px 10px; -} - -table thead th .text a:focus, table thead th .text a:hover { - background: #eee; -} - -thead th.sorted a.sortremove { - visibility: hidden; -} - -table thead th.sorted:hover a.sortremove { - visibility: visible; -} - -table thead th.sorted .sortoptions { - display: block; - padding: 9px 5px 0 5px; - float: right; - text-align: right; -} - -table thead th.sorted .sortpriority { - font-size: .8em; - min-width: 12px; - text-align: center; - vertical-align: 3px; - margin-left: 2px; - margin-right: 2px; -} - -table thead th.sorted .sortoptions a { - position: relative; - width: 14px; - height: 14px; - display: inline-block; - background: url(../img/sorting-icons.svg) 0 0 no-repeat; - background-size: 14px auto; -} - -table thead th.sorted .sortoptions a.sortremove { - background-position: 0 0; -} - -table thead th.sorted .sortoptions a.sortremove:after { - content: '\\'; - position: absolute; - top: -6px; - left: 3px; - font-weight: 200; - font-size: 18px; - color: #999; -} - -table thead th.sorted .sortoptions a.sortremove:focus:after, -table thead th.sorted .sortoptions a.sortremove:hover:after { - color: #447e9b; -} - -table thead th.sorted .sortoptions a.sortremove:focus, -table thead th.sorted .sortoptions a.sortremove:hover { - background-position: 0 -14px; -} - -table thead th.sorted .sortoptions a.ascending { - background-position: 0 -28px; -} - -table thead th.sorted .sortoptions a.ascending:focus, -table thead th.sorted .sortoptions a.ascending:hover { - background-position: 0 -42px; -} - -table thead th.sorted .sortoptions a.descending { - top: 1px; - background-position: 0 -56px; -} - -table thead th.sorted .sortoptions a.descending:focus, -table thead th.sorted .sortoptions a.descending:hover { - background-position: 0 -70px; -} - -/* FORM DEFAULTS */ - -input, textarea, select, .form-row p, form .button { - margin: 2px 0; - padding: 2px 3px; - vertical-align: middle; - font-family: "Roboto", "Lucida Grande", Verdana, Arial, sans-serif; - font-weight: normal; - font-size: 13px; -} - -textarea { - vertical-align: top; -} - -input[type=text], input[type=password], input[type=email], input[type=url], -input[type=number], textarea, select, .vTextField { - border: 1px solid #ccc; - border-radius: 4px; - padding: 5px 6px; - margin-top: 0; -} - -input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, -input[type=url]:focus, input[type=number]:focus, textarea:focus, select:focus, -.vTextField:focus { - border-color: #999; -} - -select { - height: 30px; -} - -select[multiple] { - min-height: 150px; -} - -/* FORM BUTTONS */ - -.button, input[type=submit], input[type=button], .submit-row input, a.button { - background: #79aec8; - padding: 10px 15px; - border: none; - border-radius: 4px; - color: #fff; - cursor: pointer; -} - -a.button { - padding: 4px 5px; -} - -.button:active, input[type=submit]:active, input[type=button]:active, -.button:focus, input[type=submit]:focus, input[type=button]:focus, -.button:hover, input[type=submit]:hover, input[type=button]:hover { - background: #609ab6; -} - -.button[disabled], input[type=submit][disabled], input[type=button][disabled] { - opacity: 0.4; -} - -.button.default, input[type=submit].default, .submit-row input.default { - float: right; - border: none; - font-weight: 400; - background: #417690; -} - -.button.default:active, input[type=submit].default:active, -.button.default:focus, input[type=submit].default:focus, -.button.default:hover, input[type=submit].default:hover { - background: #205067; -} - -.button[disabled].default, -input[type=submit][disabled].default, -input[type=button][disabled].default { - opacity: 0.4; -} - - -/* MODULES */ - -.module { - border: none; - margin-bottom: 30px; - background: #fff; -} - -.module p, .module ul, .module h3, .module h4, .module dl, .module pre { - padding-left: 10px; - padding-right: 10px; -} - -.module blockquote { - margin-left: 12px; -} - -.module ul, .module ol { - margin-left: 1.5em; -} - -.module h3 { - margin-top: .6em; -} - -.module h2, .module caption, .inline-group h2 { - margin: 0; - padding: 8px; - font-weight: 400; - font-size: 13px; - text-align: left; - background: #79aec8; - color: #fff; -} - -.module caption, -.inline-group h2 { - font-size: 12px; - letter-spacing: 0.5px; - text-transform: uppercase; -} - -.module table { - border-collapse: collapse; -} - -/* MESSAGES & ERRORS */ - -ul.messagelist { - padding: 0; - margin: 0; -} - -ul.messagelist li { - display: block; - font-weight: 400; - font-size: 13px; - padding: 10px 10px 10px 65px; - margin: 0 0 10px 0; - background: #dfd url(../img/icon-yes.svg) 40px 12px no-repeat; - background-size: 16px auto; - color: #333; -} - -ul.messagelist li.warning { - background: #ffc url(../img/icon-alert.svg) 40px 14px no-repeat; - background-size: 14px auto; -} - -ul.messagelist li.error { - background: #ffefef url(../img/icon-no.svg) 40px 12px no-repeat; - background-size: 16px auto; -} - -.errornote { - font-size: 14px; - font-weight: 700; - display: block; - padding: 10px 12px; - margin: 0 0 10px 0; - color: #ba2121; - border: 1px solid #ba2121; - border-radius: 4px; - background-color: #fff; - background-position: 5px 12px; -} - -ul.errorlist { - margin: 0 0 4px; - padding: 0; - color: #ba2121; - background: #fff; -} - -ul.errorlist li { - font-size: 13px; - display: block; - margin-bottom: 4px; -} - -ul.errorlist li:first-child { - margin-top: 0; -} - -ul.errorlist li a { - color: inherit; - text-decoration: underline; -} - -td ul.errorlist { - margin: 0; - padding: 0; -} - -td ul.errorlist li { - margin: 0; -} - -.form-row.errors { - margin: 0; - border: none; - border-bottom: 1px solid #eee; - background: none; -} - -.form-row.errors ul.errorlist li { - padding-left: 0; -} - -.errors input, .errors select, .errors textarea { - border: 1px solid #ba2121; -} - -div.system-message { - background: #ffc; - margin: 10px; - padding: 6px 8px; - font-size: .8em; -} - -div.system-message p.system-message-title { - padding: 4px 5px 4px 25px; - margin: 0; - color: #c11; - background: #ffefef url(../img/icon-no.svg) 5px 5px no-repeat; -} - -.description { - font-size: 12px; - padding: 5px 0 0 12px; -} - -/* BREADCRUMBS */ - -div.breadcrumbs { - background: #79aec8; - padding: 10px 40px; - border: none; - font-size: 14px; - color: #c4dce8; - text-align: left; -} - -div.breadcrumbs a { - color: #fff; -} - -div.breadcrumbs a:focus, div.breadcrumbs a:hover { - color: #c4dce8; -} - -/* ACTION ICONS */ - -.addlink { - padding-left: 16px; - background: url(../img/icon-addlink.svg) 0 1px no-repeat; -} - -.changelink, .inlinechangelink { - padding-left: 16px; - background: url(../img/icon-changelink.svg) 0 1px no-repeat; -} - -.deletelink { - padding-left: 16px; - background: url(../img/icon-deletelink.svg) 0 1px no-repeat; -} - -a.deletelink:link, a.deletelink:visited { - color: #CC3434; -} - -a.deletelink:focus, a.deletelink:hover { - color: #993333; - text-decoration: none; -} - -/* OBJECT TOOLS */ - -.object-tools { - font-size: 10px; - font-weight: bold; - padding-left: 0; - float: right; - position: relative; - margin-top: -48px; -} - -.form-row .object-tools { - margin-top: 5px; - margin-bottom: 5px; - float: none; - height: 2em; - padding-left: 3.5em; -} - -.object-tools li { - display: block; - float: left; - margin-left: 5px; - height: 16px; -} - -.object-tools a { - border-radius: 15px; -} - -.object-tools a:link, .object-tools a:visited { - display: block; - float: left; - padding: 3px 12px; - background: #999; - font-weight: 400; - font-size: 11px; - text-transform: uppercase; - letter-spacing: 0.5px; - color: #fff; -} - -.object-tools a:focus, .object-tools a:hover { - background-color: #417690; -} - -.object-tools a:focus{ - text-decoration: none; -} - -.object-tools a.viewsitelink, .object-tools a.golink,.object-tools a.addlink { - background-repeat: no-repeat; - background-position: 93% center; - padding-right: 26px; -} - -.object-tools a.viewsitelink, .object-tools a.golink { - background-image: url(../img/tooltag-arrowright.svg); -} - -.object-tools a.addlink { - background-image: url(../img/tooltag-add.svg); -} - -/* OBJECT HISTORY */ - -table#change-history { - width: 100%; -} - -table#change-history tbody th { - width: 16em; -} - -/* PAGE STRUCTURE */ - -#container { - position: relative; - width: 100%; - min-width: 980px; - padding: 0; -} - -#content { - padding: 20px 40px; -} - -.dashboard #content { - width: 600px; -} - -#content-main { - float: left; - width: 100%; -} - -#content-related { - float: right; - width: 260px; - position: relative; - margin-right: -300px; -} - -#footer { - clear: both; - padding: 10px; -} - -/* COLUMN TYPES */ - -.colMS { - margin-right: 300px; -} - -.colSM { - margin-left: 300px; -} - -.colSM #content-related { - float: left; - margin-right: 0; - margin-left: -300px; -} - -.colSM #content-main { - float: right; -} - -.popup .colM { - width: auto; -} - -/* HEADER */ - -#header { - width: auto; - height: 40px; - padding: 10px 40px; - background: #417690; - line-height: 40px; - color: #ffc; - overflow: hidden; -} - -#header a:link, #header a:visited { - color: #fff; -} - -#header a:focus , #header a:hover { - text-decoration: underline; -} - -#branding { - float: left; -} - -#branding h1 { - padding: 0; - margin: 0 20px 0 0; - font-weight: 300; - font-size: 24px; - color: #f5dd5d; -} - -#branding h1, #branding h1 a:link, #branding h1 a:visited { - color: #f5dd5d; -} - -#branding h2 { - padding: 0 10px; - font-size: 14px; - margin: -8px 0 8px 0; - font-weight: normal; - color: #ffc; -} - -#branding a:hover { - text-decoration: none; -} - -#user-tools { - float: right; - padding: 0; - margin: 0 0 0 20px; - font-weight: 300; - font-size: 11px; - letter-spacing: 0.5px; - text-transform: uppercase; - text-align: right; -} - -#user-tools a { - border-bottom: 1px solid rgba(255, 255, 255, 0.25); -} - -#user-tools a:focus, #user-tools a:hover { - text-decoration: none; - border-bottom-color: #79aec8; - color: #79aec8; -} - -/* SIDEBAR */ - -#content-related { - background: #f8f8f8; -} - -#content-related .module { - background: none; -} - -#content-related h3 { - font-size: 14px; - color: #666; - padding: 0 16px; - margin: 0 0 16px; -} - -#content-related h4 { - font-size: 13px; -} - -#content-related p { - padding-left: 16px; - padding-right: 16px; -} - -#content-related .actionlist { - padding: 0; - margin: 16px; -} - -#content-related .actionlist li { - line-height: 1.2; - margin-bottom: 10px; - padding-left: 18px; -} - -#content-related .module h2 { - background: none; - padding: 16px; - margin-bottom: 16px; - border-bottom: 1px solid #eaeaea; - font-size: 18px; - color: #333; -} - -.delete-confirmation form input[type="submit"] { - background: #ba2121; - border-radius: 4px; - padding: 10px 15px; - color: #fff; -} - -.delete-confirmation form input[type="submit"]:active, -.delete-confirmation form input[type="submit"]:focus, -.delete-confirmation form input[type="submit"]:hover { - background: #a41515; -} - -.delete-confirmation form .cancel-link { - display: inline-block; - vertical-align: middle; - height: 15px; - line-height: 15px; - background: #ddd; - border-radius: 4px; - padding: 10px 15px; - color: #333; - margin: 0 0 0 10px; -} - -.delete-confirmation form .cancel-link:active, -.delete-confirmation form .cancel-link:focus, -.delete-confirmation form .cancel-link:hover { - background: #ccc; -} - -/* POPUP */ -.popup #content { - padding: 20px; -} - -.popup #container { - min-width: 0; -} - -.popup #header { - padding: 10px 20px; -} diff --git a/static/admin/css/changelists.css b/static/admin/css/changelists.css deleted file mode 100644 index fd9e784478c13e43b1e45d2f9317367e75dd421b..0000000000000000000000000000000000000000 --- a/static/admin/css/changelists.css +++ /dev/null @@ -1,341 +0,0 @@ -/* CHANGELISTS */ - -#changelist { - position: relative; - width: 100%; -} - -#changelist table { - width: 100%; -} - -.change-list .hiddenfields { display:none; } - -.change-list .filtered table { - border-right: none; -} - -.change-list .filtered { - min-height: 400px; -} - -.change-list .filtered .results, .change-list .filtered .paginator, -.filtered #toolbar, .filtered div.xfull { - margin-right: 280px; - width: auto; -} - -.change-list .filtered table tbody th { - padding-right: 1em; -} - -#changelist-form .results { - overflow-x: auto; -} - -#changelist .toplinks { - border-bottom: 1px solid #ddd; -} - -#changelist .paginator { - color: #666; - border-bottom: 1px solid #eee; - background: #fff; - overflow: hidden; -} - -/* CHANGELIST TABLES */ - -#changelist table thead th { - padding: 0; - white-space: nowrap; - vertical-align: middle; -} - -#changelist table thead th.action-checkbox-column { - width: 1.5em; - text-align: center; -} - -#changelist table tbody td.action-checkbox { - text-align: center; -} - -#changelist table tfoot { - color: #666; -} - -/* TOOLBAR */ - -#changelist #toolbar { - padding: 8px 10px; - margin-bottom: 15px; - border-top: 1px solid #eee; - border-bottom: 1px solid #eee; - background: #f8f8f8; - color: #666; -} - -#changelist #toolbar form input { - border-radius: 4px; - font-size: 14px; - padding: 5px; - color: #333; -} - -#changelist #toolbar form #searchbar { - height: 19px; - border: 1px solid #ccc; - padding: 2px 5px; - margin: 0; - vertical-align: top; - font-size: 13px; -} - -#changelist #toolbar form #searchbar:focus { - border-color: #999; -} - -#changelist #toolbar form input[type="submit"] { - border: 1px solid #ccc; - padding: 2px 10px; - margin: 0; - vertical-align: middle; - background: #fff; - box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; - cursor: pointer; - color: #333; -} - -#changelist #toolbar form input[type="submit"]:focus, -#changelist #toolbar form input[type="submit"]:hover { - border-color: #999; -} - -#changelist #changelist-search img { - vertical-align: middle; - margin-right: 4px; -} - -/* FILTER COLUMN */ - -#changelist-filter { - position: absolute; - top: 0; - right: 0; - z-index: 1000; - width: 240px; - background: #f8f8f8; - border-left: none; - margin: 0; -} - -#changelist-filter h2 { - font-size: 14px; - text-transform: uppercase; - letter-spacing: 0.5px; - padding: 5px 15px; - margin-bottom: 12px; - border-bottom: none; -} - -#changelist-filter h3 { - font-weight: 400; - font-size: 14px; - padding: 0 15px; - margin-bottom: 10px; -} - -#changelist-filter ul { - margin: 5px 0; - padding: 0 15px 15px; - border-bottom: 1px solid #eaeaea; -} - -#changelist-filter ul:last-child { - border-bottom: none; - padding-bottom: none; -} - -#changelist-filter li { - list-style-type: none; - margin-left: 0; - padding-left: 0; -} - -#changelist-filter a { - display: block; - color: #999; -} - -#changelist-filter li.selected { - border-left: 5px solid #eaeaea; - padding-left: 10px; - margin-left: -15px; -} - -#changelist-filter li.selected a { - color: #5b80b2; -} - -#changelist-filter a:focus, #changelist-filter a:hover, -#changelist-filter li.selected a:focus, -#changelist-filter li.selected a:hover { - color: #036; -} - -/* DATE DRILLDOWN */ - -.change-list ul.toplinks { - display: block; - float: left; - padding: 0; - margin: 0; - width: 100%; -} - -.change-list ul.toplinks li { - padding: 3px 6px; - font-weight: bold; - list-style-type: none; - display: inline-block; -} - -.change-list ul.toplinks .date-back a { - color: #999; -} - -.change-list ul.toplinks .date-back a:focus, -.change-list ul.toplinks .date-back a:hover { - color: #036; -} - -/* PAGINATOR */ - -.paginator { - font-size: 13px; - padding-top: 10px; - padding-bottom: 10px; - line-height: 22px; - margin: 0; - border-top: 1px solid #ddd; -} - -.paginator a:link, .paginator a:visited { - padding: 2px 6px; - background: #79aec8; - text-decoration: none; - color: #fff; -} - -.paginator a.showall { - padding: 0; - border: none; - background: none; - color: #5b80b2; -} - -.paginator a.showall:focus, .paginator a.showall:hover { - background: none; - color: #036; -} - -.paginator .end { - margin-right: 6px; -} - -.paginator .this-page { - padding: 2px 6px; - font-weight: bold; - font-size: 13px; - vertical-align: top; -} - -.paginator a:focus, .paginator a:hover { - color: white; - background: #036; -} - -/* ACTIONS */ - -.filtered .actions { - margin-right: 280px; - border-right: none; -} - -#changelist table input { - margin: 0; - vertical-align: baseline; -} - -#changelist table tbody tr.selected { - background-color: #FFFFCC; -} - -#changelist .actions { - padding: 10px; - background: #fff; - border-top: none; - border-bottom: none; - line-height: 24px; - color: #999; -} - -#changelist .actions.selected { - background: #fffccf; - border-top: 1px solid #fffee8; - border-bottom: 1px solid #edecd6; -} - -#changelist .actions span.all, -#changelist .actions span.action-counter, -#changelist .actions span.clear, -#changelist .actions span.question { - font-size: 13px; - margin: 0 0.5em; - display: none; -} - -#changelist .actions:last-child { - border-bottom: none; -} - -#changelist .actions select { - vertical-align: top; - height: 24px; - background: none; - border: 1px solid #ccc; - border-radius: 4px; - font-size: 14px; - padding: 0 0 0 4px; - margin: 0; - margin-left: 10px; -} - -#changelist .actions select:focus { - border-color: #999; -} - -#changelist .actions label { - display: inline-block; - vertical-align: middle; - font-size: 13px; -} - -#changelist .actions .button { - font-size: 13px; - border: 1px solid #ccc; - border-radius: 4px; - background: #fff; - box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset; - cursor: pointer; - height: 24px; - line-height: 1; - padding: 4px 8px; - margin: 0; - color: #333; -} - -#changelist .actions .button:focus, #changelist .actions .button:hover { - border-color: #999; -} diff --git a/static/admin/css/dashboard.css b/static/admin/css/dashboard.css deleted file mode 100644 index 05808bcb0a49565e318e9f19907d365e4b4c3d9b..0000000000000000000000000000000000000000 --- a/static/admin/css/dashboard.css +++ /dev/null @@ -1,30 +0,0 @@ -/* DASHBOARD */ - -.dashboard .module table th { - width: 100%; -} - -.dashboard .module table td { - white-space: nowrap; -} - -.dashboard .module table td a { - display: block; - padding-right: .6em; -} - -/* RECENT ACTIONS MODULE */ - -.module ul.actionlist { - margin-left: 0; -} - -ul.actionlist li { - list-style-type: none; -} - -ul.actionlist li { - overflow: hidden; - text-overflow: ellipsis; - -o-text-overflow: ellipsis; -} diff --git a/static/admin/css/fonts.css b/static/admin/css/fonts.css deleted file mode 100644 index c837e017c7f66dfc2ba8819f7e96ef0e4f09fb50..0000000000000000000000000000000000000000 --- a/static/admin/css/fonts.css +++ /dev/null @@ -1,20 +0,0 @@ -@font-face { - font-family: 'Roboto'; - src: url('../fonts/Roboto-Bold-webfont.woff'); - font-weight: 700; - font-style: normal; -} - -@font-face { - font-family: 'Roboto'; - src: url('../fonts/Roboto-Regular-webfont.woff'); - font-weight: 400; - font-style: normal; -} - -@font-face { - font-family: 'Roboto'; - src: url('../fonts/Roboto-Light-webfont.woff'); - font-weight: 300; - font-style: normal; -} diff --git a/static/admin/css/forms.css b/static/admin/css/forms.css deleted file mode 100644 index 2a21257b6a114cdf6d431c7bc4c6a2d057cea24d..0000000000000000000000000000000000000000 --- a/static/admin/css/forms.css +++ /dev/null @@ -1,499 +0,0 @@ -@import url('widgets.css'); - -/* FORM ROWS */ - -.form-row { - overflow: hidden; - padding: 10px; - font-size: 13px; - border-bottom: 1px solid #eee; -} - -.form-row img, .form-row input { - vertical-align: middle; -} - -.form-row label input[type="checkbox"] { - margin-top: 0; - vertical-align: 0; -} - -form .form-row p { - padding-left: 0; -} - -.hidden { - display: none; -} - -/* FORM LABELS */ - -label { - font-weight: normal; - color: #666; - font-size: 13px; -} - -.required label, label.required { - font-weight: bold; - color: #333; -} - -/* RADIO BUTTONS */ - -form ul.radiolist li { - list-style-type: none; -} - -form ul.radiolist label { - float: none; - display: inline; -} - -form ul.radiolist input[type="radio"] { - margin: -2px 4px 0 0; - padding: 0; -} - -form ul.inline { - margin-left: 0; - padding: 0; -} - -form ul.inline li { - float: left; - padding-right: 7px; -} - -/* ALIGNED FIELDSETS */ - -.aligned label { - display: block; - padding: 4px 10px 0 0; - float: left; - width: 160px; - word-wrap: break-word; - line-height: 1; -} - -.aligned label:not(.vCheckboxLabel):after { - content: ''; - display: inline-block; - vertical-align: middle; - height: 26px; -} - -.aligned label + p { - padding: 6px 0; - margin-top: 0; - margin-bottom: 0; - margin-left: 170px; -} - -.aligned ul label { - display: inline; - float: none; - width: auto; -} - -.aligned .form-row input { - margin-bottom: 0; -} - -.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField { - width: 350px; -} - -form .aligned ul { - margin-left: 160px; - padding-left: 10px; -} - -form .aligned ul.radiolist { - display: inline-block; - margin: 0; - padding: 0; -} - -form .aligned p.help { - clear: left; - margin-top: 0; - margin-left: 160px; - padding-left: 10px; -} - -form .aligned label + p.help { - margin-left: 0; - padding-left: 0; -} - -form .aligned p.help:last-child { - margin-bottom: 0; - padding-bottom: 0; -} - -form .aligned input + p.help, -form .aligned textarea + p.help, -form .aligned select + p.help { - margin-left: 160px; - padding-left: 10px; -} - -form .aligned ul li { - list-style: none; -} - -form .aligned table p { - margin-left: 0; - padding-left: 0; -} - -.aligned .vCheckboxLabel { - float: none; - width: auto; - display: inline-block; - vertical-align: -3px; - padding: 0 0 5px 5px; -} - -.aligned .vCheckboxLabel + p.help { - margin-top: -4px; -} - -.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField { - width: 610px; -} - -.checkbox-row p.help { - margin-left: 0; - padding-left: 0; -} - -fieldset .field-box { - float: left; - margin-right: 20px; -} - -/* WIDE FIELDSETS */ - -.wide label { - width: 200px; -} - -form .wide p, form .wide input + p.help { - margin-left: 200px; -} - -form .wide p.help { - padding-left: 38px; -} - -.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField { - width: 450px; -} - -/* COLLAPSED FIELDSETS */ - -fieldset.collapsed * { - display: none; -} - -fieldset.collapsed h2, fieldset.collapsed { - display: block; -} - -fieldset.collapsed { - border: 1px solid #eee; - border-radius: 4px; - overflow: hidden; -} - -fieldset.collapsed h2 { - background: #f8f8f8; - color: #666; -} - -fieldset .collapse-toggle { - color: #fff; -} - -fieldset.collapsed .collapse-toggle { - background: transparent; - display: inline; - color: #447e9b; -} - -/* MONOSPACE TEXTAREAS */ - -fieldset.monospace textarea { - font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace; -} - -/* SUBMIT ROW */ - -.submit-row { - padding: 12px 14px; - margin: 0 0 20px; - background: #f8f8f8; - border: 1px solid #eee; - border-radius: 4px; - text-align: right; - overflow: hidden; -} - -body.popup .submit-row { - overflow: auto; -} - -.submit-row input { - height: 35px; - line-height: 15px; - margin: 0 0 0 5px; -} - -.submit-row input.default { - margin: 0 0 0 8px; - text-transform: uppercase; -} - -.submit-row p { - margin: 0.3em; -} - -.submit-row p.deletelink-box { - float: left; - margin: 0; -} - -.submit-row a.deletelink { - display: block; - background: #ba2121; - border-radius: 4px; - padding: 10px 15px; - height: 15px; - line-height: 15px; - color: #fff; -} - -.submit-row a.deletelink:focus, -.submit-row a.deletelink:hover, -.submit-row a.deletelink:active { - background: #a41515; -} - -/* CUSTOM FORM FIELDS */ - -.vSelectMultipleField { - vertical-align: top; -} - -.vCheckboxField { - border: none; -} - -.vDateField, .vTimeField { - margin-right: 2px; - margin-bottom: 4px; -} - -.vDateField { - min-width: 6.85em; -} - -.vTimeField { - min-width: 4.7em; -} - -.vURLField { - width: 30em; -} - -.vLargeTextField, .vXMLLargeTextField { - width: 48em; -} - -.flatpages-flatpage #id_content { - height: 40.2em; -} - -.module table .vPositiveSmallIntegerField { - width: 2.2em; -} - -.vTextField { - width: 20em; -} - -.vIntegerField { - width: 5em; -} - -.vBigIntegerField { - width: 10em; -} - -.vForeignKeyRawIdAdminField { - width: 5em; -} - -/* INLINES */ - -.inline-group { - padding: 0; - margin: 0 0 30px; -} - -.inline-group thead th { - padding: 8px 10px; -} - -.inline-group .aligned label { - width: 160px; -} - -.inline-related { - position: relative; -} - -.inline-related h3 { - margin: 0; - color: #666; - padding: 5px; - font-size: 13px; - background: #f8f8f8; - border-top: 1px solid #eee; - border-bottom: 1px solid #eee; -} - -.inline-related h3 span.delete { - float: right; -} - -.inline-related h3 span.delete label { - margin-left: 2px; - font-size: 11px; -} - -.inline-related fieldset { - margin: 0; - background: #fff; - border: none; - width: 100%; -} - -.inline-related fieldset.module h3 { - margin: 0; - padding: 2px 5px 3px 5px; - font-size: 11px; - text-align: left; - font-weight: bold; - background: #bcd; - color: #fff; -} - -.inline-group .tabular fieldset.module { - border: none; -} - -.inline-related.tabular fieldset.module table { - width: 100%; -} - -.last-related fieldset { - border: none; -} - -.inline-group .tabular tr.has_original td { - padding-top: 2em; -} - -.inline-group .tabular tr td.original { - padding: 2px 0 0 0; - width: 0; - _position: relative; -} - -.inline-group .tabular th.original { - width: 0px; - padding: 0; -} - -.inline-group .tabular td.original p { - position: absolute; - left: 0; - height: 1.1em; - padding: 2px 9px; - overflow: hidden; - font-size: 9px; - font-weight: bold; - color: #666; - _width: 700px; -} - -.inline-group ul.tools { - padding: 0; - margin: 0; - list-style: none; -} - -.inline-group ul.tools li { - display: inline; - padding: 0 5px; -} - -.inline-group div.add-row, -.inline-group .tabular tr.add-row td { - color: #666; - background: #f8f8f8; - padding: 8px 10px; - border-bottom: 1px solid #eee; -} - -.inline-group .tabular tr.add-row td { - padding: 8px 10px; - border-bottom: 1px solid #eee; -} - -.inline-group ul.tools a.add, -.inline-group div.add-row a, -.inline-group .tabular tr.add-row td a { - background: url(../img/icon-addlink.svg) 0 1px no-repeat; - padding-left: 16px; - font-size: 12px; -} - -.empty-form { - display: none; -} - -/* RELATED FIELD ADD ONE / LOOKUP */ - -.add-another, .related-lookup { - margin-left: 5px; - display: inline-block; - vertical-align: middle; - background-repeat: no-repeat; - background-size: 14px; -} - -.add-another { - width: 16px; - height: 16px; - background-image: url(../img/icon-addlink.svg); -} - -.related-lookup { - width: 16px; - height: 16px; - background-image: url(../img/search.svg); -} - -form .related-widget-wrapper ul { - display: inline-block; - margin-left: 0; - padding-left: 0; -} - -.clearable-file-input input { - margin-top: 0; -} diff --git a/static/admin/css/ie.css b/static/admin/css/ie.css deleted file mode 100644 index 81990058773a42f5d44fa40835aac148d820f590..0000000000000000000000000000000000000000 --- a/static/admin/css/ie.css +++ /dev/null @@ -1,63 +0,0 @@ -/* IE 6 & 7 */ - -/* Proper fixed width for dashboard in IE6 */ - -.dashboard #content { - *width: 768px; -} - -.dashboard #content-main { - *width: 535px; -} - -/* IE 6 ONLY */ - -/* Keep header from flowing off the page */ - -#container { - _position: static; -} - -/* Put the right sidebars back on the page */ - -.colMS #content-related { - _margin-right: 0; - _margin-left: 10px; - _position: static; -} - -/* Put the left sidebars back on the page */ - -.colSM #content-related { - _margin-right: 10px; - _margin-left: -115px; - _position: static; -} - -.form-row { - _height: 1%; -} - -/* Fix right margin for changelist filters in IE6 */ - -#changelist-filter ul { - _margin-right: -10px; -} - -/* IE ignores min-height, but treats height as if it were min-height */ - -.change-list .filtered { - _height: 400px; -} - -/* IE doesn't know alpha transparency in PNGs */ - -.inline-deletelink { - background: transparent url(../img/inline-delete-8bit.png) no-repeat; -} - -/* IE7 doesn't support inline-block */ -.change-list ul.toplinks li { - zoom: 1; - *display: inline; -} diff --git a/static/admin/css/login.css b/static/admin/css/login.css deleted file mode 100644 index cab3bbf5856ddc60ff90c50c7f638a35d3d1b818..0000000000000000000000000000000000000000 --- a/static/admin/css/login.css +++ /dev/null @@ -1,78 +0,0 @@ -/* LOGIN FORM */ - -body.login { - background: #f8f8f8; -} - -.login #header { - height: auto; - padding: 5px 16px; -} - -.login #header h1 { - font-size: 18px; -} - -.login #header h1 a { - color: #fff; -} - -.login #content { - padding: 20px 20px 0; -} - -.login #container { - background: #fff; - border: 1px solid #eaeaea; - border-radius: 4px; - overflow: hidden; - width: 28em; - min-width: 300px; - margin: 100px auto; -} - -.login #content-main { - width: 100%; -} - -.login .form-row { - padding: 4px 0; - float: left; - width: 100%; - border-bottom: none; -} - -.login .form-row label { - padding-right: 0.5em; - line-height: 2em; - font-size: 1em; - clear: both; - color: #333; -} - -.login .form-row #id_username, .login .form-row #id_password { - clear: both; - padding: 8px; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.login span.help { - font-size: 10px; - display: block; -} - -.login .submit-row { - clear: both; - padding: 1em 0 0 9.4em; - margin: 0; - border: none; - background: none; - text-align: left; -} - -.login .password-reset-link { - text-align: center; -} diff --git a/static/admin/css/rtl.css b/static/admin/css/rtl.css deleted file mode 100644 index 8c1ceb4fd168fe51d42c95e42637782e06b7d8a2..0000000000000000000000000000000000000000 --- a/static/admin/css/rtl.css +++ /dev/null @@ -1,256 +0,0 @@ -body { - direction: rtl; -} - -/* LOGIN */ - -.login .form-row { - float: right; -} - -.login .form-row label { - float: right; - padding-left: 0.5em; - padding-right: 0; - text-align: left; -} - -.login .submit-row { - clear: both; - padding: 1em 9.4em 0 0; -} - -/* GLOBAL */ - -th { - text-align: right; -} - -.module h2, .module caption { - text-align: right; -} - -.module ul, .module ol { - margin-left: 0; - margin-right: 1.5em; -} - -.addlink, .changelink { - padding-left: 0; - padding-right: 16px; - background-position: 100% 1px; -} - -.deletelink { - padding-left: 0; - padding-right: 16px; - background-position: 100% 1px; -} - -.object-tools { - float: left; -} - -thead th:first-child, -tfoot td:first-child { - border-left: none; -} - -/* LAYOUT */ - -#user-tools { - right: auto; - left: 0; - text-align: left; -} - -div.breadcrumbs { - text-align: right; -} - -#content-main { - float: right; -} - -#content-related { - float: left; - margin-left: -300px; - margin-right: auto; -} - -.colMS { - margin-left: 300px; - margin-right: 0; -} - -/* SORTABLE TABLES */ - -table thead th.sorted .sortoptions { - float: left; -} - -thead th.sorted .text { - padding-right: 0; - padding-left: 42px; -} - -/* dashboard styles */ - -.dashboard .module table td a { - padding-left: .6em; - padding-right: 16px; -} - -/* changelists styles */ - -.change-list .filtered table { - border-left: none; - border-right: 0px none; -} - -#changelist-filter { - right: auto; - left: 0; - border-left: none; - border-right: none; -} - -.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { - margin-right: 0; - margin-left: 280px; -} - -#changelist-filter li.selected { - border-left: none; - padding-left: 10px; - margin-left: 0; - border-right: 5px solid #eaeaea; - padding-right: 10px; - margin-right: -15px; -} - -.filtered .actions { - margin-left: 280px; - margin-right: 0; -} - -#changelist table tbody td:first-child, #changelist table tbody th:first-child { - border-right: none; - border-left: none; -} - -/* FORMS */ - -.aligned label { - padding: 0 0 3px 1em; - float: right; -} - -.submit-row { - text-align: left -} - -.submit-row p.deletelink-box { - float: right; -} - -.submit-row input.default { - margin-left: 0; -} - -.vDateField, .vTimeField { - margin-left: 2px; -} - -.aligned .form-row input { - margin-left: 5px; -} - -form ul.inline li { - float: right; - padding-right: 0; - padding-left: 7px; -} - -input[type=submit].default, .submit-row input.default { - float: left; -} - -fieldset .field-box { - float: right; - margin-left: 20px; - margin-right: 0; -} - -.errorlist li { - background-position: 100% 12px; - padding: 0; -} - -.errornote { - background-position: 100% 12px; - padding: 10px 12px; -} - -/* WIDGETS */ - -.calendarnav-previous { - top: 0; - left: auto; - right: 10px; -} - -.calendarnav-next { - top: 0; - right: auto; - left: 10px; -} - -.calendar caption, .calendarbox h2 { - text-align: center; -} - -.selector { - float: right; -} - -.selector .selector-filter { - text-align: right; -} - -.inline-deletelink { - float: left; -} - -form .form-row p.datetime { - overflow: hidden; -} - -/* MISC */ - -.inline-related h2, .inline-group h2 { - text-align: right -} - -.inline-related h3 span.delete { - padding-right: 20px; - padding-left: inherit; - left: 10px; - right: inherit; - float:left; -} - -.inline-related h3 span.delete label { - margin-left: inherit; - margin-right: 2px; -} - -/* IE7 specific bug fixes */ - -div.colM { - position: relative; -} - -.submit-row input { - float: left; -} diff --git a/static/admin/css/widgets.css b/static/admin/css/widgets.css deleted file mode 100644 index d3bd67ac931baf8399cb6c3279f26aa266d1772f..0000000000000000000000000000000000000000 --- a/static/admin/css/widgets.css +++ /dev/null @@ -1,565 +0,0 @@ -/* SELECTOR (FILTER INTERFACE) */ - -.selector { - width: 800px; - float: left; -} - -.selector select { - width: 380px; - height: 17.2em; -} - -.selector-available, .selector-chosen { - float: left; - width: 380px; - text-align: center; - margin-bottom: 5px; -} - -.selector-chosen select { - border-top: none; -} - -.selector-available h2, .selector-chosen h2 { - border: 1px solid #ccc; - border-radius: 4px 4px 0 0; -} - -.selector-chosen h2 { - background: #79aec8; - color: #fff; -} - -.selector .selector-available h2 { - background: #f8f8f8; - color: #666; -} - -.selector .selector-filter { - background: white; - border: 1px solid #ccc; - border-width: 0 1px; - padding: 8px; - color: #999; - font-size: 10px; - margin: 0; - text-align: left; -} - -.selector .selector-filter label, -.inline-group .aligned .selector .selector-filter label { - float: left; - margin: 7px 0 0; - width: 18px; - height: 18px; - padding: 0; - overflow: hidden; - line-height: 1; -} - -.selector .selector-available input { - width: 320px; - margin-left: 8px; -} - -.selector ul.selector-chooser { - float: left; - width: 22px; - background-color: #eee; - border-radius: 10px; - margin: 10em 5px 0 5px; - padding: 0; -} - -.selector-chooser li { - margin: 0; - padding: 3px; - list-style-type: none; -} - -.selector select { - padding: 0 10px; - margin: 0 0 10px; - border-radius: 0 0 4px 4px; -} - -.selector-add, .selector-remove { - width: 16px; - height: 16px; - display: block; - text-indent: -3000px; - overflow: hidden; - cursor: default; - opacity: 0.3; -} - -.active.selector-add, .active.selector-remove { - opacity: 1; -} - -.active.selector-add:hover, .active.selector-remove:hover { - cursor: pointer; -} - -.selector-add { - background: url(../img/selector-icons.svg) 0 -96px no-repeat; -} - -.active.selector-add:focus, .active.selector-add:hover { - background-position: 0 -112px; -} - -.selector-remove { - background: url(../img/selector-icons.svg) 0 -64px no-repeat; -} - -.active.selector-remove:focus, .active.selector-remove:hover { - background-position: 0 -80px; -} - -a.selector-chooseall, a.selector-clearall { - display: inline-block; - height: 16px; - text-align: left; - margin: 1px auto 3px; - overflow: hidden; - font-weight: bold; - line-height: 16px; - color: #666; - text-decoration: none; - opacity: 0.3; -} - -a.active.selector-chooseall:focus, a.active.selector-clearall:focus, -a.active.selector-chooseall:hover, a.active.selector-clearall:hover { - color: #447e9b; -} - -a.active.selector-chooseall, a.active.selector-clearall { - opacity: 1; -} - -a.active.selector-chooseall:hover, a.active.selector-clearall:hover { - cursor: pointer; -} - -a.selector-chooseall { - padding: 0 18px 0 0; - background: url(../img/selector-icons.svg) right -160px no-repeat; - cursor: default; -} - -a.active.selector-chooseall:focus, a.active.selector-chooseall:hover { - background-position: 100% -176px; -} - -a.selector-clearall { - padding: 0 0 0 18px; - background: url(../img/selector-icons.svg) 0 -128px no-repeat; - cursor: default; -} - -a.active.selector-clearall:focus, a.active.selector-clearall:hover { - background-position: 0 -144px; -} - -/* STACKED SELECTORS */ - -.stacked { - float: left; - width: 490px; -} - -.stacked select { - width: 480px; - height: 10.1em; -} - -.stacked .selector-available, .stacked .selector-chosen { - width: 480px; -} - -.stacked .selector-available { - margin-bottom: 0; -} - -.stacked .selector-available input { - width: 422px; -} - -.stacked ul.selector-chooser { - height: 22px; - width: 50px; - margin: 0 0 10px 40%; - background-color: #eee; - border-radius: 10px; -} - -.stacked .selector-chooser li { - float: left; - padding: 3px 3px 3px 5px; -} - -.stacked .selector-chooseall, .stacked .selector-clearall { - display: none; -} - -.stacked .selector-add { - background: url(../img/selector-icons.svg) 0 -32px no-repeat; - cursor: default; -} - -.stacked .active.selector-add { - background-position: 0 -48px; - cursor: pointer; -} - -.stacked .selector-remove { - background: url(../img/selector-icons.svg) 0 0 no-repeat; - cursor: default; -} - -.stacked .active.selector-remove { - background-position: 0 -16px; - cursor: pointer; -} - -.selector .help-icon { - background: url(../img/icon-unknown.svg) 0 0 no-repeat; - display: inline-block; - vertical-align: middle; - margin: -2px 0 0 2px; - width: 13px; - height: 13px; -} - -.selector .selector-chosen .help-icon { - background: url(../img/icon-unknown-alt.svg) 0 0 no-repeat; -} - -.selector .search-label-icon { - background: url(../img/search.svg) 0 0 no-repeat; - display: inline-block; - height: 18px; - width: 18px; -} - -/* DATE AND TIME */ - -p.datetime { - line-height: 20px; - margin: 0; - padding: 0; - color: #666; - font-weight: bold; -} - -.datetime span { - white-space: nowrap; - font-weight: normal; - font-size: 11px; - color: #ccc; -} - -.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField { - min-width: 0; - margin-left: 5px; - margin-bottom: 4px; -} - -table p.datetime { - font-size: 11px; - margin-left: 0; - padding-left: 0; -} - -.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon { - position: relative; - display: inline-block; - vertical-align: middle; - height: 16px; - width: 16px; - overflow: hidden; -} - -.datetimeshortcuts .clock-icon { - background: url(../img/icon-clock.svg) 0 0 no-repeat; -} - -.datetimeshortcuts a:focus .clock-icon, -.datetimeshortcuts a:hover .clock-icon { - background-position: 0 -16px; -} - -.datetimeshortcuts .date-icon { - background: url(../img/icon-calendar.svg) 0 0 no-repeat; - top: -1px; -} - -.datetimeshortcuts a:focus .date-icon, -.datetimeshortcuts a:hover .date-icon { - background-position: 0 -16px; -} - -.timezonewarning { - font-size: 11px; - color: #999; -} - -/* URL */ - -p.url { - line-height: 20px; - margin: 0; - padding: 0; - color: #666; - font-size: 11px; - font-weight: bold; -} - -.url a { - font-weight: normal; -} - -/* FILE UPLOADS */ - -p.file-upload { - line-height: 20px; - margin: 0; - padding: 0; - color: #666; - font-size: 11px; - font-weight: bold; -} - -.aligned p.file-upload { - margin-left: 170px; -} - -.file-upload a { - font-weight: normal; -} - -.file-upload .deletelink { - margin-left: 5px; -} - -span.clearable-file-input label { - color: #333; - font-size: 11px; - display: inline; - float: none; -} - -/* CALENDARS & CLOCKS */ - -.calendarbox, .clockbox { - margin: 5px auto; - font-size: 12px; - width: 19em; - text-align: center; - background: white; - border: 1px solid #ddd; - border-radius: 4px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); - overflow: hidden; - position: relative; -} - -.clockbox { - width: auto; -} - -.calendar { - margin: 0; - padding: 0; -} - -.calendar table { - margin: 0; - padding: 0; - border-collapse: collapse; - background: white; - width: 100%; -} - -.calendar caption, .calendarbox h2 { - margin: 0; - text-align: center; - border-top: none; - background: #f5dd5d; - font-weight: 700; - font-size: 12px; - color: #333; -} - -.calendar th { - padding: 8px 5px; - background: #f8f8f8; - border-bottom: 1px solid #ddd; - font-weight: 400; - font-size: 12px; - text-align: center; - color: #666; -} - -.calendar td { - font-weight: 400; - font-size: 12px; - text-align: center; - padding: 0; - border-top: 1px solid #eee; - border-bottom: none; -} - -.calendar td.selected a { - background: #79aec8; - color: #fff; -} - -.calendar td.nonday { - background: #f8f8f8; -} - -.calendar td.today a { - font-weight: 700; -} - -.calendar td a, .timelist a { - display: block; - font-weight: 400; - padding: 6px; - text-decoration: none; - color: #444; -} - -.calendar td a:focus, .timelist a:focus, -.calendar td a:hover, .timelist a:hover { - background: #79aec8; - color: white; -} - -.calendar td a:active, .timelist a:active { - background: #417690; - color: white; -} - -.calendarnav { - font-size: 10px; - text-align: center; - color: #ccc; - margin: 0; - padding: 1px 3px; -} - -.calendarnav a:link, #calendarnav a:visited, -#calendarnav a:focus, #calendarnav a:hover { - color: #999; -} - -.calendar-shortcuts { - background: white; - font-size: 11px; - line-height: 11px; - border-top: 1px solid #eee; - padding: 8px 0; - color: #ccc; -} - -.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next { - display: block; - position: absolute; - top: 8px; - width: 15px; - height: 15px; - text-indent: -9999px; - padding: 0; -} - -.calendarnav-previous { - left: 10px; - background: url(../img/calendar-icons.svg) 0 0 no-repeat; -} - -.calendarbox .calendarnav-previous:focus, -.calendarbox .calendarnav-previous:hover { - background-position: 0 -15px; -} - -.calendarnav-next { - right: 10px; - background: url(../img/calendar-icons.svg) 0 -30px no-repeat; -} - -.calendarbox .calendarnav-next:focus, -.calendarbox .calendarnav-next:hover { - background-position: 0 -45px; -} - -.calendar-cancel { - margin: 0; - padding: 4px 0; - font-size: 12px; - background: #eee; - border-top: 1px solid #ddd; - color: #333; -} - -.calendar-cancel:focus, .calendar-cancel:hover { - background: #ddd; -} - -.calendar-cancel a { - color: black; - display: block; -} - -ul.timelist, .timelist li { - list-style-type: none; - margin: 0; - padding: 0; -} - -.timelist a { - padding: 2px; -} - -/* EDIT INLINE */ - -.inline-deletelink { - float: right; - text-indent: -9999px; - background: url(../img/inline-delete.svg) 0 0 no-repeat; - width: 16px; - height: 16px; - border: 0px none; -} - -.inline-deletelink:focus, .inline-deletelink:hover { - cursor: pointer; -} - -/* RELATED WIDGET WRAPPER */ -.related-widget-wrapper { - float: left; /* display properly in form rows with multiple fields */ - overflow: hidden; /* clear floated contents */ -} - -.related-widget-wrapper-link { - opacity: 0.3; -} - -.related-widget-wrapper-link:link { - opacity: .8; -} - -.related-widget-wrapper-link:link:focus, -.related-widget-wrapper-link:link:hover { - opacity: 1; -} - -select + .related-widget-wrapper-link, -.related-widget-wrapper-link + .related-widget-wrapper-link { - margin-left: 7px; -} diff --git a/static/admin/fonts/LICENSE.txt b/static/admin/fonts/LICENSE.txt deleted file mode 100644 index 75b52484ea471f882c29e02693b4f02dba175b5e..0000000000000000000000000000000000000000 --- a/static/admin/fonts/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/static/admin/fonts/README.txt b/static/admin/fonts/README.txt deleted file mode 100644 index cc2135a30ae182331d1505604f6fd7e97b9cd8b1..0000000000000000000000000000000000000000 --- a/static/admin/fonts/README.txt +++ /dev/null @@ -1,2 +0,0 @@ -Roboto webfont source: https://www.google.com/fonts/specimen/Roboto -Weights used in this project: Light (300), Regular (400), Bold (700) diff --git a/static/admin/fonts/Roboto-Bold-webfont.woff b/static/admin/fonts/Roboto-Bold-webfont.woff deleted file mode 100644 index 03357ce4f5833006114f2e790a7b89dbf69d4f90..0000000000000000000000000000000000000000 Binary files a/static/admin/fonts/Roboto-Bold-webfont.woff and /dev/null differ diff --git a/static/admin/fonts/Roboto-Light-webfont.woff b/static/admin/fonts/Roboto-Light-webfont.woff deleted file mode 100644 index f6abd871351b74882016af8e796aa6566803035b..0000000000000000000000000000000000000000 Binary files a/static/admin/fonts/Roboto-Light-webfont.woff and /dev/null differ diff --git a/static/admin/fonts/Roboto-Regular-webfont.woff b/static/admin/fonts/Roboto-Regular-webfont.woff deleted file mode 100644 index 6ff6afd8c863f4ee4a2bd032a93c5dde5bf15f0d..0000000000000000000000000000000000000000 Binary files a/static/admin/fonts/Roboto-Regular-webfont.woff and /dev/null differ diff --git a/static/admin/img/LICENSE b/static/admin/img/LICENSE deleted file mode 100644 index a4faaa1dfa226ac68c6a7898f7161d0e2956dcb3..0000000000000000000000000000000000000000 --- a/static/admin/img/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Code Charm Ltd - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/static/admin/img/README.txt b/static/admin/img/README.txt deleted file mode 100644 index 43373ad1c252442ce5a236798fb66db6927280d9..0000000000000000000000000000000000000000 --- a/static/admin/img/README.txt +++ /dev/null @@ -1,7 +0,0 @@ -All icons are taken from Font Awesome (http://fontawesome.io/) project. -The Font Awesome font is licensed under the SIL OFL 1.1: -- http://scripts.sil.org/OFL - -SVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG -Font-Awesome-SVG-PNG is licensed under the MIT license (see file license -in current folder). diff --git a/static/admin/img/calendar-icons.svg b/static/admin/img/calendar-icons.svg deleted file mode 100644 index dbf21c39d238c60288c0206a3969eb8a50d3a278..0000000000000000000000000000000000000000 --- a/static/admin/img/calendar-icons.svg +++ /dev/null @@ -1,14 +0,0 @@ -<svg width="15" height="60" viewBox="0 0 1792 7168" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <g id="previous"> - <path d="M1037 1395l102-102q19-19 19-45t-19-45l-307-307 307-307q19-19 19-45t-19-45l-102-102q-19-19-45-19t-45 19l-454 454q-19 19-19 45t19 45l454 454q19 19 45 19t45-19zm627-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> - </g> - <g id="next"> - <path d="M845 1395l454-454q19-19 19-45t-19-45l-454-454q-19-19-45-19t-45 19l-102 102q-19 19-19 45t19 45l307 307-307 307q-19 19-19 45t19 45l102 102q19 19 45 19t45-19zm819-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> - </g> - </defs> - <use xlink:href="#previous" x="0" y="0" fill="#333333" /> - <use xlink:href="#previous" x="0" y="1792" fill="#000000" /> - <use xlink:href="#next" x="0" y="3584" fill="#333333" /> - <use xlink:href="#next" x="0" y="5376" fill="#000000" /> -</svg> diff --git a/static/admin/img/changelist-bg.gif b/static/admin/img/changelist-bg.gif deleted file mode 100644 index 94e09f7715e559bf199dc0bec756ae844baa8a6f..0000000000000000000000000000000000000000 Binary files a/static/admin/img/changelist-bg.gif and /dev/null differ diff --git a/static/admin/img/changelist-bg_rtl.gif b/static/admin/img/changelist-bg_rtl.gif deleted file mode 100644 index 237971257f9978723e602f12de3702dec6bf76d1..0000000000000000000000000000000000000000 Binary files a/static/admin/img/changelist-bg_rtl.gif and /dev/null differ diff --git a/static/admin/img/default-bg-reverse.gif b/static/admin/img/default-bg-reverse.gif deleted file mode 100644 index a28f4ad51a64131afbee7e2c3b6af352893c21e5..0000000000000000000000000000000000000000 Binary files a/static/admin/img/default-bg-reverse.gif and /dev/null differ diff --git a/static/admin/img/default-bg.gif b/static/admin/img/default-bg.gif deleted file mode 100644 index 91c819b350050a2bc891229b89286a4784fbd87f..0000000000000000000000000000000000000000 Binary files a/static/admin/img/default-bg.gif and /dev/null differ diff --git a/static/admin/img/deleted-overlay.gif b/static/admin/img/deleted-overlay.gif deleted file mode 100644 index dc3828fe06f058b1f697e87d79e5c334c3b16e7f..0000000000000000000000000000000000000000 Binary files a/static/admin/img/deleted-overlay.gif and /dev/null differ diff --git a/static/admin/img/gis/move_vertex_off.png b/static/admin/img/gis/move_vertex_off.png deleted file mode 100644 index 296b2e29c970fca4222db7cb86e91deb56c5a7d6..0000000000000000000000000000000000000000 Binary files a/static/admin/img/gis/move_vertex_off.png and /dev/null differ diff --git a/static/admin/img/gis/move_vertex_off.svg b/static/admin/img/gis/move_vertex_off.svg deleted file mode 100644 index 228854f3b00be502dbb2deed17020bbfe915556d..0000000000000000000000000000000000000000 --- a/static/admin/img/gis/move_vertex_off.svg +++ /dev/null @@ -1 +0,0 @@ -<svg width="24" height="22" viewBox="0 0 847 779" xmlns="http://www.w3.org/2000/svg"><g><path fill="#EBECE6" d="M120 1h607c66 0 120 54 120 120v536c0 66-54 120-120 120h-607c-66 0-120-54-120-120v-536c0-66 54-120 120-120z"/><path fill="#9E9E93" d="M120 1h607c66 0 120 54 120 120v536c0 66-54 120-120 120h-607c-66 0-120-54-120-120v-536c0-66 54-120 120-120zm607 25h-607c-26 0-50 11-67 28-17 18-28 41-28 67v536c0 27 11 50 28 68 17 17 41 27 67 27h607c26 0 49-10 67-27 17-18 28-41 28-68v-536c0-26-11-49-28-67-18-17-41-28-67-28z"/><path stroke="#A9A8A4" stroke-width="20" d="M706 295l-68 281"/><path stroke="#E47474" stroke-width="20" d="M316 648l390-353M141 435l175 213"/><path stroke="#C9C9C9" stroke-width="20" d="M319 151l-178 284M706 295l-387-144"/><g fill="#040405"><path d="M319 111c22 0 40 18 40 40s-18 40-40 40-40-18-40-40 18-40 40-40zM141 395c22 0 40 18 40 40s-18 40-40 40c-23 0-41-18-41-40s18-40 41-40zM316 608c22 0 40 18 40 40 0 23-18 41-40 41s-40-18-40-41c0-22 18-40 40-40zM706 254c22 0 40 18 40 41 0 22-18 40-40 40s-40-18-40-40c0-23 18-41 40-41zM638 536c22 0 40 18 40 40s-18 40-40 40-40-18-40-40 18-40 40-40z"/></g></g></svg> \ No newline at end of file diff --git a/static/admin/img/gis/move_vertex_on.png b/static/admin/img/gis/move_vertex_on.png deleted file mode 100644 index 21f4758d9cd80f49df3083bc28d736713ef5e60e..0000000000000000000000000000000000000000 Binary files a/static/admin/img/gis/move_vertex_on.png and /dev/null differ diff --git a/static/admin/img/gis/move_vertex_on.svg b/static/admin/img/gis/move_vertex_on.svg deleted file mode 100644 index 96b87fdd708ef19fc3c6e466c44d7c212efa1d14..0000000000000000000000000000000000000000 --- a/static/admin/img/gis/move_vertex_on.svg +++ /dev/null @@ -1 +0,0 @@ -<svg width="24" height="22" viewBox="0 0 847 779" xmlns="http://www.w3.org/2000/svg"><g><path fill="#F1C02A" d="M120 1h607c66 0 120 54 120 120v536c0 66-54 120-120 120h-607c-66 0-120-54-120-120v-536c0-66 54-120 120-120z"/><path fill="#9E9E93" d="M120 1h607c66 0 120 54 120 120v536c0 66-54 120-120 120h-607c-66 0-120-54-120-120v-536c0-66 54-120 120-120zm607 25h-607c-26 0-50 11-67 28-17 18-28 41-28 67v536c0 27 11 50 28 68 17 17 41 27 67 27h607c26 0 49-10 67-27 17-18 28-41 28-68v-536c0-26-11-49-28-67-18-17-41-28-67-28z"/><path stroke="#A9A8A4" stroke-width="20" d="M706 295l-68 281"/><path stroke="#E47474" stroke-width="20" d="M316 648l390-353M141 435l175 213"/><path stroke="#C9A741" stroke-width="20" d="M319 151l-178 284M706 295l-387-144"/><g fill="#040405"><path d="M319 111c22 0 40 18 40 40s-18 40-40 40-40-18-40-40 18-40 40-40zM141 395c22 0 40 18 40 40s-18 40-40 40c-23 0-41-18-41-40s18-40 41-40zM316 608c22 0 40 18 40 40 0 23-18 41-40 41s-40-18-40-41c0-22 18-40 40-40zM706 254c22 0 40 18 40 41 0 22-18 40-40 40s-40-18-40-40c0-23 18-41 40-41zM638 536c22 0 40 18 40 40s-18 40-40 40-40-18-40-40 18-40 40-40z"/></g></g></svg> \ No newline at end of file diff --git a/static/admin/img/icon-addlink.svg b/static/admin/img/icon-addlink.svg deleted file mode 100644 index e004fb162633a3cab16d650492698785194cb66f..0000000000000000000000000000000000000000 --- a/static/admin/img/icon-addlink.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#70bf2b" d="M1600 796v192q0 40-28 68t-68 28h-416v416q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-416h-416q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h416v-416q0-40 28-68t68-28h192q40 0 68 28t28 68v416h416q40 0 68 28t28 68z"/> -</svg> diff --git a/static/admin/img/icon-alert.svg b/static/admin/img/icon-alert.svg deleted file mode 100644 index e51ea83f5bb0e420a11f6b91c18654d0a227da97..0000000000000000000000000000000000000000 --- a/static/admin/img/icon-alert.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="14" height="14" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#efb80b" d="M1024 1375v-190q0-14-9.5-23.5t-22.5-9.5h-192q-13 0-22.5 9.5t-9.5 23.5v190q0 14 9.5 23.5t22.5 9.5h192q13 0 22.5-9.5t9.5-23.5zm-2-374l18-459q0-12-10-19-13-11-24-11h-220q-11 0-24 11-10 7-10 21l17 457q0 10 10 16.5t24 6.5h185q14 0 23.5-6.5t10.5-16.5zm-14-934l768 1408q35 63-2 126-17 29-46.5 46t-63.5 17h-1536q-34 0-63.5-17t-46.5-46q-37-63-2-126l768-1408q17-31 47-49t65-18 65 18 47 49z"/> -</svg> diff --git a/static/admin/img/icon-calendar.svg b/static/admin/img/icon-calendar.svg deleted file mode 100644 index 97910a9949126a13793506efed884f378fc8449a..0000000000000000000000000000000000000000 --- a/static/admin/img/icon-calendar.svg +++ /dev/null @@ -1,9 +0,0 @@ -<svg width="16" height="32" viewBox="0 0 1792 3584" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <g id="icon"> - <path d="M192 1664h288v-288h-288v288zm352 0h320v-288h-320v288zm-352-352h288v-320h-288v320zm352 0h320v-320h-320v320zm-352-384h288v-288h-288v288zm736 736h320v-288h-320v288zm-384-736h320v-288h-320v288zm768 736h288v-288h-288v288zm-384-352h320v-320h-320v320zm-352-864v-288q0-13-9.5-22.5t-22.5-9.5h-64q-13 0-22.5 9.5t-9.5 22.5v288q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5-9.5t9.5-22.5zm736 864h288v-320h-288v320zm-384-384h320v-288h-320v288zm384 0h288v-288h-288v288zm32-480v-288q0-13-9.5-22.5t-22.5-9.5h-64q-13 0-22.5 9.5t-9.5 22.5v288q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5-9.5t9.5-22.5zm384-64v1280q0 52-38 90t-90 38h-1408q-52 0-90-38t-38-90v-1280q0-52 38-90t90-38h128v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h384v-96q0-66 47-113t113-47h64q66 0 113 47t47 113v96h128q52 0 90 38t38 90z"/> - </g> - </defs> - <use xlink:href="#icon" x="0" y="0" fill="#447e9b" /> - <use xlink:href="#icon" x="0" y="1792" fill="#003366" /> -</svg> diff --git a/static/admin/img/icon-changelink.svg b/static/admin/img/icon-changelink.svg deleted file mode 100644 index bbb137aa0866379ef81fd5a0e8a6d3207628b0ac..0000000000000000000000000000000000000000 --- a/static/admin/img/icon-changelink.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#efb80b" d="M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z"/> -</svg> diff --git a/static/admin/img/icon-clock.svg b/static/admin/img/icon-clock.svg deleted file mode 100644 index bf9985d3f44610bd43d9daada9876db12100d504..0000000000000000000000000000000000000000 --- a/static/admin/img/icon-clock.svg +++ /dev/null @@ -1,9 +0,0 @@ -<svg width="16" height="32" viewBox="0 0 1792 3584" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <g id="icon"> - <path d="M1024 544v448q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h224v-352q0-14 9-23t23-9h64q14 0 23 9t9 23zm416 352q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> - </g> - </defs> - <use xlink:href="#icon" x="0" y="0" fill="#447e9b" /> - <use xlink:href="#icon" x="0" y="1792" fill="#003366" /> -</svg> diff --git a/static/admin/img/icon-deletelink.svg b/static/admin/img/icon-deletelink.svg deleted file mode 100644 index 4059b15544994e5e73e9b219c31627055dfa17bc..0000000000000000000000000000000000000000 --- a/static/admin/img/icon-deletelink.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="14" height="14" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#dd4646" d="M1490 1322q0 40-28 68l-136 136q-28 28-68 28t-68-28l-294-294-294 294q-28 28-68 28t-68-28l-136-136q-28-28-28-68t28-68l294-294-294-294q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 294 294-294q28-28 68-28t68 28l136 136q28 28 28 68t-28 68l-294 294 294 294q28 28 28 68z"/> -</svg> diff --git a/static/admin/img/icon-no.gif b/static/admin/img/icon-no.gif deleted file mode 100644 index 1b4ee5814570885705399533f1182f8b0491c5fb..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon-no.gif and /dev/null differ diff --git a/static/admin/img/icon-no.svg b/static/admin/img/icon-no.svg deleted file mode 100644 index 2e0d3832c9299c3994f627cd64ed0341a5da7b14..0000000000000000000000000000000000000000 --- a/static/admin/img/icon-no.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#dd4646" d="M1277 1122q0-26-19-45l-181-181 181-181q19-19 19-45 0-27-19-46l-90-90q-19-19-46-19-26 0-45 19l-181 181-181-181q-19-19-45-19-27 0-46 19l-90 90q-19 19-19 46 0 26 19 45l181 181-181 181q-19 19-19 45 0 27 19 46l90 90q19 19 46 19 26 0 45-19l181-181 181 181q19 19 45 19 27 0 46-19l90-90q19-19 19-46zm387-226q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> -</svg> diff --git a/static/admin/img/icon-unknown-alt.svg b/static/admin/img/icon-unknown-alt.svg deleted file mode 100644 index 1c6b99fc0946c3f41df99174e3621eb88d3c23e7..0000000000000000000000000000000000000000 --- a/static/admin/img/icon-unknown-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#ffffff" d="M1024 1376v-192q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23-9t9-23zm256-672q0-88-55.5-163t-138.5-116-170-41q-243 0-371 213-15 24 8 42l132 100q7 6 19 6 16 0 25-12 53-68 86-92 34-24 86-24 48 0 85.5 26t37.5 59q0 38-20 61t-68 45q-63 28-115.5 86.5t-52.5 125.5v36q0 14 9 23t23 9h192q14 0 23-9t9-23q0-19 21.5-49.5t54.5-49.5q32-18 49-28.5t46-35 44.5-48 28-60.5 12.5-81zm384 192q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> -</svg> diff --git a/static/admin/img/icon-unknown.gif b/static/admin/img/icon-unknown.gif deleted file mode 100644 index cfd2b02ad91b3677dbe59111faaf4f437c362cb8..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon-unknown.gif and /dev/null differ diff --git a/static/admin/img/icon-unknown.svg b/static/admin/img/icon-unknown.svg deleted file mode 100644 index 50b4f97276b46f2d3cd7102aaede3c526d3887b6..0000000000000000000000000000000000000000 --- a/static/admin/img/icon-unknown.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#666666" d="M1024 1376v-192q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23-9t9-23zm256-672q0-88-55.5-163t-138.5-116-170-41q-243 0-371 213-15 24 8 42l132 100q7 6 19 6 16 0 25-12 53-68 86-92 34-24 86-24 48 0 85.5 26t37.5 59q0 38-20 61t-68 45q-63 28-115.5 86.5t-52.5 125.5v36q0 14 9 23t23 9h192q14 0 23-9t9-23q0-19 21.5-49.5t54.5-49.5q32-18 49-28.5t46-35 44.5-48 28-60.5 12.5-81zm384 192q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> -</svg> diff --git a/static/admin/img/icon-yes.gif b/static/admin/img/icon-yes.gif deleted file mode 100644 index 73992827403791d6c1a75a079880e41dce7e0214..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon-yes.gif and /dev/null differ diff --git a/static/admin/img/icon-yes.svg b/static/admin/img/icon-yes.svg deleted file mode 100644 index 5883d877e89b89d42fa121725ae7b726dbfa5f50..0000000000000000000000000000000000000000 --- a/static/admin/img/icon-yes.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#70bf2b" d="M1412 734q0-28-18-46l-91-90q-19-19-45-19t-45 19l-408 407-226-226q-19-19-45-19t-45 19l-91 90q-18 18-18 46 0 27 18 45l362 362q19 19 45 19 27 0 46-19l543-543q18-18 18-45zm252 162q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> -</svg> diff --git a/static/admin/img/icon_addlink.gif b/static/admin/img/icon_addlink.gif deleted file mode 100644 index ee70e1adba52480cc6aedbee650000c5d55b0088..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon_addlink.gif and /dev/null differ diff --git a/static/admin/img/icon_alert.gif b/static/admin/img/icon_alert.gif deleted file mode 100644 index a1dde2625445b76d041ae02ccfcb83481ca63c5e..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon_alert.gif and /dev/null differ diff --git a/static/admin/img/icon_calendar.gif b/static/admin/img/icon_calendar.gif deleted file mode 100644 index 7587b305a4ee702cbed3bee1ae17c78feb85d00b..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon_calendar.gif and /dev/null differ diff --git a/static/admin/img/icon_changelink.gif b/static/admin/img/icon_changelink.gif deleted file mode 100644 index e1b9afde65cc924df232aad7c1bdd753dd8e971b..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon_changelink.gif and /dev/null differ diff --git a/static/admin/img/icon_clock.gif b/static/admin/img/icon_clock.gif deleted file mode 100644 index ff2d57e0a3b6373b7bd9540e688b1b4c71081cb7..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon_clock.gif and /dev/null differ diff --git a/static/admin/img/icon_deletelink.gif b/static/admin/img/icon_deletelink.gif deleted file mode 100644 index 72523e3a3ba1446c8f768c157cea642119a02741..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon_deletelink.gif and /dev/null differ diff --git a/static/admin/img/icon_error.gif b/static/admin/img/icon_error.gif deleted file mode 100644 index 3730a00b260392902a17ce317231f225d301a241..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon_error.gif and /dev/null differ diff --git a/static/admin/img/icon_searchbox.png b/static/admin/img/icon_searchbox.png deleted file mode 100644 index f87f308f2658d7b729f18a633f6abb9d6d6d757a..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon_searchbox.png and /dev/null differ diff --git a/static/admin/img/icon_success.gif b/static/admin/img/icon_success.gif deleted file mode 100644 index 5cf90a15aa6731798b025a238fa47a1658510fff..0000000000000000000000000000000000000000 Binary files a/static/admin/img/icon_success.gif and /dev/null differ diff --git a/static/admin/img/inline-delete-8bit.png b/static/admin/img/inline-delete-8bit.png deleted file mode 100644 index 01ade88c534344ba1f5f7f7744c9bad82467b9f6..0000000000000000000000000000000000000000 Binary files a/static/admin/img/inline-delete-8bit.png and /dev/null differ diff --git a/static/admin/img/inline-delete.png b/static/admin/img/inline-delete.png deleted file mode 100644 index c5fe53c4e3bbd5f2e349be9c87c896ab99f7b6c3..0000000000000000000000000000000000000000 Binary files a/static/admin/img/inline-delete.png and /dev/null differ diff --git a/static/admin/img/inline-delete.svg b/static/admin/img/inline-delete.svg deleted file mode 100644 index 17d1ad67cdcca17f6ddcdbb4edf062a9f2b49b60..0000000000000000000000000000000000000000 --- a/static/admin/img/inline-delete.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="16" height="16" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#999999" d="M1277 1122q0-26-19-45l-181-181 181-181q19-19 19-45 0-27-19-46l-90-90q-19-19-46-19-26 0-45 19l-181 181-181-181q-19-19-45-19-27 0-46 19l-90 90q-19 19-19 46 0 26 19 45l181 181-181 181q-19 19-19 45 0 27 19 46l90 90q19 19 46 19 26 0 45-19l181-181 181 181q19 19 45 19 27 0 46-19l90-90q19-19 19-46zm387-226q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> -</svg> diff --git a/static/admin/img/inline-restore-8bit.png b/static/admin/img/inline-restore-8bit.png deleted file mode 100644 index d29fe1da636554080638326474fd122a52d2580a..0000000000000000000000000000000000000000 Binary files a/static/admin/img/inline-restore-8bit.png and /dev/null differ diff --git a/static/admin/img/inline-restore.png b/static/admin/img/inline-restore.png deleted file mode 100644 index 2a6778884027c4ec32dcadb1a06874549e3f7dc5..0000000000000000000000000000000000000000 Binary files a/static/admin/img/inline-restore.png and /dev/null differ diff --git a/static/admin/img/inline-splitter-bg.gif b/static/admin/img/inline-splitter-bg.gif deleted file mode 100644 index 2fc918db98f2730cdf7660ab08bdc57f4a406f20..0000000000000000000000000000000000000000 Binary files a/static/admin/img/inline-splitter-bg.gif and /dev/null differ diff --git a/static/admin/img/nav-bg-grabber.gif b/static/admin/img/nav-bg-grabber.gif deleted file mode 100644 index 0a784fa769212348b3cb42f43f2d32c54e6fff6a..0000000000000000000000000000000000000000 Binary files a/static/admin/img/nav-bg-grabber.gif and /dev/null differ diff --git a/static/admin/img/nav-bg-reverse.gif b/static/admin/img/nav-bg-reverse.gif deleted file mode 100644 index 19913fb0b069276d27d11e90842792284ecc5cd8..0000000000000000000000000000000000000000 Binary files a/static/admin/img/nav-bg-reverse.gif and /dev/null differ diff --git a/static/admin/img/nav-bg-selected.gif b/static/admin/img/nav-bg-selected.gif deleted file mode 100644 index 98c5672ab367bcec7b471f4ef252c6e89b73d105..0000000000000000000000000000000000000000 Binary files a/static/admin/img/nav-bg-selected.gif and /dev/null differ diff --git a/static/admin/img/nav-bg.gif b/static/admin/img/nav-bg.gif deleted file mode 100644 index d7e22ff1b3ba4c2e4c0995adf9e8defb8f9b32d7..0000000000000000000000000000000000000000 Binary files a/static/admin/img/nav-bg.gif and /dev/null differ diff --git a/static/admin/img/search.svg b/static/admin/img/search.svg deleted file mode 100644 index c8c69b2acc1cd0104aa9fbcd61893d9eeace8f25..0000000000000000000000000000000000000000 --- a/static/admin/img/search.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="15" height="15" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#555555" d="M1216 832q0-185-131.5-316.5t-316.5-131.5-316.5 131.5-131.5 316.5 131.5 316.5 316.5 131.5 316.5-131.5 131.5-316.5zm512 832q0 52-38 90t-90 38q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5t-225-150-150-225-55.5-273.5 55.5-273.5 150-225 225-150 273.5-55.5 273.5 55.5 225 150 150 225 55.5 273.5q0 220-124 399l343 343q37 37 37 90z"/> -</svg> diff --git a/static/admin/img/selector-icons.gif b/static/admin/img/selector-icons.gif deleted file mode 100644 index 8809c4fb9acea53623b8e3b8251b72a245aa17e8..0000000000000000000000000000000000000000 Binary files a/static/admin/img/selector-icons.gif and /dev/null differ diff --git a/static/admin/img/selector-icons.svg b/static/admin/img/selector-icons.svg deleted file mode 100644 index 926b8e21b524c4bdd8a2f094d7f8b3043196112a..0000000000000000000000000000000000000000 --- a/static/admin/img/selector-icons.svg +++ /dev/null @@ -1,34 +0,0 @@ -<svg width="16" height="192" viewBox="0 0 1792 21504" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <g id="up"> - <path d="M1412 895q0-27-18-45l-362-362-91-91q-18-18-45-18t-45 18l-91 91-362 362q-18 18-18 45t18 45l91 91q18 18 45 18t45-18l189-189v502q0 26 19 45t45 19h128q26 0 45-19t19-45v-502l189 189q19 19 45 19t45-19l91-91q18-18 18-45zm252 1q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> - </g> - <g id="down"> - <path d="M1412 897q0-27-18-45l-91-91q-18-18-45-18t-45 18l-189 189v-502q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v502l-189-189q-19-19-45-19t-45 19l-91 91q-18 18-18 45t18 45l362 362 91 91q18 18 45 18t45-18l91-91 362-362q18-18 18-45zm252-1q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> - </g> - <g id="left"> - <path d="M1408 960v-128q0-26-19-45t-45-19h-502l189-189q19-19 19-45t-19-45l-91-91q-18-18-45-18t-45 18l-362 362-91 91q-18 18-18 45t18 45l91 91 362 362q18 18 45 18t45-18l91-91q18-18 18-45t-18-45l-189-189h502q26 0 45-19t19-45zm256-64q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> - </g> - <g id="right"> - <path d="M1413 896q0-27-18-45l-91-91-362-362q-18-18-45-18t-45 18l-91 91q-18 18-18 45t18 45l189 189h-502q-26 0-45 19t-19 45v128q0 26 19 45t45 19h502l-189 189q-19 19-19 45t19 45l91 91q18 18 45 18t45-18l362-362 91-91q18-18 18-45zm251 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> - </g> - <g id="clearall"> - <path transform="translate(336, 336) scale(0.75)" d="M1037 1395l102-102q19-19 19-45t-19-45l-307-307 307-307q19-19 19-45t-19-45l-102-102q-19-19-45-19t-45 19l-454 454q-19 19-19 45t19 45l454 454q19 19 45 19t45-19zm627-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> - </g> - <g id="chooseall"> - <path transform="translate(336, 336) scale(0.75)" d="M845 1395l454-454q19-19 19-45t-19-45l-454-454q-19-19-45-19t-45 19l-102 102q-19 19-19 45t19 45l307 307-307 307q-19 19-19 45t19 45l102 102q19 19 45 19t45-19zm819-499q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> - </g> - </defs> - <use xlink:href="#up" x="0" y="0" fill="#666666" /> - <use xlink:href="#up" x="0" y="1792" fill="#447e9b" /> - <use xlink:href="#down" x="0" y="3584" fill="#666666" /> - <use xlink:href="#down" x="0" y="5376" fill="#447e9b" /> - <use xlink:href="#left" x="0" y="7168" fill="#666666" /> - <use xlink:href="#left" x="0" y="8960" fill="#447e9b" /> - <use xlink:href="#right" x="0" y="10752" fill="#666666" /> - <use xlink:href="#right" x="0" y="12544" fill="#447e9b" /> - <use xlink:href="#clearall" x="0" y="14336" fill="#666666" /> - <use xlink:href="#clearall" x="0" y="16128" fill="#447e9b" /> - <use xlink:href="#chooseall" x="0" y="17920" fill="#666666" /> - <use xlink:href="#chooseall" x="0" y="19712" fill="#447e9b" /> -</svg> diff --git a/static/admin/img/selector-search.gif b/static/admin/img/selector-search.gif deleted file mode 100644 index 6d5f4c74923af2daba13baa484364380fb1614b9..0000000000000000000000000000000000000000 Binary files a/static/admin/img/selector-search.gif and /dev/null differ diff --git a/static/admin/img/sorting-icons.gif b/static/admin/img/sorting-icons.gif deleted file mode 100644 index 451aae59874c795763cee9b044bf2c487f15a853..0000000000000000000000000000000000000000 Binary files a/static/admin/img/sorting-icons.gif and /dev/null differ diff --git a/static/admin/img/sorting-icons.svg b/static/admin/img/sorting-icons.svg deleted file mode 100644 index 7c31ec91145538b8f985d8991489b076daec514c..0000000000000000000000000000000000000000 --- a/static/admin/img/sorting-icons.svg +++ /dev/null @@ -1,19 +0,0 @@ -<svg width="14" height="84" viewBox="0 0 1792 10752" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <g id="sort"> - <path d="M1408 1088q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45zm0-384q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 45z"/> - </g> - <g id="ascending"> - <path d="M1408 1216q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45 19-45l448-448q19-19 45-19t45 19l448 448q19 19 19 45z"/> - </g> - <g id="descending"> - <path d="M1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z"/> - </g> - </defs> - <use xlink:href="#sort" x="0" y="0" fill="#999999" /> - <use xlink:href="#sort" x="0" y="1792" fill="#447e9b" /> - <use xlink:href="#ascending" x="0" y="3584" fill="#999999" /> - <use xlink:href="#ascending" x="0" y="5376" fill="#447e9b" /> - <use xlink:href="#descending" x="0" y="7168" fill="#999999" /> - <use xlink:href="#descending" x="0" y="8960" fill="#447e9b" /> -</svg> diff --git a/static/admin/img/tooltag-add.png b/static/admin/img/tooltag-add.png deleted file mode 100644 index 1488ecf2ef9be1d5ba1541904b0761831eacf942..0000000000000000000000000000000000000000 Binary files a/static/admin/img/tooltag-add.png and /dev/null differ diff --git a/static/admin/img/tooltag-add.svg b/static/admin/img/tooltag-add.svg deleted file mode 100644 index 1ca64ae5b08ed18efda27c9a58a8496d31afac2a..0000000000000000000000000000000000000000 --- a/static/admin/img/tooltag-add.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#ffffff" d="M1600 736v192q0 40-28 68t-68 28h-416v416q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-416h-416q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h416v-416q0-40 28-68t68-28h192q40 0 68 28t28 68v416h416q40 0 68 28t28 68z"/> -</svg> diff --git a/static/admin/img/tooltag-arrowright.png b/static/admin/img/tooltag-arrowright.png deleted file mode 100644 index 2f05598f53be50627daf5265ce2fa3c7fc48b3cf..0000000000000000000000000000000000000000 Binary files a/static/admin/img/tooltag-arrowright.png and /dev/null differ diff --git a/static/admin/img/tooltag-arrowright.svg b/static/admin/img/tooltag-arrowright.svg deleted file mode 100644 index b664d61937be6fa51d59453a7c21228b5d2ace7a..0000000000000000000000000000000000000000 --- a/static/admin/img/tooltag-arrowright.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#ffffff" d="M1363 877l-742 742q-19 19-45 19t-45-19l-166-166q-19-19-19-45t19-45l531-531-531-531q-19-19-19-45t19-45l166-166q19-19 45-19t45 19l742 742q19 19 19 45t-19 45z"/> -</svg> diff --git a/static/admin/js/LICENSE-JQUERY.txt b/static/admin/js/LICENSE-JQUERY.txt deleted file mode 100644 index a4c5bd76ac9301a0a8f9812d5b0358de12020ddf..0000000000000000000000000000000000000000 --- a/static/admin/js/LICENSE-JQUERY.txt +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2010 John Resig, http://jquery.com/ - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/static/admin/js/SelectBox.js b/static/admin/js/SelectBox.js deleted file mode 100644 index 95825d86af5caf19cd4108188aeebc5245dbb310..0000000000000000000000000000000000000000 --- a/static/admin/js/SelectBox.js +++ /dev/null @@ -1,135 +0,0 @@ -(function() { - 'use strict'; - var SelectBox = { - cache: {}, - init: function(id) { - var box = document.getElementById(id); - var node; - SelectBox.cache[id] = []; - var cache = SelectBox.cache[id]; - for (var i = 0, j = box.options.length; i < j; i++) { - node = box.options[i]; - cache.push({value: node.value, text: node.text, displayed: 1}); - } - }, - redisplay: function(id) { - // Repopulate HTML select box from cache - var box = document.getElementById(id); - var node; - box.options.length = 0; // clear all options - var cache = SelectBox.cache[id]; - for (var i = 0, j = cache.length; i < j; i++) { - node = cache[i]; - if (node.displayed) { - var new_option = new Option(node.text, node.value, false, false); - // Shows a tooltip when hovering over the option - new_option.setAttribute("title", node.text); - box.options[box.options.length] = new_option; - } - } - }, - filter: function(id, text) { - // Redisplay the HTML select box, displaying only the choices containing ALL - // the words in text. (It's an AND search.) - var tokens = text.toLowerCase().split(/\s+/); - var node, token; - var cache = SelectBox.cache[id]; - for (var i = 0, j = cache.length; i < j; i++) { - node = cache[i]; - node.displayed = 1; - var numTokens = tokens.length; - for (var k = 0; k < numTokens; k++) { - token = tokens[k]; - if (node.text.toLowerCase().indexOf(token) === -1) { - node.displayed = 0; - } - } - } - SelectBox.redisplay(id); - }, - delete_from_cache: function(id, value) { - var node, delete_index = null; - var cache = SelectBox.cache[id]; - for (var i = 0, j = cache.length; i < j; i++) { - node = cache[i]; - if (node.value === value) { - delete_index = i; - break; - } - } - var k = cache.length - 1; - for (i = delete_index; i < k; i++) { - cache[i] = cache[i + 1]; - } - cache.length--; - }, - add_to_cache: function(id, option) { - SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); - }, - cache_contains: function(id, value) { - // Check if an item is contained in the cache - var node; - var cache = SelectBox.cache[id]; - for (var i = 0, j = cache.length; i < j; i++) { - node = cache[i]; - if (node.value === value) { - return true; - } - } - return false; - }, - move: function(from, to) { - var from_box = document.getElementById(from); - var option; - var boxOptions = from_box.options; - for (var i = 0, j = boxOptions.length; i < j; i++) { - option = boxOptions[i]; - if (option.selected && SelectBox.cache_contains(from, option.value)) { - SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1}); - SelectBox.delete_from_cache(from, option.value); - } - } - SelectBox.redisplay(from); - SelectBox.redisplay(to); - }, - move_all: function(from, to) { - var from_box = document.getElementById(from); - var option; - var boxOptions = from_box.options; - for (var i = 0, j = boxOptions.length; i < j; i++) { - option = boxOptions[i]; - if (SelectBox.cache_contains(from, option.value)) { - SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1}); - SelectBox.delete_from_cache(from, option.value); - } - } - SelectBox.redisplay(from); - SelectBox.redisplay(to); - }, - sort: function(id) { - SelectBox.cache[id].sort(function(a, b) { - a = a.text.toLowerCase(); - b = b.text.toLowerCase(); - try { - if (a > b) { - return 1; - } - if (a < b) { - return -1; - } - } - catch (e) { - // silently fail on IE 'unknown' exception - } - return 0; - } ); - }, - select_all: function(id) { - var box = document.getElementById(id); - for (var i = 0; i < box.options.length; i++) { - box.options[i].selected = 'selected'; - } - } - }; - window.SelectBox = SelectBox; -})(); diff --git a/static/admin/js/SelectFilter2.js b/static/admin/js/SelectFilter2.js deleted file mode 100644 index acf3996c389a3ff3c66ef3b73fb385f4fb9f215e..0000000000000000000000000000000000000000 --- a/static/admin/js/SelectFilter2.js +++ /dev/null @@ -1,198 +0,0 @@ -/*global SelectBox, addEvent, gettext, interpolate, quickElement, SelectFilter*/ -/* -SelectFilter2 - Turns a multiple-select box into a filter interface. - -Requires core.js, SelectBox.js and addevent.js. -*/ -(function($) { - 'use strict'; - function findForm(node) { - // returns the node of the form containing the given node - if (node.tagName.toLowerCase() !== 'form') { - return findForm(node.parentNode); - } - return node; - } - - window.SelectFilter = { - init: function(field_id, field_name, is_stacked) { - if (field_id.match(/__prefix__/)) { - // Don't initialize on empty forms. - return; - } - var from_box = document.getElementById(field_id); - from_box.id += '_from'; // change its ID - from_box.className = 'filtered'; - - var ps = from_box.parentNode.getElementsByTagName('p'); - for (var i = 0; i < ps.length; i++) { - if (ps[i].className.indexOf("info") !== -1) { - // Remove <p class="info">, because it just gets in the way. - from_box.parentNode.removeChild(ps[i]); - } else if (ps[i].className.indexOf("help") !== -1) { - // Move help text up to the top so it isn't below the select - // boxes or wrapped off on the side to the right of the add - // button: - from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild); - } - } - - // <div class="selector"> or <div class="selector stacked"> - var selector_div = quickElement('div', from_box.parentNode); - selector_div.className = is_stacked ? 'selector stacked' : 'selector'; - - // <div class="selector-available"> - var selector_available = quickElement('div', selector_div); - selector_available.className = 'selector-available'; - var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name])); - quickElement( - 'span', title_available, '', - 'class', 'help help-tooltip help-icon', - 'title', interpolate( - gettext( - 'This is the list of available %s. You may choose some by ' + - 'selecting them in the box below and then clicking the ' + - '"Choose" arrow between the two boxes.' - ), - [field_name] - ) - ); - - var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter'); - filter_p.className = 'selector-filter'; - - var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input'); - - quickElement( - 'span', search_filter_label, '', - 'class', 'help-tooltip search-label-icon', - 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]) - ); - - filter_p.appendChild(document.createTextNode(' ')); - - var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter")); - filter_input.id = field_id + '_input'; - - selector_available.appendChild(from_box); - var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', 'javascript:void(0);', 'id', field_id + '_add_all_link'); - choose_all.className = 'selector-chooseall'; - - // <ul class="selector-chooser"> - var selector_chooser = quickElement('ul', selector_div); - selector_chooser.className = 'selector-chooser'; - var add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', 'javascript:void(0);', 'id', field_id + '_add_link'); - add_link.className = 'selector-add'; - var remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', 'javascript:void(0);', 'id', field_id + '_remove_link'); - remove_link.className = 'selector-remove'; - - // <div class="selector-chosen"> - var selector_chosen = quickElement('div', selector_div); - selector_chosen.className = 'selector-chosen'; - var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name])); - quickElement( - 'span', title_chosen, '', - 'class', 'help help-tooltip help-icon', - 'title', interpolate( - gettext( - 'This is the list of chosen %s. You may remove some by ' + - 'selecting them in the box below and then clicking the ' + - '"Remove" arrow between the two boxes.' - ), - [field_name] - ) - ); - - var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name')); - to_box.className = 'filtered'; - var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', 'javascript:void(0);', 'id', field_id + '_remove_all_link'); - clear_all.className = 'selector-clearall'; - - from_box.setAttribute('name', from_box.getAttribute('name') + '_old'); - - // Set up the JavaScript event handlers for the select box filter interface - addEvent(choose_all, 'click', function() { SelectBox.move_all(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); }); - addEvent(add_link, 'click', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); }); - addEvent(remove_link, 'click', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); }); - addEvent(clear_all, 'click', function() { SelectBox.move_all(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); }); - addEvent(filter_input, 'keypress', function(e) { SelectFilter.filter_key_press(e, field_id); }); - addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); }); - addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); }); - addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id); }); - addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id); }); - addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); }); - addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); }); - addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); }); - SelectBox.init(field_id + '_from'); - SelectBox.init(field_id + '_to'); - // Move selected from_box options to to_box - SelectBox.move(field_id + '_from', field_id + '_to'); - - if (!is_stacked) { - // In horizontal mode, give the same height to the two boxes. - var j_from_box = $(from_box); - var j_to_box = $(to_box); - var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); }; - if (j_from_box.outerHeight() > 0) { - resize_filters(); // This fieldset is already open. Resize now. - } else { - // This fieldset is probably collapsed. Wait for its 'show' event. - j_to_box.closest('fieldset').one('show.fieldset', resize_filters); - } - } - - // Initial icon refresh - SelectFilter.refresh_icons(field_id); - }, - refresh_icons: function(field_id) { - var from = $('#' + field_id + '_from'); - var to = $('#' + field_id + '_to'); - var is_from_selected = from.find('option:selected').length > 0; - var is_to_selected = to.find('option:selected').length > 0; - // Active if at least one item is selected - $('#' + field_id + '_add_link').toggleClass('active', is_from_selected); - $('#' + field_id + '_remove_link').toggleClass('active', is_to_selected); - // Active if the corresponding box isn't empty - $('#' + field_id + '_add_all_link').toggleClass('active', from.find('option').length > 0); - $('#' + field_id + '_remove_all_link').toggleClass('active', to.find('option').length > 0); - }, - filter_key_press: function(event, field_id) { - var from = document.getElementById(field_id + '_from'); - // don't submit form if user pressed Enter - if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) { - from.selectedIndex = 0; - SelectBox.move(field_id + '_from', field_id + '_to'); - from.selectedIndex = 0; - event.preventDefault(); - return false; - } - }, - filter_key_up: function(event, field_id) { - var from = document.getElementById(field_id + '_from'); - var temp = from.selectedIndex; - SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value); - from.selectedIndex = temp; - return true; - }, - filter_key_down: function(event, field_id) { - var from = document.getElementById(field_id + '_from'); - // right arrow -- move across - if ((event.which && event.which === 39) || (event.keyCode && event.keyCode === 39)) { - var old_index = from.selectedIndex; - SelectBox.move(field_id + '_from', field_id + '_to'); - from.selectedIndex = (old_index === from.length) ? from.length - 1 : old_index; - return false; - } - // down arrow -- wrap around - if ((event.which && event.which === 40) || (event.keyCode && event.keyCode === 40)) { - from.selectedIndex = (from.length === from.selectedIndex + 1) ? 0 : from.selectedIndex + 1; - } - // up arrow -- wrap around - if ((event.which && event.which === 38) || (event.keyCode && event.keyCode === 38)) { - from.selectedIndex = (from.selectedIndex === 0) ? from.length - 1 : from.selectedIndex - 1; - } - return true; - } - }; - -})(django.jQuery); diff --git a/static/admin/js/actions.js b/static/admin/js/actions.js deleted file mode 100644 index 95e8492b98c4a089b3332555905305e594514184..0000000000000000000000000000000000000000 --- a/static/admin/js/actions.js +++ /dev/null @@ -1,146 +0,0 @@ -/*global _actions_icnt, gettext, interpolate, ngettext*/ -(function($) { - 'use strict'; - var lastChecked; - - $.fn.actions = function(opts) { - var options = $.extend({}, $.fn.actions.defaults, opts); - var actionCheckboxes = $(this); - var list_editable_changed = false; - var showQuestion = function() { - $(options.acrossClears).hide(); - $(options.acrossQuestions).show(); - $(options.allContainer).hide(); - }, - showClear = function() { - $(options.acrossClears).show(); - $(options.acrossQuestions).hide(); - $(options.actionContainer).toggleClass(options.selectedClass); - $(options.allContainer).show(); - $(options.counterContainer).hide(); - }, - reset = function() { - $(options.acrossClears).hide(); - $(options.acrossQuestions).hide(); - $(options.allContainer).hide(); - $(options.counterContainer).show(); - }, - clearAcross = function() { - reset(); - $(options.acrossInput).val(0); - $(options.actionContainer).removeClass(options.selectedClass); - }, - checker = function(checked) { - if (checked) { - showQuestion(); - } else { - reset(); - } - $(actionCheckboxes).prop("checked", checked) - .parent().parent().toggleClass(options.selectedClass, checked); - }, - updateCounter = function() { - var sel = $(actionCheckboxes).filter(":checked").length; - // _actions_icnt is defined in the generated HTML - // and contains the total amount of objects in the queryset - $(options.counterContainer).html(interpolate( - ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { - sel: sel, - cnt: _actions_icnt - }, true)); - $(options.allToggle).prop("checked", function() { - var value; - if (sel === actionCheckboxes.length) { - value = true; - showQuestion(); - } else { - value = false; - clearAcross(); - } - return value; - }); - }; - // Show counter by default - $(options.counterContainer).show(); - // Check state of checkboxes and reinit state if needed - $(this).filter(":checked").each(function(i) { - $(this).parent().parent().toggleClass(options.selectedClass); - updateCounter(); - if ($(options.acrossInput).val() === 1) { - showClear(); - } - }); - $(options.allToggle).show().click(function() { - checker($(this).prop("checked")); - updateCounter(); - }); - $("a", options.acrossQuestions).click(function(event) { - event.preventDefault(); - $(options.acrossInput).val(1); - showClear(); - }); - $("a", options.acrossClears).click(function(event) { - event.preventDefault(); - $(options.allToggle).prop("checked", false); - clearAcross(); - checker(0); - updateCounter(); - }); - lastChecked = null; - $(actionCheckboxes).click(function(event) { - if (!event) { event = window.event; } - var target = event.target ? event.target : event.srcElement; - if (lastChecked && $.data(lastChecked) !== $.data(target) && event.shiftKey === true) { - var inrange = false; - $(lastChecked).prop("checked", target.checked) - .parent().parent().toggleClass(options.selectedClass, target.checked); - $(actionCheckboxes).each(function() { - if ($.data(this) === $.data(lastChecked) || $.data(this) === $.data(target)) { - inrange = (inrange) ? false : true; - } - if (inrange) { - $(this).prop("checked", target.checked) - .parent().parent().toggleClass(options.selectedClass, target.checked); - } - }); - } - $(target).parent().parent().toggleClass(options.selectedClass, target.checked); - lastChecked = target; - updateCounter(); - }); - $('form#changelist-form table#result_list tr').find('td:gt(0) :input').change(function() { - list_editable_changed = true; - }); - $('form#changelist-form button[name="index"]').click(function(event) { - if (list_editable_changed) { - return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.")); - } - }); - $('form#changelist-form input[name="_save"]').click(function(event) { - var action_changed = false; - $('select option:selected', options.actionContainer).each(function() { - if ($(this).val()) { - action_changed = true; - } - }); - if (action_changed) { - if (list_editable_changed) { - return confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")); - } else { - return confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button.")); - } - } - }); - }; - /* Setup plugin defaults */ - $.fn.actions.defaults = { - actionContainer: "div.actions", - counterContainer: "span.action-counter", - allContainer: "div.actions span.all", - acrossInput: "div.actions input.select-across", - acrossQuestions: "div.actions span.question", - acrossClears: "div.actions span.clear", - allToggle: "#action-toggle", - selectedClass: "selected" - }; -})(django.jQuery); diff --git a/static/admin/js/actions.min.js b/static/admin/js/actions.min.js deleted file mode 100644 index d0e87bcfa9387c83d737b7d084e453f478c78a7b..0000000000000000000000000000000000000000 --- a/static/admin/js/actions.min.js +++ /dev/null @@ -1,6 +0,0 @@ -(function(a){var f;a.fn.actions=function(q){var b=a.extend({},a.fn.actions.defaults,q),g=a(this),e=!1,k=function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()},l=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},m=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},n=function(){m(); -a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)},p=function(c){c?k():m();a(g).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},h=function(){var c=a(g).filter(":checked").length;a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:_actions_icnt},!0));a(b.allToggle).prop("checked",function(){var a;c===g.length?(a=!0,k()):(a=!1,n());return a})};a(b.counterContainer).show();a(this).filter(":checked").each(function(c){a(this).parent().parent().toggleClass(b.selectedClass); -h();1===a(b.acrossInput).val()&&l()});a(b.allToggle).show().click(function(){p(a(this).prop("checked"));h()});a("a",b.acrossQuestions).click(function(c){c.preventDefault();a(b.acrossInput).val(1);l()});a("a",b.acrossClears).click(function(c){c.preventDefault();a(b.allToggle).prop("checked",!1);n();p(0);h()});f=null;a(g).click(function(c){c||(c=window.event);var d=c.target?c.target:c.srcElement;if(f&&a.data(f)!==a.data(d)&&!0===c.shiftKey){var e=!1;a(f).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass, -d.checked);a(g).each(function(){if(a.data(this)===a.data(f)||a.data(this)===a.data(d))e=e?!1:!0;e&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);f=d;h()});a("form#changelist-form table#result_list tr").find("td:gt(0) :input").change(function(){e=!0});a('form#changelist-form button[name="index"]').click(function(a){if(e)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))}); -a('form#changelist-form input[name="_save"]').click(function(c){var d=!1;a("select option:selected",b.actionContainer).each(function(){a(this).val()&&(d=!0)});if(d)return e?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")):confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})}; -a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"}})(django.jQuery); diff --git a/static/admin/js/admin/DateTimeShortcuts.js b/static/admin/js/admin/DateTimeShortcuts.js deleted file mode 100644 index bc7e1879e3891c490f9ea32b86284c0d1fad246d..0000000000000000000000000000000000000000 --- a/static/admin/js/admin/DateTimeShortcuts.js +++ /dev/null @@ -1,364 +0,0 @@ -/*global addEvent, Calendar, cancelEventPropagation, findPosX, findPosY, getStyle, get_format, gettext, interpolate, ngettext, quickElement, removeEvent*/ -// Inserts shortcut buttons after all of the following: -// <input type="text" class="vDateField"> -// <input type="text" class="vTimeField"> -(function() { - 'use strict'; - var DateTimeShortcuts = { - calendars: [], - calendarInputs: [], - clockInputs: [], - dismissClockFunc: [], - dismissCalendarFunc: [], - calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled - calendarDivName2: 'calendarin', // name of <div> that contains calendar - calendarLinkName: 'calendarlink',// name of the link that is used to toggle - clockDivName: 'clockbox', // name of clock <div> that gets toggled - clockLinkName: 'clocklink', // name of the link that is used to toggle - shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts - timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch - timezoneOffset: 0, - init: function() { - var body = document.getElementsByTagName('body')[0]; - var serverOffset = body.getAttribute('data-admin-utc-offset'); - if (serverOffset) { - var localOffset = new Date().getTimezoneOffset() * -60; - DateTimeShortcuts.timezoneOffset = localOffset - serverOffset; - } - - var inputs = document.getElementsByTagName('input'); - for (var i = 0; i < inputs.length; i++) { - var inp = inputs[i]; - if (inp.getAttribute('type') === 'text' && inp.className.match(/vTimeField/)) { - DateTimeShortcuts.addClock(inp); - DateTimeShortcuts.addTimezoneWarning(inp); - } - else if (inp.getAttribute('type') === 'text' && inp.className.match(/vDateField/)) { - DateTimeShortcuts.addCalendar(inp); - DateTimeShortcuts.addTimezoneWarning(inp); - } - } - }, - // Return the current time while accounting for the server timezone. - now: function() { - var body = document.getElementsByTagName('body')[0]; - var serverOffset = body.getAttribute('data-admin-utc-offset'); - if (serverOffset) { - var localNow = new Date(); - var localOffset = localNow.getTimezoneOffset() * -60; - localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset)); - return localNow; - } else { - return new Date(); - } - }, - // Add a warning when the time zone in the browser and backend do not match. - addTimezoneWarning: function(inp) { - var $ = django.jQuery; - var warningClass = DateTimeShortcuts.timezoneWarningClass; - var timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600; - - // Only warn if there is a time zone mismatch. - if (!timezoneOffset) { - return; - } - - // Check if warning is already there. - if ($(inp).siblings('.' + warningClass).length) { - return; - } - - var message; - if (timezoneOffset > 0) { - message = ngettext( - 'Note: You are %s hour ahead of server time.', - 'Note: You are %s hours ahead of server time.', - timezoneOffset - ); - } - else { - timezoneOffset *= -1; - message = ngettext( - 'Note: You are %s hour behind server time.', - 'Note: You are %s hours behind server time.', - timezoneOffset - ); - } - message = interpolate(message, [timezoneOffset]); - - var $warning = $('<span>'); - $warning.attr('class', warningClass); - $warning.text(message); - - $(inp).parent() - .append($('<br>')) - .append($warning); - }, - // Add clock widget to a given field - addClock: function(inp) { - var num = DateTimeShortcuts.clockInputs.length; - DateTimeShortcuts.clockInputs[num] = inp; - DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; }; - - // Shortcut links (clock icon and "Now" link) - var shortcuts_span = document.createElement('span'); - shortcuts_span.className = DateTimeShortcuts.shortCutsClass; - inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); - var now_link = document.createElement('a'); - now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", -1);"); - now_link.appendChild(document.createTextNode(gettext('Now'))); - var clock_link = document.createElement('a'); - clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');'); - clock_link.id = DateTimeShortcuts.clockLinkName + num; - quickElement( - 'span', clock_link, '', - 'class', 'clock-icon', - 'title', gettext('Choose a Time') - ); - shortcuts_span.appendChild(document.createTextNode('\u00A0')); - shortcuts_span.appendChild(now_link); - shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); - shortcuts_span.appendChild(clock_link); - - // Create clock link div - // - // Markup looks like: - // <div id="clockbox1" class="clockbox module"> - // <h2>Choose a time</h2> - // <ul class="timelist"> - // <li><a href="#">Now</a></li> - // <li><a href="#">Midnight</a></li> - // <li><a href="#">6 a.m.</a></li> - // <li><a href="#">Noon</a></li> - // <li><a href="#">6 p.m.</a></li> - // </ul> - // <p class="calendar-cancel"><a href="#">Cancel</a></p> - // </div> - - var clock_box = document.createElement('div'); - clock_box.style.display = 'none'; - clock_box.style.position = 'absolute'; - clock_box.className = 'clockbox module'; - clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num); - document.body.appendChild(clock_box); - addEvent(clock_box, 'click', cancelEventPropagation); - - quickElement('h2', clock_box, gettext('Choose a time')); - var time_list = quickElement('ul', clock_box); - time_list.className = 'timelist'; - quickElement("a", quickElement("li", time_list), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", -1);"); - quickElement("a", quickElement("li", time_list), gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 0);"); - quickElement("a", quickElement("li", time_list), gettext("6 a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 6);"); - quickElement("a", quickElement("li", time_list), gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 12);"); - quickElement("a", quickElement("li", time_list), gettext("6 p.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", 18);"); - - var cancel_p = quickElement('p', clock_box); - cancel_p.className = 'calendar-cancel'; - quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');'); - django.jQuery(document).bind('keyup', function(event) { - if (event.which === 27) { - // ESC key closes popup - DateTimeShortcuts.dismissClock(num); - event.preventDefault(); - } - }); - }, - openClock: function(num) { - var clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num); - var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num); - - // Recalculate the clockbox position - // is it left-to-right or right-to-left layout ? - if (getStyle(document.body, 'direction') !== 'rtl') { - clock_box.style.left = findPosX(clock_link) + 17 + 'px'; - } - else { - // since style's width is in em, it'd be tough to calculate - // px value of it. let's use an estimated px for now - // TODO: IE returns wrong value for findPosX when in rtl mode - // (it returns as it was left aligned), needs to be fixed. - clock_box.style.left = findPosX(clock_link) - 110 + 'px'; - } - clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px'; - - // Show the clock box - clock_box.style.display = 'block'; - addEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]); - }, - dismissClock: function(num) { - document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none'; - removeEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]); - }, - handleClockQuicklink: function(num, val) { - var d; - if (val === -1) { - d = DateTimeShortcuts.now(); - } - else { - d = new Date(1970, 1, 1, val, 0, 0, 0); - } - DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]); - DateTimeShortcuts.clockInputs[num].focus(); - DateTimeShortcuts.dismissClock(num); - }, - // Add calendar widget to a given field. - addCalendar: function(inp) { - var num = DateTimeShortcuts.calendars.length; - - DateTimeShortcuts.calendarInputs[num] = inp; - DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; }; - - // Shortcut links (calendar icon and "Today" link) - var shortcuts_span = document.createElement('span'); - shortcuts_span.className = DateTimeShortcuts.shortCutsClass; - inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); - var today_link = document.createElement('a'); - today_link.setAttribute('href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);'); - today_link.appendChild(document.createTextNode(gettext('Today'))); - var cal_link = document.createElement('a'); - cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');'); - cal_link.id = DateTimeShortcuts.calendarLinkName + num; - quickElement( - 'span', cal_link, '', - 'class', 'date-icon', - 'title', gettext('Choose a Date') - ); - shortcuts_span.appendChild(document.createTextNode('\u00A0')); - shortcuts_span.appendChild(today_link); - shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); - shortcuts_span.appendChild(cal_link); - - // Create calendarbox div. - // - // Markup looks like: - // - // <div id="calendarbox3" class="calendarbox module"> - // <h2> - // <a href="#" class="link-previous">‹</a> - // <a href="#" class="link-next">›</a> February 2003 - // </h2> - // <div class="calendar" id="calendarin3"> - // <!-- (cal) --> - // </div> - // <div class="calendar-shortcuts"> - // <a href="#">Yesterday</a> | <a href="#">Today</a> | <a href="#">Tomorrow</a> - // </div> - // <p class="calendar-cancel"><a href="#">Cancel</a></p> - // </div> - var cal_box = document.createElement('div'); - cal_box.style.display = 'none'; - cal_box.style.position = 'absolute'; - cal_box.className = 'calendarbox module'; - cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num); - document.body.appendChild(cal_box); - addEvent(cal_box, 'click', cancelEventPropagation); - - // next-prev links - var cal_nav = quickElement('div', cal_box); - var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', 'javascript:DateTimeShortcuts.drawPrev(' + num + ');'); - cal_nav_prev.className = 'calendarnav-previous'; - var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext(' + num + ');'); - cal_nav_next.className = 'calendarnav-next'; - - // main box - var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num); - cal_main.className = 'calendar'; - DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num)); - DateTimeShortcuts.calendars[num].drawCurrent(); - - // calendar shortcuts - var shortcuts = quickElement('div', cal_box); - shortcuts.className = 'calendar-shortcuts'; - quickElement('a', shortcuts, gettext('Yesterday'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', -1);'); - shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); - quickElement('a', shortcuts, gettext('Today'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);'); - shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); - quickElement('a', shortcuts, gettext('Tomorrow'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', +1);'); - - // cancel bar - var cancel_p = quickElement('p', cal_box); - cancel_p.className = 'calendar-cancel'; - quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissCalendar(' + num + ');'); - django.jQuery(document).bind('keyup', function(event) { - if (event.which === 27) { - // ESC key closes popup - DateTimeShortcuts.dismissCalendar(num); - event.preventDefault(); - } - }); - }, - openCalendar: function(num) { - var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num); - var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num); - var inp = DateTimeShortcuts.calendarInputs[num]; - - // Determine if the current value in the input has a valid date. - // If so, draw the calendar with that date's year and month. - if (inp.value) { - var format = get_format('DATE_INPUT_FORMATS')[0]; - var selected = inp.value.strptime(format); - var year = selected.getFullYear(); - var month = selected.getMonth() + 1; - var re = /\d{4}/; - if (re.test(year.toString()) && month >= 1 && month <= 12) { - DateTimeShortcuts.calendars[num].drawDate(month, year, selected); - } - } - - // Recalculate the clockbox position - // is it left-to-right or right-to-left layout ? - if (getStyle(document.body, 'direction') !== 'rtl') { - cal_box.style.left = findPosX(cal_link) + 17 + 'px'; - } - else { - // since style's width is in em, it'd be tough to calculate - // px value of it. let's use an estimated px for now - // TODO: IE returns wrong value for findPosX when in rtl mode - // (it returns as it was left aligned), needs to be fixed. - cal_box.style.left = findPosX(cal_link) - 180 + 'px'; - } - cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px'; - - cal_box.style.display = 'block'; - addEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]); - }, - dismissCalendar: function(num) { - document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; - removeEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]); - }, - drawPrev: function(num) { - DateTimeShortcuts.calendars[num].drawPreviousMonth(); - }, - drawNext: function(num) { - DateTimeShortcuts.calendars[num].drawNextMonth(); - }, - handleCalendarCallback: function(num) { - var format = get_format('DATE_INPUT_FORMATS')[0]; - // the format needs to be escaped a little - format = format.replace('\\', '\\\\'); - format = format.replace('\r', '\\r'); - format = format.replace('\n', '\\n'); - format = format.replace('\t', '\\t'); - format = format.replace("'", "\\'"); - return ["function(y, m, d) { DateTimeShortcuts.calendarInputs[", - num, - "].value = new Date(y, m-1, d).strftime('", - format, - "');DateTimeShortcuts.calendarInputs[", - num, - "].focus();document.getElementById(DateTimeShortcuts.calendarDivName1+", - num, - ").style.display='none';}"].join(''); - }, - handleCalendarQuickLink: function(num, offset) { - var d = DateTimeShortcuts.now(); - d.setDate(d.getDate() + offset); - DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]); - DateTimeShortcuts.calendarInputs[num].focus(); - DateTimeShortcuts.dismissCalendar(num); - } - }; - - addEvent(window, 'load', DateTimeShortcuts.init); - window.DateTimeShortcuts = DateTimeShortcuts; -})(); diff --git a/static/admin/js/admin/RelatedObjectLookups.js b/static/admin/js/admin/RelatedObjectLookups.js deleted file mode 100644 index e661e0bcf465ba0abfc214428782d9f112695576..0000000000000000000000000000000000000000 --- a/static/admin/js/admin/RelatedObjectLookups.js +++ /dev/null @@ -1,181 +0,0 @@ -/*global SelectBox, interpolate*/ -// Handles related-objects functionality: lookup link for raw_id_fields -// and Add Another links. - -(function($) { - 'use strict'; - - function html_unescape(text) { - // Unescape a string that was escaped using django.utils.html.escape. - text = text.replace(/</g, '<'); - text = text.replace(/>/g, '>'); - text = text.replace(/"/g, '"'); - text = text.replace(/'/g, "'"); - text = text.replace(/&/g, '&'); - return text; - } - - // IE doesn't accept periods or dashes in the window name, but the element IDs - // we use to generate popup window names may contain them, therefore we map them - // to allowed characters in a reversible way so that we can locate the correct - // element when the popup window is dismissed. - function id_to_windowname(text) { - text = text.replace(/\./g, '__dot__'); - text = text.replace(/\-/g, '__dash__'); - return text; - } - - function windowname_to_id(text) { - text = text.replace(/__dot__/g, '.'); - text = text.replace(/__dash__/g, '-'); - return text; - } - - function showAdminPopup(triggeringLink, name_regexp, add_popup) { - var name = triggeringLink.id.replace(name_regexp, ''); - name = id_to_windowname(name); - var href = triggeringLink.href; - if (add_popup) { - if (href.indexOf('?') === -1) { - href += '?_popup=1'; - } else { - href += '&_popup=1'; - } - } - var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes'); - win.focus(); - return false; - } - - function showRelatedObjectLookupPopup(triggeringLink) { - return showAdminPopup(triggeringLink, /^lookup_/, true); - } - - function dismissRelatedLookupPopup(win, chosenId) { - var name = windowname_to_id(win.name); - var elem = document.getElementById(name); - if (elem.className.indexOf('vManyToManyRawIdAdminField') !== -1 && elem.value) { - elem.value += ',' + chosenId; - } else { - document.getElementById(name).value = chosenId; - } - win.close(); - } - - function showRelatedObjectPopup(triggeringLink) { - return showAdminPopup(triggeringLink, /^(change|add|delete)_/, false); - } - - function updateRelatedObjectLinks(triggeringLink) { - var $this = django.jQuery(triggeringLink); - var siblings = $this.nextAll('.change-related, .delete-related'); - if (!siblings.length) { - return; - } - var value = $this.val(); - if (value) { - siblings.each(function() { - var elm = django.jQuery(this); - elm.attr('href', elm.attr('data-href-template').replace('__fk__', value)); - }); - } else { - siblings.removeAttr('href'); - } - } - - function dismissAddRelatedObjectPopup(win, newId, newRepr) { - // newId and newRepr are expected to have previously been escaped by - // django.utils.html.escape. - newId = html_unescape(newId); - newRepr = html_unescape(newRepr); - var name = windowname_to_id(win.name); - var elem = document.getElementById(name); - if (elem) { - var elemName = elem.nodeName.toUpperCase(); - if (elemName === 'SELECT') { - elem.options[elem.options.length] = new Option(newRepr, newId, true, true); - } else if (elemName === 'INPUT') { - if (elem.className.indexOf('vManyToManyRawIdAdminField') !== -1 && elem.value) { - elem.value += ',' + newId; - } else { - elem.value = newId; - } - } - // Trigger a change event to update related links if required. - django.jQuery(elem).trigger('change'); - } else { - var toId = name + "_to"; - var o = new Option(newRepr, newId); - SelectBox.add_to_cache(toId, o); - SelectBox.redisplay(toId); - } - win.close(); - } - - function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) { - objId = html_unescape(objId); - newRepr = html_unescape(newRepr); - var id = windowname_to_id(win.name).replace(/^edit_/, ''); - var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); - var selects = django.jQuery(selectsSelector); - selects.find('option').each(function() { - if (this.value === objId) { - this.innerHTML = newRepr; - this.value = newId; - } - }); - win.close(); - } - - function dismissDeleteRelatedObjectPopup(win, objId) { - objId = html_unescape(objId); - var id = windowname_to_id(win.name).replace(/^delete_/, ''); - var selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]); - var selects = django.jQuery(selectsSelector); - selects.find('option').each(function() { - if (this.value === objId) { - django.jQuery(this).remove(); - } - }).trigger('change'); - win.close(); - } - - // Global for testing purposes - window.html_unescape = html_unescape; - window.id_to_windowname = id_to_windowname; - window.windowname_to_id = windowname_to_id; - - window.showRelatedObjectLookupPopup = showRelatedObjectLookupPopup; - window.dismissRelatedLookupPopup = dismissRelatedLookupPopup; - window.showRelatedObjectPopup = showRelatedObjectPopup; - window.updateRelatedObjectLinks = updateRelatedObjectLinks; - window.dismissAddRelatedObjectPopup = dismissAddRelatedObjectPopup; - window.dismissChangeRelatedObjectPopup = dismissChangeRelatedObjectPopup; - window.dismissDeleteRelatedObjectPopup = dismissDeleteRelatedObjectPopup; - - // Kept for backward compatibility - window.showAddAnotherPopup = showRelatedObjectPopup; - window.dismissAddAnotherPopup = dismissAddRelatedObjectPopup; - - $(document).ready(function() { - $('body').on('click', '.related-widget-wrapper-link', function(e) { - e.preventDefault(); - if (this.href) { - var event = $.Event('django:show-related', {href: this.href}); - $(this).trigger(event); - if (!event.isDefaultPrevented()) { - showRelatedObjectPopup(this); - } - } - }); - $('body').on('change', '.related-widget-wrapper select', function(e) { - var event = $.Event('django:update-related'); - $(this).trigger(event); - if (!event.isDefaultPrevented()) { - updateRelatedObjectLinks(this); - } - }); - $('.related-widget-wrapper select').trigger('change'); - }); - -})(django.jQuery); diff --git a/static/admin/js/calendar.js b/static/admin/js/calendar.js deleted file mode 100644 index 1043dd61efde5473ab91eaf416584d16722449d7..0000000000000000000000000000000000000000 --- a/static/admin/js/calendar.js +++ /dev/null @@ -1,178 +0,0 @@ -/*global gettext, get_format, quickElement, removeChildren*/ -/* -calendar.js - Calendar functions by Adrian Holovaty -depends on core.js for utility functions like removeChildren or quickElement -*/ - -(function() { - 'use strict'; - // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions - var CalendarNamespace = { - monthsOfYear: gettext('January February March April May June July August September October November December').split(' '), - daysOfWeek: gettext('S M T W T F S').split(' '), - firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')), - isLeapYear: function(year) { - return (((year % 4) === 0) && ((year % 100) !== 0 ) || ((year % 400) === 0)); - }, - getDaysInMonth: function(month, year) { - var days; - if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) { - days = 31; - } - else if (month === 4 || month === 6 || month === 9 || month === 11) { - days = 30; - } - else if (month === 2 && CalendarNamespace.isLeapYear(year)) { - days = 29; - } - else { - days = 28; - } - return days; - }, - draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999 - var today = new Date(); - var todayDay = today.getDate(); - var todayMonth = today.getMonth() + 1; - var todayYear = today.getFullYear(); - var todayClass = ''; - - // Use UTC functions here because the date field does not contain time - // and using the UTC function variants prevent the local time offset - // from altering the date, specifically the day field. For example: - // - // ``` - // var x = new Date('2013-10-02'); - // var day = x.getDate(); - // ``` - // - // The day variable above will be 1 instead of 2 in, say, US Pacific time - // zone. - var isSelectedMonth = false; - if (typeof selected !== 'undefined') { - isSelectedMonth = (selected.getUTCFullYear() === year && (selected.getUTCMonth() + 1) === month); - } - - month = parseInt(month); - year = parseInt(year); - var calDiv = document.getElementById(div_id); - removeChildren(calDiv); - var calTable = document.createElement('table'); - quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month - 1] + ' ' + year); - var tableBody = quickElement('tbody', calTable); - - // Draw days-of-week header - var tableRow = quickElement('tr', tableBody); - for (var i = 0; i < 7; i++) { - quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]); - } - - var startingPos = new Date(year, month - 1, 1 - CalendarNamespace.firstDayOfWeek).getDay(); - var days = CalendarNamespace.getDaysInMonth(month, year); - - var nonDayCell; - - // Draw blanks before first of month - tableRow = quickElement('tr', tableBody); - for (i = 0; i < startingPos; i++) { - nonDayCell = quickElement('td', tableRow, ' '); - nonDayCell.className = "nonday"; - } - - // Draw days of month - var currentDay = 1; - for (i = startingPos; currentDay <= days; i++) { - if (i % 7 === 0 && currentDay !== 1) { - tableRow = quickElement('tr', tableBody); - } - if ((currentDay === todayDay) && (month === todayMonth) && (year === todayYear)) { - todayClass = 'today'; - } else { - todayClass = ''; - } - - // use UTC function; see above for explanation. - if (isSelectedMonth && currentDay === selected.getUTCDate()) { - if (todayClass !== '') { - todayClass += " "; - } - todayClass += "selected"; - } - - var cell = quickElement('td', tableRow, '', 'class', todayClass); - - quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '(' + year + ',' + month + ',' + currentDay + '));'); - currentDay++; - } - - // Draw blanks after end of month (optional, but makes for valid code) - while (tableRow.childNodes.length < 7) { - nonDayCell = quickElement('td', tableRow, ' '); - nonDayCell.className = "nonday"; - } - - calDiv.appendChild(calTable); - } - }; - - // Calendar -- A calendar instance - function Calendar(div_id, callback, selected) { - // div_id (string) is the ID of the element in which the calendar will - // be displayed - // callback (string) is the name of a JavaScript function that will be - // called with the parameters (year, month, day) when a day in the - // calendar is clicked - this.div_id = div_id; - this.callback = callback; - this.today = new Date(); - this.currentMonth = this.today.getMonth() + 1; - this.currentYear = this.today.getFullYear(); - if (typeof selected !== 'undefined') { - this.selected = selected; - } - } - Calendar.prototype = { - drawCurrent: function() { - CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected); - }, - drawDate: function(month, year, selected) { - this.currentMonth = month; - this.currentYear = year; - - if(selected) { - this.selected = selected; - } - - this.drawCurrent(); - }, - drawPreviousMonth: function() { - if (this.currentMonth === 1) { - this.currentMonth = 12; - this.currentYear--; - } - else { - this.currentMonth--; - } - this.drawCurrent(); - }, - drawNextMonth: function() { - if (this.currentMonth === 12) { - this.currentMonth = 1; - this.currentYear++; - } - else { - this.currentMonth++; - } - this.drawCurrent(); - }, - drawPreviousYear: function() { - this.currentYear--; - this.drawCurrent(); - }, - drawNextYear: function() { - this.currentYear++; - this.drawCurrent(); - } - }; - window.Calendar = Calendar; -})(); diff --git a/static/admin/js/collapse.js b/static/admin/js/collapse.js deleted file mode 100644 index 7cb936288edde45cbdbc0a420b9148ab3ac86b75..0000000000000000000000000000000000000000 --- a/static/admin/js/collapse.js +++ /dev/null @@ -1,26 +0,0 @@ -/*global gettext*/ -(function($) { - 'use strict'; - $(document).ready(function() { - // Add anchor tag for Show/Hide link - $("fieldset.collapse").each(function(i, elem) { - // Don't hide if fields in this fieldset have errors - if ($(elem).find("div.errors").length === 0) { - $(elem).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser' + - i + '" class="collapse-toggle" href="#">' + gettext("Show") + - '</a>)'); - } - }); - // Add toggle to anchor tag - $("fieldset.collapse a.collapse-toggle").click(function(ev) { - if ($(this).closest("fieldset").hasClass("collapsed")) { - // Show - $(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [$(this).attr("id")]); - } else { - // Hide - $(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", [$(this).attr("id")]); - } - return false; - }); - }); -})(django.jQuery); diff --git a/static/admin/js/collapse.min.js b/static/admin/js/collapse.min.js deleted file mode 100644 index 6251d916668fbc4bdac1f5e267969e4f05ca97c6..0000000000000000000000000000000000000000 --- a/static/admin/js/collapse.min.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(a){a(document).ready(function(){a("fieldset.collapse").each(function(b,c){0===a(c).find("div.errors").length&&a(c).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser'+b+'" class="collapse-toggle" href="#">'+gettext("Show")+"</a>)")});a("fieldset.collapse a.collapse-toggle").click(function(b){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", -[a(this).attr("id")]);return!1})})})(django.jQuery); diff --git a/static/admin/js/core.js b/static/admin/js/core.js deleted file mode 100644 index 34f99262c530e4d47a6f87303979427f1003961b..0000000000000000000000000000000000000000 --- a/static/admin/js/core.js +++ /dev/null @@ -1,263 +0,0 @@ -// Core javascript helper functions - -// basic browser identification & version -var isOpera = (navigator.userAgent.indexOf("Opera") >= 0) && parseFloat(navigator.appVersion); -var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]); - -// Cross-browser event handlers. -function addEvent(obj, evType, fn) { - 'use strict'; - if (obj.addEventListener) { - obj.addEventListener(evType, fn, false); - return true; - } else if (obj.attachEvent) { - var r = obj.attachEvent("on" + evType, fn); - return r; - } else { - return false; - } -} - -function removeEvent(obj, evType, fn) { - 'use strict'; - if (obj.removeEventListener) { - obj.removeEventListener(evType, fn, false); - return true; - } else if (obj.detachEvent) { - obj.detachEvent("on" + evType, fn); - return true; - } else { - return false; - } -} - -function cancelEventPropagation(e) { - 'use strict'; - if (!e) { - e = window.event; - } - e.cancelBubble = true; - if (e.stopPropagation) { - e.stopPropagation(); - } -} - -// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]); -function quickElement() { - 'use strict'; - var obj = document.createElement(arguments[0]); - if (arguments[2]) { - var textNode = document.createTextNode(arguments[2]); - obj.appendChild(textNode); - } - var len = arguments.length; - for (var i = 3; i < len; i += 2) { - obj.setAttribute(arguments[i], arguments[i + 1]); - } - arguments[1].appendChild(obj); - return obj; -} - -// "a" is reference to an object -function removeChildren(a) { - 'use strict'; - while (a.hasChildNodes()) { - a.removeChild(a.lastChild); - } -} - -// ---------------------------------------------------------------------------- -// Cross-browser xmlhttp object -// from http://jibbering.com/2002/4/httprequest.html -// ---------------------------------------------------------------------------- -var xmlhttp; -/*@cc_on @*/ -/*@if (@_jscript_version >= 5) - try { - xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); - } catch (e) { - try { - xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); - } catch (E) { - xmlhttp = false; - } - } -@else - xmlhttp = false; -@end @*/ -if (!xmlhttp && typeof XMLHttpRequest !== 'undefined') { - xmlhttp = new XMLHttpRequest(); -} - -// ---------------------------------------------------------------------------- -// Find-position functions by PPK -// See http://www.quirksmode.org/js/findpos.html -// ---------------------------------------------------------------------------- -function findPosX(obj) { - 'use strict'; - var curleft = 0; - if (obj.offsetParent) { - while (obj.offsetParent) { - curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft); - obj = obj.offsetParent; - } - // IE offsetParent does not include the top-level - if (isIE && obj.parentElement) { - curleft += obj.offsetLeft - obj.scrollLeft; - } - } else if (obj.x) { - curleft += obj.x; - } - return curleft; -} - -function findPosY(obj) { - 'use strict'; - var curtop = 0; - if (obj.offsetParent) { - while (obj.offsetParent) { - curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop); - obj = obj.offsetParent; - } - // IE offsetParent does not include the top-level - if (isIE && obj.parentElement) { - curtop += obj.offsetTop - obj.scrollTop; - } - } else if (obj.y) { - curtop += obj.y; - } - return curtop; -} - -//----------------------------------------------------------------------------- -// Date object extensions -// ---------------------------------------------------------------------------- -(function() { - 'use strict'; - Date.prototype.getTwelveHours = function() { - var hours = this.getHours(); - if (hours === 0) { - return 12; - } - else { - return hours <= 12 ? hours : hours - 12; - } - }; - - Date.prototype.getTwoDigitMonth = function() { - return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1); - }; - - Date.prototype.getTwoDigitDate = function() { - return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); - }; - - Date.prototype.getTwoDigitTwelveHour = function() { - return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours(); - }; - - Date.prototype.getTwoDigitHour = function() { - return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); - }; - - Date.prototype.getTwoDigitMinute = function() { - return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); - }; - - Date.prototype.getTwoDigitSecond = function() { - return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); - }; - - Date.prototype.getHourMinute = function() { - return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute(); - }; - - Date.prototype.getHourMinuteSecond = function() { - return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond(); - }; - - Date.prototype.strftime = function(format) { - var fields = { - c: this.toString(), - d: this.getTwoDigitDate(), - H: this.getTwoDigitHour(), - I: this.getTwoDigitTwelveHour(), - m: this.getTwoDigitMonth(), - M: this.getTwoDigitMinute(), - p: (this.getHours() >= 12) ? 'PM' : 'AM', - S: this.getTwoDigitSecond(), - w: '0' + this.getDay(), - x: this.toLocaleDateString(), - X: this.toLocaleTimeString(), - y: ('' + this.getFullYear()).substr(2, 4), - Y: '' + this.getFullYear(), - '%': '%' - }; - var result = '', i = 0; - while (i < format.length) { - if (format.charAt(i) === '%') { - result = result + fields[format.charAt(i + 1)]; - ++i; - } - else { - result = result + format.charAt(i); - } - ++i; - } - return result; - }; - -// ---------------------------------------------------------------------------- -// String object extensions -// ---------------------------------------------------------------------------- - String.prototype.pad_left = function(pad_length, pad_string) { - var new_string = this; - for (var i = 0; new_string.length < pad_length; i++) { - new_string = pad_string + new_string; - } - return new_string; - }; - - String.prototype.strptime = function(format) { - var split_format = format.split(/[.\-/]/); - var date = this.split(/[.\-/]/); - var i = 0; - var day, month, year; - while (i < split_format.length) { - switch (split_format[i]) { - case "%d": - day = date[i]; - break; - case "%m": - month = date[i] - 1; - break; - case "%Y": - year = date[i]; - break; - case "%y": - year = date[i]; - break; - } - ++i; - } - return new Date(year, month, day); - }; - -})(); -// ---------------------------------------------------------------------------- -// Get the computed style for and element -// ---------------------------------------------------------------------------- -function getStyle(oElm, strCssRule) { - 'use strict'; - var strValue = ""; - if(document.defaultView && document.defaultView.getComputedStyle) { - strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); - } - else if(oElm.currentStyle) { - strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1) { - return p1.toUpperCase(); - }); - strValue = oElm.currentStyle[strCssRule]; - } - return strValue; -} diff --git a/static/admin/js/inlines.js b/static/admin/js/inlines.js deleted file mode 100644 index c725e30cbb29c9be12217d06be1d3eed3c0f10c5..0000000000000000000000000000000000000000 --- a/static/admin/js/inlines.js +++ /dev/null @@ -1,275 +0,0 @@ -/*global DateTimeShortcuts, SelectFilter*/ -/** - * Django admin inlines - * - * Based on jQuery Formset 1.1 - * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com) - * @requires jQuery 1.2.6 or later - * - * Copyright (c) 2009, Stanislaus Madueke - * All rights reserved. - * - * Spiced up with Code from Zain Memon's GSoC project 2009 - * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip. - * - * Licensed under the New BSD License - * See: http://www.opensource.org/licenses/bsd-license.php - */ -(function($) { - 'use strict'; - $.fn.formset = function(opts) { - var options = $.extend({}, $.fn.formset.defaults, opts); - var $this = $(this); - var $parent = $this.parent(); - var updateElementIndex = function(el, prefix, ndx) { - var id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))"); - var replacement = prefix + "-" + ndx; - if ($(el).prop("for")) { - $(el).prop("for", $(el).prop("for").replace(id_regex, replacement)); - } - if (el.id) { - el.id = el.id.replace(id_regex, replacement); - } - if (el.name) { - el.name = el.name.replace(id_regex, replacement); - } - }; - var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off"); - var nextIndex = parseInt(totalForms.val(), 10); - var maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off"); - // only show the add button if we are allowed to add more items, - // note that max_num = None translates to a blank string. - var showAddButton = maxForms.val() === '' || (maxForms.val() - totalForms.val()) > 0; - $this.each(function(i) { - $(this).not("." + options.emptyCssClass).addClass(options.formCssClass); - }); - if ($this.length && showAddButton) { - var addButton; - if ($this.prop("tagName") === "TR") { - // If forms are laid out as table rows, insert the - // "add" button in a new table row: - var numCols = this.eq(-1).children().length; - $parent.append('<tr class="' + options.addCssClass + '"><td colspan="' + numCols + '"><a href="javascript:void(0)">' + options.addText + "</a></tr>"); - addButton = $parent.find("tr:last a"); - } else { - // Otherwise, insert it immediately after the last form: - $this.filter(":last").after('<div class="' + options.addCssClass + '"><a href="javascript:void(0)">' + options.addText + "</a></div>"); - addButton = $this.filter(":last").next().find("a"); - } - addButton.click(function(e) { - e.preventDefault(); - var template = $("#" + options.prefix + "-empty"); - var row = template.clone(true); - row.removeClass(options.emptyCssClass) - .addClass(options.formCssClass) - .attr("id", options.prefix + "-" + nextIndex); - if (row.is("tr")) { - // If the forms are laid out in table rows, insert - // the remove button into the last table cell: - row.children(":last").append('<div><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></div>"); - } else if (row.is("ul") || row.is("ol")) { - // If they're laid out as an ordered/unordered list, - // insert an <li> after the last list item: - row.append('<li><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></li>"); - } else { - // Otherwise, just insert the remove button as the - // last child element of the form's container: - row.children(":first").append('<span><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></span>"); - } - row.find("*").each(function() { - updateElementIndex(this, options.prefix, totalForms.val()); - }); - // Insert the new form when it has been fully edited - row.insertBefore($(template)); - // Update number of total forms - $(totalForms).val(parseInt(totalForms.val(), 10) + 1); - nextIndex += 1; - // Hide add button in case we've hit the max, except we want to add infinitely - if ((maxForms.val() !== '') && (maxForms.val() - totalForms.val()) <= 0) { - addButton.parent().hide(); - } - // The delete button of each row triggers a bunch of other things - row.find("a." + options.deleteCssClass).click(function(e1) { - e1.preventDefault(); - // Remove the parent form containing this button: - row.remove(); - nextIndex -= 1; - // If a post-delete callback was provided, call it with the deleted form: - if (options.removed) { - options.removed(row); - } - $(document).trigger('formset:removed', [row, options.prefix]); - // Update the TOTAL_FORMS form count. - var forms = $("." + options.formCssClass); - $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length); - // Show add button again once we drop below max - if ((maxForms.val() === '') || (maxForms.val() - forms.length) > 0) { - addButton.parent().show(); - } - // Also, update names and ids for all remaining form controls - // so they remain in sequence: - var i, formCount; - var updateElementCallback = function() { - updateElementIndex(this, options.prefix, i); - }; - for (i = 0, formCount = forms.length; i < formCount; i++) { - updateElementIndex($(forms).get(i), options.prefix, i); - $(forms.get(i)).find("*").each(updateElementCallback); - } - }); - // If a post-add callback was supplied, call it with the added form: - if (options.added) { - options.added(row); - } - $(document).trigger('formset:added', [row, options.prefix]); - }); - } - return this; - }; - - /* Setup plugin defaults */ - $.fn.formset.defaults = { - prefix: "form", // The form prefix for your django formset - addText: "add another", // Text for the add link - deleteText: "remove", // Text for the delete link - addCssClass: "add-row", // CSS class applied to the add link - deleteCssClass: "delete-row", // CSS class applied to the delete link - emptyCssClass: "empty-row", // CSS class applied to the empty row - formCssClass: "dynamic-form", // CSS class applied to each form in a formset - added: null, // Function called each time a new form is added - removed: null // Function called each time a form is deleted - }; - - - // Tabular inlines --------------------------------------------------------- - $.fn.tabularFormset = function(options) { - var $rows = $(this); - var alternatingRows = function(row) { - $($rows.selector).not(".add-row").removeClass("row1 row2") - .filter(":even").addClass("row1").end() - .filter(":odd").addClass("row2"); - }; - - var reinitDateTimeShortCuts = function() { - // Reinitialize the calendar and clock widgets by force - if (typeof DateTimeShortcuts !== "undefined") { - $(".datetimeshortcuts").remove(); - DateTimeShortcuts.init(); - } - }; - - var updateSelectFilter = function() { - // If any SelectFilter widgets are a part of the new form, - // instantiate a new SelectFilter instance for it. - if (typeof SelectFilter !== 'undefined') { - $('.selectfilter').each(function(index, value) { - var namearr = value.name.split('-'); - SelectFilter.init(value.id, namearr[namearr.length - 1], false); - }); - $('.selectfilterstacked').each(function(index, value) { - var namearr = value.name.split('-'); - SelectFilter.init(value.id, namearr[namearr.length - 1], true); - }); - } - }; - - var initPrepopulatedFields = function(row) { - row.find('.prepopulated_field').each(function() { - var field = $(this), - input = field.find('input, select, textarea'), - dependency_list = input.data('dependency_list') || [], - dependencies = []; - $.each(dependency_list, function(i, field_name) { - dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id')); - }); - if (dependencies.length) { - input.prepopulate(dependencies, input.attr('maxlength')); - } - }); - }; - - $rows.formset({ - prefix: options.prefix, - addText: options.addText, - formCssClass: "dynamic-" + options.prefix, - deleteCssClass: "inline-deletelink", - deleteText: options.deleteText, - emptyCssClass: "empty-form", - removed: alternatingRows, - added: function(row) { - initPrepopulatedFields(row); - reinitDateTimeShortCuts(); - updateSelectFilter(); - alternatingRows(row); - } - }); - - return $rows; - }; - - // Stacked inlines --------------------------------------------------------- - $.fn.stackedFormset = function(options) { - var $rows = $(this); - var updateInlineLabel = function(row) { - $($rows.selector).find(".inline_label").each(function(i) { - var count = i + 1; - $(this).html($(this).html().replace(/(#\d+)/g, "#" + count)); - }); - }; - - var reinitDateTimeShortCuts = function() { - // Reinitialize the calendar and clock widgets by force, yuck. - if (typeof DateTimeShortcuts !== "undefined") { - $(".datetimeshortcuts").remove(); - DateTimeShortcuts.init(); - } - }; - - var updateSelectFilter = function() { - // If any SelectFilter widgets were added, instantiate a new instance. - if (typeof SelectFilter !== "undefined") { - $(".selectfilter").each(function(index, value) { - var namearr = value.name.split('-'); - SelectFilter.init(value.id, namearr[namearr.length - 1], false); - }); - $(".selectfilterstacked").each(function(index, value) { - var namearr = value.name.split('-'); - SelectFilter.init(value.id, namearr[namearr.length - 1], true); - }); - } - }; - - var initPrepopulatedFields = function(row) { - row.find('.prepopulated_field').each(function() { - var field = $(this), - input = field.find('input, select, textarea'), - dependency_list = input.data('dependency_list') || [], - dependencies = []; - $.each(dependency_list, function(i, field_name) { - dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id')); - }); - if (dependencies.length) { - input.prepopulate(dependencies, input.attr('maxlength')); - } - }); - }; - - $rows.formset({ - prefix: options.prefix, - addText: options.addText, - formCssClass: "dynamic-" + options.prefix, - deleteCssClass: "inline-deletelink", - deleteText: options.deleteText, - emptyCssClass: "empty-form", - removed: updateInlineLabel, - added: function(row) { - initPrepopulatedFields(row); - reinitDateTimeShortCuts(); - updateSelectFilter(); - updateInlineLabel(row); - } - }); - - return $rows; - }; -})(django.jQuery); diff --git a/static/admin/js/inlines.min.js b/static/admin/js/inlines.min.js deleted file mode 100644 index f83cbec6fc365b8f8f2df8e16d20de760d6d1f0f..0000000000000000000000000000000000000000 --- a/static/admin/js/inlines.min.js +++ /dev/null @@ -1,9 +0,0 @@ -(function(b){b.fn.formset=function(d){var a=b.extend({},b.fn.formset.defaults,d),e=b(this);d=e.parent();var k=function(a,f,l){var c=new RegExp("("+f+"-(\\d+|__prefix__))");f=f+"-"+l;b(a).prop("for")&&b(a).prop("for",b(a).prop("for").replace(c,f));a.id&&(a.id=a.id.replace(c,f));a.name&&(a.name=a.name.replace(c,f))},h=b("#id_"+a.prefix+"-TOTAL_FORMS").prop("autocomplete","off"),l=parseInt(h.val(),10),f=b("#id_"+a.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off"),c=""===f.val()||0<f.val()-h.val(); -e.each(function(f){b(this).not("."+a.emptyCssClass).addClass(a.formCssClass)});if(e.length&&c){var m;"TR"===e.prop("tagName")?(e=this.eq(-1).children().length,d.append('<tr class="'+a.addCssClass+'"><td colspan="'+e+'"><a href="javascript:void(0)">'+a.addText+"</a></tr>"),m=d.find("tr:last a")):(e.filter(":last").after('<div class="'+a.addCssClass+'"><a href="javascript:void(0)">'+a.addText+"</a></div>"),m=e.filter(":last").next().find("a"));m.click(function(c){c.preventDefault();c=b("#"+a.prefix+ -"-empty");var g=c.clone(!0);g.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+l);g.is("tr")?g.children(":last").append('<div><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></div>"):g.is("ul")||g.is("ol")?g.append('<li><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></li>"):g.children(":first").append('<span><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></span>");g.find("*").each(function(){k(this, -a.prefix,h.val())});g.insertBefore(b(c));b(h).val(parseInt(h.val(),10)+1);l+=1;""!==f.val()&&0>=f.val()-h.val()&&m.parent().hide();g.find("a."+a.deleteCssClass).click(function(c){c.preventDefault();g.remove();--l;a.removed&&a.removed(g);b(document).trigger("formset:removed",[g,a.prefix]);c=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(c.length);(""===f.val()||0<f.val()-c.length)&&m.parent().show();var d,e,h=function(){k(this,a.prefix,d)};d=0;for(e=c.length;d<e;d++)k(b(c).get(d),a.prefix, -d),b(c.get(d)).find("*").each(h)});a.added&&a.added(g);b(document).trigger("formset:added",[g,a.prefix])})}return this};b.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null};b.fn.tabularFormset=function(d){var a=b(this),e=function(l){b(a.selector).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")}, -k=function(){"undefined"!==typeof SelectFilter&&(b(".selectfilter").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!0)}))},h=function(a){a.find(".prepopulated_field").each(function(){var f=b(this).find("input, select, textarea"),c=f.data("dependency_list")||[],d=[];b.each(c,function(b,c){d.push("#"+a.find(".field-"+c).find("input, select, textarea").attr("id"))}); -d.length&&f.prepopulate(d,f.attr("maxlength"))})};a.formset({prefix:d.prefix,addText:d.addText,formCssClass:"dynamic-"+d.prefix,deleteCssClass:"inline-deletelink",deleteText:d.deleteText,emptyCssClass:"empty-form",removed:e,added:function(a){h(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());k();e(a)}});return a};b.fn.stackedFormset=function(d){var a=b(this),e=function(d){b(a.selector).find(".inline_label").each(function(a){a+=1;b(this).html(b(this).html().replace(/(#\d+)/g, -"#"+a))})},k=function(){"undefined"!==typeof SelectFilter&&(b(".selectfilter").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!1)}),b(".selectfilterstacked").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],!0)}))},h=function(a){a.find(".prepopulated_field").each(function(){var d=b(this).find("input, select, textarea"),c=d.data("dependency_list")||[],e=[];b.each(c,function(b,c){e.push("#"+a.find(".form-row .field-"+c).find("input, select, textarea").attr("id"))}); -e.length&&d.prepopulate(e,d.attr("maxlength"))})};a.formset({prefix:d.prefix,addText:d.addText,formCssClass:"dynamic-"+d.prefix,deleteCssClass:"inline-deletelink",deleteText:d.deleteText,emptyCssClass:"empty-form",removed:e,added:function(a){h(a);"undefined"!==typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());k();e(a)}});return a}})(django.jQuery); diff --git a/static/admin/js/jquery.init.js b/static/admin/js/jquery.init.js deleted file mode 100644 index f3ac162514eea0924f5e2af80633ed86e053c224..0000000000000000000000000000000000000000 --- a/static/admin/js/jquery.init.js +++ /dev/null @@ -1,8 +0,0 @@ -/*global django:true, jQuery:false*/ -/* Puts the included jQuery into our own namespace using noConflict and passing - * it 'true'. This ensures that the included jQuery doesn't pollute the global - * namespace (i.e. this preserves pre-existing values for both window.$ and - * window.jQuery). - */ -var django = django || {}; -django.jQuery = jQuery.noConflict(true); diff --git a/static/admin/js/jquery.js b/static/admin/js/jquery.js deleted file mode 100644 index 1c3aa8228f35d7cf2e9aa67d5dac9efc463f89b4..0000000000000000000000000000000000000000 --- a/static/admin/js/jquery.js +++ /dev/null @@ -1,10346 +0,0 @@ -/*! - * jQuery JavaScript Library v1.11.2 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-17T15:27Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper window is present, - // execute the factory and get jQuery - // For environments that do not inherently posses a window with a document - // (such as Node.js), expose a jQuery-making factory as module.exports - // This accentuates the need for the creation of a real window - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -// - -var deletedIds = []; - -var slice = deletedIds.slice; - -var concat = deletedIds.concat; - -var push = deletedIds.push; - -var indexOf = deletedIds.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "1.11.2", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( support.ownLast ) { - for ( key in obj ) { - return hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( indexOf ) { - return indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - while ( j < len ) { - first[ i++ ] = second[ j++ ]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if ( len !== len ) { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +( new Date() ); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - var length = obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.0-pre - * http://sizzlejs.com/ - * - * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-16 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - nodeType = context.nodeType; - - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - if ( !seed && documentIsHTML ) { - - // Try to shortcut find operations when possible (e.g., not under DocumentFragment) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType !== 1 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - parent = doc.defaultView; - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Support tests - ---------------------------------------------------------------------- */ - documentIsHTML = !isXML( doc ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" + - "<select id='" + expando + "-\f]' msallowcapture=''>" + - "<option selected=''></option></select>"; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = "<a href='#'></a>"; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = "<input/>"; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - // A simple way to check for HTML strings - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.unique( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // First callback to fire (used internally by add and fireWith) - firingStart, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - - } else if ( !(--remaining) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * Clean-up method for dom ready events - */ -function detach() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } -} - -/** - * The ready event handler and self cleanup method - */ -function completed() { - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { - detach(); - jQuery.ready(); - } -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - - // If IE event model is used - } else { - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch(e) {} - - if ( top && top.doScroll ) { - (function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll("left"); - } catch(e) { - return setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - })(); - } - } - } - return readyList.promise( obj ); -}; - - -var strundefined = typeof undefined; - - - -// Support: IE<9 -// Iteration over object's inherited properties before its own -var i; -for ( i in jQuery( support ) ) { - break; -} -support.ownLast = i !== "0"; - -// Note: most support tests are defined in their respective modules. -// false until the test is run -support.inlineBlockNeedsLayout = false; - -// Execute ASAP in case we need to set body.style.zoom -jQuery(function() { - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - if ( typeof div.style.zoom !== strundefined ) { - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if ( val ) { - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); -}); - - - - -(function() { - var div = document.createElement( "div" ); - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -})(); - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( elem ) { - var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? - false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute("classid") === noData; -}; - - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - -function internalData( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split(" "); - } - } - } else { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[i] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, null - } else { - cache[ id ] = null; - } -} - -jQuery.extend({ - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[0], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - return arguments.length > 1 ? - - // Sets one value - this.each(function() { - jQuery.data( this, key, value ); - }) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray(data) ) { - queue = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[0], key ) : emptyGet; -}; -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - // Minified: var a,b,c - var input = document.createElement( "input" ), - div = document.createElement( "div" ), - fragment = document.createDocumentFragment(); - - // Setup - div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName( "tbody" ).length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = - document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav></:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild( input ); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = "<textarea>x</textarea>"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild( div ); - div.innerHTML = "<input type='radio' checked='checked' name='t'/>"; - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Opera does not clone events (and typeof div.attachEvent === undefined). - // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() - support.noCloneEvent = true; - if ( div.attachEvent ) { - div.attachEvent( "onclick", function() { - support.noCloneEvent = false; - }); - - div.cloneNode( true ).click(); - } - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - } -})(); - - -(function() { - var i, eventName, - div = document.createElement( "div" ); - - // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) - for ( i in { submit: true, change: true, focusin: true }) { - eventName = "on" + i; - - if ( !(support[ i + "Bubbles" ] = eventName in window) ) { - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute( eventName, "t" ); - support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -})(); - - -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, ret, handleObj, matched, j, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var sel, handleObj, matches, i, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG <use> instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Chrome 23+, Safari? - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, to properly expose it to GC - if ( typeof elem[ name ] === strundefined ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - if ( !e ) { - return; - } - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// IE submit delegation -if ( !support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; - if ( form && !jQuery._data( form, "submitBubbles" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submit_bubble = true; - }); - jQuery._data( form, "submitBubbles", true ); - } - }); - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - // If form was submitted by the user, bubble the event up the tree - if ( event._submit_bubble ) { - delete event._submit_bubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event, true ); - } - } - }, - - teardown: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !support.changeBubbles ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._just_changed = true; - } - }); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._just_changed && !event.isTrigger ) { - this._just_changed = false; - } - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event, true ); - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event, true ); - } - }); - jQuery._data( elem, "changeBubbles", true ); - } - }); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Create "bubbling" focus and blur events -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - jQuery._removeData( doc, fix ); - } else { - jQuery._data( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var type, origFn; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + - "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rtbody = /<tbody/i, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptType = /^$|\/(?:java|ecma)script/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - option: [ 1, "<select multiple='multiple'>", "</select>" ], - legend: [ 1, "<fieldset>", "</fieldset>" ], - area: [ 1, "<map>", "</map>" ], - param: [ 1, "<object>", "</object>" ], - thead: [ 1, "<table>", "</table>" ], - tr: [ 2, "<table><tbody>", "</tbody></table>" ], - col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ], - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ] - }, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement("div") ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - -// Used in buildFragment, fixes the defaultChecked property -function fixDefaultChecked( elem ) { - if ( rcheckableType.test( elem.type ) ) { - elem.defaultChecked = elem.checked; - } -} - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[1]; - } else { - elem.removeAttribute("type"); - } - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; (elem = elems[i]) != null; i++ ) { - jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); - } -} - -function cloneCopyEvent( src, dest ) { - - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( (!support.noCloneEvent || !support.noCloneChecked) && - (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; (node = srcElements[i]) != null; ++i ) { - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[i] ) { - fixCloneNodeIssues( node, destElements[i] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; (node = srcElements[i]) != null; i++ ) { - cloneCopyEvent( node, destElements[i] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var j, elem, contains, - tmp, tag, tbody, wrap, - l = elems.length, - - // Ensure a safe fragment - safe = createSafeFragment( context ), - - nodes = [], - i = 0; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || safe.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - - tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2]; - - // Descend through wrappers to the right content - j = wrap[0]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Manually add leading whitespace removed by IE - if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); - } - - // Remove IE's autoinserted <tbody> from table fragments - if ( !support.tbody ) { - - // String was a <table>, *may* have spurious <tbody> - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare <thead> or <tfoot> - wrap[1] === "<table>" && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; - }, - - cleanData: function( elems, /* internal */ acceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - deleteExpando = support.deleteExpando, - special = jQuery.event.special; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( acceptData || jQuery.acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( deleteExpando ) { - delete elem[ internalKey ]; - - } else if ( typeof elem.removeAttribute !== strundefined ) { - elem.removeAttribute( internalKey ); - - } else { - elem[ internalKey ] = null; - } - - deletedIds.push( id ); - } - } - } - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1></$2>" ); - - try { - for (; i < l; i++ ) { - // Remove element nodes and prevent memory leaks - elem = this[i] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch(e) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[0], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[0] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[i], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone(true); - jQuery( insert[i] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optmization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement ); - - // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse - doc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document; - - // Support: IE - doc.write(); - doc.close(); - - display = actualDisplay( nodeName, doc ); - iframe.detach(); - } - - // Store the correct default display - elemdisplay[ nodeName ] = display; - } - - return display; -} - - -(function() { - var shrinkWrapBlocksVal; - - support.shrinkWrapBlocks = function() { - if ( shrinkWrapBlocksVal != null ) { - return shrinkWrapBlocksVal; - } - - // Will be changed later if needed. - shrinkWrapBlocksVal = false; - - // Minified: var b,c,d - var div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - // Test fired too early or in an unsupported environment, exit. - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - // Support: IE6 - // Check if elements with layout shrink-wrap their children - if ( typeof div.style.zoom !== strundefined ) { - // Reset CSS: box-sizing; display; margin; border - div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;" + - "padding:1px;width:1px;zoom:1"; - div.appendChild( document.createElement( "div" ) ).style.width = "5px"; - shrinkWrapBlocksVal = div.offsetWidth !== 3; - } - - body.removeChild( container ); - - return shrinkWrapBlocksVal; - }; - -})(); -var rmargin = (/^margin/); - -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - - - -var getStyles, curCSS, - rposition = /^(top|right|bottom|left)$/; - -if ( window.getComputedStyle ) { - getStyles = function( elem ) { - // Support: IE<=11+, Firefox<=30+ (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - if ( elem.ownerDocument.defaultView.opener ) { - return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); - } - - return window.getComputedStyle( elem, null ); - }; - - curCSS = function( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is only needed for .css('filter') in IE9, see #12537 - ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined; - - if ( computed ) { - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right - // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values - if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - // Support: IE - // IE returns zIndex value as an integer. - return ret === undefined ? - ret : - ret + ""; - }; -} else if ( document.documentElement.currentStyle ) { - getStyles = function( elem ) { - return elem.currentStyle; - }; - - curCSS = function( elem, name, computed ) { - var left, rs, rsLeft, ret, - style = elem.style; - - computed = computed || getStyles( elem ); - ret = computed ? computed[ name ] : undefined; - - // Avoid setting ret to empty string here - // so we don't default to auto - if ( ret == null && style && style[ name ] ) { - ret = style[ name ]; - } - - // From the awesome hack by Dean Edwards - // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 - - // If we're not dealing with a regular pixel number - // but a number that has a weird ending, we need to convert it to pixels - // but not position css attributes, as those are proportional to the parent element instead - // and we can't measure the parent instead because it might trigger a "stacking dolls" problem - if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { - - // Remember the original values - left = style.left; - rs = elem.runtimeStyle; - rsLeft = rs && rs.left; - - // Put in the new values to get a computed value out - if ( rsLeft ) { - rs.left = elem.currentStyle.left; - } - style.left = name === "fontSize" ? "1em" : ret; - ret = style.pixelLeft + "px"; - - // Revert the changed values - style.left = left; - if ( rsLeft ) { - rs.left = rsLeft; - } - } - - // Support: IE - // IE returns zIndex value as an integer. - return ret === undefined ? - ret : - ret + "" || "auto"; - }; -} - - - - -function addGetHookIf( conditionFn, hookFn ) { - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - var condition = conditionFn(); - - if ( condition == null ) { - // The test was not ready at this point; screw the hook this time - // but check again when needed next time. - return; - } - - if ( condition ) { - // Hook not needed (or it's not possible to use it due to missing dependency), - // remove it. - // Since there are no other hooks for marginRight, remove the whole object. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - - return (this.get = hookFn).apply( this, arguments ); - } - }; -} - - -(function() { - // Minified: var b,c,d,e,f,g, h,i - var div, style, a, pixelPositionVal, boxSizingReliableVal, - reliableHiddenOffsetsVal, reliableMarginRightVal; - - // Setup - div = document.createElement( "div" ); - div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; - a = div.getElementsByTagName( "a" )[ 0 ]; - style = a && a.style; - - // Finish early in limited (non-browser) environments - if ( !style ) { - return; - } - - style.cssText = "float:left;opacity:.5"; - - // Support: IE<9 - // Make sure that element opacity exists (as opposed to filter) - support.opacity = style.opacity === "0.5"; - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - support.cssFloat = !!style.cssFloat; - - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - support.boxSizing = style.boxSizing === "" || style.MozBoxSizing === "" || - style.WebkitBoxSizing === ""; - - jQuery.extend(support, { - reliableHiddenOffsets: function() { - if ( reliableHiddenOffsetsVal == null ) { - computeStyleTests(); - } - return reliableHiddenOffsetsVal; - }, - - boxSizingReliable: function() { - if ( boxSizingReliableVal == null ) { - computeStyleTests(); - } - return boxSizingReliableVal; - }, - - pixelPosition: function() { - if ( pixelPositionVal == null ) { - computeStyleTests(); - } - return pixelPositionVal; - }, - - // Support: Android 2.3 - reliableMarginRight: function() { - if ( reliableMarginRightVal == null ) { - computeStyleTests(); - } - return reliableMarginRightVal; - } - }); - - function computeStyleTests() { - // Minified: var b,c,d,j - var div, body, container, contents; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - // Test fired too early or in an unsupported environment, exit. - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" + - "box-sizing:border-box;display:block;margin-top:1%;top:1%;" + - "border:1px;padding:1px;width:4px;position:absolute"; - - // Support: IE<9 - // Assume reasonable values in the absence of getComputedStyle - pixelPositionVal = boxSizingReliableVal = false; - reliableMarginRightVal = true; - - // Check for getComputedStyle so that this code is not run in IE<9. - if ( window.getComputedStyle ) { - pixelPositionVal = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; - boxSizingReliableVal = - ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; - - // Support: Android 2.3 - // Div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container (#3333) - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - contents = div.appendChild( document.createElement( "div" ) ); - - // Reset CSS: box-sizing; display; margin; border; padding - contents.style.cssText = div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; - contents.style.marginRight = contents.style.width = "0"; - div.style.width = "1px"; - - reliableMarginRightVal = - !parseFloat( ( window.getComputedStyle( contents, null ) || {} ).marginRight ); - - div.removeChild( contents ); - } - - // Support: IE8 - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>"; - contents = div.getElementsByTagName( "td" ); - contents[ 0 ].style.cssText = "margin:0;border:0;padding:0;display:none"; - reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0; - if ( reliableHiddenOffsetsVal ) { - contents[ 0 ].style.display = ""; - contents[ 1 ].style.display = "none"; - reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0; - } - - body.removeChild( container ); - } - -})(); - - -// A method for quickly swapping in/out CSS properties to get correct calculations. -jQuery.swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var - ralpha = /alpha\([^)]*\)/i, - ropacity = /opacity\s*=\s*([^)]*)/, - - // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" - // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ), - rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ), - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; - - -// return a css property mapped to a potentially vendor prefixed property -function vendorPropName( style, name ) { - - // shortcut for names that are not vendor prefixed - if ( name in style ) { - return name; - } - - // check for vendor prefixed names - var capName = name.charAt(0).toUpperCase() + name.slice(1), - origName = name, - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in style ) { - return name; - } - } - - return origName; -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = jQuery._data( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) ); - } - } else { - hidden = isHidden( elem ); - - if ( display && display !== "none" || !hidden ) { - jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -function setPositiveNumber( elem, value, subtract ) { - var matches = rnumsplit.exec( value ); - return matches ? - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - // If we already have the right measurement, avoid augmentation - 4 : - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - // both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // at this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - // at this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // at this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test(val) ) { - return val; - } - - // we need the check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -jQuery.extend({ - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - // normalize float css property - "float": support.cssFloat ? "cssFloat" : "styleFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // convert relative number strings (+= or -=) to relative numbers. #7345 - if ( type === "string" && (ret = rrelNum.exec( value )) ) { - value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set. See: #7116 - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, - // but it would mean to define eight (for every problematic property) identical functions - if ( !support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { - - // Support: IE - // Swallow errors from 'invalid' CSS values (#5509) - try { - style[ name ] = value; - } catch(e) {} - } - - } else { - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var num, val, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); - - // gets hook for the prefixed version - // followed by the unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - //convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Return, converting to number if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; - } - return val; - } -}); - -jQuery.each([ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - // certain elements can have dimension info if we invisibly show them - // however, it must have a current display style that would benefit from this - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ? - jQuery.swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - }) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var styles = extra && getStyles( elem ); - return setPositiveNumber( elem, value, extra ? - augmentWidthOrHeight( - elem, - name, - extra, - support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ) : 0 - ); - } - }; -}); - -if ( !support.opacity ) { - jQuery.cssHooks.opacity = { - get: function( elem, computed ) { - // IE uses filters for opacity - return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? - ( 0.01 * parseFloat( RegExp.$1 ) ) + "" : - computed ? "1" : ""; - }, - - set: function( elem, value ) { - var style = elem.style, - currentStyle = elem.currentStyle, - opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", - filter = currentStyle && currentStyle.filter || style.filter || ""; - - // IE has trouble with opacity if it does not have layout - // Force it by setting the zoom level - style.zoom = 1; - - // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 - // if value === "", then remove inline opacity #12685 - if ( ( value >= 1 || value === "" ) && - jQuery.trim( filter.replace( ralpha, "" ) ) === "" && - style.removeAttribute ) { - - // Setting style.filter to null, "" & " " still leave "filter:" in the cssText - // if "filter:" is present at all, clearType is disabled, we want to avoid this - // style.removeAttribute is IE Only, but so apparently is this code path... - style.removeAttribute( "filter" ); - - // if there is no filter style applied in a css rule or unset inline opacity, we are done - if ( value === "" || currentStyle && !currentStyle.filter ) { - return; - } - } - - // otherwise, set new filter values - style.filter = ralpha.test( filter ) ? - filter.replace( ralpha, opacity ) : - filter + " " + opacity; - } - }; -} - -jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight, - function( elem, computed ) { - if ( computed ) { - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - // Work around by temporarily setting element display to inline-block - return jQuery.swap( elem, { "display": "inline-block" }, - curCSS, [ elem, "marginRight" ] ); - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each({ - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // assumes a single number if not a string - parts = typeof value === "string" ? value.split(" ") : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -}); - -jQuery.fn.extend({ - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each(function() { - if ( isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - }); - } -}); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || "swing"; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - if ( tween.elem[ tween.prop ] != null && - (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { - return tween.elem[ tween.prop ]; - } - - // passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails - // so, simple values such as "10px" are parsed to Float. - // complex values such as "rotate(1rad)" are returned as is. - result = jQuery.css( tween.elem, tween.prop, "" ); - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - // use step hook for back compat - use cssHook if its there - use .style if its - // available and use plain properties where available - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 -// Panic based approach to setting things on disconnected nodes - -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - } -}; - -jQuery.fx = Tween.prototype.init; - -// Back Compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, timerId, - rfxtypes = /^(?:toggle|show|hide)$/, - rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ), - rrun = /queueHooks$/, - animationPrefilters = [ defaultPrefilter ], - tweeners = { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ), - target = tween.cur(), - parts = rfxnum.exec( value ), - unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) && - rfxnum.exec( jQuery.css( tween.elem, prop ) ), - scale = 1, - maxIterations = 20; - - if ( start && start[ 3 ] !== unit ) { - // Trust units reported by jQuery.css - unit = unit || start[ 3 ]; - - // Make sure we update the tween properties later on - parts = parts || []; - - // Iteratively approximate from a nonzero starting point - start = +target || 1; - - do { - // If previous iteration zeroed out, double until we get *something* - // Use a string for doubling factor so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - start = start / scale; - jQuery.style( tween.elem, prop, start + unit ); - - // Update scale, tolerating zero or NaN from tween.cur() - // And breaking the loop if scale is unchanged or perfect, or if we've just had enough - } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); - } - - // Update tween properties - if ( parts ) { - start = tween.start = +start || +target || 0; - tween.unit = unit; - // If a +=/-= token was provided, we're doing a relative animation - tween.end = parts[ 1 ] ? - start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : - +parts[ 2 ]; - } - - return tween; - } ] - }; - -// Animations created synchronously will run synchronously -function createFxNow() { - setTimeout(function() { - fxNow = undefined; - }); - return ( fxNow = jQuery.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - attrs = { height: type }, - i = 0; - - // if we include width, step value is 1 to do all cssExpand values, - // if we don't include width, step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4 ; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( (tween = collection[ index ].call( animation, prop, value )) ) { - - // we're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - /* jshint validthis: true */ - var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHidden( elem ), - dataShow = jQuery._data( elem, "fxshow" ); - - // handle queue: false promises - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always(function() { - // doing this makes sure that the complete handler will be called - // before this completes - anim.always(function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - }); - }); - } - - // height/width overflow pass - if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { - // Make sure that nothing sneaks out - // Record all 3 overflow attributes because IE does not - // change the overflow attribute when overflowX and - // overflowY are set to the same value - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Set display property to inline-block for height/width - // animations on inline elements that are having width/height animated - display = jQuery.css( elem, "display" ); - - // Test default display if display is currently "none" - checkDisplay = display === "none" ? - jQuery._data( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display; - - if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) { - - // inline-level elements accept inline-block; - // block-level elements need to be inline with layout - if ( !support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === "inline" ) { - style.display = "inline-block"; - } else { - style.zoom = 1; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - if ( !support.shrinkWrapBlocks() ) { - anim.always(function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - }); - } - } - - // show/hide pass - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.exec( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - - // Any non-fx value stops us from restoring the original display value - } else { - display = undefined; - } - } - - if ( !jQuery.isEmptyObject( orig ) ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = jQuery._data( elem, "fxshow", {} ); - } - - // store state if its toggle - enables .stop().toggle() to "reverse" - if ( toggle ) { - dataShow.hidden = !hidden; - } - if ( hidden ) { - jQuery( elem ).show(); - } else { - anim.done(function() { - jQuery( elem ).hide(); - }); - } - anim.done(function() { - var prop; - jQuery._removeData( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - }); - for ( prop in orig ) { - tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = tween.start; - if ( hidden ) { - tween.end = tween.start; - tween.start = prop === "width" || prop === "height" ? 1 : 0; - } - } - } - - // If this is a noop like .hide().hide(), restore an overwritten display value - } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) { - style.display = display; - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( jQuery.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // not quite $.extend, this wont overwrite keys already present. - // also - reusing 'index' from above because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = animationPrefilters.length, - deferred = jQuery.Deferred().always( function() { - // don't match elem in the :animated selector - delete tick.elem; - }), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ]); - - if ( percent < 1 && length ) { - return remaining; - } else { - deferred.resolveWith( elem, [ animation ] ); - return false; - } - }, - animation = deferred.promise({ - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { specialEasing: {} }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - // if we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // resolve when we played the last frame - // otherwise, reject - if ( gotoEnd ) { - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - }), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length ; index++ ) { - result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - }) - ); - - // attach callbacks from options - return animation.progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); -} - -jQuery.Animation = jQuery.extend( Animation, { - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.split(" "); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length ; index++ ) { - prop = props[ index ]; - tweeners[ prop ] = tweeners[ prop ] || []; - tweeners[ prop ].unshift( callback ); - } - }, - - prefilter: function( callback, prepend ) { - if ( prepend ) { - animationPrefilters.unshift( callback ); - } else { - animationPrefilters.push( callback ); - } - } -}); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : - opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; - - // normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend({ - fadeTo: function( speed, to, easing, callback ) { - - // show any hidden elements after setting opacity to 0 - return this.filter( isHidden ).css( "opacity", 0 ).show() - - // animate to the value specified - .end().animate({ opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || jQuery._data( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each(function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = jQuery._data( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // start the next in the queue if the last step wasn't forced - // timers currently will call their complete callbacks, which will dequeue - // but only if they were gotoEnd - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - }); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each(function() { - var index, - data = jQuery._data( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // enable finishing flag on private data - data.finish = true; - - // empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // turn off finishing flag - delete data.finish; - }); - } -}); - -jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -}); - -// Generate shortcuts for custom animations -jQuery.each({ - slideDown: genFx("show"), - slideUp: genFx("hide"), - slideToggle: genFx("toggle"), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -}); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - timers = jQuery.timers, - i = 0; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - // Checks the timer has not already been removed - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - if ( timer() ) { - jQuery.fx.start(); - } else { - jQuery.timers.pop(); - } -}; - -jQuery.fx.interval = 13; - -jQuery.fx.start = function() { - if ( !timerId ) { - timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); - } -}; - -jQuery.fx.stop = function() { - clearInterval( timerId ); - timerId = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); -}; - - -(function() { - // Minified: var a,b,c,d,e - var input, div, select, a, opt; - - // Setup - div = document.createElement( "div" ); - div.setAttribute( "className", "t" ); - div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; - a = div.getElementsByTagName("a")[ 0 ]; - - // First batch of tests. - select = document.createElement("select"); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName("input")[ 0 ]; - - a.style.cssText = "top:1px"; - - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - support.getSetAttribute = div.className !== "t"; - - // Get the style information from getAttribute - // (IE uses .cssText instead) - support.style = /top/.test( a.getAttribute("style") ); - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - support.hrefNormalized = a.getAttribute("href") === "/a"; - - // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) - support.checkOn = !!input.value; - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - support.optSelected = opt.selected; - - // Tests for enctype support on a form (#6743) - support.enctype = !!document.createElement("form").enctype; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Support: IE8 only - // Check if we can trust getAttribute("value") - input = document.createElement( "input" ); - input.setAttribute( "value", "" ); - support.input = input.getAttribute( "value" ) === ""; - - // Check if an input maintains its value after becoming a radio - input.value = "t"; - input.setAttribute( "type", "radio" ); - support.radioValue = input.value === "t"; -})(); - - -var rreturn = /\r/g; - -jQuery.fn.extend({ - val: function( value ) { - var hooks, ret, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - // Support: IE10-11+ - // option.text throws exceptions (#14686, #14858) - jQuery.trim( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // oldIE doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - // Don't return options that are disabled or in a disabled optgroup - ( support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && - ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - if ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) >= 0 ) { - - // Support: IE6 - // When new option element is added to select box we need to - // force reflow of newly added node in order to workaround delay - // of initialization properties - try { - option.selected = optionSet = true; - - } catch ( _ ) { - - // Will be executed only in IE6 - option.scrollHeight; - } - - } else { - option.selected = false; - } - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - - return options; - } - } - } -}); - -// Radios and checkboxes getter/setter -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - // Support: Webkit - // "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - }; - } -}); - - - - -var nodeHook, boolHook, - attrHandle = jQuery.expr.attrHandle, - ruseDefault = /^(?:checked|selected)$/i, - getSetAttribute = support.getSetAttribute, - getSetInput = support.input; - -jQuery.fn.extend({ - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - } -}); - -jQuery.extend({ - attr: function( elem, name, value ) { - var hooks, ret, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === strundefined ) { - return jQuery.prop( elem, name, value ); - } - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - - } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, value + "" ); - return value; - } - - } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( (name = attrNames[i++]) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( jQuery.expr.match.bool.test( name ) ) { - // Set corresponding property to false - if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { - elem[ propName ] = false; - // Support: IE<9 - // Also clear defaultChecked/defaultSelected (if appropriate) - } else { - elem[ jQuery.camelCase( "default-" + name ) ] = - elem[ propName ] = false; - } - - // See #9699 for explanation of this approach (setting first, then removal) - } else { - jQuery.attr( elem, name, "" ); - } - - elem.removeAttribute( getSetAttribute ? name : propName ); - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to default in case type is set after value during creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - } -}); - -// Hook for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { - // IE<8 needs the *property* name - elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); - - // Use defaultChecked and defaultSelected for oldIE - } else { - elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; - } - - return name; - } -}; - -// Retrieve booleans specially -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? - function( elem, name, isXML ) { - var ret, handle; - if ( !isXML ) { - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ name ]; - attrHandle[ name ] = ret; - ret = getter( elem, name, isXML ) != null ? - name.toLowerCase() : - null; - attrHandle[ name ] = handle; - } - return ret; - } : - function( elem, name, isXML ) { - if ( !isXML ) { - return elem[ jQuery.camelCase( "default-" + name ) ] ? - name.toLowerCase() : - null; - } - }; -}); - -// fix oldIE attroperties -if ( !getSetInput || !getSetAttribute ) { - jQuery.attrHooks.value = { - set: function( elem, value, name ) { - if ( jQuery.nodeName( elem, "input" ) ) { - // Does not return so that setAttribute is also used - elem.defaultValue = value; - } else { - // Use nodeHook if defined (#1954); otherwise setAttribute is fine - return nodeHook && nodeHook.set( elem, value, name ); - } - } - }; -} - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !getSetAttribute ) { - - // Use this for any attribute in IE6/7 - // This fixes almost every IE6/7 issue - nodeHook = { - set: function( elem, value, name ) { - // Set the existing or create a new attribute node - var ret = elem.getAttributeNode( name ); - if ( !ret ) { - elem.setAttributeNode( - (ret = elem.ownerDocument.createAttribute( name )) - ); - } - - ret.value = value += ""; - - // Break association with cloned elements by also using setAttribute (#9646) - if ( name === "value" || value === elem.getAttribute( name ) ) { - return value; - } - } - }; - - // Some attributes are constructed with empty-string values when not defined - attrHandle.id = attrHandle.name = attrHandle.coords = - function( elem, name, isXML ) { - var ret; - if ( !isXML ) { - return (ret = elem.getAttributeNode( name )) && ret.value !== "" ? - ret.value : - null; - } - }; - - // Fixing value retrieval on a button requires this module - jQuery.valHooks.button = { - get: function( elem, name ) { - var ret = elem.getAttributeNode( name ); - if ( ret && ret.specified ) { - return ret.value; - } - }, - set: nodeHook.set - }; - - // Set contenteditable to false on removals(#10429) - // Setting to empty string throws an error as an invalid value - jQuery.attrHooks.contenteditable = { - set: function( elem, value, name ) { - nodeHook.set( elem, value === "" ? false : value, name ); - } - }; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }; - }); -} - -if ( !support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Note: IE uppercases css property names, but if we were to .toLowerCase() - // .cssText, that would destroy case senstitivity in URL's, like in "background" - return elem.style.cssText || undefined; - }, - set: function( elem, value ) { - return ( elem.style.cssText = value + "" ); - } - }; -} - - - - -var rfocusable = /^(?:input|select|textarea|button|object)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend({ - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - } -}); - -jQuery.extend({ - propFix: { - "for": "htmlFor", - "class": "className" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? - ret : - ( elem[ name ] = value ); - - } else { - return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? - ret : - elem[ name ]; - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - return tabindex ? - parseInt( tabindex, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - -1; - } - } - } -}); - -// Some attributes require a special call on IE -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !support.hrefNormalized ) { - // href/src property should get the full normalized URL (#10299/#12915) - jQuery.each([ "href", "src" ], function( i, name ) { - jQuery.propHooks[ name ] = { - get: function( elem ) { - return elem.getAttribute( name, 4 ); - } - }; - }); -} - -// Support: Safari, IE9+ -// mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - return null; - } - }; -} - -jQuery.each([ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -}); - -// IE6/7 call enctype encoding -if ( !support.enctype ) { - jQuery.propFix.enctype = "encoding"; -} - - - - -var rclass = /[\t\r\n\f]/g; - -jQuery.fn.extend({ - addClass: function( value ) { - var classes, elem, cur, clazz, j, finalValue, - i = 0, - len = this.length, - proceed = typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call( this, j, this.className ) ); - }); - } - - if ( proceed ) { - // The disjunction here is for better compressibility (see removeClass) - classes = ( value || "" ).match( rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - " " - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // only assign if different to avoid unneeded rendering. - finalValue = jQuery.trim( cur ); - if ( elem.className !== finalValue ) { - elem.className = finalValue; - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, clazz, j, finalValue, - i = 0, - len = this.length, - proceed = arguments.length === 0 || typeof value === "string" && value; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call( this, j, this.className ) ); - }); - } - if ( proceed ) { - classes = ( value || "" ).match( rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - "" - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // only assign if different to avoid unneeded rendering. - finalValue = value ? jQuery.trim( cur ) : ""; - if ( elem.className !== finalValue ) { - elem.className = finalValue; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - classNames = value.match( rnotwhite ) || []; - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( type === strundefined || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // If the element has a class name or if we're passed "false", - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { - return true; - } - } - - return false; - } -}); - - - - -// Return jQuery for attributes-only inclusion - - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -}); - -jQuery.fn.extend({ - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - }, - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); - } -}); - - -var nonce = jQuery.now(); - -var rquery = (/\?/); - - - -var rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g; - -jQuery.parseJSON = function( data ) { - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - // Support: Android 2.3 - // Workaround failure to string-cast null input - return window.JSON.parse( data + "" ); - } - - var requireNonComma, - depth = null, - str = jQuery.trim( data + "" ); - - // Guard against invalid (and possibly dangerous) input by ensuring that nothing remains - // after removing valid tokens - return str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) { - - // Force termination if we see a misplaced comma - if ( requireNonComma && comma ) { - depth = 0; - } - - // Perform no more replacements after returning to outermost depth - if ( depth === 0 ) { - return token; - } - - // Commas must not follow "[", "{", or "," - requireNonComma = open || comma; - - // Determine new depth - // array/object open ("[" or "{"): depth += true - false (increment) - // array/object close ("]" or "}"): depth += false - true (decrement) - // other cases ("," or primitive): depth += true - true (numeric cast) - depth += !close - !open; - - // Remove this token - return ""; - }) ) ? - ( Function( "return " + str ) )() : - jQuery.error( "Invalid JSON: " + data ); -}; - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml, tmp; - if ( !data || typeof data !== "string" ) { - return null; - } - try { - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data, "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - } catch( e ) { - xml = undefined; - } - if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - // Document location - ajaxLocParts, - ajaxLocation, - - rhash = /#.*$/, - rts = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat("*"); - -// #8138, IE may throw an exception when accessing -// a field from window.location if document.domain has been set -try { - ajaxLocation = location.href; -} catch( e ) { - // Use the href attribute of an A element - // since IE will modify it given document.location - ajaxLocation = document.createElement( "a" ); - ajaxLocation.href = ""; - ajaxLocation = ajaxLocation.href; -} - -// Segment location into parts -ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - // For each dataType in the dataTypeExpression - while ( (dataType = dataTypes[i++]) ) { - // Prepend if requested - if ( dataType.charAt( 0 ) === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - (structure[ dataType ] = structure[ dataType ] || []).unshift( func ); - - // Otherwise append - } else { - (structure[ dataType ] = structure[ dataType ] || []).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - }); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var deep, key, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - var firstDataType, ct, finalDataType, type, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s[ "throws" ] ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend({ - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: ajaxLocation, - type: "GET", - isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /xml/, - html: /html/, - json: /json/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": jQuery.parseJSON, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var // Cross-domain detection vars - parts, - // Loop variable - i, - // URL without anti-cache param - cacheURL, - // Response headers as string - responseHeadersString, - // timeout handle - timeoutTimer, - - // To know if global events are to be dispatched - fireGlobals, - - transport, - // Response headers - responseHeaders, - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - // Callbacks context - callbackContext = s.context || s, - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks("once memory"), - // Status-dependent callbacks - statusCode = s.statusCode || {}, - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - // The jqXHR state - state = 0, - // Default abort message - strAbort = "canceled", - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( state === 2 ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( (match = rheaders.exec( responseHeadersString )) ) { - responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return state === 2 ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - var lname = name.toLowerCase(); - if ( !state ) { - name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( !state ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( state < 2 ) { - for ( code in map ) { - // Lazy-add the new callback in a way that preserves old ones - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } else { - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ).complete = completeDeferred.add; - jqXHR.success = jqXHR.done; - jqXHR.error = jqXHR.fail; - - // Remove hash character (#7531: and string promotion) - // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; - - // A cross-domain request is in order when we have a protocol:host:port mismatch - if ( s.crossDomain == null ) { - parts = rurl.exec( s.url.toLowerCase() ); - s.crossDomain = !!( parts && - ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || - ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !== - ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) ) - ); - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( state === 2 ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger("ajaxStart"); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - cacheURL = s.url; - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // If data is available, append data to url - if ( s.data ) { - cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add anti-cache in url if needed - if ( s.cache === false ) { - s.url = rts.test( cacheURL ) ? - - // If there is already a '_' parameter, set its value - cacheURL.replace( rts, "$1_=" + nonce++ ) : - - // Otherwise add one to the end - cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; - } - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? - s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { - // Abort if not done already and return - return jqXHR.abort(); - } - - // aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - for ( i in { success: 1, error: 1, complete: 1 } ) { - jqXHR[ i ]( s[ i ] ); - } - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = setTimeout(function() { - jqXHR.abort("timeout"); - }, s.timeout ); - } - - try { - state = 1; - transport.send( requestHeaders, done ); - } catch ( e ) { - // Propagate exception as error if not done - if ( state < 2 ) { - done( -1, e ); - // Simply rethrow otherwise - } else { - throw e; - } - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Called once - if ( state === 2 ) { - return; - } - - // State is "done" now - state = 2; - - // Clear timeout if it exists - if ( timeoutTimer ) { - clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader("Last-Modified"); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader("etag"); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - // We extract error from statusText - // then normalize statusText and status for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger("ajaxStop"); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -}); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - // shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - return jQuery.ajax({ - url: url, - type: method, - dataType: type, - data: data, - success: callback - }); - }; -}); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax({ - url: url, - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - }); -}; - - -jQuery.fn.extend({ - wrapAll: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function(i) { - jQuery(this).wrapAll( html.call(this, i) ); - }); - } - - if ( this[0] ) { - // The elements to wrap the target around - var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); - - if ( this[0].parentNode ) { - wrap.insertBefore( this[0] ); - } - - wrap.map(function() { - var elem = this; - - while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { - elem = elem.firstChild; - } - - return elem; - }).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function(i) { - jQuery(this).wrapInner( html.call(this, i) ); - }); - } - - return this.each(function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - }); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each(function(i) { - jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); - }); - }, - - unwrap: function() { - return this.parent().each(function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - }).end(); - } -}); - - -jQuery.expr.filters.hidden = function( elem ) { - // Support: Opera <= 12.12 - // Opera reports offsetWidths and offsetHeights less than zero on some elements - return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 || - (!support.reliableHiddenOffsets() && - ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none"); -}; - -jQuery.expr.filters.visible = function( elem ) { - return !jQuery.expr.filters.hidden( elem ); -}; - - - - -var r20 = /%20/g, - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( jQuery.isArray( obj ) ) { - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - // Item is non-scalar (array or object), encode its numeric index. - buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); - } - }); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, value ) { - // If value is a function, invoke it and return its value - value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); - s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); - }; - - // Set traditional to true for jQuery <= 1.3.2 behavior. - if ( traditional === undefined ) { - traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - }); - - } else { - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ).replace( r20, "+" ); -}; - -jQuery.fn.extend({ - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map(function() { - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - }) - .filter(function() { - var type = this.type; - // Use .is(":disabled") so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - }) - .map(function( i, elem ) { - var val = jQuery( this ).val(); - - return val == null ? - null : - jQuery.isArray( val ) ? - jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - }) : - { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - }).get(); - } -}); - - -// Create the request object -// (This is still attached to ajaxSettings for backward compatibility) -jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ? - // Support: IE6+ - function() { - - // XHR cannot access local files, always use ActiveX for that case - return !this.isLocal && - - // Support: IE7-8 - // oldIE XHR does not support non-RFC2616 methods (#13240) - // See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx - // and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9 - // Although this check for six methods instead of eight - // since IE also does not support "trace" and "connect" - /^(get|post|head|put|delete|options)$/i.test( this.type ) && - - createStandardXHR() || createActiveXHR(); - } : - // For all other browsers, use the standard XMLHttpRequest object - createStandardXHR; - -var xhrId = 0, - xhrCallbacks = {}, - xhrSupported = jQuery.ajaxSettings.xhr(); - -// Support: IE<10 -// Open requests must be manually aborted on unload (#5280) -// See https://support.microsoft.com/kb/2856746 for more info -if ( window.attachEvent ) { - window.attachEvent( "onunload", function() { - for ( var key in xhrCallbacks ) { - xhrCallbacks[ key ]( undefined, true ); - } - }); -} - -// Determine support properties -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -xhrSupported = support.ajax = !!xhrSupported; - -// Create transport if the browser can provide an xhr -if ( xhrSupported ) { - - jQuery.ajaxTransport(function( options ) { - // Cross domain only allowed if supported through XMLHttpRequest - if ( !options.crossDomain || support.cors ) { - - var callback; - - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(), - id = ++xhrId; - - // Open the socket - xhr.open( options.type, options.url, options.async, options.username, options.password ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers["X-Requested-With"] ) { - headers["X-Requested-With"] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - // Support: IE<9 - // IE's ActiveXObject throws a 'Type Mismatch' exception when setting - // request header to a null-value. - // - // To keep consistent with other XHR implementations, cast the value - // to string and ignore `undefined`. - if ( headers[ i ] !== undefined ) { - xhr.setRequestHeader( i, headers[ i ] + "" ); - } - } - - // Do send the request - // This may raise an exception which is actually - // handled in jQuery.ajax (so no try/catch here) - xhr.send( ( options.hasContent && options.data ) || null ); - - // Listener - callback = function( _, isAbort ) { - var status, statusText, responses; - - // Was never called and is aborted or complete - if ( callback && ( isAbort || xhr.readyState === 4 ) ) { - // Clean up - delete xhrCallbacks[ id ]; - callback = undefined; - xhr.onreadystatechange = jQuery.noop; - - // Abort manually if needed - if ( isAbort ) { - if ( xhr.readyState !== 4 ) { - xhr.abort(); - } - } else { - responses = {}; - status = xhr.status; - - // Support: IE<10 - // Accessing binary-data responseText throws an exception - // (#11426) - if ( typeof xhr.responseText === "string" ) { - responses.text = xhr.responseText; - } - - // Firefox throws an exception when accessing - // statusText for faulty cross-domain requests - try { - statusText = xhr.statusText; - } catch( e ) { - // We normalize with Webkit giving an empty statusText - statusText = ""; - } - - // Filter status for non standard behaviors - - // If the request is local and we have data: assume a success - // (success with no data won't get notified, that's the best we - // can do given current implementations) - if ( !status && options.isLocal && !options.crossDomain ) { - status = responses.text ? 200 : 404; - // IE - #1450: sometimes returns 1223 when it should be 204 - } else if ( status === 1223 ) { - status = 204; - } - } - } - - // Call complete if needed - if ( responses ) { - complete( status, statusText, responses, xhr.getAllResponseHeaders() ); - } - }; - - if ( !options.async ) { - // if we're in sync mode we fire the callback - callback(); - } else if ( xhr.readyState === 4 ) { - // (IE6 & IE7) if it's in cache and has been - // retrieved directly we need to fire the callback - setTimeout( callback ); - } else { - // Add to the list of active xhr callbacks - xhr.onreadystatechange = xhrCallbacks[ id ] = callback; - } - }, - - abort: function() { - if ( callback ) { - callback( undefined, true ); - } - } - }; - } - }); -} - -// Functions to create xhrs -function createStandardXHR() { - try { - return new window.XMLHttpRequest(); - } catch( e ) {} -} - -function createActiveXHR() { - try { - return new window.ActiveXObject( "Microsoft.XMLHTTP" ); - } catch( e ) {} -} - - - - -// Install script dataType -jQuery.ajaxSetup({ - accepts: { - script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /(?:java|ecma)script/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -}); - -// Handle cache's special case and global -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - s.global = false; - } -}); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function(s) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - - var script, - head = document.head || jQuery("head")[0] || document.documentElement; - - return { - - send: function( _, callback ) { - - script = document.createElement("script"); - - script.async = true; - - if ( s.scriptCharset ) { - script.charset = s.scriptCharset; - } - - script.src = s.url; - - // Attach handlers for all browsers - script.onload = script.onreadystatechange = function( _, isAbort ) { - - if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { - - // Handle memory leak in IE - script.onload = script.onreadystatechange = null; - - // Remove the script - if ( script.parentNode ) { - script.parentNode.removeChild( script ); - } - - // Dereference the script - script = null; - - // Callback if not abort - if ( !isAbort ) { - callback( 200, "success" ); - } - } - }; - - // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending - // Use native DOM manipulation to avoid our domManip AJAX trickery - head.insertBefore( script, head.firstChild ); - }, - - abort: function() { - if ( script ) { - script.onload( undefined, true ); - } - } - }; - } -}); - - - - -var oldCallbacks = [], - rjsonp = /(=)\?(?=&|$)|\?\?/; - -// Default jsonp settings -jQuery.ajaxSetup({ - jsonp: "callback", - jsonpCallback: function() { - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); - this[ callback ] = true; - return callback; - } -}); - -// Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - - var callbackName, overwritten, responseContainer, - jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? - "url" : - typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data" - ); - - // Handle iff the expected data type is "jsonp" or we have a parameter to set - if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { - - // Get callback name, remembering preexisting value associated with it - callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? - s.jsonpCallback() : - s.jsonpCallback; - - // Insert callback into url or form data - if ( jsonProp ) { - s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); - } else if ( s.jsonp !== false ) { - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; - } - - // Use data converter to retrieve json after script execution - s.converters["script json"] = function() { - if ( !responseContainer ) { - jQuery.error( callbackName + " was not called" ); - } - return responseContainer[ 0 ]; - }; - - // force json dataType - s.dataTypes[ 0 ] = "json"; - - // Install callback - overwritten = window[ callbackName ]; - window[ callbackName ] = function() { - responseContainer = arguments; - }; - - // Clean-up function (fires after converters) - jqXHR.always(function() { - // Restore preexisting value - window[ callbackName ] = overwritten; - - // Save back as free - if ( s[ callbackName ] ) { - // make sure that re-using the options doesn't screw things around - s.jsonpCallback = originalSettings.jsonpCallback; - - // save the callback name for future use - oldCallbacks.push( callbackName ); - } - - // Call if it was a function and we have a response - if ( responseContainer && jQuery.isFunction( overwritten ) ) { - overwritten( responseContainer[ 0 ] ); - } - - responseContainer = overwritten = undefined; - }); - - // Delegate to script - return "script"; - } -}); - - - - -// data: string of html -// context (optional): If specified, the fragment will be created in this context, defaults to document -// keepScripts (optional): If true, will include scripts passed in the html string -jQuery.parseHTML = function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[1] ) ]; - } - - parsed = jQuery.buildFragment( [ data ], context, scripts ); - - if ( scripts && scripts.length ) { - jQuery( scripts ).remove(); - } - - return jQuery.merge( [], parsed.childNodes ); -}; - - -// Keep a copy of the old load method -var _load = jQuery.fn.load; - -/** - * Load a url into a page - */ -jQuery.fn.load = function( url, params, callback ) { - if ( typeof url !== "string" && _load ) { - return _load.apply( this, arguments ); - } - - var selector, response, type, - self = this, - off = url.indexOf(" "); - - if ( off >= 0 ) { - selector = jQuery.trim( url.slice( off, url.length ) ); - url = url.slice( 0, off ); - } - - // If it's a function - if ( jQuery.isFunction( params ) ) { - - // We assume that it's the callback - callback = params; - params = undefined; - - // Otherwise, build a param string - } else if ( params && typeof params === "object" ) { - type = "POST"; - } - - // If we have elements to modify, make the request - if ( self.length > 0 ) { - jQuery.ajax({ - url: url, - - // if "type" variable is undefined, then "GET" method will be used - type: type, - dataType: "html", - data: params - }).done(function( responseText ) { - - // Save response for use in complete callback - response = arguments; - - self.html( selector ? - - // If a selector was specified, locate the right elements in a dummy div - // Exclude scripts to avoid IE 'Permission Denied' errors - jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) : - - // Otherwise use the full result - responseText ); - - }).complete( callback && function( jqXHR, status ) { - self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); - }); - } - - return this; -}; - - - - -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -}); - - - - -jQuery.expr.filters.animated = function( elem ) { - return jQuery.grep(jQuery.timers, function( fn ) { - return elem === fn.elem; - }).length; -}; - - - - - -var docElem = window.document.documentElement; - -/** - * Gets a window from an element - */ -function getWindow( elem ) { - return jQuery.isWindow( elem ) ? - elem : - elem.nodeType === 9 ? - elem.defaultView || elem.parentWindow : - false; -} - -jQuery.offset = { - setOffset: function( elem, options, i ) { - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, - position = jQuery.css( elem, "position" ), - curElem = jQuery( elem ), - props = {}; - - // set position first, in-case top/left are set even on static elem - if ( position === "static" ) { - elem.style.position = "relative"; - } - - curOffset = curElem.offset(); - curCSSTop = jQuery.css( elem, "top" ); - curCSSLeft = jQuery.css( elem, "left" ); - calculatePosition = ( position === "absolute" || position === "fixed" ) && - jQuery.inArray("auto", [ curCSSTop, curCSSLeft ] ) > -1; - - // need to be able to calculate position if either top or left is auto and position is either absolute or fixed - if ( calculatePosition ) { - curPosition = curElem.position(); - curTop = curPosition.top; - curLeft = curPosition.left; - } else { - curTop = parseFloat( curCSSTop ) || 0; - curLeft = parseFloat( curCSSLeft ) || 0; - } - - if ( jQuery.isFunction( options ) ) { - options = options.call( elem, i, curOffset ); - } - - if ( options.top != null ) { - props.top = ( options.top - curOffset.top ) + curTop; - } - if ( options.left != null ) { - props.left = ( options.left - curOffset.left ) + curLeft; - } - - if ( "using" in options ) { - options.using.call( elem, props ); - } else { - curElem.css( props ); - } - } -}; - -jQuery.fn.extend({ - offset: function( options ) { - if ( arguments.length ) { - return options === undefined ? - this : - this.each(function( i ) { - jQuery.offset.setOffset( this, options, i ); - }); - } - - var docElem, win, - box = { top: 0, left: 0 }, - elem = this[ 0 ], - doc = elem && elem.ownerDocument; - - if ( !doc ) { - return; - } - - docElem = doc.documentElement; - - // Make sure it's not a disconnected DOM node - if ( !jQuery.contains( docElem, elem ) ) { - return box; - } - - // If we don't have gBCR, just use 0,0 rather than error - // BlackBerry 5, iOS 3 (original iPhone) - if ( typeof elem.getBoundingClientRect !== strundefined ) { - box = elem.getBoundingClientRect(); - } - win = getWindow( doc ); - return { - top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ), - left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 ) - }; - }, - - position: function() { - if ( !this[ 0 ] ) { - return; - } - - var offsetParent, offset, - parentOffset = { top: 0, left: 0 }, - elem = this[ 0 ]; - - // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent - if ( jQuery.css( elem, "position" ) === "fixed" ) { - // we assume that getBoundingClientRect is available when computed position is fixed - offset = elem.getBoundingClientRect(); - } else { - // Get *real* offsetParent - offsetParent = this.offsetParent(); - - // Get correct offsets - offset = this.offset(); - if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { - parentOffset = offsetParent.offset(); - } - - // Add offsetParent borders - parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); - parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); - } - - // Subtract parent offsets and element margins - // note: when an element has margin: auto the offsetLeft and marginLeft - // are the same in Safari causing offset.left to incorrectly be 0 - return { - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true) - }; - }, - - offsetParent: function() { - return this.map(function() { - var offsetParent = this.offsetParent || docElem; - - while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) { - offsetParent = offsetParent.offsetParent; - } - return offsetParent || docElem; - }); - } -}); - -// Create scrollLeft and scrollTop methods -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { - var top = /Y/.test( prop ); - - jQuery.fn[ method ] = function( val ) { - return access( this, function( elem, method, val ) { - var win = getWindow( elem ); - - if ( val === undefined ) { - return win ? (prop in win) ? win[ prop ] : - win.document.documentElement[ method ] : - elem[ method ]; - } - - if ( win ) { - win.scrollTo( - !top ? val : jQuery( win ).scrollLeft(), - top ? val : jQuery( win ).scrollTop() - ); - - } else { - elem[ method ] = val; - } - }, method, val, arguments.length, null ); - }; -}); - -// Add the top/left cssHooks using jQuery.fn.position -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 -// getComputedStyle returns percent when specified for top/left/bottom/right -// rather than make the css module depend on the offset module, we just check for it here -jQuery.each( [ "top", "left" ], function( i, prop ) { - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, - function( elem, computed ) { - if ( computed ) { - computed = curCSS( elem, prop ); - // if curCSS returns percentage, fallback to offset - return rnumnonpx.test( computed ) ? - jQuery( elem ).position()[ prop ] + "px" : - computed; - } - } - ); -}); - - -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { - // margin is only for outerHeight, outerWidth - jQuery.fn[ funcName ] = function( margin, value ) { - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); - - return access( this, function( elem, type, value ) { - var doc; - - if ( jQuery.isWindow( elem ) ) { - // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there - // isn't a whole lot we can do. See pull request at this URL for discussion: - // https://github.com/jquery/jquery/pull/764 - return elem.document.documentElement[ "client" + name ]; - } - - // Get document width or height - if ( elem.nodeType === 9 ) { - doc = elem.documentElement; - - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest - // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. - return Math.max( - elem.body[ "scroll" + name ], doc[ "scroll" + name ], - elem.body[ "offset" + name ], doc[ "offset" + name ], - doc[ "client" + name ] - ); - } - - return value === undefined ? - // Get width or height on the element, requesting but not forcing parseFloat - jQuery.css( elem, type, extra ) : - - // Set width or height on the element - jQuery.style( elem, type, value, extra ); - }, type, chainable ? margin : undefined, chainable, null ); - }; - }); -}); - - -// The number of elements contained in the matched element set -jQuery.fn.size = function() { - return this.length; -}; - -jQuery.fn.andSelf = jQuery.fn.addBack; - - - - -// Register as a named AMD module, since jQuery can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase jquery is used because AMD module names are -// derived from file names, and jQuery is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of jQuery, it will work. - -// Note that for maximum portability, libraries that are not jQuery should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. jQuery is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - -if ( typeof define === "function" && define.amd ) { - define( "jquery", [], function() { - return jQuery; - }); -} - - - - -var - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$; - -jQuery.noConflict = function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; -}; - -// Expose jQuery and $ identifiers, even in -// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557) -// and CommonJS for browser emulators (#13566) -if ( typeof noGlobal === strundefined ) { - window.jQuery = window.$ = jQuery; -} - - - - -return jQuery; - -})); diff --git a/static/admin/js/jquery.min.js b/static/admin/js/jquery.min.js deleted file mode 100644 index e6a051d0d1d32752ae08d9cf30fe5952da22a9b0..0000000000000000000000000000000000000000 --- a/static/admin/js/jquery.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.11.2 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.2",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e) -}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m}); diff --git a/static/admin/js/prepopulate.js b/static/admin/js/prepopulate.js deleted file mode 100644 index 5d4b0e8c277377e225578a238ea4757013237d81..0000000000000000000000000000000000000000 --- a/static/admin/js/prepopulate.js +++ /dev/null @@ -1,42 +0,0 @@ -/*global URLify*/ -(function($) { - 'use strict'; - $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) { - /* - Depends on urlify.js - Populates a selected field with the values of the dependent fields, - URLifies and shortens the string. - dependencies - array of dependent fields ids - maxLength - maximum length of the URLify'd string - allowUnicode - Unicode support of the URLify'd string - */ - return this.each(function() { - var prepopulatedField = $(this); - - var populate = function() { - // Bail if the field's value has been changed by the user - if (prepopulatedField.data('_changed')) { - return; - } - - var values = []; - $.each(dependencies, function(i, field) { - field = $(field); - if (field.val().length > 0) { - values.push(field.val()); - } - }); - prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode)); - }; - - prepopulatedField.data('_changed', false); - prepopulatedField.change(function() { - prepopulatedField.data('_changed', true); - }); - - if (!prepopulatedField.val()) { - $(dependencies.join(',')).keyup(populate).change(populate).focus(populate); - } - }); - }; -})(django.jQuery); diff --git a/static/admin/js/prepopulate.min.js b/static/admin/js/prepopulate.min.js deleted file mode 100644 index 75f3c17aa98b1ee8b37e840ee7cc71a7aee54a66..0000000000000000000000000000000000000000 --- a/static/admin/js/prepopulate.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(c){c.fn.prepopulate=function(e,f,g){return this.each(function(){var a=c(this),b=function(){if(!a.data("_changed")){var b=[];c.each(e,function(a,d){d=c(d);0<d.val().length&&b.push(d.val())});a.val(URLify(b.join(" "),f,g))}};a.data("_changed",!1);a.change(function(){a.data("_changed",!0)});a.val()||c(e.join(",")).keyup(b).change(b).focus(b)})}})(django.jQuery); diff --git a/static/admin/js/related-widget-wrapper.js b/static/admin/js/related-widget-wrapper.js deleted file mode 100644 index dbb1f58c8c29cb4dc714c6c664020e91b18e5778..0000000000000000000000000000000000000000 --- a/static/admin/js/related-widget-wrapper.js +++ /dev/null @@ -1,23 +0,0 @@ -django.jQuery(function($){ - function updateLinks() { - var $this = $(this); - var siblings = $this.nextAll('.change-related, .delete-related'); - if (!siblings.length) return; - var value = $this.val(); - if (value) { - siblings.each(function(){ - var elm = $(this); - elm.attr('href', elm.attr('data-href-template').replace('__fk__', value)); - }); - } else siblings.removeAttr('href'); - } - var container = $(document); - container.on('change', '.related-widget-wrapper select', updateLinks); - container.find('.related-widget-wrapper select').each(updateLinks); - container.on('click', '.related-widget-wrapper-link', function(event){ - if (this.href) { - showRelatedObjectPopup(this); - } - event.preventDefault(); - }); -}); diff --git a/static/admin/js/timeparse.js b/static/admin/js/timeparse.js deleted file mode 100644 index 3cdc7ec7ce9592684c049f27e7b9d1a86e512439..0000000000000000000000000000000000000000 --- a/static/admin/js/timeparse.js +++ /dev/null @@ -1,106 +0,0 @@ -(function() { - 'use strict'; - var timeParsePatterns = [ - // 9 - { - re: /^\d{1,2}$/i, - handler: function(bits) { - if (bits[0].length === 1) { - return '0' + bits[0] + ':00'; - } else { - return bits[0] + ':00'; - } - } - }, - // 13:00 - { - re: /^\d{2}[:.]\d{2}$/i, - handler: function(bits) { - return bits[0].replace('.', ':'); - } - }, - // 9:00 - { - re: /^\d[:.]\d{2}$/i, - handler: function(bits) { - return '0' + bits[0].replace('.', ':'); - } - }, - // 3 am / 3 a.m. / 3am - { - re: /^(\d+)\s*([ap])(?:.?m.?)?$/i, - handler: function(bits) { - var hour = parseInt(bits[1]); - if (hour === 12) { - hour = 0; - } - if (bits[2].toLowerCase() === 'p') { - if (hour === 12) { - hour = 0; - } - return (hour + 12) + ':00'; - } else { - if (hour < 10) { - return '0' + hour + ':00'; - } else { - return hour + ':00'; - } - } - } - }, - // 3.30 am / 3:15 a.m. / 3.00am - { - re: /^(\d+)[.:](\d{2})\s*([ap]).?m.?$/i, - handler: function(bits) { - var hour = parseInt(bits[1]); - var mins = parseInt(bits[2]); - if (mins < 10) { - mins = '0' + mins; - } - if (hour === 12) { - hour = 0; - } - if (bits[3].toLowerCase() === 'p') { - if (hour === 12) { - hour = 0; - } - return (hour + 12) + ':' + mins; - } else { - if (hour < 10) { - return '0' + hour + ':' + mins; - } else { - return hour + ':' + mins; - } - } - } - }, - // noon - { - re: /^no/i, - handler: function(bits) { - return '12:00'; - } - }, - // midnight - { - re: /^mid/i, - handler: function(bits) { - return '00:00'; - } - } - ]; - - function parseTimeString(s) { - for (var i = 0; i < timeParsePatterns.length; i++) { - var re = timeParsePatterns[i].re; - var handler = timeParsePatterns[i].handler; - var bits = re.exec(s); - if (bits) { - return handler(bits); - } - } - return s; - } - - window.parseTimeString = parseTimeString; -})(); diff --git a/static/admin/js/urlify.js b/static/admin/js/urlify.js deleted file mode 100644 index b27325e6b72ab6d750b8646eae87afe2ece0a801..0000000000000000000000000000000000000000 --- a/static/admin/js/urlify.js +++ /dev/null @@ -1,171 +0,0 @@ -/*global XRegExp*/ -(function() { - 'use strict'; - - var LATIN_MAP = { - 'À': 'A', 'Ã': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Ã…': 'A', 'Æ': 'AE', - 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'ÃŒ': 'I', 'Ã': 'I', - 'ÃŽ': 'I', 'Ã': 'I', 'Ã': 'D', 'Ñ': 'N', 'Ã’': 'O', 'Ó': 'O', 'Ô': 'O', - 'Õ': 'O', 'Ö': 'O', 'Å': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', - 'Ãœ': 'U', 'Å°': 'U', 'Ã': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à ': 'a', - 'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'Ã¥': 'a', 'æ': 'ae', 'ç': 'c', - 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'Ã': 'i', 'î': 'i', - 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', - 'ö': 'o', 'Å‘': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', - 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y' - }; - var LATIN_SYMBOLS_MAP = { - '©': '(c)' - }; - var GREEK_MAP = { - 'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', - 'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3', - 'ο': 'o', 'Ï€': 'p', 'Ï': 'r', 'σ': 's', 'Ï„': 't', 'Ï…': 'y', 'φ': 'f', - 'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'Î': 'e', 'ί': 'i', 'ÏŒ': 'o', - 'Ï': 'y', 'ή': 'h', 'ÏŽ': 'w', 'Ï‚': 's', 'ÏŠ': 'i', 'ΰ': 'y', 'Ï‹': 'y', - 'Î': 'i', 'Α': 'A', 'Î’': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', - 'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Îœ': 'M', 'Î': 'N', - 'Ξ': '3', 'Ο': 'O', 'Î ': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Î¥': 'Y', - 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I', - 'ÎŒ': 'O', 'ÎŽ': 'Y', 'Ή': 'H', 'Î': 'W', 'Ϊ': 'I', 'Ϋ': 'Y' - }; - var TURKISH_MAP = { - 'ÅŸ': 's', 'Åž': 'S', 'ı': 'i', 'Ä°': 'I', 'ç': 'c', 'Ç': 'C', 'ü': 'u', - 'Ãœ': 'U', 'ö': 'o', 'Ö': 'O', 'ÄŸ': 'g', 'Äž': 'G' - }; - var ROMANIAN_MAP = { - 'ă': 'a', 'î': 'i', 'È™': 's', 'È›': 't', 'â': 'a', - 'Ä‚': 'A', 'ÃŽ': 'I', 'Ș': 'S', 'Èš': 'T', 'Â': 'A' - }; - var RUSSIAN_MAP = { - 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'Ñ‘': 'yo', - 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', - 'н': 'n', 'о': 'o', 'п': 'p', 'Ñ€': 'r', 'Ñ': 's', 'Ñ‚': 't', 'у': 'u', - 'Ñ„': 'f', 'Ñ…': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ÑŠ': '', - 'Ñ‹': 'y', 'ÑŒ': '', 'Ñ': 'e', 'ÑŽ': 'yu', 'Ñ': 'ya', - 'Ð': 'A', 'Б': 'B', 'Ð’': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ð': 'Yo', - 'Ж': 'Zh', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'Ðœ': 'M', - 'Ð': 'N', 'О': 'O', 'П': 'P', 'Ð ': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', - 'Ф': 'F', 'Ð¥': 'H', 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': '', - 'Ы': 'Y', 'Ь': '', 'Ð': 'E', 'Ю': 'Yu', 'Я': 'Ya' - }; - var UKRAINIAN_MAP = { - 'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ò': 'G', 'Ñ”': 'ye', 'Ñ–': 'i', - 'Ñ—': 'yi', 'Ò‘': 'g' - }; - var CZECH_MAP = { - 'Ä': 'c', 'Ä': 'd', 'Ä›': 'e', 'ň': 'n', 'Å™': 'r', 'Å¡': 's', 'Å¥': 't', - 'ů': 'u', 'ž': 'z', 'ÄŒ': 'C', 'ÄŽ': 'D', 'Äš': 'E', 'Ň': 'N', 'Ř': 'R', - 'Å ': 'S', 'Ť': 'T', 'Å®': 'U', 'Ž': 'Z' - }; - var POLISH_MAP = { - 'Ä…': 'a', 'ć': 'c', 'Ä™': 'e', 'Å‚': 'l', 'Å„': 'n', 'ó': 'o', 'Å›': 's', - 'ź': 'z', 'ż': 'z', - 'Ä„': 'A', 'Ć': 'C', 'Ę': 'E', 'Å': 'L', 'Ń': 'N', 'Ó': 'O', 'Åš': 'S', - 'Ź': 'Z', 'Å»': 'Z' - }; - var LATVIAN_MAP = { - 'Ä': 'a', 'Ä': 'c', 'Ä“': 'e', 'Ä£': 'g', 'Ä«': 'i', 'Ä·': 'k', 'ļ': 'l', - 'ņ': 'n', 'Å¡': 's', 'Å«': 'u', 'ž': 'z', - 'Ä€': 'A', 'ÄŒ': 'C', 'Ä’': 'E', 'Ä¢': 'G', 'Ī': 'I', 'Ķ': 'K', 'Ä»': 'L', - 'Å…': 'N', 'Å ': 'S', 'Ū': 'U', 'Ž': 'Z' - }; - var ARABIC_MAP = { - 'Ø£': 'a', 'ب': 'b', 'ت': 't', 'Ø«': 'th', 'ج': 'g', 'Ø': 'h', 'Ø®': 'kh', 'د': 'd', - 'Ø°': 'th', 'ر': 'r', 'ز': 'z', 'س': 's', 'Ø´': 'sh', 'ص': 's', 'ض': 'd', 'Ø·': 't', - 'ظ': 'th', 'ع': 'aa', 'غ': 'gh', 'Ù': 'f', 'Ù‚': 'k', 'Ùƒ': 'k', 'Ù„': 'l', 'Ù…': 'm', - 'Ù†': 'n', 'Ù‡': 'h', 'Ùˆ': 'o', 'ÙŠ': 'y' - }; - var LITHUANIAN_MAP = { - 'Ä…': 'a', 'Ä': 'c', 'Ä™': 'e', 'Ä—': 'e', 'į': 'i', 'Å¡': 's', 'ų': 'u', - 'Å«': 'u', 'ž': 'z', - 'Ä„': 'A', 'ÄŒ': 'C', 'Ę': 'E', 'Ä–': 'E', 'Ä®': 'I', 'Å ': 'S', 'Ų': 'U', - 'Ū': 'U', 'Ž': 'Z' - }; - var SERBIAN_MAP = { - 'Ñ’': 'dj', 'ј': 'j', 'Ñ™': 'lj', 'Ñš': 'nj', 'Ñ›': 'c', 'ÑŸ': 'dz', - 'Ä‘': 'dj', 'Ђ': 'Dj', 'Ј': 'j', 'Љ': 'Lj', 'Њ': 'Nj', 'Ћ': 'C', - 'Ð': 'Dz', 'Ä': 'Dj' - }; - var AZERBAIJANI_MAP = { - 'ç': 'c', 'É™': 'e', 'ÄŸ': 'g', 'ı': 'i', 'ö': 'o', 'ÅŸ': 's', 'ü': 'u', - 'Ç': 'C', 'Æ': 'E', 'Äž': 'G', 'Ä°': 'I', 'Ö': 'O', 'Åž': 'S', 'Ãœ': 'U' - }; - - var ALL_DOWNCODE_MAPS = [ - LATIN_MAP, - LATIN_SYMBOLS_MAP, - GREEK_MAP, - TURKISH_MAP, - ROMANIAN_MAP, - RUSSIAN_MAP, - UKRAINIAN_MAP, - CZECH_MAP, - POLISH_MAP, - LATVIAN_MAP, - ARABIC_MAP, - LITHUANIAN_MAP, - SERBIAN_MAP, - AZERBAIJANI_MAP - ]; - - var Downcoder = { - 'Initialize': function() { - if (Downcoder.map) { // already made - return; - } - Downcoder.map = {}; - Downcoder.chars = []; - for (var i = 0; i < ALL_DOWNCODE_MAPS.length; i++) { - var lookup = ALL_DOWNCODE_MAPS[i]; - for (var c in lookup) { - if (lookup.hasOwnProperty(c)) { - Downcoder.map[c] = lookup[c]; - } - } - } - for (var k in Downcoder.map) { - if (Downcoder.map.hasOwnProperty(k)) { - Downcoder.chars.push(k); - } - } - Downcoder.regex = new RegExp(Downcoder.chars.join('|'), 'g'); - } - }; - - function downcode(slug) { - Downcoder.Initialize(); - return slug.replace(Downcoder.regex, function(m) { - return Downcoder.map[m]; - }); - } - - - function URLify(s, num_chars, allowUnicode) { - // changes, e.g., "Petty theft" to "petty-theft" - // remove all these words from the string before urlifying - if (!allowUnicode) { - s = downcode(s); - } - var removelist = [ - "a", "an", "as", "at", "before", "but", "by", "for", "from", "is", - "in", "into", "like", "of", "off", "on", "onto", "per", "since", - "than", "the", "this", "that", "to", "up", "via", "with" - ]; - var r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi'); - s = s.replace(r, ''); - // if downcode doesn't hit, the char will be stripped here - if (allowUnicode) { - // Keep Unicode letters including both lowercase and uppercase - // characters, whitespace, and dash; remove other characters. - s = XRegExp.replace(s, XRegExp('[^-_\\p{L}\\p{N}\\s]', 'g'), ''); - } else { - s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars - } - s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces - s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens - s = s.toLowerCase(); // convert to lowercase - return s.substring(0, num_chars); // trim to first num_chars chars - } - window.URLify = URLify; -})(); diff --git a/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt b/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt deleted file mode 100644 index d930e62ac1497030c076f2caf282aa5ea5f919f7..0000000000000000000000000000000000000000 --- a/static/admin/js/vendor/jquery/LICENSE-JQUERY.txt +++ /dev/null @@ -1,26 +0,0 @@ -Copyright jQuery Foundation and other contributors, https://jquery.org/ - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/jquery/jquery - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/static/admin/js/vendor/jquery/jquery.js b/static/admin/js/vendor/jquery/jquery.js deleted file mode 100644 index eed17778c688271208406367c0c1681d81feca6f..0000000000000000000000000000000000000000 --- a/static/admin/js/vendor/jquery/jquery.js +++ /dev/null @@ -1,9210 +0,0 @@ -/*! - * jQuery JavaScript Library v2.1.4 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-04-28T16:01Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// - -var arr = []; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - version = "2.1.4", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; - }, - - isPlainObject: function( obj ) { - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.constructor && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; - } - - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf("use strict") === 1 ) { - script = document.createElement("script"); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.0-pre - * http://sizzlejs.com/ - * - * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-16 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - nodeType = context.nodeType; - - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - if ( !seed && documentIsHTML ) { - - // Try to shortcut find operations when possible (e.g., not under DocumentFragment) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType !== 1 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - parent = doc.defaultView; - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Support tests - ---------------------------------------------------------------------- */ - documentIsHTML = !isXML( doc ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" + - "<select id='" + expando + "-\f]' msallowcapture=''>" + - "<option selected=''></option></select>"; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = "<a href='#'></a>"; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = "<input/>"; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - len = this.length, - ret = [], - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { - // Inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }, - - sibling: function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter(function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.unique( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * The ready event handler and self cleanup method - */ -function completed() { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - jQuery.ready(); -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // We once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - } else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[0], key ) : emptyGet; -}; - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( owner ) { - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - /* jshint -W018 */ - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - -function Data() { - // Support: Android<4, - // Old WebKit does not have Object.preventExtensions/freeze method, - // return new empty object instead with no [[set]] accessor - Object.defineProperty( this.cache = {}, 0, { - get: function() { - return {}; - } - }); - - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; -Data.accepts = jQuery.acceptData; - -Data.prototype = { - key: function( owner ) { - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return the key for a frozen object. - if ( !Data.accepts( owner ) ) { - return 0; - } - - var descriptor = {}, - // Check if the owner object already has a cache key - unlock = owner[ this.expando ]; - - // If not, create one - if ( !unlock ) { - unlock = Data.uid++; - - // Secure it in a non-enumerable, non-writable property - try { - descriptor[ this.expando ] = { value: unlock }; - Object.defineProperties( owner, descriptor ); - - // Support: Android<4 - // Fallback to a less secure definition - } catch ( e ) { - descriptor[ this.expando ] = unlock; - jQuery.extend( owner, descriptor ); - } - } - - // Ensure the cache object - if ( !this.cache[ unlock ] ) { - this.cache[ unlock ] = {}; - } - - return unlock; - }, - set: function( owner, data, value ) { - var prop, - // There may be an unlock assigned to this node, - // if there is no entry for this "owner", create one inline - // and set the unlock as though an owner entry had always existed - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - // Handle: [ owner, key, value ] args - if ( typeof data === "string" ) { - cache[ data ] = value; - - // Handle: [ owner, { properties } ] args - } else { - // Fresh assignments by object are shallow copied - if ( jQuery.isEmptyObject( cache ) ) { - jQuery.extend( this.cache[ unlock ], data ); - // Otherwise, copy the properties one-by-one to the cache object - } else { - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } - } - } - return cache; - }, - get: function( owner, key ) { - // Either a valid cache is found, or will be created. - // New caches will be created and the unlock returned, - // allowing direct access to the newly created - // empty data object. A valid owner object must be provided. - var cache = this.cache[ this.key( owner ) ]; - - return key === undefined ? - cache : cache[ key ]; - }, - access: function( owner, key, value ) { - var stored; - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ((key && typeof key === "string") && value === undefined) ) { - - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase(key) ); - } - - // [*]When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, name, camel, - unlock = this.key( owner ), - cache = this.cache[ unlock ]; - - if ( key === undefined ) { - this.cache[ unlock ] = {}; - - } else { - // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); - } else { - camel = jQuery.camelCase( key ); - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } - } - - i = name.length; - while ( i-- ) { - delete cache[ name[ i ] ]; - } - } - }, - hasData: function( owner ) { - return !jQuery.isEmptyObject( - this.cache[ owner[ this.expando ] ] || {} - ); - }, - discard: function( owner ) { - if ( owner[ this.expando ] ) { - delete this.cache[ owner[ this.expando ] ]; - } - } -}; -var data_priv = new Data(); - -var data_user = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - data_user.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend({ - hasData: function( elem ) { - return data_user.hasData( elem ) || data_priv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return data_user.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - data_user.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to data_priv methods, these can be deprecated. - _data: function( elem, name, data ) { - return data_priv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - data_priv.remove( elem, name ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = data_user.get( elem ); - - if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - data_priv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - data_user.set( this, key ); - }); - } - - return access( this, function( value ) { - var data, - camelKey = jQuery.camelCase( key ); - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - // Attempt to get data from the cache - // with the key as-is - data = data_user.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to get data from the cache - // with the key camelized - data = data_user.get( elem, camelKey ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each(function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = data_user.get( this, camelKey ); - - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - data_user.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf("-") !== -1 && data !== undefined ) { - data_user.set( this, key, value ); - } - }); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each(function() { - data_user.remove( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = data_priv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = data_priv.access( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return data_priv.get( elem, key ) || data_priv.access( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - data_priv.remove( elem, [ type + "queue", key ] ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = data_priv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Safari<=5.1 - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Safari<=5.1, Android<4.2 - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<=11+ - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = "<textarea>x</textarea>"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -})(); -var strundefined = typeof undefined; - - - -support.focusinBubbles = "onfocusin" in window; - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = data_priv.hasData( elem ) && data_priv.get( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - data_priv.remove( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, matches, sel, handleObj, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG <use> instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.disabled !== true || event.type !== "click" ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } -}; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: Android<4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && e.preventDefault ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && e.stopPropagation ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -// Support: Chrome 15+ -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// Support: Firefox, Chrome, Safari -// Create "bubbling" focus and blur events -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - data_priv.remove( doc, fix ); - - } else { - data_priv.access( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, - // checked="checked" or checked - rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, - rscriptType = /^$|\/(?:java|ecma)script/i, - rscriptTypeMasked = /^true\/(.*)/, - rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - - // Support: IE9 - option: [ 1, "<select multiple='multiple'>", "</select>" ], - - thead: [ 1, "<table>", "</table>" ], - col: [ 2, "<table><colgroup>", "</colgroup></table>" ], - tr: [ 2, "<table><tbody>", "</tbody></table>" ], - td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], - - _default: [ 0, "", "" ] - }; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: 1.x compatibility -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute("type"); - } - - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - data_priv.set( - elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) - ); - } -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( data_priv.hasData( src ) ) { - pdataOld = data_priv.access( src ); - pdataCur = data_priv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( data_user.hasData( src ) ) { - udataOld = data_user.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - data_user.set( dest, udataCur ); - } -} - -function getAll( context, tag ) { - var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : - context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - // Support: QtWebKit, PhantomJS - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: QtWebKit, PhantomJS - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - }, - - cleanData: function( elems ) { - var data, elem, type, key, - special = jQuery.event.special, - i = 0; - - for ( ; (elem = elems[ i ]) !== undefined; i++ ) { - if ( jQuery.acceptData( elem ) ) { - key = elem[ data_priv.expando ]; - - if ( key && (data = data_priv.cache[ key ]) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - if ( data_priv.cache[ key ] ) { - // Discard any remaining `private` data - delete data_priv.cache[ key ]; - } - } - } - // Discard any remaining `user` data - delete data_user.cache[ elem[ data_user.expando ] ]; - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each(function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - }); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1></$2>" ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } - } - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optimization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement ); - - // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse - doc = iframe[ 0 ].contentDocument; - - // Support: IE - doc.write(); - doc.close(); - - display = actualDisplay( nodeName, doc ); - iframe.detach(); - } - - // Store the correct default display - elemdisplay[ nodeName ] = display; - } - - return display; -} -var rmargin = (/^margin/); - -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - // Support: IE<=11+, Firefox<=30+ (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - if ( elem.ownerDocument.defaultView.opener ) { - return elem.ownerDocument.defaultView.getComputedStyle( elem, null ); - } - - return window.getComputedStyle( elem, null ); - }; - - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - style = elem.style; - - computed = computed || getStyles( elem ); - - // Support: IE9 - // getPropertyValue is only needed for .css('filter') (#12537) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - } - - if ( computed ) { - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // Support: iOS < 6 - // A tribute to the "awesome hack by Dean Edwards" - // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values - if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - // Support: IE - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return (this.get = hookFn).apply( this, arguments ); - } - }; -} - - -(function() { - var pixelPositionVal, boxSizingReliableVal, - docElem = document.documentElement, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - if ( !div.style ) { - return; - } - - // Support: IE9-11+ - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" + - "position:absolute"; - container.appendChild( div ); - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computePixelPositionAndBoxSizingReliable() { - div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" + - "box-sizing:border-box;display:block;margin-top:1%;top:1%;" + - "border:1px;padding:1px;width:4px;position:absolute"; - div.innerHTML = ""; - docElem.appendChild( container ); - - var divStyle = window.getComputedStyle( div, null ); - pixelPositionVal = divStyle.top !== "1%"; - boxSizingReliableVal = divStyle.width === "4px"; - - docElem.removeChild( container ); - } - - // Support: node.js jsdom - // Don't assume that getComputedStyle is a property of the global object - if ( window.getComputedStyle ) { - jQuery.extend( support, { - pixelPosition: function() { - - // This test is executed only once but we still do memoizing - // since we can use the boxSizingReliable pre-computing. - // No need to check if the test was already performed, though. - computePixelPositionAndBoxSizingReliable(); - return pixelPositionVal; - }, - boxSizingReliable: function() { - if ( boxSizingReliableVal == null ) { - computePixelPositionAndBoxSizingReliable(); - } - return boxSizingReliableVal; - }, - reliableMarginRight: function() { - - // Support: Android 2.3 - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. (#3333) - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - // This support function is only executed once so no memoizing is needed. - var ret, - marginDiv = div.appendChild( document.createElement( "div" ) ); - - // Reset CSS: box-sizing; display; margin; border; padding - marginDiv.style.cssText = div.style.cssText = - // Support: Firefox<29, Android 2.3 - // Vendor-prefix box-sizing - "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + - "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; - marginDiv.style.marginRight = marginDiv.style.width = "0"; - div.style.width = "1px"; - docElem.appendChild( container ); - - ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight ); - - docElem.removeChild( container ); - div.removeChild( marginDiv ); - - return ret; - } - }); - } -})(); - - -// A method for quickly swapping in/out CSS properties to get correct calculations. -jQuery.swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var - // Swappable if display is none or starts with table except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ), - rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ), - - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; - -// Return a css property mapped to a potentially vendor prefixed property -function vendorPropName( style, name ) { - - // Shortcut for names that are not vendor prefixed - if ( name in style ) { - return name; - } - - // Check for vendor prefixed names - var capName = name[0].toUpperCase() + name.slice(1), - origName = name, - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in style ) { - return name; - } - } - - return origName; -} - -function setPositiveNumber( elem, value, subtract ) { - var matches = rnumsplit.exec( value ); - return matches ? - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i = extra === ( isBorderBox ? "border" : "content" ) ? - // If we already have the right measurement, avoid augmentation - 4 : - // Otherwise initialize for horizontal or vertical properties - name === "width" ? 1 : 0, - - val = 0; - - for ( ; i < 4; i += 2 ) { - // Both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // At this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - // At this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // At this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with offset property, which is equivalent to the border-box value - var valueIsBorderBox = true, - val = name === "width" ? elem.offsetWidth : elem.offsetHeight, - styles = getStyles( elem ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Some non-html elements return undefined for offsetWidth, so check for null/undefined - // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 - // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 - if ( val <= 0 || val == null ) { - // Fall back to computed then uncomputed css if necessary - val = curCSS( elem, name, styles ); - if ( val < 0 || val == null ) { - val = elem.style[ name ]; - } - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test(val) ) { - return val; - } - - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - } - - // Use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -function showHide( elements, show ) { - var display, elem, hidden, - values = [], - index = 0, - length = elements.length; - - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - values[ index ] = data_priv.get( elem, "olddisplay" ); - display = elem.style.display; - if ( show ) { - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !values[ index ] && display === "none" ) { - elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( elem.style.display === "" && isHidden( elem ) ) { - values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) ); - } - } else { - hidden = isHidden( elem ); - - if ( display !== "none" || !hidden ) { - data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( index = 0; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - if ( !show || elem.style.display === "none" || elem.style.display === "" ) { - elem.style.display = show ? values[ index ] || "" : "none"; - } - } - - return elements; -} - -jQuery.extend({ - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - style = elem.style; - - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && (ret = rrelNum.exec( value )) ) { - value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // Support: IE9-11+ - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { - style[ name ] = value; - } - - } else { - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ); - - // Make sure that we're working with the right name - name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; - } - return val; - } -}); - -jQuery.each([ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ? - jQuery.swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - }) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var styles = extra && getStyles( elem ); - return setPositiveNumber( elem, value, extra ? - augmentWidthOrHeight( - elem, - name, - extra, - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ) : 0 - ); - } - }; -}); - -// Support: Android 2.3 -jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight, - function( elem, computed ) { - if ( computed ) { - return jQuery.swap( elem, { "display": "inline-block" }, - curCSS, [ elem, "marginRight" ] ); - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each({ - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split(" ") : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -}); - -jQuery.fn.extend({ - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( jQuery.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - }, - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each(function() { - if ( isHidden( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - }); - } -}); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || "swing"; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - if ( tween.elem[ tween.prop ] != null && - (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE9 -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - } -}; - -jQuery.fx = Tween.prototype.init; - -// Back Compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, timerId, - rfxtypes = /^(?:toggle|show|hide)$/, - rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ), - rrun = /queueHooks$/, - animationPrefilters = [ defaultPrefilter ], - tweeners = { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ), - target = tween.cur(), - parts = rfxnum.exec( value ), - unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) && - rfxnum.exec( jQuery.css( tween.elem, prop ) ), - scale = 1, - maxIterations = 20; - - if ( start && start[ 3 ] !== unit ) { - // Trust units reported by jQuery.css - unit = unit || start[ 3 ]; - - // Make sure we update the tween properties later on - parts = parts || []; - - // Iteratively approximate from a nonzero starting point - start = +target || 1; - - do { - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - start = start / scale; - jQuery.style( tween.elem, prop, start + unit ); - - // Update scale, tolerating zero or NaN from tween.cur(), - // break the loop if scale is unchanged or perfect, or if we've just had enough - } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations ); - } - - // Update tween properties - if ( parts ) { - start = tween.start = +start || +target || 0; - tween.unit = unit; - // If a +=/-= token was provided, we're doing a relative animation - tween.end = parts[ 1 ] ? - start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : - +parts[ 2 ]; - } - - return tween; - } ] - }; - -// Animations created synchronously will run synchronously -function createFxNow() { - setTimeout(function() { - fxNow = undefined; - }); - return ( fxNow = jQuery.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4 ; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( (tween = collection[ index ].call( animation, prop, value )) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - /* jshint validthis: true */ - var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHidden( elem ), - dataShow = data_priv.get( elem, "fxshow" ); - - // Handle queue: false promises - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always(function() { - // Ensure the complete handler is called before this completes - anim.always(function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - }); - }); - } - - // Height/width overflow pass - if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { - // Make sure that nothing sneaks out - // Record all 3 overflow attributes because IE9-10 do not - // change the overflow attribute when overflowX and - // overflowY are set to the same value - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Set display property to inline-block for height/width - // animations on inline elements that are having width/height animated - display = jQuery.css( elem, "display" ); - - // Test default display if display is currently "none" - checkDisplay = display === "none" ? - data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display; - - if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) { - style.display = "inline-block"; - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always(function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - }); - } - - // show/hide pass - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.exec( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - - // Any non-fx value stops us from restoring the original display value - } else { - display = undefined; - } - } - - if ( !jQuery.isEmptyObject( orig ) ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = data_priv.access( elem, "fxshow", {} ); - } - - // Store state if its toggle - enables .stop().toggle() to "reverse" - if ( toggle ) { - dataShow.hidden = !hidden; - } - if ( hidden ) { - jQuery( elem ).show(); - } else { - anim.done(function() { - jQuery( elem ).hide(); - }); - } - anim.done(function() { - var prop; - - data_priv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - }); - for ( prop in orig ) { - tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = tween.start; - if ( hidden ) { - tween.end = tween.start; - tween.start = prop === "width" || prop === "height" ? 1 : 0; - } - } - } - - // If this is a noop like .hide().hide(), restore an overwritten display value - } else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) { - style.display = display; - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( jQuery.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = animationPrefilters.length, - deferred = jQuery.Deferred().always( function() { - // Don't match elem in the :animated selector - delete tick.elem; - }), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - // Support: Android 2.3 - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ]); - - if ( percent < 1 && length ) { - return remaining; - } else { - deferred.resolveWith( elem, [ animation ] ); - return false; - } - }, - animation = deferred.promise({ - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { specialEasing: {} }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length ; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - }), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length ; index++ ) { - result = animationPrefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - }) - ); - - // attach callbacks from options - return animation.progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.split(" "); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length ; index++ ) { - prop = props[ index ]; - tweeners[ prop ] = tweeners[ prop ] || []; - tweeners[ prop ].unshift( callback ); - } - }, - - prefilter: function( callback, prepend ) { - if ( prepend ) { - animationPrefilters.unshift( callback ); - } else { - animationPrefilters.push( callback ); - } - } -}); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : - opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend({ - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHidden ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate({ opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || data_priv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each(function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = data_priv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) { - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - }); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each(function() { - var index, - data = data_priv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - }); - } -}); - -jQuery.each([ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -}); - -// Generate shortcuts for custom animations -jQuery.each({ - slideDown: genFx("show"), - slideUp: genFx("hide"), - slideToggle: genFx("toggle"), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -}); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - // Checks the timer has not already been removed - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - if ( timer() ) { - jQuery.fx.start(); - } else { - jQuery.timers.pop(); - } -}; - -jQuery.fx.interval = 13; - -jQuery.fx.start = function() { - if ( !timerId ) { - timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval ); - } -}; - -jQuery.fx.stop = function() { - clearInterval( timerId ); - timerId = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); -}; - - -(function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: iOS<=5.1, Android<=4.2+ - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE<=11+ - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: Android<=2.3 - // Options inside disabled selects are incorrectly marked as disabled - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Support: IE<=11+ - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -})(); - - -var nodeHook, boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend({ - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - } -}); - -jQuery.extend({ - attr: function( elem, name, value ) { - var hooks, ret, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === strundefined ) { - return jQuery.prop( elem, name, value ); - } - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - - } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, value + "" ); - return value; - } - - } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var name, propName, - i = 0, - attrNames = value && value.match( rnotwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( (name = attrNames[i++]) ) { - propName = jQuery.propFix[ name ] || name; - - // Boolean attributes get special treatment (#10870) - if ( jQuery.expr.match.bool.test( name ) ) { - // Set corresponding property to false - elem[ propName ] = false; - } - - elem.removeAttribute( name ); - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - jQuery.nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - } -}); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle; - if ( !isXML ) { - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ name ]; - attrHandle[ name ] = ret; - ret = getter( elem, name, isXML ) != null ? - name.toLowerCase() : - null; - attrHandle[ name ] = handle; - } - return ret; - }; -}); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i; - -jQuery.fn.extend({ - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each(function() { - delete this[ jQuery.propFix[ name ] || name ]; - }); - } -}); - -jQuery.extend({ - propFix: { - "for": "htmlFor", - "class": "className" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? - ret : - ( elem[ name ] = value ); - - } else { - return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? - ret : - elem[ name ]; - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ? - elem.tabIndex : - -1; - } - } - } -}); - -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - } - }; -} - -jQuery.each([ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -}); - - - - -var rclass = /[\t\r\n\f]/g; - -jQuery.fn.extend({ - addClass: function( value ) { - var classes, elem, cur, clazz, j, finalValue, - proceed = typeof value === "string" && value, - i = 0, - len = this.length; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call( this, j, this.className ) ); - }); - } - - if ( proceed ) { - // The disjunction here is for better compressibility (see removeClass) - classes = ( value || "" ).match( rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - " " - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // only assign if different to avoid unneeded rendering. - finalValue = jQuery.trim( cur ); - if ( elem.className !== finalValue ) { - elem.className = finalValue; - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, clazz, j, finalValue, - proceed = arguments.length === 0 || typeof value === "string" && value, - i = 0, - len = this.length; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call( this, j, this.className ) ); - }); - } - if ( proceed ) { - classes = ( value || "" ).match( rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( elem.className ? - ( " " + elem.className + " " ).replace( rclass, " " ) : - "" - ); - - if ( cur ) { - j = 0; - while ( (clazz = classes[j++]) ) { - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = value ? jQuery.trim( cur ) : ""; - if ( elem.className !== finalValue ) { - elem.className = finalValue; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // Toggle individual class names - var className, - i = 0, - self = jQuery( this ), - classNames = value.match( rnotwhite ) || []; - - while ( (className = classNames[ i++ ]) ) { - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( type === strundefined || type === "boolean" ) { - if ( this.className ) { - // store className if set - data_priv.set( this, "__className__", this.className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { - return true; - } - } - - return false; - } -}); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend({ - val: function( value ) { - var hooks, ret, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // Handle most common string cases - ret.replace(rreturn, "") : - // Handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - // Support: IE10-11+ - // option.text throws exceptions (#14686, #14858) - jQuery.trim( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? - max : - one ? index : 0; - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // IE6-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - // Don't return options that are disabled or in a disabled optgroup - ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) && - ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) { - optionSet = true; - } - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -}); - -// Radios and checkboxes getter/setter -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute("value") === null ? "on" : elem.value; - }; - } -}); - - - - -// Return jQuery for attributes-only inclusion - - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -}); - -jQuery.fn.extend({ - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - }, - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); - } -}); - - -var nonce = jQuery.now(); - -var rquery = (/\?/); - - - -// Support: Android 2.3 -// Workaround failure to string-cast null input -jQuery.parseJSON = function( data ) { - return JSON.parse( data + "" ); -}; - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml, tmp; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE9 - try { - tmp = new DOMParser(); - xml = tmp.parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rhash = /#.*$/, - rts = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Document location - ajaxLocation = window.location.href, - - // Segment location into parts - ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - // For each dataType in the dataTypeExpression - while ( (dataType = dataTypes[i++]) ) { - // Prepend if requested - if ( dataType[0] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - (structure[ dataType ] = structure[ dataType ] || []).unshift( func ); - - // Otherwise append - } else { - (structure[ dataType ] = structure[ dataType ] || []).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - }); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s[ "throws" ] ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend({ - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: ajaxLocation, - type: "GET", - isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /xml/, - html: /html/, - json: /json/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": jQuery.parseJSON, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - // URL without anti-cache param - cacheURL, - // Response headers - responseHeadersString, - responseHeaders, - // timeout handle - timeoutTimer, - // Cross-domain detection vars - parts, - // To know if global events are to be dispatched - fireGlobals, - // Loop variable - i, - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - // Callbacks context - callbackContext = s.context || s, - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks("once memory"), - // Status-dependent callbacks - statusCode = s.statusCode || {}, - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - // The jqXHR state - state = 0, - // Default abort message - strAbort = "canceled", - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( state === 2 ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( (match = rheaders.exec( responseHeadersString )) ) { - responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return state === 2 ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - var lname = name.toLowerCase(); - if ( !state ) { - name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( !state ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( state < 2 ) { - for ( code in map ) { - // Lazy-add the new callback in a way that preserves old ones - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } else { - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ).complete = completeDeferred.add; - jqXHR.success = jqXHR.done; - jqXHR.error = jqXHR.fail; - - // Remove hash character (#7531: and string promotion) - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ) - .replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; - - // A cross-domain request is in order when we have a protocol:host:port mismatch - if ( s.crossDomain == null ) { - parts = rurl.exec( s.url.toLowerCase() ); - s.crossDomain = !!( parts && - ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || - ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !== - ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) ) - ); - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( state === 2 ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger("ajaxStart"); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - cacheURL = s.url; - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // If data is available, append data to url - if ( s.data ) { - cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add anti-cache in url if needed - if ( s.cache === false ) { - s.url = rts.test( cacheURL ) ? - - // If there is already a '_' parameter, set its value - cacheURL.replace( rts, "$1_=" + nonce++ ) : - - // Otherwise add one to the end - cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; - } - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? - s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - for ( i in { success: 1, error: 1, complete: 1 } ) { - jqXHR[ i ]( s[ i ] ); - } - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = setTimeout(function() { - jqXHR.abort("timeout"); - }, s.timeout ); - } - - try { - state = 1; - transport.send( requestHeaders, done ); - } catch ( e ) { - // Propagate exception as error if not done - if ( state < 2 ) { - done( -1, e ); - // Simply rethrow otherwise - } else { - throw e; - } - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Called once - if ( state === 2 ) { - return; - } - - // State is "done" now - state = 2; - - // Clear timeout if it exists - if ( timeoutTimer ) { - clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader("Last-Modified"); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader("etag"); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger("ajaxStop"); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -}); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - // Shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - return jQuery.ajax({ - url: url, - type: method, - dataType: type, - data: data, - success: callback - }); - }; -}); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax({ - url: url, - type: "GET", - dataType: "script", - async: false, - global: false, - "throws": true - }); -}; - - -jQuery.fn.extend({ - wrapAll: function( html ) { - var wrap; - - if ( jQuery.isFunction( html ) ) { - return this.each(function( i ) { - jQuery( this ).wrapAll( html.call(this, i) ); - }); - } - - if ( this[ 0 ] ) { - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map(function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - }).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each(function( i ) { - jQuery( this ).wrapInner( html.call(this, i) ); - }); - } - - return this.each(function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - }); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each(function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); - }); - }, - - unwrap: function() { - return this.parent().each(function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - }).end(); - } -}); - - -jQuery.expr.filters.hidden = function( elem ) { - // Support: Opera <= 12.12 - // Opera reports offsetWidths and offsetHeights less than zero on some elements - return elem.offsetWidth <= 0 && elem.offsetHeight <= 0; -}; -jQuery.expr.filters.visible = function( elem ) { - return !jQuery.expr.filters.hidden( elem ); -}; - - - - -var r20 = /%20/g, - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( jQuery.isArray( obj ) ) { - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - // Item is non-scalar (array or object), encode its numeric index. - buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add ); - } - }); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, value ) { - // If value is a function, invoke it and return its value - value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); - s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); - }; - - // Set traditional to true for jQuery <= 1.3.2 behavior. - if ( traditional === undefined ) { - traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - }); - - } else { - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ).replace( r20, "+" ); -}; - -jQuery.fn.extend({ - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map(function() { - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - }) - .filter(function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - }) - .map(function( i, elem ) { - var val = jQuery( this ).val(); - - return val == null ? - null : - jQuery.isArray( val ) ? - jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - }) : - { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - }).get(); - } -}); - - -jQuery.ajaxSettings.xhr = function() { - try { - return new XMLHttpRequest(); - } catch( e ) {} -}; - -var xhrId = 0, - xhrCallbacks = {}, - xhrSuccessStatus = { - // file protocol always yields status code 0, assume 200 - 0: 200, - // Support: IE9 - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -// Support: IE9 -// Open requests must be manually aborted on unload (#5280) -// See https://support.microsoft.com/kb/2856746 for more info -if ( window.attachEvent ) { - window.attachEvent( "onunload", function() { - for ( var key in xhrCallbacks ) { - xhrCallbacks[ key ](); - } - }); -} - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport(function( options ) { - var callback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(), - id = ++xhrId; - - xhr.open( options.type, options.url, options.async, options.username, options.password ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers["X-Requested-With"] ) { - headers["X-Requested-With"] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - delete xhrCallbacks[ id ]; - callback = xhr.onload = xhr.onerror = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - complete( - // file: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - // Support: IE9 - // Accessing binary-data responseText throws an exception - // (#11426) - typeof xhr.responseText === "string" ? { - text: xhr.responseText - } : undefined, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - xhr.onerror = callback("error"); - - // Create the abort callback - callback = xhrCallbacks[ id ] = callback("abort"); - - try { - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -}); - - - - -// Install script dataType -jQuery.ajaxSetup({ - accepts: { - script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /(?:java|ecma)script/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -}); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -}); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery("<script>").prop({ - async: true, - charset: s.scriptCharset, - src: s.url - }).on( - "load error", - callback = function( evt ) { - script.remove(); - callback = null; - if ( evt ) { - complete( evt.type === "error" ? 404 : 200, evt.type ); - } - } - ); - document.head.appendChild( script[ 0 ] ); - }, - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -}); - - - - -var oldCallbacks = [], - rjsonp = /(=)\?(?=&|$)|\?\?/; - -// Default jsonp settings -jQuery.ajaxSetup({ - jsonp: "callback", - jsonpCallback: function() { - var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); - this[ callback ] = true; - return callback; - } -}); - -// Detect, normalize options and install callbacks for jsonp requests -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - - var callbackName, overwritten, responseContainer, - jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? - "url" : - typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data" - ); - - // Handle iff the expected data type is "jsonp" or we have a parameter to set - if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { - - // Get callback name, remembering preexisting value associated with it - callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? - s.jsonpCallback() : - s.jsonpCallback; - - // Insert callback into url or form data - if ( jsonProp ) { - s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); - } else if ( s.jsonp !== false ) { - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; - } - - // Use data converter to retrieve json after script execution - s.converters["script json"] = function() { - if ( !responseContainer ) { - jQuery.error( callbackName + " was not called" ); - } - return responseContainer[ 0 ]; - }; - - // force json dataType - s.dataTypes[ 0 ] = "json"; - - // Install callback - overwritten = window[ callbackName ]; - window[ callbackName ] = function() { - responseContainer = arguments; - }; - - // Clean-up function (fires after converters) - jqXHR.always(function() { - // Restore preexisting value - window[ callbackName ] = overwritten; - - // Save back as free - if ( s[ callbackName ] ) { - // make sure that re-using the options doesn't screw things around - s.jsonpCallback = originalSettings.jsonpCallback; - - // save the callback name for future use - oldCallbacks.push( callbackName ); - } - - // Call if it was a function and we have a response - if ( responseContainer && jQuery.isFunction( overwritten ) ) { - overwritten( responseContainer[ 0 ] ); - } - - responseContainer = overwritten = undefined; - }); - - // Delegate to script - return "script"; - } -}); - - - - -// data: string of html -// context (optional): If specified, the fragment will be created in this context, defaults to document -// keepScripts (optional): If true, will include scripts passed in the html string -jQuery.parseHTML = function( data, context, keepScripts ) { - if ( !data || typeof data !== "string" ) { - return null; - } - if ( typeof context === "boolean" ) { - keepScripts = context; - context = false; - } - context = context || document; - - var parsed = rsingleTag.exec( data ), - scripts = !keepScripts && []; - - // Single tag - if ( parsed ) { - return [ context.createElement( parsed[1] ) ]; - } - - parsed = jQuery.buildFragment( [ data ], context, scripts ); - - if ( scripts && scripts.length ) { - jQuery( scripts ).remove(); - } - - return jQuery.merge( [], parsed.childNodes ); -}; - - -// Keep a copy of the old load method -var _load = jQuery.fn.load; - -/** - * Load a url into a page - */ -jQuery.fn.load = function( url, params, callback ) { - if ( typeof url !== "string" && _load ) { - return _load.apply( this, arguments ); - } - - var selector, type, response, - self = this, - off = url.indexOf(" "); - - if ( off >= 0 ) { - selector = jQuery.trim( url.slice( off ) ); - url = url.slice( 0, off ); - } - - // If it's a function - if ( jQuery.isFunction( params ) ) { - - // We assume that it's the callback - callback = params; - params = undefined; - - // Otherwise, build a param string - } else if ( params && typeof params === "object" ) { - type = "POST"; - } - - // If we have elements to modify, make the request - if ( self.length > 0 ) { - jQuery.ajax({ - url: url, - - // if "type" variable is undefined, then "GET" method will be used - type: type, - dataType: "html", - data: params - }).done(function( responseText ) { - - // Save response for use in complete callback - response = arguments; - - self.html( selector ? - - // If a selector was specified, locate the right elements in a dummy div - // Exclude scripts to avoid IE 'Permission Denied' errors - jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) : - - // Otherwise use the full result - responseText ); - - }).complete( callback && function( jqXHR, status ) { - self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] ); - }); - } - - return this; -}; - - - - -// Attach a bunch of functions for handling common AJAX events -jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) { - jQuery.fn[ type ] = function( fn ) { - return this.on( type, fn ); - }; -}); - - - - -jQuery.expr.filters.animated = function( elem ) { - return jQuery.grep(jQuery.timers, function( fn ) { - return elem === fn.elem; - }).length; -}; - - - - -var docElem = window.document.documentElement; - -/** - * Gets a window from an element - */ -function getWindow( elem ) { - return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView; -} - -jQuery.offset = { - setOffset: function( elem, options, i ) { - var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, - position = jQuery.css( elem, "position" ), - curElem = jQuery( elem ), - props = {}; - - // Set position first, in-case top/left are set even on static elem - if ( position === "static" ) { - elem.style.position = "relative"; - } - - curOffset = curElem.offset(); - curCSSTop = jQuery.css( elem, "top" ); - curCSSLeft = jQuery.css( elem, "left" ); - calculatePosition = ( position === "absolute" || position === "fixed" ) && - ( curCSSTop + curCSSLeft ).indexOf("auto") > -1; - - // Need to be able to calculate position if either - // top or left is auto and position is either absolute or fixed - if ( calculatePosition ) { - curPosition = curElem.position(); - curTop = curPosition.top; - curLeft = curPosition.left; - - } else { - curTop = parseFloat( curCSSTop ) || 0; - curLeft = parseFloat( curCSSLeft ) || 0; - } - - if ( jQuery.isFunction( options ) ) { - options = options.call( elem, i, curOffset ); - } - - if ( options.top != null ) { - props.top = ( options.top - curOffset.top ) + curTop; - } - if ( options.left != null ) { - props.left = ( options.left - curOffset.left ) + curLeft; - } - - if ( "using" in options ) { - options.using.call( elem, props ); - - } else { - curElem.css( props ); - } - } -}; - -jQuery.fn.extend({ - offset: function( options ) { - if ( arguments.length ) { - return options === undefined ? - this : - this.each(function( i ) { - jQuery.offset.setOffset( this, options, i ); - }); - } - - var docElem, win, - elem = this[ 0 ], - box = { top: 0, left: 0 }, - doc = elem && elem.ownerDocument; - - if ( !doc ) { - return; - } - - docElem = doc.documentElement; - - // Make sure it's not a disconnected DOM node - if ( !jQuery.contains( docElem, elem ) ) { - return box; - } - - // Support: BlackBerry 5, iOS 3 (original iPhone) - // If we don't have gBCR, just use 0,0 rather than error - if ( typeof elem.getBoundingClientRect !== strundefined ) { - box = elem.getBoundingClientRect(); - } - win = getWindow( doc ); - return { - top: box.top + win.pageYOffset - docElem.clientTop, - left: box.left + win.pageXOffset - docElem.clientLeft - }; - }, - - position: function() { - if ( !this[ 0 ] ) { - return; - } - - var offsetParent, offset, - elem = this[ 0 ], - parentOffset = { top: 0, left: 0 }; - - // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent - if ( jQuery.css( elem, "position" ) === "fixed" ) { - // Assume getBoundingClientRect is there when computed position is fixed - offset = elem.getBoundingClientRect(); - - } else { - // Get *real* offsetParent - offsetParent = this.offsetParent(); - - // Get correct offsets - offset = this.offset(); - if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { - parentOffset = offsetParent.offset(); - } - - // Add offsetParent borders - parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); - parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); - } - - // Subtract parent offsets and element margins - return { - top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), - left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) - }; - }, - - offsetParent: function() { - return this.map(function() { - var offsetParent = this.offsetParent || docElem; - - while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) { - offsetParent = offsetParent.offsetParent; - } - - return offsetParent || docElem; - }); - } -}); - -// Create scrollLeft and scrollTop methods -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { - var top = "pageYOffset" === prop; - - jQuery.fn[ method ] = function( val ) { - return access( this, function( elem, method, val ) { - var win = getWindow( elem ); - - if ( val === undefined ) { - return win ? win[ prop ] : elem[ method ]; - } - - if ( win ) { - win.scrollTo( - !top ? val : window.pageXOffset, - top ? val : window.pageYOffset - ); - - } else { - elem[ method ] = val; - } - }, method, val, arguments.length, null ); - }; -}); - -// Support: Safari<7+, Chrome<37+ -// Add the top/left cssHooks using jQuery.fn.position -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 -// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280 -// getComputedStyle returns percent when specified for top/left/bottom/right; -// rather than make the css module depend on the offset module, just check for it here -jQuery.each( [ "top", "left" ], function( i, prop ) { - jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, - function( elem, computed ) { - if ( computed ) { - computed = curCSS( elem, prop ); - // If curCSS returns percentage, fallback to offset - return rnumnonpx.test( computed ) ? - jQuery( elem ).position()[ prop ] + "px" : - computed; - } - } - ); -}); - - -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { - jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) { - // Margin is only for outerHeight, outerWidth - jQuery.fn[ funcName ] = function( margin, value ) { - var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), - extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); - - return access( this, function( elem, type, value ) { - var doc; - - if ( jQuery.isWindow( elem ) ) { - // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there - // isn't a whole lot we can do. See pull request at this URL for discussion: - // https://github.com/jquery/jquery/pull/764 - return elem.document.documentElement[ "client" + name ]; - } - - // Get document width or height - if ( elem.nodeType === 9 ) { - doc = elem.documentElement; - - // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], - // whichever is greatest - return Math.max( - elem.body[ "scroll" + name ], doc[ "scroll" + name ], - elem.body[ "offset" + name ], doc[ "offset" + name ], - doc[ "client" + name ] - ); - } - - return value === undefined ? - // Get width or height on the element, requesting but not forcing parseFloat - jQuery.css( elem, type, extra ) : - - // Set width or height on the element - jQuery.style( elem, type, value, extra ); - }, type, chainable ? margin : undefined, chainable, null ); - }; - }); -}); - - -// The number of elements contained in the matched element set -jQuery.fn.size = function() { - return this.length; -}; - -jQuery.fn.andSelf = jQuery.fn.addBack; - - - - -// Register as a named AMD module, since jQuery can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase jquery is used because AMD module names are -// derived from file names, and jQuery is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of jQuery, it will work. - -// Note that for maximum portability, libraries that are not jQuery should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. jQuery is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - -if ( typeof define === "function" && define.amd ) { - define( "jquery", [], function() { - return jQuery; - }); -} - - - - -var - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$; - -jQuery.noConflict = function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; -}; - -// Expose jQuery and $ identifiers, even in AMD -// (#7102#comment:10, https://github.com/jquery/jquery/pull/557) -// and CommonJS for browser emulators (#13566) -if ( typeof noGlobal === strundefined ) { - window.jQuery = window.$ = jQuery; -} - - - - -return jQuery; - -})); diff --git a/static/admin/js/vendor/jquery/jquery.min.js b/static/admin/js/vendor/jquery/jquery.min.js deleted file mode 100644 index 49990d6e14503798f142dcb0d5b23cb0c8f80244..0000000000000000000000000000000000000000 --- a/static/admin/js/vendor/jquery/jquery.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), -void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n}); diff --git a/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt b/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt deleted file mode 100644 index 341652a5846e254fc514d6f571b23fa9e1464e20..0000000000000000000000000000000000000000 --- a/static/admin/js/vendor/xregexp/LICENSE-XREGEXP.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2007-2012 Steven Levithan <http://xregexp.com/> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/static/admin/js/vendor/xregexp/xregexp.min.js b/static/admin/js/vendor/xregexp/xregexp.min.js deleted file mode 100644 index a190558856d4e7cd0a10a0ab0c016dd55bc7f743..0000000000000000000000000000000000000000 --- a/static/admin/js/vendor/xregexp/xregexp.min.js +++ /dev/null @@ -1,18 +0,0 @@ -//XRegExp 2.0.0 <xregexp.com> MIT License -var XRegExp;XRegExp=XRegExp||function(n){"use strict";function v(n,i,r){var u;for(u in t.prototype)t.prototype.hasOwnProperty(u)&&(n[u]=t.prototype[u]);return n.xregexp={captureNames:i,isNative:!!r},n}function g(n){return(n.global?"g":"")+(n.ignoreCase?"i":"")+(n.multiline?"m":"")+(n.extended?"x":"")+(n.sticky?"y":"")}function o(n,r,u){if(!t.isRegExp(n))throw new TypeError("type RegExp expected");var f=i.replace.call(g(n)+(r||""),h,"");return u&&(f=i.replace.call(f,new RegExp("["+u+"]+","g"),"")),n=n.xregexp&&!n.xregexp.isNative?v(t(n.source,f),n.xregexp.captureNames?n.xregexp.captureNames.slice(0):null):v(new RegExp(n.source,f),null,!0)}function a(n,t){var i=n.length;if(Array.prototype.lastIndexOf)return n.lastIndexOf(t);while(i--)if(n[i]===t)return i;return-1}function s(n,t){return Object.prototype.toString.call(n).toLowerCase()==="[object "+t+"]"}function d(n){return n=n||{},n==="all"||n.all?n={natives:!0,extensibility:!0}:s(n,"string")&&(n=t.forEach(n,/[^\s,]+/,function(n){this[n]=!0},{})),n}function ut(n,t,i,u){var o=p.length,s=null,e,f;y=!0;try{while(o--)if(f=p[o],(f.scope==="all"||f.scope===i)&&(!f.trigger||f.trigger.call(u))&&(f.pattern.lastIndex=t,e=r.exec.call(f.pattern,n),e&&e.index===t)){s={output:f.handler.call(u,e,i),match:e};break}}catch(h){throw h;}finally{y=!1}return s}function b(n){t.addToken=c[n?"on":"off"],f.extensibility=n}function tt(n){RegExp.prototype.exec=(n?r:i).exec,RegExp.prototype.test=(n?r:i).test,String.prototype.match=(n?r:i).match,String.prototype.replace=(n?r:i).replace,String.prototype.split=(n?r:i).split,f.natives=n}var t,c,u,f={natives:!1,extensibility:!1},i={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},r={},k={},p=[],e="default",rt="class",it={"default":/^(?:\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??)/,"class":/^(?:\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S]))/},et=/\$(?:{([\w$]+)}|(\d\d?|[\s\S]))/g,h=/([\s\S])(?=[\s\S]*\1)/g,nt=/^(?:[?*+]|{\d+(?:,\d*)?})\??/,ft=i.exec.call(/()??/,"")[1]===n,l=RegExp.prototype.sticky!==n,y=!1,w="gim"+(l?"y":"");return t=function(r,u){if(t.isRegExp(r)){if(u!==n)throw new TypeError("can't supply flags when constructing one RegExp from another");return o(r)}if(y)throw new Error("can't call the XRegExp constructor within token definition functions");var l=[],a=e,b={hasNamedCapture:!1,captureNames:[],hasFlag:function(n){return u.indexOf(n)>-1}},f=0,c,s,p;if(r=r===n?"":String(r),u=u===n?"":String(u),i.match.call(u,h))throw new SyntaxError("invalid duplicate regular expression flag");for(r=i.replace.call(r,/^\(\?([\w$]+)\)/,function(n,t){if(i.test.call(/[gy]/,t))throw new SyntaxError("can't use flag g or y in mode modifier");return u=i.replace.call(u+t,h,""),""}),t.forEach(u,/[\s\S]/,function(n){if(w.indexOf(n[0])<0)throw new SyntaxError("invalid regular expression flag "+n[0]);});f<r.length;)c=ut(r,f,a,b),c?(l.push(c.output),f+=c.match[0].length||1):(s=i.exec.call(it[a],r.slice(f)),s?(l.push(s[0]),f+=s[0].length):(p=r.charAt(f),p==="["?a=rt:p==="]"&&(a=e),l.push(p),++f));return v(new RegExp(l.join(""),i.replace.call(u,/[^gimy]+/g,"")),b.hasNamedCapture?b.captureNames:null)},c={on:function(n,t,r){r=r||{},n&&p.push({pattern:o(n,"g"+(l?"y":"")),handler:t,scope:r.scope||e,trigger:r.trigger||null}),r.customFlags&&(w=i.replace.call(w+r.customFlags,h,""))},off:function(){throw new Error("extensibility must be installed before using addToken");}},t.addToken=c.off,t.cache=function(n,i){var r=n+"/"+(i||"");return k[r]||(k[r]=t(n,i))},t.escape=function(n){return i.replace.call(n,/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},t.exec=function(n,t,i,u){var e=o(t,"g"+(u&&l?"y":""),u===!1?"y":""),f;return e.lastIndex=i=i||0,f=r.exec.call(e,n),u&&f&&f.index!==i&&(f=null),t.global&&(t.lastIndex=f?e.lastIndex:0),f},t.forEach=function(n,i,r,u){for(var e=0,o=-1,f;f=t.exec(n,i,e);)r.call(u,f,++o,n,i),e=f.index+(f[0].length||1);return u},t.globalize=function(n){return o(n,"g")},t.install=function(n){n=d(n),!f.natives&&n.natives&&tt(!0),!f.extensibility&&n.extensibility&&b(!0)},t.isInstalled=function(n){return!!f[n]},t.isRegExp=function(n){return s(n,"regexp")},t.matchChain=function(n,i){return function r(n,u){for(var o=i[u].regex?i[u]:{regex:i[u]},f=[],s=function(n){f.push(o.backref?n[o.backref]||"":n[0])},e=0;e<n.length;++e)t.forEach(n[e],o.regex,s);return u===i.length-1||!f.length?f:r(f,u+1)}([n],0)},t.replace=function(i,u,f,e){var c=t.isRegExp(u),s=u,h;return c?(e===n&&u.global&&(e="all"),s=o(u,e==="all"?"g":"",e==="all"?"":"g")):e==="all"&&(s=new RegExp(t.escape(String(u)),"g")),h=r.replace.call(String(i),s,f),c&&u.global&&(u.lastIndex=0),h},t.split=function(n,t,i){return r.split.call(n,t,i)},t.test=function(n,i,r,u){return!!t.exec(n,i,r,u)},t.uninstall=function(n){n=d(n),f.natives&&n.natives&&tt(!1),f.extensibility&&n.extensibility&&b(!1)},t.union=function(n,i){var l=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g,o=0,f,h,c=function(n,t,i){var r=h[o-f];if(t){if(++o,r)return"(?<"+r+">"}else if(i)return"\\"+(+i+f);return n},e=[],r,u;if(!(s(n,"array")&&n.length))throw new TypeError("patterns must be a nonempty array");for(u=0;u<n.length;++u)r=n[u],t.isRegExp(r)?(f=o,h=r.xregexp&&r.xregexp.captureNames||[],e.push(t(r.source).source.replace(l,c))):e.push(t.escape(r));return t(e.join("|"),i)},t.version="2.0.0",r.exec=function(t){var r,f,e,o,u;if(this.global||(o=this.lastIndex),r=i.exec.apply(this,arguments),r){if(!ft&&r.length>1&&a(r,"")>-1&&(e=new RegExp(this.source,i.replace.call(g(this),"g","")),i.replace.call(String(t).slice(r.index),e,function(){for(var t=1;t<arguments.length-2;++t)arguments[t]===n&&(r[t]=n)})),this.xregexp&&this.xregexp.captureNames)for(u=1;u<r.length;++u)f=this.xregexp.captureNames[u-1],f&&(r[f]=r[u]);this.global&&!r[0].length&&this.lastIndex>r.index&&(this.lastIndex=r.index)}return this.global||(this.lastIndex=o),r},r.test=function(n){return!!r.exec.call(this,n)},r.match=function(n){if(t.isRegExp(n)){if(n.global){var u=i.match.apply(this,arguments);return n.lastIndex=0,u}}else n=new RegExp(n);return r.exec.call(n,this)},r.replace=function(n,r){var e=t.isRegExp(n),u,f,h,o;return e?(n.xregexp&&(u=n.xregexp.captureNames),n.global||(o=n.lastIndex)):n+="",s(r,"function")?f=i.replace.call(String(this),n,function(){var t=arguments,i;if(u)for(t[0]=new String(t[0]),i=0;i<u.length;++i)u[i]&&(t[0][u[i]]=t[i+1]);return e&&n.global&&(n.lastIndex=t[t.length-2]+t[0].length),r.apply(null,t)}):(h=String(this),f=i.replace.call(h,n,function(){var n=arguments;return i.replace.call(String(r),et,function(t,i,r){var f;if(i){if(f=+i,f<=n.length-3)return n[f]||"";if(f=u?a(u,i):-1,f<0)throw new SyntaxError("backreference to undefined group "+t);return n[f+1]||""}if(r==="$")return"$";if(r==="&"||+r==0)return n[0];if(r==="`")return n[n.length-1].slice(0,n[n.length-2]);if(r==="'")return n[n.length-1].slice(n[n.length-2]+n[0].length);if(r=+r,!isNaN(r)){if(r>n.length-3)throw new SyntaxError("backreference to undefined group "+t);return n[r]||""}throw new SyntaxError("invalid token "+t);})})),e&&(n.lastIndex=n.global?0:o),f},r.split=function(r,u){if(!t.isRegExp(r))return i.split.apply(this,arguments);var e=String(this),h=r.lastIndex,f=[],o=0,s;return u=(u===n?-1:u)>>>0,t.forEach(e,r,function(n){n.index+n[0].length>o&&(f.push(e.slice(o,n.index)),n.length>1&&n.index<e.length&&Array.prototype.push.apply(f,n.slice(1)),s=n[0].length,o=n.index+s)}),o===e.length?(!i.test.call(r,"")||s)&&f.push(""):f.push(e.slice(o)),r.lastIndex=h,f.length>u?f.slice(0,u):f},u=c.on,u(/\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\dA-Fa-f]{4})|x(?![\dA-Fa-f]{2}))/,function(n,t){if(n[1]==="B"&&t===e)return n[0];throw new SyntaxError("invalid escape "+n[0]);},{scope:"all"}),u(/\[(\^?)]/,function(n){return n[1]?"[\\s\\S]":"\\b\\B"}),u(/(?:\(\?#[^)]*\))+/,function(n){return i.test.call(nt,n.input.slice(n.index+n[0].length))?"":"(?:)"}),u(/\\k<([\w$]+)>/,function(n){var t=isNaN(n[1])?a(this.captureNames,n[1])+1:+n[1],i=n.index+n[0].length;if(!t||t>this.captureNames.length)throw new SyntaxError("backreference to undefined group "+n[0]);return"\\"+t+(i===n.input.length||isNaN(n.input.charAt(i))?"":"(?:)")}),u(/(?:\s+|#.*)+/,function(n){return i.test.call(nt,n.input.slice(n.index+n[0].length))?"":"(?:)"},{trigger:function(){return this.hasFlag("x")},customFlags:"x"}),u(/\./,function(){return"[\\s\\S]"},{trigger:function(){return this.hasFlag("s")},customFlags:"s"}),u(/\(\?P?<([\w$]+)>/,function(n){if(!isNaN(n[1]))throw new SyntaxError("can't use integer as capture name "+n[0]);return this.captureNames.push(n[1]),this.hasNamedCapture=!0,"("}),u(/\\(\d+)/,function(n,t){if(!(t===e&&/^[1-9]/.test(n[1])&&+n[1]<=this.captureNames.length)&&n[1]!=="0")throw new SyntaxError("can't use octal escape or backreference to undefined group "+n[0]);return n[0]},{scope:"all"}),u(/\((?!\?)/,function(){return this.hasFlag("n")?"(?:":(this.captureNames.push(null),"(")},{customFlags:"n"}),typeof exports!="undefined"&&(exports.XRegExp=t),t}(); -//XRegExp Unicode Base 1.0.0 -(function(n){"use strict";function i(n){return n.replace(/[- _]+/g,"").toLowerCase()}function s(n){return n.replace(/\w{4}/g,"\\u$&")}function u(n){while(n.length<4)n="0"+n;return n}function f(n){return parseInt(n,16)}function r(n){return parseInt(n,10).toString(16)}function o(t){var e=[],i=-1,o;return n.forEach(t,/\\u(\w{4})(?:-\\u(\w{4}))?/,function(n){o=f(n[1]),o>i+1&&(e.push("\\u"+u(r(i+1))),o>i+2&&e.push("-\\u"+u(r(o-1)))),i=f(n[2]||n[1])}),i<65535&&(e.push("\\u"+u(r(i+1))),i<65534&&e.push("-\\uFFFF")),e.join("")}function e(n){return t["^"+n]||(t["^"+n]=o(t[n]))}var t={};n.install("extensibility"),n.addUnicodePackage=function(r,u){var f;if(!n.isInstalled("extensibility"))throw new Error("extensibility must be installed before adding Unicode packages");if(r)for(f in r)r.hasOwnProperty(f)&&(t[i(f)]=s(r[f]));if(u)for(f in u)u.hasOwnProperty(f)&&(t[i(u[f])]=t[i(f)])},n.addUnicodePackage({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05270531-055605590561-058705D0-05EA05F0-05F20620-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280840-085808A008A2-08AC0904-0939093D09500958-09610971-09770979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10CF10CF20D05-0D0C0D0E-0D100D12-0D3A0D3D0D4E0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC-0EDF0F000F40-0F470F49-0F6C0F88-0F8C1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510C710CD10D0-10FA10FC-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1BBA-1BE51C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11CF51CF61D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209C21022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2CF22CF32D00-2D252D272D2D2D30-2D672D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31BA31F0-31FF3400-4DB54E00-9FCCA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78B-A78EA790-A793A7A0-A7AAA7F8-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDAAE0-AAEAAAF2-AAF4AB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2EABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC"},{L:"Letter"}),n.addToken(/\\([pP]){(\^?)([^}]*)}/,function(n,r){var f=n[1]==="P"||n[2]?"^":"",u=i(n[3]);if(n[1]==="P"&&n[2])throw new SyntaxError("invalid double negation \\P{^");if(!t.hasOwnProperty(u))throw new SyntaxError("invalid or unknown Unicode property "+n[0]);return r==="class"?f?e(u):t[u]:"["+f+t[u]+"]"},{scope:"all"})})(XRegExp); -//XRegExp Unicode Categories 1.2.0 -(function(n){"use strict";if(!n.addUnicodePackage)throw new ReferenceError("Unicode Base must be loaded before Unicode Categories");n.install("extensibility"),n.addUnicodePackage({Ll:"0061-007A00B500DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F05210523052505270561-05871D00-1D2B1D6B-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7B2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2CF32D00-2D252D272D2DA641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA661A663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CA78EA791A793A7A1A7A3A7A5A7A7A7A9A7FAFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E05200522052405260531-055610A0-10C510C710CD1E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CED2CF2A640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA660A662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BA78DA790A792A7A0A7A2A7A4A7A6A7A8A7AAFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D6A1D781D9B-1DBF2071207F2090-209C2C7C2C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A7F8A7F9A9CFAA70AADDAAF3AAF4FF70FF9EFF9F",Lo:"00AA00BA01BB01C0-01C3029405D0-05EA05F0-05F20620-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150840-085808A008A2-08AC0904-0939093D09500958-09610972-09770979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10CF10CF20D05-0D0C0D0E-0D100D12-0D3A0D3D0D4E0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC-0EDF0F000F40-0F470F49-0F6C0F88-0F8C1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA10FD-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1BBA-1BE51C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF11CF51CF62135-21382D30-2D672D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31BA31F0-31FF3400-4DB54E00-9FCCA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCAAE0-AAEAAAF2AB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2EABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065F067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0859-085B08E4-08FE0900-0903093A-093C093E-094F0951-0957096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F8D-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135D-135F1712-17141732-1734175217531772177317B4-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAD1BE6-1BF31C24-1C371CD0-1CD21CD4-1CE81CED1CF2-1CF41DC0-1DE61DFC-1DFF20D0-20F02CEF-2CF12D7F2DE0-2DFF302A-302F3099309AA66F-A672A674-A67DA69FA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1AAEB-AAEFAAF5AAF6ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065F067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0859-085B08E4-08FE0900-0902093A093C0941-0948094D0951-095709620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F8D-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135D-135F1712-17141732-1734175217531772177317B417B517B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91BAB1BE61BE81BE91BED1BEF-1BF11C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1CF41DC0-1DE61DFC-1DFF20D0-20DC20E120E5-20F02CEF-2CF12D7F2DE0-2DFF302A-302D3099309AA66FA674-A67DA69FA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1AAECAAEDAAF6ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093B093E-09400949-094C094E094F0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1BAC1BAD1BE71BEA-1BEC1BEE1BF21BF31C24-1C2B1C341C351CE11CF21CF3302E302FA823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BAAEBAAEEAAEFAAF5ABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048920DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0B72-0B770BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293248-324F3251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19D91A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90B72-0B770BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F919DA20702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293248-324F3251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100A700AB00B600B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E085E0964096509700AF00DF40E4F0E5A0E5B0F04-0F120F140F3A-0F3D0F850FD0-0FD40FD90FDA104A-104F10FB1360-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A194419451A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601BFC-1BFF1C3B-1C3F1C7E1C7F1CC0-1CC71CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2D702E00-2E2E2E30-2E3B3001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFAAF0AAF1ABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A2E3A2E3B301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100A700B600B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E085E0964096509700AF00DF40E4F0E5A0E5B0F04-0F120F140F850FD0-0FD40FD90FDA104A-104F10FB1360-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A194419451A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601BFC-1BFF1C3B-1C3F1C7E1C7F1CC0-1CC71CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2D702E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E30-2E393001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFAAF0AAF1ABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A600A800A900AC00AE-00B100B400B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F60482058F0606-0608060B060E060F06DE06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0D790E3F0F01-0F030F130F15-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F1390-139917DB194019DE-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B9210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23F32400-24262440-244A249C-24E92500-26FF2701-27672794-27C427C7-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-324732503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FBB2-FBC1FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C21182140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5058F060B09F209F309FB0AF10BF90E3F17DB20A0-20B9A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFBB2-FBC1FF3EFF40FFE3",So:"00A600A900AE00B00482060E060F06DE06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0D790F01-0F030F130F15-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F1390-1399194019DE-19FF1B61-1B6A1B74-1B7C210021012103-210621082109211421162117211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23F32400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26FF2701-27672794-27BF2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-324732503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20528-05300557055805600588058B-058E059005C8-05CF05EB-05EF05F5-0605061C061D06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F085C085D085F-089F08A108AD-08E308FF097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B78-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D3B0D3C0D450D490D4F-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EE0-0EFF0F480F6D-0F700F980FBD0FCD0FDB-0FFF10C610C8-10CC10CE10CF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B135C137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BF4-1BFB1C38-1C3A1C4A-1C4C1C80-1CBF1CC8-1CCF1CF7-1CFF1DE7-1DFB1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F209D-209F20BA-20CF20F1-20FF218A-218F23F4-23FF2427-243F244B-245F27002B4D-2B4F2B5A-2BFF2C2F2C5F2CF4-2CF82D262D28-2D2C2D2E2D2F2D68-2D6E2D71-2D7E2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E3C-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31BB-31BF31E4-31EF321F32FF4DB6-4DBF9FCD-9FFFA48D-A48FA4C7-A4CFA62C-A63FA698-A69EA6F8-A6FFA78FA794-A79FA7AB-A7F7A82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAF7-AB00AB07AB08AB0FAB10AB17-AB1FAB27AB2F-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBC2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060406DD070F200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20528-05300557055805600588058B-058E059005C8-05CF05EB-05EF05F5-05FF0605061C061D070E074B074C07B2-07BF07FB-07FF082E082F083F085C085D085F-089F08A108AD-08E308FF097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B78-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D3B0D3C0D450D490D4F-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EE0-0EFF0F480F6D-0F700F980FBD0FCD0FDB-0FFF10C610C8-10CC10CE10CF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B135C137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BF4-1BFB1C38-1C3A1C4A-1C4C1C80-1CBF1CC8-1CCF1CF7-1CFF1DE7-1DFB1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F209D-209F20BA-20CF20F1-20FF218A-218F23F4-23FF2427-243F244B-245F27002B4D-2B4F2B5A-2BFF2C2F2C5F2CF4-2CF82D262D28-2D2C2D2E2D2F2D68-2D6E2D71-2D7E2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E3C-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31BB-31BF31E4-31EF321F32FF4DB6-4DBF9FCD-9FFFA48D-A48FA4C7-A4CFA62C-A63FA698-A69EA6F8-A6FFA78FA794-A79FA7AB-A7F7A82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAF7-AB00AB07AB08AB0FAB10AB17-AB1FAB27AB2F-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBC2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"},{Ll:"Lowercase_Letter",Lu:"Uppercase_Letter",Lt:"Titlecase_Letter",Lm:"Modifier_Letter",Lo:"Other_Letter",M:"Mark",Mn:"Nonspacing_Mark",Mc:"Spacing_Mark",Me:"Enclosing_Mark",N:"Number",Nd:"Decimal_Number",Nl:"Letter_Number",No:"Other_Number",P:"Punctuation",Pd:"Dash_Punctuation",Ps:"Open_Punctuation",Pe:"Close_Punctuation",Pi:"Initial_Punctuation",Pf:"Final_Punctuation",Pc:"Connector_Punctuation",Po:"Other_Punctuation",S:"Symbol",Sm:"Math_Symbol",Sc:"Currency_Symbol",Sk:"Modifier_Symbol",So:"Other_Symbol",Z:"Separator",Zs:"Space_Separator",Zl:"Line_Separator",Zp:"Paragraph_Separator",C:"Other",Cc:"Control",Cf:"Format",Co:"Private_Use",Cs:"Surrogate",Cn:"Unassigned"})})(XRegExp); -//XRegExp Unicode Scripts 1.2.0 -(function(n){"use strict";if(!n.addUnicodePackage)throw new ReferenceError("Unicode Base must be loaded before Unicode Scripts");n.install("extensibility"),n.addUnicodePackage({Arabic:"0600-06040606-060B060D-061A061E0620-063F0641-064A0656-065E066A-066F0671-06DC06DE-06FF0750-077F08A008A2-08AC08E4-08FEFB50-FBC1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFCFE70-FE74FE76-FEFC",Armenian:"0531-05560559-055F0561-0587058A058FFB13-FB17",Balinese:"1B00-1B4B1B50-1B7C",Bamum:"A6A0-A6F7",Batak:"1BC0-1BF31BFC-1BFF",Bengali:"0981-09830985-098C098F09900993-09A809AA-09B009B209B6-09B909BC-09C409C709C809CB-09CE09D709DC09DD09DF-09E309E6-09FB",Bopomofo:"02EA02EB3105-312D31A0-31BA",Braille:"2800-28FF",Buginese:"1A00-1A1B1A1E1A1F",Buhid:"1740-1753",Canadian_Aboriginal:"1400-167F18B0-18F5",Cham:"AA00-AA36AA40-AA4DAA50-AA59AA5C-AA5F",Cherokee:"13A0-13F4",Common:"0000-0040005B-0060007B-00A900AB-00B900BB-00BF00D700F702B9-02DF02E5-02E902EC-02FF0374037E038503870589060C061B061F06400660-066906DD096409650E3F0FD5-0FD810FB16EB-16ED173517361802180318051CD31CE11CE9-1CEC1CEE-1CF31CF51CF62000-200B200E-2064206A-20702074-207E2080-208E20A0-20B92100-21252127-2129212C-21312133-214D214F-215F21892190-23F32400-24262440-244A2460-26FF2701-27FF2900-2B4C2B50-2B592E00-2E3B2FF0-2FFB3000-300430063008-30203030-3037303C-303F309B309C30A030FB30FC3190-319F31C0-31E33220-325F327F-32CF3358-33FF4DC0-4DFFA700-A721A788-A78AA830-A839FD3EFD3FFDFDFE10-FE19FE30-FE52FE54-FE66FE68-FE6BFEFFFF01-FF20FF3B-FF40FF5B-FF65FF70FF9EFF9FFFE0-FFE6FFE8-FFEEFFF9-FFFD",Coptic:"03E2-03EF2C80-2CF32CF9-2CFF",Cyrillic:"0400-04840487-05271D2B1D782DE0-2DFFA640-A697A69F",Devanagari:"0900-09500953-09630966-09770979-097FA8E0-A8FB",Ethiopic:"1200-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A135D-137C1380-13992D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDEAB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2E",Georgian:"10A0-10C510C710CD10D0-10FA10FC-10FF2D00-2D252D272D2D",Glagolitic:"2C00-2C2E2C30-2C5E",Greek:"0370-03730375-0377037A-037D038403860388-038A038C038E-03A103A3-03E103F0-03FF1D26-1D2A1D5D-1D611D66-1D6A1DBF1F00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FC41FC6-1FD31FD6-1FDB1FDD-1FEF1FF2-1FF41FF6-1FFE2126",Gujarati:"0A81-0A830A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABC-0AC50AC7-0AC90ACB-0ACD0AD00AE0-0AE30AE6-0AF1",Gurmukhi:"0A01-0A030A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A3C0A3E-0A420A470A480A4B-0A4D0A510A59-0A5C0A5E0A66-0A75",Han:"2E80-2E992E9B-2EF32F00-2FD5300530073021-30293038-303B3400-4DB54E00-9FCCF900-FA6DFA70-FAD9",Hangul:"1100-11FF302E302F3131-318E3200-321E3260-327EA960-A97CAC00-D7A3D7B0-D7C6D7CB-D7FBFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Hanunoo:"1720-1734",Hebrew:"0591-05C705D0-05EA05F0-05F4FB1D-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FB4F",Hiragana:"3041-3096309D-309F",Inherited:"0300-036F04850486064B-0655065F0670095109521CD0-1CD21CD4-1CE01CE2-1CE81CED1CF41DC0-1DE61DFC-1DFF200C200D20D0-20F0302A-302D3099309AFE00-FE0FFE20-FE26",Javanese:"A980-A9CDA9CF-A9D9A9DEA9DF",Kannada:"0C820C830C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBC-0CC40CC6-0CC80CCA-0CCD0CD50CD60CDE0CE0-0CE30CE6-0CEF0CF10CF2",Katakana:"30A1-30FA30FD-30FF31F0-31FF32D0-32FE3300-3357FF66-FF6FFF71-FF9D",Kayah_Li:"A900-A92F",Khmer:"1780-17DD17E0-17E917F0-17F919E0-19FF",Lao:"0E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB90EBB-0EBD0EC0-0EC40EC60EC8-0ECD0ED0-0ED90EDC-0EDF",Latin:"0041-005A0061-007A00AA00BA00C0-00D600D8-00F600F8-02B802E0-02E41D00-1D251D2C-1D5C1D62-1D651D6B-1D771D79-1DBE1E00-1EFF2071207F2090-209C212A212B2132214E2160-21882C60-2C7FA722-A787A78B-A78EA790-A793A7A0-A7AAA7F8-A7FFFB00-FB06FF21-FF3AFF41-FF5A",Lepcha:"1C00-1C371C3B-1C491C4D-1C4F",Limbu:"1900-191C1920-192B1930-193B19401944-194F",Lisu:"A4D0-A4FF",Malayalam:"0D020D030D05-0D0C0D0E-0D100D12-0D3A0D3D-0D440D46-0D480D4A-0D4E0D570D60-0D630D66-0D750D79-0D7F",Mandaic:"0840-085B085E",Meetei_Mayek:"AAE0-AAF6ABC0-ABEDABF0-ABF9",Mongolian:"1800180118041806-180E1810-18191820-18771880-18AA",Myanmar:"1000-109FAA60-AA7B",New_Tai_Lue:"1980-19AB19B0-19C919D0-19DA19DE19DF",Nko:"07C0-07FA",Ogham:"1680-169C",Ol_Chiki:"1C50-1C7F",Oriya:"0B01-0B030B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3C-0B440B470B480B4B-0B4D0B560B570B5C0B5D0B5F-0B630B66-0B77",Phags_Pa:"A840-A877",Rejang:"A930-A953A95F",Runic:"16A0-16EA16EE-16F0",Samaritan:"0800-082D0830-083E",Saurashtra:"A880-A8C4A8CE-A8D9",Sinhala:"0D820D830D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60DCA0DCF-0DD40DD60DD8-0DDF0DF2-0DF4",Sundanese:"1B80-1BBF1CC0-1CC7",Syloti_Nagri:"A800-A82B",Syriac:"0700-070D070F-074A074D-074F",Tagalog:"1700-170C170E-1714",Tagbanwa:"1760-176C176E-177017721773",Tai_Le:"1950-196D1970-1974",Tai_Tham:"1A20-1A5E1A60-1A7C1A7F-1A891A90-1A991AA0-1AAD",Tai_Viet:"AA80-AAC2AADB-AADF",Tamil:"0B820B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BBE-0BC20BC6-0BC80BCA-0BCD0BD00BD70BE6-0BFA",Telugu:"0C01-0C030C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D-0C440C46-0C480C4A-0C4D0C550C560C580C590C60-0C630C66-0C6F0C78-0C7F",Thaana:"0780-07B1",Thai:"0E01-0E3A0E40-0E5B",Tibetan:"0F00-0F470F49-0F6C0F71-0F970F99-0FBC0FBE-0FCC0FCE-0FD40FD90FDA",Tifinagh:"2D30-2D672D6F2D702D7F",Vai:"A500-A62B",Yi:"A000-A48CA490-A4C6"})})(XRegExp); -//XRegExp Unicode Blocks 1.2.0 -(function(n){"use strict";if(!n.addUnicodePackage)throw new ReferenceError("Unicode Base must be loaded before Unicode Blocks");n.install("extensibility"),n.addUnicodePackage({InBasic_Latin:"0000-007F",InLatin_1_Supplement:"0080-00FF",InLatin_Extended_A:"0100-017F",InLatin_Extended_B:"0180-024F",InIPA_Extensions:"0250-02AF",InSpacing_Modifier_Letters:"02B0-02FF",InCombining_Diacritical_Marks:"0300-036F",InGreek_and_Coptic:"0370-03FF",InCyrillic:"0400-04FF",InCyrillic_Supplement:"0500-052F",InArmenian:"0530-058F",InHebrew:"0590-05FF",InArabic:"0600-06FF",InSyriac:"0700-074F",InArabic_Supplement:"0750-077F",InThaana:"0780-07BF",InNKo:"07C0-07FF",InSamaritan:"0800-083F",InMandaic:"0840-085F",InArabic_Extended_A:"08A0-08FF",InDevanagari:"0900-097F",InBengali:"0980-09FF",InGurmukhi:"0A00-0A7F",InGujarati:"0A80-0AFF",InOriya:"0B00-0B7F",InTamil:"0B80-0BFF",InTelugu:"0C00-0C7F",InKannada:"0C80-0CFF",InMalayalam:"0D00-0D7F",InSinhala:"0D80-0DFF",InThai:"0E00-0E7F",InLao:"0E80-0EFF",InTibetan:"0F00-0FFF",InMyanmar:"1000-109F",InGeorgian:"10A0-10FF",InHangul_Jamo:"1100-11FF",InEthiopic:"1200-137F",InEthiopic_Supplement:"1380-139F",InCherokee:"13A0-13FF",InUnified_Canadian_Aboriginal_Syllabics:"1400-167F",InOgham:"1680-169F",InRunic:"16A0-16FF",InTagalog:"1700-171F",InHanunoo:"1720-173F",InBuhid:"1740-175F",InTagbanwa:"1760-177F",InKhmer:"1780-17FF",InMongolian:"1800-18AF",InUnified_Canadian_Aboriginal_Syllabics_Extended:"18B0-18FF",InLimbu:"1900-194F",InTai_Le:"1950-197F",InNew_Tai_Lue:"1980-19DF",InKhmer_Symbols:"19E0-19FF",InBuginese:"1A00-1A1F",InTai_Tham:"1A20-1AAF",InBalinese:"1B00-1B7F",InSundanese:"1B80-1BBF",InBatak:"1BC0-1BFF",InLepcha:"1C00-1C4F",InOl_Chiki:"1C50-1C7F",InSundanese_Supplement:"1CC0-1CCF",InVedic_Extensions:"1CD0-1CFF",InPhonetic_Extensions:"1D00-1D7F",InPhonetic_Extensions_Supplement:"1D80-1DBF",InCombining_Diacritical_Marks_Supplement:"1DC0-1DFF",InLatin_Extended_Additional:"1E00-1EFF",InGreek_Extended:"1F00-1FFF",InGeneral_Punctuation:"2000-206F",InSuperscripts_and_Subscripts:"2070-209F",InCurrency_Symbols:"20A0-20CF",InCombining_Diacritical_Marks_for_Symbols:"20D0-20FF",InLetterlike_Symbols:"2100-214F",InNumber_Forms:"2150-218F",InArrows:"2190-21FF",InMathematical_Operators:"2200-22FF",InMiscellaneous_Technical:"2300-23FF",InControl_Pictures:"2400-243F",InOptical_Character_Recognition:"2440-245F",InEnclosed_Alphanumerics:"2460-24FF",InBox_Drawing:"2500-257F",InBlock_Elements:"2580-259F",InGeometric_Shapes:"25A0-25FF",InMiscellaneous_Symbols:"2600-26FF",InDingbats:"2700-27BF",InMiscellaneous_Mathematical_Symbols_A:"27C0-27EF",InSupplemental_Arrows_A:"27F0-27FF",InBraille_Patterns:"2800-28FF",InSupplemental_Arrows_B:"2900-297F",InMiscellaneous_Mathematical_Symbols_B:"2980-29FF",InSupplemental_Mathematical_Operators:"2A00-2AFF",InMiscellaneous_Symbols_and_Arrows:"2B00-2BFF",InGlagolitic:"2C00-2C5F",InLatin_Extended_C:"2C60-2C7F",InCoptic:"2C80-2CFF",InGeorgian_Supplement:"2D00-2D2F",InTifinagh:"2D30-2D7F",InEthiopic_Extended:"2D80-2DDF",InCyrillic_Extended_A:"2DE0-2DFF",InSupplemental_Punctuation:"2E00-2E7F",InCJK_Radicals_Supplement:"2E80-2EFF",InKangxi_Radicals:"2F00-2FDF",InIdeographic_Description_Characters:"2FF0-2FFF",InCJK_Symbols_and_Punctuation:"3000-303F",InHiragana:"3040-309F",InKatakana:"30A0-30FF",InBopomofo:"3100-312F",InHangul_Compatibility_Jamo:"3130-318F",InKanbun:"3190-319F",InBopomofo_Extended:"31A0-31BF",InCJK_Strokes:"31C0-31EF",InKatakana_Phonetic_Extensions:"31F0-31FF",InEnclosed_CJK_Letters_and_Months:"3200-32FF",InCJK_Compatibility:"3300-33FF",InCJK_Unified_Ideographs_Extension_A:"3400-4DBF",InYijing_Hexagram_Symbols:"4DC0-4DFF",InCJK_Unified_Ideographs:"4E00-9FFF",InYi_Syllables:"A000-A48F",InYi_Radicals:"A490-A4CF",InLisu:"A4D0-A4FF",InVai:"A500-A63F",InCyrillic_Extended_B:"A640-A69F",InBamum:"A6A0-A6FF",InModifier_Tone_Letters:"A700-A71F",InLatin_Extended_D:"A720-A7FF",InSyloti_Nagri:"A800-A82F",InCommon_Indic_Number_Forms:"A830-A83F",InPhags_pa:"A840-A87F",InSaurashtra:"A880-A8DF",InDevanagari_Extended:"A8E0-A8FF",InKayah_Li:"A900-A92F",InRejang:"A930-A95F",InHangul_Jamo_Extended_A:"A960-A97F",InJavanese:"A980-A9DF",InCham:"AA00-AA5F",InMyanmar_Extended_A:"AA60-AA7F",InTai_Viet:"AA80-AADF",InMeetei_Mayek_Extensions:"AAE0-AAFF",InEthiopic_Extended_A:"AB00-AB2F",InMeetei_Mayek:"ABC0-ABFF",InHangul_Syllables:"AC00-D7AF",InHangul_Jamo_Extended_B:"D7B0-D7FF",InHigh_Surrogates:"D800-DB7F",InHigh_Private_Use_Surrogates:"DB80-DBFF",InLow_Surrogates:"DC00-DFFF",InPrivate_Use_Area:"E000-F8FF",InCJK_Compatibility_Ideographs:"F900-FAFF",InAlphabetic_Presentation_Forms:"FB00-FB4F",InArabic_Presentation_Forms_A:"FB50-FDFF",InVariation_Selectors:"FE00-FE0F",InVertical_Forms:"FE10-FE1F",InCombining_Half_Marks:"FE20-FE2F",InCJK_Compatibility_Forms:"FE30-FE4F",InSmall_Form_Variants:"FE50-FE6F",InArabic_Presentation_Forms_B:"FE70-FEFF",InHalfwidth_and_Fullwidth_Forms:"FF00-FFEF",InSpecials:"FFF0-FFFF"})})(XRegExp); -//XRegExp Unicode Properties 1.0.0 -(function(n){"use strict";if(!n.addUnicodePackage)throw new ReferenceError("Unicode Base must be loaded before Unicode Properties");n.install("extensibility"),n.addUnicodePackage({Alphabetic:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE03450370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05270531-055605590561-058705B0-05BD05BF05C105C205C405C505C705D0-05EA05F0-05F20610-061A0620-06570659-065F066E-06D306D5-06DC06E1-06E806ED-06EF06FA-06FC06FF0710-073F074D-07B107CA-07EA07F407F507FA0800-0817081A-082C0840-085808A008A2-08AC08E4-08E908F0-08FE0900-093B093D-094C094E-09500955-09630971-09770979-097F0981-09830985-098C098F09900993-09A809AA-09B009B209B6-09B909BD-09C409C709C809CB09CC09CE09D709DC09DD09DF-09E309F009F10A01-0A030A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A3E-0A420A470A480A4B0A4C0A510A59-0A5C0A5E0A70-0A750A81-0A830A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD-0AC50AC7-0AC90ACB0ACC0AD00AE0-0AE30B01-0B030B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D-0B440B470B480B4B0B4C0B560B570B5C0B5D0B5F-0B630B710B820B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BBE-0BC20BC6-0BC80BCA-0BCC0BD00BD70C01-0C030C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D-0C440C46-0C480C4A-0C4C0C550C560C580C590C60-0C630C820C830C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD-0CC40CC6-0CC80CCA-0CCC0CD50CD60CDE0CE0-0CE30CF10CF20D020D030D05-0D0C0D0E-0D100D12-0D3A0D3D-0D440D46-0D480D4A-0D4C0D4E0D570D60-0D630D7A-0D7F0D820D830D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60DCF-0DD40DD60DD8-0DDF0DF20DF30E01-0E3A0E40-0E460E4D0E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB90EBB-0EBD0EC0-0EC40EC60ECD0EDC-0EDF0F000F40-0F470F49-0F6C0F71-0F810F88-0F970F99-0FBC1000-10361038103B-103F1050-10621065-1068106E-1086108E109C109D10A0-10C510C710CD10D0-10FA10FC-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A135F1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA16EE-16F01700-170C170E-17131720-17331740-17531760-176C176E-1770177217731780-17B317B6-17C817D717DC1820-18771880-18AA18B0-18F51900-191C1920-192B1930-19381950-196D1970-19741980-19AB19B0-19C91A00-1A1B1A20-1A5E1A61-1A741AA71B00-1B331B35-1B431B45-1B4B1B80-1BA91BAC-1BAF1BBA-1BE51BE7-1BF11C00-1C351C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF31CF51CF61D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209C21022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E2160-218824B6-24E92C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2CF22CF32D00-2D252D272D2D2D30-2D672D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2DE0-2DFF2E2F3005-30073021-30293031-30353038-303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31BA31F0-31FF3400-4DB54E00-9FCCA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A66EA674-A67BA67F-A697A69F-A6EFA717-A71FA722-A788A78B-A78EA790-A793A7A0-A7AAA7F8-A801A803-A805A807-A80AA80C-A827A840-A873A880-A8C3A8F2-A8F7A8FBA90A-A92AA930-A952A960-A97CA980-A9B2A9B4-A9BFA9CFAA00-AA36AA40-AA4DAA60-AA76AA7AAA80-AABEAAC0AAC2AADB-AADDAAE0-AAEFAAF2-AAF5AB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2EABC0-ABEAAC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1D-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Uppercase:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E05200522052405260531-055610A0-10C510C710CD1E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F21452160-216F218324B6-24CF2C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CED2CF2A640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA660A662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BA78DA790A792A7A0A7A2A7A4A7A6A7A8A7AAFF21-FF3A",Lowercase:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02B802C002C102E0-02E40345037103730377037A-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F05210523052505270561-05871D00-1DBF1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF72071207F2090-209C210A210E210F2113212F21342139213C213D2146-2149214E2170-217F218424D0-24E92C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7D2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2CF32D00-2D252D272D2DA641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA661A663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76F-A778A77AA77CA77FA781A783A785A787A78CA78EA791A793A7A1A7A3A7A5A7A7A7A9A7F8-A7FAFB00-FB06FB13-FB17FF41-FF5A",White_Space:"0009-000D0020008500A01680180E2000-200A20282029202F205F3000",Noncharacter_Code_Point:"FDD0-FDEFFFFEFFFF",Default_Ignorable_Code_Point:"00AD034F115F116017B417B5180B-180D200B-200F202A-202E2060-206F3164FE00-FE0FFEFFFFA0FFF0-FFF8",Any:"0000-FFFF",Ascii:"0000-007F",Assigned:"0000-0377037A-037E0384-038A038C038E-03A103A3-05270531-05560559-055F0561-05870589058A058F0591-05C705D0-05EA05F0-05F40600-06040606-061B061E-070D070F-074A074D-07B107C0-07FA0800-082D0830-083E0840-085B085E08A008A2-08AC08E4-08FE0900-09770979-097F0981-09830985-098C098F09900993-09A809AA-09B009B209B6-09B909BC-09C409C709C809CB-09CE09D709DC09DD09DF-09E309E6-09FB0A01-0A030A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A3C0A3E-0A420A470A480A4B-0A4D0A510A59-0A5C0A5E0A66-0A750A81-0A830A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABC-0AC50AC7-0AC90ACB-0ACD0AD00AE0-0AE30AE6-0AF10B01-0B030B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3C-0B440B470B480B4B-0B4D0B560B570B5C0B5D0B5F-0B630B66-0B770B820B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BBE-0BC20BC6-0BC80BCA-0BCD0BD00BD70BE6-0BFA0C01-0C030C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D-0C440C46-0C480C4A-0C4D0C550C560C580C590C60-0C630C66-0C6F0C78-0C7F0C820C830C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBC-0CC40CC6-0CC80CCA-0CCD0CD50CD60CDE0CE0-0CE30CE6-0CEF0CF10CF20D020D030D05-0D0C0D0E-0D100D12-0D3A0D3D-0D440D46-0D480D4A-0D4E0D570D60-0D630D66-0D750D79-0D7F0D820D830D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60DCA0DCF-0DD40DD60DD8-0DDF0DF2-0DF40E01-0E3A0E3F-0E5B0E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB90EBB-0EBD0EC0-0EC40EC60EC8-0ECD0ED0-0ED90EDC-0EDF0F00-0F470F49-0F6C0F71-0F970F99-0FBC0FBE-0FCC0FCE-0FDA1000-10C510C710CD10D0-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A135D-137C1380-139913A0-13F41400-169C16A0-16F01700-170C170E-17141720-17361740-17531760-176C176E-1770177217731780-17DD17E0-17E917F0-17F91800-180E1810-18191820-18771880-18AA18B0-18F51900-191C1920-192B1930-193B19401944-196D1970-19741980-19AB19B0-19C919D0-19DA19DE-1A1B1A1E-1A5E1A60-1A7C1A7F-1A891A90-1A991AA0-1AAD1B00-1B4B1B50-1B7C1B80-1BF31BFC-1C371C3B-1C491C4D-1C7F1CC0-1CC71CD0-1CF61D00-1DE61DFC-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FC41FC6-1FD31FD6-1FDB1FDD-1FEF1FF2-1FF41FF6-1FFE2000-2064206A-20712074-208E2090-209C20A0-20B920D0-20F02100-21892190-23F32400-24262440-244A2460-26FF2701-2B4C2B50-2B592C00-2C2E2C30-2C5E2C60-2CF32CF9-2D252D272D2D2D30-2D672D6F2D702D7F-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2DE0-2E3B2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB3000-303F3041-30963099-30FF3105-312D3131-318E3190-31BA31C0-31E331F0-321E3220-32FE3300-4DB54DC0-9FCCA000-A48CA490-A4C6A4D0-A62BA640-A697A69F-A6F7A700-A78EA790-A793A7A0-A7AAA7F8-A82BA830-A839A840-A877A880-A8C4A8CE-A8D9A8E0-A8FBA900-A953A95F-A97CA980-A9CDA9CF-A9D9A9DEA9DFAA00-AA36AA40-AA4DAA50-AA59AA5C-AA7BAA80-AAC2AADB-AAF6AB01-AB06AB09-AB0EAB11-AB16AB20-AB26AB28-AB2EABC0-ABEDABF0-ABF9AC00-D7A3D7B0-D7C6D7CB-D7FBD800-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1D-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBC1FBD3-FD3FFD50-FD8FFD92-FDC7FDF0-FDFDFE00-FE19FE20-FE26FE30-FE52FE54-FE66FE68-FE6BFE70-FE74FE76-FEFCFEFFFF01-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDCFFE0-FFE6FFE8-FFEEFFF9-FFFD"})})(XRegExp); -//XRegExp.matchRecursive 0.2.0 -(function(n){"use strict";function t(n,t,i,r){return{value:n,name:t,start:i,end:r}}n.matchRecursive=function(i,r,u,f,e){f=f||"",e=e||{};var g=f.indexOf("g")>-1,nt=f.indexOf("y")>-1,d=f.replace(/y/g,""),y=e.escapeChar,o=e.valueNames,v=[],b=0,h=0,s=0,c=0,p,w,l,a,k;if(r=n(r,d),u=n(u,d),y){if(y.length>1)throw new SyntaxError("can't use more than one escape character");y=n.escape(y),k=new RegExp("(?:"+y+"[\\S\\s]|(?:(?!"+n.union([r,u]).source+")[^"+y+"])+)+",f.replace(/[^im]+/g,""))}for(;;){if(y&&(s+=(n.exec(i,k,s,"sticky")||[""])[0].length),l=n.exec(i,r,s),a=n.exec(i,u,s),l&&a&&(l.index<=a.index?a=null:l=null),l||a)h=(l||a).index,s=h+(l||a)[0].length;else if(!b)break;if(nt&&!b&&h>c)break;if(l)b||(p=h,w=s),++b;else if(a&&b){if(!--b&&(o?(o[0]&&p>c&&v.push(t(o[0],i.slice(c,p),c,p)),o[1]&&v.push(t(o[1],i.slice(p,w),p,w)),o[2]&&v.push(t(o[2],i.slice(w,h),w,h)),o[3]&&v.push(t(o[3],i.slice(h,s),h,s))):v.push(i.slice(w,h)),c=s,!g))break}else throw new Error("string contains unbalanced delimiters");h===s&&++s}return g&&!nt&&o&&o[0]&&i.length>c&&v.push(t(o[0],i.slice(c),c,i.length)),v}})(XRegExp); -//XRegExp.build 0.1.0 -(function(n){"use strict";function u(n){var i=/^(?:\(\?:\))?\^/,t=/\$(?:\(\?:\))?$/;return t.test(n.replace(/\\[\s\S]/g,""))?n.replace(i,"").replace(t,""):n}function t(t){return n.isRegExp(t)?t.xregexp&&!t.xregexp.isNative?t:n(t.source):n(t)}var i=/(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*]/g,r=n.union([/\({{([\w$]+)}}\)|{{([\w$]+)}}/,i],"g");n.build=function(f,e,o){var w=/^\(\?([\w$]+)\)/.exec(f),l={},s=0,v,h=0,p=[0],y,a,c;w&&(o=o||"",w[1].replace(/./g,function(n){o+=o.indexOf(n)>-1?"":n}));for(c in e)e.hasOwnProperty(c)&&(a=t(e[c]),l[c]={pattern:u(a.source),names:a.xregexp.captureNames||[]});return f=t(f),y=f.xregexp.captureNames||[],f=f.source.replace(r,function(n,t,r,u,f){var o=t||r,e,c;if(o){if(!l.hasOwnProperty(o))throw new ReferenceError("undefined property "+n);return t?(e=y[h],p[++h]=++s,c="(?<"+(e||o)+">"):c="(?:",v=s,c+l[o].pattern.replace(i,function(n,t,i){if(t){if(e=l[o].names[s-v],++s,e)return"(?<"+e+">"}else if(i)return"\\"+(+i+v);return n})+")"}if(u){if(e=y[h],p[++h]=++s,e)return"(?<"+e+">"}else if(f)return"\\"+p[+f];return n}),n(f,o)}})(XRegExp); -//XRegExp Prototype Methods 1.0.0 -(function(n){"use strict";function t(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])}t(n.prototype,{apply:function(n,t){return this.test(t[0])},call:function(n,t){return this.test(t)},forEach:function(t,i,r){return n.forEach(t,this,i,r)},globalize:function(){return n.globalize(this)},xexec:function(t,i,r){return n.exec(t,this,i,r)},xtest:function(t,i,r){return n.test(t,this,i,r)}})})(XRegExp) diff --git a/static/flags/__.gif b/static/flags/__.gif deleted file mode 100644 index 30a5c9c73ae21be39f6b3b992e607a6297d672c5..0000000000000000000000000000000000000000 Binary files a/static/flags/__.gif and /dev/null differ diff --git a/static/flags/ad.gif b/static/flags/ad.gif deleted file mode 100644 index 830b29b046ff97a1833bd5714f28a01b965888d5..0000000000000000000000000000000000000000 Binary files a/static/flags/ad.gif and /dev/null differ diff --git a/static/flags/ae.gif b/static/flags/ae.gif deleted file mode 100644 index cecae61063ed3d2a0c7857b1fa961e619f542497..0000000000000000000000000000000000000000 Binary files a/static/flags/ae.gif and /dev/null differ diff --git a/static/flags/af.gif b/static/flags/af.gif deleted file mode 100644 index ab5467260442cff1ca31d8d9bcdd4ec45651ecbc..0000000000000000000000000000000000000000 Binary files a/static/flags/af.gif and /dev/null differ diff --git a/static/flags/ag.gif b/static/flags/ag.gif deleted file mode 100644 index e087805581f87d23a178155f371c775292bab422..0000000000000000000000000000000000000000 Binary files a/static/flags/ag.gif and /dev/null differ diff --git a/static/flags/ai.gif b/static/flags/ai.gif deleted file mode 100644 index 0929974aa8d05070a4642d66de30f7a5c80b4a82..0000000000000000000000000000000000000000 Binary files a/static/flags/ai.gif and /dev/null differ diff --git a/static/flags/al.gif b/static/flags/al.gif deleted file mode 100644 index 448e65cb8fe562335e0b96424f7868615b952ba8..0000000000000000000000000000000000000000 Binary files a/static/flags/al.gif and /dev/null differ diff --git a/static/flags/am.gif b/static/flags/am.gif deleted file mode 100644 index 8665fe45bb2ad2df0eb53fe420189584e35e8f0b..0000000000000000000000000000000000000000 Binary files a/static/flags/am.gif and /dev/null differ diff --git a/static/flags/ao.gif b/static/flags/ao.gif deleted file mode 100644 index 4a49238edd7a86e9bf85661b159394bccfeaf78c..0000000000000000000000000000000000000000 Binary files a/static/flags/ao.gif and /dev/null differ diff --git a/static/flags/aq.gif b/static/flags/aq.gif deleted file mode 100644 index 5e299d16a227b1d27454fd4576f98460eb8f480c..0000000000000000000000000000000000000000 Binary files a/static/flags/aq.gif and /dev/null differ diff --git a/static/flags/ar.gif b/static/flags/ar.gif deleted file mode 100644 index 56918bfc0181e8097ab0095ba5c37d83ed8b9f32..0000000000000000000000000000000000000000 Binary files a/static/flags/ar.gif and /dev/null differ diff --git a/static/flags/as.gif b/static/flags/as.gif deleted file mode 100644 index 9efdf37863f599ef4f49dc4efe003b551e998f47..0000000000000000000000000000000000000000 Binary files a/static/flags/as.gif and /dev/null differ diff --git a/static/flags/at.gif b/static/flags/at.gif deleted file mode 100644 index 0111bb5dca8197a067646690b683d26e99c73ee2..0000000000000000000000000000000000000000 Binary files a/static/flags/at.gif and /dev/null differ diff --git a/static/flags/au.gif b/static/flags/au.gif deleted file mode 100644 index 08945485bf4cff7b844e3c99098d9f47c873e7a4..0000000000000000000000000000000000000000 Binary files a/static/flags/au.gif and /dev/null differ diff --git a/static/flags/aw.gif b/static/flags/aw.gif deleted file mode 100644 index 54259c07bc573478b671e99863d64de776c8ce8a..0000000000000000000000000000000000000000 Binary files a/static/flags/aw.gif and /dev/null differ diff --git a/static/flags/ax.gif b/static/flags/ax.gif deleted file mode 100644 index ce20077d2cdb18fff01fdfa70ead9f3e1a3224d6..0000000000000000000000000000000000000000 Binary files a/static/flags/ax.gif and /dev/null differ diff --git a/static/flags/az.gif b/static/flags/az.gif deleted file mode 100644 index c03749189d41b21f8e776cbf47d0f4c945c9c67e..0000000000000000000000000000000000000000 Binary files a/static/flags/az.gif and /dev/null differ diff --git a/static/flags/ba.gif b/static/flags/ba.gif deleted file mode 100644 index e957194e6580d6c9e1e6abca3db04ac788a1e3ea..0000000000000000000000000000000000000000 Binary files a/static/flags/ba.gif and /dev/null differ diff --git a/static/flags/bb.gif b/static/flags/bb.gif deleted file mode 100644 index 7f3e77eda25e70ac55f6299b7b73f57a5892ab3c..0000000000000000000000000000000000000000 Binary files a/static/flags/bb.gif and /dev/null differ diff --git a/static/flags/bd.gif b/static/flags/bd.gif deleted file mode 100644 index c91a1f892dffd45f00b44c1180a45da886012707..0000000000000000000000000000000000000000 Binary files a/static/flags/bd.gif and /dev/null differ diff --git a/static/flags/be.gif b/static/flags/be.gif deleted file mode 100644 index a0dcccfd2f60660f045a2e818e5b52000f0b4134..0000000000000000000000000000000000000000 Binary files a/static/flags/be.gif and /dev/null differ diff --git a/static/flags/bf.gif b/static/flags/bf.gif deleted file mode 100644 index 323d3b716eb30a3acff632515361dcf4b0be9081..0000000000000000000000000000000000000000 Binary files a/static/flags/bf.gif and /dev/null differ diff --git a/static/flags/bg.gif b/static/flags/bg.gif deleted file mode 100644 index e87028bec8540afb0e3e040a7a13d4acea444b4a..0000000000000000000000000000000000000000 Binary files a/static/flags/bg.gif and /dev/null differ diff --git a/static/flags/bh.gif b/static/flags/bh.gif deleted file mode 100644 index 9ca2e37f5623b246e25ee95e5a0d8099afa25874..0000000000000000000000000000000000000000 Binary files a/static/flags/bh.gif and /dev/null differ diff --git a/static/flags/bi.gif b/static/flags/bi.gif deleted file mode 100644 index bb2596036fc979872bee5ca87f80ec767eba0199..0000000000000000000000000000000000000000 Binary files a/static/flags/bi.gif and /dev/null differ diff --git a/static/flags/bj.gif b/static/flags/bj.gif deleted file mode 100644 index f4d7fc35d17965d5a3d15725fc0950fb584b16b1..0000000000000000000000000000000000000000 Binary files a/static/flags/bj.gif and /dev/null differ diff --git a/static/flags/bl.gif b/static/flags/bl.gif deleted file mode 100644 index 0c21d69ab5528ba0c107445c4afeff3c61f7e447..0000000000000000000000000000000000000000 Binary files a/static/flags/bl.gif and /dev/null differ diff --git a/static/flags/bm.gif b/static/flags/bm.gif deleted file mode 100644 index bda7220758023bdb795801732c799c4d573ce770..0000000000000000000000000000000000000000 Binary files a/static/flags/bm.gif and /dev/null differ diff --git a/static/flags/bn.gif b/static/flags/bn.gif deleted file mode 100644 index 5714b4535b25964a6b2c949b3168560e6df56825..0000000000000000000000000000000000000000 Binary files a/static/flags/bn.gif and /dev/null differ diff --git a/static/flags/bo.gif b/static/flags/bo.gif deleted file mode 100644 index 4ada27cc58d88d9fdba00d4bbc68ffdec3195458..0000000000000000000000000000000000000000 Binary files a/static/flags/bo.gif and /dev/null differ diff --git a/static/flags/bq.gif b/static/flags/bq.gif deleted file mode 100644 index 5785c13371746313e2f7ee2e5a3b6daf9ea3e85a..0000000000000000000000000000000000000000 Binary files a/static/flags/bq.gif and /dev/null differ diff --git a/static/flags/br.gif b/static/flags/br.gif deleted file mode 100644 index 8541dd0226069f21bf6b8587de2ac6a594bb8086..0000000000000000000000000000000000000000 Binary files a/static/flags/br.gif and /dev/null differ diff --git a/static/flags/bs.gif b/static/flags/bs.gif deleted file mode 100644 index 6eadd88db87f50d76e47d23a51b759ff28fa69d9..0000000000000000000000000000000000000000 Binary files a/static/flags/bs.gif and /dev/null differ diff --git a/static/flags/bt.gif b/static/flags/bt.gif deleted file mode 100644 index 57dc21c6135b3a17e57f7694f223f46f2654944f..0000000000000000000000000000000000000000 Binary files a/static/flags/bt.gif and /dev/null differ diff --git a/static/flags/bv.gif b/static/flags/bv.gif deleted file mode 100644 index b1117a7bbc63d36f46816abd3ea7359953f64519..0000000000000000000000000000000000000000 Binary files a/static/flags/bv.gif and /dev/null differ diff --git a/static/flags/bw.gif b/static/flags/bw.gif deleted file mode 100644 index 3af6339f6cdd6b6de5c48596ea6ed0e69c3fe95e..0000000000000000000000000000000000000000 Binary files a/static/flags/bw.gif and /dev/null differ diff --git a/static/flags/by.gif b/static/flags/by.gif deleted file mode 100644 index 6b7d8394f5ab769212b12f937b187aefeeff026f..0000000000000000000000000000000000000000 Binary files a/static/flags/by.gif and /dev/null differ diff --git a/static/flags/bz.gif b/static/flags/bz.gif deleted file mode 100644 index 7b3fd388abacf217483f64316e207ebf481caf77..0000000000000000000000000000000000000000 Binary files a/static/flags/bz.gif and /dev/null differ diff --git a/static/flags/ca.gif b/static/flags/ca.gif deleted file mode 100644 index f7382a203a2dea9415041e939146c955f8cafa78..0000000000000000000000000000000000000000 Binary files a/static/flags/ca.gif and /dev/null differ diff --git a/static/flags/cc.gif b/static/flags/cc.gif deleted file mode 100644 index d602aac342bbf6acfca93b96d2a89685b68d56da..0000000000000000000000000000000000000000 Binary files a/static/flags/cc.gif and /dev/null differ diff --git a/static/flags/cd.gif b/static/flags/cd.gif deleted file mode 100644 index e786a5c133f2eed587d40ac9f9ef5015655cf9c5..0000000000000000000000000000000000000000 Binary files a/static/flags/cd.gif and /dev/null differ diff --git a/static/flags/cf.gif b/static/flags/cf.gif deleted file mode 100644 index acdd287c5a3e1d738695af8819cbfcf6479dcca5..0000000000000000000000000000000000000000 Binary files a/static/flags/cf.gif and /dev/null differ diff --git a/static/flags/cg.gif b/static/flags/cg.gif deleted file mode 100644 index e052941f24f0cb7b0970b9e2d5423916809d0556..0000000000000000000000000000000000000000 Binary files a/static/flags/cg.gif and /dev/null differ diff --git a/static/flags/ch.gif b/static/flags/ch.gif deleted file mode 100644 index 8d02693fa6b8be45f8a9d875fbff50a22bd54b4c..0000000000000000000000000000000000000000 Binary files a/static/flags/ch.gif and /dev/null differ diff --git a/static/flags/ci.gif b/static/flags/ci.gif deleted file mode 100644 index 86ae6b312347e972302317a6627803a3052b2100..0000000000000000000000000000000000000000 Binary files a/static/flags/ci.gif and /dev/null differ diff --git a/static/flags/ck.gif b/static/flags/ck.gif deleted file mode 100644 index 8310438fa7351bf316b0de35d937543c603df74f..0000000000000000000000000000000000000000 Binary files a/static/flags/ck.gif and /dev/null differ diff --git a/static/flags/cl.gif b/static/flags/cl.gif deleted file mode 100644 index 68dcdd5af7d1a237f19a9b8ecc4b8ffc148f01e9..0000000000000000000000000000000000000000 Binary files a/static/flags/cl.gif and /dev/null differ diff --git a/static/flags/cm.gif b/static/flags/cm.gif deleted file mode 100644 index 8d0ebadf840cbd8b1a5e57ba555062bcd55b683b..0000000000000000000000000000000000000000 Binary files a/static/flags/cm.gif and /dev/null differ diff --git a/static/flags/cn.gif b/static/flags/cn.gif deleted file mode 100644 index b0dc412ac4db4d7e69b4952ab7cd03b642d76a60..0000000000000000000000000000000000000000 Binary files a/static/flags/cn.gif and /dev/null differ diff --git a/static/flags/co.gif b/static/flags/co.gif deleted file mode 100644 index b608cd6ac2a2d46a37b9bd5c72ad8da7407b7d41..0000000000000000000000000000000000000000 Binary files a/static/flags/co.gif and /dev/null differ diff --git a/static/flags/cr.gif b/static/flags/cr.gif deleted file mode 100644 index 1bc86250c91a17c554e3c8e990a4b916865fa164..0000000000000000000000000000000000000000 Binary files a/static/flags/cr.gif and /dev/null differ diff --git a/static/flags/cu.gif b/static/flags/cu.gif deleted file mode 100644 index d514610c6fb766ec1424d1df34b54c7bfd5491d3..0000000000000000000000000000000000000000 Binary files a/static/flags/cu.gif and /dev/null differ diff --git a/static/flags/cv.gif b/static/flags/cv.gif deleted file mode 100644 index 280236392e8d8f08c8c25485478244a3cbe87a70..0000000000000000000000000000000000000000 Binary files a/static/flags/cv.gif and /dev/null differ diff --git a/static/flags/cw.gif b/static/flags/cw.gif deleted file mode 100644 index 596178868e9aa143fb5bd4632c1561af99713be4..0000000000000000000000000000000000000000 Binary files a/static/flags/cw.gif and /dev/null differ diff --git a/static/flags/cx.gif b/static/flags/cx.gif deleted file mode 100644 index 86ffb71e0ac020c3807efb87a85352cf74322c6e..0000000000000000000000000000000000000000 Binary files a/static/flags/cx.gif and /dev/null differ diff --git a/static/flags/cy.gif b/static/flags/cy.gif deleted file mode 100644 index 8fb2da54a4bb6461a0ef6f074b3fe8e0c177a0f2..0000000000000000000000000000000000000000 Binary files a/static/flags/cy.gif and /dev/null differ diff --git a/static/flags/cz.gif b/static/flags/cz.gif deleted file mode 100644 index 64348244a4427a148fc5e7ca97f631810ce8fe69..0000000000000000000000000000000000000000 Binary files a/static/flags/cz.gif and /dev/null differ diff --git a/static/flags/de.gif b/static/flags/de.gif deleted file mode 100644 index e5fdfaa913b1e7fe2ab6cd2865fd53d31b3624c0..0000000000000000000000000000000000000000 Binary files a/static/flags/de.gif and /dev/null differ diff --git a/static/flags/dj.gif b/static/flags/dj.gif deleted file mode 100644 index d9f121581c08617987b25ea1daa9d6349f27e02b..0000000000000000000000000000000000000000 Binary files a/static/flags/dj.gif and /dev/null differ diff --git a/static/flags/dk.gif b/static/flags/dk.gif deleted file mode 100644 index 39c87825320011aa0dd66a4b50705550cca180e0..0000000000000000000000000000000000000000 Binary files a/static/flags/dk.gif and /dev/null differ diff --git a/static/flags/dm.gif b/static/flags/dm.gif deleted file mode 100644 index 927bbe51d421e35afc0787b8a6f8c670030aeb98..0000000000000000000000000000000000000000 Binary files a/static/flags/dm.gif and /dev/null differ diff --git a/static/flags/do.gif b/static/flags/do.gif deleted file mode 100644 index 952af49ead40827b495a2031f0619368d8fb8c5d..0000000000000000000000000000000000000000 Binary files a/static/flags/do.gif and /dev/null differ diff --git a/static/flags/dz.gif b/static/flags/dz.gif deleted file mode 100644 index 71933a96c91d0b6ec4c2804119f0254a5d9521a7..0000000000000000000000000000000000000000 Binary files a/static/flags/dz.gif and /dev/null differ diff --git a/static/flags/ec.gif b/static/flags/ec.gif deleted file mode 100644 index fc3e29401e8845089f9f1d024689d0410f251481..0000000000000000000000000000000000000000 Binary files a/static/flags/ec.gif and /dev/null differ diff --git a/static/flags/ee.gif b/static/flags/ee.gif deleted file mode 100644 index da4bd2b17e48c378b56a45e3e7f4ab5144df2467..0000000000000000000000000000000000000000 Binary files a/static/flags/ee.gif and /dev/null differ diff --git a/static/flags/eg.gif b/static/flags/eg.gif deleted file mode 100644 index c5448c8235b92f75dbce6dd95c45699c4ff3e870..0000000000000000000000000000000000000000 Binary files a/static/flags/eg.gif and /dev/null differ diff --git a/static/flags/eh.gif b/static/flags/eh.gif deleted file mode 100644 index 7d2b276cc5385d1aee7d00f8e0ac4ed4bec350bb..0000000000000000000000000000000000000000 Binary files a/static/flags/eh.gif and /dev/null differ diff --git a/static/flags/er.gif b/static/flags/er.gif deleted file mode 100644 index 266097f15730bb5b1b557c73d855c6195b17dde2..0000000000000000000000000000000000000000 Binary files a/static/flags/er.gif and /dev/null differ diff --git a/static/flags/es.gif b/static/flags/es.gif deleted file mode 100644 index 9ef1912ad75fbd56e9e310a2e8cd49ee5ddee1ec..0000000000000000000000000000000000000000 Binary files a/static/flags/es.gif and /dev/null differ diff --git a/static/flags/et.gif b/static/flags/et.gif deleted file mode 100644 index 632a5fd8dd7dca7a4fe01aaea2291bd55e25ce65..0000000000000000000000000000000000000000 Binary files a/static/flags/et.gif and /dev/null differ diff --git a/static/flags/eu.gif b/static/flags/eu.gif deleted file mode 100644 index 2a4e71ad4243e78bdf11d5995a211e29cee052ec..0000000000000000000000000000000000000000 Binary files a/static/flags/eu.gif and /dev/null differ diff --git a/static/flags/fi.gif b/static/flags/fi.gif deleted file mode 100644 index 888caf5bf33e2e20d4c03bc2ebc205041f11619e..0000000000000000000000000000000000000000 Binary files a/static/flags/fi.gif and /dev/null differ diff --git a/static/flags/fj.gif b/static/flags/fj.gif deleted file mode 100644 index 531cdb97ec6df2ea0d9d45b5cb5c2436e4051c0e..0000000000000000000000000000000000000000 Binary files a/static/flags/fj.gif and /dev/null differ diff --git a/static/flags/fk.gif b/static/flags/fk.gif deleted file mode 100644 index 3720fc4a262b3a3997ab29b63d367a528449865d..0000000000000000000000000000000000000000 Binary files a/static/flags/fk.gif and /dev/null differ diff --git a/static/flags/fm.gif b/static/flags/fm.gif deleted file mode 100644 index 49e72c0552c5a426e6dae95391de24199cdb8df5..0000000000000000000000000000000000000000 Binary files a/static/flags/fm.gif and /dev/null differ diff --git a/static/flags/fo.gif b/static/flags/fo.gif deleted file mode 100644 index ddafd369f6b3c12ee323584d2376b254e2e64744..0000000000000000000000000000000000000000 Binary files a/static/flags/fo.gif and /dev/null differ diff --git a/static/flags/fr.gif b/static/flags/fr.gif deleted file mode 100644 index 0c21d69ab5528ba0c107445c4afeff3c61f7e447..0000000000000000000000000000000000000000 Binary files a/static/flags/fr.gif and /dev/null differ diff --git a/static/flags/ga.gif b/static/flags/ga.gif deleted file mode 100644 index 757c1e68500ea22a733073b8749b0e9b14a260eb..0000000000000000000000000000000000000000 Binary files a/static/flags/ga.gif and /dev/null differ diff --git a/static/flags/gb.gif b/static/flags/gb.gif deleted file mode 100644 index ccac6cc8605c3c43d82eabca459b7f2a9017b3ad..0000000000000000000000000000000000000000 Binary files a/static/flags/gb.gif and /dev/null differ diff --git a/static/flags/gd.gif b/static/flags/gd.gif deleted file mode 100644 index 1f0c15b1ba40ead4926068fa9cb270e0709621dc..0000000000000000000000000000000000000000 Binary files a/static/flags/gd.gif and /dev/null differ diff --git a/static/flags/ge.gif b/static/flags/ge.gif deleted file mode 100644 index aa80145f17bdc990fcd09161587893dae2b5af98..0000000000000000000000000000000000000000 Binary files a/static/flags/ge.gif and /dev/null differ diff --git a/static/flags/gf.gif b/static/flags/gf.gif deleted file mode 100644 index 0c21d69ab5528ba0c107445c4afeff3c61f7e447..0000000000000000000000000000000000000000 Binary files a/static/flags/gf.gif and /dev/null differ diff --git a/static/flags/gg.gif b/static/flags/gg.gif deleted file mode 100644 index cf4b31c301db50197b5afa3b6ff001e482b041df..0000000000000000000000000000000000000000 Binary files a/static/flags/gg.gif and /dev/null differ diff --git a/static/flags/gh.gif b/static/flags/gh.gif deleted file mode 100644 index d4da8e89de8f66ae13b98ad8fa1f0b49c643e7a1..0000000000000000000000000000000000000000 Binary files a/static/flags/gh.gif and /dev/null differ diff --git a/static/flags/gi.gif b/static/flags/gi.gif deleted file mode 100644 index 9f90768f840302f4fb6cddf1335b31911896ca9b..0000000000000000000000000000000000000000 Binary files a/static/flags/gi.gif and /dev/null differ diff --git a/static/flags/gl.gif b/static/flags/gl.gif deleted file mode 100644 index e9d93876d9354ca7c230c6167b280ec40ebd1fb7..0000000000000000000000000000000000000000 Binary files a/static/flags/gl.gif and /dev/null differ diff --git a/static/flags/gm.gif b/static/flags/gm.gif deleted file mode 100644 index 03ce123673121613044f8d8db42d2e138c4bc510..0000000000000000000000000000000000000000 Binary files a/static/flags/gm.gif and /dev/null differ diff --git a/static/flags/gn.gif b/static/flags/gn.gif deleted file mode 100644 index a27b756201923acb54f883e878f86de142d3b0fb..0000000000000000000000000000000000000000 Binary files a/static/flags/gn.gif and /dev/null differ diff --git a/static/flags/gp.gif b/static/flags/gp.gif deleted file mode 100644 index b22719920b0bf07be07fd8f43822e0f6f5d0e854..0000000000000000000000000000000000000000 Binary files a/static/flags/gp.gif and /dev/null differ diff --git a/static/flags/gq.gif b/static/flags/gq.gif deleted file mode 100644 index 7525731e397b4de5fa1a84379cf9f9d2477510bb..0000000000000000000000000000000000000000 Binary files a/static/flags/gq.gif and /dev/null differ diff --git a/static/flags/gr.gif b/static/flags/gr.gif deleted file mode 100644 index 7557345e4b4e2f1aaee6dd1865a6a8cd766e53f5..0000000000000000000000000000000000000000 Binary files a/static/flags/gr.gif and /dev/null differ diff --git a/static/flags/gs.gif b/static/flags/gs.gif deleted file mode 100644 index 83234c4a87eb607d9cd4fc6ea9f4d70fe57fbc70..0000000000000000000000000000000000000000 Binary files a/static/flags/gs.gif and /dev/null differ diff --git a/static/flags/gt.gif b/static/flags/gt.gif deleted file mode 100644 index 066410d7241ef1038afb9042c50447b31401cc69..0000000000000000000000000000000000000000 Binary files a/static/flags/gt.gif and /dev/null differ diff --git a/static/flags/gu.gif b/static/flags/gu.gif deleted file mode 100644 index 313c2604aa1983bd948d6d9c6e9077732356ad1e..0000000000000000000000000000000000000000 Binary files a/static/flags/gu.gif and /dev/null differ diff --git a/static/flags/gw.gif b/static/flags/gw.gif deleted file mode 100644 index 8ce3001ee972ea51da12cdbdbd0a8939d1fc384b..0000000000000000000000000000000000000000 Binary files a/static/flags/gw.gif and /dev/null differ diff --git a/static/flags/gy.gif b/static/flags/gy.gif deleted file mode 100644 index 9f943e875458a0fd47d2f3ef2f2aeff91e42d35a..0000000000000000000000000000000000000000 Binary files a/static/flags/gy.gif and /dev/null differ diff --git a/static/flags/hk.gif b/static/flags/hk.gif deleted file mode 100644 index 0c645609301cccc88275f99678981e02615e6021..0000000000000000000000000000000000000000 Binary files a/static/flags/hk.gif and /dev/null differ diff --git a/static/flags/hm.gif b/static/flags/hm.gif deleted file mode 100644 index 08945485bf4cff7b844e3c99098d9f47c873e7a4..0000000000000000000000000000000000000000 Binary files a/static/flags/hm.gif and /dev/null differ diff --git a/static/flags/hn.gif b/static/flags/hn.gif deleted file mode 100644 index c2c279795e40ebd01b7b064980d43bc715bf83cf..0000000000000000000000000000000000000000 Binary files a/static/flags/hn.gif and /dev/null differ diff --git a/static/flags/hr.gif b/static/flags/hr.gif deleted file mode 100644 index 249d624aa714ff8586ffbfab97ec0b465bf7ae28..0000000000000000000000000000000000000000 Binary files a/static/flags/hr.gif and /dev/null differ diff --git a/static/flags/ht.gif b/static/flags/ht.gif deleted file mode 100644 index 32917747a3dedc6913bde4bf4dc4ecff615e5996..0000000000000000000000000000000000000000 Binary files a/static/flags/ht.gif and /dev/null differ diff --git a/static/flags/hu.gif b/static/flags/hu.gif deleted file mode 100644 index b7443f4f5a9145c46c5e9e15fc84df52527177e6..0000000000000000000000000000000000000000 Binary files a/static/flags/hu.gif and /dev/null differ diff --git a/static/flags/id.gif b/static/flags/id.gif deleted file mode 100644 index b8aa2c85a9b797b01e21f898032668ef26d8bd07..0000000000000000000000000000000000000000 Binary files a/static/flags/id.gif and /dev/null differ diff --git a/static/flags/ie.gif b/static/flags/ie.gif deleted file mode 100644 index 4f0937cbaf9c8f618761a72d33f9a4744b8b28df..0000000000000000000000000000000000000000 Binary files a/static/flags/ie.gif and /dev/null differ diff --git a/static/flags/il.gif b/static/flags/il.gif deleted file mode 100644 index d774c134591f8aea5d081262141a8eafc946c2a2..0000000000000000000000000000000000000000 Binary files a/static/flags/il.gif and /dev/null differ diff --git a/static/flags/im.gif b/static/flags/im.gif deleted file mode 100644 index cf719f7888a8e1c9603bda11f21f1b34ddd5d614..0000000000000000000000000000000000000000 Binary files a/static/flags/im.gif and /dev/null differ diff --git a/static/flags/in.gif b/static/flags/in.gif deleted file mode 100644 index 629f259f5d07bcaf93f5677773e693823572f3b1..0000000000000000000000000000000000000000 Binary files a/static/flags/in.gif and /dev/null differ diff --git a/static/flags/io.gif b/static/flags/io.gif deleted file mode 100644 index 1b7f551d95106af9891f335916faaa5045c9cbec..0000000000000000000000000000000000000000 Binary files a/static/flags/io.gif and /dev/null differ diff --git a/static/flags/iq.gif b/static/flags/iq.gif deleted file mode 100644 index 580c8d52097478a40bbf0dda6748a52152808e11..0000000000000000000000000000000000000000 Binary files a/static/flags/iq.gif and /dev/null differ diff --git a/static/flags/ir.gif b/static/flags/ir.gif deleted file mode 100644 index 089c0748d50be6a624e5d54137fbdfec9cf13ae3..0000000000000000000000000000000000000000 Binary files a/static/flags/ir.gif and /dev/null differ diff --git a/static/flags/is.gif b/static/flags/is.gif deleted file mode 100644 index 046c1dcf7da3142836eab43e4163b08805b8bd31..0000000000000000000000000000000000000000 Binary files a/static/flags/is.gif and /dev/null differ diff --git a/static/flags/it.gif b/static/flags/it.gif deleted file mode 100644 index cb6ece3aa21b103013b7bc09442a00019dfd49de..0000000000000000000000000000000000000000 Binary files a/static/flags/it.gif and /dev/null differ diff --git a/static/flags/je.gif b/static/flags/je.gif deleted file mode 100644 index e123ca5323c618495f3238377e8de1cb210d0f13..0000000000000000000000000000000000000000 Binary files a/static/flags/je.gif and /dev/null differ diff --git a/static/flags/jm.gif b/static/flags/jm.gif deleted file mode 100644 index 9b35681d2ffbdda9a36f1505ade3236466e11636..0000000000000000000000000000000000000000 Binary files a/static/flags/jm.gif and /dev/null differ diff --git a/static/flags/jo.gif b/static/flags/jo.gif deleted file mode 100644 index 6dbba6a32ea84d2b73fed9a9fa879f5c1b8c5a2d..0000000000000000000000000000000000000000 Binary files a/static/flags/jo.gif and /dev/null differ diff --git a/static/flags/jp.gif b/static/flags/jp.gif deleted file mode 100644 index 834e8afb9d5923f8b9f202121864d82c73ff57ed..0000000000000000000000000000000000000000 Binary files a/static/flags/jp.gif and /dev/null differ diff --git a/static/flags/ke.gif b/static/flags/ke.gif deleted file mode 100644 index 523cab12f1b09b08d34c973a6c1087282c00abb1..0000000000000000000000000000000000000000 Binary files a/static/flags/ke.gif and /dev/null differ diff --git a/static/flags/kg.gif b/static/flags/kg.gif deleted file mode 100644 index 52e33496a0c027130cc5dd5979a08c17d15ca891..0000000000000000000000000000000000000000 Binary files a/static/flags/kg.gif and /dev/null differ diff --git a/static/flags/kh.gif b/static/flags/kh.gif deleted file mode 100644 index b16bf77fd948457c9a71aef35c55d90e0d77749a..0000000000000000000000000000000000000000 Binary files a/static/flags/kh.gif and /dev/null differ diff --git a/static/flags/ki.gif b/static/flags/ki.gif deleted file mode 100644 index 69cd34a2ff577f4722b862cdfc2b736f24ba0ae9..0000000000000000000000000000000000000000 Binary files a/static/flags/ki.gif and /dev/null differ diff --git a/static/flags/km.gif b/static/flags/km.gif deleted file mode 100644 index 8a9fce535744bfe4984ffbbcac460a9bdce01239..0000000000000000000000000000000000000000 Binary files a/static/flags/km.gif and /dev/null differ diff --git a/static/flags/kn.gif b/static/flags/kn.gif deleted file mode 100644 index 9481c1a2316bd4d8679867bbccad8add4e05fa26..0000000000000000000000000000000000000000 Binary files a/static/flags/kn.gif and /dev/null differ diff --git a/static/flags/kp.gif b/static/flags/kp.gif deleted file mode 100644 index fee280b7029a534a727160eb6cd743a77ecd8a1d..0000000000000000000000000000000000000000 Binary files a/static/flags/kp.gif and /dev/null differ diff --git a/static/flags/kr.gif b/static/flags/kr.gif deleted file mode 100644 index 28e1dfc4f88140b733ffa3ce8e1bad1bbffbee19..0000000000000000000000000000000000000000 Binary files a/static/flags/kr.gif and /dev/null differ diff --git a/static/flags/kw.gif b/static/flags/kw.gif deleted file mode 100644 index fa3ee09cd7ce46941c8d6b51762f968af4ea9826..0000000000000000000000000000000000000000 Binary files a/static/flags/kw.gif and /dev/null differ diff --git a/static/flags/ky.gif b/static/flags/ky.gif deleted file mode 100644 index 2cac52e1fc685f7beb8210bc43e0d404d2a4dccb..0000000000000000000000000000000000000000 Binary files a/static/flags/ky.gif and /dev/null differ diff --git a/static/flags/kz.gif b/static/flags/kz.gif deleted file mode 100644 index 031238a4f26e7104974ebb1472e623aa3f848cc3..0000000000000000000000000000000000000000 Binary files a/static/flags/kz.gif and /dev/null differ diff --git a/static/flags/la.gif b/static/flags/la.gif deleted file mode 100644 index b08836b13bf16098578c836f3447858cf9857862..0000000000000000000000000000000000000000 Binary files a/static/flags/la.gif and /dev/null differ diff --git a/static/flags/lb.gif b/static/flags/lb.gif deleted file mode 100644 index dcc202c2b8af95cce7b782f5cedfb850142f3d35..0000000000000000000000000000000000000000 Binary files a/static/flags/lb.gif and /dev/null differ diff --git a/static/flags/lc.gif b/static/flags/lc.gif deleted file mode 100644 index 2f73b350d0545c6569848aa8ca1f431366b1707c..0000000000000000000000000000000000000000 Binary files a/static/flags/lc.gif and /dev/null differ diff --git a/static/flags/li.gif b/static/flags/li.gif deleted file mode 100644 index fde1cbac9f44514679df7f1932c6fc9bfb0a85a3..0000000000000000000000000000000000000000 Binary files a/static/flags/li.gif and /dev/null differ diff --git a/static/flags/lk.gif b/static/flags/lk.gif deleted file mode 100644 index 0dfb639377b2af245b4f073317503e68389a4b2b..0000000000000000000000000000000000000000 Binary files a/static/flags/lk.gif and /dev/null differ diff --git a/static/flags/lr.gif b/static/flags/lr.gif deleted file mode 100644 index 9ee0ab2e46f98f2b1af53ff7408cab2b9fbc2662..0000000000000000000000000000000000000000 Binary files a/static/flags/lr.gif and /dev/null differ diff --git a/static/flags/ls.gif b/static/flags/ls.gif deleted file mode 100644 index a716573433287501019516f13ead94c1338f3aaf..0000000000000000000000000000000000000000 Binary files a/static/flags/ls.gif and /dev/null differ diff --git a/static/flags/lt.gif b/static/flags/lt.gif deleted file mode 100644 index 7a4dd43c42cb7db68c88005690bcf9114e18a4cf..0000000000000000000000000000000000000000 Binary files a/static/flags/lt.gif and /dev/null differ diff --git a/static/flags/lu.gif b/static/flags/lu.gif deleted file mode 100644 index 37c8c3d334a0482e51c91476e38d50adcf3e212b..0000000000000000000000000000000000000000 Binary files a/static/flags/lu.gif and /dev/null differ diff --git a/static/flags/lv.gif b/static/flags/lv.gif deleted file mode 100644 index c0ab991990c837f80c98753931e65a56b009c99b..0000000000000000000000000000000000000000 Binary files a/static/flags/lv.gif and /dev/null differ diff --git a/static/flags/ly.gif b/static/flags/ly.gif deleted file mode 100644 index 1681b9fb664038a6b1a8bbf0c3b91822e5309db3..0000000000000000000000000000000000000000 Binary files a/static/flags/ly.gif and /dev/null differ diff --git a/static/flags/ma.gif b/static/flags/ma.gif deleted file mode 100644 index 3ad13827a096c67cf44085350d7ebf3795eadc93..0000000000000000000000000000000000000000 Binary files a/static/flags/ma.gif and /dev/null differ diff --git a/static/flags/mc.gif b/static/flags/mc.gif deleted file mode 100644 index ad62e4aea0d07d3885e14f2e89fdefb633266b71..0000000000000000000000000000000000000000 Binary files a/static/flags/mc.gif and /dev/null differ diff --git a/static/flags/md.gif b/static/flags/md.gif deleted file mode 100644 index 2791ec633413880735424cf20ce982e726cc2dc2..0000000000000000000000000000000000000000 Binary files a/static/flags/md.gif and /dev/null differ diff --git a/static/flags/me.gif b/static/flags/me.gif deleted file mode 100644 index 3d3b13786fce79c3275c5a964f24db2341625ac2..0000000000000000000000000000000000000000 Binary files a/static/flags/me.gif and /dev/null differ diff --git a/static/flags/mf.gif b/static/flags/mf.gif deleted file mode 100644 index 0c21d69ab5528ba0c107445c4afeff3c61f7e447..0000000000000000000000000000000000000000 Binary files a/static/flags/mf.gif and /dev/null differ diff --git a/static/flags/mg.gif b/static/flags/mg.gif deleted file mode 100644 index 98b61fda3b8311a289c5696055f7229fdbd6deb8..0000000000000000000000000000000000000000 Binary files a/static/flags/mg.gif and /dev/null differ diff --git a/static/flags/mh.gif b/static/flags/mh.gif deleted file mode 100644 index ee2713efdcd79885f19ddda1797028aa83e65ec0..0000000000000000000000000000000000000000 Binary files a/static/flags/mh.gif and /dev/null differ diff --git a/static/flags/mk.gif b/static/flags/mk.gif deleted file mode 100644 index 2a3e6ae3e374a4c50aeb570b5a70bad5e0814a58..0000000000000000000000000000000000000000 Binary files a/static/flags/mk.gif and /dev/null differ diff --git a/static/flags/ml.gif b/static/flags/ml.gif deleted file mode 100644 index 5c7f795a75ca97de40741bf9e41544803304fe34..0000000000000000000000000000000000000000 Binary files a/static/flags/ml.gif and /dev/null differ diff --git a/static/flags/mm.gif b/static/flags/mm.gif deleted file mode 100644 index 6441802344850bf6c8a83e958ebaed5aa7766b83..0000000000000000000000000000000000000000 Binary files a/static/flags/mm.gif and /dev/null differ diff --git a/static/flags/mn.gif b/static/flags/mn.gif deleted file mode 100644 index 979839cbffa21864122d085546e410ea1134ffbd..0000000000000000000000000000000000000000 Binary files a/static/flags/mn.gif and /dev/null differ diff --git a/static/flags/mo.gif b/static/flags/mo.gif deleted file mode 100644 index 9666990365c7c406dd91d99b4cae7c81d433e807..0000000000000000000000000000000000000000 Binary files a/static/flags/mo.gif and /dev/null differ diff --git a/static/flags/mp.gif b/static/flags/mp.gif deleted file mode 100644 index 4f1dadcc173b1c6f15201a868ea5af0f2617b5a6..0000000000000000000000000000000000000000 Binary files a/static/flags/mp.gif and /dev/null differ diff --git a/static/flags/mq.gif b/static/flags/mq.gif deleted file mode 100644 index 9b46c9a414c8f11d581e36c9ec62f953dca2a40d..0000000000000000000000000000000000000000 Binary files a/static/flags/mq.gif and /dev/null differ diff --git a/static/flags/mr.gif b/static/flags/mr.gif deleted file mode 100644 index a20195feb4c021e905d21645d891052f41afd944..0000000000000000000000000000000000000000 Binary files a/static/flags/mr.gif and /dev/null differ diff --git a/static/flags/ms.gif b/static/flags/ms.gif deleted file mode 100644 index 1c62fe794b9ab2a52a4a92fe8d9a6c2b4469d0c8..0000000000000000000000000000000000000000 Binary files a/static/flags/ms.gif and /dev/null differ diff --git a/static/flags/mt.gif b/static/flags/mt.gif deleted file mode 100644 index 0d9e3f5c96092ff8b83e1c4bbec1571dad1b8f05..0000000000000000000000000000000000000000 Binary files a/static/flags/mt.gif and /dev/null differ diff --git a/static/flags/mu.gif b/static/flags/mu.gif deleted file mode 100644 index b49ef7551ccec5222f3899d22c5f363c6c8811e1..0000000000000000000000000000000000000000 Binary files a/static/flags/mu.gif and /dev/null differ diff --git a/static/flags/mv.gif b/static/flags/mv.gif deleted file mode 100644 index 27aaaa49d41042d307a9b34c8b76fd2eaf1ae310..0000000000000000000000000000000000000000 Binary files a/static/flags/mv.gif and /dev/null differ diff --git a/static/flags/mw.gif b/static/flags/mw.gif deleted file mode 100644 index aa352e879fe4c3402256160435c4263a542df8cb..0000000000000000000000000000000000000000 Binary files a/static/flags/mw.gif and /dev/null differ diff --git a/static/flags/mx.gif b/static/flags/mx.gif deleted file mode 100644 index 530bddbfe3c9a5d1bef0f1a0d3c8ee4f51819323..0000000000000000000000000000000000000000 Binary files a/static/flags/mx.gif and /dev/null differ diff --git a/static/flags/my.gif b/static/flags/my.gif deleted file mode 100644 index 592ae1a0ef0c718f74d1fb4a8ac024e52726faea..0000000000000000000000000000000000000000 Binary files a/static/flags/my.gif and /dev/null differ diff --git a/static/flags/mz.gif b/static/flags/mz.gif deleted file mode 100644 index 06718ac97ce7c040a0366ae852cafa0bdc69ba2b..0000000000000000000000000000000000000000 Binary files a/static/flags/mz.gif and /dev/null differ diff --git a/static/flags/na.gif b/static/flags/na.gif deleted file mode 100644 index 9a78c9b5971473b97637e9ea7ff5df6324b83e19..0000000000000000000000000000000000000000 Binary files a/static/flags/na.gif and /dev/null differ diff --git a/static/flags/nc.gif b/static/flags/nc.gif deleted file mode 100644 index 4f7224154b5e294e607403e236b052f271ea75dc..0000000000000000000000000000000000000000 Binary files a/static/flags/nc.gif and /dev/null differ diff --git a/static/flags/ne.gif b/static/flags/ne.gif deleted file mode 100644 index fd4c076a01e1d50f83fc955b51c08170780863e0..0000000000000000000000000000000000000000 Binary files a/static/flags/ne.gif and /dev/null differ diff --git a/static/flags/nf.gif b/static/flags/nf.gif deleted file mode 100644 index 513de42fbcf3012ac50098ad55a952f462746ca4..0000000000000000000000000000000000000000 Binary files a/static/flags/nf.gif and /dev/null differ diff --git a/static/flags/ng.gif b/static/flags/ng.gif deleted file mode 100644 index befcd68e055608b16072e35c864599cfc4f60d23..0000000000000000000000000000000000000000 Binary files a/static/flags/ng.gif and /dev/null differ diff --git a/static/flags/ni.gif b/static/flags/ni.gif deleted file mode 100644 index b6fdd5f8bd33fa59b9de4e1faebe2b644c744494..0000000000000000000000000000000000000000 Binary files a/static/flags/ni.gif and /dev/null differ diff --git a/static/flags/nl.gif b/static/flags/nl.gif deleted file mode 100644 index a68ceae0f82415d5c55f85419023e500bc2b8d34..0000000000000000000000000000000000000000 Binary files a/static/flags/nl.gif and /dev/null differ diff --git a/static/flags/no.gif b/static/flags/no.gif deleted file mode 100644 index b1117a7bbc63d36f46816abd3ea7359953f64519..0000000000000000000000000000000000000000 Binary files a/static/flags/no.gif and /dev/null differ diff --git a/static/flags/np.gif b/static/flags/np.gif deleted file mode 100644 index d7176ab2187aa8cc9741a697182c3ba050327630..0000000000000000000000000000000000000000 Binary files a/static/flags/np.gif and /dev/null differ diff --git a/static/flags/nr.gif b/static/flags/nr.gif deleted file mode 100644 index 9e68a63ff0339b419b0a4c6b89b49329ba8ec395..0000000000000000000000000000000000000000 Binary files a/static/flags/nr.gif and /dev/null differ diff --git a/static/flags/nu.gif b/static/flags/nu.gif deleted file mode 100644 index e2e52fe980810b8820e4f57d6f45abba9fe0faa3..0000000000000000000000000000000000000000 Binary files a/static/flags/nu.gif and /dev/null differ diff --git a/static/flags/nz.gif b/static/flags/nz.gif deleted file mode 100644 index 33873363b4ae833ce0701dd08eb77975196d1141..0000000000000000000000000000000000000000 Binary files a/static/flags/nz.gif and /dev/null differ diff --git a/static/flags/om.gif b/static/flags/om.gif deleted file mode 100644 index 2a602aa02a2287c1cad6a17a84ed55dfc15c937f..0000000000000000000000000000000000000000 Binary files a/static/flags/om.gif and /dev/null differ diff --git a/static/flags/pa.gif b/static/flags/pa.gif deleted file mode 100644 index 73fed1f99a3ecc66d71433bb98756eb4712ab753..0000000000000000000000000000000000000000 Binary files a/static/flags/pa.gif and /dev/null differ diff --git a/static/flags/pe.gif b/static/flags/pe.gif deleted file mode 100644 index 4dc735a1739e2880e1ee00af58e66234337569ab..0000000000000000000000000000000000000000 Binary files a/static/flags/pe.gif and /dev/null differ diff --git a/static/flags/pf.gif b/static/flags/pf.gif deleted file mode 100644 index 94b18bd46498e18122230e70a2694f82677362e4..0000000000000000000000000000000000000000 Binary files a/static/flags/pf.gif and /dev/null differ diff --git a/static/flags/pg.gif b/static/flags/pg.gif deleted file mode 100644 index 779400400627d3a86e7c41578b7245cd28d5d24b..0000000000000000000000000000000000000000 Binary files a/static/flags/pg.gif and /dev/null differ diff --git a/static/flags/ph.gif b/static/flags/ph.gif deleted file mode 100644 index 4fa1f6384b0ab859901a9ee97f483cbc1565819b..0000000000000000000000000000000000000000 Binary files a/static/flags/ph.gif and /dev/null differ diff --git a/static/flags/pk.gif b/static/flags/pk.gif deleted file mode 100644 index 8208abb086baaf31e031d473b70010fe9b6c0cbe..0000000000000000000000000000000000000000 Binary files a/static/flags/pk.gif and /dev/null differ diff --git a/static/flags/pl.gif b/static/flags/pl.gif deleted file mode 100644 index 40146454caaa4f72f95bd98a155830b61e2308c7..0000000000000000000000000000000000000000 Binary files a/static/flags/pl.gif and /dev/null differ diff --git a/static/flags/pm.gif b/static/flags/pm.gif deleted file mode 100644 index abf703b4c8240588252b20027cd35ecfeebcaa23..0000000000000000000000000000000000000000 Binary files a/static/flags/pm.gif and /dev/null differ diff --git a/static/flags/pn.gif b/static/flags/pn.gif deleted file mode 100644 index 6d7223a4feb8ca00609e1ad167ddbe95937fe276..0000000000000000000000000000000000000000 Binary files a/static/flags/pn.gif and /dev/null differ diff --git a/static/flags/pr.gif b/static/flags/pr.gif deleted file mode 100644 index 7932243243aa06f05e0650ad177d5785fd041514..0000000000000000000000000000000000000000 Binary files a/static/flags/pr.gif and /dev/null differ diff --git a/static/flags/ps.gif b/static/flags/ps.gif deleted file mode 100644 index 1525937132f0a109a879a95d1bf6e208ea3371b7..0000000000000000000000000000000000000000 Binary files a/static/flags/ps.gif and /dev/null differ diff --git a/static/flags/pt.gif b/static/flags/pt.gif deleted file mode 100644 index c1f49ea910ef512256b3ba25ec1805a1bda71102..0000000000000000000000000000000000000000 Binary files a/static/flags/pt.gif and /dev/null differ diff --git a/static/flags/pw.gif b/static/flags/pw.gif deleted file mode 100644 index 6eed5075c092336ef23fcc53451fe8c85b1bd4ff..0000000000000000000000000000000000000000 Binary files a/static/flags/pw.gif and /dev/null differ diff --git a/static/flags/py.gif b/static/flags/py.gif deleted file mode 100644 index 90d48a5bffaf5cd487c4057093944a6339c4f0f8..0000000000000000000000000000000000000000 Binary files a/static/flags/py.gif and /dev/null differ diff --git a/static/flags/qa.gif b/static/flags/qa.gif deleted file mode 100644 index d354ac1d33d6738885aa8d4f4f24a5553d530069..0000000000000000000000000000000000000000 Binary files a/static/flags/qa.gif and /dev/null differ diff --git a/static/flags/re.gif b/static/flags/re.gif deleted file mode 100644 index 0c21d69ab5528ba0c107445c4afeff3c61f7e447..0000000000000000000000000000000000000000 Binary files a/static/flags/re.gif and /dev/null differ diff --git a/static/flags/ro.gif b/static/flags/ro.gif deleted file mode 100644 index 20c8ab8bd4f332679c83410037e4708eb9a36eb5..0000000000000000000000000000000000000000 Binary files a/static/flags/ro.gif and /dev/null differ diff --git a/static/flags/rs.gif b/static/flags/rs.gif deleted file mode 100644 index 4787f84bfec7db54cfa9ad0984ba72760981856e..0000000000000000000000000000000000000000 Binary files a/static/flags/rs.gif and /dev/null differ diff --git a/static/flags/ru.gif b/static/flags/ru.gif deleted file mode 100644 index 7369b9e4cc4969890b0d9b1cdcf6c6119a3e4670..0000000000000000000000000000000000000000 Binary files a/static/flags/ru.gif and /dev/null differ diff --git a/static/flags/rw.gif b/static/flags/rw.gif deleted file mode 100644 index 34554f3bc3878ef75deebe0f614be333271dcf81..0000000000000000000000000000000000000000 Binary files a/static/flags/rw.gif and /dev/null differ diff --git a/static/flags/sa.gif b/static/flags/sa.gif deleted file mode 100644 index c003d8e8e5d14c9db7f7c71a39ccf260240300ce..0000000000000000000000000000000000000000 Binary files a/static/flags/sa.gif and /dev/null differ diff --git a/static/flags/sb.gif b/static/flags/sb.gif deleted file mode 100644 index 901f6ce6c42b1a22877c8ed0df11f76b529c7da7..0000000000000000000000000000000000000000 Binary files a/static/flags/sb.gif and /dev/null differ diff --git a/static/flags/sc.gif b/static/flags/sc.gif deleted file mode 100644 index 1d6234bcc17f05343ba77a73d7afd33d5f04d4fa..0000000000000000000000000000000000000000 Binary files a/static/flags/sc.gif and /dev/null differ diff --git a/static/flags/sd.gif b/static/flags/sd.gif deleted file mode 100644 index 0765a0abfb08a2f911e7f70883695a17daa4bc6f..0000000000000000000000000000000000000000 Binary files a/static/flags/sd.gif and /dev/null differ diff --git a/static/flags/se.gif b/static/flags/se.gif deleted file mode 100644 index bbbef8ecf123a7544c0f81922e36983653f7dc2c..0000000000000000000000000000000000000000 Binary files a/static/flags/se.gif and /dev/null differ diff --git a/static/flags/sg.gif b/static/flags/sg.gif deleted file mode 100644 index 8fe1d06de1df245215595a1ae1b5525308bc69a4..0000000000000000000000000000000000000000 Binary files a/static/flags/sg.gif and /dev/null differ diff --git a/static/flags/sh.gif b/static/flags/sh.gif deleted file mode 100644 index 73feb36a9469da9f1a5ecda48cebecc4d8efb2dc..0000000000000000000000000000000000000000 Binary files a/static/flags/sh.gif and /dev/null differ diff --git a/static/flags/si.gif b/static/flags/si.gif deleted file mode 100644 index 0fbfdce7b303c2c5f41f0b60b936c772f8ba8df9..0000000000000000000000000000000000000000 Binary files a/static/flags/si.gif and /dev/null differ diff --git a/static/flags/sj.gif b/static/flags/sj.gif deleted file mode 100644 index b1117a7bbc63d36f46816abd3ea7359953f64519..0000000000000000000000000000000000000000 Binary files a/static/flags/sj.gif and /dev/null differ diff --git a/static/flags/sk.gif b/static/flags/sk.gif deleted file mode 100644 index 416379d368248bd980e2146f6e039456e09792ac..0000000000000000000000000000000000000000 Binary files a/static/flags/sk.gif and /dev/null differ diff --git a/static/flags/sl.gif b/static/flags/sl.gif deleted file mode 100644 index d3bec52a25e6e5494b80232cb498e7ec4ec32496..0000000000000000000000000000000000000000 Binary files a/static/flags/sl.gif and /dev/null differ diff --git a/static/flags/sm.gif b/static/flags/sm.gif deleted file mode 100644 index fe10e4541639fd5a52414f6ea8c80e00840fe545..0000000000000000000000000000000000000000 Binary files a/static/flags/sm.gif and /dev/null differ diff --git a/static/flags/sn.gif b/static/flags/sn.gif deleted file mode 100644 index 85816f4c6b3f7c029e6e77ad7d7e7ca03f31c95e..0000000000000000000000000000000000000000 Binary files a/static/flags/sn.gif and /dev/null differ diff --git a/static/flags/so.gif b/static/flags/so.gif deleted file mode 100644 index 65f5d9e39bffff931106e6d0cd1026a400558683..0000000000000000000000000000000000000000 Binary files a/static/flags/so.gif and /dev/null differ diff --git a/static/flags/sr.gif b/static/flags/sr.gif deleted file mode 100644 index 0d8c19eaf8e9ce3f09966862237e2064235fd805..0000000000000000000000000000000000000000 Binary files a/static/flags/sr.gif and /dev/null differ diff --git a/static/flags/ss.gif b/static/flags/ss.gif deleted file mode 100644 index 7a629a39e612bdd2a092c13802b17c90de058aa5..0000000000000000000000000000000000000000 Binary files a/static/flags/ss.gif and /dev/null differ diff --git a/static/flags/st.gif b/static/flags/st.gif deleted file mode 100644 index 204c87e5fa3ce3bbd19312a9fa8e4a8236e79c32..0000000000000000000000000000000000000000 Binary files a/static/flags/st.gif and /dev/null differ diff --git a/static/flags/sv.gif b/static/flags/sv.gif deleted file mode 100644 index 1c94d77086af576991fc6b185b75b309d9aec171..0000000000000000000000000000000000000000 Binary files a/static/flags/sv.gif and /dev/null differ diff --git a/static/flags/sx.gif b/static/flags/sx.gif deleted file mode 100644 index 04509033e8fbe3c305dd7933f55299fe7fb7eb82..0000000000000000000000000000000000000000 Binary files a/static/flags/sx.gif and /dev/null differ diff --git a/static/flags/sy.gif b/static/flags/sy.gif deleted file mode 100644 index beca7be2c5ba85366e831dcdef6b089aec560af3..0000000000000000000000000000000000000000 Binary files a/static/flags/sy.gif and /dev/null differ diff --git a/static/flags/sz.gif b/static/flags/sz.gif deleted file mode 100644 index e296e9b084e185470675f9f78175b51ffa79c738..0000000000000000000000000000000000000000 Binary files a/static/flags/sz.gif and /dev/null differ diff --git a/static/flags/tc.gif b/static/flags/tc.gif deleted file mode 100644 index daebede01cd0f2588afc09e106ae8c2cf647e0a2..0000000000000000000000000000000000000000 Binary files a/static/flags/tc.gif and /dev/null differ diff --git a/static/flags/td.gif b/static/flags/td.gif deleted file mode 100644 index 481ffd69a8cd9a7c92163dc9a721ddda48192014..0000000000000000000000000000000000000000 Binary files a/static/flags/td.gif and /dev/null differ diff --git a/static/flags/tf.gif b/static/flags/tf.gif deleted file mode 100644 index df3684c56494e1e52090ca5b3e943fd282c232af..0000000000000000000000000000000000000000 Binary files a/static/flags/tf.gif and /dev/null differ diff --git a/static/flags/tg.gif b/static/flags/tg.gif deleted file mode 100644 index 7cbfe6bac5c71853782b3165fc0213eb4eade795..0000000000000000000000000000000000000000 Binary files a/static/flags/tg.gif and /dev/null differ diff --git a/static/flags/th.gif b/static/flags/th.gif deleted file mode 100644 index 79acb27f3f32306ea2f33580ba907764af7002f4..0000000000000000000000000000000000000000 Binary files a/static/flags/th.gif and /dev/null differ diff --git a/static/flags/tj.gif b/static/flags/tj.gif deleted file mode 100644 index 800b7a28d0b2d027fe893357dbe96f4f524bc780..0000000000000000000000000000000000000000 Binary files a/static/flags/tj.gif and /dev/null differ diff --git a/static/flags/tk.gif b/static/flags/tk.gif deleted file mode 100644 index 0015642f166c56815597ecea8c9a8af9c643b695..0000000000000000000000000000000000000000 Binary files a/static/flags/tk.gif and /dev/null differ diff --git a/static/flags/tl.gif b/static/flags/tl.gif deleted file mode 100644 index 534387a5691252b7630dba33913d87e3faecf2b9..0000000000000000000000000000000000000000 Binary files a/static/flags/tl.gif and /dev/null differ diff --git a/static/flags/tm.gif b/static/flags/tm.gif deleted file mode 100644 index a00bde0dbc1a37953d450f3db12e95c25a7a772a..0000000000000000000000000000000000000000 Binary files a/static/flags/tm.gif and /dev/null differ diff --git a/static/flags/tn.gif b/static/flags/tn.gif deleted file mode 100644 index af89d2d11e13c705f1fd4b70f1e648d371fe4f4c..0000000000000000000000000000000000000000 Binary files a/static/flags/tn.gif and /dev/null differ diff --git a/static/flags/to.gif b/static/flags/to.gif deleted file mode 100644 index 6eb0c41343fcc10690cf5a2ff61d3cbf464301d5..0000000000000000000000000000000000000000 Binary files a/static/flags/to.gif and /dev/null differ diff --git a/static/flags/tr.gif b/static/flags/tr.gif deleted file mode 100644 index 35bf320298787b1033280e6a9eecfef470065b31..0000000000000000000000000000000000000000 Binary files a/static/flags/tr.gif and /dev/null differ diff --git a/static/flags/tt.gif b/static/flags/tt.gif deleted file mode 100644 index 702e500859c1395d7620a7f07055e218808c51b3..0000000000000000000000000000000000000000 Binary files a/static/flags/tt.gif and /dev/null differ diff --git a/static/flags/tv.gif b/static/flags/tv.gif deleted file mode 100644 index 206e7aadd5ceb63189b10171c521409251d3b9ff..0000000000000000000000000000000000000000 Binary files a/static/flags/tv.gif and /dev/null differ diff --git a/static/flags/tw.gif b/static/flags/tw.gif deleted file mode 100644 index a5501c70fb4ed6493d06c0d91184e8cdbf3a5034..0000000000000000000000000000000000000000 Binary files a/static/flags/tw.gif and /dev/null differ diff --git a/static/flags/tz.gif b/static/flags/tz.gif deleted file mode 100644 index 6bbd1d3c78d68eb272a2e825daec5158990efd0b..0000000000000000000000000000000000000000 Binary files a/static/flags/tz.gif and /dev/null differ diff --git a/static/flags/ua.gif b/static/flags/ua.gif deleted file mode 100644 index f20ef72fa71060b3bdc14fa011ed949be49a660c..0000000000000000000000000000000000000000 Binary files a/static/flags/ua.gif and /dev/null differ diff --git a/static/flags/ug.gif b/static/flags/ug.gif deleted file mode 100644 index 8bc1e3da344c6c6666f2d5dcc60d606cf111d788..0000000000000000000000000000000000000000 Binary files a/static/flags/ug.gif and /dev/null differ diff --git a/static/flags/um.gif b/static/flags/um.gif deleted file mode 100644 index 10542cd69d78384c67429661cfce3fb174908bd6..0000000000000000000000000000000000000000 Binary files a/static/flags/um.gif and /dev/null differ diff --git a/static/flags/us.gif b/static/flags/us.gif deleted file mode 100644 index f54c9ce2be08bcd348ee83e4d99ffe1dd4cb308b..0000000000000000000000000000000000000000 Binary files a/static/flags/us.gif and /dev/null differ diff --git a/static/flags/uy.gif b/static/flags/uy.gif deleted file mode 100644 index 7c468371600315e68990920c5b8e8b113e22ff4d..0000000000000000000000000000000000000000 Binary files a/static/flags/uy.gif and /dev/null differ diff --git a/static/flags/uz.gif b/static/flags/uz.gif deleted file mode 100644 index 81a95502768b9387c802afe039e6a54e9340a156..0000000000000000000000000000000000000000 Binary files a/static/flags/uz.gif and /dev/null differ diff --git a/static/flags/va.gif b/static/flags/va.gif deleted file mode 100644 index f3f84e64d56db5ab6f728c859a453b1fa27eca9c..0000000000000000000000000000000000000000 Binary files a/static/flags/va.gif and /dev/null differ diff --git a/static/flags/vc.gif b/static/flags/vc.gif deleted file mode 100644 index 3dd57939357d74740035a91f51644f0e6e73f78d..0000000000000000000000000000000000000000 Binary files a/static/flags/vc.gif and /dev/null differ diff --git a/static/flags/ve.gif b/static/flags/ve.gif deleted file mode 100644 index 6d4efcb157ee7f66c5906c029ff1f74ab72d28e3..0000000000000000000000000000000000000000 Binary files a/static/flags/ve.gif and /dev/null differ diff --git a/static/flags/vg.gif b/static/flags/vg.gif deleted file mode 100644 index 215ebb67bcc9bea8060cc24db3271b5ecef33813..0000000000000000000000000000000000000000 Binary files a/static/flags/vg.gif and /dev/null differ diff --git a/static/flags/vi.gif b/static/flags/vi.gif deleted file mode 100644 index 133cffd39c7593d3915fa91999cca0a1d5c61c84..0000000000000000000000000000000000000000 Binary files a/static/flags/vi.gif and /dev/null differ diff --git a/static/flags/vn.gif b/static/flags/vn.gif deleted file mode 100644 index e843b7c01613627f17b961d87a2e5fb37255b133..0000000000000000000000000000000000000000 Binary files a/static/flags/vn.gif and /dev/null differ diff --git a/static/flags/vu.gif b/static/flags/vu.gif deleted file mode 100644 index 70bfe34af9d6907dde6fcd025989ce9825182086..0000000000000000000000000000000000000000 Binary files a/static/flags/vu.gif and /dev/null differ diff --git a/static/flags/wf.gif b/static/flags/wf.gif deleted file mode 100644 index 6baeec2fb5a5e92cad095b8417761f855e2f343f..0000000000000000000000000000000000000000 Binary files a/static/flags/wf.gif and /dev/null differ diff --git a/static/flags/ws.gif b/static/flags/ws.gif deleted file mode 100644 index d5a83da8a756bfc6ae3c640a160a013188b8e8e9..0000000000000000000000000000000000000000 Binary files a/static/flags/ws.gif and /dev/null differ diff --git a/static/flags/ye.gif b/static/flags/ye.gif deleted file mode 100644 index d596be37198e3007e1448baef1386de822d675be..0000000000000000000000000000000000000000 Binary files a/static/flags/ye.gif and /dev/null differ diff --git a/static/flags/yt.gif b/static/flags/yt.gif deleted file mode 100644 index b6359ee06fa5676653491ab4340dfa0211aa249a..0000000000000000000000000000000000000000 Binary files a/static/flags/yt.gif and /dev/null differ diff --git a/static/flags/za.gif b/static/flags/za.gif deleted file mode 100644 index f7b505e413da47ac27db68321d12a3610e6bd0c1..0000000000000000000000000000000000000000 Binary files a/static/flags/za.gif and /dev/null differ diff --git a/static/flags/zm.gif b/static/flags/zm.gif deleted file mode 100644 index 1058f29def71b0e741f32ace1922e96cbf40cec7..0000000000000000000000000000000000000000 Binary files a/static/flags/zm.gif and /dev/null differ diff --git a/static/flags/zw.gif b/static/flags/zw.gif deleted file mode 100644 index 14806e3cfab599fbd9ac8eada463079fb447e9c3..0000000000000000000000000000000000000000 Binary files a/static/flags/zw.gif and /dev/null differ diff --git a/static/guardian/img/icon-no.svg b/static/guardian/img/icon-no.svg deleted file mode 100644 index 2e0d3832c9299c3994f627cd64ed0341a5da7b14..0000000000000000000000000000000000000000 --- a/static/guardian/img/icon-no.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#dd4646" d="M1277 1122q0-26-19-45l-181-181 181-181q19-19 19-45 0-27-19-46l-90-90q-19-19-46-19-26 0-45 19l-181 181-181-181q-19-19-45-19-27 0-46 19l-90 90q-19 19-19 46 0 26 19 45l181 181-181 181q-19 19-19 45 0 27 19 46l90 90q19 19 46 19 26 0 45-19l181-181 181 181q19 19 45 19 27 0 46-19l90-90q19-19 19-46zm387-226q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> -</svg> diff --git a/static/guardian/img/icon-yes.svg b/static/guardian/img/icon-yes.svg deleted file mode 100644 index 5883d877e89b89d42fa121725ae7b726dbfa5f50..0000000000000000000000000000000000000000 --- a/static/guardian/img/icon-yes.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg width="13" height="13" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"> - <path fill="#70bf2b" d="M1412 734q0-28-18-46l-91-90q-19-19-45-19t-45 19l-408 407-226-226q-19-19-45-19t-45 19l-91 90q-18 18-18 46 0 27 18 45l362 362q19 19 45 19 27 0 46-19l543-543q18-18 18-45zm252 162q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/> -</svg> diff --git a/static/rest_framework/css/bootstrap-tweaks.css b/static/rest_framework/css/bootstrap-tweaks.css deleted file mode 100644 index 17085b49d5a24c1f080b9347e85674fe5265e624..0000000000000000000000000000000000000000 --- a/static/rest_framework/css/bootstrap-tweaks.css +++ /dev/null @@ -1,234 +0,0 @@ -/* - -This CSS file contains some tweaks specific to the included Bootstrap theme. -It's separate from `style.css` so that it can be easily overridden by replacing -a single block in the template. - -*/ - -.form-actions { - background: transparent; - border-top-color: transparent; - padding-top: 0; - text-align: right; -} - -#generic-content-form textarea { - font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New, monospace; - font-size: 80%; -} - -.navbar-inverse .brand a { - color: #999999; -} -.navbar-inverse .brand:hover a { - color: white; - text-decoration: none; -} - -/* custom navigation styles */ -.navbar { - width: 100%; - position: fixed; - left: 0; - top: 0; - z-index: 3; -} - -.navbar { - background: #2C2C2C; - color: white; - border: none; - border-top: 5px solid #A30000; - border-radius: 0px; -} - -.navbar .nav li, .navbar .nav li a, .navbar .brand:hover { - color: white; -} - -.nav-list > .active > a, .nav-list > .active > a:hover { - background: #2C2C2C; -} - -.navbar .dropdown-menu li a, .navbar .dropdown-menu li { - color: #A30000; -} - -.navbar .dropdown-menu li a:hover { - background: #EEEEEE; - color: #C20000; -} - -ul.breadcrumb { - margin: 70px 0 0 0; -} - -.breadcrumb li.active a { - color: #777; -} - -.pagination>.disabled>a, -.pagination>.disabled>a:hover, -.pagination>.disabled>a:focus { - cursor: not-allowed; - pointer-events: none; -} - -.pager>.disabled>a, -.pager>.disabled>a:hover, -.pager>.disabled>a:focus { - pointer-events: none; -} - -.pager .next { - margin-left: 10px; -} - -/*=== dabapps bootstrap styles ====*/ - -html { - width:100%; - background: none; -} - -/*body, .navbar .container-fluid { - max-width: 1150px; - margin: 0 auto; -}*/ - -body { - background: url("../img/grid.png") repeat-x; - background-attachment: fixed; -} - -#content { - margin: 0; - padding-bottom: 60px; -} - -/* sticky footer and footer */ -html, body { - height: 100%; -} - -.wrapper { - position: relative; - top: 0; - left: 0; - padding-top: 60px; - margin: -60px 0; - min-height: 100%; -} - -.form-switcher { - margin-bottom: 0; -} - -.well { - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -.well .form-actions { - padding-bottom: 0; - margin-bottom: 0; -} - -.well form { - margin-bottom: 0; -} - -.nav-tabs { - border: 0; -} - -.nav-tabs > li { - float: right; -} - -.nav-tabs li a { - margin-right: 0; -} - -.nav-tabs > .active > a { - background: #F5F5F5; -} - -.nav-tabs > .active > a:hover { - background: #F5F5F5; -} - -.tabbable.first-tab-active .tab-content { - border-top-right-radius: 0; -} - -footer { - position: absolute; - bottom: 0; - left: 0; - clear: both; - z-index: 10; - height: 60px; - width: 95%; - margin: 0 2.5%; -} - -footer p { - text-align: center; - color: gray; - border-top: 1px solid #DDDDDD; - padding-top: 10px; -} - -footer a { - color: gray !important; - font-weight: bold; -} - -footer a:hover { - color: gray; -} - -.page-header { - border-bottom: none; - padding-bottom: 0px; - margin: 0; -} - -/* custom general page styles */ -.hero-unit h1, .hero-unit h2 { - color: #A30000; -} - -body a { - color: #A30000; -} - -body a:hover { - color: #c20000; -} - -.request-info { - clear:both; -} - -.horizontal-checkbox label { - padding-top: 0; -} - -.horizontal-checkbox label { - padding-top: 0 !important; -} - -.horizontal-checkbox input { - float: left; - width: 20px; - margin-top: 3px; -} - -.modal-footer form { - margin-left: 5px; - margin-right: 5px; -} diff --git a/static/rest_framework/css/bootstrap.min.css b/static/rest_framework/css/bootstrap.min.css deleted file mode 100644 index d65c66b1ba297eeb3b5976b71c64c736b41bb763..0000000000000000000000000000000000000000 --- a/static/rest_framework/css/bootstrap.min.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/static/rest_framework/css/default.css b/static/rest_framework/css/default.css deleted file mode 100644 index f4e645ca0ee5a68fa527b01e1516770fd9a1fe44..0000000000000000000000000000000000000000 --- a/static/rest_framework/css/default.css +++ /dev/null @@ -1,83 +0,0 @@ - -/* The navbar is fixed at >= 980px wide, so add padding to the body to prevent -content running up underneath it. */ - -h1 { - font-weight: 300; -} - -h2, h3 { - font-weight: 300; -} - -.resource-description, .response-info { - margin-bottom: 2em; -} - -.version:before { - content: "v"; - opacity: 0.6; - padding-right: 0.25em; -} - -.version { - font-size: 70%; -} - -.format-option { - font-family: Menlo, Consolas, "Andale Mono", "Lucida Console", monospace; -} - -.button-form { - float: right; - margin-right: 1em; -} - -td.nested { - padding: 0 !important; -} - -td.nested > table { - margin: 0; -} - -form select, form input, form textarea { - width: 90%; -} - -form select[multiple] { - height: 150px; -} - -/* To allow tooltips to work on disabled elements */ -.disabled-tooltip-shield { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; -} - -.errorlist { - margin-top: 0.5em; -} - -pre { - overflow: auto; - word-wrap: normal; - white-space: pre; - font-size: 12px; -} - -.page-header { - border-bottom: none; - padding-bottom: 0px; -} - -#filtersModal form input[type=submit] { - width: auto; -} - -#filtersModal .modal-body h2 { - margin-top: 0 -} diff --git a/static/rest_framework/css/prettify.css b/static/rest_framework/css/prettify.css deleted file mode 100644 index d437aff62bbbaabb783fa7acd89c9850287f1f6a..0000000000000000000000000000000000000000 --- a/static/rest_framework/css/prettify.css +++ /dev/null @@ -1,30 +0,0 @@ -.com { color: #93a1a1; } -.lit { color: #195f91; } -.pun, .opn, .clo { color: #93a1a1; } -.fun { color: #dc322f; } -.str, .atv { color: #D14; } -.kwd, .prettyprint .tag { color: #1e347b; } -.typ, .atn, .dec, .var { color: teal; } -.pln { color: #48484c; } - -.prettyprint { - padding: 8px; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; -} -.prettyprint.linenums { - -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; - -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; - box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; -} - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin: 0 0 0 33px; /* IE indents via margin-left */ -} -ol.linenums li { - padding-left: 12px; - color: #bebec5; - line-height: 20px; - text-shadow: 0 1px 0 #fff; -} \ No newline at end of file diff --git a/static/rest_framework/fonts/glyphicons-halflings-regular.eot b/static/rest_framework/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a4953fff68df523aa7656497ee339d6026d64..0000000000000000000000000000000000000000 Binary files a/static/rest_framework/fonts/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/static/rest_framework/fonts/glyphicons-halflings-regular.svg b/static/rest_framework/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index 94fb5490a2ed10b2c69a4a567a4fd2e4f706d841..0000000000000000000000000000000000000000 --- a/static/rest_framework/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > -<svg xmlns="http://www.w3.org/2000/svg"> -<metadata></metadata> -<defs> -<font id="glyphicons_halflingsregular" horiz-adv-x="1200" > -<font-face units-per-em="1200" ascent="960" descent="-240" /> -<missing-glyph horiz-adv-x="500" /> -<glyph horiz-adv-x="0" /> -<glyph horiz-adv-x="400" /> -<glyph unicode=" " /> -<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" /> -<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode=" " /> -<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" /> -<glyph unicode=" " horiz-adv-x="650" /> -<glyph unicode=" " horiz-adv-x="1300" /> -<glyph unicode=" " horiz-adv-x="650" /> -<glyph unicode=" " horiz-adv-x="1300" /> -<glyph unicode=" " horiz-adv-x="433" /> -<glyph unicode=" " horiz-adv-x="325" /> -<glyph unicode=" " horiz-adv-x="216" /> -<glyph unicode=" " horiz-adv-x="216" /> -<glyph unicode=" " horiz-adv-x="162" /> -<glyph unicode=" " horiz-adv-x="260" /> -<glyph unicode=" " horiz-adv-x="72" /> -<glyph unicode=" " horiz-adv-x="260" /> -<glyph unicode=" " horiz-adv-x="325" /> -<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" /> -<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" /> -<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" /> -<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" /> -<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" /> -<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " /> -<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" /> -<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" /> -<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" /> -<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" /> -<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" /> -<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" /> -<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" /> -<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" /> -<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" /> -<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" /> -<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" /> -<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" /> -<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" /> -<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" /> -<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" /> -<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" /> -<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" /> -<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" /> -<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> -<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" /> -<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" /> -<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" /> -<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" /> -<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" /> -<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" /> -<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" /> -<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" /> -<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" /> -<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" /> -<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> -<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> -<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" /> -<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" /> -<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" /> -<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" /> -<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" /> -<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" /> -<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" /> -<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" /> -<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" /> -<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" /> -<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" /> -<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" /> -<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" /> -<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" /> -<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" /> -<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" /> -<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" /> -<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" /> -<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" /> -<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" /> -<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" /> -<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" /> -<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" /> -<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" /> -<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" /> -<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" /> -<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" /> -<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" /> -<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" /> -<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" /> -<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" /> -<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" /> -<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> -<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> -<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" /> -<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" /> -<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" /> -<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" /> -<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" /> -<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" /> -<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" /> -<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" /> -<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" /> -<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" /> -<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" /> -<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" /> -<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" /> -<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" /> -<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" /> -<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" /> -<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" /> -<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" /> -<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" /> -<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" /> -<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " /> -<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" /> -<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" /> -<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" /> -<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" /> -<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" /> -<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" /> -<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" /> -<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" /> -<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" /> -<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" /> -<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" /> -<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" /> -<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" /> -<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> -<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" /> -<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" /> -<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> -<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" /> -<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> -<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" /> -<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" /> -<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" /> -<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> -<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" /> -<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" /> -<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" /> -<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" /> -<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" /> -<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" /> -<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" /> -<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" /> -<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" /> -<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" /> -<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" /> -<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" /> -<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" /> -<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" /> -<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" /> -<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" /> -<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" /> -<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" /> -<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" /> -<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" /> -<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" /> -<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" /> -<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" /> -<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" /> -<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" /> -<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" /> -<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" /> -<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" /> -<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" /> -<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" /> -<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " /> -<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" /> -<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" /> -<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" /> -<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" /> -<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> -<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> -<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" /> -<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> -<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> -<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> -<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" /> -<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" /> -<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" /> -<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" /> -<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" /> -<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" /> -<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" /> -<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" /> -<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" /> -<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" /> -<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> -<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" /> -<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" /> -<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" /> -<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" /> -<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" /> -<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" /> -<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" /> -<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" /> -<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" /> -<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" /> -<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" /> -<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" /> -<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" /> -<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" /> -</font> -</defs></svg> \ No newline at end of file diff --git a/static/rest_framework/fonts/glyphicons-halflings-regular.ttf b/static/rest_framework/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc609ab6f21774de0cb7e01360095584f65b..0000000000000000000000000000000000000000 Binary files a/static/rest_framework/fonts/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/static/rest_framework/fonts/glyphicons-halflings-regular.woff b/static/rest_framework/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e612858f802245ddcbf59788a0db942224bab35..0000000000000000000000000000000000000000 Binary files a/static/rest_framework/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/static/rest_framework/fonts/glyphicons-halflings-regular.woff2 b/static/rest_framework/fonts/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b54c3751a6d9adb44c8e3a45ba5a73b77f0..0000000000000000000000000000000000000000 Binary files a/static/rest_framework/fonts/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/static/rest_framework/img/glyphicons-halflings-white.png b/static/rest_framework/img/glyphicons-halflings-white.png deleted file mode 100644 index 3bf6484a29d8da269f9bc874b25493a45fae3bae..0000000000000000000000000000000000000000 Binary files a/static/rest_framework/img/glyphicons-halflings-white.png and /dev/null differ diff --git a/static/rest_framework/img/glyphicons-halflings.png b/static/rest_framework/img/glyphicons-halflings.png deleted file mode 100644 index 36c3b1ed9e71dce20dca9e35c36c97fd8afd718c..0000000000000000000000000000000000000000 Binary files a/static/rest_framework/img/glyphicons-halflings.png and /dev/null differ diff --git a/static/rest_framework/img/grid.png b/static/rest_framework/img/grid.png deleted file mode 100644 index 878c3ed5c196539c4e2da35b7787ab08e98b9cca..0000000000000000000000000000000000000000 Binary files a/static/rest_framework/img/grid.png and /dev/null differ diff --git a/static/rest_framework/js/ajax-form.js b/static/rest_framework/js/ajax-form.js deleted file mode 100644 index db07fd8fb1fd7a45d3bf3067dbcef361e4fa349c..0000000000000000000000000000000000000000 --- a/static/rest_framework/js/ajax-form.js +++ /dev/null @@ -1,97 +0,0 @@ -function replaceDocument(docString) { - var doc = document.open("text/html"); - doc.write(docString); - doc.close(); -} - - -function doAjaxSubmit(e) { - var form = $(this); - var btn = $(this.clk); - var method = btn.data('method') || form.data('method') || form.attr('method') || 'GET'; - method = method.toUpperCase() - if (method === 'GET') { - // GET requests can always use standard form submits. - return; - } - - var contentType = - form.find('input[data-override="content-type"]').val() || - form.find('select[data-override="content-type"] option:selected').text(); - if (method === 'POST' && !contentType) { - // POST requests can use standard form submits, unless we have - // overridden the content type. - return; - } - - // At this point we need to make an AJAX form submission. - e.preventDefault(); - - var url = form.attr('action'); - var data; - if (contentType) { - data = form.find('[data-override="content"]').val() || '' - } else { - contentType = form.attr('enctype') || form.attr('encoding') - if (contentType === 'multipart/form-data') { - if (!window.FormData) { - alert('Your browser does not support AJAX multipart form submissions'); - return; - } - // Use the FormData API and allow the content type to be set automatically, - // so it includes the boundary string. - // See https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects - contentType = false; - data = new FormData(form[0]); - } else { - contentType = 'application/x-www-form-urlencoded; charset=UTF-8' - data = form.serialize(); - } - } - - var ret = $.ajax({ - url: url, - method: method, - data: data, - contentType: contentType, - processData: false, - headers: {'Accept': 'text/html; q=1.0, */*'}, - }); - ret.always(function(data, textStatus, jqXHR) { - if (textStatus != 'success') { - jqXHR = data; - } - var responseContentType = jqXHR.getResponseHeader("content-type") || ""; - if (responseContentType.toLowerCase().indexOf('text/html') === 0) { - replaceDocument(jqXHR.responseText); - try { - // Modify the location and scroll to top, as if after page load. - history.replaceState({}, '', url); - scroll(0,0); - } catch(err) { - // History API not supported, so redirect. - window.location = url; - } - } else { - // Not HTML content. We can't open this directly, so redirect. - window.location = url; - } - }); - return ret; -} - - -function captureSubmittingElement(e) { - var target = e.target; - var form = this; - form.clk = target; -} - - -$.fn.ajaxForm = function() { - var options = {} - return this - .unbind('submit.form-plugin click.form-plugin') - .bind('submit.form-plugin', options, doAjaxSubmit) - .bind('click.form-plugin', options, captureSubmittingElement); -}; diff --git a/static/rest_framework/js/bootstrap.min.js b/static/rest_framework/js/bootstrap.min.js deleted file mode 100644 index 133aeecb98aa2b05d2dc1fcd623afcb37204828a..0000000000000000000000000000000000000000 --- a/static/rest_framework/js/bootstrap.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under the MIT license - */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.5",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.5",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.5",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.5",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.5",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.5",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.5",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")), -d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.5",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.5",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/static/rest_framework/js/csrf.js b/static/rest_framework/js/csrf.js deleted file mode 100644 index 4e8da0de54ca0afdea095c412a6a28db557c4823..0000000000000000000000000000000000000000 --- a/static/rest_framework/js/csrf.js +++ /dev/null @@ -1,47 +0,0 @@ -function getCookie(name) { - var cookieValue = null; - if (document.cookie && document.cookie != '') { - var cookies = document.cookie.split(';'); - for (var i = 0; i < cookies.length; i++) { - var cookie = jQuery.trim(cookies[i]); - // Does this cookie string begin with the name we want? - if (cookie.substring(0, name.length + 1) == (name + '=')) { - cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); - break; - } - } - } - return cookieValue; -} - -function csrfSafeMethod(method) { - // these HTTP methods do not require CSRF protection - return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); -} - -function sameOrigin(url) { - // test that a given url is a same-origin URL - // url could be relative or scheme relative or absolute - var host = document.location.host; // host + port - var protocol = document.location.protocol; - var sr_origin = '//' + host; - var origin = protocol + sr_origin; - // Allow absolute or scheme relative URLs to same origin - return (url == origin || url.slice(0, origin.length + 1) == origin + '/') || - (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') || - // or any other URL that isn't scheme relative or absolute i.e relative. - !(/^(\/\/|http:|https:).*/.test(url)); -} - -var csrftoken = getCookie('csrftoken'); - -$.ajaxSetup({ - beforeSend: function(xhr, settings) { - if (!csrfSafeMethod(settings.type) && sameOrigin(settings.url)) { - // Send the token to same-origin, relative URLs only. - // Send the token only if the method warrants CSRF protection - // Using the CSRFToken value acquired earlier - xhr.setRequestHeader("X-CSRFToken", csrftoken); - } - } -}); diff --git a/static/rest_framework/js/default.js b/static/rest_framework/js/default.js deleted file mode 100644 index dc6fd642c1b11ebf164588b2dded495bd532fb3d..0000000000000000000000000000000000000000 --- a/static/rest_framework/js/default.js +++ /dev/null @@ -1,65 +0,0 @@ -function getCookie(c_name) -{ - // From http://www.w3schools.com/js/js_cookies.asp - var c_value = document.cookie; - var c_start = c_value.indexOf(" " + c_name + "="); - if (c_start == -1) { - c_start = c_value.indexOf(c_name + "="); - } - if (c_start == -1) { - c_value = null; - } else { - c_start = c_value.indexOf("=", c_start) + 1; - var c_end = c_value.indexOf(";", c_start); - if (c_end == -1) { - c_end = c_value.length; - } - c_value = unescape(c_value.substring(c_start,c_end)); - } - return c_value; -} - -// JSON highlighting. -prettyPrint(); - -// Bootstrap tooltips. -$('.js-tooltip').tooltip({ - delay: 1000, - container: 'body' -}); - -// Deal with rounded tab styling after tab clicks. -$('a[data-toggle="tab"]:first').on('shown', function (e) { - $(e.target).parents('.tabbable').addClass('first-tab-active'); -}); -$('a[data-toggle="tab"]:not(:first)').on('shown', function (e) { - $(e.target).parents('.tabbable').removeClass('first-tab-active'); -}); - -$('a[data-toggle="tab"]').click(function(){ - document.cookie="tabstyle=" + this.name + "; path=/"; -}); - -// Store tab preference in cookies & display appropriate tab on load. -var selectedTab = null; -var selectedTabName = getCookie('tabstyle'); - -if (selectedTabName) { - selectedTabName = selectedTabName.replace(/[^a-z-]/g, ''); -} - -if (selectedTabName) { - selectedTab = $('.form-switcher a[name=' + selectedTabName + ']'); -} - -if (selectedTab && selectedTab.length > 0) { - // Display whichever tab is selected. - selectedTab.tab('show'); -} else { - // If no tab selected, display rightmost tab. - $('.form-switcher a:first').tab('show'); -} - -$(window).load(function(){ - $('#errorModal').modal('show'); -}); diff --git a/static/rest_framework/js/jquery-1.11.3.min.js b/static/rest_framework/js/jquery-1.11.3.min.js deleted file mode 100644 index 0f60b7bd0d9c395e1748cc962810d2dee9bb9fc2..0000000000000000000000000000000000000000 --- a/static/rest_framework/js/jquery-1.11.3.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; - -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){ -return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m}); diff --git a/static/rest_framework/js/prettify-min.js b/static/rest_framework/js/prettify-min.js deleted file mode 100644 index eef5ad7e6a07676b3919146d583d1c190bf1e163..0000000000000000000000000000000000000000 --- a/static/rest_framework/js/prettify-min.js +++ /dev/null @@ -1,28 +0,0 @@ -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c< -f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&& -(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r= -{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length, -t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b=== -"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), -l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value", -m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m= -a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue= -j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b= -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m, -250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit", -PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})(); diff --git a/static/scipost/SPB/SciPost_Supporting_Partner_Agreement.pdf b/static/scipost/SPB/SciPost_Supporting_Partner_Agreement.pdf deleted file mode 100644 index 042b661a679115369f9ee152cf626744eb8f3eea..0000000000000000000000000000000000000000 Binary files a/static/scipost/SPB/SciPost_Supporting_Partner_Agreement.pdf and /dev/null differ diff --git a/static/scipost/SciPost.css b/static/scipost/SciPost.css deleted file mode 100644 index 1009c36ff6d9fb82a9340f615456ddcf55565e56..0000000000000000000000000000000000000000 --- a/static/scipost/SciPost.css +++ /dev/null @@ -1,882 +0,0 @@ -/* -General style sheet for SciPost -*/ - -@import url(//fonts.googleapis.com/css?family=Merriweather+Sans); - -* { - box-sizing: border-box; -} - -.row:after { - content: ""; - clear: both; - display: block; -} - -[class*="col-"] { - float: left; - padding: 5px; -} -/* For desktop: */ -.col-1 {width: 8.33%;} -.col-2 {width: 16.66%;} -.col-3 {width: 25%;} -.col-4 {width: 33.33%;} -.col-5 {width: 41.66%;} -.col-6 {width: 50%;} -.col-7 {width: 58.33%;} -.col-8 {width: 66.66%;} -.col-9 {width: 75%;} -.col-10 {width: 83.33%;} -.col-11 {width: 91.66%;} -.col-12 {width: 100%;} -@media only screen and (max-width: 768px) { - /* For mobile phones: */ - [class*="col-"] { - width: 100%; - } -} - -hr.hr6 { - height: 6px; - border: 0; - box-shadow: inset 0 6px 6px -6px rgba(0, 0, 0, 0.5); -} -hr.hr12 { - height: 12px; - border: 0; - box-shadow: inset 0 12px 12px -12px rgba(0, 0, 0, 0.5); -} - - -ul.personalTabMenu { - background-color: #dddddd; - display: inline-block; - font-size: 11px; - padding: 0px; -} -ul.personalTabMenu li { - display: inline-block; - margin: 0px; - padding: 4px; -} -ul.personalTabMenu li a { - padding: 4px; -} -ul.personalTabMenu li a.active { - background-color: #eeeeee; - border: 1px solid black; - padding: 4px; -} -ul.personalTabMenu li a.inactive { - background-color: #dddddd; - border: none; -} - -.assignments_listing { - border-collapse: collapse; - margin: 0px 5px; - padding: 0px; -} -.assignments_listing tr { - background-color: #dddddd; - border: 1px solid black; -} -.assignments_listing td { - border: 1px solid black; - padding: 4px 8px; -} -.assignments_listing th { - border: 1px solid black; - padding: 4px 8px; -} - -.commentcategorychoices { - list-style-type: none; -} -.commentcategorydisplay { - display: inline-block; - font-size: 10px; - margin: 2px 2px; - padding: 1px; - box-shadow: 1px 1px 3px #888888; - background: linear-gradient(to right,#fcfcfc, #f0f0f0); -} -.commentcategorydisplay h4, .commentcategorydisplay ul { - display: inline-block; - margin: 2px; - padding: 0px; -} -.commentcategorydisplay li { - display: inline-block; - margin: 2px; - padding: 4px 8px; - background-color: #dddddd; - font-size: 90%; -} - -.commentid { - display: inline-block; -/* box-shadow: 1px 1px 3px #888888;*/ -/* background: linear-gradient(to right,#f8f8f8, #e0e0e0);*/ - font-size: 10px; -} - -.forTesters { - background-color: #eeeeff; -} - -.AddItemToList { - background-color: #000099; - border: 1px; - color: white; - padding: 4px; - font-size: 50%; -} -.RemoveItemFromList { - background-color: #990000; - border: 1px; - color: white; - padding: 4px; - font-size: 50%; -} - -.GraphButton { - background-color: #dddddd; - font-size: 50%; - padding: 4px; -} -.GraphButton h1 { - padding: 1px; -} - -.reportid { - display: inline-block; - box-shadow: 5px 5px 10px #888888; - background: linear-gradient(to right,#f8f8f8, #e0e0e0); -} - -.reportingDeadline { - color: #ff0000; -} - -/* For two-column text display */ -.twocolumn { - -webkit-column-count: 2; /* Chrome, Safari, Opera */ - -moz-column-count: 2; /* Firefox */ - column-count: 2; - -webkit-column-width: 360px; /* Chrome, Safari, Opera */ - column-width: 360px; - -webkit-column-rule-width: 1px; /* Chrome, Safari, Opera */ - -moz-column-rule-width: 1px; /* Firefox */ - column-rule-width: 1px; -} - -.flex-container { - display: -webkit-flex; - display: flex; - flex-wrap: wrap; -} -.flex-container #headerflex { - align-contents: center; - justify-content: space-between; - margin: 0px; - padding: 0px; -} -.flex-logobox { - align-self: center; - margin: 0px; - padding: 0px; -} -.flex-blurbbox { - margin: 0px; - padding: 0px; - align-self: center; - margin-left: auto; -} -.flex-commentbox { -/* background-color: #f4f4f4; */ - margin: 0px; - padding: 0px; - box-shadow: 1px 1px 3px #888888; - background: linear-gradient(to right,#f8f8f8, #e0e0e0); -} -.flex-Fellowactionbox { -/* background-color: #6884C2;*/ - background-color: #cccccc; - margin: 0px; - padding: 5px 10px; -} -.flex-greybox { - background-color: #f4f4f4; - margin: 10px; - padding: 10px; -} -.flex-greybox320 { - background-color: #f4f4f4; - width: 320px; - margin: 10px; - padding: 10px; -} -.flex-greybox480 { - background-color: #f4f4f4; - width: 480px; - margin: 10px; - padding: 10px; -} -.flex-greybox640 { - background-color: #f4f4f4; - width: 640px; - margin: 10px; - padding: 10px; -} -.flex-greybox800 { - background-color: #f4f4f4; - width: 800px; - margin: 10px; - padding: 10px; -} -.flex-whitebox { - margin: 10px; - padding: 10px; -} -.flex-whitebox320 { - width: 320px; - margin: 10px; - padding: 10px; -} -.flex-whitebox640 { - width: 640px; - margin: 10px; - padding: 10px; -} -.flex-whitebox800 { - width: 800px; - margin: 10px; - padding: 10px; -} -.flex-whitebox0 { - margin: 0px; - padding: 0px; -} -.flex-whitebox0v { - margin: 0px 10px; - padding: 0px; -} -.flex-thesesbox { - width: 480px; - margin: 0px 10px; - padding: 0px; -} - -.pubtitleli { - martin: 1px; - padding: 3px 5px; - background-color: #f4f4f4; - border-radius: 4px; -} - -.ref_listing { - border-collapse: collapse; - margin: 0px 5px; - padding: 0px; -} -.ref_listing tr { - background-color: #dddddd; - border: 1px solid black; -} -.ref_listing td { - padding: 2px 8px; -} - -.tableofInvitees td { - padding: 0px 4px; -} -.tableofInviteesResponded td { - background-color: #f0f0f0; - padding: 0px 4px; -} -.tableofInviteesDeclined td { - background-color: #e09090; - padding: 0px 4px; -} - -body { -/* font-family: Merriweather, sans-serif; */ - font-family: 'Merriweather Sans'; - font-weight: lighter; - font-size: 80%; - margin: 0px; - padding: 0px; - background-color: #ffffff; -} - -body section div.sectionbox { - width: 300px; - background-color: #f4f4f4; - margin: 10px; - padding: 10px; - display: inline-block; - vertical-align: top; -} - -a { - color: #eeeeee; -/* text-decoration: underline; */ - target: _parent; -} -a:hover { - color: #ffffff; - text-decoration: underline; -} - -.submitButton { - background-color: #002B49; - color: #ffffff; - border: 1px solid #FFA300; - margin: 5px; - padding: 5px; -} - -header { - background-color: #002B49; - color: #ffffff; - border: 0px solid grey; border-radius:0px; - margin: 0px; - padding: 0px 5px; -} -header h1 { - font-size: 50px; - font-weight: 400; - margin: 10px; - padding: 10px; -} -header a { - text-decoration: none; -} -header a:hover { - color: #ffffff; -} -header img { - margin: 10px 20px; - padding: 0px; -} -header p { - border: 0px solid white; - margin: 25px; -} - -nav { - background-color: #f0f0f0; - color: #002B49; - margin:0px; - padding:0px; - float:center; - clear:both; - font-size: 12px; - font-weight: 500; -} -nav #loggedinas { - font-size: 12px; -} -nav ul { - margin: 0; - padding: 5px; -} -nav ul li { - display: inline; - margin: 5px; - padding: 5px; - background-color: #204080; - color: #002B49; -/* color: #222222; */ - float: center; - clear: both; -} -nav a { - margin: 5px; - padding: 5px; - background-color: #f0f0f0; - color: #002B49; -/* color: #000000; */ - text-decoration: none; - display: inline-block; - target: _parent; -} -nav a:visited { - color: #002B49; -/* color: #000000; */ -} -nav a:hover { - color: #000000; -/* color: #FFA300 */ - text-decoration: none; - background-color: #FFFFFF; -} -nav a:active { - color: #222222; -} -nav a.highlighted { -/* background-color: #FFFFFF; */ - border: 1px solid black; -} -nav p { - display: inline-block; - margin: 10px; - padding: 0px; -} -nav form { - display: inline-block; -} - - -ol { - list-style-type: none; - counter-reset: item; - margin: 0; - padding: 0; -} -ol > li { - display: table; - counter-increment: item; - margin-bottom: 0.6em; -} -ol > li:before { - content: counters(item, ".") ". "; - display: table-cell; - padding-right: 0.6em; -} -li ol > li { - margin: 0; -} -li ol > li:before { - content: counters(item, ".") " "; -} - - -p#goodCommenter { - font-size: 90%; -} - -section { - color: #111111; - background-color: white; - margin: 0px 15px; - padding: 10px; - text-align: justify; -} -section a { - color: #103050; - color: #6884C2; - text-decoration: none; - target: _parent; -} -section a:hover { - color: #103050; - text-decoration: underline; -} -section div { - margin: 0px; - padding: 0px; -} - -section h1, h2, h3, h4, h5, h6 { - margin: 0px; - padding: 6px 2px; -/* color: #103050; */ - text-shadow: 0px 0px 0px #222222; - font-weight: 500; -} -section form { - margin: 0px; - padding: 0px; -} -section form label { - color: black; - font-weight: 400; -} -section form ul li { - padding: 0px; -} -section form ul li label { - color: black; -} - -form#refereeSearch input#id_last_name{ - width: 20em; - margin: 1em; -} - - -section p { - margin: 2px; - padding: 2px; -} -section table { - margin: 0px; - padding: 0px; -} -section table th, td { - color: #102040; - text-align: left; - padding: 0px; -} - -section ul { - margin: 0px; -} -section ul li { - padding: 2px; -} - -#NWOOpenAccess { - font-size: 80%; -} - -.opinionsDisplay { - font-family: 'Merriweather Sans'; - font-size: 10px; - margin: 0px 4px; - padding: 1px; - display: inline-block; - box-shadow: 1px 1px 1px #888888; - background: linear-gradient(to right,#fcfcfc, #f0f0f0); -} -.opinionsDisplay ul { - color: #ffffff; - display: inline-block; - font-family: 'Merriweather Sans'; - margin: 0px; - padding: 2px 1px; -} -.opinionsDisplay_old ul { - border-radius: 2px; - color: #ffffff; - display: inline-block; - margin: 0px; - padding: 0px; -} -.opinionsDisplay ul li { - border: 1px solid black; - display: inline-block; - font-family: 'Merriweather Sans'; - font-size: 8px; - margin: 1px 2px; - padding: 3px 6px; -} -.opinionsDisplay_old ul li { - display: inline-block; - background-color: #204080; - margin: 1px 3px; - padding: 2px 4px; -} -.opinionsDisplay form { - display: inline-block; - font-family: 'Merriweather Sans'; - font-size: 8px; - margin: 2px; -} -.opinionsDisplay form input[type=submit] { - color: #ffffff; - font-family: 'Merriweather Sans'; - font-size: 8px; -} -.opinionsDisplay form input[type=submit].agree { - background-color: #000099; -} -.opinionsDisplay form input[type=submit].notsure { - background-color: #555555; -} -.opinionsDisplay form input[type=submit].disagree { - background-color: #990000; -} - -.reportRatings { - font-family: 'Merriweather Sans'; - font-size: 10px; - margin: 0px 4px; - padding: 1px; - display: inline-block; - box-shadow: 1px 1px 1px #888888; - background: linear-gradient(to right,#fcfcfc, #f0f0f0); -} -.reportRatings ul { - display: inline-block; - font-family: 'Merriweather Sans'; - margin: 0px; - padding: 2px 1px; -} -.reportRatings ul li { - border: 1px solid black; - display: inline-block; - font-family: 'Merriweather Sans'; - margin: 1px 2px; - padding: 3px 6px; -} - - -article { - background-color:#eeeeee; - border: 1px solid grey; border-radius:5px; - margin:5px; margin-bottom:10px; - padding:5px; -} - -footer { - background-color: #002B49; - color: #ffffff; - border: 1px solid grey; border-radius:1px; - margin:5px; margin-bottom:10px; - padding:5px; -} -footer a { - color: #eeeeee; -} -footer a:hover { - color: #ffffff; - text-decoration: underline; -} - -input, textarea { - background-color: #f8f8f8; - color: black; - border: 1px solid black; border-radius: 1px; -} -input[type='text'], input[type='URL'], textarea { - width: 80%; - max-width: 800px; - min-width: 200px; -} -input:hover { - text-decoration: underline; -} - -select { - background-color: #f8f8f8; - color: black; - border: 1px solid black; -} - -@keyframes journalsannounceanim { - 0% { background-color: #110000; } - 50% { background-color: #aa0000; } - 100% { background-color: #110000; } -} - -#journalsannouncesmall { -/* background-color: #880000; */ - background-color: #FFDDDD; - color: #FF0000; - padding: 10px; - font-size: 90%; - text-align: center; -/* animation-name: journalsannounceanim; */ -/* animation-duration: 2s; */ -/* animation-iteration-count: infinite; */ -} -#journalsannounce { -/* background-color: #880000; */ - background-color: #100000; - color: #FF0000; - padding: 20px; - font-size: 150%; - text-align: center; -/* animation-name: journalsannounceanim; */ -/* animation-duration: 2s; */ -/* animation-iteration-count: infinite; */ -} - - -/* SciPost Physics Journal style */ - -div.SciPostPhysicsBanner { - background-color: #002B49; - color: #FFA300; - margin: 10px; - padding: 10px 20px; - font-size: 150%; - text-align: center; -} -div.SciPostPhysicsBanner a { - color: #FFA300; - padding: 4px; -} -div.SciPostPhysicsBanner a.active { - background-color: #eeeeee; - border: 1px solid black; - padding: 4px; -} -div.SciPostPhysicsBanner a.inactive { - background-color: #dddddd; - border: none; -} - - -ul.NewsItemsList { - list-style-type: none; - margin: 0px; - padding: 0px; -} -ul.NewsItemsList li { - margin: 10px; -} -h3.NewsHeadline { - background-color: #002B49; - color: #C3D7EE; - padding: 10px; -} - -.SciPostPhysicsTab { - background-color: #002B49; - color: #FFA300; - margin: 2px; - padding: 5px 10px; - font-size: 120%; - text-align: center; -} -.SciPostPhysicsTab h3 a { - color: #FFA300; -} - -ul.SciPostPhysicsTabMenu { - background-color: #dddddd; - display: inline-block; - font-size: 16px; - padding: 0px; -} -ul.SciPostPhysicsTabMenu li { - display: inline-block; - margin: 0px; - padding: 10px; -} -ul.SciPostPhysicsTabMenu li a { - padding: 4px; -} -ul.SciPostPhysicsTabMenu li a.active { - background-color: #eeeeee; - border: 1px solid black; - padding: 4px; -} -ul.SciPostPhysicsTabMenu li a.inactive { - background-color: #dddddd; - border: none; -} - -ul.publicationHeaderList { - list-style-type: none; - margin: 0px; - padding: 0px; -} - -li.publicationHeader { - background-color: #fafafa; - margin: 10px; - padding: 0px; -} - -p.publicationTitle { - background-color: #eeeeee; - font-size: 16px; - margin: 0px; - padding: 10px; -} - -p.publicationAuthors { - font-weight: bold; -} - -ul.publicationClickables { - background-color: #f8f8f8; - display: inline-block; - list-style-type: none; - margin: 0px; - padding: 0px; -} - -ul.publicationClickables li { - display: inline-block; - margin: 0px 10px; - padding: 5px; -} - -li.publicationPDF { - font-size: 16px; - font-weight: bold; - padding: 2px; -} - - -/* For modal boxes (e.g. BiBTeX) */ -.modalDialog { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: rgba(0,0,0,0.5); - z-index: 99999; - opacity: 0; - -webkit-transition: opacity 200ms ease-in; - -moz-transition: opacity 200ms ease-in; - transition: opacity 200ms ease-in; - pointer-events: none; -} - -.modalDialog:target { - opacity: 1; - pointer-events: auto; -} - -.modalDialog > div { - width: 600px; - position: relative; - margin: 10% auto; - padding: 10px; - border-radius: 10px; - background: #ffffff; -} - -.close { - background: #606061; - color: #ffffff; - line-height: 25px; - position: absolute; - right: -12px; - text-align: center; - top: -10px; - width: 24px; - text-decoration: none; - font-weight: bold; - -webkit-border-radius: 12px; - -moz-border-radius: 12px; - border-radius: 12px; - -moz-box-shadow: 1px 1px 3px #000; - -webkit-box-shadow: 1px 1px 3px #000; - box-shadow: 1px 1px 3px #000; -} - -.close:hover { - background: #999999; -} - -#preview-comment_text { - border: 1px solid black; - white-space: pre-wrap; -} -#preview-strengths { - border: 1px solid black; - white-space: pre-wrap; -} -#preview-weaknesses { - border: 1px solid black; - white-space: pre-wrap; -} -#preview-report { - border: 1px solid black; - white-space: pre-wrap; -} -#preview-requested_changes { - border: 1px solid black; - white-space: pre-wrap; -} \ No newline at end of file diff --git a/static/scipost/font/SIL Open Font License.txt b/static/scipost/font/SIL Open Font License.txt deleted file mode 100644 index 572ee6b6edef50596e83aabbffda4711ea86e874..0000000000000000000000000000000000000000 --- a/static/scipost/font/SIL Open Font License.txt +++ /dev/null @@ -1,45 +0,0 @@ -Copyright (c) 2010-2013, Sorkin Type Co (www.sorkintype.com) with Reserved Font Name 'Merriweather' - -Merriweather is a trademark of Sorkin Type Co. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the copyright statement(s). - -"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. - -5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/static/scipost/font/merriweather-sans/MerriweatherSans-Bold.otf b/static/scipost/font/merriweather-sans/MerriweatherSans-Bold.otf deleted file mode 100644 index 7065a624d0f8084263c534b8f7dc2dd0b15bad73..0000000000000000000000000000000000000000 Binary files a/static/scipost/font/merriweather-sans/MerriweatherSans-Bold.otf and /dev/null differ diff --git a/static/scipost/font/merriweather-sans/MerriweatherSans-BoldItalic.otf b/static/scipost/font/merriweather-sans/MerriweatherSans-BoldItalic.otf deleted file mode 100644 index bdc5b50580a861d655cb3ff3046cba240c269741..0000000000000000000000000000000000000000 Binary files a/static/scipost/font/merriweather-sans/MerriweatherSans-BoldItalic.otf and /dev/null differ diff --git a/static/scipost/font/merriweather-sans/MerriweatherSans-ExtraBold.otf b/static/scipost/font/merriweather-sans/MerriweatherSans-ExtraBold.otf deleted file mode 100644 index 432b50682d47bc80b6728e39af0117f1ca15fd50..0000000000000000000000000000000000000000 Binary files a/static/scipost/font/merriweather-sans/MerriweatherSans-ExtraBold.otf and /dev/null differ diff --git a/static/scipost/font/merriweather-sans/MerriweatherSans-ExtraBoldItalic.otf b/static/scipost/font/merriweather-sans/MerriweatherSans-ExtraBoldItalic.otf deleted file mode 100644 index 68b6c8e2bb82ad6cd87de00cbc79bbe1744b17bd..0000000000000000000000000000000000000000 Binary files a/static/scipost/font/merriweather-sans/MerriweatherSans-ExtraBoldItalic.otf and /dev/null differ diff --git a/static/scipost/font/merriweather-sans/MerriweatherSans-Italic.otf b/static/scipost/font/merriweather-sans/MerriweatherSans-Italic.otf deleted file mode 100644 index 0a67c106a3b3edbda067946cd84d9c7e1209c777..0000000000000000000000000000000000000000 Binary files a/static/scipost/font/merriweather-sans/MerriweatherSans-Italic.otf and /dev/null differ diff --git a/static/scipost/font/merriweather-sans/MerriweatherSans-Light.otf b/static/scipost/font/merriweather-sans/MerriweatherSans-Light.otf deleted file mode 100644 index f4bf840f280a7ff30add26bdbcf35c784b5045c2..0000000000000000000000000000000000000000 Binary files a/static/scipost/font/merriweather-sans/MerriweatherSans-Light.otf and /dev/null differ diff --git a/static/scipost/font/merriweather-sans/MerriweatherSans-LightItalic.otf b/static/scipost/font/merriweather-sans/MerriweatherSans-LightItalic.otf deleted file mode 100644 index ac12bcf621e4bb6fd6d61f71d6d7388c3648d3b7..0000000000000000000000000000000000000000 Binary files a/static/scipost/font/merriweather-sans/MerriweatherSans-LightItalic.otf and /dev/null differ diff --git a/static/scipost/font/merriweather-sans/MerriweatherSans-Regular.otf b/static/scipost/font/merriweather-sans/MerriweatherSans-Regular.otf deleted file mode 100644 index b26e76a7fa2f904f98d2613e61ab10e4a476fe96..0000000000000000000000000000000000000000 Binary files a/static/scipost/font/merriweather-sans/MerriweatherSans-Regular.otf and /dev/null differ diff --git a/static/scipost/images/FB-f-Logo__white_29.png b/static/scipost/images/FB-f-Logo__white_29.png deleted file mode 100644 index d00e4ba7fca04362e95d8ff317e9036506bca346..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/FB-f-Logo__white_29.png and /dev/null differ diff --git a/static/scipost/images/FOMlogo_fc.jpg b/static/scipost/images/FOMlogo_fc.jpg deleted file mode 100644 index f2067c4af590760e93a53821a8ed2cfc82051839..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/FOMlogo_fc.jpg and /dev/null differ diff --git a/static/scipost/images/NWO_logo_EN.jpg b/static/scipost/images/NWO_logo_EN.jpg deleted file mode 100644 index 7fcf52313a6beedcd5c45bb50df17784564027be..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/NWO_logo_EN.jpg and /dev/null differ diff --git a/static/scipost/images/Twitter_Logo_Blue.png b/static/scipost/images/Twitter_Logo_Blue.png deleted file mode 100644 index b5eebc812d6bb83f2c60fc84548d4372d34e82a6..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/Twitter_Logo_Blue.png and /dev/null differ diff --git a/static/scipost/images/feed-icon-14x14.png b/static/scipost/images/feed-icon-14x14.png deleted file mode 100644 index b3c949d2244f2c0c81d65e74719af2a1b56d06a3..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/feed-icon-14x14.png and /dev/null differ diff --git a/static/scipost/images/feed-icon-28x28.png b/static/scipost/images/feed-icon-28x28.png deleted file mode 100644 index d64c669c7589d3a886682dbd1f3c83b716a420f5..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/feed-icon-28x28.png and /dev/null differ diff --git a/static/scipost/images/logo_scipost_RGB_HTML.pdf b/static/scipost/images/logo_scipost_RGB_HTML.pdf deleted file mode 100644 index d7853377f2bd1a70d85cee3a42805968af4f77f7..0000000000000000000000000000000000000000 --- a/static/scipost/images/logo_scipost_RGB_HTML.pdf +++ /dev/null @@ -1,2893 +0,0 @@ -%PDF-1.5 %âãÏÓ -1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R]/Order 6 0 R/RBGroups[]>>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 23612/Subtype/XML/Type/Metadata>>stream -<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> -<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c111 79.158366, 2015/09/25-01:12:00 "> - <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - <rdf:Description rdf:about="" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:xmp="http://ns.adobe.com/xap/1.0/" - xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/" - xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" - xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" - xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" - xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/" - xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" - xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" - xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/" - xmlns:pdf="http://ns.adobe.com/pdf/1.3/" - dc:format="application/pdf" - xmp:MetadataDate="2016-01-28T15:23:13+01:00" - xmp:ModifyDate="2016-01-28T15:23:13+01:00" - xmp:CreateDate="2016-01-28T15:23:13+01:00" - xmp:CreatorTool="Adobe Illustrator CC 2015 (Macintosh)" - xmpMM:InstanceID="uuid:c8f1a3be-bc84-2649-9a21-9c24cb9822a9" - xmpMM:DocumentID="xmp.did:b29d397b-5b1f-463f-9e2b-faf72acdb0d5" - xmpMM:OriginalDocumentID="uuid:5D20892493BFDB11914A8590D31508C8" - xmpMM:RenditionClass="proof:pdf" - illustrator:StartupProfile="Print" - xmpTPg:HasVisibleOverprint="False" - xmpTPg:HasVisibleTransparency="False" - xmpTPg:NPages="1" - pdf:Producer="Adobe PDF library 15.00"> - <dc:title> - <rdf:Alt> - <rdf:li xml:lang="x-default">logo_scipost_RGB_HTML</rdf:li> - </rdf:Alt> - </dc:title> - <dc:creator> - <rdf:Seq> - <rdf:li>Charlot Luiting Ontwerp</rdf:li> - </rdf:Seq> - </dc:creator> - <xmp:Thumbnails> - <rdf:Alt> - <rdf:li - xmpGImg:width="256" - xmpGImg:height="80" - xmpGImg:format="JPEG" - xmpGImg:image="/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAUAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
FXYqskmijp6jha9KmmEAlBNLldXUMpDKehG4wEJWz/3En+qf1ZCf0n3Mocw8h0L/AI7en/8AMTD/
AMnBnneh/v4f14/e9jqv7qX9U/c9hz0d4x2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxVTnuYYF5SNSvQdz8sMYk8kEgIB9bFfgiqPFjT9WWjC1nK0ut7/ABQ7ezf2YfB818VGW1/b3B4q
SH/kbY5XKBDMTBRGQZOxV2KuxV2KpBqRc3knPsfh+XbMrHycefNFaIX5yD9igr88hmZ40yn/ALiT
/VP6sxZ/Sfc3w5h5DoX/AB29P/5iYf8Ak4M870P9/D+vH73sdV/dS/qn7nsOejvGML1z80tH0fVb
jTZ7S4kltyFZ04cTVQ21WB75mYtFKcRIEbtE84iaQP8AyunQf+WG6/5J/wDNWWfydPvDH8yO5dH+
dHl0uBJZ3aKf2gsbU+jmMB7On3hfzMWT6H5x8u62eFheK89Km3cFJPoVqV+iuY2TTzhzDdDJGXJO
cpZuxV2KuxV2KuxV2KuxV2KuxV2Kpfrev6Tolstzqc/oRO3BDxZyWoTQBAx7ZZjxSmaixlMR5sdg
/NXy3c6la2FrHcTSXUyQJJwVUBkYKCeTBu/hmQdDMRJNbNQ1ESaDMsw29jl1cNPOzk7Voo8B2zLj
Gg40jZVLSwlualSFQbFj4+2CUwExjaIfRZgPgkVj4Go/rkRmDLwyssreaHUIhIpX7VD2PwnvhnIG
OyIggp1mM3uZlUEsQAOpOwxVCSapZoacyx/yRXLBjLAzDS6tZk7ll9yP6Vx8Ir4gRUUscq8o2DL0
qMgQQyBtDXUmnF+FwVLr4g1Fd+oycRLoxkY9VS1ktGUpbkUXcgCnXIyB6piR0VJ/7iT/AFT+rKp/
Sfc2Q5h5DoX/AB29P/5iYf8Ak4M870P9/D+vH73sdV/dS/qn7nsOejvGPn/8xv8AlNdU/wBdP+Ta
5v8ASf3Qddm+sqHlnyfq3mP6z+jzEPqvD1fVYr/ecuNKBv5Dks2ojjq+qIYzLkmGofld5wsoWmFs
l0iCrC3cO1PZTxY/QMrhrcZPOmRwSDFUeWGVXRmjljIKspKsrA7EEbgjMoi2l7j+W3m+XXtLeC8Y
HUbKiyv09RG+y9PHajf25pNZp/DlY5F2GDJxDfmzDMNuQGra/o2kRiTUruO2DbqrGrsP8lBVj9Ay
zHilP6RbGUxHmxmX83fKCPxU3Eo/mSKg/wCGZT+GZI0GTyavzEUw0z8x/KGoyLFHeiCZtlS4UxVP
+sfg/HK56TJHoyjmierJQQRUbg5jNrsVQOra7o+kQibUruO2RvshjVmp/KoqzfQMsx4pTPpFsZTE
ebGZfzc8no3FXuJRX7SRUH/DFTmSNBk8mr8xFHaf+ZHk6+cRrfiCRtgtwrRD/gmHD8crno8kejIZ
onqyC5vbW1s5LyeQJaxIZHl6gIBWu1e2UCJJoc2wmhby380vNOgaxpFpBpt4txLHcc3VVcUXgwr8
QHc5s9FgnCRMhWziZ8kZDZgfl65gtdf0y5nbhBBdwSSuaniiSKzHbwAzOygmBA7i48DUg9w/5WN5
K/6uif8AAS/805pfymXuc/xod6x0ZHZG6qSD9GWA21EJno9zGFMDGjE1X3r2yjLHq245dE0yltdi
q2SRI0Z3NFUVJwgWgmkhu72W5epNEH2U7ZlRgA0SlayC1nn/ALtCwHU9B95wmQHNAiSrNpV6BXgD
7AjIeIGXAUw0mN0t3V1KtzOxFOwyrKbLZjGyXap/vdL/ALH/AIiMux/S1T5onRPty/Jf45DN0Z4k
yn/uJP8AVP6sxZ/Sfc3w5h5DoX/Hb0//AJiYf+TgzzvQ/wB/D+vH73sdV/dS/qn7nsOejvGPn/8A
Mb/lNdU/10/5Nrm/0n90HXZvrLLvyQ/6XX/Rr/zOzE7S/h+P6G7S9XqWaty3h35sabb2XmxngUKL
yBLl1Gw5lmRj9PCubvQzMse/RwNRGpL/AMorlovNwiBoLi3ljI8aUf8A40wa8Xj+K6c+p6P5984J
5c0sGGj6jdVS1Q7hafakYeC1+k5rtLp/El5BysuThHm8KvLy8v7p7m6le4uZTV5HNWJP+ewzexiI
ihydeSSd2RWP5Z+cby3E62YhRhVFmdUYj/VJqPppmNLWYwattGCRSTWND1bR7n6tqVs1vKRVeVCr
DxVhVW+g5fjyxmLiWuUDHmyv8u/PtzpV5FpmoSl9KmYIjOa+gx2BBP7HiO3X54mr0okOIfV97dhz
UaPJ7Dqd9Hp+m3V9IKpaxPMy+PBS1PppmohHikB3ubI0LfOOr6tfatqEt9eyGSeU1Pgo7Ko7KOwz
oseMQFB1kpEmynWg/l35l1qzW9to44rZ6+lJO/HnQ0JUAM1PemU5dXCBo82cMMpC2tX/AC682aZG
ZZbP14V3aS3PqgfNR8f08ccerxy6rLDIM/8AJ9lc6j+VkllBRp7iO5iiDGgqzsAK9swNRIRz2fJy
MYvHTznzD5J13QLaO51FI1ilf00KOGPKhbt7DNji1MchoONPEY80nsrSa9vbezgAM1zIkMQJoOUj
BVqfmculIAEnowAs0y3/AJVJ5x/33B/yNH9MxPz+Nu/LyewajpxlJmi/vP2l8f7c1OPJWxcucL3S
gqysQQQw6g7HMhpR1pqskdEm+NP5v2h/XKpYgeTZHJXNN45EkQOh5KehGUEU2g2gNalIjSIftkk/
IZbhG9sMhSuCIyzJGP2jSvtl0jQagLLI440jQIgoqigGYhNuQAuwJdiqQ6p/vdL/ALH/AIiMysf0
uPPmidE+3L8l/jkM3RniTKf+4k/1T+rMWf0n3N8OYeQ6F/x29P8A+YmH/k4M870P9/D+vH73sdV/
dS/qn7nsOejvGPn/APMb/lNdU/10/wCTa5v9J/dB12b6yy78kP8Apdf9Gv8AzOzE7S/h+P6G7S9X
qEs0UMTSzOscSDk8jkKoA7knYZrALcu3gX5heYLfXPMstzbHlawItvA/8yoSS3yLMae2b3SYjCFH
m67NPiknP5OafJN5invKfurSAgt/lykBR/wIbKe0J1ADvLPTD1Wlv5n6m995vukLViswtvEPDiKt
/wAOxy3RQ4cY82OeVyTL8odAhv8AWZ9RuFDx6cqmJT09aSvFv9iFP00yvX5TGPCOrLTws33PZs0z
nJH500CDW/L91asga4RDLaPTdZUFVof8r7Jy/T5TCYLXlhxRfO+dA617to0lx5i/LYRg1urizktq
nvJGGjBP+sVBzR5AMebyt2EfVjeFyRyRyNHIpSRCVdGFCCDQgg5vAXXvXPy7/MLSm0220bUnW0ub
ZRFBM5pFIo2Ucv2W7b9fwzU6vSS4jKO4Lm4cwqi9GBBFRuDmuclZFBDCpWKNY1Zi7BQFBZjVjt3J
64SSVpgH50/8cGx/5iv+ZbZn9nfWfc42p5B5l5U/5SjR/wDmOtv+Ty5ss/0S9xcXH9Q976PznXZu
xVRubOC4X4x8XZx1GSjMhiYgpHdWsltJwbcHdW8RmTGVtEo0raZctFcBCf3choR79jkckbDKEqKt
rf8Aexf6p/XkcPJORD6YQL6Ovv8A8ROTyfSxhzT7MVyHYq7FUh1T/e6X/Y/8RGZWP6XHnzROifbl
+S/xyGbozxJlP/cSf6p/VmLP6T7m+HMPIdC/47en/wDMTD/ycGed6H+/h/Xj972Oq/upf1T9z2HP
R3jHz/8AmN/ymuqf66f8m1zf6T+6Drs31lI7XUL+z5fVLmW3505+k7JypWleJFaVy6UAeYawSOS6
51TUrpAl1dzToDULLI7gH5MTjGERyCmRKM0HyvreuTrFp9szoTR7hgViTx5Odvo65DLmjAbllDGZ
cnunlLyxa+XdJWyhPqTMedzPSheQin0AdAM0efMckrc/HjERTw7ziHHmvVw5qfrcxHyLkr+GbzT/
AN3H3OBk+ovQvyTZf0bqa/tCaMkexU0/Vmu7R+oOTpeRek5rnKcSACSaAbknFXy7IUMjFBRCSVB7
Cu2dOHUvcfymVh5NhJ6GaUr8uVP15pNd/eOfp/pa85/ltYa87Xto4s9TI+J6fu5adPUA3B/yh9xx
0+sMNjvFcuES3HN5BrnlvWdDuPR1G3aKpPpyj4o3p3Vxsf15t8eaMxcS4U4GPNN/KX5haxoEiQux
u9M2DWrmpUeMTH7Py6ZTn0scm/KTZjzGPue4aXqdnqlhDf2b+pbzryRu/gQR2IOxzSTgYmjzc+Mg
RYYP+dP/ABwbH/mK/wCZbZndnfWfc4+p5B5l5U/5SjR/+Y62/wCTy5ss/wBEvcXFx/UPe+j8512a
iLyD1mhZuLqaUO1flkuA1bHiF0rZFklutPH6ca1/ecqge1MuwjdqyJXFX1Up15Cnzrlx5NQTfWIS
8CyDrGd/kcoxHduyDZKI5GjkV1+0pqPoy8i2kFkNvcxXEYdD817g5iyiQ5INquRS0GU1oQaGhp2O
KpFqn+90v+x/4iMysf0uPPmidE+3L8l/jkM3RniTKf8AuJP9U/qzFn9J9zfDmHkOhf8AHb0//mJh
/wCTgzzvQ/38P68fvex1X91L+qfuew56O8Y+f/zG/wCU11T/AF0/5Nrm/wBJ/dB12b6yyL8odF0n
U/0t+kLSK69L6v6XqqG48vV5Ur48RmPr8ko8NGuf6GzTxBu3pUHlXyzAQ0WlWisDUN6EZYfIkVzW
nPM9S5Qxx7kzRERQqKFUbBQKADKmbeKvD/zY0iSy80vdhaQagiyo3bmoCOvzqA305u9Dk4sddzga
iNSvvU/yz80waFrTx3j8LG+URzSHojqSY3PtuQfnh1mAzjtzCMGThO73NHR0V0YMjAFWBqCD0IOa
N2DFfzE812ujaJPbpIDqV4jRW8QPxKHHFpCOwUdPfMrSYDOV9A05snCPN4OASQAKk7ADN6699G+U
tJbSfLlhYOKSxRAyjwkcl3H/AATHOdzz45kuzxxqICI0jW9L1e1F1p1ws8R+0FPxKfB1O6n55HJj
lA0QmMhIbK2oafZajaSWl7Cs9vKKPG4qPmPAjsRghMxNjmkgEUXzfq9pDZ6reWkEnrQ288kUUv8A
MqMVB+4Z0eORMQS6uQo09S/JW5mfSdQt2qYoZ1eOvQGRfiA/4AZq+0QOIFzNMdiqfnT/AMcGx/5i
v+ZbYOzvrPuXU8g8y8qf8pRo/wDzHW3/ACeXNln+iXuLi4/qHvfR+c67NItTikW6dypCMRxbt0zJ
xkU0TG6HWaVRRXYDwBIydBhawkk1JqT3wqmWmWDmQTyjiq7op6k+OU5J9A2Qh1TYgMCCKg7EHKG5
Jb3TJImLxAvF4DcjMmGQHm0ShSCVnQ1UlT4jY5ZTBe1zcMKNK5HgWODhCbKa6MD9Vb/XP6hlGXm2
4+SA1T/e6X/Y/wDERluP6WufNE6J9uX5L/HIZujPEmU/9xJ/qn9WYs/pPub4cw8h0L/jt6f/AMxM
P/JwZ53of7+H9eP3vY6r+6l/VP3PYc9HeMfP/wCY3/Ka6p/rp/ybXN/pP7oOuzfWWXfkh/0uv+jX
/mdmJ2l/D8f0N2l6vUs1bluxV2KpN5r8sWfmLSmsrg+nIp5284FTG4FK+4PcZdgzHHKwwyQEhTwn
XvLGs6FcmHULdkWtI51qYn/1X6fR1zeYs0ZiwXXzxmPNRtNe1yzh9G01G5t4e0cU0iL9ykDJSxRO
5AKBMjkUMTdXdxUl7i5lPU1d2b8STktgPJHN6d+Xn5bXMFzFrGtR+m0R52tk32g3Z5PCnZfvzWav
WAjhj83Kw4OpeoZrHLfNUsWtaHflH9fT72PaoLRvT2YUqPcbZ0gMZjoQ6veJ7kXN5081zQNBJqtw
YmHFhzIJHgSKHIDT4wboJOWXeltjYXt/cpbWcL3Fw/2Y4wSf9r3y2UhEWWIBPJ715D8sN5e0JLaY
g3kzGa6I3AcgAKD/AJIFPnmh1WbxJ2OTsMUOEMf/ADp/44Nj/wAxX/MtsyOzvrPua9TyDzLyp/yl
Gj/8x1t/yeXNln+iXuLi4/qHvfR+c67NxAIodxiqi1nat1iT7gMlxnvRwhcltboapGqnxAFcBkSo
AVMCXYq7FVN7eCQ1eNWPiQK4RIhBAaW0tVNREtfGgw8RXhCrkUrTHGTUqCfEgYbRTaoi/ZUD5CmC
0rZ/7iT/AFT+rIT+k+5lDmHkOhf8dvT/APmJh/5ODPO9D/fw/rx+97HVf3Uv6p+57Dno7xiHk07T
5XMkttE7t9p2RST8yRkhMjqigvgtLW35ehCkXKnLgoWtOlaDAZE81AVcCXYq7FXYqtliiljaOVFk
jYUZGAKke4OEGlSiXyb5Ulfm+k2vKtfhiVd/koGWjUZB/EWHhR7kbYaNpOn1+o2UFqT9oxRqhPzI
AJyEskpczaREDkEZkGTsVUbqys7uP0ruCO4j/klRXX7mBwxkRyKCAeaVt5K8pF+Z0m1rvsI1A39h
tlv5jJ/OLDwo9yZWWm6fYp6dlaxWyHqsKKgP/AgZXKZlzNsxEDkiMilTntredQs8SSqDUB1DAH6c
IJHJBCkmmaajq6WkKupBVhGoII6EGmHjl3rwhE5FLsVdirsVdirsVdirsVdirsVdirsVWyqWidR1
KkD6RkZCwUxNF51pXk/zBb6pZzy2wWKKeN5G9SM0VXBJoG8M43S9j6mGWEjHYSB5jv8Ae9Jn7Rwy
xyAO5B6F6PnaPNOxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv/9k="/> - </rdf:Alt> - </xmp:Thumbnails> - <xmpMM:DerivedFrom - stRef:instanceID="xmp.iid:e4b55aca-26cf-4661-9c23-1256b1f2ac01" - stRef:documentID="xmp.did:e4b55aca-26cf-4661-9c23-1256b1f2ac01" - stRef:originalDocumentID="uuid:5D20892493BFDB11914A8590D31508C8" - stRef:renditionClass="proof:pdf"/> - <xmpMM:History> - <rdf:Seq> - <rdf:li - stEvt:action="saved" - stEvt:instanceID="xmp.iid:e5c611e7-8e77-42f4-903e-fa0d244104f3" - stEvt:when="2016-01-28T15:10:11+01:00" - stEvt:softwareAgent="Adobe Illustrator CC 2015 (Macintosh)" - stEvt:changed="/"/> - <rdf:li - stEvt:action="saved" - stEvt:instanceID="xmp.iid:6d71a60d-2d0c-4b46-a2e8-4b345e8c0c35" - stEvt:when="2016-01-28T15:15:39+01:00" - stEvt:softwareAgent="Adobe Illustrator CC 2015 (Macintosh)" - stEvt:changed="/"/> - <rdf:li - stEvt:action="converted" - stEvt:parameters="from application/postscript to application/vnd.adobe.illustrator"/> - <rdf:li - stEvt:action="saved" - stEvt:instanceID="xmp.iid:4dc15747-8da4-443b-a61b-a03bbcb75c6f" - stEvt:when="2016-01-28T15:20:48+01:00" - stEvt:softwareAgent="Adobe Illustrator CC 2015 (Macintosh)" - stEvt:changed="/"/> - <rdf:li - stEvt:action="saved" - stEvt:instanceID="xmp.iid:b29d397b-5b1f-463f-9e2b-faf72acdb0d5" - stEvt:when="2016-01-28T15:23:12+01:00" - stEvt:softwareAgent="Adobe Illustrator CC 2015 (Macintosh)" - stEvt:changed="/"/> - </rdf:Seq> - </xmpMM:History> - <xmpTPg:MaxPageSize - stDim:w="210.001556" - stDim:h="148.000861" - stDim:unit="Millimeters"/> - <xmpTPg:PlateNames> - <rdf:Seq> - <rdf:li>Cyan</rdf:li> - <rdf:li>Magenta</rdf:li> - <rdf:li>Yellow</rdf:li> - <rdf:li>Black</rdf:li> - </rdf:Seq> - </xmpTPg:PlateNames> - <xmpTPg:SwatchGroups> - <rdf:Seq> - <rdf:li> - <rdf:Description - xmpG:groupName="Standaardstaalgroep" - xmpG:groupType="0"> - <xmpG:Colorants> - <rdf:Seq> - <rdf:li - xmpG:swatchName="Wit" - xmpG:mode="RGB" - xmpG:type="PROCESS" - xmpG:red="255" - xmpG:green="255" - xmpG:blue="255"/> - <rdf:li - xmpG:swatchName="Zwart" - xmpG:mode="RGB" - xmpG:type="PROCESS" - xmpG:red="29" - xmpG:green="30" - xmpG:blue="28"/> - <rdf:li - xmpG:swatchName="PANTONE 2718 CP" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="103" - xmpG:green="132" - xmpG:blue="194"/> - <rdf:li - xmpG:swatchName="PANTONE 137 CP" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="246" - xmpG:green="164" - xmpG:blue="11"/> - <rdf:li - xmpG:swatchName="PANTONE 2707 CP" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="211" - xmpG:green="226" - xmpG:blue="245"/> - <rdf:li - xmpG:swatchName="PANTONE 2707 RGB" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="195" - xmpG:green="215" - xmpG:blue="238"/> - <rdf:li - xmpG:swatchName="PANTONE 2718 HTML" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="103" - xmpG:green="132" - xmpG:blue="194"/> - <rdf:li - xmpG:swatchName="PANTONE 137 RGB" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="245" - xmpG:green="161" - xmpG:blue="25"/> - <rdf:li - xmpG:swatchName="PANTONE 7463 HTML" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="20" - xmpG:green="44" - xmpG:blue="69"/> - <rdf:li - xmpG:swatchName="PANTONE 2717 RGB" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="167" - xmpG:green="197" - xmpG:blue="233"/> - <rdf:li - xmpG:swatchName="PANTONE 2717 CP" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="179" - xmpG:green="201" - xmpG:blue="234"/> - <rdf:li - xmpG:swatchName="PANTONE 2011 CP" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="244" - xmpG:green="150" - xmpG:blue="7"/> - <rdf:li - xmpG:swatchName="PANTONE 7463 CP" - xmpG:type="PROCESS" - xmpG:tint="100.000000" - xmpG:mode="RGB" - xmpG:red="23" - xmpG:green="41" - xmpG:blue="69"/> - </rdf:Seq> - </xmpG:Colorants> - </rdf:Description> - </rdf:li> - <rdf:li> - <rdf:Description - xmpG:groupName="Grijswaarden" - xmpG:groupType="1"> - <xmpG:Colorants> - <rdf:Seq> - <rdf:li - xmpG:swatchName="C=0 M=0 Y=0 K=100" - xmpG:mode="RGB" - xmpG:type="PROCESS" - xmpG:red="29" - xmpG:green="30" - xmpG:blue="28"/> - </rdf:Seq> - </xmpG:Colorants> - </rdf:Description> - </rdf:li> - </rdf:Seq> - </xmpTPg:SwatchGroups> - </rdf:Description> - </rdf:RDF> -</x:xmpmeta> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 1/Kids[7 0 R]/Type/Pages>> endobj 7 0 obj <</ArtBox[164.524 181.827 430.756 262.675]/BleedBox[0.0 0.0 595.28 419.53]/Contents 8 0 R/CropBox[0.0 0.0 595.28 419.53]/LastModified(D:20160128152313+01'00')/MediaBox[0.0 0.0 595.28 419.53]/Parent 3 0 R/PieceInfo<</Illustrator 9 0 R>>/Resources<</ExtGState<</GS0 10 0 R>>/Properties<</MC0 5 0 R>>>>/Thumb 11 0 R/TrimBox[0.0 0.0 595.28 419.53]/Type/Page>> endobj 8 0 obj <</Filter/FlateDecode/Length 1109>>stream -H‰tVK®7÷*¼ös}ü›ò@Œ"dW @$Èþ%NÙewsCô¤w}lW¹¾§úåãkxùðšÂ›·¯áøv¤ Ôc–{ŽÜÂéðûŸÇáŸ#ņMüïø׋†ïŸ—÷¿§ðùßã[ ðG [ -Q`-±°jx|=ìÈþŸ=J_ŽScR -g‰Ú«í1ž‹M$œ$QK_ðqœT¡±ísN‘“˜pë7Høe²ûkÇ~›‚´>#©±vÓîÆÂ2<Ñ;ìÊÁ0BÌ2Ǧ›bªåºÁKÏ)ŠIr,8×»èði1§bÎsŽ=™ƒUàt²˜ ©AØV7¶Ðø¾€ÙcPÀ˜G4^ô <Sá’P$™–æ#^¤CûÞñ@iÔÆAbaEªXár‹Þø!2•jà(‰åøqüu|ºÜŠI¨cï•ûOÅ€\G@"s"Ëö“q±ŒÒ ¶›hÖB²Xù1B×ÕLçH,F²ûNØÜé×H††rEoB |¹\çÓ6øÁVüXIäjšÓˆÍ:=È£|8֔ͺlE‚tUK½‡za³Šc¿ß(e‰/tá˵S ˆ,º8—h?0.ϾòÃiú¶Ò-Iã³µ©t8ª*¤öaQ†èùuÃ:º¡N¿£¥ag§ÏŽ³k‡3^C¹pF˜.„[=3^¾v9„-¯…kØ/8†ÒηI.7 ï7ÖδaÉ/Ÿ|°hY„ -,A$Øž·~{pQ”&ÂÚxXRF¡T8 ÍâõBÖ šP-bšnÝÐA§É,CZSC3în(‘3h5@g﮹ö¼<‡à²·í>ûSk12O}™(añ÷q˜…2DÃT³db—@Q)¬r´_v~È 02–{¥£^p†pä8rŒPXíÃzµ"ûÏŽÛa–þÌ ’‹‘9òŒÆÍ6n²h4ŠV@vj½Ð1&NÊІÉâȉ’3…ÁI8¸˜ñŸòÖêðqø£ŽÓ’šýeÍ*\†•k©ÖPQ'ãW»…ºõºõ:´qd5:Î4·%éÈôûÒ&emƒÚ`„*ý²Ô±96ŸÜ7Ü¢%~YûLßHb,Ö;‚Y[Ûÿ²w˲¹bÊŽá-ÃBÔÌÝ- w¾ch;¾`Ã�Ìž»±1Ô j5Ó÷ dÄÞi„n`ÌÁœóª -£äd„ésláÛgº¢lV! áÕÚX´ÑÕ†5kOvõ ™AÛPaßKFk\˜ÙCÄskk×…5}œÜWU.—Î{™ÚÃ-ªêÀd]·ðŽ×ÚÀWÊ,ügYFßvRG£QÁm„ÛÀ¨(ù_ r•d|6›´ùöUs«ƒf|y¢\^Z{[@Ê/vÆuÄ“‘“ûz–Ïuï{ýì·P Œäm¼î§½šŒòî>q??�‹m endstream endobj 11 0 obj <</BitsPerComponent 8/ColorSpace 12 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 52/Length 215/Width 74>>stream -8;Z\r_%":9$j4PW?Q(9_=>0-)N1b;c8T'WaO4m;MIII;)%K[5!&Ml`Z+b.T',9O>l -ep;7?j4$+F8X1KdcVdiG?j-;\XbpL(&i]J4T.Ok)BeX:ZWLg(kOk44pPBMjhaL!)q -A3'0DJ%N$9NLn:+.OR(?1E$TD;q1AS-oC=U%Ag?X\%;4=E'#"?"6]]k7C;kQD]IZ< -&jcjIpNR)HRUBUr~> endstream endobj 12 0 obj [/Indexed/DeviceRGB 255 13 0 R] endobj 13 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 -VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< -PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 5 0 obj <</Intent 14 0 R/Name(Laag 1)/Type/OCG/Usage 15 0 R>> endobj 14 0 obj [/View/Design] endobj 15 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>> endobj 10 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 9 0 obj <</LastModified(D:20160128152313+01'00')/Private 16 0 R>> endobj 16 0 obj <</AIMetaData 17 0 R/AIPDFPrivateData1 18 0 R/AIPDFPrivateData10 19 0 R/AIPDFPrivateData11 20 0 R/AIPDFPrivateData12 21 0 R/AIPDFPrivateData13 22 0 R/AIPDFPrivateData14 23 0 R/AIPDFPrivateData15 24 0 R/AIPDFPrivateData16 25 0 R/AIPDFPrivateData17 26 0 R/AIPDFPrivateData18 27 0 R/AIPDFPrivateData19 28 0 R/AIPDFPrivateData2 29 0 R/AIPDFPrivateData20 30 0 R/AIPDFPrivateData21 31 0 R/AIPDFPrivateData22 32 0 R/AIPDFPrivateData23 33 0 R/AIPDFPrivateData24 34 0 R/AIPDFPrivateData3 35 0 R/AIPDFPrivateData4 36 0 R/AIPDFPrivateData5 37 0 R/AIPDFPrivateData6 38 0 R/AIPDFPrivateData7 39 0 R/AIPDFPrivateData8 40 0 R/AIPDFPrivateData9 41 0 R/ContainerVersion 11/CreatorVersion 19/NumBlock 24/RoundtripVersion 19>> endobj 17 0 obj <</Length 2263>>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 19.2.1 %%For: (Charlot Luiting Ontwerp) () %%Title: (logo_scipost_RGB_HTML.eps) %%CreationDate: 28-01-16 15:23 %%Canvassize: 16383 %%BoundingBox: 164 -238 431 -156 %%HiResBoundingBox: 164.523615593092 -237.703125 430.756384406906 -156.85498046875 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 147 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0.967886865139008 0.646508157253265 0.044760588556528 (PANTONE 137 CP) %%+ 0.964639663696289 0.631456732749939 0.100225828588009 (PANTONE 137 RGB) %%+ 0.956936180591583 0.591410279273987 0.028271390125155 (PANTONE 2011 CP) %%+ 0.828281760215759 0.89000278711319 0.964072227478027 (PANTONE 2707 CP) %%+ 0.767015099525452 0.845207214355469 0.933761537075043 (PANTONE 2707 RGB) %%+ 0.702013313770294 0.790864527225494 0.918364107608795 (PANTONE 2717 CP) %%+ 0.657926559448242 0.776175737380982 0.914809584617615 (PANTONE 2717 RGB) %%+ 0.406832367181778 0.520643770694733 0.762775480747223 (PANTONE 2718 CP) %%+ 0.407001376152039 0.521217703819275 0.763168215751648 (PANTONE 2718 HTML) %%+ 0.092804610729218 0.161556884646416 0.271596699953079 (PANTONE 7463 CP) %%+ 0.081244751811028 0.173065781593323 0.274310678243637 (PANTONE 7463 HTML) %%+ 0.000655231939163 0.001053869607858 0.000255830644164 ([Registratie]) %AI3_Cropmarks: 0 -419.530000000001 595.280000000001 0 %AI3_TemplateBox: 298.5 -210.5 298.5 -210.5 %AI3_TileBox: -105.36 -489.264999999999 677.639999999999 69.7349999999997 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 1 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 %AI9_OpenToView: -67.1325301204834 6.22891566265298 2.49 1928 1162 18 0 0 -5 38 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -67.1325301204834 6.22891566265298 2.49 1928 1162 18 0 0 -5 38 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:-8 -606 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 18 0 obj <</Length 6797>>stream -%%BoundingBox: 164 -238 431 -156 %%HiResBoundingBox: 164.523615593092 -237.703125 430.756384406906 -156.85498046875 %AI7_Thumbnail: 128 40 8 %%BeginData: 6618 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD2FFFCFC7C1C1C9FD7BFFCF9FC19EC9FD7BFFCFC1C1C1C9FD72FF %A8FFA9FD06FFCF9FC198C9FD71FFA9FFA9AFA9FD05FFCFC1C1C1C9FD70FF %AFA9A8AFA9A9A9FD05FF9FC19EC9FD51FFA9AFA9FFA9AFA9FD19FFA9AFA9 %FFA9FD05FFCAC7C1C1C9FD05FF7E857EA97E857EA97EA984FD35FFA885A8 %FD06FFA9A9A8AFA8A9A8AFA8A9A8AFA9FD15FFA9AFA8A9A8AFFD05FFCF9E %C19EC9FD04FFA85A2F542F5A2F542F5A2F54537E84FD2FFF7E5A535A2F84 %FD05FFAFAFA9FFA9FFA9FFA9FFA9FFA9AFFD18FFA9FD07FFCFC7C1C1C9FD %05FF5A5A547E5A5A547E5A5A545A545A7EFD2EFF85535A5A5A84FD04FFA9 %AFA9AFA8AFA9AFA8AFA9A9A8AFA9FD20FFCF9FC19EC9FD04FFA85A535A53 %5A535A2F5A535A535A53545AFD2DFF7E5A535A2FA8FD05FFA9FFA9AFA9FD %05FFAFFFA9FD0FFFAFFD11FFCFC1C1C1C9FD05FF545A5A5A54A97E857E7E %545A545A5A5A7EFD0BFFA8A9A8AFA9FD0FFFA8A9A8AFA9FD08FFA9545A54 %5A84FD04FFA8A9A8AFA8FD09FFA8FD09FFA9AFA8AFA8A9A8AFA8FD04FFAF %A8AFA8AFA8FD04FFCF9FC198C9FD04FFA85A535A535AFD05FFA9535A535A %535AA8FD07FF7E7E535A2F5A535A59A9FD0AFF7E7E535A2F5A535A59A9A9 %FFFFA9547E535A535A535A5A7E597EFFA9FFA9AFFD12FFA9AFA9FFA9FFA9 %FFA9AFAFFFFFFFA9FFA9AFA9FD05FFCFC1C1C1C9FD05FFFD055AFD06FFAF %545A5A5A53A9FD05FFA95A5A545A547E5A5A545A547EA9FD07FF5A5A545A %547E5A5A545A547EFFFF7E5A545A5A5A547E5A5A545A54A9AFA8AFA9FD10 %FFAFA8AFA9AFA8AFA9A9A8AFA9FD04FFAFA8AFA9AFAFFD05FF9FC19EC9FD %04FFA95A535A535AA9FD06FF7E2F5A535A7EFD04FFA92F5A535A535A2F5A %535A535A535AA8FD05FF5A54535A535A2F5A535A535A53FFFF842F5A535A %535A535A535A2F5AFFA9AFA9FFA9FD0FFFA9AFA9FFA9AFA9FFAFFFA9AFAF %FFFFFFA9AFA9FFA9FD05FFCAC7C1C1C9FD05FF5A5A545A5AFD07FF845A54 %5A547EFFFFFFA9535A5A5A535A5A847E7E545A545A545AA9FFFFFFA85A5A %5A545A5A847EA97E5A535AAFFF84847E7E54FD045A857E847EA8AFA8A9A8 %AFA8FD0CFFAFA8AFA8A9A8AFAFFD05FFA8FFFFFFAFAFA8A9A8AFFD05FFCF %9EC19EC9FD04FFA85A535A2F5AAFFD06FFA92F5A535A5AFFFFFF545A535A %535A84FFFFFFA884535A535A2F7EFFFFFF842F5A535A53FD05FFA87E53FD %05FF7E54535A2FA8FD05FFA9AFA9FFA9AFA9FD0BFFA9FFA9FFA9FD0DFFA9 %AFA9FFA9FD05FFCFC7C1C1C9FD05FF5A5A545A5AFD07FF845A547E5484FF %FFA85A547E5A5AA8FD06FFA9547E5A5A54FFFFFF7E5A5A5A53A9FD0DFFA9 %547E5A5A84FD06FFA9A9A8AFA9AFA8FD09FFA9A9A8AFA9AFFD0DFFAFA9AF %A8AFFD05FFCF9FC19EC9FD04FFA85A535A535AFD07FF84535A535A7EFFFF %7E535A535A7EFD08FF7E2F5A53547EFFFF842F5A535A5AFD0DFF7E5A535A %2FA8FD07FFA9AFA9FFA9AFA9FFAFFD07FFA9AFA9AFFD0EFFA9FFA9AFA9FD %05FFCFC1C1C1C9FD05FF54FD045AFD07FF535A5A5A53A9FFFF545A5A5A54 %FD09FFA85A545A547EFFFFA85A54FD045AFD0CFFA9545A545A84FD08FFA9 %A9A8AFA8A9A8AFA8FD05FFA8AFA8A9A8FD0EFFAFA8AFA8A9A8FD04FFCF9F %C198C9FD04FFA85A535A535AFD05FFA9535A535A535AA8FFA85A535A535A %AFFD09FF535A535A53FFFFFF5A54535A535453A9FD0AFF7E5A535A2FA9FD %0BFFA9AFA9FFA9AFA9FD05FFA9FFA9FD0FFFA9FFA9AFA9FD05FFCFC1C1C1 %C9FD05FFFD055AA984A97E85545A547E5A5A7EFFFFA9547E5A5A7EFD0AFF %7E547E5A5AA9FFFFFFFD045A545A547EA8FD08FFA9545A545A84FD0CFFA9 %AFA8AFA9A9A8FFFFFFA8AFA9AFA8FD0EFFAFA8AFA9AFAFFD05FF9FC19EC9 %FD04FFA95A535A535A2F5A535A2F5A535A535A5AFFFFFF8454535A537EFD %0AFF5A5A535A53A9FD04FF7E5A535A535A535A7EFD07FF7E5A535A2FA9FD %0DFFA9AFA9FFA9AFFFFFFFAFA9FFA9AFFD0EFFA9AFA9FFA9FD05FFCAC7C1 %C1C9FD05FF5A5A545A5A5A545A5A5A545A545A7EFD04FFA9545A545A7EFD %0AFF7E545A545AA9FD05FFA87E545A54FD045AFD06FF85535A5A5A84FD0E %FFA8A9A8AFA8FFFFFFA8A9A8AFA8FD0DFFAFAFA8A9A8AFFD05FFCF9EC19E %C9FD04FFA85A535A535A2F542F5A2F5A537EA8FD05FF845A535A2F7EFD0A %FF535A535A53FD08FFA95354535A53545AFD05FF7E54535A2FA8FD0FFFA9 %FFA9AFA9FFFFFFA9FFA9AFFD0EFFA9AFA9FFA9FD05FFCFC7C1C1C9FD05FF %5A5A545A5A857EA984A9A8FD09FF5A5A545A5AFD09FFA85A5A5A547EFD0A %FF7E5A5A5A545AA8FD04FFA9547E5A5A84FD0EFFA9A9A8AFA9AFFFFFA9A9 %A8AFA9AFFD0DFFAFA9AFA8AFFD05FFCF9FC19EC9FD04FFA85A535A535AFD %0EFFA97E535A535A84FD08FF842F5A535A5AFD0BFF5A5A535A2F84FD04FF %7E5A535A2FA8FD05FFAFFD09FFA9AFA9FFA9FFFFFFA9AFA9FFA9FD0DFFA9 %FFA9AFA9FD05FFCFC1C1C1C9FD05FF54FD045AFD0FFF7E5A5A5A537EFD08 %FF545A545A54A9FD0BFFA953FD045AFD04FFA9545A545A84FD04FFAFA9A8 %FD07FFA8AFA8A9A8FD04FFAFA8A9A8AFA8FD07FFAFFD04FFAFA8AFA8A9A8 %FD04FFCF9FC198C9FD04FFA85A535A535AA8FD0EFFAF2F5A535A2F7EA8FD %04FFA9535A535A2F5AA9FFFFFF5AA9FD06FF7E54535A537EFD04FF7E5A53 %5A2FA9FD05FFA9FFA9FFA9FFAFFFA9FFA9FFA9FD06FFAFA9FFA9AFA9FFAF %FFAFFFAFAFAFFFFFFFA9FFA9AFA9FD05FFCFC1C1C1C9FD05FFFD055AFD10 %FFA9545A547E545A7EA9A885545A5A5A545AA8FD04FF5A537E84AFA9FF7E %5A547E5A5A7EFD04FFA9545A545A84FD05FFAFA8AFA9A9A8AFA9AFA8AFA9 %A9A8FD05FFA9A9A8AFA9AFA8AFA9A9A8AFA9FD04FFAFA8AFA9AFAFFD05FF %9FC19EC9FD04FFA95A535A535AA9FD10FF7E2F5A535A535A2F5A535A535A %53547EFD05FF545A535A535A535A535A535A53AFFD04FF7E5A535A2FA9FD %05FFA9AFA9FFA9AFA9FFA9AFA9AFA9FD08FFAFA9FFA9AFA9FFA9AFA9AFAF %FFFFFFA9AFA9FFA9FD05FFCAC7C1C1C9FD05FF5A5A545A5AFD12FF85545A %545A5A5A545A5A5A535A84FD06FF5A545A545A5A5A545A5A5A53A9FD05FF %85535A5A5A84FD06FFA8A9A8AFA8A9A8AFA8AFA8FD0BFFA8AFA8A9A8AFA8 %A9A8FFFFFFA9AFA8A9A8AFFD05FFCF9EC19EC9FD04FFA85A535A2F5AAFFD %12FFA95A5A2F5A2F542F5A537EA8FD07FFA87E53542F5A2F542F5A5AA9FD %06FF7E542F5A2FA8FD09FFAFFFA9FFAFFD11FFA9FFAFFD11FFCFC7C1C1C9 %FD05FFA9FFA9FFA9FD15FFA9A984857EA9A8FD0DFFA8A97E857EA9A9FD09 %FFA8FFA9AFAFFD33FFCF9FC19EC9FD7BFFCFC1C1C1C9FD7BFFCF9FC198C9 %FD7BFFCFC1C1C1C9FD7CFF9FC198C9FD7BFFCFC8C1C1C9FD7CFFCAFFCFFD %4CFFFF %%EndData endstream endobj 19 0 obj <</Filter[/FlateDecode]/Length 24684>>stream -H‰Œ—ÛndžŸ ï07¤ uWuõ!¹"e ÐE‚@‰ß4¹VHbÀ0@üöùªgvW;=Û²œ©é®Ã_ÿ_U[Q‰Ál’çZsnª5Åš§ÚcHÒ”dz÷›ßމŹÕ*M³&Ié\Ó¢¥„'lgS‹SJ©:5›9¾L¢XZ´–B“Å_¤ÒôàÇÆ:[ ÒR*5ÙÔòR“D™¹ž2þ‰M‘µqJ‰©âÝ«ÌÚª6Ó&" ‹8ç ‹rMÝíŸø¦ïúŸû}6ÓÚ’¥fcp –<}ñ—fÍ%âŒj02ËL¸¥á!¡“+I³z®0ˆÄ„…Í1dÅ¢IÌ8®a–$œ«ZÓÑ¢‡eVÃ…ÎäsRœ5ò@jÝ—jÅ-Dr,2,JåH/Öøq#{ø“É™FDæìIÉ-Dr¼ÈÖ¢2$d8gH*ð'`‘Íä\«É¹€^ºè�Kq‡g-¸^¢Q›^ºóË4‡œxYSª´%³LäÒ -~bf>ž÷åKéÞõ¯°M‘çÂÕuïÞÁbãörþÖ**¹0r‘CT9& -%Ý¢TþïÙõųU’ÔI0ç2.9ÇÒóI®žu%Øî9k -G®$þá¢>ÅÕÒEGº8å8Ö<WÚÛv`—ióã>ÚÌB†—MÚFœ“›¨ñRgãMGŽß6ãÉ©½^>…²}y -~Ë"ÛLmq¾Å™-8ß¼„\s6¢@aœ_¤°|±‹ïóWKÍÏǯX}yø¶çtn¤{ÚØÜ¢Ä^+KU`�?~µÍÃéž+ :â16” kƉè‘�^<±žsA·¨™•\2zn€y…2Yž!0X2À‡Î¦¸Øµ(7 ÅÚGâ(*fBìç´"sÍþã&\°ZDÕx †ãF&ðæ7åÄNµÄÍRÌéy¹ÀÚ\ð–ϳx·’@WâwÔÄgF*3ì2˜=…R–Ç@èX@SÁà¨z]%“ýÊ5Ô£hŽ+Z›ÜŸl™ÿúM4øMd‰Jí…ô’A"°nQp -‹hâ`G“ -MÛ2‚Bì7¥¹Ÿ§uŽ$‹ÏC-ÝQI%7r7óLâçYÖÒ/ˆsÌ ')-bWŽ¡pÙt½€R•êV™y'/@ÖÒ¢G�o<¦ ºð©Â›Xpá®Tt>àj£54qœIIìŸåœÊÞ9q–ž’„+±íùö‘IÏQÞ‰è)VøwRC6AUÏæró^Ê¥=-VCHñJu°jtKëU—"ssêþBêq'Šd'êT]A›Ÿj;X…{<¦¡Â€w´æþÁ¸q¥oÈ!RF¬ôNp-Ú·›§Ô <çÖݺË�~néÑIɺC$L¨I¬ø„jŒ±g -¼ð@JÒLåO/:Í^ýj{ &}�)VG¯]ò墢°õšžmð®ÿÎO“é¬iL ³8ìà³BìcA±rw±R1W -<o œçh¸Ž0êÑ5#mí¿m°5#¸ªîç4 9mãzD¬å±)XTZ-kÓm{ªá»9íl»‘Zñä$uªÝiê×y�¦ˆåHrhi†{ö¹àÄMkÙ™lKéDF¤vúhˇ§k:Ýõr å!Ú•ÑOéÙêÀERj2HÑPÖAÒvÑ1H〱A^tÕy܃¸M2C£ Áî6ì0°}uÖÙFN/·?öÉsùuûO¿`zõýׯ÷_ÓÇçûÇO‡¯/SÕ׫ ~÷¿ß0BŽAHÃÔ’7§Ûk·Ãf$Ûškåòñöá›ÂˆÜûÖC¢¦RQWÒPÖàâzûå4ßÞò×ï¾ç·7Ï/ß}zxùôôõþùçéþèÛŸ§·yzùpxxz~$Œß÷¨þ¯×o?î?ÿùþåùÓ1ž^½»yÿ§5ø¿ÿôôüeyõºõÇéÕÍãÓ‡»›÷íGþöòóçÃÝùúÕŠßÝë8ýð¸›hùU‰>þÙ³ºæ O¯^O?üÃ̾Iè»gžÂLrM¨}…äçH‚@Iw —ù -†ã§`Cv@·©AY\ÍCãý«rüwèïúWßšØ}dš9 èWƲ™»A½9=²ð¤æ}½À:d7uN²eáøƒ¤òMñi–E%¹\ð¹¦Ö—È…|P§¨¥±‘/À_Ú¥¹¹Ÿ.Í€ª3[iË<Gt9†<ZŸ1#ŸJ2RTiçÁ±ƒÔ¹¯Ú:(ŒàÚ×>ãáûuéw°íCTÈKj:-;Œø˜%É®ËÔã;¨O=Á÷,vÅì"å¼àŠHš;Í¥ÉÆQtÏÝXŽ‡ÍùƲ”÷>×5íZJv¾HssöÌÊ�Ë•0tCeËõœÔźN -i;ICÉá³®–ø/sÎçË*È·}9ÙVÅAÿº³ôN±“0«8¢Ðwµ=Ð(¢$¹ŸÔt|LEoñI–ãÛ ¶L:Oõ P'µã(µùˆ‰529•À•>fÃð°xq†/»‡�"ˆ0W› >ŸV€ËDt¥ K\)ŽëÖE.#╹ѣîʶQ–1¯D«µSI.+êb“râ�…è ÙIYýÁ€(|íª_Üê¸kÀDe«s†t÷o�w(sÈ3ÔÓ bè ¦“ÀîÔÇ^p¼iÓbã1Û&]Ùöú~H+A¸e›Ô™vks$¶¡´'è¸ueGhÙ}‹økâðnUõ+j§··OOŸQÚ÷½y9<½{ÿﻇî_®º*Û΂8Ýøë?ü6fv_jè%=Q-2F÷ªAŠ+”ÑK^ž ->“ºRHŽ¸32ÃÊdªŒ -L\¸`Álš±`%ÁdyvÞ ˜ŠQ›¤2NNhvJºÐŽaÁðÏ)BÊçjè5…ÆD*J[ÐìîB«P›LÒŠÍÞן�C~ésµŸ‘àU[x™™fö-¹—µÄ‰Ûa-™€Ò¬Þ 8͉:›ÚÄÜ—Gc{o`z]ø…E["Pæœ[#013D¦o?ÈÀT47}É9”·ïi›y¤;JËVwTÅCÁÉÎ9Y³¸šQˆp `壶ÞÄJ Uú9 -½`u¼‰\42`dÑ/è©ptêÕírAuKbÖ'e(›…�zÔ öÎø¢"žø~—›ŠOÏ9¹fÛjžžMnÁX^\'A’{L?bn¢ÜêõÏ]E«SÍ1Dƒ‘",2t`ºÞ$k}öíx¤sƒW“ÎœŒ%Ä×*…¢±ì‰o%ô#¾À¯LeÆžáLƒÀ¦B@œì‰¯kL$«ùp›ÉpB¦ú9%ø9¾4çÛ|Ú.rY*Ù{C=ÃÜô‹Ýóî8Õîmj¯§7h¯(MÄ�Û˜bÿÇ{½ìØ‘TQ�ý•¶|ÉŒŒÈÇ7_�‚!ò€QÄæûYûÄua*¯0 A·ºeWEFœç~Ð"ãBöŸ¾jZS¹èÖ7ò_y Öøªu?•JbN1ž)"àkLññö)ð»K¹–´èí›ô@è;!Ñà߀ÈKðð0fb°õûŸ¾yOÝH|m‰²Ù÷NKù?}°uõ[ß>ù‰À!ló÷ùË?g(r‘w÷âåéÅöߤˆE¤xÇl?ù[Eýü¿J1šøãXq+'¶™á7¾íÈÿði›ÌÅôüò·ÖŸÿôöÃçÏ¿úòåçŸ~ó—¿þ1g'ÌÇÜ}g þOæî•ŸûWkðïù;XaEiS´îŸ¯ÙZH¸G)í-7<LÒÃ$ËZo mŸÇ@ ÷ÇŽeœ‚"ïùê^.¯O?Ç;>¶@8è:¢W@¡oG¬Ÿýo“59Lô¶•ø€#°±›ó�Xjm}Û¢C5«…Yrâĉþº™uwÐ͈n‹ö0iB©\äsèš^ôôÃY/ŸK”ÿwbx¹ -øx‰‚ “$dÛOM@ÆÉz3·Í-+U‰Gõ\*º^ÐÙûÙI4èĨpq{û]]Cö*Ûzꊀ¦sªTYùÝ*þá¹CuPnÂw'ÄÞ:*XÕÛýÁ:J±µ¸Ì¯Ãàêßq80ÞÚ$ð=t¸f€`Ò& J5¢2¨Ê5DG”µ§‡,ÕîG§¶ -‡† qÁ~‹ÐÓ‰–P C„ *›3. 8„íÄþ¬O¹n!LŸ´þ|€&1¤)Þ:‹oéƒäkªÃ<<)Y*„ ·Âš5(%RvǼL©VT½ºþÏ/SMí™õo¿~ -†=:(’bOåG™‰"‹ÓÕ&SGýÊK³³c˜‡h%`bµj†´:¨¸g`C\z1¢%Ô£µˆ|Z2n‰ë{ûR2a¦Ç[Ü<ÛÕ;+™�ãŒ]äÆÀ#7©‚³™â½à´é” qˆ§9_â t«…Ýõ]úÜ#ÀÖóÅËÍ2€ÑsªzH¨@˜›j{€úªL4–8Ë9o±&çÚ¡•í™ -±ÏÀÄC˜³\c‰ñw$¦-U)Kqa “wÉ^3yDE‘Ödž|w=~|ç™Rþ¿ø¹É¯ë'ÁTÚr\ËI5\IFSŒ×‚c-Ë‚ -3ëÿ[$r*¦È‘\ªEj{zÅÃϦ/2P{.]ó™±…Äè\± °Õ[€-¶ôéªöRÚ¡áÜøCe|HOÍùÿ¶ïÓM²š†eìõÅ+.S$r™o>r1;׶FÎÛoß¼ÒñP⊷ؗWZÔøzºl¼5ü -@2æ±°q£… ¸½?@Pœy�}L|o ZýüÄÏM-AIF>�óÞZ3ë¤VÈìP**lõp?x{¼M×<Ëo¥Miƒÿ=Ñ™«uËô··Ô/ï8€,ì¤>N†ô¢C‹La¯ÊŒ=3µÖD*û£zGôdpÃe³7¾C5óe¬Þ¢o -Z¬`ßW ZªÓ²œð+ÙwÆãÉVTå\(qÄåä”:HznÚ -¡ðÚZhž%¤´1ÓÕs‚šªf””Ý€8„o¯¹I¨Ü›Váì)»ò®þ¤¼v–óÚaU�Ãt,VÉ & æa>ÕÏÕXÒEÈmÍJ¤“3ì9¦{š¶L®áêÒÍËD5>Í‚z 7.cÉnç´¦÷‰û™NL£òç“ûgÆþ|Éb©¿—Șē= -Û£‹ | Ó2º³ÇÛT*ÒÌ ÃŸ$ÛâÑLG¦Ž¡¹Eo“�hW§dg(ÍVšz�t¡~_º#¥;GMbêÔ#ÔÕX>*9ÌpÔ -¶Gt‡\åצ¡Ã9RY-_g¢æÊB"5ÀùÇ®ë¤~Ú HçÇFÖAýÁuy¤ØW4Ée6žCeFUR¼á–rB -NáHÁefÔ×}’uïm+hk À`‘#–7!B#ÙÒÃÛïk¶Ðu-L_£(ŽW·œ³e}§Mc¥Ð ¿ è~=ÀA‡îχn‡ö‡ -˜19Û²ÂÈæ=‹pû\´ÊoñZº†MwÒAU{ßÞ{o/ö V¾ÕŸ#µ@ÙÅ¢Æ3u¸(õæÏ0ÍýD‰vKߟ‹x;e]‹Y•Œã å´àš+,}*UŸ';wê'HÅL†ÚèìñlºÙ¯É3û[üXP˜® -û×æËø-£°oubÒw–"í†5<a³P[Aü^Õ8ÃdsT_KކŠ«ZbÃzX»XGNpzô‡ë»Ý(5öÛ%?º)B{d5[´øÞß›rÒìÖÝ涮‘ã0‚ìØE…J²)V¥J¹YÔ¼´‘®¥‘Cß6¢B ðwÃ2mf©š•eO–Ôw¥-H‹P q)Äê€_u¢zÞ\€g Ú„„2©¹ðÒâב@{tIQN -åÈ@Gûë@\_ÒZœÓÂm2¹âí"©Ì¥TÈîýkoÝÃìø¥@볦aT5‘–pף׉ž"Ø/�±Sþ“,~>lrNÄæÏòD>½ÃÖRw1Œ¢ÅtÀ™púNq - -ªrñ)Ñm e‹ncšZ©4˜TÌi -£€A=0]Ÿ^$l1Uu/xFoæûo^2îöSûâÍp[›Ý1áF#ö¢$dØ"±TqŸé[¢ËÌSVRt(¢‚²Æ4òÙ>.@©ááwN€>ñ¾$WË<÷Ù€½ÈôY¼-‹ÌOSZzHèkF¥”ÖŒ‘ôÅRíÍ&ÇEü´1exu-ãw=é®dOŠÙSb1LblE›än—·‡fxÄKÍÇVt$E,R)ZÅA,¸b]ªTAŠÂâÓð–èß—–1%MöÈgPùd^bøHŽ'1uOGzR=ó -nBÙKbÖ OxEëkZ'Ì9|ºö$3 ƒkgäEÍY åkIsb›GÏÂH²è¨„O(y&tTYu|ÎVDóyÌûã_§yH#Ž’¶.‰¢n‘ˆxÜĪÚö–ž„W-OÒQ©áRí5*³y^©¹ê¨tô*Ö“¤XTopüú -•z¹žÏZÐ*ô›Z\Y…ŽkEÛË6£êÙ‹Úƒj˜ŸÀ‹®&5*ŸÛ‰“üض8>ÛÓ®YÛ©i¢šâK¼—´~ÙKY¯·D»^Š0bò•ãš2’t1Í_û»N-ÏßR�/®±í$—kåý|ÊíÄ«”î§>–FM¨•±$òÊËs«-fQzüÌë6=Ử†öE»¨bÓ9F�à›ùdÆ&AªîëéR§çý]á×Ã9 ø<Õûbª@étÀ±ãõNÔC˨‡ñ‹ÝJ÷¨¹]ªeœ·“vx–”j)ØËWÖ5:GY™qÇ -îçy`ÖÈ™Üíç.#°7ö¶ˆÄ:RP¦õì @¿Â’ØvÜ!ÔûŠë{”TﯡxD“F‡7^áøàüL¯ƒÔhï0²&¨—ìböñšA*ߌbò=B®™h0#—ö9g³Ä¸D†ì{Hh¼fE1<ZmÕR%c§¶�òe܉™…³bXÞŒªñ%¿h5³w*x¢»Ëz¼[ó‚¯Û]j$ÆÃ뉱¯/$y -º~/¤ðqÜ¥ÏX͇IvÂ5ûv—Ovš¬CÂ\æôR}åžZ;1”|Pq#Æq%YÝDpô»Lw¶ˆ•¨5£÷ZQŽhë5™§«Ù•©ý …ůê›rÝÕíà©dÖäèË·óQω3°u -2)ô]dû¥ˆò ¶åº‹õ¿UÄ‹ÑaìG´Ö]ôgK!S„ƒEUŠ›q˜Y3k ôÊudÁÎ5¡2ò¸{èøˆ‘·çbY?úŸ�©ŠlÒ±üÊF ªk[qv};Îw†:Áeüý’¹ù·û‰W>ð~꣟|Å4¨åÇÍ“ñI‡=uÅ¿ý¥£Mº[p u$Ûö¿^fW¶ãFt¥-¸±˜¢ïñAöOD÷-uô£ÑëFƒ@!+3 -ÞnC›èM#¨çÿ×cºÁþ{"òÿ¹u¿ƒŒ} -®†¹äF‡âHA^yqW¢lj8$°ÌI¨$HɆ:<VüsŸÚHæÔ‰V¹^öÁ˜R¹Œ!^;A«è'á1t0/çY˜f’¶jø+VЕéÊ*cJ÷K3hÌe®^£<Ä•ï âÃfëy·À5Ï›g™ÜºÄ¢ãŸ -M‚Úù<+ªûm6¨Âô _Wɧž˜n»*GIìÏ'_KÕÑçôl^ ïeÄqA –èÆearÀ¹ARäK˜ÝOÎ×hì,˜]è,ºiÙ¶ÔZûùÚÚÛçLMI4œøcCš¥T®„véCÙ)ëõÍAL"\¬ÑïÜßëbÿÝÒû%öáYÁ¼:MÿËÒóšwÈ7úJ|Gôà\íâ5…!è·›º ÊHÆ4d-nP -qmüd0ëz{FÀò0¤íÙ 7|™Ö¹›ŽßÇã€-@i‡(Yø?°¸_ -¾É1Z.¶e4DWp§éï†YüâŠ�mí–Ò¢h0gm)>Àe-ii@¨’J¸‰cÔ ¶9XMô¦ƒˆ76îÄnŒ/<5L -AÝé _Z$‘jG&Ud#gˆ7øéÇPÄ-xûT56ˆ÷€\}…Ù¾‘þP‹ÓÞÀ%)àM¥x4ÃN‹ÐK‰zëÞÔ3-Nº$ ‡$ífÚ;G¼3ÙËË¡†çàr¶ß»—vK€÷ÁyÃðãž›Ú:n -WÌp>‰×0Ì…§¦Æ\…÷]Á ,WâæÞþ¹j‡ÜÍq¢Ôâtò ‡q´xj?æ† bÔÕßéä-OvׄmKݽƒ-Ø;|€C»uxi(E#ÖŽ6¬f€iš5º[ÖFUëAê4@7 ïæe^MȤ7PÆo‡‹È¹xº¼ÉÚ{è‹câ;�_gák%.>hùéàIóª¡æ´Š&Ð&MT÷/‹ŒËp¼ë‡RpnèCÈðj§€VZ“ùŠ^mcD±‰Õ2C߸MÔu!ÙhwÁÜHÂ> B´¸çÌÚ¯Y7l^6sܤïÑH»K[¢Bö 4—[²æ8Ë•ôåf^tjXŽtÅ—Bn| F•ðì¡•gC%ûqÌd§c¾A1 8B%¹ìD*Þ«ˆ#ÜK猛S¾D!.)&Æ)” ò’ù‡ÀË´—âOøÒÀA™–«(å®Í±ÏÔ‘Ä0âú9ϳ mªGzr—;Qp€æ¶ˆgI˜Fcž„;wR¥Ñ¡:?€Ú×Ï‚ãŸ/´œBŸÒx¡ó•—yŠÓ¸Î§Z¼‰4ËMÊÌ·Xž¢[uSG5éžC¸ ü1'åL‰§î]£Cõž|žÝÓ’¤Šl—f,¿=p¶O"Å)nq½ô1•3øXÁ¾#ÐáTªÆâÒKmo#Ïù/OÅ @yú/û¡âœìb_b©|·}ºWãrBi]§{ú'€Ã4ù\ðW纣¿Û&’¢ ÞŠ" œ§o7S˜×ç·dæ:ÜŸíqh0ã;¸=“£U@½ý:4:€xV¥5Ògx5+樨<0´_“á_!زÇL“_e ÷™£›ñ•Ëq®»ñ3…½)7Í_K=¼ƒ%žÔ)mŸ<Àde4C�n€ôNík<YÄExÄÏbšŒ$wðr߉BpU JãË´jþ‰TVŸ¢àxdÕf0Å‚%ÛLÔΔ~ÛißeLÍ/Á=AО¤ ÕžÌ1Ê>a’›#À -'–YN(mBé¢=)ç¿¿t3m´Âœr”¨ñ¤á–ø÷*ªžÉázaj¼¨óÒúE_7S?Ñ\'ŒïhvÛïU%Åçÿvƈ‘Ï1Á«"hí‡2§»ÃŸãF£›²¾èhÇ_þ#TÉ覇ñï¸Ó1ú 5F4]9µï<òœ ¢ò½•—Ž)¬9¢(A²ŒQÎiîXñÏ=ùü5žûÜ¥O{%ïšMîùÇ/:BÒˆ/Þþ¯1´‘eÍâæôïÏ1ôž+ÀªÂè*3£¡û4>L²èÛ¬kׯW‡‰Õ•µ;4'ãŽRÙ#Nú‡¿šj¼e²6‘Ÿ5ÃcE$Zäè‚»Utk'LìV"ˆ~ïéCÒk™Í [E(ü”jÌ>\:Ê< -çláVá¤|jÃ!í€ ¯pgìž‘—£�2á(Ì*+°©ê -)è–š²)È—ÛRúëþS¡åeÕth`Õü�ü96Ëù¤6ýÀj@^%¼%z€Ûåjr¦®4§ˆ’˯ç§s’ØÄWXÅŸ1jà>QK¹bÙjú¥ˆO¾D¯ÖM9`' È+“Y‚Bã\/…,€°ûÂ×¾p·ãšWÑ©»—p4åÓacz¾zjò—4n[»O¬™DYGõê^ÉŪ,m˜ï:"“$iÏÒböÁ¿â•š×v¿á,e(!Œò› ã& DÿšsÆþ”·ç£!Àh4CIcÄ -€Ú�#³Î±ÿ¤/H+ï= -¦æŠê ö—ñ,b÷®BWY™ìÖ6M3Œ}á@Ÿk£-:›ø¥ã¶°×yœÝ0Æú)šöŽñ@кԾD¢¤¶ðœBoqà�Mõé™ù#!Þ$1Yi©<Ýà0hõ%B$¡sò¶yNÞú¸“>E”¨±~¨+87>À -‚N›�_ÛûÑéÔû9εë~W -é.–°œ¦zcžbU¦4Bu3 ¿–Èydh9œñ¿;‹Z(äøιÒÑ% Õû;õÖâ>Í’è&@I‰ûtU8júý¾`y¹`™{^;Ž‚Kí: . ¬!F#!q�!*%¨L‚3ØšôfØs+°û´…”÷s#¨©‚·Š +®‚E©åk†ù÷* óãb½cìò L7õÒ€œ}|ò¸éºøûk¹è• -öÙƒØ"ï;uÇ“B×ñû-þ5¨e|(pê -�Ê1Í0XhU¤è|(;!&üÜBÄpàº!ŽÓÐÙÓ(w>t]”Œii™Ê_!>dè¨iU{Ô´4+&°ÝÊZå®&Ó¢Û¯N' Žáµx8…ÄwAÞ@qÐ@zYA›Ê^´'Z÷8y¬zÞÒ7käg¡fÔ‰©©*æ1xy\êr [Tê2ÆGŽA²IŽ|ż ~w*xîd||ÄMfJÏ£œ+Þ®t®:JÉiphw-{¾”w‰|µ9å9qþù8táu¼gÇWS0àA¿•ày‚eÞôƒÅfOñug³Ùú•`s¾båÞÕ»b¡úM™é‹q)ƒðXØk=;ÇøøÇ”€Ç—´Þ;š˜“n„�¶‡1�÷6x {ŸæÒ+b¯^ ,ŸùÝ£°� +lRÂ~8Vû~`颟fIvI_¬¶Ëð¾ -©éͲù4“Ho›“9¿Ì…Û+L¡9ý™q5G¯Æ!Î|é*˳uRÚÞÎŒòhpH™9æ{ÖõqÛMeÖëêâ™™pî°1Ô|=ã–À†T‘'ܲ¤úÛ}Ô>^â¿3£,,…)ŒÔ’©Ñ»¬† ËÈ×;ˆz™‹Uiõ>¦\ÕÜ}²w%„¼ zWÝ¿IÊ?ʤ5§xk?9¬;.“X2N–óM8ÔCá_™°‹ÉSÛ¸Ÿ.þdË^ ÆYN,…X0I0¦oN¼«0S5‡^‹…õÄd:šGGå¬r¢<qû¿qÐÌÇdÃ�Æâ|b{“}Éôãjcî«]BâÛœ`Ï8Õ n“—yƒ2 9ºŠÁŒ‚¬sfÑkøGCÎÂÉÛìÓ"}Bž …->F(öþt ¦Ú‹NÏ)ì\ñ6Í«žSag Ï’²ÓÞU*¹ÞçR¯ëOX”ó9Üúâ$¡/¥ÿÿWXwÚŒLûç*ž -ãà²";¶ÃŸM’€ˆ^øj!eV@]ƒû”¶)—žµ‡Ÿ¿ßADª$aÀEŽ4Ç.‰ÆQÃ¥©#7'T(Ï�]‘ E›"¥IïòÃpD»W‹Y¶ÜáOJŠ¾$¤Ïþe¼\zëº(üWÎÐ.ªk¾yØŽ¬(2hiƒ¸#C‘”Ô@d‚Í¿ï·öáÕuHºJ;‘./ɽ¹öz”lw4ü“02Õ±»ÎWlî4‚�×Y_¥ô^PÛøéÀ_2kÙHžGÖIûIéƒ}ªGHíÙsD¼™zX¹%C@•„êGÓäÄ<q}³Êì‚’ˆ†_ã#JpHGƒ]D¥JR9^,9Z€çJߟ¦`!7I$öhVÜ…;ÞÔò¤ì)Õ•ú6êÊ…¡ôG¿Á†ú-u`ŸŒ©âd´pØs´ŒW,Å*fÁ#/Ä©5ZàkNÖ}¿h*‹¸1HÏ’Rãd ˜± -ÄÅÝùdöiQ‹¨XS•-]�CKÅáy›ZÆǦ¶Á‡ÈàëãÂ^O˜Íbš×až5ÇþÉ¡±‚á¤õäR´Ÿ³©%s»5ÛÂCåž`&Q†ÇÌÃñ#°ä¡aRG+Lsl`ˆYô¢QqmÊuŽ÷郇ú4SáƘ‰ð@(åj<‹l8ûpyøƒð(æ×6Œ¡—¼šÓ}ÍéHžÀ¢Éö§ÆÜe—`¶=˜ -ë-e®bÅ#bøÓ(‡ƒŸÂ]ª¹8XŸM¿¡g´¹Eå#åfZl_:S᪄ë´[½>«W<bíÃ<D1JTøãñø#¥EzMöqŠBíá15¨M;×NîÓ>@¿h&h¦Y/&¤˜ÅöXf4›¥ÁÑ`aQ ¬‡FX+n¼G·� °;èm5[2 r#=:@d:™È’(pð#$ì¦ä<'ã¥ÑA]t·HKÎ烲 …ƒ‰ ‘Y•ÀŸš4ùè™ü´j6|DE^<€±MþËQ„¹½gRl`<ëÙ*}ÊÝÒÌÃÞ;ÕíÕXê�Íد“<V8{]#̹”àpÀƒ Ñj¦…ëPS6Þ⇠ÞâÉ‚ÈB‰4°ÃZÔÈ·³3tþ -$ê0M‹qbÅSpíö–m¨À'oÂ1@íláäc&à Æ^ ‘:È€Sô-l¾º¶èí}€Ûaoš„BÀsè^‰=^ෘȦ¤É —[AÞ4Y‚Ñ€&Ð8·olÆkçät2-å”C…æ}”ë´BÞEAl¾‹R ìÐh{1›0V»aT)µFd(wR”ç4{Uú]}%!$ì3Aüâ߶Ïø>vƒC™NŠÐû/,|¢:/Ó0¡ (sGAYAìÀÉ€¶"†æyE2)ˆˆÀÂcfAiß+¸×ŠZÇ&fÝ3¢ŒÌŸÒÏ4y¤j E¢Là � ¸ƒõ~æÛ¾µ¿±ƒÃ oÈAßD†¶ªö¼Àò`¬É,¥ÝUÅK…(µÑLYÐsQ¿œ¶VJÜ‚Ä|œ?°²Ñ5öSŠ -ò^¾Âá@~æ`'ÆKÔ^Ó4¼ÉU¡ÞÛ¼ý‹ÐÆ‚4 ·9Ýn\q u,nÚgnPë(bŠÑæõF_žG“(òBö".UÇî,pó°^…�‘²è°qå,ï¬@€4 -3&܋žzkû¾þuV[ò™¤/Nž>.~0®Ïd�Ê‘w]¡[sص¯£ð…5FLÒ¢š¥ÈU·–bB±ÐXŒy¹ÏØÄù.¯=Æíï/¤õ a¾±zx0«l6ã$c—¢Œ9”ãd'¬q‡”ÂXŒ’¿‚YÀÞx*ãÁ»L«`ô“¢#-pŠƒóü@W'2+2× -kÈ.¶9fv¾Aî¹€/(a®ÿü¹u-»>NÕ�;Lºèû0RÿhÀÉ\@ S:¹XÑì«ËaZ|}À×åäñƒ~ßÛÕðCP'Ù}Lr"•mÂ>¾Ç"•lô¾à€@O£Ç,DçI˜¹OÐ0‰Ó.SS§{|¥íç±Á0œä3…änaOL†„8I\@ù꼊ÿG†C!êla5* á+b�ƒø -zTªƒô5›‹CH#!qï’‚® -n$$ܶñ#–¹SdiDÅ$m»á -Æ‹Gteéi§Û½_»Nvx]¾’-Rå,òÀZûã«Re%?…ÝVˆ´XäòYáŽì‰›GúßIÌÓÅûsc±ÍŸrĬËëh•VìJ–”MaYÉGÚẈr•ˆm“‘'óyyïS÷EØrR\æ¼Y.6UÂ~¨ ‹:1ž?Vèñy³&«Ãïé‹—ž²¡“ÕÍâÖ0¡z¸3ß´ -÷ ¤ ¸IÙJ6gÎJeô++Æ9ú•L+™§‚n„G^üE$@Ue›ç:í¢W´&ŒÇï\P¤·¼ý®œ'·W©§ÂêrZðôdÕµKªn¼16Ô¯»¯U9;í³Ç#V—ÿ}ñîºBMÀ8–®-á£ý),kÿªÞM(ÌÊÍ=3Õ.Î@&Ç’ÐÉLJŒi9Y!׉ÇèO3{uSFè2õ1-^¦z×òV3œQqì6ßÎ)eEÀ7@îɺN^ðIN\M×/žö™† +Œˆ_ßgºKÕÍ¥Ætt\J‘;±Kb=rK½”±æPP?¾Î/y詇xÖX°Š7Ó3²¨F¶rY+Û„¢ ¨z‹BO^à‰ôÁÚB@èuœ‹,éÄ-yG ܶÉÅÓ0àî8_> „’g¬t…¾ÿ8XY…TàÖhlbÆ‘,–Ï—A&‰®I^íûãOKèCS*ƒöm¢˜Ý bG2<¤ZËL?䷓˼‘ÏŵtQØß‘ØbŸç«Œ|º,dbã^þLäcçÎ:°lü,#ÃûÍJ4B`´‚fa‘8‹ë�æY¢W#1+|¨ÉŒ£8—ºéÙ©ŒŒðÜΫ®Iìtý“ÙßãßëÿðƒßÞüðùóÍÃýÝöËÓÍݧûÏÏÛßö%žõß+/=¡Z�€Q\(òâãkyi#Æ¿àðÀž| }yüåU5+V -I!§¸qU:Æû0Ù¡×/ýúšÿüéþz÷þéùÛO·ÏŸ?ß<ý¶ýE¿úòçíÝ?Ÿ¿¿¿}|º£Œ?[Uÿ÷Ö﾿¿ùõï7ÏOŸþËâíÍ7ï¿û[/þ_??>=½µþº½y÷øÓýÇ÷ßµ\äŸÏ¿ýzÿñr|_Å»µß>Ü-þP£Ï[W{ÊöæíöáGDÆ*F ]–|ïž')º#|1ét}Ó�[ü‰W¶@x˜RÔ¾[Œ“r€™ê ŸRÌRhÍ5öž�¸²"4 -ãüÓã$À`$ìÑC¤ìЂÃïxK“xôöC¿,ÀrÀy 'àxNM"í¤ ç®oÁ$§³j;%Ÿ�m@ôq'Cð„ F”E©eÛ—x´¾Æ}•%0°’ó„bÊI©«0ˆI,'h1P3 ¦äž[‘%PÚƒ"pPôt&P™«‡—2á„¿`Šã"ÐßsR—™‡*à(ØÁ €}wB½Šz&:jæ'âòeR-‡ïP@…_ÓáN‡JÇ»ãÙcC—ú¦ˆànÓŽ4ȇ©b•| - ´Ñg:‚TePÁºÌëÀ’°È¾ïJ‹“Ø -Oƒ[Ä|澋kN±Š:ASB¹@;ó5íï`mí'Ñü$rUk½¼e¢° -"Qê -’‹qÁQÅ0Õ:W%V™Ç‹ÃøOÎMUŒ•5Ç1–%IŽ*hÀæ×rôyi:â^¥ûXA˜6˜H&ŒH:ˆ°”ôÏr=:ˆ øê”}sìiÆüv»Â:%OÇ4èžß"¾;'OÈàËŒÁMè[@›Sûì_…Èðòœ‰®€¸ò$dqS&6sä»)†,Üe`kœ‡l寳Xð�%ˆkQkÌ2c‹ÛI۱ƃ”Šãí¤¶Pƒ%Xè;F敃PFÙR€7˽]1–$ b|Ñm»m\y|/ gˆá6TÏ ¡4‚Z¾zÒ•†˜L!/Á²œT¤·ÿú2ÙâŠÂð«Ô’,\ÜáÜi ¬ØEDŠ’²ˆ•M€(÷Ï÷Ÿ[6¦«7„ ‚„1Ýw:Ó?$3WÔcòÇ¿éªÉôU¢‰ˆyxƒ›è - ¡Gá7<¦{Lõ¥$u®¾GÑÒç·ò§H‹ƒ"ØjOa‘Êvú‡óñ}ÔƒOèsµ;èJê‘Xì -ÂZÆ· -ÐMkhdD•†5íj·¿ÿÎwÝ_B¤×.°"“Ý÷šèµ«»¶FÙ�«•ÙW5©3„Z‰P¥±ÐÔî1¦¨DIGÞ&Å {€N€Áqý'èTIÖâ†m%k‰Þ=ltÀ’¢7(CŠ;J€îMÔžl¯¶öXµd®ÚjîE¢dq»€‰®›£N›‹¬Ö9 !Ê9uÓöĤ™Y!ÐçfEæÂV€X‘�y¾�|ÎL“7n̬c*èÉ1¦ñÖK¾ÝÈp§Ñyø¡ù»ù1êO»=—Ls|‹‰ -ﶇY*µ¬÷.Åq: -chçÞ63Èéj¯]ØX>Å€ÑE™ƒPJZÑ…žÇäVURÛQEK:YZZ€@£zö!{åLq)@ÉI>(t¢¶e†�ɲïfΚ:±˜dSÜO…ß´?�E«4'¸ÌÝ[8˜±ãÅ�:£}SuQÁ¨–Íïî2"‹”{p‹Ì,»¤"M²lP`̇dëii°gÕôTHÙî9°LVNnÖªE[öM‚‹~Ú}Åi³²+` ?4ÛG½*_JÐò¥À©ÛµyEªÛ8˜’ -X¶ÀúÛ.8²»í§c¹¿ùt¼#8E‰}&N‘fŸÍSÄ:¬ÊùvÅÝæ®?öà»o³=†ŸvëœtüYy¶I3f5.Ÿ¾}û$ýüÇëwïnþzóòùß/_Üüysýîæ7öG=>Pçòä†Þó—¡b}2jCý¤áô•c#Ô…¾)êÑ@”\ÔFÊ¡ÀlÁ»‚¸ñDHáhHa"ÂT5eÞ2ˆ¶ohsÆwX)’àu¶ô1U‘Á9ê - ûU ïCæŸÕ+¨t&röwOr3t!”¾mU_¦í‚š ¥ªÙQÜ(q~JÁ -׺…)|@§ â±G(fYŒo¤B GvÑ>,f‰v3T=AÏPè½*Yï7HÂfYä9-Š|Õ1„Vý"Yn÷¯Ô7ïE€{DêSE„‚*’˜IDÔÉjÊÛ=¨È’ôÞXL -7™C"«@4T|6Ê7†lâˆ(2MHDMV‹r‡¤;æ ÿåoE(ñÖ¦fmâv#³R'‘FÇW4«r™½&].Þ+* =ä)5&˜×’•æX -È·³Ã%ΛrŸ¥d†¨èV47‚‹éËf69'”þHþ”ˆ·å)~†r[)¢¢i~x(À¤BpÔ¼×Õ¶d -çCHRP}©WöŒÌ¹�(xër8,¹·Äs2bv hWµ?€su«o‹n•†•P¯iÅ´–;ÃæŠÕÿDïœ= eZì·´\•roŒ@ïíJ%0GïQÔ$M—”¥õ‡«ë)]®›qÛv&;XÐ0 87F�HÕIŸy]•Ú6ü[Zr+ðÙÑ›û°Wžˆ¾`¶8ÔÃ&í‹Ä[Y‰ÁøÛ…?Oÿ£¹¯2S0§Z‰¶3Û%fîÑÔlúayüÞëÍïË£§OŸ¼zõþõ‹·ï®µvÂø¶ïvú|ßÑ\âôÐ282„iFíæc²k�1ÜæÃx@XP~îþ7Eù{ÂBÆ@ÊMÄ´à¯F˜Ð@Ž(ˆÞñbÍÓ%ZMv@\Ÿˆj….;C\°Ž(2N: .ì„ËÛ¹Úú”‰ƒüÀÊ–Îð–KaÅ Œs÷ÄÕÕêz°°iÞ35IrŽ-ÇÌ¥s`ŽáÒŽ˜K"R#- s-{æÂá³ú—3Ì5º_D±5Óý€¹X‘ã;5V˜½ -}6yÉ ¢2—…àµDI7ˆÃöÔN¯ðßž±Nœ'F?v)œ#Æ"2zC––ÓSwŒe0VºiùÁ|Ä=c=<:_L_·3›ñi-ªøž½. ¯[¨íT¼áÕÎA-]ÑèòÁœÓÖ'Ü'ym;cÃ�aµÔ¶È:ډї/²Ï¼ ×4UWüFd2¥0½1‘ýæú‚èR>C\_;:Ý&?¢þMiëÓmôf-¼€á8º-ð—•99d0³OÒ*ˆÚ%ÕüƒzŒðœ©(ž2TVY¥R€F(åa*71ú´X‡|Pª3�ez.a\s¼¥pÌË+¿I Ò¡ðŠ](?j0JPÍ» š× tã²ËÝUÝÆKL=µ¬Y±‚îƒ |ÿãÇ^«D@suP>�E±·\Æ1З‡TÛZjàqQQuÌ,7Œo2xb´ù”ªçóæTÂ&…XÈCâ3 ›ÄW)ÜÏój_‘á\Ñ–k#Ü\˜ð¶cgykLuð·™Õ¤·%pq» ®X�2Ô×Ħƒr^oN~Õ/&o¦‹‘ 3/³ÔA¤!Àø”htã •Vlòâ³WÒ™-¬Âð¼¼êˆ1v2ïÝÐ)>Ý�ü÷¼ Jü`fƒn€€’�åü’Z®ÛMƒ&"ÁMŠ„ºèœÐ©{RŠáÝ4zʺ $¦ÖÖFgcm'mjw_Ìs©¤‚ô qøRjC(€#€‹mô®sCQ&*mW•ù:SD±“ú‚œ)E¸6iñ-ón÷TWþI~b‘4T¥ÀÄ!¼ hVZÆðy`Ô."9‹J}è–¦Ž¥ÑÇ"Ý`1ö[Çv%Ýá`×Øô•©ïäY'¤ŒŒ Û ¥Ë -K–p<JNl¹‚· ¦€Ñ.ãð‚…,3äÐtŸ–®\.ÊkÒÐ… -â&¯Ê´8áá@`øh’À¼±/rëzt’•‹î*à>·xù±$Iš>UÞ+vuFˆiÕ &à§H¼W›‚¢ž)C ãF–†8æiÐN‹Þº^U6(ëd»¯…Cð É"Oκ4šwx¼ íÓdw™ó:Û߉=ÜÛ—Ph -hH`>¥gi“$=)]›t‚\Ø󈢉®U.Ìâu«kTadžj-…�Q§r¿\KÆi$ 4Ü{ 6Ð*á€Î¢´ìZ`ÑÁ“@GñRr§G·Ò;� >@é‹TiÕ*lG£ƒœÈÚ’íuÒ;8Ê'GÖRÁç Ph±í&Ù-ʬs&@qÁüy´£?@Œó)4·žBœ|"OÁ$1:É|’¸ù–šâ}Y-$=bª}’qçÈ -Nþ`Z:*¤:jÚh)Æèg?‡äñ0,Š�TÍ’”D™x ÿnó‘¤5}!VˆF_ÀÖµ+´ ˆ¹xí«Æ4QŒœ#«äqvcQ¬xb À›Ü�š!`ØHÝå™xi*r =ŽEªÕ” _—P…šèp÷©—¦`„Õ½¸5Ý"œdž·DH• w0+:;ά“aŸraÈv×)sƒD·?ÍÖš»Ä uRCžý3GÏ~Q»d‰ñêDD{Þ. SU¼ýöƤ<©ÚU7CÄd†››œŸ‹™à +úŽ…Z)$±#:ší‚±I¡0Éø§ô7&av(§F'?9yú‡Z8h¸µ%‰>™#¼*hK°ð+NËu$òjÖ—Rf9!p—Žj„$ä!OêÁ¨ö_ Õl6>º~ÑE’y¦QÀ¹Ú¬1åYMš¬@‰i{˜"ÞRWYÌØ5A%#{é•,S«Q(”ÛZ˜g±Å¤\ØÏ¡Ò†Šë8Ê-‡jÕª -MS“«q:“äã(„rE°Œ-E%a®ÆŠg÷Æ'Û?ì—[Ž%ID·r¿‘*•ñŽø„a l�!VÀþ9Ç#oMOg¢êA„hÐhêFFøÃÜÜLêP¯ám zŽ–Ôsˆît7è#ê‰ÚSÎÜ 'vLsÉùl¼˜¤¹‡lî† ìãî29’À“ú§»(5+†âYöø{õO”¬hp¤ÞÕ¼ËZ&¶þFý+(sKwõOYf…œª¾‰ÚƒÜ& 訌gñonȉRêõÓd&^ðkeôº»�¿ŒÑ3ŸM�ð>xg¬úÝpŸ\š^5Y7@° &‚‚*6êÉäÆ’Í@p%ªv7¾`æ%(§|j}6 ,jóTC¬c,£êŸ€üÌwà½]ª¥{‰ò~š€Ìôì -5¶£H}2ˆÎ£âJøc¥ÖãmÐÏ�ÇÑÀÁmsð[ðõ„ý$ð©÷ʪ'”ј‰» ø0taóÛ°®Èƒ—Ók+Øž´.]Õ±lAó2ìPÿà#~>(!¨”°¿qLó MÛ -|PÂAˆ4wõ¤{ü íHm©¾gýÀk š&Iæ™?˜3f‰ÀñužÅµ†^þ/�?)Qo/�ÔŒbÁ•?˜zIinnÈ°O/€b@Íí~Nn¼Æåáp˜70ÿiÚ„Yù ^àhüß -üûV�Avx5þ³"{Ò£@Ð ófRïä¡ÐÿÞ -Ô<b›AæbhÞ@Í•Ûµ‘,Þž@E%¥~¦X -Ýœ@eüaç“M‚ áõ ¨pH>+\˃`ÿ¡\’á®cÜ€áözz"e~6Ð1ëÞ{’äšîFàËú¾@Eîƒ -ÓžŸ�½;PU -#Mw#ÀDÒ!ƒNõçÝT´&á -´5{6UÁ„8VwwS�Ý’ËÛ@¢»PÜé~ò–£Ý �[]Î.ÂtÁ'é.å+ì<a3‚ÆhÏ“ …@-ãÁxBe+óîléœ&�Tç³#0œè–š<õ~w"UÎœ.ÒÑA+É’5«Iãèínô¢¯Y/ss«ƒsuÎo"Ž#Ëå?”dŽ�ˆ@SÍ–Øw7GP™=¶b¬,@½;ÐBiœr6y>;©Ðr¯Ò¹zwnǤÿûÞ|=o#àDªK}ôro[Œ£ËIºÐø¼Q„Ü£êH8˜‹â`6ÊÂ8¬S¥�üç`âF”·¢à)/ -µDÙ{’™K®êžÛy‚Lð9cÈ º -úNC ô 1gââHyjÙ=ádÂÀ¾ïL™Ã…+6¹�_b¨œÊÍ¢lí0îYΖ™P¦=b$P<€¢ƒ**±±ÀóÅ>&C¤ë!ôŠ,ÃíÑ4T%¸Ux¨,ª&ðÆ©s=kÄ •[ñ)¾¶F&U‘-#¤cÄtÇä¢÷œ’AvÉ(ÀtLø&5¡¿öÌR ©^•Þò‚÷´vjK–E4Gùcµˆ6fYši~B>[ÃÅÑx¨È!h—¤âP´QŠÞõ)$&‡ø»R-ÇÔeˆz×I’N5I+µéá<£‡Lï€jäÄn£œ X2\´IH£ŸòkL‚:SL/ŸÊ¾¶ssKÒïÿ±ž¸S·ïqt¼<Á.à¸)…Œ’ì@u92?¤ìYæäs¾ÊÌcBÊjy>¾þÇä%—ÕG¶C �9¥jZ/Yž×´B6ò×ðblèŽE+L'+šçþAëXØ9&ÂZþú•Õ¡nÑ®¤ÚÄ–0Òï{›Dý(dï`ƒ ›6·àýõó³î)À|®‹Ì–²üùû“Ë&Wh¿‡1…RþôIÎçPg<LXQ<›'ÀÿŸóÿÓÿu¾œö‹®³âà'1º N)%"£‡Ì!¦U‘Åhg -C/cª´“ô�> •ƒïeïI,±±¶WåY],Ÿô?¦¶6H”ï—\?µî{Þ32ª€aÅPÀPMÚ±p…±0I -–ºÂƒÒÈ”ºZršõýN;ê™Ó1Xâl¸‘&/Ž7{:•~in¡ú—øš’£vQó+©ÚÌGw[~Yη`g{_'Y¼ûJ(Gh›•èIÛ:ÁÛ‡ûQŽu[¾›Ì$‚ƒ§KHDÝÕÌvƒ×܃¼Z'Fb¢FÕ¥èŠÔ[´5Ȭ«Xè¨*¥{y,éRPÞ\îóîcÄ,rk™Ùx.j¯Q+W%oì5Nh±p9濨Û/ʤ,Ë‚æô%±>Ü?rç֡§„ Èp7! \›Lto -ãdûH%É09Ȉ\�P¶ÝÃçc+©l—»/Óç“r¢N°jZ@*p™úT�§¬NmŽj!¯ëuµKD˜§ºm2k°30êK0"¾©T1Z¿Œ¥v†ÁöÂø@ž…H…?T>¡s(„zż[ί ‘{@„†RýäK4Sã�¾Ðƒè—„{ ÜX¤p%Î)O(¤ýcï~Ev ¡N#F|Á¿ ŽÔÍ(ÒzHÞ…v<ÍÅn0Ëh-ÙØf6Ä]sªPด"ýò "s7ÿÇ‹x -Ë—Y˘OvFyå‰tä2f@IN(¸”ýëëáøås‹üñoüëÿˆÅðçøËßCá4XBVÀ#š¨Ø’nÌÍka›níRã…ëÛú †Á«a! ž¤… Êü‚‹!�_é1ÍåÅîê[&R(×à5pµ„â"wd£Þ�!MÕ¡2ö"Ò°:Ë.â³gMtîé÷r¦:Žxσ֗ `°±—ñçýÐí›xÌâºÀWXC§‘ÆÀ°�0‘&4°xˆ½_âŠFZN܈A>WÑÒõT‡`ð!xw3>ë(˜ºÂL7k©q«Êl0~ÀÆ�–¥3y$d³¢ N©ß×:Z3;ûôPì£&'•“(—íîÔãSØ3Épbw¨··1¬jßÈPÀ™«õò• 3;æ[¦ä%—£hli'@WŒÊ wt©u\ÔƒOá«ôª:‰e¢Š³üƒ‰Y“ÉÇ ï®Tzh‚bG¦›ÏSXʪg#%\�;‹ä…᪤e¥5|Ç‘„Á)Ü}ƒPæ¡ìD26¤€W8Ž•Ø©ÓèºÀW1^Vºœ<kJäT© ä„Ú£¯’@a©æc0·¼J]Ʀñª¸3ÌåÖ?E ¶”±tX똂$¨ƒs3§k(s$"ƒ;,È]%|ð´¤)_•è5‡Î7ÄÔ鬜:êK‹Ô`$ódù®H‰Ù&`èq¦mµ¦“C|àŒ`‹ GEñKK׸ÜY&ƒýÓÈK•î…^¥š0P˜Ãx¦ÒËËTÓ{X‘T—b;-ÒÅ}gêoã~½Ô0§.vÍ)›¢>k8®üDI^EÝh£õ„"GA8@Võ« ßy0¢§‚Œz±ÕF¾BÍe•½ä1`Ùa0�®ngY.yKɈÞp±ß÷ݾjW‹ €Š°§:¡î‚ßOd{–œs -éBüëEÔßꇌ_!óÎŒjhOÂz8AN.Ó!ÿwÊ~´ÚΟFˆ‡¥æ¦"âvw9êSV4LŽ4 ›ûæÚLƒ²ì™ÜN±Åܺ5„.‘x˜AÙŠuÔêY&§h{£4‘r)Æ!¿!t^@ƒé’ -±Éb‡Žá™Sú@Ìfÿé?qb¯tÞf+sbi”š‹ 8Î k¹ JDT½ÁÊ”1iü%Øc ªÌH8½Pun±d`¿Áݤ„BÕýÙXÆV•õ†£6 ª…y!kªHéĉ¥-Ê!%Ÿ ±¬Çå5\3ÔfP˜[—�A®8ØÉùQÛ›Ö’ -þc3+NÎVÄ ÷*P ÷Ã�Ô†ÏÕþîCÅj ú†¿)§;e¶b“Áæ -/¥VEb'Ÿ|Ñ?{êL$ÀêÇ-ð@på{Ây/wa9ð»$ä‚ -ó"63'¸˜„¦ŽÆ™:GúŒýiþ“ñ2;’ÝF¢¨+eAb3EßãÃدsìÒ<‚Š˜/=UƒX2oÞÚâ:€("`¿–“Å0paèvAóê²Û%¹Àað#WáúB}/ŸIK9y&) -óyý -š·ô޹£ýt<)>5.,9M9½ˆyŽ¾t•=Á ÚD)šüß4¯RÀiÙÕ3iRDãA·$.l;¥×ÕT¼ˆ�S<UÄ‹D:vyˆ+×p!ºc'Tªšwnpr ¿ËðýŒ}ÆTš¹9MìLÝØ¡8ܤ/ªÜ<vUÀm/SÚ’Œ|¸ñÖéÆyî>'<™mAK€¸\¼èr?ÎâÔÅ0Ùq_s�÷ÍÜq?9_šÈQmßdî›T]ÄH§•dÒIa&ª@Ê‚Šó$DÒ0N•ÇΨœÛI¬÷$—ŠßS\×4 -¸o>eà#¶ÖEð¹Ûåà¡U—4ÍTUNÙDFX -7¼Q'Z«¸àÊPÕÌ/‚ÿ¯ä8¥ã¬ŸlM#†dÄI±L_"iðžjÒ`5f`òf�y\*PD/=®ÑkÔ¯DlÖõ€ ˆ°"Ú°ô}@“£k´/±¦˜Å(*ûT‹:‹$4×/u¦îïš¡€Ð¯XÂ^±O‹§š×¸h6¬¦–ÄÂ9ÿü¡‰ØìÄbÖ]¢ß?>_e“´Æ³ž#i‚"dôpõˆ`EB3Xnï]!—HAÐe$ÎósÇQ9ÁN÷+ž'+^/~¬:ÞÍE‹6ñ¨T×—1alw‘¼V¼o‚*Î/ƒ|3ŒˆžÄµòÒ}.I ¹ŒËlÿØ7NBИÊüB>Û+°\àÈÜE¾ÌáÉ^¢ÉQ-N’ ^îpx5Ó™ú9›ÐœU}ìN2åe6LþAÚnÉ“Y*=ºò¿Ö$1�2’òIpŸDQ¹;6ëI’CyyQ›çzåZ|Êö³O¢®¤–V£x'ÙsYŒ$"•ñ©#¸üE4â™"°B[í0ñ£…Ç5Åã/ïˆ0ÙȤó])¬ƒß(ôk}jh™í§7ZU(×ÝOFžag,&·mõ]ω®‘×�T^|A ˆeOÒÓ[h°¢éñÖ«ET¸}:Z°PÔÓé0‰?Þó)˧[òÑ0CõÑxÕüîºÜ‡*L÷ÁÏÓ½üf¨Þiü*ÈçNÂtÍ?\cE®ñïÔYͳŸ¦“œÊj’]c.çé[ëE6¬}aöwƒ ÐÆ"ԜҽØh«@Ö…Ú´¯ÿoÜH¸ ¾�éó׺W=s•C,c±úû…ã~aíï‘Á™2w O‘þŒ\qÓ "¨æ3¾È‹ *É‹Ílù¿é‡„Í/Á:Áçõžä0ýLžv¯s×ù‡·Øv¬úM}¸Ë…ƒö@Yº g`¬…¾rU:øb½çN^·¦ÓÆ°ôØæ_iq˜¦Ž¯Çÿµ -ÒÈ\‹ß¡ ÿÜPùc•ï…7H<° -`a°ÓD.¤iC™æPU ˆÉJí¦ -tÙ±y®ˆ“ Ð(ÒëË>Úp®“"zqãÌ8ä-C’TØÄ|Ã==Õñ.t„TR{°Æ| Br*½‚ªçzü÷’²W€BM¢bÞ°“‚ø¡V—ƒˆAZ¿èÒ¶mÂ2®b˜ðÖ6Ÿ"Úü’%ªÂ”U&c°PáÁ~ºžy‡•LºŒ6íýq/@Ír&Ÿ¯àAy”¢Txm›FK'ÀŠtDz©6áDØÃÉ[»|nóMWû ^ׂª2ÓŽäZoj4}®mxÙ¬`Áz0¹è ã…(FðH¸qȇYà&FŸ¨(v¤ÝR¡rÑ%AFâEÔ/k!˜¦ÂN•yáV¤Æ²ZŸøF¡§å@‡=¸€2ŽuK_Õëûž¥Ù¸6ck'ÇŒa7 ÉC·ˆñ�ºc/øeÎ!&PX±&›RX½Õ–6i„2`”Š&l^€ÆÃ))0Â0—`ø�œ‹$qQ5¨4õ{ÐÍ0Xpùn‘ )û)ÀR©Š:B%Ð ä˜Î‘™š¢©•Ø:+‹?4�¡m€W¢S4¶)¾¬�ØÉчóíØ5F-è?Z¶uÛÆs:-rwç\¯^a@ó¨¡-ìöeùîáKy¡(WüèãPd¿îÀnÄþSžsü6ç‚óîxâš@_…*/I4÷5w‚,Æ%LߺoýÜþœ/ÞÆH8öR¹îN# Xƒi!C†¿™Š*=«�› —ß©H·ÐCp½]bÈ Å!£ä+ CVðÀð.æF NÁà2~Šò�¬»k¦ðåìƒs“©¡ ä’;ÇeCãÑÚk-ã<œ¹ˆÛP)~ÐŒM«‚8²"™^®*MÝcB$‹³yuÛöáÓ -3Y‚�‡F®é8ßs ¾œ�ÜzVÃ] °¸<Fuooˆ»êphºXàgEz.¹ß.´Ý.ôÚTi<b‘AáËf½‹(EaÀ -é¹Í¯ Õ#kBO#ÎáVÉs°çÎ=þ‹ØÇX½íåbøÈ )ÇÛþds*ä)ÛÅ«à _…ÿð¾˜ä¥¹5ó0‡\§o†©Z뛥ñ?w,²v(=Ö‡c‡ó}ßcßÅ /âW ôWAù‘O”M?9žDP˜ ‹d´¹nyT†ÔS;F^ÐõüRàçÚ@äüü»<ÚD>jMšÁäèoÏNw‰ÀW×µŒ-'b|3èƒØéë'ðºî«yTÂIžØZB½z_5RÇÀÑÞ’øM¯ÏI^×Ûr.ñ1ŒÜ{À9úÌñ6ÔíøAáèã/!>É.ÝÇj¤øœƒKM瑨úBTP2ÏárÈZªí›Zþä»I »äbŠÜçõB½@ˆÆV„DÁ{r/:׆i‚ÿú/ÜËú�½,W>‡Tu¼jÆw˜üª±½V¦°ßþÐ «ˆ«dtUýŠ"8é•hv÷EóH44ZÛˆ¿þÉ’j'�o6ÀDcwOýeNxûN’Öä©ã¾qojußêïϯ¨tÈV¶~©œþCo…ìݶãa_´ªWŠÏÁ¢óñ´@f”`²“éôtPFÕ‰ç‡8rÛôÉ!ä˜c@R8±§›ãI{vSd×WÈtãTo×ùð”̱&Ë9–°>§-Ïœ‚çª>Ý-„CbvP+îû>èé’¯Y>§ÁOkK1¸´²L÷�œ_>Œ-Ÿ™€†•aðÐxÔö’-xîQº‚D‘˜íýŸ !Ÿ3ÜŒ‹¼§p$n„-<CR·°¾�¾Y¿^ãÈX\£ÙhþáþŸ#§Us#X¦¸XH vä½cÅN–Üø²Ï3¡ÒF6”_xâjo+¸œ`*ÐÁ|Ï°jŲàú¦†•‡Þ€˜IëmG_¢2C<ª ¹Q¸xë/¤è?5²ÿt!ö¡«3¸ý ‰N¤�¶°’Wn\%ªÁ¤Í—<ò„)®^Ew<é¹J‚Nýrx!Œ(^l÷%]165” ‚ÖØøhg²èJW.Té—¿isãòB?/„pCÆ—2¸ˆYµš3V0œŠÊðV$\-$š|}SÍrŒ>îX‹OuËÁµâañ•ÿ›‰œ#Er0ÎQÍЈ°§ØªžÚ&–=ˆ13˜ ž”—.$ñЫn�YÆâ~�€Ìð”+›’ã ˜kšÞí¯ØÆ*¡‘c¹2ÛÀØKÁõ~w»ß=%&¦>Í`Öà)W¼cAAyÈT-ß̺ŸËÀ·±*ËŸpÓ.´K¡I)¶E3‚y3n,¯R4Ä×ã<R�•Å˜à9Ë× „?a³(ûPy�Ä*bJxA\hR/¯ÉVƒ°‚˜ç]ÅHÁæd®Xý|£PD&ÿX¡ð«(úOšno¶œl:°Yõš¡»qˆQø®€3ÎzÆLgù eúÑzûQ¥†‰œs((¹„QÇ"9k<oã\�ð+âeR‡ŸÁbvKµHÿM%AJáÒ¼óoÂË%9v܈¢[Ñ -*�?ν _D{äi¯¿ÏI²¤…"ìg‡ -$™7ïG¬³f—ŠB†3˜Ä Ärq"ÁªÒJ™)@1B -Ð÷ãêö3™ÁÔ± &¯rpž}Œx ¹F´.™5æ\bšÃùLJg 0œñ!l‘qˆoƒsÙ ó²Aô(@Û͉yT`4ceFÂŒ+¥ î±hÈq®Xoo÷N¡.¥^ôåiÇÕMŒzê„"¤zƒ¶�XC…|0%J¬¡ãŽo„D’HPO -ƒËâT‡_^cJœžg²˜¦+èè9xÆÚ¡<òÕ' ½™�Ýeó„lBš¡(ýÆn!nÏ—®Ý)ÿìf’6q=<o¯Ù¡ÍBÛZ�“Ýl·pSà²Y²Ä‡²´›e©Š¤JÃŒ“c2g@¿Á�9Q/2³‘Ñh$C¶„fnÂÆr\“€Í °QU --”úŒD„{vdF#[vÁš7'ØÂaø3GVFúyêya‚êË®c~%0OTÞÃ¥©m -fæJ;weäõO¢VX™÷a¬ Ú¼þýöº÷Ëå¨M–O-¶siÐФuoë#Ûþ ±€+Ï”ŽÍœ`Ë^ÆfÄÔF$Ê’·P™ýþ�Ltø¾'âÎã>€¥š“´T? •Àï‡XR?Tº["F–5z–:‘íkÿt? ’À|À3ù‡õ¥¡S—BC+˱.ÿœ÷kàSbÐJhÎÈ»ãÐÛ7Òá/Ø‘%g5P°•ªªô<:ÌL7ª&óIwøèh¦ýK²ñŽ5+z%ÝxZ¨ÛEº|륧íXǀ݃¦é?Æ19…À‘÷t×äk^¶ZD£ŠP!Ô¨¶ƒÃ«îð‰k2;Ù6Á-\2—04·èQá[ĬteÕK®‹ÓœV@û¹×ÝÚF8<N5a»ê7ù¯VüRç[}õ� MrbàŠdÚYœí‹¢™†o¢»ýS¬V?ðt1´S?+%öu�¬r¬fªî@)õ¦ÞWC&L@m â;κ7vU£ÛM£5iIߦÔ)ðdd…§Ÿ$ -tìû<Aì)U>}é…%0‰Œð€ˆ{Ø[©7QËêèwŸ6ùï¨s¾œäÓd»u¥`'Iˆ ncÔã†!Þ0¼Õê÷]‚G“±üÏ*.Ræ¼Ç=ð<)øj¥ï#tÿR|‰8ÂÎ?¢PÍ=þ Kä¡ù{Æ©åÄ6–§žéNSÒ3AÍpÛD¨{²»P"‘ìƒ&0ô¡ Ï &×À* -*£d ÑØ„ÞõÅÕ¢n˜¦rSÇz -,Àdà´`8–žž!°x$~HxðóçõüáÏ}ƒ¢‡ÀÖ±S›ÇYÙWþI -©Þ€!UÄ1º•\qÒEÃ'häfâäÔyÞVÇÏŸ”Ku‡S A,ìd¥÷>Ì·|)…AÏov\{a Ð /š²c¿ñ¥/kAñÊ(Œ€Ç®NŒ9-¦^0ûN=I^DÞ_âS8ÀH=üȽ��bçï÷)�È’. -#JyÍå ?Í?öxg-\¦+Å4ê…Ô&ÝõäPEÀrPÔƒˆ›a±M`;·� ¬�NÒf†s6¨²>”Ø‚F´ØÒH: ì¢A·¢¡GUFÀ"@‡=BE¨—?«ú/¦nâ¢1š{º -€P®œUo}êc(¾‡!›‹8=nq;®BY‡ e¤UD¡Jd<è"¨™N»¾l-®ŠÍa,0;½(Î…îp©ë"øò$ëÏâÈ[8ññ®wBW&šÉROÞŠ•äD†§[¨ëµËA9¥`ÂΫjäª_Ê1Ò4Š}1¼Qãö•ýDò¨NbèážZàÀpÛÏñv7 -| Ñãy)«Þð!ãèÆÑ-ÞŒ*RÌ))õƶ0‰Ê¨³>B(Dšª[1%f°„z“×Oü,N T #ÂíÞ#�ÁH†R}ÒPâ&áz¾„¡Œ÷0ŒLk -+Üí#ð`hàßÎÿÑ@mq'€ t–ôÿ}§ç{`IW‹S€¸Ûûtù.ìÀ,Þzj<õw—›é8GîM…(Š¨ªp:Úm2PÈžâ{\{†ååKXÍÊéoÓ›!E ß_HH/Ýa@°t0!TE7YL~•;7çê^需JLÚá)Ðæ¼½5fÚ[›?¨…faiXIÌ–B¦‹Ysÿ[Gù˜oN0éÛ€˜4q24ðvõlvp±Ó>”†!¹1$ -Wñ¡õf¯Ä’+‹\ -ö‹=´Ùç-파—1h§«rÝ:§¼|JçÑûtž·ïô®2"s£Ë½|¹~W'mU:æ§E+×f9.Þö´ˆU«‡`jÜyø à9“Y0&Ôï¨.‡ƒ�4ëÄTµãºÍ5¹Ù-qM””B¿¼éb",1w|´¬Â(׉˜p‘êxÕÁòÜZÞb¢ÃÁph”@ëR «Ô‡Éæ)|ør#–Ÿ‰–ðXé“UžœæTN¡Öz³w_+$p„„~`óÿÆãϱ@„î=‰©‰ÿu´|�~ê~`”þ/dpƒ‘ãPJ»;±�K™à*Ð<ÞM_ÁYêå?q×(IÝ`B†…2'r³½ÞñmWŠ>_YõΡ.Ï}ƒI‰ aÄnö–—âÉئSÿ{)Ý_ü7}ü'þý_ìñ U½pšÉY> ñÿ[´"*ðgŠöÕ$J\é#iLÇ+Ü -ëºëCèŒ1¦…Þ¡òIž¸–œl3šŠGÛæ5ˆu׊âdŠ¦‚ïñaX•Fb`¿“ª˜#Î¼åŒ Ê~°‰Úˆg( cõ€:Õ6×yž¸Æywcy|m$ì›õEF7Ôø×y| Ññ°gDEBI‰�y"b¸rìsŒosˆ2¤éÌ?TÁÇñ¾#"f,òÇÿίp?×ÔxÖë–??COÝd¨Ÿå{ëïUÇë—C4§¶ÒÀÛ0sbŽM‚ú`ØN Ãݨø.Q¦É”ž3\q©²¿‘¨\ŽÑà·ÝÓϾ-üÖþ?ߧ•„ŸÁîe»lH³Ò`&mö#J2!ŠâcE™9Ž^ó†1X‘ -K㟨UãJë{à?¾«y¨çy¬ë¢b¶”bÎô±ëú–Çê®…<·½ÐŽDžmYÞ²6öÁb¿Îç±|O„¢M˜+®J6¡ymßrª&JFÐúDiMa+8½÷¯�úõD?1½Ç·õÛ<õ�åæƒÏÏÂÿìh#K~æFì:¨},+§]égåµ~Ý�1Œt¢y¾6ð¹¿ëãk‡Ÿ%ü:ƒ÷ -Öl>cý1È£ïu Å+¡¿°Îÿ0Œ´qñºµP¦µ»dÅçë42¦j>å@¾eš˜ -rãÞÓp œ>פXâV<<)qÐ%Œ9þ¤†õ–3y}C˜ áQRÂn,À¸\ïV »8P•cÒz4Œ“œÚâDßAÞÀÄq‘—‹ô1¯RÈOSk[ßnb¹-Ö–}£…@âå;X/•g·c© -üˆcBèè̯DúÒhCgd€Ã“xO¿¿CÄ•y)g¹»‚³É7m¼ÐÐ(æ«@ñ®·£2BK“eö‹Eéü¼“Ù!7ɤ7#G~#{0plj(•µˆð:̨²þþØ’ŽVÒ¦Ÿû”^(° øÞOáœã¶CÀÖõ{܃ûyÀ 8~(›…6<œ{Û\ŸA樀DyÊu`Åsê?ô›�âÊsŠ™å9·ˆŠ¦öÔ6£'°é bÛOj’?/–þ t ’©Ãá®ËÍ]ÀÜLTqfþ°Ä…!âÝÙ®¼Y.¾]ð5täk/—ËÀœ“P2=Ÿmà `1±AØù´¡ÒÃŒ‹h²ÎUOƒ–}ËR¶ÅˆâxàÖ¹¹Ö'„œ¨Dî†=Û¡ý¡W¼§¹kK‰Lr‚IÇ—ž£Ùuĸà\AhÖÇŠr„õ¤¢ Ú(%áHŒ¹¦ómß/~Èøùcü‘Ù(£h¦u<¾.Mò«§A -ÿ•>2ã ÐrÓ'ÐÄìA¦{&lT%4<¸ïW`S{Pè9§ç»T -B¿dÚ¸‹L&ˆPFЋÜXj»˜ID‡í^.vp�ö~“O‘†Ïóp™É¦’HøGÂRHp£$q(r„ö¤˜ê‡Ã8¸2I¦�!/âü—ùÈç„<í;9S8©!}RK"Î5±5ˆ,b禰%ÐÙRDIIk5¶»›ˆº$Ä°_A�kgêÄ=196\õIW¼–¡±r?ùèù(?q2o×÷u§ö¡ë¦UýÈ2±Z†„8ÌuuAÿÏ›%,Ôño YiLyˆ½¦4´ŒúÂÆóÇöÃuŠ‚ø¨67Bƒ`)¨ÅØý VVv³_–¸Üìp - -=>¶‡±úZŸØyôûž/øU‡A7HãvÊêߨƒªÏõ¨Û/fÞC±yZ’{t7¿ZM¿ºg^Ñ{U›¼B ¯ã騪eúo�ÍÍ endstream endobj 20 0 obj <</Filter[/FlateDecode]/Length 23483>>stream -H‰Ü—Ín¹…Ÿ ïЛ�6Ñ,É"“•å�Á,’Åd’8+CcÉc´ˆß>ßa·lgîÅH¼Š=ã+õe×ï©sŠWwŸžo¿ûÍoßüÿù/o¶½¾æ‡Ë×oûßËñKÙžýíãÇ«7×ÛOwW×ïo>ÞoßGŒ¿ûçþïåOëýËK>úöìùöúzbŽ-ò´Vø³åd1z)yöˆ>{‘…”½•:ܧEç{š=Ǩn¥ÕÉ“Ökä6Fáì¬z«XëØŠÚò¹n¯¯pY=’L1«»gÌ4ÃÛlµyuû°N•dmؘ™øzßlÔÔZŽÙÜc´¶Õ)[´1‹•^Æf³$,bÇ|„ NôTœ¯fq>ÛVrIAx³Ž¶½’§Ò’õŒ§Â«m73Ýd&Š9fœü#:aì¡`A¡t*²U)—æÊhÆ$£‘¨S'£Q¼ÔäÍmÌK£ çE‹lד.ÐDšÖ·¿¯·g"D¾´J¥¨Ù(©S•Ç‹ùO^'ÍŽ“Xéj+6É)è3“Å*{Ë©ö<mË5cÏ[ÊX›ÎZ¦¨µ%~QǤê•>÷à@m½ÕBH$ß8Ñž'åª% J?»Ï’[ßëQ G58ViïîˆN;06qD(mîq–R‰³æ®¶zß‹Að¹Q![ * —³¶Ý•¡™.„‡2ž-:eÆyáIÎÑ‹ü’j¼LÌ¥É|NÃ@û4ë¡È5‡âÇséõ0>Ãc᜜³S¨\í:48@Ãsa¤zd§3jj,x°©œ�ÑH“7:3t8Ê{ߦ•l2胑ë- -A-|R3šX@–:ë``*”Ú™EFÅj²BÏ@ì¨Jš&R|lxÉœÙÞÊS¶½÷ˆÊhÍS)ÖÒ¬m>{bäIzÒü§¨€ø0åH‰æeŠ[j€)z¾2ñ9’nÞöh®·{¢ŒôÈtk®)ÂI$ -mMj.øJÆ�{¦7ÄMºœhŒ"{¦°ÓöDÈŽv JÏMv€RaÂ5‘1Òdj¨ŸÃãÃñê«1ª^+¦YM*û®ÔáaŠHlÒ°=ÀÀV¬§È:ÑTOiªE&DÅÕDM3Àœ*›·ýÄRµÂ`ÀK3µ˜òB{˜Ä•*2ˆ™S9Oï‹5 -j -í21CF&š3hÔZ]Ä3UˆÒ?ô(ƒÈ1²È}®yQ-ß°½pØ™óìÀÃ䊟ÀP™Â”å•Sgâ:ÍQuê"ä±WW!ôRWX%YpDùH–v·c` Ée‘4 ÕDL¬0²}¤ -»a¢(Ê€Q#Qrd¨Å¿Ügpx@ÑÙWl;‡;üÄhíl*Ñ -P&iRXÆ"°©}¡U™½Ù¹‹W—&ÅãòÐjR:f–©Œö:¥ÖëϨÌð$hx `áÁ,DVjÂF¬‰bA#1 ;Œž”ª3ïvPÁ˜èéB1á^™-\°bÒl9BÏ]ŽìsBøP¥¡‚¡&ü'ò” -ÍROOìžµj’I×´s(VâBã*y=ì$¬Ò@^H*v -P‘PÐ¥U<žÂSœðJST<1ï½½«ö²<‰!ð„’ˆ¼à˜Ö$?.AR¼<ÆJ¾ÇöèD¾zØžìÌÂäíùvÁ~ƒ„ƒ„¼ |-øƒÐ^ÐúØ.6)øNž>b+8[StlXDÏL@2(†9Gqä@Y’dì åm0_ÌFwàÖ¨\Ö–Ò™u@°]É'q90š’Ú 7©ÀÁ`Çíµx†Œµ}YP¢VZÝ2òŒÃОä«A÷4¦1 Gn¼”¥¨Ô‰±]Šj¬è„hJI½í’äà‰‰A¬‚ž=2+$Ö©0Œ…ÚÒºíò›%FÛèM+Œ.À†/V -Š:áãÌž×»/{ñ‹—w÷|ÿöþýíÇ«»OÛïõèëß·¹½ÿþæííÝ5Ò–þ(^|sõóŸ¯îïÞÿ›ÃÛ³W/¿ûÓ¼ÞÝÞ}Ø¿:þíÙËëÛoÞ¼ün¾!¿ÞúùæÍ÷¿r-8wx:°ŸrO�ˆÉ‘5¶Wkí¼î臮°A3«6íT÷uvt–:•9sª{:!Ò nã¼î‘; ì°çxž§ºÇ¥† 9NåŽe•ýô¼È±›Ã5X#ü3NEŽ“ID\Xû´Ý"·üqјè&ëy‘cý’v*rÔ5áB¢á•Sc¥$^öl¶ú¬ä¬Æ)¹¡«Þ±+ÌѺêÀ¦Z?‹^]-†§t:«u¼—XôˆEÖî}¢uô)c]do«Ú&~©u° Ü¢Dh*¡ž×ºÂÊÖ´õ{G>ú<Õ:9‚ªáØO•âŽ`‹‹Q] -tNëTX‰)±Orªuò¤« žªiQ=Ñ:î~GíÚµó¼Ö•îI×7âÑÔÄ©Ö¡ KÄ6³Ôð—j÷ø ~#¹{à‚ÈÐ[?£vKîB ;¼îKî,+AV¡ñ%t“>sI©;Q»ñÎø ô†i'‡>‰ƒÞ0ŸÕ.–ÛÕîBþ‰ðÒõ©û“;ižò/-žàžiª¹¹ã£ûvÁ�rEA_è-$³kÂÅ;ŒïqYb™d(?5/ÑŸéÍ–í‹Öq§ë°×®uß" -L«HªÀ‘ó³Ö £Pä7к_GÄÿÔ¹µÍ».žîS{0ÏÖ‘X¼¹êN`û¨Ž>LãîEÓ6(5ygZ!d4¡pBË’ÁàDcÝ \MÁ×<bµVde/ûIÒR¶ÕMˆ'¡GÄEáGYž×ì¢c¹/FA53aKyKS<˜ƒwºh} -‚%Š®U|eÝl Ε ×3eã°‹™<DE8€‘c—ÜV.<辄•³Ã»x¬ô8fŠ‚ÙbeÃŒsÑ=p©;Ãå+ÌÖC…&ž\—c_‰°dvæ6A®µ.ð[x9üˆ‘‹âåJ‹Ê³bãˆXàmž^¥YS#Œ_!g*&-e©a(läªñT°&½Íì•,ÙG+ìð„óX•&jUºjßtÂ'÷$¾m, -Ê])wG¼\žÑTU¼ÐfÊÍ¥‡t8ÁÀót÷äco¡&¶ùJ‰Õ—ƒº -Tx‹Õ¨�§ ÑiMg£&iGý©÷”ÈQIÊ\k+Æ7!?8">J¹.±Sív¤¤²¬6²TÜ:¢¼J³ÏÃ�߃6’')O!.gü&3H‡ÐK¸Z]ü×Ý�ýH¾þ¬6¼~üaÚXéXò¡=Ë1&\¦erŸi_MÊ´}y‹¥‚îÐ%T›(*‹×–„‡}=*Œº+Îñ*¥a¢;r/óè:MWiáÿÑ!±²mÝôêËe×®£Š¢¿ršÉ‡zíz4ãä@4hFJèàÿgŒUûø:gã` %±ï]µsÍ9×l=‡Îë³QˆCEQšÈ†eÀNd~K†ˆ‹íâ÷šsî;Åç7È;ìˆø9æµWTè‘ácÛú"Nþ4è¼êð)™ù6Îç˜mÖ&TúÁ,7¸j·Ú±ÑîƒÌ`w±( ëq -¬5ͯÆãÏ)~_}~„Ü~’°–¸Rè$»iaOkgŠøAV<¸Nëž}l8Z¯y¾z”#…keCjoøj8cÔûQ#×ûigyàÄr]Ùì7aA?èÍŒ{bÏá,°\€ÎOÃ¥¨F¸ïB<œ`÷Rv¹£îÓ«8gøóÎ’ÕÏ—bšÔBË9îÁóbF}�Fp—äó*¯VµM¢˜dÒVƒÑÐ}J{ò,ù_s ±xjÜU6ÕKßJ<KÛgi-–3ÆÓl«ÇN¤ˆ‘¶¢A=µIAÀóå·ýlÄó³|W\Ôz’ýBø¡.k«B/õZ…N€Æ9ë[ýÐp°;Ôpf¿¡üng!“ƒñ0×6º/©Qø\ÎxB÷ÉõDayT/ƒ2Îù™Ú - ý!ÎöÔ~‚µÐبê—Ùx¸’§kÐãD,´lÈè9ý E®NæÈ/2Â_o>î—õàk¨6\6ð¹¦XÚGO‘š¡9¹ô¦¼¦12Üs¾ôÜZîáãÄO„YzF÷û—–ùeM{Pvè(¼¡L¢NŒ©Hjåön¼Çú–àc½ †f„+x¶?&ûy®.Ÿ_fóòþeÆ_†¡ŠK.,s)å…^¶äÂz—Ö^˜ó+†®o_ y¥ügXM9~8•ÿÏü»Þ4ïöý_ùßG%51Ù9ÏîÍ^Rm&É+šÅ'/—Z¡Ã.þ’a󷆚 ‘É©Ûß(a¦Æ�q½ëŠ2Éû•îÌhHvcîãNt-ƒÎ—Ø>ÐJî©”Œ f˜�蟾CÁüÓÖ:DÔRÉI(èw_a{ÍI¬{Q\©ˆ®îFWØ]“^··( …``þ³*¼Ž—â]ÈK:*R‘£`&5»•3“¶w>ܺöÒk¥àúÉBçCSŠ Ö?"ÌÕAaVI1CÇ9qm©9X|½è'ë|1³ñzïýÐáúì ‹SU£Eª¶‚ɽ`GohG3g” ØR¬z¼Ä í—H)zÃÓô?)x¬/ƒ{Ž{rÏÂïJÕ¼„qCÝQ³j¼Ä¶* -¸ÙÚ±Ö6ZM ×£ž/ÝBw-§}`Ë0â™ÜèØ6BX‡²—µ”Ìõ`ðH|Q^¦‰=€dš#´ØÄtòôy9Mu"'ÈzÈsÞ:Ï=Lñ-/È‹˜_)î©ç`T+Lã¾::ß¼—=,kµÄ¤3uwp*‹þ?¬ì/—2"Œ•,³I¢õ•ÞëæÓM53jïž÷¶„æ¸ËöäÉáJ6ar¿þp¯dç—¼¾ºéd3SV¨šÿés¬;¼q{Ç�çZY³¼ûÊÓB†ŒÅ>6×R„Ñ·¤×é-”žúð^Õb¼ÿmÒó9~Ÿ¥û106C´•_³}÷hŠÝïnø«Óß¾}÷þý÷>|üÛÿñÏŸ<»×¤¯ìmÿGÿÏ[ÛV°ßŒ$ŒŸüs]¨¾zDûJYáôÑÍPE’ö.ec'”K¶y„£ÖTA„š*ý-äw‡ád¤\îkAq9¨¶—¢¡¤M^}C%îº[Øœ~ ñ)Ü\µšh ù„*2,ÕEkx( 5÷ÃÙ%!ƒDщšBAœ]RMó”°ë·unÊ=‰Û½V4CÑ Ê³e!×~Š°P¤´…ß$Oþ¾r/Ÿè•Ž¢%+è„_ç-Á-ôÞ‡™ÛšqÔˆ?%ãaøZylWGUu,4uejÎ5gU Ö›Q1Ò‡C ¶êE¥iLf¶{T™‚‘ó®¤ó÷¬t8pDF{ñQÎÕ§.ˆEÓ€bÔjj÷UÒ†Ž·å>ŠÙ!�:…¬ðI‹ˆ}JEãÆé2¾ýâH¡¥íUô´Ãu‰“LùˆS¹ ! ¡²Ô ÇaÛ`dã‡ÒÝþEy>š ©–À->ýc'ÂgId079ꜹ:#bÅ£À#`Ùˆ¸-©ÛÎ4‹ÜAvÁÖБ4›k«Ÿv.].•|ìs9 kCÛh³S¹ÆJ7Á«ô±*ô™µÚ¥Ec+-Kº$Â!̽ê -¦H� Ô´Ñ**„–õø_AÜä$¼ÉDw4t]Œ+¦(¶‘æE¾ÝÊqú„'7ÁÃû~ع`º´ #)ÞtÒ€‡ßÆ€Óv9Aܸ" -e¯zdI¼åÍ ÜY»4À¦i9‘\ -_Ãdm7sw,¬L]ua¥} ¡ÎCC(¨Ü«3I§³š\G²Ü”ô +þ÷PCý!ƒcH€±p1¢EUwQ™£®},ׂ"Óž!Ã<¯×À¡Ñ=!jOª,–;I³TC¹œ`„ ¤žÔ'?ꄇũk¹à»¤EuÕùz�ç¶ 7¥G±©ÉÜV™Òº|ÂP&l˜u×Ô`„]Z®œ~ *-:—¶·_H;É`B`¿Ãü2»QN(Žrhvaêd?[‡AŽ¤×GäcœD‚฿AN@àïc|BÔÆ»ÅâÔ¢±d`þ94ž™~¸ˆà‹XdâDÄž˜N“Ö”U”„_ zï‘òT¼öˆ3 ¯Ïª‹¹™ $¤/&v,D‡Y†6A¤Â¬ÞAûž‘þ‚Nù:tRÙ°ºëßî3›ÚšÑç¡ŸÂQÓz(s“f¬Píp=@)V¼Äþš|©â”n9ñ¯+Ý>Š,�?ù´§æß¼›«.y£²¼DNT…—ˆFþNë^ƒ·†$¢åª8$¼éÕ¶¸¡ø -^ƒN†ó]VýB±œèý:ä–AÙ÷êà{„•Ü0•À’” ”~6;äŸæž6“›¬Yã%©=ùR¿'y¸¹@z1'b‡ ”¾–šÉÑåÁÔãÒW<qð³ó%×ð4:3ã¥Jñd÷/0‚¢Þ…oaóVøM;| 2§:j?hÈe÷îÆ߃Ö|jÞ¹m¢ÛØ Ñ¹.îƒswœGÒSÁ郱(S¤«ê[ÙÍŪ{ˆšËÁnfE^Áùí¹sšü|Ú٤²:°l€¬6EŠA9ø'`Ž¶Y_·UêR;X:‚9+ž’š=…U4†Õuˆâ®P>GIÇ -ßk)gÐ{¼\¢Iâg¢Þ‡5&¼Ï1➉~‰ßCâW3ûàF$©“ß] 8ÔP%FGQ0Ç•w(à -i¹Ö9p]7 ÏL0I&5Ñ‹TD'`ÍâPË@Ë ö¶ŽS“@uEÎ)Á¾‚„J63à‹3;£Ýú0ã+(ã8éSù¹‚Íöì6ž¹ÆÁÍpÌ‚‹<A”cf™UG4"!dDZ’8/Bhyô~ƒ›µì—â„;mÉÐPÐ:Á£åU?“¾:wéâ€ÞzPÌ×í<U¦ÝxküêJÈjßÏ\A¹+ -ß}æª(R –y°+NšnÌÞɧÌW>6ƒRWl,i†ÃÌ‘ DA‹¹®q´]^„ǖD®—³a °ëU¡©»f—SÏùÚ=&ƒ ï°ª¢×fÄìqB½¥€–‰%ëcmŸ‰Íü´íúÑW•ëÅ=è6®š|ϱ\N¼ÌérêRíW1kßb~®oÓù9” í™ëK}:ɪÓý¡1¿ôW4± ËEaÊÔ¨$^O™uiä%Δ}ÿ SIû‚WVª}b%j_`i+Ïö÷/ÆË$Ir܈¢W‰¤3±Ö)´ÖúüzÏAFU‘(“6mÕ wÿS1„m¡#"É€dìØ@ö5'ñ]\Òª$ÖZªù¤Ü²!”m}Ž5£Bzµ 3Rï{.C5‰%íÍ„ƒëµùæPfõŸ{ ->‹þw¼<©ß'é`T@¬Z]䟰žÈÆäÌmþE;|‹Cå[ÎñVòžß¢Å¸GßK]wæBKJIfoíéç(=mºùäQÞúuŽ¹1ÃŒÖöv¢k›Êùv#HOÍ×cfój;ÄWtic£ôîC>uÔuëßpÚú—ùãÔR(ûdRY®‰>“™ë VLÙˈF·ñÛ%V%]íÜÚƒõL¨CÌ=mñ?Þ’Âä¾]µ&6Õ!w™§nø.+DP+e €=0æFØ?ï+ 04$¬mݧ“DÝù+Ò@¯ÁÏÜ�äMz؆©×ªWó6¦ ‡¹‰q02Œ{ÈÈ]=Û¦A^ÙÍdÏ(I9ÂÓŒaç/ØDÚ×" ~êTPX§|‚Î4V`'›ÝÕ`:´Ô ÒÃÄÍk½ž+¯ÈŸ$JÊÈ›} -¡ê”ù[´™r@>l[êô.t¢:¾i˜ÊíT_…ª?Yd\Ò6JKÅSÎpj×Ø;0YßJæA™pÊøYp±†®0Ú¸ê; ŒtzÃIç‹@ð<RnÞ85MobÖC¬ÀÛ�ÊÄδ)AÂ[H®T¤êw^Æc&Lõu×;´2è*r�š¦Ð¤mŸi’jÎ\ûó q ~à¬,);»¤0j0(b»Db®ÕÎz £s -WªjÀ.åe'Xç=u˜Þ+–Er´p(+ÙvY•vkÜ’1ûLÇèÕÛò`‰»7n}¦™' ×ã"›ÇœŒr]‚3—ðpÏ íPBŠ®Ð#¸ÀºÿßBk€~niÖf¹sŒ8=àÇ£v¶ÅT£§2 &Dz¢HKW‰fÉ=H„†/9Ã'ïR`y˜äÁ‡�w9 ‡ ‚g“ðBãGÄé|ÂT‰WBç؈r`öxuƒÇìVMâ!ÿ¨”õû4‚îR8Å$b¯=†}èÁ¨Ç‘ü´5±µ`Ò¹ ND3†d9µ@gwÀ夵ÅýIÕg…ü -Xƒþt6Y?g=Z7!`UD‘Æ•ý×*LUbîOçî„ÅÏt“5*L-ê%"²D|8±fp`Ì®d¬'í>®Šcø#’`]ë2m±Öc3otPYlϋѸ‘dË)6‡�Ú‡^A¸\é$p2ºøˬ2ØÛdèº4”Ũ -ÄÎu»''ÇÍehÚ¶^Y`Ønn»â}U[{ôšËuQH£ÄnÑ[vk0¼Ú㨛RCݺ—Rw¹8(;ã‚LP\Pø3Ã?=Ê‚y -¨ÀÁ”4}þî vþ™'ÇñßõÔ™ÜдÉX òùž€mcNx%’†kýu/(ƒ8²@q?|G�@ýB)¾OgøpîbûüÛ®rá_¸Û)Bœø/›R›µ §»+^IOÄ•H «)W'gYzvhT²»õs¡A9§ym¾çÄB¦°Ùâ›5ZõÐÔÐx‡_»g‘\wÀý\�dÑÈ÷(ŸÊJw…1oÝñ‹*W¢¤pÇ<?7rˆP<€ç£ÔþÅÆŽ‹ðO"+H·Ý”bõá -,Õڗ�Ü®÷/îÙ2‰× ™£ÿ|I9èóŒgѸ‹UªDããŸþâ"d;ZM~@^.G}ÑV-hðºéiTÆunºrq"]¦£KŸ‡yôDiMž|prKÅŒw3oEÔÙ©i®;AàKÓÞŒÅ]Óý›Ü+ʟɸ5æéüÜj€Õ•ón娱Æl¥+çÞ*ão€ãsËQUÔh?¡Ç(Þ-bè_H!„~á“0ô—ôYŒižâ?]å»$ÒþÀ"¯±o…e¸I¢cJ€ç¥°·@;Ç(^qŽ“AáRt^6"VêzÛ€ª ¿ÑTS¿v»ÌCŒ"$}*„¢ýå;ê"~q^Æmì(\JÑy²§ýqHGsŸFÊy <ÝÌ”Þ~ÌÒb‘Úà„ôõIøº¹Éñ‡c˜ÏËâ�ƒpcÆ“nk9)mö%0êí÷žÆ4êŒMóí*ÿçen«^{œG=òÛ$¿Vüçr–˜íÍ>ÃnkÛá[“ZrîV¤’X‡§‚½ñ¯ö´“@&Tâ>wðØüðˆ-˜.X‡g{m\دîÿ¤³+û(pù´jD>ýº…poVNa‹ììÏ}’´* IßÌ0+s¸¨ÃcäÓÜÞ RVA3_" —]~%Qé0WxŠ¸È™Æ†Gšu2V\¡¥øÌþc¶¬Eúà¼Pýù-'Ñ‹‰L—þö,ÓÂÁȺ9wËQ¯9‡R4ÀF5úª¶)ûJÖeÎpL5Äù1¬¬b3S'}8cÅÁ<0¼žqžÓ0!Ø) D•Á‚q— šŠ[XOòko-‰Âp:“ZûÔaãö½qÛu;,‚´?†ˆW•ë´ŸSjYhö`ÞÂgq2Ô%“¯f½CãäØ„"u`ß$wý€õâhÄt€v¼˜Ì¿gy‹¿7ݸ®žƒ’Êzòe]–*þTtíPlOÆìP™øÿâ…Æät^:ü©_z¦Íñ£i3þôùÃ+)"ÿ8BqJŒƒ¥Xe*g]‚æ¿ØüѲ&H`ž}Xhˆy`PðÖ¯ŸŒUwÜ "yŒ‹Xg+©5¦À.qfX³ºÏ°�·/‘x¸KS°í4e°LÍAQÚ1þ3Ž9³sfÁe”÷åShñø\#‚ÃUt$D—j^wÏP`dqWsÇkÖ‹ó< :’-ò‹q.�KõX¾ÙÂAsú(æú´êoÓòB¢òA8/É çâÆ^t[T"[¹l,’ë¹_eEë[䌩³B úKX4®FÓ+ÚŠ§d‡t=�Å<œ‰ƒªÎW¿F"'¼çˆƒÖŠ‘±�Œ€.ž[uŒƒ -¼*Û [žŠå@œ8ÎÌͶ|„·ÉéÔã!ça×þEŽêQçSÄ<y*8"Щ4òÒþ(a—Aîçä}V2[]—ÓîN-obˆÂ#RŒÄfs¤51õÁ–+M¼W=_i«°9¬�³#V@ƒÎçü‰—¥ÊËŒZ–Û¢ÃÈ(WeÄñ¤çõ&ãdŒ«![¯}b}õ̺¹ËkÅöM¯U¯Ú@Ý´‚{fsJÞÔ·iHW†¸!*ïŽt2_gÜá|·ÂÀqáoL«ç¯™ÀÔ†ès±Â§)ø ¶oPú©~M&„ºV0Þ‡¥|M7?M¤e½w(ñ$ôГDðl4¡m<µâçë°fTM¡ ‡Ùÿ‚wŽozÊÙd¥mP¢ØV�eÃ8d+½ËleñÊŽ·&’5Nœ/öCèÑ+bÑ“73ù/j‹K¢}Ϻ÷öØDÞÞ¤â3ÌÐáìò¥yXûVþž6)V<,¶¢G˧y‘;ñ")„`§d9_d„�ý-„£Ë¨P`4eü§†æ’±yŽ‚)©{Æ}-§õÔíßF††cãÊ[ñ½#‚Â0JÈ;»ÃL3›•ø‘c°fƒ©$Ô&H$;<èéS|+G°x·ßÌ_cc©'8]ÌûpDYc _1 Ø@ÓàÓLÙ“B‚¢'nÝ[±¤í¬öŒœ=\Zit2VM_ý´€ØIxæ`ÜqÛä±·•\ÓE¤2 4ø»8Ñ/Kzr4GDÄ~{[ÛâÆQBQÙ¹u#ËË ËûèlG4îk©ã±…ðêcIa{#.d�f2`ª¾m|ŒÿT căŸQ@ja°"ì>R0ºDPNP§xx&“É0jo^Qæþa›„î_AJã ÛšW95mÂÀ®Î*ÌõË_B¯cš’ÄÏÚ´ ‡ßØìƒ.ü?+¶ùô½ê™sá1F‰arå³bbù/ãåÖ[W‘Dῲ4œôý2<Ń4âa愧ÈØ&‰Ä’åø÷|«ºíìÞž dŸÓ—êªUkj(ƒ¡Ö`ÅÂЂ—ìEÑ늡AýÔ%sÈzZÎA5éSÆy´Ssj<‰Í›ÒÙ˜ <tY²Ê‰“Vú@ËÇLö©òlˆ‘BQ4™æ&à ‹ðy%}W²<Ú�N¤\¤PôfîqÖ’mânAì-<;0�‘Ü6Nκ@¹H¹s\]Š—Ùdü›xCæA,{ç&ꌢ¢0ÐÏB¸i[l�1éEÁü©Us)s¨+~$=$87Š¢-(óxÜ/jH†Ð˜¬ªx%»åXÎâ‡xšf$t(áÒA¶Ó×ð-Ta -£D‚3é'òÔaÒ!ßˆÕ •ÐC&uó¢óHÑ1+ 7NÞRúM¡�[éP•Ž°ÃZbZø…‘DÐ‘ë š-Bª·ŽÖ±.úGŒxEä)›»:šáN ²wô,]Â6Ñ¡ä™BCè¢'héólÊ gÄáØB -À ¿›Æ�s“€�Òzt=HcÞ3úQ4hÕù Kýh!4¿71*;b¥»He*S¼ÑA“fÄU/‚@OTÃ’èZ¢çP'Ñ¿¶g'¦iw¤t²;ˆ—hZ¥–‹yj6–Ç>¢¦tX’É0 F&4’2ÚœlbD€¾Ð_6U§m%Ç>²Û¹›Õ®¿äYç<Ѐ‚e£¨@ƒ½SŒbd;Ùm2”&ËÂd>DP ¡bnì)ø̬æ$7´ë¼iÈ/j ¹±”øWš»›ûÌVHª©´¸˜l49\h"Ô³- h#ïäù½Ž’ùÄ+9X±©&x·&‹K3œø; -@ ïò¯ä\Þ¹³€bÓsò1ðù�A ºÄ†KV%4E9jŠ<R%+' -Ê4»ø‡<€Á*{g9Á\’o ;“Fº³ž¡ÆÓ×q>€Œ¶Hž‘E¸vá©(%J³’u0rÄ{¦@ (ÚÁ¼‡ŒcnŠqð—1Cûæ{ð>Al.’BQ3áŠäè�±èpžU¾u“Òb]Å…EÜ'Ç5<.qÈ +s2&\¤±óÁ²ÞÎ�u~„Ã8¿ÑÈÍêÁfeô6GTXžÞGèV¬�-à#î”*ð…3¢ÀBÀ�(( 4~à;Â}˜3Z€€Ä”«Íy»F7}áĤ"´åfd‰Õ"@¬•ùìo#ÉÔX€ºzúJKª¨«Rãz#YŒ1çÒÎàæsçû\g͉¨ C:œr½Ô‹›è‘¨›"–ÿ ì¼ Êžñ¬#{ô.ÅrMD&^Ý627Ù±~Þ‹[ö8ÖŠRÜu^0‰ÛÓMšg–>ª_*é,’ pÐU#PÓ -xÖ êú·}k¿ßO*«Y¾ È*Ó¾üLnN�¥ËÅp� ÓÌ$ÕÆÌtŠÊ"p»Šç÷`íLª<t¢Ì/ìÕˆ/•QÔTVwá_£x†:Åf¨Ä)kªJ{“k49ëºVGª»Ì3˶ÞÛÄvÈ®£(>惰÷+|÷¯^ÎY3×'ºÀ,åÚ¾\Ǻ©b^@“sL«” ¯rZ¡¿DLdïIW§”Ð+q"ÙÝ„¹ i²9ZQl«™Ù¿±;.‰×åòöäæå‹]¼ã‚ýªª!‘¢4‡]Ä{xF·lEmA3C¢Ó…ÉE"ÒÁH1¨ÔÄV•æá-·D¸"ž3s·†ðLƯ>+L¦z:î ÎDçýZ~ά! ÆÅ#úcàea¦¶õKhªb/WÈ“$y¨ct=î]öpülLJXžôîCàó³Çî¨áÙ¼ìq½ƒ&ˆ(üÄõþË®ŠÏÀ`j‹žAæ±è¶õàÛGñ/œÏ讞t]hhiC£³TpL={Ða#l>‘mÍHK¡.ĪÄ<¡»kå”%sKÏäöŒ`TêTÂø[ò¹{ ;1@2ˆ¬«èÄ1ÊŒDÇ í$HÍÅñj½øVFÅÉZ¦ú™´Úy¦e€Òô“5³:oçx³"F†ì#ÖFš'ºÙÉ*º)L!z6$÷TÕ²ä™~N¶ˆÙ\9–!ˆ.!?0ã—9°"È]°"Á~Í<[öò9豟á/$¬DÃ.ÒEAcÑQ²wÌž°/Ö§Z1‰¬ð™«Í÷LÞ»Z0•yÖ¡h»^B=:‹“Ä3¨ð'©T1úœÑ¬€^Ñ7_9ˆˆIÆõ>…N4ä3hs²Z(„XÆP0MMƒyÈòÙLVGrð)Eúa—x&c4ÆyAÜ•1ÖìNÁUZ°|,;Š?†¤²ÂË>óž$·‹;-T4œ“%¹\Ÿ)²xoI£ ®JDFçÄý‡U`MçPŒpPÌÈ kQæý"³ökÈêÇ Š"ãDb'õ|x�²˜˜ýÕAÎ[áÑúDqÜÌ‹©à¼‹ºLqʫR V—µ÷;ìèÀ‹*&´À\%sf -ùa*ñéˆ\lÜã5E>ë -ãà/Ÿ³¥J“v2Þ"Æëƒä,V|€läkŸ³(Ç´Uô}F+~´ÕãhÒXë*¥¸zWŸng@¾k’+Òê¼` û_l¾-BÃ9úÝ¡Md‚8«š~�ÿ3HC¸t 9hfam *¾"D*æÆ5ûËzCy÷%£»Î„ù;}ͼ6솜}½ãÒCÒºÆ%h¢mÁÄì(~DçÈ|e%ªaø,aÉÅaƈê3º[ÏÙSæʼ‡/Zxûœ3Ó/ÜÅq%ÁÙtѬ‹ô"k‘П‹ï}ÖðöX”ÿÜU‹gXryâac/fá‡/û çl”êâWóºã¿‹ÿéÊíÅ›OŸ.?Þ\oïï.¯?Ü|ºßZ|9—yû÷kéVr‚+t“1új®ÌmÛÅûI0#IÏ ?h›÷~]qçÖûz$ͳU*u¢ ɇ^\||0äüóÕ~½z}wÿ퇫û·Ÿ.ïþÜþ©žþ½½úïíý÷7W·w×<ãöªÿõ«ïo.ÿÏåý݇?X¼½ø×ëïþ=ÿão·wÇW/í¨o¶¯¯o½y÷ú»þŽ@~¸ÿó÷›w×ÏUüXÔ~{{}˜èð·}þmY9(Û‹—ÛÛŸõ#RSc¡Ü ¸«4°Ø&€"t‰I,¤ƒ¡•|¯U�¯¶Qå wƒ@IŒ GcZîhÉ\D)Ó3.mo/¶OŒNL)·ÔD -™ê<Ö`î’<™uanåÒÎ.ȉ¦¨X¯þ?–Ó ·Ò`òdø¨Îˆ“ "V€‘â†,ðEqôÒ &x”@Q2ÛÒÆv5tŸ Žàøqs£k¹9¢v¬ÀKpΩHƒ`—Ò±Óê|þŸðx™å¯ÅŸ0*ã‹€çÐ -´@<½ -¡0ð úÉÎó›ÎŽivV…SȬ‚ïæöÅ|þ2 „6!CëÓKxϬ—YæC%ÑhFÂu<a€ÀøšéL@Í[P¦²#CѸ†ÌžÅ±ÂK¬ð™>)Ã;˜›�{%yH²€×ä|ã&Ò–RSr9‡mPPJ[æ`2‚êÎA³Ð ‹ UÄ¥ÙMq¦‹9±"@Vi^@å`xeÂÒØéÖõ`�ît(À³a/#`NqêI•#í¹EÅ&y(öŽ¯y”"[B©ZãÉö6dŒ/�ŽÎ…×T7—9«® phœ* 6óÜ:+¥ný:7Ô”™– <t~P©'@0éNXdˆw=5 &v¸½7YÛ(-qt!§^Ï5¡åŒçØøÿS„˜Ñ}Uæg˜Å¸5`õUzóQrRôà´¦«Ó}K‰Pad Iå¾c�ú¦5°å_¼—Ýn]Ç …Ÿ@ï°oz‘)óÿsiãÖM4m…àÚ'‰ŠH2d¥†ß>gÈ}ŽÏ>Š h€Ä1ÏlÉY\\t2kdîA§ ÙúÈ£_È 5ÊLhsþ±a&BŸÑò¹è-¨>à€åh‚DH�úáI{À«™6‰2Ku² .Ú…nlr²9‘•¨$tH–q¶äRÁ<7z„.D¤q+˾„ PŽÕ!À€{„&ŨQ m!PØ™[‘×ÕÀ?3MN5räTâ±…™ù“Ñ.À½É\Ï}ð²\žó(Í&•ÏÈŽ/*å„S~0úÄÞ¦£ÉÚåèA÷qº…$Rn<Kƒ¬,Ä[g]y ÍP"J‹"¡E”óläÜ‹6L¢¡›@©"S¬å%6t•ôcÊS,yQ“| ?âr<R¬3.!éé«!é—¤Æî"©µ‰Vyˆ<Ø‚Ýh„Â%t]p™ú|Y4"ˆß¥‰Ô+ýØdQ¡Ñ|}üˆt…x6ÁA"P¶pÉÊEÐ 0„(á$]%ã†OIsº-ºD"äÉLÆ8ð²JÐ{â–žrâ‰$"ô2¢� š» -ס½ÝÛ3&Óš›@Œ<0Ó˜:!Y½´™M7 …)»ŽhÜ$¼òæÂ)Q˃ªjR?&ÀZu¼uÙ‘ò(„±$ €ÅÀ ëà ÷½A"€?IK×åé~º4™sJBÆüÙrN»3 xB ŒÊ¤¬Ð`$ l Än’'u_ô&Øà¥Ùdô¨ -D‰%G"e©ÈÆDV"i*ÛÕ¹ï>Ô…K}®²œ0°ÇÔC…Dô'ðûgT1ï -΀0s*[Âò°D¦¦Bè‰*€H»¨’>Õ¬Ÿt™l;ÐçeÁçÈ 3ÓϪÆåÙày‚Ì.¶2["`ª,5|G7öOM 6h0I½±W ŸýïR#8y?æŒLvÐÏàóˆaÀ˜&™èøß.áŸÀÅÿIŸRퟎíOÓôŽ9 EÄ“d%#Â;ˆ/¨ N"}>Lž2XwCÑ3Säo*!ö$gši"K=ô±¯ø©ñeéÅ“ÌAÎzbw¼§ÈKF=‚H¬ãT•å•=V4.K.s²Iƒ:œU£ õ¨æº‹2Ï@µˆÕ(|];S�tI5©ÚT$ƒµÍª‘&~†ÚNíâ—1.SÛIUdé×Ð1ãÊRZšs€&¬Ò|Ó¯¿»¨,E-“Aƒ;BâGÆBÊÐúüA¦AÜ#L æéZ¨ƒàe%"HIM„ˆé韯™Ú™Sø(§*0··Œ©�AÕ^´*ne7-òiÈŒ@ƒ¡ÉLþ©æ6OV(sNåàó¨õŽ²üÕƒûÒDÑ2¢t —aÀ4ÏQíDÖèmndÀz9'êŸetÈ ¡ÿHÝñóWœðŒÛçƒNÆnQ¤x9ì<‰`$$$”h³“x‰0T(ãS'£i‹»(SU -R2ÐO`W”¦¬°E`Dj›˜7müÔ¹) ÛËв¥&x©ËŽè¼0î6'DLb–¹4&í,ÙqED¥3‰Ã.˦¨5NqîhŒ'Þ†u�wÄ -[C%ëÛ|üÆøá]˜G²ú´la‚J÷ÃB¥Çp#g°Hý3"ÓöŒ ZÙ†KÄ µ-г -–Øö \D®„ОuÙúõq[n/>nïÓ (9lòßðʦ†~:ùFo›§Üâ [b=ª ?o°¹åøc|?9+l#ûÛé±ï—ÏŸÝÝýÄH~þòÕÃÃîþöêù»«ovow¯vod<4Žû:(?Ýß—o®îîð7W—wo¯wï®þ´Ó!Ÿ—ÏŸ3·‡_Þïþ{½{Ï?½›GÚ…†óyJŽŸ~{šøÇõ›‡ç‡Gôb÷ýÃÕõíÕïïïnž:üíÝÛ£³`˜Ê’Øyõ_è«Ýõ?>|bÚßܽ״“h„ð¨ë/~~¸ûëÛW¯¯o¸úê7ñ÷§’–ø¿{¯ž[àòp-0¸úöÃÛݧåWÿ¦$ áÃÕ‹»×xpÆ-ðy¹»äÛŸ?Bå—g¿ûây¼úòö~,Ïò÷«¯ïn_Þ_ß>öùù4?ÛýÀƒüpöõ[ù¥Í_žÝÿüîGó³ÊÎòÙ™[¾àßïÞËÿìÎ~Þÿ1•%?}à/äþƒéý’–?/ÿü—[ÞÈWßœ'hë%y×øãæìœmWä‹Ù^ÙdçäI_~{Ê6¿½ÝGô—3ŽÑ2p¼¬pù"Äh 8&µ�¥‰bʉ©$B"T,g6hº¥EaaÏdBÃ+^øª g*êÇ9ˆgï>½"gg"Q¢c±ruŸ/;ŸZSd_Æ€Ž#C0$3Z¼¤"Ô9Íìc]ϲ¾™ÔÀô}îËæö˳ïåó€¯Ò‡I¡Ú33ræqÖ8_"ÔO/ótrÅÌ'/Ô;-X[²Èsz°»óÓÌn8bƈj¨ÓˆË¼PÞbY[ýL32k™¯,<æZŸQ³ª&5ão5wSÓˆRϦ²œŒ×ÊÄ€r]‹Ïk‰ä‹£š[ÓD2QäõErU£3b@”šæ<óÃ\Cflfd šQ–§iqýÞƒ³ÚU¾‡n¶bŸ%°Ïìc¿7úp(3óë,¯}²±iÅëc«á¡ZU{m!¬eäµÂ4ÓAß-³^Zз³8h§Ðõ,›ƒÚ<¡M[@_jE°¡…XŸ¸»U,{-Ù&®Ë5àì|ÐF’ir£æ(fß›Œ¹$m2Ð÷…kvÖéknü›HDS>uahˆíóh¾C‹ -wȬ[†5jC{‘TV¢à‚ÒK•ˆ}¢Y+€ŽÛG\×ëØöQdåSbsM¸Óëu¼ƒK·Ð²8X1ÔœF‘„‚ÛÕ+$ºœ=ÁåJ?²(Ï´VWúé¹'ô{¯u¥‰ššÎmÏ-%+{%ŠàçûEú6/'o³0ÚAC& -ªa4|˜y?4É@ËÜ|Mf,^qå˜6Z¡:‡Ã<Wº«´MQ„³é™†TÓŽD=/'ÛG|t¡EœØôMz!§{÷`Vc2¾öðX"kŸe«½ë¹® êµ@™ÝÉ`_ª3švqµù0Öé³ &ÔnÔSÒR»•tØɜעæ÷æ#ê<:–P;?–—53Õ9b} &Šä˜õs¢Ô˜Z‹JæRTëˆÙÙØzì„SôGü#ÏÈÖï)·ÐRQÕoDIeOf ‚çý37jŽ¢3·µk!v5RÕþk¡ÉYƒ]¬ÕÒ`¸«lÁåú¤ì…†®^ãú¤NîÇ\‹±Ï¡N›¢ìºŠkm)‘cÕt×××÷~O¿ÚRø-Õ›1Çåd`ûˆñÐL€¥=¹0:#ö!û¦‘Ž2¯¾›ÒTc©Ëë3;Ú»uv4¢o7NâÚs€¾DÖÃʽ—5ëfÕtÎäâÈú‘RØÙ¤Q̬^-Š¼rÖQZ¥eŠz–änÔZºMßžj3ŠÓœãÕóduÆ(ô´òiÎ]™>Ô©šål7m늎¬ã�^¯5kÞ™]¨wåÍh‘¡«üÊ›†nNûf•È—R^ŽFÔ¨m5¦˜Mo®{±;¤“^Xº_ãØœ×Ó©k¥¯bãdOyZVµ¬”×ÕB,F�ÑÐmo=:½ÙÊSúJ -¦á"³™Ä£s -•Ø›ñeimÕf|W²!aôl^[tèï“áï[´÷°¹Ä5/·¾ˆ/F¤.Ä£þc´‚ùæêRÏ”’î¸ËΆÐòr2�cbV¿Š©RlÈÄ9n§Y9ÆÃݯ53¶ðáUŽ[ŽO0w=F€‹Ù!W·èSæÜ¿™x%UIßQ„²ø@k&߀R\t-àç“S>€Âî½jñçÇßœºëc¸æ”cRmWñRß -dߢ×ò!˜ïêía%Z3ñŒ12Å®èöý‡™¥WÝ¥å7srÙöÍÿ{!îäKáÒBÜeqK†,VùªzC)MKn’òœ’Ko‘¾}Z>ŒŽÎU ¥ª}øÍ÷9Ö…d:K794ÖáT™ÎÎZ(6³v‡MýXšžæUjM¾ïŽøêÁ]«)jR¡Ö§«)¶ÿ^çÚ+«©V=YŸhKOØ‹elL½^ÌA= ä1#z¶å¢Ä´¿@w;[ÈüèVh;2¢Qm:ý¸Ó¹òlä`{Lí¡(ßÛ:G€kd=‚”‡ Ô‹v&þ¤§Üì©�áÁ²SLxK•ÑêF¯Àä,¿vöUh¦3ݨŸ¹‹Ÿcp’‡õèîû¾»T0œèÔmÕz%Ø«ï®±îáô-‚ç`d³« AŒ¸KFæ[n•t„4K¤ÇŸ„ Ãp§4ŠÃÛs+ñ>¤·•d©l@ÄßY*öÓ¾SÉ2^«M©tm°ÚW‚Ï3÷·œŽÍÛíÖ×7|ä„›]Fz<Cjƒçç ˜ˆ}ߺ&ÔÈ"±›ò»-R«ëÂX–´[å¯É•Ælùš¤aßò Ñ°Ñ47gÛù´¶nÖT Ê=QOÆ™2úšžØ!Oå£;§…W‰žŸf|úZ–Þ*ØÖŽ;"åùýØivÏÉL>Š#M¤P(õh~Û-Ç`:”$¿ìL×Lv²çm —m娈»E‰›åq‘U¡+‰êì¹6ë)eÆZFv,5CÝí³y»¯¬YW?…ï>ZZͳÞ_$åE^š-ýï[ó·LÍ’«²_6ì-ß -9Æ&VwJ�-tÀ.uQ#Ik£'xÚÀ.¤8*÷Ž>h¬¥¹l«ï·—÷ߎu‹°ÛNÇ:·†û4YnÜ–$ê’tîM -MVŸîW4Íû]ùúi¥:_¡šõç2Z–çÓ–!ÖÉClzãŒÛ‘”TydØu2�oUÙì$8@“,E×YÚd‚ØŠsÉ�æ÷æ5›_†ö‘ƒiŸICç ‡¬=®UÇÃòNxOžžÁœ?´ŽX“pCÛÐ;#¹Õ'ÄÍ’ò+^ד¸‰1;fnð{4]’òãµm4‹VoêÅ¡·î›Ö'âE3(ÜÂ?-áoFh}"¹ãLð‰òÓú$<h}"àŽ„ÝpÙgáXª@?díÙ.ƒ5gÔö⦰¾È¼p&{ ‡~Øä\ š÷Ò./t¬q“@Mf»žÅ$O tÞxË“v:(0¾$–Jç:ôàg-×á`„.³¹ƒuÐGJ© >/ý¢Ãc€{NÎ…v¸uN.ÜëÕ�}kb¢S¤<Þ;¿Ç%.æh:j$m†~›`ß÷ˆ]ù½ÍF·Üò¨ûK%§~~Àý²…–8Ù„@e±HÝ‘c3n¬Êq•˜¸sBÀÄ^¶¨ùýl—.‡Ïª›ºðXg“ÍCÎ?÷ѾÞñÙÃþ´·—fyŸ¡£o.lù“°õbÚœ‡N�eŠ57‚ü‹äHØI¹â²¹¾’ÇgÚçú)¹ûÀåjdç3ÖKåYŸ[ ]ÓÝK}½Ëî–ÝAú`§#«|v@1C¦Rœý ¸Ô¬v)@&:¸DØvI²"áa!üD˜5%,Dhg×ïyfÕÏAß$–Pu-^VIƒŒ.z~Âõ6+µü…qÂ)ÚrµòmåE«œÅ Bû $e8üríÀœS1žóèÐÑ‹ó½º_ŽY1z<c }n³ -–ad>út,h‚å*4Â)(®*¡•*'ç¥ÿpßMè¼Ü`¥ŸDÁØ9™×Z‡Òâ(‘±ëÛ«ß_šÔjÅ´¨ÒzÐZÜ1ÔšhÅ¢úˆ¡ºÅ‚¬O\ÚÁº´`Peží§väf†Õ˜¤/=`Ì‘îÁÁ|Å÷Sp”ý SÍšôäxße §µó,“ pr¼<yðž ºi| ©›JÙIÏ€µšƒ¯žvp%Šl,·LRRƳ›GkJ³Ûæ·ëo¿j9Q‡Ý²[úU˜MÀ-+§ ¥O°[†(ÆmËl¢Ã /Ä,ÏŠ¬-/=¸]ÓšVV,]³{õ®ðôi:ëV»ël¨w׃{¿7ÆÌ£/5Ë0à«·—/`¡nx¶·ñãÂ'al<Áv„O€õ¨!Ï÷Ø–ÀJ-Ôö ñ»tÁÖI -Yù³"~>Ü $ `$~| --@{—#xô-ÝÅüâ쬂K˜ƒ¼d4¶zb¥Þßõ‹ãÈ1çÑz¨®¹I=$à‘3 <¬U¿Åbð:ß¿_¸×©Õ`8›ºîùºð£¼ýý¿ÿü÷ÿ‚léK%ÈÝ'a©OE“Âx÷es¾Ü»rQ¡¥&A‘VH‡ããó]Á6šìPdø:°L-OÌ-‘¹ W-ÛáY´Û<%`k<Û=ÁU -D·¶Òn‹|žìC»È=©©[¸jŠ…ºq|\JȇҽD±ÚV¹,hªŸ4™SVýXe¦4ºK“drè\–ÌL“ Z?ô<(‚ëVÚÊš÷k£MÜËÐ -e4‚×»Àû ¨Üfõ[Àð=ÆA}¿tÒ¢*e@šo„Z¢Ü·ÕgÌ\—);×VÖeN»s÷Û.nî¬ZÛ2Ð}2bƪ ýVXÊ-À1àØ ª»¨Û¢w³k8-4W_5`lÜÆfèkÊ,”Û:túÓ$FꤰZ•È¾vúUk«*…j¼ìÚ€ÜEò\D&؈<d\¸c–g1q·HjË41Wï÷.c)NhúÃ#¼Z £+¿W‚>œÞ®¬0ðÙÙOb<‰mËÈ¢|Ïôàÿ+´åù´aâ˜Äø<’ ßZ?ö‚Y0Ò ª»˜.·Ä‡³§6@©,cq €õžÏž}P $*ÛëZçl³lPjÚ0@.Zv˜+§I+ª·-WU;&�öÊ>×áGPÇšiצΎy–Zœmª´ŸÔ¾Eó¹ßP‘Î%ã§2Æ©WU.G㎅ÒV{¶åœ“€5lŒÅ“Û4ë=À"p7[ùy\W°Mmp·ÃÒÆŒ)J±°i ZªÒnsxðAØ͹<'È1v(�ºïL³Äát,ZÚÄG„^<ÜËÑ#êÙÈÂ59ÇHh0ªz1[OyAc SéWdäMÇwU&@ë1Q÷Ébàº54ǺÍRÕ-.¿zYt¶'Ö¦Wùj3¿/Ýù\²Ô1R¤aÐÔ"Ÿ:bM˜ß#FëÀZø‚j°”¡ÀúlÖšýŽkW½µqfô×ƼŒ]õþ•Óüb2°j2ÔÝd`öB«;3Keƒ‚õO—8¤Ý5‹Ö’Žuï.”ñ?ú~Ww™"àš0°ô½ÉâQûÎà¿tWÍ‘F± k%dlþ9çº]¤ÿ"»“LöôÆæÙ„DÏžïÂx’—Ë%„vüÑΫ0jµ…È8·ÞõGË„gHƒ‘àêé…=vH‰€1ÙM¦•kêŃC"A“4ù¨³·¿àöHbªïç"ƒS¼p“ó^[YDQú ÑúÔRM©œhà úV^î”�ȸÂÚì¶|†ˆÚj¢äBçúž©@¸ÐÚÖq/ö‰² ð˜„O~m>Ò~ Ë´tßàÒi&>›SAã\²´¯Î,ÐÛåHey¥Í»¦×r'èË—ê[‰™ˆï –2Dþxc*èvÝj˜ýX÷±?:…)¡ÇNðû�©wyÓ5~ö ÑÀj -sí³>˜[Bðc™w,žÀ¥|õÍ„íÞr…N¿šàë›þk�ýìYÔ‹SØ�Ž'žòk²dÓe²ÌŠeþ¿±Dƒ©æV -€k‡Ê‹Ê9R½)3™íÿDú¾5£†ï>”ée4@#G¬XÊ^ÍÊÈVÙOÔ#ÌhSòã×{¿ûü/Ñœk½'] TˆÏ~ÖŽ¡µ‘Ô̵KjÏOQ®„uUv�Dû½Vöúá 6Š–6¹v7mXÉãÈaÞJ8@qQp25TCï5?Ä»}L‰3ïÌ€/‡2óIü:æöèf–,À©±|•°¤˜'pK17sÚñÂÑö3¡†!ãöD› -•.›à\N½õaɵU×þÙ£t“Üèñ]৸v°—<=[ð[y€x�9Rë°Öz×Ña!™CPüUÔ)¦iútZÜ‘bô3pŒJ‹®&Ë\”g§ŠCŒð¯öNøÿ’ïÈAçÜK ]a‚FÛŒ;ºlgZ"Ó`³É‡G£u×·Ö2)¬¶¶€ÁžÃ{r©Ÿ.ÀCÚû$ãjÿÚªfñ™?Tû–J>5ðî{íÊktCÿ•XÖÁu½ Àµ†4Ψ‹9œÂêÆs)7ÀÐMji®]¶oÆt4ª›“³Ä:@ñ:D‰Ön²töQP§Éq~^ï‡dÝ+Á4 -ÒÞ#o wÍ„TÄ ¦^lpŽ<GíŒðWQ;+[TÂd¿&ãÇÎ NEöMàïÄ>ç7À4‰Ï±¼×é&gÑzÎõÝÚ‹¤˜°•ò§ƒœïjYQ²ˆÇ:WÂÑs…|ƒ“àhMmEž·ùÕ'':À TŽ,`.0zõ®”³Kcå:�àW£kÏéµC..'kaŸmø°3¶ö{ºWî?”þy4Þj–ˆ° D6xí_zÙXñ`d*'“�º»eTûÊ\¹¥»?2*pï«q{Ÿ@1@ù' #=&…X €¸ÖÕí3í)ÖšÉ -7xØsJYø¯jÍSí¢0Ù´§\�Ó&|ù›:lŽXÿkëò®G~$Ò v -Îâco~ËRÄK›]v!ÆWÁõ¦p@¶ñT OT…FÝ[}ƒqA,d‡ÂœZ›ò³¢N«1c¥njå×¥øBRtà†qÖú-Å—kã±å¾�Ž³ zZL XHÁìAF2±¢NÇÚGó7ISÄçi¤§uÞ,£}pi~´˜ÃÇâÁ¯Ñkeª'å}ÄϾòÂuc(@¤H0g©ê¨›(ÄjHò”ìø9Ç:ÀñE§ÌÄíý0*ü>Øx¯Ó =f5Èú¦îÒ“/2E(¤õ{,h2¢nÅ+Å^Í£ìŸ#CH2è)/+Ò2VRóàU‚~u߬ÝÒó’g+%huX®<ÿø7÷ÛÓþQûÑ—ãeæó3¤îB–f¥ó”h3WëcÖò£J8¨’Ñl,ÁÌòe<[¡â¢³½žÝÅÇ�óõ½MÓ+1”;À¾åJ¬¸—¹Ýu‚™e÷mÏ -^}¿ ÷©¼jòL×½lǵYˆ©ù§Õʽ»SØ[kã”HãËó“ ¼šÜ:À»Uõ)L‡ªVu�Pý‘z¨ºÙÒ¡ùŸ¢›!¸—î8ÂF2Š¥\öß©µ%þTr -þÕ †»Àk¿8©�ïý1c%E¿lp)ÁLA,^ÌV™€÷\QNµÍõÃ+xü¡ƒá:Á›}‚½×BQê—"hý³µ,˜guãð£Ûj~X¹.îAA«ØÔXÑ}{ÓIhuª²ºM€A’ÁÊkª˜Ö²€1ÚT)`Å¿xòÅ -?îäuðÁ¦¿×eŸå)y–NúB€]}“~û`ô{�Q:ÁïpÍᨠ-ÿvý¦)à«ÿp–ïzsr4àM©GóÒCµ4ZRÃ@ºN5‰©¡~X9)»–F)ZHã‹'˜¥žoÖz&„‚n¡ -ü”Aî%ç’ªžZyï;/®>=(”ÇÚŒº×”ü–Nš¥ž¥´÷Š%VXtðPJd›gmx|ª§Ð³¡¿õi¹dB.MLŠÆqÚ]q<á)eÙ “EÍc>z>4wRS–M5¿Uõœþ°ßqÙ”—]Cõìy~yÙɹ;ÿºVŒZ꯹‹ƒ#OÙ‚ø -`n·de¬ÎwNž cu€,¯ -mt³dn‚8¹rðLà|º×û³n€(5ô÷-¬uïøÄjßJ°¦`Å6Õ·)€J½ãu€µUöïr¬¬µçLpõ ZØf€£WôQ}0ºÏ=Š�ž§³Æ¾ÞîÕpù?‚ŸŠf@)1ÄûYú¸×ÐC©qäÖCEoõ¸©ÄÄ4Ë®nö®R³_§&׊=Îáö Þ+èr–´=DíhÛÞît½VN°@ùÓ•l^¢LV‘æPD9 úØ,==Èμ‹à¤pY™Y•7à·% ãr©…Ä—èýI«œ¬ö£8v©µPÈN¸Ö&§ò¤%�¿©J¾ÒŵÛjšs5ŒÛòk_•LÈØT !N<*Mêç×n-w¡œþŽ^ìÁstÜHA¤�Çw{4 SÀ¯elßøeù0Ä¡Ê�( ›É=Ô•‘¤Øõ•ó¢d?fr×W_;{ÌzÄ;ibg]Iȼkvט°î¤×׌”©Ž¿2ÜÙ[®íy—ôÇ=Sd"Éz€zY0ˆ†Ä¨ÛW§_ò;‡·¨¦h& /•–àÓ§>¨�«ušä#ÀRCkNa§uf*Âs¿æ’~M‡õ³% Ëø懎;fü~Êúe÷Õ�'þþÁxêƒ{W`ùÌYòÈÞïhJ9ìßvAc\VÏÎù¿¸T6 Ñ?`, ìcÒšÀÕÃxÕ“*Š}ª/<Šº¦t#`øE6JÄMYëV£˜D2ö»‘‡öC7ÑKŠ¡5N’ Y—˜¡V[ãì�‚å¹¾AÿCøÎêäåõ…8£Çwö¶óзöÙ<WÂ>y¯x‡ªæLp ¾6¼òu>‰JðîÊÁÉ*Ñ·>'û/8ÝÚg¼{W Ê4ªãËÂÉ–|›ov%ˆŸvTEP4k=çVsò|_6&†ëä1΢<þ¾«YÎÞžÀwPìÀÅ`,‡J}gºêÑ™ßV9{ÕƒÐËWŒm– .P#ÃÍl¸L½õoΕ-Þ\9º§7b/qVî¡÷Ö?;8GªºNÎ'ÀÕkhgši€ÞkM‘Ï íRêOãlÐÞQ"@,yàÁ…–_‡3f¡tŽËÈf©Än—«Àw«9D€ïG:fò±Y\Œ8:Jè_bï.³p9&gŽ³H’mePy ØÍ<«ÀÇn8]£aòÖ”GwDjšlsÈ�Ÿq•I(ŸŽY�£ew Oê°9]˜íIšðQújOõôÌ¡íÞQ°»|ç6Oæó‹SïÊ!8©tó}~l}‡(›Vš.kÜ2L°6Úìú2Îïœgý×}û.;–hÊ€€=?†üÄsíh[QÂM]s4ÍÜeȳ—6¨´Þ‹ë®¨b»×Ú -*š&€s®oaÎ% 'o&xUpô4é·_¨9ºú�°•Z0!<LûJ¦ÂÚÛä;k‘>HtP‹]uoKÛ‡y_7÷�Ƙ2}÷^bm~é65xü~KEñ˜m{ûˆÞÎ-?é –.°‰–ß²npô¨®É¾¿û+Bí•„pOY6€M9°íwÌK?{-$”ÐAˆ¯SŸ£pÜ}hH2Åë]í½ùO•êÑAhø–üÐÕØôÓõºí%˜ØSM.Fû¨À{Ûë÷2 ·Õ©®‰lW8“_\ ¡aßÚëÚ€˜–‚@y~8ï©in 7~ì––]¬õ«¸·w2e¬,JÚSÊ’°¶e9x®‘$öOUl£ -àb¸x Nù Cr«•ö*øö[þ©¡òjáÀGtësw))¼a€S}kç o¾bÈ�FêcÃôÕJÝ23žEk‘äöĬÉæLü�p…”U›©å†Q‚ÙZ -I•Ãˆôš nƒC./ðàÙK¶KC"y=𸠯±øû˜;iS¼€iFù)è"ÁuD{ÕNHµ>6}kím%Ú{4¯ÎÌC°ÝAƒ»¡5½s£øvîÏ×DÒð>úxpd?Òi\ketŒ -Ø"[<~ê4E¥ µÏwWË«ÇØÿÑM3k–Üoé*Žà'Wô°©\éb§0ÀÑ8:4öµ`ß)œIÈ#Ÿ¥ƒÚ•Á -‘¬|Ù5®õÚsgž+üÑÕôӫÀÇ/˜ÛÑZ3ã`¯0çÛ�¾Ë¥í=õð«y«sxݹ[ÐÚÛíh_1j^½ØSVÓp¶™e±øåÏÏxäÚÁA\´´ îûnqƒØl×váÁVÂï»<ÚMI0±w3ðò,ðªêÂF϶C(˹vÓ(ÃÜ&Ã1~~¿’§O†É±a}+X'@dÙ–#‡/mW“ª•ßÚW¾ÓDq5;aOÃ*=çöš κ>Wµ¢š¦öäÁ{6žl鬀`É -ÛÆ$8WçÅœÛnÕ…':ZŽiH5y†³ÛbŸC/ÞRV8ÜîàÇ`¥O¶-Öš°3Þãó3¤W›»ýDÉ“Æ2ÁÙMà8Ÿ£é! ÃË›Áœßͺs5/R i¼°†‘VÓXÐAÌRìÄU6;@××úV‡â³Fô ¶ }ûÝ&¼"�ŠYuãA`dPËØ¿ï^¿ï~Ù¡~‘„%Wñf=YïÆ}åÝ>©» ©‚À¨oûâ}=Áºì—]tô>Kœ&i¼H],ð¥Œâ<C´Ç/ÂÆñǘݳðÍíhÌØ6Ïa›V†Ž¨.¢©¾Æ'É¿ê=úf¥+4hÿ8IFÌ“ þþÔfŸ]M°1ˆá.¦ž!ã&ûë¹Ï_„ V£i9ðM‰A‘ÁNÑÝ^}©ps)h w€iòÚÑÓ¹p=Á„æñ÷˜‘‘»²pv—VÌÃË¿ßï#{Uçïm™|.úpk/`¾¢c«µºñ®Z¤‘®M‰Àc-…çCÓèïô›Ü ™òV^ÂÈa ΢o4>Ëi„<èJ$çÙoérùr¾[m‘*œÎwýäÐtòôíÆOíª9ÁØ{5 ƒ.FÀë®"¼2St)¬DÑR€^Ýéb‚¾ç'?Ý£ÛºëLå'×½¶Á°r`[Áª*³ÛÒ³¸â> –žâ1$ûë\-Þ(·åŒ¨ÚܾÉ!s!åþ<Îù¤Eé*Χ{Ù =qÎÔö¹–æÕVmÀÙC±í^'¸Å9Ïyf¬ëFÒC92x=ø[¹3«¾›`»cJ#ά#€~$ÌŽÙúE¸Á›ñvò‚!÷þkb¢š³,hYOƒk¾ƒ#;Zºßï-ý:¾Kt>#ºçxÞâ*E‚'òáUWþp8¬\‹©2̅㊋¿ñ†_ÌÇœ+̯gÑgSœù³T4sMòÌN{ð~ñãhÞ\Å'‡µKšJ¬›=‡·3¶WøMg±«@_Æ+x>+€$×"œbŸ¬©j_ù6#îžL„ -ÈÌÙgòÁÑÕ ëÉÔ• ‚#ƨ=È9ë‚…ù¸`ɳ®ü÷п¹×Ø‹‘ajî‚~²À:2§¬>¸M1>° -îãsé>ƒ–wÙž›o wR–Écl»ñÞ_?ùû¾5QÖÛ{ -þ–#Åô:Áír]Ïý¾€g™ÚERh¼ÇÓsr�õÏ4;ëç㪪ïìf€‹·Mè¸,ÚóÔÏ?Fop¹VþGu×™œÞÙ’fT�aD nS{mÕ´/ Uñ]àâ„�¾´bÁºGÃ\é�Ñ©¼®ÁiJ†•á™“X1,f-îal=Œï{ Î]#Vƒ|ña ƒkÛñ2ÚI>þ¡å )í+bëRðµ<âƒåSã‹Ïôsøû7œlc‘oÿuœý“Í,…'Á>Ap'§Ñc‹9¤8‹\ü=ëÅ“¦<ÄSŒzÕ0�ËÐÏžpÖ©^tLp,ÍwòÎ`Ï+ö–ÜåÁ³¢oÛ|¬FM74œÀs¥7rQ^Ì… ŠAf'K)EÍ7„k]K#+ÓTÛùZ—KO‘ÆŒ§MpU¾Äª8‚d4_»yKrzi¥E—ó×`ÃQ·EM�{¦íû¸gE¢ÉŸû÷ßúFÃ¥Ÿ):˜hÊ߄秗C(<C‚!ã`a¹êæå�Ý5cÏ $¸LÃt¬ÝÜ@ìÿ8á¥}Úkóß„½¯-…õwo'\×’ -äSœS×þpJc)ãàˆ\,zÊìó-ÿwÜÙ¼á¥Þ? •ðG¹³§¹L`jY„¤»�ÏRÉÓÞü}1±9/W´ñ?~?6ÖòA'|·?Žï·Pæ14ãÎ`ÒöÈç&¸õÅYN2à›fZY€ÆCPŒ}/_ðœ|?߇ŸBgýøÓö¿z5"‰éÑ>¿éý/Us:åoØBžíÚê_ô8ïùñ§ªñÅ¿ÿK÷yŸn?b";à% -Þ#Ŷ!p+ˆµOF<Çí¥Aè½*ð×°ƒZW+³Êy¨´½ÓEÍt-ŽóùºœÞêþ¶«%Ëa„]eŽ±ëu·½Jï¿a$÷“nõŒ1I|£“ªôÐœŠ£¿øÈêQÙFÒ¿B‡~«t#×–ÄuõEBSCÍ -ÍJÐûÁ2&oKF3@ºŠ9Š#®çkœSó—y4°?nô$<9¤–J›*ð¸Õ¦ºM° †˜¤»ŒëU€0À”Ý€å«�dQCŽ¿Ÿy)aÌÕ¨%årž‚ÎÜÎÑ–Å2‚£¤a‚Ô«QzñÎ�ÐÁgÁ.ì9®ƒÇQ+ÍsT‚àÉEsÍëUaíº‰—ÎW…×î_ðØ•<¬|¶ù¨ì0kq¸¦yr&œë˜pïúvÏ:‰ÀaƯ¿ÝH³Õ°æñGé -¨†Ô´?Ó×½âpcd¬%Þk•ŸA £‚YÀÎéb`T´W£zÖ®íÔ‚<å{Ñf€ŠÚJÈ]3Pjp”}X¤Oä¤J?¹b�ÎÛæEV†æÎÿÏYÞBc”NÆn“'ÍôãøW#à%;ÄßFÍè-«•uŸý„)ßèWŒÇ¾ò±[½ Ó¥1í\Ë‘:La�÷’µhöÖë¥Ó>ÙQâÀ“—4-Íe¤<ퟲkë+s(vÀMÊI]óR5.•ðâÝ‚C9ȵå§7Øœÿ/é¡ÄÚt~Réü6Bkâ7Û”h5^t§wÞÅ0»”G3OÜb?ÔWmS¹@w< Ë0FšÀæ_€�Wo endstream endobj 21 0 obj <</Filter[/FlateDecode]/Length 52717>>stream -H‰Ä—IoËÇïøæâÄ–Eª÷…;‡äp)JÔFí¡h=Y¶¥÷⎃à!9AŽ9äëæßÓ=Ü$# r°m™Ô=Õõ¯ª®.r+hÁ%#A‰(KX”çj¥„‡ÒÊ*Âx€LÙ¨™óXXe‚¢³µ<䂘�!ÖCª…ŸR¤@”¡îY–ï¦Fs…`6 -ÐÊ�9§4@¦˜ô*<ÕÒzª¦ÑàéÝÁ 8-y0,ÍÜ�¶•b£Z¬e©m/À Ðr!n¬ò,\¶ÂdV9ϬyEHc;®}è,Q<¸¦‘<ª<6Öˆ Øêt5/mí¯ Â%V Ÿnl1ãs&˜ÇÒ¨4þ€š1á5j*D€LéW*”2b¤µáa©âŠeÈ�%õÏ«‚t™Ì&µÇЙíe- ”f™Wk -šsik–3iBÈXæƒ *¬š«�¹°a%Š[Ï‚Øl-e™Ãmfõ{ºà–@ˆ -R‹ô†zF<ï¶HŽÃ¨/ãÒ–Be¹òk9c|Ž×L¼m†²Çïþ$ÝxÛ[Ã=Æ»`8Ø@`s&˜ c—(<¯• P=¹Wˆ»Æ±ç$ÝÍ(Gàî3L„öy²††‚uXª€ õ ÜŸt]@›�¥e&@Í…OÈãíBik]"¬W2;Ó“¬^²>½Î†2Ö†Îñš`Ü°‚&:ìŠÖ&¼q`)i†™Häʃðs £¾–MSc¼šïÐÂÊÌe#£'=pñ?ÌÙèù‹hr¼òîY£g®Ú¯â÷Ÿ>¼Þ~üxóþÁÃøæöîa??|x˜Þß¼ŠRGôEŽD üL¾¸77¹Ox¡IÿN¾â—>Þ¼úQ £³½rëǹ¼6žÊH[nÇhÚ¿`t§d«X"V‚13OÂ…ì9Îáš`œ$M†I‘‚æŒHê"+ÁŬ$aŠS\{ -ÕB3ÆH‡p–9ˆá¨'&q5R«p‘äµ!2€má–Q©p†t4iä(¢A œ‰€ˆhèœe¨$Îœ»ŠâÖÀ¡Nà QmF,ãAndÿ‚ƒƒ‹q…Zº&%—Qà Â+œchöèOÌm›B;¦¥»õð”V�Ò`Š]8A5NdªÈ‰«tŠ\Ÿø²ãžuÞ¢—3c½$‚à/áwË"F?ZÁôQ…1¸fó]Í·©”J"–èJQB*Í>‚©èÙj+Q b¾63ŠneH³ýô\?“bmÀ}GíšÕ\ñ`Ͻ]X]–µ€ÙJ ùsùu×´)d]PNWLfGriç%´ðqj–Ì-t/í¼#`“|´– E׬.àÊþËxîéÂêBкôÙw›lÚ_åÔjøæ/?¼/¥§xÞŽ¨ð ;?)¤ã÷XÂw¡yI“ãêEP²ò!¸¹5.óôw×ÊÒEgÀU /G6ݳn2F¯[í† -×-¦“µnpÚè›…Z5a`ýai»ÏY/Âì;÷ -&93tÕuƒ/!†è%™ÍœÇ鄱ʣ>ö38Ít/Œ†Zë¥;Ñ')°6nĬ!ü¥j}Úäþ+Y -…ËÐ,T€Dú0çí»`WQ;fJŒƒ~ Ç0M‘ßL¢G?éí÷zQn×GºPTª5]G!^Õå&(÷=pMr‹ÙP¬ë‚Ýt4öº8f˜seW•j÷¥cEÙcÿëñÏeŒ=1™Ñ¨ñËÿ4ž ábç"£-¾àél4AëCiª•kHœ˜@fž„K&Ü”¶ä#u>B´¼JîÞÝýÛTÿxúÒsˆ|íä¶Z7Ÿïf7ãNMvrgn>©…|ú.=üóí/"GÈUîÙ×ÿyµû${"{5‡wT§Žâƒ[”{ö,õ5ý8-FÊÐܤ÷S?¤Åm^[Ç•öI9>6µ#Q>²Í«rwZŒOueŸê^±qÔÞT»W•Î¹¨î‘â�OÉÚX×lýP”ÕöQ£™ŒoãÑM¹w]ê^ÛöUµK‹Ã<«l’Wíbó Ú¿jŽîj£7åþí^òƸ`zÉÞu<¸Tµý¸Ó½í¾/%¿WÕãRwfâVÚÝÒ=Ó˜Ûåä29¸ññsÓÒHÖàFAvUy/Þ¾îþRßù©Ô½€{²>µQ±s˜·‰mu:“/ƒË_kãOHe´Uv—ߺ§Ÿ’£÷ý³oõÑJÎ¥A©}fâcVmÊd“Å¢ÔÓÕa©uXjoòX–÷típË·ì-ïÂÃRûë+É9þWõÉðès÷à²~Z°Ã ‘äEB‹D¯ÑŸÓ%ªSO.ýY1>!zPà‰(ëÉùîä«Œdy·Ò:˳öó|…¨>³;î_q·ÜºBLt|¡ã³ žäeweyß”÷ËÍs¤‰Û‘©;|É[ˆ/íQ;¤vÐH®šÝkUÝÇú—²÷,_ùífeƒÆyëÒ°X—CÝ+ˆ–*nol•Ÿmè T³£kSA~÷ò¢ƒ,ØÖ)+í¼Üªn©.œÜ QÜ-6Îtí´_T:ÓZ÷êlöm8yCuKTök½Y{|W\d²ÅšÂŽ`…!'›z;/ºåæIgt›fª4êîÞ–“SZ¡$deÖ*ÝëRã ;¼È‹x“7ÊÍIsçmµwkZSÓ¾†êJëÔÖ÷·à|m/Þ}Ý?ûÜܨ îTû‚T÷týðç¯ÿ:˜þQÖöDe¯1¸žý%9újš—¬ìj˜Ùmjû[¦i(TU?*¶ðÑ>/7E²AšpLã°ØžðêX5Žãáíö韎®}ø‡jíÒr¿¶=kO>®ÿÚ9ùb»3›\•[çoßÿóâþמּâlì¼Ïþ68ÿ³I®m2å•}lÇ‹;È5ŒoŠöï -µ-½Íí�Q¨"ª¼ôoŽËµ9qóÃÿ¤éz±I óùÕYB $'ƒÁo|ˆ7ÝîÎ6ÙMÓ6Í4™t:üƒ~ɇ~èìMg4 ‹W¯žç¾¯ûa ;ST[òg)y2áÍJ´jÉ 8’3G ¡@Nà‹%¥Å°ÝµY%VfìJ!Ã,Dr*rˆe%½(&_fÕãm´(ƒæ|<è¼Ñ|€—…Võ`+ZKÁ¨àƉnð-^Í uÍ©Ñ2јòÆD6~~Ìá¼jŠ¼š›þÊO®ÝÞŽ7¯±t¥þ9¥Ÿ5…&Éj¦;Ý[*fçb‚>hC{¼‡ -tœG°@WéóÖDí]¤è'ǧ"0DÔGQñ/½Ñ³\æÕÓ÷?ÿçðÕ¿yEÙý›ñîÛlýÁèm1þ¿‰PÌŒý6Pbxùµ›^¡ ¦UÝ>ÿÝ\ÓrtÁ9ª5é×zõ;Õ)+§9WÔs?»VìZ kVª¿ñ²c2y±ã &~ºÉ/^±W¢Z —úïÂâÍúÍ÷áèV"CÃýáƒ[<©Á†ÓÇ’SóæfÕ´ÅZmÞE—a@Éž¡†š³ÉD³¢YÐb “¡L83í*(§w?Í~®î>sîPõ'س3Ü“áAém‚òm¹ûn°x·¸ùœÏ¿ìh}ÉúùmX=“þ^t–r°“NË–$\ Æoq~›R\BɶF±®dŽy³hKqKéwÍ)G–’½vFÏ¢_·xÇÖ° ðÒbƒm¡¶h+E¼–S’BËXx‹3„ê:À'%A|E‚å©k´ÕêضޤÌ&ct¤¢µ’[=¼1‚k¿ÿॷ]ª¨9-±½Tì•d/íô.™þ^v§g”ÒêѨ0£3Î¥8•^ÉÎ.¤³&&GPûŠ5É*â”UuÂK°Â¦-Ö¾`ƒ6Ÿ*d‚²sFÅÛ+ÞIhŠ>8§4†÷%£€tqƒjÕÄ[ùq¼ýä¿=c¬ä2®¾€À8pϪA”'ñ'*¢²SñÖäÌ"ìm®îÿ¬…³®šJVix³·iKà •”~º {Tï-e¯–ý¥hך·À!JÇÇrû1âòàŽnÔpAÒ38þVõæ’5ÖÏî`‡¾€ê ½Õ»–íÖZi©ãCcŒìe¤û'9˜!R{Ùº75£I6F¼vó»`òâŒÞˆÞ4*£òž¤°ÓÒUºü°yüçx÷'ÉÒJŒ— â ˆÚè<×MÙâ›dòÎíìhØÐI²+l�ìjÂÎä1â´dU”†à0KݱVº”ï+„u\<XÙm[ˆš¬u©6ÀRrjŸ×OJÀ%R¦#ÄMÊèòa‡¡®fÇæµJ*$E«ã¶Ù€æ#(áUSnCÚÀ.i)¥„#$œ62ƒ¼lEw%¥ääd·`‹>éº[ójD#õ€AÏ9%E†Jú¢¥Y¿ÝqM…WF(#¸‡r5Y2<ô²-$ÍS|âFŠEkfÆ÷`”—ï±ZƒÒa¨·Ñ!3t¿š¿µÓÁžÞš2YÕS¬Âð§ LïD�LDRº=اfeO2ú’[ëÑÎËßDÃ;3œ#Ãt[m¿¥Ñk¸F÷gF°†O5Îzý}Z? vqÎ:xqÝ[‘pmcKnv=¨~ùå¿Ç?þ‹s†h½K3ÝcÃýú«áê½Ñ[Âé�«ä™ÑÁÉŸììÑJ$ÙãsË›¸ÙžQ´œá¯@&nº·Òƒß$åãñí?&Û´£ÚÁè!»ü˜¯¿ÉÖ_Ÿ‚xtüñÇ_ƒÙ]S8“ØC¢+Œ"¦¿ì*zh.”\t”‹w¥£ŽÓ‘òŒ)¯“ö²9msˆ‰¯•~|mūט «ŒÍÞÑÉœþÑ·ØH‹hO³v“Ñ©.¡…�´71'83IuNI\`>ÂÙ×b½Æ¦¸ˆbCH‹S2´Ð>gôß5XÌ`ëwøŸCŸhºŒ9¡Ñ1›È)=WŽÃl†ÿ¢ì]1TÈ -÷ �ä`‹±[ŒÓY+;\Äp¨æ´ˆ½néˆ-Ü®6hRÔˆCp+'ƒ—"víP4ÍE€V¢6¸ Ô×h¬’Q›³]§Ñq‘°õæS›#˜a`;5ɉºýéûþä®,oTLïÓúQ=M¶3ŒÍª7 úW£ÙK¾ü@Ë©Ó[’pˆaÝ[c°Óûlùu<Å;F|d”éÍqƒ?¸Og/³ýçï~úõòé/‚S˜ñ%É$»ÅO3¾jÿÒ8í|Š™á¥—Ý!VôàÊŠo \^Ýþu~üe(;s+Ú¸É΄’ëdüPÞ#¾9s¨y3<ÔL¶Qõ’-?Ú9Pùŧþ^¬ƒ^õ–f²ÃÄ©€ �« qÞÆÜ®fx4fH™ThDjÕY�ËhD›µQ@š¸ÀŠ¥Üfõ;+¾D$uÄëE×(YÌ@‡»‚§dRsÊèÑF)í®ÉðffÕªœhM¼qçv°aÕa“q8¥µ4;˜W#C³'øÕ€§ƒç-¥+' Ùy›4 aÏn0µ…�Ø—H…ºaÏš3‡ 3î”w•îÎAB` -ËR¬‡ýwÅ”FØá\bÝFë$—ùnÉÄ%±l‰çœûè¹ï“Î")ŠiQ²MË’mÙÆÚÞ³XcÄ @þÉ#ä!S£B)vOw}U¿’aAÝ¡‰ùã‡zt*èG³NѼüa÷Ã×*ÎÇP¡8Z…£ÊU-ï0¶h5àOâ/Rà àù©áT@n3º.Î~©vßýò¥ážºÁ|{óËéÕWÉnô`M¢µ›oÓéËjýÁ)¯ú\গvºÁã¤õ}X½«÷˜Ywr¯x+šå,¦›”¡"iβZÿ|zý}ùúï‹ÛßñΈÏçW¿ó·´>嬙â®Âæm²ü)[~6“=¶d¥—¼Q1J1Òa&Ëpú&8ÝOh}&9HÛ9J Îнñ'ßã©1\P¦m@þȬ¨¾_Þü-hî¼ê0Þ|B¸£aµYf@œIOðq/p-Ãß°j9”@§¶iÏÓú 9³káFdkéäø�/ä½Ç€™`–}*;gÚ#˜aˆT£½ÖÊìâ¾d�üõi<’ë>ö9ÚèÒ0Ž»Æ•yѶhÞ™Á–‘2|'ÂH6O%c†+ã•ŒFþ26#ÆpΑR` †D} -aÐ|xC4ƒü%�#.uÿZb• ‚qƒ$ž–µÜtßÖFm<�Ôq>êä€u¡ -ø ¿Ã y¥„›u(ã‘á‘Å>žRÄBXZB<ÉzeûçÉPƒ»}‘SÜ,:/-x½‘ràõ¬3ÿüt‚Åaˆ»4£ot‡SŃ(dâ…糋ŸÐñµn~„kÑêÁÌ+ÖFXcÛÁø7÷xºbñÑH®d÷Œ#M_ÊÑ•�Ñä•Sì¢/;5 VN±7“’mÿLpNÃæ~uøG4»ã`á…âÙŵ7½³Ë×föB{ø!àJ€ç›É•;ykdÉßÊþNt×1‚ÙBEØðH+i9Šdî·²Ý0R€å48»Ý…è®ÐyUw寲ùŒ‹QSŽ”ãæÐa[(BpØþ:©ðȨQ*®ÃˆôKP7= -hÎ÷"Dº1¡Ú++}mF7Ä=WÛ”:C9¡ôã¡zÔ“(1µSV™À´ñÍý‘ƒÐ¢ëA:Î<„�攘SbŠâ@¼s¹JÆVTÓ§]ÀÉAƼZ Úœ ªc78g…àè„Å»ðÓØ -¾_¹ÉÂF†‚™3½Aâã¾Ð±m,×ÎP9îÉ�9LÓH.¥úÃ'95C:ãA ì~+EÈ,„Ù¢Î÷oÞýó„&ON¸E€m~öÜÍV‚c3ø0#ÅÐÕŸŽ:ý(6†1Fò¤@Õ¢—U0ª37Þùés'½dµœ‘3+{.ù‹`f®»µ¯¬ä"š½u@>jŠpSð<îZu×ñô>nîÌd3C`¹`U¢=eôŒ·k48’î‹õ7¿yodW¼UEõÈ«ð¤Ô£m¼ø2Þ}7[_0è�i»>ÉÞ¬É{«¸•Ü«•ØUZßÕ¡U8°„côZ¶çýÇçµõdÒg#ºŒêV Ö(ž¢5ȉí¬âšRóÖ„zœ˜>7ÛáäQR 6Fìx¨<íŽZ¦¥MNn'óØÞ©@ù”öX‡Q›ŠHCeÿ9Ä®²*\etÛcOñ'PªÓò’ë¹lÖ]©Àêš»@}k½b€ä¤Œbù—^€ùQQÛ(Z€lŒü'Ç”¤åº5ƒ³Á[z¬‡EáuйSÐ;°s¬zÄh�#D·í¢òá“Ý¡dÐ##„2©hÎí4°=â²u» Êk/>|<PŽº) ÛµÑe†?£y«3à:=¦ÓçX!DÄÙNÒŽ·£l Âl냀ð ñCÈ@Ot·¶Ã�¸JÎøRV‰ž›o$'AƒlüòF/¿Xùµl6ñì@kÞjñUði!T¬*i^Õ+7¿LV÷J´FöABœ1§Õ1gÖÅêsqñUÀñzK€w0ÐÓ«Z¡Vªî`)^=ÀôÀi¤Ü•lÀGmèH1ü?®nZؤ“^Àµº(V|ˆs·Äã×åò£qr\ß›“]O°z¼B¨ ‚ù›j²6$ÍA´+ZxØ0y\„bÍ‹úPÔct†·e2>¡dLú2ùH(LX-îs:¯çÀuVÎGrAñp$DIÔGA£Eœ€ÓÀÁ(`Yý–»|Øð·ˆÐGÚÚ‹´Mi˹xUÌ1#š9.XwŒ»`¥Õ’x+N*XÀï÷(U·QI©‘acuL–ÑáɉêL)Ñï³àC§ß¦[�†ÇÒÈâK(ÎÂÉ@äö¬#tú2öõ‚äƒìêÛÿñæäY—‡¼6üó…}¡-›Íúa¶¹ïôXv¤3!f)j%û¨–¶„ÓÙÅ'‘Le£†n99öG¦@?Ýt[0°(.ä•œ×rɘä61ìzuó-PñŠÉ†×_p¹Ã×ÿtx“â]IÅœªöÌÏ -¥rùöÅç›ù÷;(…f/ÃÉ›³Ã¿Êí7Ñ95‚³`vÇ‚‚Ô\óV:<düªØü.Šêå§_ÿ/Oúü™ko¶�'}¡yç©ë˯,©{´fÀà¹ülï•7HRbÌο)qsÔ¡1,(#°P®Ö¯~_½ùA²çaz¹»ým¨øGö¸'*V C¾Då„éIñ¬Çu)]Q«Ñý¥dMF²NáÛ*ì¨3Ä-ÀUæVø',‘ÒË.áO»ÂÓÒ—I0.´3Úkø¡éYwdÀOz”õ’Ë«ÇmìŽâßÄqŠEl—¼ì½H”XT¨2Òx4ÞiX'c{ãÍ®³›ÈÃ&yö5ß ùz9ôÂ< É[ÎÿœßçÈ$í1¼1½˜o‡ŠaQ¬FŠî"{à ,w™‚.èÄt/Ú£}àq¾ƒ:ŸP¬ruü –h˜ŒA%T'8À9ÔkyU˜ï 9H•{´:ëKìøpóáo¬²¼a3Û>kô¾,žW.Ë¢}Lª7K#±ÝB&Q‡!¬Ã鉸-è˜{ä”S¹¬üì–ŽË9±*Ý«a€Ø©á.§Í×ë7ŸÍx‹ÿ'V¡šØ2â&°À)ųÓýw?q45¼EÍ`£¹+¬‰» NÕž?~øÓÏas‡äÂkM¦§¤¼Ÿ>YùO§àszh±ç›G´ð4ôV+=¿úÝßÿý¿ýݸ>Çß`%LçöWaùˆ™n¿•ƒƒ¢WQö¦Ë%TìŠt- ð¢CÚÜzÚç ¸má’5÷’p¥ù‹ÃñÃ?~þ¯dOÎU³²wº·À™xU¨–6׊SÂsTd:͉]"ðfdÄd~ýý_ÿ#:eŸ·U«ÆäªfM,XÇ45]ܾÿü¯ýíï_”#³‚‰Ç».&xh‚ª³´â½ê6à:Õ\rdÒgéˆ7�r˜è!>¿¶“ÍP¨ÛBW=ÎĪÊ~¸Á/Î.òòš:õ¬¾XÂvβ ª>Õíæt¶~�cÌa;œäà¹1옗ãBã|Oð"°:¨²ÏhP¨§‡áE’ž±ÄñÛxre>{1ì3òX ©»GýDk€lÎÁ¢7dõ!gªFç]xz®b£\¤g# -7†ÁÂK5»Á¥ƒ +2D‹Ã’órýä–×ZÐâÖ0¹¢ž‚ ˆ -5Í/NNzp²„”Õ÷ùæZ3h‘ez°¶âͤ¹6Ó=£fhLÝúI÷¡Éª! VN²ƒxókÙ[ÒîöFITw™T÷õå÷“‹ÏÁâí¸ÎígF GJD£@ÝÎíìFööió”ÖŒèðZŒû -»Ž£N¿prÈa¾xíÕHpºî.Ð:‹íûy{×ìß‚p:õÓíP }NeeGNoìô„ò%½œ•bœâ+ÖËsÒ½—]LOHónSb€Âk‡œ6ä(Ûc%rócXá Ç1É4$˜ƒ ¨z¡UWîtÐum†Iý‘ø„ª¢ -±Ø‰“ÌDZ™ñeÞ~²ÑyÁÒf ÛÀ"W!©¨ÄÔª`é¸è1œâµ]>‚¾€v<™ƒôµnU¯"ËÙD/$-ÇÖÀŠ£_’NM€è#h^KÂdßïj£5älü’þNuV°,‚2²£0¼5ä]ˆÙ-ùÉeW'Å Ž½ýÕaîëzDÃ_œÐG#@cðMÿ\¦%– -ãÞ@…žãšÀ´,ª(²fú•›dc -Õù“ - N^v–’Ýï/?•ÌvŸˆ·„´ˆÛˆF'$µ‹ã¹@+ɬ¤¶P«ÓØæN²ñ’½†_/Õ ÷¢3Ñ9^‚¹vëñöGñ¤ú-'ÞFv¨¬ˆî«Ã`WânÇ´ÉŽ”Xå�&0öaft‰Ÿê®¡Ih�€Á+‘æ-Œl§ ìKs·ªµWcX0ŒÄZW°©•žÐX‰·É 18ëàq³´0}÷•æn`,8RäéXö Ÿ³áé E &JèX¦ÅÔww*8#Þ6#¶xT3wKƒ£dà—Ô?8ÑQ¦9Ü©;+-@âr5+¥ámâé-¢å-DËÆ’/"¿ü#BJ1kÈ ïg»+kÐ -‰€?$óÛ$?Á¯D%Çm¾è ϞΆ*B-ïl¨A�胰* PGtÆPtè“2AÉŠæÖKÏ!xjÌ}|ùc#À~AÉ {;¯ŸÐ7ûŒŽ×¾d´ç=PŸ‡U¢þà»’†´vâ˜9LÆ5–3ÃkáiÈY™¨ÏíàÌî€:X€nËöAu«ÈöÊIo¢æc±û!(ïI¸ƒ‡«øŠ�~v¸ óË ¸±¢ó®H‘çïÊõ#¯Çœêã£êíêÍŸóöÅk!û°zkeo0¸ým°x¯†{Î4$iýÐÌìdøvIý_ÜHvÅ*‰lÕhˆNz¡Z#8à=ÙZz-Ð†Ó -NBBvôkR—$XX Èê$[kHe4vÇrÄçº_÷xÌãM¯tÔ5§ÞáUж�û‚Þ4·E7$Ö‚•3L$ zïTID2VÍžœšálu«A×ãåìl@ `e#&§X¯LÝô:ÞÇó·f¸÷â#ø ÞãÖ䯨[;ñ.*‘DÓS×_Y7TXÎuàÜü UÀ{ñ!Ãß*F‰C™Ì §UôR7V´g/Ùg/˜o1¼ó²§<%9w¬d²^ˆê/›5®þchN«šÕ\kö&oî½LÛä“+@Ý«!ùC0@>bÔ†½ÑÍEd`GHFØ— 'Éüò~Õ9pW]3„oçxØ/òÈBð•œ"ò— -ÀK TÑgmAŽÝø¤CFÓ4Â]·AŽä÷k(èYùê1kU¬J6‹/Ö—áAê.ÝèfWþôr$šŠ™ÃúÐæôô�å¸Ùëhví·²½Á}»â5HÑc%ƒ 5Ò“¿–ÕÍÕ®ýVÏQa) 0?Ñp#v•$ÄD4í;\++çšwp³+ô>˜< ’Õ (=}ûÏwßý$š³!ï …�Û7QU¼¶¬îþÏr™ö6n^QøŸ4±e[%q§H¾ÜEŠµï²<²Göx&ñd+š4Z iþì>Tð“,Sä{Ï=ç9}1Sµˆ¶--ªu¬† ÆÁìs¾ùK<þĽdÕ»¦kR+VÚE9 ‡©Ûc7æ¯>j¯Ì‰&AÌtv´$'H’½j@Ê€åÕ™ZɵlȬÒl¾ù9L×ÿ,Û¶zиÕö(ŠVƒìþ¶¡K]¡ÀNJES\ É®XlÃ쑈ÁF4£ÞÞï½ääˆ=¿ªõnît¾†jwÜ!îö0zÁ Çbö§"{&$½PìyÇ,ÛÊ°Þ´´¸ñ1»¸ -‚ᬪèº8ÕmÃèô„R%ò˜‡áWª·Óä;ß±ÅÌr§,§(Bàh£QuˆÛbnÐ)j‚ -U¡i£(GA5Ý*ÎôNrnš&7$g/(5Ò½%gn;7=µ¤ÑíWäßgýçTdÜ«|r1Z½‰üXƒOìI?CbÚ¹˜LÏ,•þŸ7íÜ «g�™4±áâñÇùéïÉîdž>Àfl_OoÛveÞv¾ixTÔ]G#Ä7š»lÀ ’}±#†¿*Ö_Ÿþ¹}þ囕$¦Š1ì‹ŠEýp+¼…ï¯âá±Þ›42{ÊZqàè'*ž’üäexÊOÚJŒOjbÞRB¦Y‡iÛ6†¤;FN‰ï¾ç$UsÜQó®6Bà ¥O1rL²$DÆÕzu+1|àðãS�¥‚Áž3ÿ_ O±,’%ô(_JÔÕ¢zËøöF’ä�³e"Ž»„U˜lGÑ.Êö—tV)§×7Ê]Ë©·ÙßIUÂ~W×Û;‰ -oêˆ)&¬8«®½ˆ‹ó]׿•¼–žËöœ•É1™¼ÆåÅ¡ã•þ¤Þ¶¿¹nµª™+zÚ<IŽ¹0½ÀÀ*@h -‚ÅÙ>U,±_ºìŒè}hŒ\ãØ/–ž, ŠmËq³mXOþ]õ-2´òvn´ï™ES Ê|þ±Üý˜-ßÔK§3ÝY0<vXur'–Ñài´øê$‡–™á“íO"Ýw¬ÒDÊÖLRGPuÆ© ®Ô¼•¹cÆÀÒ®e°A¹á¯‰ž–b jÎIÊk9ù3cŽ]B\¨d¢¤‹ï’é«éÜä—«5Yg›¹ˆh§±wì²Kd{ wÔP·9¨©ŸÒ’v†·ñIûÿU’j¡.¯OÏ"w$%íX¥n–û¯÷ÿQn‘¥³d¬„9ÕꥂܟvŒ¢.yͶh´*~n÷PVà0#´¦GËfif.kþÀ±aü„ld¨º.9€=¦¨ßÔ(Ní—h•t›~r¢Ù7×wß^7{JДD«†•!(fÇ?^ÕšMÉ®2KÁ…)VÁðì -þšqÔÚ¢n9_ ;ܵ]žV¶ézë¾&e¤ªí.TÊà†h >ü¤rkâ¦ÞèÉNö`ƒNCŒ"ïåš·ðŠS4{ &/d Àƒ´p’~´í‡[ÆÔV«OÀ].*F×õœ œÃ_ƒâìăåi0y -Gg3ºƒ£ˆQñhÓbù¡X~éƒå-ÝxߤñéUÊ?~÷??ªvaxPŸA]s -ÅId€ý= 5Ýv£z7ÒÄ‚WÀÿÏöáÁËßѦÖ2n[F«ª·+bÚŽî!|+¸G̤$»†wÏÿÚžÿ?ÚÑéâKH4éh1Ó¸?kÅoKëÎXÛt°¶2[ÀÛOÏñðY†ŸûT¹±æ`}�žÏ!K½„ÓÀÖ’ò}8y©IâG„wí>#VLm)[KÃ?hþ–µa³‹rú· «²>î G°‡f“M¹%æQrPHªlm‚%ÖÛ‚¬!¿ˆ`;X#-àüª&pŸÃ~Nø�~Ôê½FKb^ÜÖòV²‚LRV‰W¦Ö;‚Ú§|Ð)ç‰ÏpIÆÇøÓU÷úZá©.sŸ›þœ€0Moã…[¬ñ#<"•eìYcÍ]åK±û![ü9È·_ììAäÞè…χë¯ùþ¯åÃoFtTýî¯gæèGF°UÄ¢?Ø™þLéW>†¿ÙƒÄë*¹jås4þàe‡Áø}¶ø$²'/{ÄÐ –¸|>¾ü±>ýŸ™’4 ,$›ÁúÅ;É.ëð’UáV6^ñÞŸ¼úå«îa’Š~µŒuð†ï¬xßuz°ÌßÊû_¬ì¾{é¤>Ê¬Ë jÆŸ¼ò3 {ו³¹ã`ü”gž¶¥x£îmœÁ;T¥ªA,Š9ÎÙíì ¯¼»æ¯›i—áðè&Hú`‡÷k¬ˆ%õ“àh_ôCæR$£¸¨k¯{ÉšÊδk [=šÅJ«d<QÜUÇ›ñ}8ú�µòRÕë)îJ‡:jŠ9à$^tðHvÙ¯ Ä(ZDª’èn¥yÃÛî„#™¨)DªÊƨw9";ØXbê…«lü(©~WèÅú3„Œ!K^*=)öØ -–qCV9.;36ÔINftTüµêÍ’‹ÖÛýZÓ‚šd‚̺É}ºxmª+=Ó#¨RKá‡nÆæŠâŒ_Vç_³ý–¯¿xå‹“’Ùëäá—åëùñWt¶ÂµåŒËí›(žŒp‡BúÉ.œ<'Ó¯x—®>9ô—És±ÿÞŸíä螇»ïçO¿Í~ÎÖoNv²ããpñ°ÙI¤''9"Åhr^=ýÍ/ŸiÆG§øàO>‡³/büÑdv¸Üø¹<ü`Æ›|ûs~øÕu~½8»Ù£“¾ãôpÉ¥x3+!×áø=17Üü˜.¿úùY$ÚÙžÁžŽ@e똹Šx‚uåˆÂñ¾ÿ’\eMjcWøï$3^Úîn–F€Zо/hAB,! Ùénz£WÛ´Çíñ8víI2åä9©Iå9ïÉsþNN;U·T éÞs¾íÀ³Àþbn#â³=ˆœÇx§ "•�e[áÑJ¢íçp€½êߥ…Ç €m%Á¤N -3¦Bào–M•ôáfI°€ˆT{9ª–%ìtYË”5°†]T-qaYì T�²™.Ww - -0âÙ´‰†Äž†i"ËÊvwŠ†ÙP·L© -aà1¼ô["s)µŠÁVAênæup¥¬¸‡šEÒ¥”ˆw†´Ñ%µ–Ý;£ôþs´BB€ïT#[v—›œÖIãÕ¼TäBÀÏï·pxT -3¶ì‰}¼™“"¥`· „V¤=ˆÐe1.K}ŒKJlûÛ’6x�hŠÍ:û¡E¶:BÅ&&ÆÁ•¦Ú<”Û'˜aBHŠu¿…‰tÉ@ÙìWºE>D…ÊÖÕÚÜŽÏóo»h�ic¸âÝ ãÎ&ÊÓQ¡ìar¦$AAh#©è½²ÜÙ)[ˆTà75„ò�Û¨Ô#ÌeÍ{«œkýkú8'¨hsF[\áj?K:©’ú³˜n[ -¹6ךǢ7“jÐä-Dyš�íåB˜„‰#SÒŸ¤iß퀮ïŸàq)ÀOÙ*TêŒ>* í<SÃxØd¯@»;©ÀÖAåàŠ+1i¥ÚoOI3IWÜßíP ã�3”kºàºSbŒ>ðú×B°DåãLYwײ‹Á’³€®"m©þÈhqö>Œ<é’ âÍÍQ.42¨òèÛ„’*`€À"×€·“Jœ#l0x3S²9¶Úçztž£ë 5ÜÙ…sÁзGgK*¡DJûH‹ÎüñËdýQiŸƒD�£A¨§¤tÉS`”ØnKÁª,Ç`:ÿO×àÅi?ô¥âŸ¯îËÁvKÊá³=œ|$‡{;csI-©T‡ °Ï -ô±`“e¹]’»¸šT¬±Ò\ñ®6p¥Î9Ú~XlmBhÞ›”µ¸(4Š\�Jc]‘«aR‹±FŠÔ™¿–÷Š?'õ$Ï7‹\½¢u(*¹ª¸Çz´!µA¦¤ ´*Ên‘Jv\±g9®½Ç¶ÄÆ¥ ÀÐOÊœbê•LŒe{Ô^Üzÿûãœ%mN0¡ë¡Ý˜¸O¨ÉvQ|š%½Å˜ÁÁY8wVà›8£må„Ô7ÉÍ?€Ü¡�\A¶|ˆ‘(ÇÜA¤žwJóTj¬Äú\_B¹à˜(fˆ*Âù¸ãZO ODÿ@휕•¦žLQi.UÔ -tƒÒö¡€½j|Õ;ýí.)mÎ[TÌ‘»Ó×ÞôNV¤Õ^kvÝZlœþºP¤ƒ’Ô) -MxEE‹K¬oúsÈ·)T‡ÍcR„rmΙ»ý½sÎZC'>œÁ3DLc¥Ä².s¦�ºØ¼›Õ“®?Ú)îá:g *F¬6Žëó·½õ¡u¢7fë`"ÏrFY‘¬}Å_ÕF?0îüâ»çŒ]90S1üm¹Ú²6ºÓ»— A¢3l$g€éÃÊBä`"HPRcm%Ðè¾^?‚<IÑAÄàÌÜ.¿žþð·Ññ»ñú=¨©uµöJ‰Žw¤·ŽZËwý‹_Xoš«89Ò,Ð6c&´9¬ö®ÜáàM'WôÆ/öx?G» À‚3ÔÚ§”·b§˜5Æ>|McÒ“^¤£ÿJ¾Ö†¯àƒè¶gw’?¢´¦VªSÊš0öÌh®jãWZë´,V“-„KãF‘õq9çì©]Xɫ㡬K«4erÙˆ/ÍÞ…?xÍïAöá e¹%…ã³öàau¯íÁFÏòL^™BUŒoòÎDlÑÕФb³/00}Æ/©]ÀP -)}PmÊb+‹Jy\‡4!!Öœ„³×îþÕ¿ög÷zûdyý³èÎ@a22“ËîÙ‡ñÍçùí—ÁѾڣ”¶Ö\; þåÙЇáü§¤s-ßí‘ö6" ¼_`j¬=®Æ—ù›úâMmt{t÷ksö‚6âa¢l�¨ã‚Uu¼Q;k�¶7ºÛ%ÌL‘‘íÆyOvK(ãšÝu|ñ¥·þt|÷õO¿ýœ…Ô&ÍÃÏjëœ1϶ }®Nžæx„r¶s0¼p‚›þTjžÆ™eH·Ú:úÇ¿þËÕvqÞìµg÷Œ}@UÔîÖ?g?¼ú’£}HžÄ·dUí½t’M0ÿÑÞ¬ï¾^ü¬tÿ :|Ÿœ}輯Ï6ÝóOƒ›_ãÅý_þþïjr‘§ÅZñ•7Úø“»Öá»xý9œÜNOï—¯¿–Å šÝ.~6z·¤=/ÞnÿjŽß±0hŸÔ›\Ç ÙS¾ẏ‡Õþµ3zÉ{Ãúdta²`A1„�ìƒ÷Æ‚3‰–Ÿ�EmbR]¦e)$ä©õ@6{*‡§@ hŠàÄ’Ó£ÔˆwÇjûDi9ñ:_¯6Ÿ ”!6Œîy0ÙtƯìäFm_J¿7“ÿ!]’QÖHxû›jï¸Ð]}Ø?ýtÿË?›ÓÍnÙÌ3îÀ¸@9G¬Çÿé—Ysâè†N*3é¥Ü¶ÛØ€YŒX„BBhA @ˆÅì‹ï{·Ûžv»§÷î™djf’šNº§r‘©JUª¦’‹\ä6$Ç©Ò-â“tÎû>Ê.ƒŒø`¼Å¨ÜpFDnùJXª ű—Ô Å BáÀd²Î6èt;@e!á_Ræa€Ñ©T“Êv]álTnÅ´QHj@ž¸ŠT³¹¶‡HÑù~0V Óµtm‡Qá„)è£Ë7Ÿ Rá¶jóX߸–'Œ6&“͵°fqñ‰ü¤³ó–É´–œ(ÍHÆHëžhƒ3¹u^Ýx£ÊÔ€ˆ¾|à€öD…N¶óTn\Ù1¡N‰LL>×Mêýy;6gÃþ¤›.{o˽FHm`?!ËÆ•lÜ–2]ÁäA@lSêH6î[Q`³„¶{£ð-И ±ÉÆ\iŸÕw-n6ÄÞ¾œP¢Ï·h¥C¤×ÃbI7'?þü/ј.º"ohíkóLm_æW¸ÜJ‡ï¾ùüúã?í^i6ž¥ÛBõ0×»Ôú_Á½{ñý/!©ôÅo�›l~¬tN;/“ÕÒúîw?ýÓÇИ’1…—Ì7k›Ïw.ÿÔ9úc89ÐÍ-³wêÆe„Ìb·CEe‡rãÔÜ~×>þ>Y;noœW»û.˜IΉ5]°:T@}ûM}ï< Ε¡ßWÜÁM�ã%®‰‹nLt!p¬^ʉÆQ¶�?¼ò±€ z¦4{úús¡y`CE©qÁ•a…ÕÞÖ<õÄ»H¬¾êO\Ãæå–Ý Ÿm£ÇÕÍëLëÄÑÀYcvùê¯k¸HIf¦¶—®#lÉËèp6‹7 ±Šó•6t¡€Bá¡Â©žÑ¼}ùC¶¶ßw&‘pŠ’ʱ|?^˜ªóéùû'o>Å3Îàèúý§|ç -šÈ²_#Š´²+V/¤Ú9+õ6ŽwOn¢¢fóRHTó°µ�ߊ${ÅÑËÔYrÑ0áЧàÐÅÐÈÁDÛO™LûüÅÇÞîÓ'ù ºÁfd~ˬÃ××o?ãL„.ª#¹¥n*Ý+À¡Epóж¬b¨ -¹Í&Éõ3Ú8¥§–wQ6»à@ÖpŽÎt$}š©LåÒ°ÐÜu©;KkJæµMN›ÑÊè¶ÅXMÌ÷g§ïÛÏÀ8ŒÂ$’îJõ3ª8 u”Ñ÷Ž^Ýü€Æó_,"©C-â\?`ò}³søË?þ“kìû#éÚðbpú]arS™Þô>hÃç^²ppüêä«!€7àO¹ü„†Ñ'éæ™`x "¿nŒÎ˜Èæúq}—ZD²-³úìܾ -ñëFûÌŽI¿s@æà¹Ây–-õDŒ˜Ò§Ê©bßæcýÑ\¯z¢„’iB¡Ü-wIS„):ƒ‚ŸÑ¬¡Ì—+á»ö¨3¬QòðÁ*aqEH±d¡&¶síC"Óµ³6$‘P†¾þK€UbJSë?JšûhbÖˆÔHر<!Ô,ko$‰²E,ncåP\‡#¡´VmíU»Gžp*Ušæ;§Jëôvm[ûŠ9ÄŠoÞÿù×ÿ·¹õtζyygP†±!•YD™ù†ÝÇ]<ýÃO?ÿ*fë4@/ñæI¦uôž{0Ï蜅ՂŸ®b2[ØŠf™úÑå7k̮Â!hý…ÿË#@¯“+xu£»ó¢9¾Bp9¥cjÛŽ‚$ -.„´ÆæÆŒ2²¸©£‘|ÅêeAúìÌM.4EÄŒ%~ßâra±¨\U»Ù ]Ü°¡Ò‡Þ»=+i÷RAF¥R]:?ÍíBÿQsÿ –¨¹±„�ªKg¼ÑtkïÄ5WÜ„n’J[g,¸#츟5¬¾¸ÝÇF’ë1c+UßUZ‡™ÆŽ/–·z ‚×èL3V‹æ~¼´½Æ”mÞxTÐáÛ-¬†ýdöуŠ+ÎH(š—Ìm L¬ˆ¥Ž\˜H%«(§»‰Ì™ƒkÅÇBª[œ‘ÙÁ+T0sÏèë8jÎñ'-oóÅ#¢!éƒy{Sû•É©úzjã1Ì-+&Š£ýgx -è�ÛŠ€È‚‰A̼ -'»÷–Q»/Ïõ°Ì*ýTãHi_¬O^66žñ…Íhºç'RÓƒs2g.ûy˜m–õÇš¨ÐŒf˜Psã£Ù%ŸY‡�ô*}k"ëÐ\ /¬¶Ere£}Ê(Œ½…4'*À·C!ÞóƒtiìÄÄå5Ɔ°KN"È–À�£™%5À¢@ÎÁ„ZÛë[^¶®jóËŽ¨ÅG" -…-.8"ÎPÚGë©Ê¾dî%«»éê!ѸôúþÅ·N¬Ji›°‚yXÞyŸÐéžÝË_ý¾ÒÙ!]v0A®íÆ$«7:gÇæWq?�êðân<åaR´Ù‚……¶¸i&E¸üÝEׂ-èÆÓ"ï¡M»?úæ%ó÷=VWg3¸XÄÅRTéAÔGåv˜+£d*¶ªcpÞ¦+,»ð4Bª(SñA5‹m˜FGH‚áä²ÝDyK(mòå¥>DWZn,¹ñXÒ¾ï~Ë—öütÎ×C»B÷»ûöù%Â<Ô_ÙÏ•BÉúr€u†eý˜J÷]X0&i¥ëBqd'›³¢wç‘ùeôμíîÂÿ(.“ç6Ò2Œÿ/À0[–mí[K½«W©»Õn©Õ‹öÍ–dm^äEq¼$Nœdì,$NR³8PS“E¸L¨æ@UpáÂr‚UÜx]ÕºK_½ï÷<Ïï!¤Â 2|`õÎìñ3¡º+Z£0–áÔ¦Ù:‹Ó[¡'ÆèÕÁQetÏIp�©8Aè"$ &5©“`Jð_¬Úæôn0)Yk'½ùµ67›{ñ™änPEÖšw]köº7ÆdË3½{ئ;{}ã-b3Δ¸\ýìÑuÑÅ0µØØëï=¯ÎòÕ°Ä”PË[ãîäaœÐscr|]ßz©8;¼Úãó}L¬ã¢[hÌhÉY(SI¦4jNÎ×®ÈLâDÙ¹þòkIï† Òò.-7i¥%—÷êÓ'ýý+ v³<Ú˜ÄB…* ”NæB 9Žé¦…Âøà¹Zß÷§²á”ÂrÁ”�ÇÚ”ÒóèoŒ¤4VÛXX‰{ü(ÈØ+ŒàÎ_J-!Fi-J L6¿Áç{(c,ûR)ÊàC¸{ry—7¶â” ‹„ˆ¦ :kã\>_™PúzÆݱ7Î$s/õç'/‡óT4&¯U6ÛÓG§zûkŽÂctæiÖf!L†Âe4O·?io_îžý`óôšTÊåúƇŸZ3ˆ›`Ra: ‹bm©å9ÀŸ0Ή²?J‘¢dm~ÕÜ|õj÷Á»îÎÝïÜ~Þš>&å:*80J -ã*Ÿl%cüqc Nk@.3ÖV„u¡©AÚR 7©%U\pÜÞ}<&27±¡c˜ÂfkÞ•øÂR�\⦾µíõ`Z„.$(Ãí6¦ ‚$[J7ÚG€Ui©‚óÅÊ£œ);c2[…„B;ÅW³Ö–³~·5½$ÅZ(‘AȼRì…>ŠfAõ™`Ø/ŒI¾K*(kR7IZNðUÖ‚É€ítö^™#2ã ⡈ÓQL‚å -¥‘^ß5œ‘ T…|ÓãÃS¬-XÃ\ù¦V¤ÒVŠÝ¹Ñ„О?ÿ*Œg¿»à÷‡0ωj[2z14· Ó‚õëßües÷ׇÄQÈ0çβ¥]½vG¯Ý^\Å—|hÎ$©’Ç—òǘ*EˆhœV*Y½¹søÄXßñlRÐEk3»ÁŽ¢R5s(úA\‰§u˜y0™IPJ`Τ|3´ý»¯Ìµ}®ØE¥r‚+ ŒÆiU£»Çh8&ŠJÙéÎíÎ.ŸoEÙ¦¡ž°ÀáÕ¹bOB)1uŒöqwvYŸœÛ»\¡&„Îhÿðñ§é\ù£ÕT’oê€3††0R‰‘�·)Å Å V¶íþDêððEw÷Iux7kö´R÷üâ³ã‹·ž…¤-J†òØ“¡¬ñÕhRŽ"°D5 :Â$¸ÛT~ËõHm˜oß3×$Xk%J‰Z%g¨ŒLeB) \’wIÖŽ"Ò²7âóÇ,‹%!¿›ŠZ()!€¥|qV¯o«ÍÑþD™(*g´V¹wõÐÀ¼ãË$—»åtåÒ4Œª?¹fÖ÷`G„he;58³%9¼%�¹C¨1J*[W&—í§õñã|}žâjÁ” -“óøãT$Écœ)9“µÃ×ðšdmá™Ê¢‹‘94cc’ ðÆ«ëš³m¸3Š)P¢½èK.zcÁ‰§1*ï3žUl%HòRåìѧEsmi)ŽÑ¨«”XC™R‚4¼ -æY,o¬¸%ÂIåò�åÑa}ëN¡·Y\߬Mö§§·ÏŸ´ç÷«‰)Žl D£k.GÈp’CÓ -+;ÙB[²ºl±^h ?~ýÃáñ½=IIEL¶e§[žÌ3Í©ã0Z±êc¥ÔY& ÎHqhC…ƾ¹qÎÙ[q®VJF{"º]Ñi£¹R(-£’‘-Wk³}cÏ N‡ê„p¥�Âßòü1.¶VÙ®ŽîÓ¹RŠæ(ÉÌ&šÉ§5›+ÖIՑܵµíÃáÑ}±Ò¤ÁèeŠ#„4}Qþ£ÅЂ'Š±Fe[u�rnäx–k€¹N‚³Ât>ÎiJ¹C©%Æ —m«œdíå�Ÿ'•ÖI¦€àJ0Á¯Æ¹(.3¹¦`OÁ…à@¨ÜüüÕôôYÆm/D“«Iž3ús(µàyVâË<ŽçJ‡pmü1Ê´X¯€!˜£´\=|øfë䲸¶‰ðúR“Y¦ØÁrU?Æc¢^ì쀙 -\éª L¥²qÑݹõe¸IžLŦÕ*Ô¥Á©uVoX½ƒÒ`.Y|y¨Ufz}.[ÓåUü[ßñ~p+ˆ±%ÅXE¨o.z¢0ÇI ·s»XÝǹ²×OxV!S’û7ÏÂ*‚ u½~¢:{ãú#¼ µodÞèM÷ïíŸ\<|ñùgïÞ¿ûéϾþÅ7¿ýãŸÿö÷ýû?ÿûÇ?ÿû»?ýõêíûúø”–kKAz9@c¤n;ýj½_ïl67öáûÙу󧯯¿zõÅO.¿ÿ£{/?¿øäË—_¼óöÇ¿üÕïþÍvO?>8}fw·iɆÿ?ÃUúÍöÖ…ÿ˜ûᾫ]½-mÐ2! ™£!„„„CÍ3!™ºbŒ!\¤†¶JZ´D Ñ ‘cµ}ûÞ÷·Î^ç|Ûgígïgïg‡PâCiÜ@,KbÄ%fdä•”‹D/ÿK_MÉ‹/&êºG»†g¦æÕšuƒÎ`^ÞØWhr*›QäßÀp/¿`("ŒÁ¥ÅðBˆT*“ÍË*ÎÔ§•Vq²òùEée5¥õm¯ßÎ}3ÚNÎÕÆ¿{F’³…Ô¾—/ÆË'ÔÇ7H¡1Ò™‰ÅP$õ‘…¥'f–³2Jè¼< -'¸‹k%bé˜tôý¢Vß3:Ý1ø®ktÐ÷ €0ȉ -‰FáØ!ÄD4>‚$£¸4VJlbj|ZaFQ¨Y:üf^þîã†á›Ùvºüe€åyQ=31?(Œé Á{ûc¡jÖ'�÷ø)&�A%32™© -;ƒÂJjéø¨þÜ98Ö?ö¡S6Ñ&•÷)´úo�2=ã¢Ö~ Å^~ GSB)‰ÄÈç|<5&=ŒOaðÙüââ*qF^¨©¡]*îZÔlœºoœîÛs÷õØ9>d&dß{pßÿ,›Wæá…ö�š›?‹F�zJCÃah*"$"’ÉT‹_v ŠÄý]“òwŸ„ ÝI¹M¬t0îï=„þñ…¡ò’sŠJªêêÅí’‰É)víÀb·;\û–c«Íqw{gwº—׶ß(”…UŒ”Jo(Å/€@¦p =2–Ç{^.jnh‘´JúåÓZÝ6€Þ¬jííì’N¿c²:•Ë›[›»7·?Ôë{�/ZdÔØ'“YÉàåbi±Q±Üœ‚ÂqËÀàÐÔÌǹEÕ—-£õÄ7Yµ›»†=›ûâæÿþ{qóÃî¼ØÚµ¼ÿ%$D¦� „¥Ð¢ã¹ie€•‹jÛzd“Óóª•éÍä¼ú³f͸xxx|~æúõß߀۷ -eSÇ`$;eG#Òéœ2?8ÉJ$Fsy™Q}WßÐàØÌЛÙÉ*ÝW£É¶k¶¹¯n.o~Ú]� êÕ¯eµÝÏØùÁ8v8™„‹ÃG¥ãé<nJ~N±HXÛÜÿÏÈÈÅÔœ(Èó±ùèÔd=µž8Ý—W?ýØj4ÙUÛô„¼GO‘=†ÀhO”7$Š¢cÉl+¸²®ox¢O> b4ïÛºí=€b¶ç‘ãÌd±¹.®~ÿþmwœÍ*WšÚ_EÄ¥"0$âé C±ÈPz,'7-[𢶵ûÕØÐø´jucïàxsǼºµs⺺þþóÈá´Ûoïî¾Ëäï¹ÏQ‰%¡”dwï/è_P$ŠŠ -¡‘h qIù‰ÅI…‚ÚéÈħ¥e“åøØy¹¢7î[@D®ë»Oêµ&Þwõâ#’ƒBヂð©üÜââ õÍRiïøkùºNw~v溼þ5›MJµ²£[RTVÏ'D¥úÁÉ>þØ@$Æ“dN<G(¬é‘É'æ»æí³võ˦Áè¾¼Ý;°)U:¥f]Ü;š]ÖŸVJŒ¥Ò“ ‘ìd:““•SVRV)¬ôI:u+ºõõ ý–ÁvD¤Ãtxd?9½¹ý~ræZ3l¿’ä•W£“1D&ŠÀ–҄䬼²šÆ¶êú—UÕµ½½}íªåÀbµŸ~5ÙÖ¶¶-§Ó~€,6µv{ˆÅ/„’£pIÑÙ0ä³`…JŽá&ð*‚±Ñ׺•uýöÞ‚F··oq]Þ\ßþ°Ø¬.—Ël±,---¨´•¸N@0 ÎÂ⠑ɤ¨$~faVNauÝËÉwÓ³Ÿ?/i–4«{&óÍÝ/‡ûzßb5lÜn·ÝéR¯êÇÞ(8iå`Ñäù$Æ€!á(l‹›¬-•/j_¿ù° žW¯íš@a»¯¿÷€¤¸..ç®}óþÑ‘Íd2µuË"b“Qát/ÌÆ#³46•ÎÍ/ʆƗW7wMƒqÀÁ}y T¦åÈqu}ø1;{»¦}óø;Eµ¸?§Jhæû Þ¾X0*�‚yAà/-¿¡¹]6<¶ YSjW—4Ë;{¦ï?~:Î/�Ϧý«Õ6¿¸(׫Gtb‘Åå¦Çs’cãXi9™y¥%Yy™AaO¯xxTÚÓÓÚÒú’ÍaâIXD0 òƒb?†y>‚¼ pXh)*Ž‘œ˜–š–V!–+òž76 e²¶‘áÞIwGŸ¬¡+5·ðŒ‰ÆÇâ#ÓÑ6 Á~H(æW]Ó^ZYÍà±bD‚Â6q“LÖ;61ôe}}ßb?°Ûæ>Ï7·µ¤çåá#¢p”8’ì õƒc1XZUuk£XÊNÉã¦d¥§—æ67VÍ*&·676û‰Ãa0èW–Õš¥ÏŠ)¹|¨W$ªâòsÃé/_$˜ä {ðöÀòÈîó gEÓ_”–Ñ/«TÚÕjδ»}qá^X˜“´7ÔKRøüXNR@ ÚÓG‘�óG„û!ÂáH|PpÍᦔt47LŽ~œ™Z[VY,f§ëüòêÒümëÃû‰ŽÎf./Á†ò‡á¡Á4¯ ?ÿãyÿøÁC?(4ŒFfEP˜™™9ùEE5íI·LÚ«Z˜×ëõjðÎÎ)¦4ʹìÿWYWý'($ž™žÞkëÚëÖ¾ï[/Õû2Ý3íééÉÌxOÂ8¶6q yAÈ6Š¶ò�Ê‹âdÄ…›H÷¥UÝïžóïœ?z4JfÜ -Àa«v·˜žEùT„!¡;ºwïáó¿ûú«¿þé‹—ÏŸýúÕ_¾ùÏÿý¯þþ7¿øò³ß¾úü³O?}rÿÞÝ““óþôtyþ0ênªM¡‰*¼Ò¦xH-QàõápùàÃÏŸ>{ýúõßþþ—¯^þñó?|ó—?¿y󿯿úæ—O_\^Þ?Xu+äå€à=Ø)8Á2¬Ê]Rì ›õÆ›õöÎùíû²çÓ"ô–É«A-Á)uw¯Ž"</x@‰8Á‘å@ýv9ºéåÝyÜq<`xž$ÍôT;Ðâ .uB$(MP3V›”Xj xK�¢Ërº ÚN:Ò‚¶î„aª"pLm8èͦçç>zrûî½Î`qDHP'„&%œ!5ŒÒ¬°¶ªÕ7œ´w“(nçÙhTôGÃÉòèäú{i»Û/zÛÍñá|–º ¬è}A/ìo%{ðv ÃiˇÆÛ¥Q½8œ'ƒ<)òìòƒËw7ËYït»éà&u'—Ì'Æ*5Q®Ñdê ªÖ`š„N ±b÷Ý`6]\ë–óáìÙÓg=ZMûçÇë£ÅâÆéÉÍíÑx¼äx©´_+W[MT(í£ûe¢ -XKcù@Ñr/šdùšb´°Ü˜ãxlj{ÝÔñxµÝÜ:ÛÞ<wP“¨§È.FjeT.£Î‡V´ð’¹bç´`r¼á:¬X›ñÄòF‹Íý³üüøæOÝ°àY2ÂA1Š‚H:A‰EVt0?ý‰“Ÿ60å{o•h.Ôv‹1!ÊD(éÂ÷‹^o8\„n`I²Z~0’Y’/“ÎU‚68ÉŠ#^]ÙAvJjƒ†Js¦‡‚7/®ß}ü+øÐ[*Î@õ¦º?‡¿�z‡ü -X1¤€¿WFvËÈ~ƒ®#|Åèù‘Ìt»/™½.#¤ÜhZŽ)1'…X30@Õ0c‚·yà‰²Or:FkÀ*”pb¥8()^¦9IÖ<jš›ÑˆQB„Ö½WCÄ·KÍR„Û`@Ä«© Å¢•a´ŽR*Å;M´ŒSPb'˜Â¥X…êŽx9ô¢¾f¥j£\&(Η͂W2ÉžºÝk¢1ª""ÅÙ4oÕaX«‘-ŒÅCaôSƒtjA.)®¬&8ãÕ µ†k»Un¿.¢$”ˆœb0ÊhV“r Œgœhä£ÅÙýý¬?Z¢nkk´-#S`9P£*xµÉ¹]k°o}¿R£œÂûpœßB’³U»ˆŠ-+Eu„õòÃÎ쎟%Ù,…kдvúîÕÈöö1ø)ÎóîR Vv¼âõÎû-ØѸÚb+ݸ݋löawuwvþÄí]Ô1 ËÎxvÆ -Þ•Z IÎ÷ÓõñµOÛÇ¢>,•©fM.x9ÝPuL†òbâD«Îôv6¸†ãjµL�àSŒÝÄdŠóh!æ”®`ììØïž–kì~½Un”ª#4-F‚Y¨þ8™À/`n*æ7à¥âŒY)ã”°†¤1JNÑ;{õÝ2)ÔÄUIÎ5{¨¹c u&‹÷&Ç?,Õ˜ý‰1šèìÄLÖª7f@`ÚÕæÙ•Laê8G/¼ï®[é‘bÝáQØ™·xR®Iê->¡ÅŽ_í<d! @{°¡ju”áÜ -– L†C J'Ǽš1rÃÁ8@ëùZrz•&Cr“\…J4-1¬)B{UTâäºßwö»{Š°P‹P\•TÒ»°• Hâ´{¥DB¡§…¬ÅÁ~IE£O‹)BhŒQb¼[ãK¨RÅMNí„ÅI69c•¸Ò€²ÆÈJ†4…ÒZªP–5T¡¸0nŸ3|ZEx¸˜X*·¸3#ƼÖó»^ÿV‹ «ãwÖÀ¡J¹L¹ Äd~p©ZjRô¶ì.0>ÆØ�c<ÁÛí33Ý Ô†”ñöÇÉø¯õ}�ë4X/Ÿ}ÌŠÉÎ&=Éî8ˆ—PkM°³ƒ8¸¸ùèÝ*¦�£`•60Gvz’ÏïêÁªªML‚'So°pç(F¡‡j¸¶²SÍ[”*-ÐûIAQF¹:¡sÖHòF¾Žúçó³‡íù Å+´p.»·½±Û[àÎp1Gù¸ŒHPFà9×y¿Â‰J‡W»Œ”šÁÌÎÖ¥:û- €Ç]«³¼)Â:”èu‡7.?ÑÒU…P[‚Ï© §¤À, 4m2œÛüüý µàŠz¡XSÙÁÊH6íºÓÛKø´T! ¬BÅÓ£ÃppËÎÏEµ×_ƒ(|W‹ˆ³ü8¨ºÀÐ VÕt¶¼' Ÿj“‡ø’BFð)ÎEÿç¸ÌzÛ¸Î0üS‚:±“â:äìÃÙ÷3‡Ã}§H‰”d-^d[±ì¸6×IPÇ0-ТEŠ^ä¦w½,úúoú©�17œsæœó½ßó¾ÇMNPÖÙÉTpÆâ¤z©Ê!˜�M}Pbr ¨+¨]€�Bš59¡øf• ˜LH©m¢Ñ•`÷K¸Q",´À¿€NK -U%Sä%s$(é½/vvDÍ7‚lÍ0º^®ù"ÏJ¡l&°¸qµDð¬2%¶I>!¸hsõÝàè!°rQïrÂËm^NQÚƒQ™,ŠS‚+ð-„tq>®žooþ’®Þ"´W!uÉî’B£PÕI¶¥¸3+‚æîDs&€Ó ;î„)g²X.Gíg°|‰Ûá‚V%«ŸG¥&#¸žÉ‘_íB,¤a#ëñ›½ìZãÀ:òšEôLI¹Ÿ%wˆ‘/n?m_|ÜG¸®Õ왟»ã›pþÒì<”œáÑñÍ›ßÿ‚©qžT„^嚤˜ŠöR¯ò¤LÀi'[àPÒ济¨uX1!xx§%»cFñy«U3;¤š°ÎH gŒ–pÖ@mnýþµâÍi9¬6.wÅëõ¥„¸�‰Ôaå;Fíd+;(à‹UAï€árjœEX0@4ø8°a긘2ƺIó¦Z}ÛZHé¹2ƒÒ0„‘Û¬Úñ£ÅóÛO¢Õ¶½óq.䔞`Žá$‡9E¹þúÝÏÍÁÉ^¶ -᧒õ%{,Ûc`>@U¯O¥¹—Ã3:Wá!¯2jÛhBÀ›í³´hyoùj§Œ&%6jRl‡Ë =àF!Or¼Ï›íû|çîGìdH‚ìp´%»¯ù#˜0 -Dba{’._®Ì6Áš³ÍËîá-ôo®,f‹°w£LN -òEj?‹2röùƒÇ¤”äq«@{B}Ñ\½™^|Püi·8mgÎ]“+„R,eÌ€¶ÚÍÜ Ï#�|”æêãV0-Wrˆ„ÖêçÏ>YþðÞý<@(jxkV„B§Uì’€B ˜]S¨°ã 0–ñD%î˜ñb¿ÊWx‡böÌÎ9(Ö0ŽG_þíç_q¥II À‘—œ×“‡Q÷ -ä±WæE9Þž¾…øw0"€’kbbG›åÕÇîêu#]½~ÿGγvÏ_6æ/âåËÖú›øèÔØ0p}iþòŸ¾‡–gEa\À[c?}$»Ë2®c¬,ÅÙ:`‡–{”ÔiC³±±â BÙ<J²-§U¾‰r!-%à#`ߊ;nOž*n¿/ÖçCÉèÍ,-Ej~…vÁz€]*”+˜·µµTÑÛNsDpÉ:¼ÁäŪ¥¬É-œ«Y£+:°à|U*TxHï>yµÍ³¹îž ôîƒ2[¥¼æ‘¼ŸGDPK™¶ÁqH›Bʹ·WÝ9 ¥<N*îÜVð”Ü)kô(¥Å[}ZjViîhwY·>‡[†fÄ?}þ»êö¾Ü-fó‘UR5©Y«Œ©’Ù6«D‚Ñ ûÙ3)^›ÝJ)ÇNs³eòL¾,¡³R*[ÕYU¨à�QjB#H¶pt6Â?ÈûY^Mî;Ó¨ÿ¨T‘ò—¯ÊET#?W’Šø,{3¿sÆk‰n§N#ÍWÈB•½£.’|’Æ%Ú¼1c¤!�^)ñÖë^ŽNÞÎ~¨ŸHf - -t»[VÑ'y¸ ƒ¿–½á^ㆫSMhéÞ¸³¼ñ»gÉèüícý¡àÒãÛþÙ·ƒ‡ßµÖ·á↵†œ‘¬Ÿÿû?ÿýæã_Æ„¯ÙÜEлnM^‰ö̪/ Iq!»§ÅŽà®µø²>|ÝÛþh÷¡B@ñ®/q¡n›Ãdð Å›@fcÍ>ho¸¸þøó¯ë§Ë¤@pº—zz)†Çz|î´#´_ê˜}”�û’5Ä(©ETÁi;îœêîømËÉM§1ã¡Äþ\Võ«Æô)5Àp™PFõp7´;ý9ÄKÈoE„ÅX‚„äͽô<ì^Rb´›Åä)Pf¶À”PMP’5m ç„’;œ;•ƒïÍH¹ï�(9éÁÔo-7g¯(Á…kN™º=Ô,Sdö0Åê+f -_,”hQiD=ð…Öé›-oOxcàDkNï�¦p¦ñŸm`50;¯ˆZ´Ø2½i«!è]€3Áº%TÎæhAé0°$½Ø‡N4ýI…²¾¸÷`ÿŠ ¯vd{¨Õ§z0£@™íc'îf -y„AŠ‚!6Ycà¦Ýí·vú9‡J|¤&wp¥6Ž ]l–Ïÿð§>ùÝ^Ž@ià\œ{îÔŠÖF¸†C¨¢"#ÅeÒ<(ñ(mVÇëž…“ë`ü„Õ#³1èooy·/yC9\Xí“ÖôÙxûæèñ‡ëwìç·y‡/»SX.„”¹íoô¸DÛ�¯}9<ý~xþ½7|y•„dg”Lž¨áœ5»œÕ•œž-x%¹C#YùƒÍh{ã2¢;Þ¼\^NOÿGq™ö¶]aø§MZÇ‹,k—¸HÜ%’â"R¢HQ«%j_mI–ãU¶Ç‰Øq<‰'A:ÍtÐÎ(‚¶h¦˜~iÑOERÏ�„ ¡{yÏû>Ï õXý—˃JƒÓ׿æÛ ÀŸ8WqŽQ>e�èää -ä6Ô4Ž'̦J³áþí“Û/¥á<ní¼ÜÜ}µWÊvwžß<Ïo>ëî¿œýh÷žApQ¼™ÈÔ£B.L(ЛQaÝ‹©>T‚~‡À\öàDáX:ÕQ&‡ñE&3ÐZ“ës4QFY]ʶ8üd…–*qÍžÕ>’íN¥ [¨ی*ð‰Ä”‘rùHO€$Á@ýx‰Çâ&´¼Z˜jåRnIGÈn—VãpxJÛ¬Ôˆ%Jqµ³98`´Xõ&ÄÍÛp–B˜Àdh7¸‡MÖRÖЊÿêÎ’Ç€ËâàVªÂ™d“U2nû‚ 'I_„уçô¦Ù80êÃÙÕ›?¥ -#Fäz´õ}>;hŽ¯Ú[ÏÎCO ¤„9Ìdy¥N‰e8N*’^Í7wc‰œ'+)7P‹ÓLc.åÇr¦9š>~õéBáÓ £>/öOÍæa¡ÿ(ß;ÕÊÛ‰zMËÜ!f5È@zÇÕ&hãøô}mû&Ìd}!–à ©¯!‚+@£lF;Û|49ù 7µÂ†ÕÚòÙ•@çµ0Ú8¹}ùéïOß~ií^³zPêGn)Èõõ=³±Ï¦‡fý°ÿ\2œ�`{¦v(±&è½¸Þ )(ÜJûпZXC;‹FG4»lÊYä ¡vï?³;AZNÍ«ÞÑËúì¼4:Óª»¬^gÅÜß~þß‹ß}ÆâéU? ·G×Öð)T<p]otrpöþ7K‘p4Í£Lלּûmmÿ\? -0–b¶¾|ýïÑã·n?¸¨ä'ÅÍ«ƒ«ÏÎôe�S–V¼dÓBaÙK€yÀ"Õ›îÃÃIBHZƒì0¥ÿ2Å£óÊìfxö‡Éùõí—ŒT[XF»“@h· “;À(Mgöm¦ºÄ”–^å¥2S}ˆ�<æÅ3¶„²œ+ DzøÇK”Æ4:‘ÌÆ(Ó ð &áIp¼J¨¶@T‰ò&8Ž^žû'ð¬°0¼Èva£ëã+P0R©Ã¬Åh« -BÁÎË~Tõ„%·?‰f%cƒU . RE³;(„)`Œ$œÛBïakï¶=Ã%ñi¹Œ$J©¤«;Rq‹N5óÕÍg©â(…UœlmO/NÓ¥©\ÓZ'B[œTQ½çFQ"„fV÷2Î<Ý8VÊÛ1Þ†°²;û £¦õ„Þ’¬>øÔƒëO_žœÜ’j¹5<|óá¯Vm(+×>}ðâÏ·üOçá÷qkçmD–P²Cw8áò “?.Gã¶la™Knˆ£Í žŒÐYœ/ðæ�êÕêÌå\¯1šŸ>ÿiIʪ1¹•×YÝ)vO^ü`Õ·×.ÂdªãfóH0^DöF(|eÚ?ZÄ“Rj´ZƒsS>?ɶ÷:»×W¾¶v®½Ææ¤ü”lL,ƒC¹<ŒfY«êú{>/"&̉V9̉hŽ×‚€è<%ä"¤ -r±{ñþòÝ_¶/>v^+å�e,{I·ŸûæÃ?íÖ| ´‘¶dk¥rŒX3ƒ`, s‰ -EgKPÊKK¾_ßYvƪmÕ9ÑÃ9Š±%„ÈHéNd®5be\ñ2TÆ©L�M‚´§Ü~Ú‹ŠD@˜4œ ±p?nmÓÞêÆ’¥˜PŽ#&=€Ê&X3.Zt"Â%‚É`d.œ%—<‘$À¤Ó<ÌÕg®ÀŠ/ -³ÀiÂà¬2½²{ó´Q»¹ý<™ß„hը팼ëÍ_]vwoÛ{¯yk¸â§e³ÏÊ -—TP.ë‰ôÈnŸÆõÆâîòS1Î"%¥ -¬ž’(4¾Þ’‹cJY§•ª,*µèl>lÌ.k³g…þ|rôª¿{-e»©üh}ãÂÙ|Üœ'‹“�“[Ca@¤Lnh;+>ˆU�øÇBvÄ#Ní¬ú˜*‘ !thFq´ÊncçUitiÀhdœ“'·ßùWÒìxg>3*ΟÿéêÝOÎÎ7ptý¸˜®lBz„A -äâéò(m‚˜ t6„‰à†q¨@Tcµ^ÆÙ?¸üôöÇ_¼ûYo»‰Qª°a2 o -gr f¼ÚŽ«mw[pEà±rá>):>LŽPô”uÒìQ@ô·/:[gFu¦–w(“¤ÒLÚ“úý7X¼Í(秼ÑñFxwˆEµ»¸E(½Ø:DåîÝå;wWà¨rÏÏXÈÖ\^ãüQ¬Ê塼¾°èG•�ª€CጡŠ±¦Ùš3œ™_ŸDãÙÕKÐc±¸Ç[½q£Â$A©‰F/*V`u•†_®0¦!ŒJ!$ \úÛåðÂJD&eõý˜|o5/ÂJ ¬I+µD¶+™L±_ªf“Kƒ½›þüÛõñc)ߥ%OXÚˆÄRr¦E°ÀœÍòÆÔl<) _t÷¾Ã8 ‚ƒ³ÿç¸LšÛ¸®(ü[R%’ cw=Ϻ=�yž@ (Râ Y¢$[–-/h9)yWÅ¥dW¶ñ.ë,òOr™ª^ôõúá½sÎý$-t®¡L^t†Z~‹1:‚QïŒÏÚØ$ڻۧ߿þùôúÏo~ü:¾’Îõ«Ÿ~øÓß«>B„<c®ÚõYkëÕððÛ$Wžóaó")”`AÕbŒs�ÛÐÅ HFššY×r0I¹DyÈbg¿wü–LAb›•ÞYcø"×8¼¿eÍfS·õÝçß”üæâ -#\ÞèÉΘVa -À¥ç˜…€Ä -"ðFÓªìfšûÝ{O.Þý|ïáày œÇ¯nHÁ‹âF*»áÖö`ýL}ÆkÀ!ÃHÞ-h‰?#¬l{VݺrÛ‡@hIÖÊ”‡aL -¢"ÄìÑË_vŸ|îξ¯L^Zcn1AÒޣסSe˜ËQ!BdâtAr6óÝGùÎÄõüB(‚°”äÍûD - rŒ² ¥©æïqæÚÂ2Š J÷‡¨•¨˜`=R>»:¾ÿõù·¿ÆQš”;ŒJKNWõJ~œªìL‚œHÞ+·¦¬–Ç(]HÕx£.§Û¢Ñ†v€$R¾�rg!´°»ë‹A!‚Î*Šªñ„Is9’±#'èup]ßqš{Åá…^Üf¦sH=RNSŠÅ(.ümÁ¨¥2kva‚N“91›dí”ãZ…’*pé -r•QÊpŒ`v¨!žÐY–#"Œf^oyõ½Tv•`Ó4ŸÖsMдºÛõÝËþþK rkïä]iuJ)y«´™[=ãÝ «:ÍvNåÜF0*«Øm�EÐ0Õÿ‰HD ‹Ë™Ê+76t}Çùj!ˆ)ÃY¥i¡>>»Q3}Ýnî?ü W&�À'1Â@)›•ªva\^°bÁã¢Öô6À0Xø§7ôÜ(Á:©€õh)Á”mÆ8›1jÑ5F¤D³Å‡Q*`ç•(ïC¼ Á(ËÈ^áqÞ‰“6-WÂæ‘sŒÙæìngûLÇ©ð]cüˆµ: ¹¥í(eŠVÏ(î:û@\ QpQœê…)À†d¯¯ ú_>Ôß8Þܽ˜[fG ”cwï—GO Øç—’i¯Â@æî¬@hÙ¾UÉvZL(Â#x:Ž§A6P¬hµ½Ìí>°['íkxÑòÃ8£§2ÝÖèJuWl6’°"˜‰+ÁëÓ Ø¥âóaùRˆ‰ Í•*C3Ù¬×Û>xF¨yΨÀl:}÷׳o¾Ô÷ßIÅÉ퇜ÚÞôrrxÚÝ(®†P<3™ÁÛÎ÷qÆŒ¢ŒáÔT³ -…zdŠ!Ô\1‡!DF™E?º"Cq Ú`ô£‹‹9”1ùT±1š®vÎÞí^~œ^|üìfãðÚ]{”óîÞìôkN/ÆEL7$gѺ’3J²Ån&(cÁÇà…t’l§=`Z S8dAé«æU»±Ð›<R.ãr™·{º×o®ß¿xùIv:bºÍ‚ÑjŠA½£9F©†Ùͯ׻‡°ÀL &ÅIG2{à.Õ�Ò0²½ÞÖà=T3R(¸õÃÖäYw÷ÅôâÆma”Õ=Ø;ýÂ6“ Mœ± Ža„Æ«ypS¹¿/¦« 4ÔFÉYµÚ³ÊÞÛÝG?ºåƒã—ÿú÷íâ–?–¢µž^š{'Ï?üzõþ‹àŽîú’ãJF¥m°€ÁÒ -·‚˜Š=ÖsÛp;`pØU•`NÝÖ[TöEåå°F =;ÓµÊB@¤l L‚$"˜Cî%ÁÒÔD»Ðv.ôŽÒ«9Í¥jû‚7�BîÏ÷Þ�!C$BD ¤ÇËUœË!Ib4¡‚ý8ÿÖéÉ4’ÐIÚrríîæ‰Y�®žm>|ŸïæúÇdµ³‹%'Û;ºÿfçøc’÷–"T$!QbQ4:ŒZ‘%³Zlî¼ã‘q¢՛êQJ=ˆ*AD -F9ðZS–¡ã„™¢"”䊂Ӕvs0ûåo¿ÿó÷ÿl<&ĦUßmOžÖÖ6/&Ó§)·¡»T¦§�ù»Rª…bÚÂ>ïC–I7"qÉbæ—ÐùŨ?ˆÃɸFv}uórkv p%Ó(çÅYWt»ÙÖÌëœh™u‚wûãÓZ©Ádp‘õpÖ£…|±¾]míú–Ðå�Zb¤b‚²ü!6‚* ÊäÕ²™_a$i›‹pvu¢yk0%9½#ª•þèt0¹F‚u –ub@w¤Î™$e¸¥'g—ýqœ2p>-LñˆÕ"Axõõço>A<òz/×>/ô.o˜«NœÒ&!ß"“ª×ª{€¸w}ñP\Ũ¢n†'7²³æÒ²YƒÉÇÄ?Ü |µ„úÂR³(¡j•¶ÉC9+Š+só¡¹ù0䛪Ú}ƒhZÍ™QÝgRlýžQDyC)®•FçÉóƒËOßyññ³§Ÿ9½˜˜Q.FÙËaza)î$b˜ -XBÉÅpB[†¬Ž -0Ôh.󦘩¶G'ç¯Z;zŠp¦Ùœ•æ‘–éY…¡h¯B£´Òí©4£Ôµ!š½ÿQ\f½mÜWÿ(Mc;ª6îËp8ûpö}8œá¾ˆ›Hq%‘¢¬Å¢dk±-ÙN,;^â%®#4MQm‘>}JÛ‡EŸúÒ‡~•^|p�çÏ=çwj½óÆèj@/AÙ¬²’ÒÚ €(nûº/að’à\X|a"ŽËv±?9~¾{öº28œÌ¾š=z¯æÛ)µh•7ôü`züugr • 4Í©îÌžêã8.¡¤ÇÓ "ƒÓ9h‹IÂD1ÍÀ|AjÁ—„Ð_ö'—8 Aº¸éÕ¦™êX´ªû'ß´6Î1ÉãÜNq•á¹ÓšéÙþøÎU½6EK¥LeÛ)M$£¶ãs‹~ôÆ _4.€"(óÅbpÑO X¥'M0„0"Ó\>(°4#•µL¯´:3²]"•Hb¸œn7‚$Š$•IÖ¡X¸EøƒX(J2\&g—BÄRˆL†¤—$-'Å”RL—FÏÞý4{ø!F˜Wõ¶™åZ3 XŠÑ8) €B¡)M^iXù-‚/#Œ¤çœ\;Šp¿¸å“6�? l½/Ê�…Fquчø#€J’Ô¡ÑÀr1´!æ¡þäVóÝ#-Û˜]¾Û<z^íw'7Ž Á=”€îVhLT·EŒ6È0¿†HŠu`t·Ë뵕þi"åúI—¥”]…¾s}öêOñƒgßüøâã_Œ -è¼HIR,VÇ®ì¨7÷Þj•)§•êƒÓüÚ]½°.gÖ�¤ˆ#\5³‰§ -7¢7磈¸¶Ê@~Iu(w .N®æZû”œMÒzveóäÑÛþøóÙÕu¦s –Ç)£¹sú~ròFöZ(gùQg|QíZ¹^©¾![¥PŒ¦X—–Êq\ƒ8�bÅÕf¡”C¦ Zsóphœ“†æŽ¥Eð%'ß¹}ô¥WÒŠg׶úG¯v^7o?/ŒžˆÞz$©UªÛ/~‹Îr„Œ¡h&ɸIÊ …y·U½6Þy¸wòú‹ùè¹�ƒäòZaÂÛ‚/Ä1u¥³·s÷¥‘ ´CÉeR,0R¤-ÃW/øC/ºP"BñT8ÎÁjûƒd<!!¸–$ô…¥p’R8µM ´R{:9¾Ý¹²ë{µáYº¼ sÏ^0@° ¨2‚Q1A¹¼Ý…‘-ù1XG•QL¥9—bìH” -„ðsVp!‚oÞZþüæÂ/?_˜›ÂŸGp]5jœ˜iv÷¼Ê(¥5{%Fê¬^ÝžQšZÍÕñU}t¶3¹÷ÏÿïøÑ{èŒr¦ã5oÛÕmxq%7¡Ô - %/åvî|²îüRxÙ‰ÄÉP,N!¥;MѪfç¼OŒZZ¯Ž»Û÷«Û¯ßÿîù·?¥dê‡Ní :¼˜œ\÷÷_í<ÕsëÙâèî÷¢[‰Ð”Ü$["…šâ‚³ b¤LÈŸ‹Q΢-#ꜟZ³€÷VypÎùÞù›µñ©”iåÍl÷^mãÉààÍÑ£.Þÿµ¶õ 9<ºu EÉÌT·Ë*‚wi¹ÂJ55=€]óE©¡£tF²†jf@£]8sƒ´ªùÂÌÜ2F$] ¤ZŒ´àõ9sÅ(ôX³%Î*Áf%··yør°}Yïì5z»¤â fÑöº°‘„Åì0¢!¨Å¤²Íεó¹…8‚I£`|ž6Û´ÙÂ…boë|cçV•×ËfnU÷: lV.¨^‡R*4—·¦ÍîA�&&Lã‚ „‹@Os²í|eCR‚ìu''G?~ù²K($›ß™=ûÇ¿þ[FÆÊ%I_>gucØ'¬ÒÒÎô±S€H–}É`ŠDX×pÒ0í*-8(añJu9@~vcqn1Œ‰88?"cÀ-|Î+¾ùõOáOˆkT¯gÔ¦îêa¡5îÞÿþïŽÏ!²ëë÷›“'éÚH‹5ºa\¢b&ÓþðÛ¿ ^÷³ssó~(‰þ ”ÉÂ+ùaÿöƒ«ïoa3´YOÙ+fymNš““ÒðœÚ¸Ð?•œ5³°iÁXêš·&˜ítncep$y·Þ3=È>…$— ª?&AVJvÆ'¿—o-'ÐFOήC”‹ZõðîËîÖ‰êµíÚvyýA{çjûÞ»³¯¾Üyš®ooî]þùçÿ(ÐJØLÊlòVÛ*oª¹±˜ÉΞ¢ØÆðL°ZaT@%-|¡Â©¥0$4ÅtpTÞê:+õÍÇ -�›UYŸ—;‡ ØîÖioú@°ëQR‡ZñIfð&‚Ÿ’³ˆLPi˜,pŽáv§ˆ1KaNr‡`}¹þ©–_OpY„všÃãt¹‡ó)–ìâø³YØ’Ì™r\Ëbr -.à›aÂ)ÓÆ€óÇT»?ž.¯g/wÎ?ìßÿxty=»ü8¦x'IÚŒX�ÒK` -‚;•°”Gò9;?,µöí\'¥1Ü h¤ERØ‚¤!œ«v~Š&#:úWÉ¢„ã -Å•�\£éDʦ¥,Á;ÀùN}»¿ÿôàâÛƒËﺳW˜èAéèï^qN‡P*¤\öf”§–!vÓ³ƒ1†Ã,ŠÛŸ¬ (¸Ø�†¾xEÛå(“¶þÏq™5§faø¯¤ÒÄv6f»„’@lB öE,2»ÁØLðŠ±ã5±“8¶³wgÒIwWº;“ªÎ\LMOͤ¦æb®ær~Êœ¤JתO:ï÷žçÉv± -oNwöƒµmœÍ»©½ã½ísê7Ûy€(6¾Tëž,΂É%’-”äÎûHíƒkßÌÎh0Õƒ`ØM¶6fÄ6bó÷·¯üñÆM…aZƒëí!³CS'âÓíti¥¿~Üœ D�xîΓ|.U½³qôj|ñg»?)¬Šå-“5Øy³3ªÃx- -_šs=1ßסž ¥ÉNÇá†Y±ˆÎÌM©`Qâz›çÖ2gtX¼7ÚârÃhy«î˜p!–\xýÓßFgï€:¼™Í,zSmØ€Þ6b,bõ0B±y€3DT âƒP P·nxÔ+ÔêíÑùó_�H ÖÜà\|Å@Äé`5\Ú\ÜùΫ¶{û§O~+´ÆZ“Ogf4„X¹/v@E1R4š]¸“×™AÙ¨==¥ÂTFÞöˆdy+”¬×:;Kã§~„§øÒkjQ?¬ÅTy-ßÞè0Ãçá‚™ZŠ.‚FïRƒ2X}©Ì²/XºþrZaDL.=âÐé)ɬë`Ò½ÑÉ{íºjzÖþåî«>±eÄÂ7&™6ÚýF¹#´PŒ7GµËÌÒ)!,8ù—YŠ×·,¤¼Ç§{lz…ÏÜ‘š‘)t¤BíÐ".ƒ‘™U‘"·¦â0“5œÚæU™i—PtÇd+#¥NùΣXu3>¿–[§kŒ u›l~Ê“qz³6RDö< Àc¹68~ôÖÖÍIµÍ!x…2ÌÝ`éÁì+2ПÉÉ#ÜtÅo"*˜‡ô2a)•o6åÅM“Ý/ÊÃ…§ƒƒ·ýÝ—•Õãù•€"!^}ÿéßßý¡¶qf"œi춆Ïò^\ÞóDZ:›_¡¶ -‰*È(uô-6¡ÀZ`Ô•J‡Ò“Ëw_~�i5Ðj4` £d°”«oIõ»ñú‘ÅÔ …æÏY¨ -ha\~ñv¥Bç„Ó‚”وȊSš`Í!êF¥¶ã´&,ÆÊ›RëpetÕœs2lâáã7ÿ×KÍáŒÎåpKäôÌDDcöhŒnÒ“ÆÈð´Õ˜ÝÎ@¢Žû±Úb-ôÃÿÿsií~kóqgÿu¦÷(½rÖ½êŸÞÙ}’¬¬gäþçÿüïÕOµâœ—+¸¸yÄ è®øØ’ÁÂÞ¼mqq’ÞÊL* Þog&§s:—Á¥B :(Çò=W°�Û‡ªN¾L - &Ö°§‚9!¿”oí@båõbï~}óª¾õL^ Õ1-.ñöÝã7û/p_÷J±Êv¨¸N†–±†”j4 -îàWFAsô(k&#`|‚´ÊwÒ•^ïéêþóñ÷ΣÕ-œ-A\‰¯¡2ÛÁ5œˆsúŠÙæÝRç>ŸíaÞìœÑe°øŒ(x¡1Ò6&Cø+L¤ÊÜ¡ƒ¥ :ƒÒ‘9#5‹8p&Ê„çùå”܇oñ†çq—œ¿“o¥æ6Ÿ^‹ƒhiÀr8V\v6OLLubò ˜iÃeÁ%µÙ«Ô`VÔ»³•*vUzZÏ6Úãðèm¼˜ëœ^üX_ÏÌ¡vwÒ“ZæŠCX»GW/Þþ£¹õÊJ¥Jåþøø¹Ó—°|´°V\~\¼ˆWïû¢´4ê;>}lMÎ -5¡Ô“&"ðÌ}‹C”kÃúÊ.43JÅð@ÞÁ•b…~¥šjîò©ÔfBê0|qZMLÍ Jueh¾æ /è,~•ÎóMT·).4Ž¹„?e"žP!YêÃZ,w6Ï~δöÂÅÅIpBœY±<º÷ýë_?/ÏldÂj9ÜY€Ð9«n·LÞ6O«ˆ@´ƒ¸öÍôpÈœ]££ Vgòp~ðØé"d!£ÉÖn÷èíÖùÇâê#èŠLu³;zvxù¡Ù=<¹ú¥±~’WäÕû‰å“@i=\î®_ÿZ[½Gñ2 Q¢º)‡ttÉäˆ+ç°›SšI……ËH¿v²ÓJ†þ,ÉæÙ\'˜]\Û{rôä='µc•Uié QßJëéæñ|÷B”7 âÌKrE»7ÄkvRh»ã]œ ΂T' -rÄd4XÈD¦¬ÎêJª->ë—.7Û}jÑâ’mh†êêH>äŸbÓòâN$¿ˆº^ê6×/vÏ[=|,ô=ÑyÍ‘±=¸çC½°.ys6J$˜î'¥¬ÑЙ<Z£v‚òˆ-È'ÛIyÕáI{¸xÙÅÜ|¶íÂúAšÂpxôÝÛOœX@IAjeNó#°Œ9#ý%·{úð‡bcû¶Êa°P —Ðà¥azá(Q.ñüòíñù«-ŠØX0‘êðòàêw˜T@ZC0ÞF°?}^=„}7©´ºÃm65 ÜÒ”Êf°yK;ñʆB‚ 9ÙLÐoS¾äéåÏWúK0Ö0aÍñŸ<\Ù¾8~úQ^9Ž»+åâÊ“{B\¿¡¼5©›Õ8 Ö€ÊjMì ÁˆɎZK)gmà•°DT¨M¿zÌÿ).ó߶Í;Œÿ/C×8‡KÑ}P”(’")’:x‰¢$êû²%Ù–-Û‘Ï8r}ÖGc'qën’&©·u]z¬†è°èOö¯ì ÀH‚÷ù>Ïç‰QR)Q]I6y˜ÍgóÍ|g"cmûéÙÕwÙöJ@m¾Ýÿâ§ÞÖËÖàüéË4—ÎübEÍÌ�© a„‚>6‹ÓQ;D̘fe¹Xn®bLÂ`'€'€Ù‰”–Œk‹Çåù=Z)vìfFbeY,?`Ô*”�ùà‘’\Z¤“S&œ‡˜¸•Pq©ÖV-t^ v"éå‹ÁTÏåW½\áË.�·»)Õäàᣓ’‹ä¢Ú 1¼h^h3‡jsSÒ_àâ•Ù‡O‚é).Ó¯<>LF¤0 ëÌÒ® èmx$7 å¦×ŸdÅ’ —ôø¤`¤ä¥3¿3ߺ™Æ&âÅ%ZªX °h.Zv"ûV·É¦ªûçׇO¾žZ>’Ó]Àí&‡Ïåa}l´q¬7cRQKU뉖Îì½qÛ4ÂÑÍAãøi0!!X8u‚RêŽÎÆðZ}éÓ™Ñe¥¿Ëef]dÚêâqF¾|õÍT¤·ƒE½dÒ -z«ÔO€ô0Ê¥‹}Z(üî#Á -ÚGÌÏ ¾ª 8^)ž_¾;zòÎǦ`\)÷ŽÓ`æÀC±–‘uFÔâ$òõu—ïL@.$r%U7&÷¼qÓb4!ÕÆâõ·ÿ¼§sÝ2ƒˆ‚ªáxOT8pÏî'-pÈÍhˆÐ„Q6YžO·6òÓ›™æPÊN3ÒdººØÙxÜY=(L¯Š¹Ùpjd(è¼a¹Xj¯ûy J'Q`¹>ÐJ¨{÷aäû¸?¦3#³DUP©ÕG+Çìm<›ìmuçÖþõïÿ={çWj¬ÚQj…ü"H§©áùæÉ×åÓ\cåäù{RiÜ<›š‰ÕªÍý¹íwý¯J‹§Zmå¯?ÿ÷íw¿šIggïYiƒµùâ„ÔâSýLiáðñ‹¹ÍÏr½íÒÂA®7‹³Å¹mÀ*ë‡W{Ÿÿ)R觫˻O¾9½úai÷…6³N‚@Ï‚QÅÃUÔY0"Ø<"„Åð ÆD*BCšâ06gó°:+ìø�u%R¬¡„ÊfCq™ZoDK)UÉUf¢ùYàºFói/Íë΄Ë`%q$;¸h�TB GpÅéæÁBþ°QQ’ËÒBÉâ Ý&'åÂ8+üŸõs©p¬Zìl5G´8 ‚ C˜dqPz£Ûb§ DðR V®9<œÙNÌ„ÑÎÜ·÷M¨ÕI™Ý!µö ±x�Ö7¤v 2ÐŽår‚RƒPˆF£ î±<@Åè¤uß÷L¼6{ó–mlÌtcÌZ§Ër#A”VܾÈÇëMfLgð|tÓ0v×6nð -Òœ‰Á8û!ݲó-(¹©De>ß^UWƒ±&J ÑR¤ÐÅBÊý‘ΈمHqHÊUÂvTZ -åÀ<QÚkqøÝXÄøÇàŸ°30&¸|"Ág€W¤ªÃúì6ð»ÝÓËö`”o¶¯¦V.Vößô7Ÿ¥*ƒ@¤Ž–³“³›{Ÿ³±Ÿê–æ:+§…Þ®RZ&T$Ï4Ïß윽¶¢b Þ!¥—îÏ^ÍŽ^Å´ùf{ø÷Ÿ;¼xŒ×•â|¶»Qîö.þpýÓoßÿò¿×ßÿúpïÅû~ùâíßB™.3ÃÄ:‘Éa}ðxýøÏÓkW6O2j¹óˆKvŒÎ€ÁÉÀ„ìÀ£T¬«õŽÂÉ®Ë'•ÚËT(È•€Ú&å2€I‚+æš[Ë»¯±”³ÁhÉÖrmmæ$ ÎÛ½ª‹HÑÊ4!VMŠá’*ì‹#¬·2Fgè®C(5QZÆ3p3©Jÿ$;µEEk„X�lCün¿à@V—ÏCò€ßð`œ§% $vŸ/˜ìž$‹ýq=Œ‡ -v8âÃÉ@Á&¿¨™=a‹;€Ð Ji+¥MWFü*áWˆ"‘¾�Ô>®÷]±‘Êæq�q|ó6àgFE'Â:=Ü„Ñ{×€è-„ÑJ!xO¾‡ï0#r ’—Q=´TʱÒ`0%ž¤x Î%ª€£ür+mÈéž”é`ŒèG˜HÆMŠL¤Ê&º¤T1„Q)An‰‰Ö„1ÛÈ´¹�“·ïZÇn›@‰pÂa†0ï �]¹ÆêüÆùòöÓd}€…ÁƒŠù=�"‰B;’i¢¬ -°„æ5V˜E+R–ó½du@ñY„M;qÑEH´ Ë…X¾Ã%jˆŽçCÉ)0ÕÙ5ŒÆµzuêüâeca= eë½ÍÑãW—×'WïO®¾=|~=<¸h/¬Ÿ>½ÚüôE½·½uü®¼ðYepÖYyRïï+¥E7)KÑòÙ—?¶–oêÜàz™)–…ɵôôاñç¯þ&MÎ Å+†R]¥²Ö[¿\ØyS\<ó?yüâ«óí •�1y˜-jÓûö¯“íO@m<8ý2ßNXI°Ž:+c÷Fa*“mŽªsàÃëSë¥ã|û‘Zâ|ÞÊh(KFŠ‰ÆŠ7”5Ad@‹ý?ÅeÖÛÆyFá¿Ò"¨-[;÷ξsöœ…î‹$R¤VËI–[e;Žo'±c¤.Л M -ô¢Aï‹^ô¾¿£o�^ø¾wÎ{ÎsD«ï`ƒVªz4Z;üüÙû_�ÎU§kÆ(eSåP%‡ª 1°Äöú™`´JVRil‚ÙÖ7?Uâ[”Ò*2å’3ìÅÙ[PœêØoîˆv‚LQžKÑ×o"œÚ$ø� | àpv‰šO1àQ)`þú,Š³ex>³HähOÇV}O¯mjÁHñ‡YÌ2„Q*)„'DvÁkîWúwüÞ©ä÷e»ÔGz8(Šë“ûáð^cý‚Ó[e¦üršrüž®d~v¡0;_�ªO£ -'%ŒPä¤;>£Õ@²êv<¬ŸªÕ±à¶õpX_?ç´(‹²”Rï•;ÇåÞ¨çÊmšá:g4g³ByœRƒmrë[²ÛŠŸäJ ‚4Âã¼KŽeVjq'iKfd¹Imou÷¸»y;ìnªa_OFåÞ^s<_Æãñî݇¯¾›Üy“Ôý._ªŒF@ -VÇ÷^$ã<i›Á¤\»åDŠ·†ñ~‘`LÓ>;L -eNýdt¾{þõჷã rÍŒ€Gÿýßÿ]~Áå,?œ¾{òæÇ—_µÖ§nÔzÿ—¿Ÿ>ü2ƒs) õÝÊÚÝîî“óg߇ÝiX}ùÍÖ‹ˆ’ÂÍ,å�Lî½¾|õãù러ִ;<úæ»A òå) �²1¹<xðíg_ÿ¼vðܨî<~ùçZÿãësèÍ9t)#8ñJ3îl=UŒÆÓï~úçD³E+Jõ6ô/-98|ô§{W?××/ Ê{þúË7õ›0sp¡ù›Åt’‹xcõæ2?¿Ìœß¿zúò}Ð>º¶øÑïóÛ¥k7ÐY1¢}Œv·BcŽâ¯òFzn‘S„11&Å;vÐ+Ò: -ßåH‹&åÞñ`çb÷“+£¾MpV³g'Û9ÆÉÀ½*˜y¶(¥²fÕP\Ìç Q2s2Uà)"äZž‚ÌM)Îá²îuÁ›»—Óï6ï~Ñ9xæt0d”v¶¼TP³RÓEµÓf´&Æø•Ú)Oª9ÊYÌ—ò”] ‚q5³•Éq@wAgpWµZ¼ÁiÆ.ÇkacÂ*^ª@0%BD«ôVnß?8¿Ú:zbGà Ø9!E -ˆê49 SNòÒq.Ep‹/%ePœ…Ó˜€b$¢Tf/_Ôh)Õ:Á»�¬pJ¨º ^][ÿ¸=<bzЛ®î?nL>ñ›ÅkÈvlû±ëW5§ž.*iNRkŠÕ攘àÀÔ"&A<¹É¦è ÓEÃmÜö»‡f°>Ú¸uú,ŸÒ¢ß÷¹xwöh>¬4oÁR˜ÑHv[F¥Kpn‘´d«MŠX -$!Ô¬xÇMö5oUP"à -»ƒíµí3¨´vÿÄéž$Û뛂î¾ÓØe•˜a•éɧw_–¬„£P-EŒªV;eÓiÚñº¯ß|xûÇs˜~}›ËÊËD™Ð»à?~ûÐñ›þöËWøa9ÍÍÜ(¤ò²`Ê+çÝ£WYðÏ<Ü·ÔÖ(ÎÓ€H‚áûõwîÑJ¨ëáéýæêAŽÐQÊ–>«&œa„˜É©‚IMÕŠX±ˆS‚EëçJ¼Sò'PLxÙßÜ>=9¿òšÛ²ß‡ëØõ)&6€B9ÁVô8*Q¬Ïð('v8æµv‘ Y!ÒͶ¦×«ÓÍÃÏ€pÁƒdAp=àÌ%¥\íl§²üÂ2 ŸÅƒ3+…¼sj�Âðj£’]Ã8Í©ë£;nóÀ7z“/ÙÁ{eý¸7**Ћ´‰²eŒmÈæ�Ž”Éa¶Su*ƒ_{¦e …!:B¸Œ#¤$¬—W!ëéRÍ -'n0d¥�€*«`Ikg -/Z4oQ¼ ¢fÈãÆBúׂÃpf*g²táÑçK±`v1ÎÅ°»ë··PJa%_q›‚kvÃõ[ªåVÖã¸1ÂHÅ’3IÁÓœ¶lÖá:PB³H‰„°`ëÁœP4Í!C)³H궊×gJ-Ç@PÀKP»L·ÉpV6GÏ/ °›$çÞ˜-ÌΡ™Éq’"[aЯ·÷©<3‚z‹tH*-0 œ÷Ù’Á—”îʆöfæ‹´Ü0£ÞΣõ“+k¨m±‚K0*Å(Àf0%O²·:tâ!¯„†›nø1'’V…#y;•%)Z#p‘&yCÓY†‘“·>âF‘óŠ´a;µ£ãË‹Ç_å&«DåÆ^küÀM¦Àù8!.…á*ÉZ¡â¤ÆðSª–ìQ©“¤áÚõ‹»Ÿÿþí÷(oç çl7ÊbXÞQ&O/§É<R´(àBY°YTë”ÏÈ>Í›É`?îOýæž]Û†°ãµNÛn°j‡CÐÁy^m«Ò<!¥H+jKKh¡€F¥¤‡×fR37óÐéh¡ÆH-ˆ „€tÝd‹×ê9ìÿWIsgþ)€±%Íh–î™é½¿þzß—é}¦[=›F²F›-)2vl'ÛÄ6ª�©„TÂ!á ª(Š®pÿ…×Tõ«—ï}Ÿu,¨ðqVJ„`Âôì÷xž7Dì©CˆH7SôLÖCb ÆùA=»’”IÈŽb–ðK²ç‡×ùü˜¤e�¤íéni¹UAcYlÚI³:bFDEËf©:Sà´³ÝOdˆ¾;;#‚Ä)ÖÏÐÆz�Ìüãë—aºâ–ˆõR6�]YOúßëR£¡¤jqàû¤õPV³|r¨Â9V²;- -¬p»M·;{ð»úF)nX@ ”õ€Š[‘á/ülOOóÅEPl ÀR<_¸ ä°¤…v-7_oT«ûQqˆ5(5I 4gjæ!kÑÞâbuùrw(÷|Ÿ`‚ÖU˱Ãl²°Ü$oÖfÒÐ菉:=y¸Ø¿ïFµYy~–”àD¢žþÞâE×Ï£lkà„aUV€ø �äPÃ8ÉËõáæÁjsmXQR,4§ Är�€ÜjÑ}Ž†Z»’óx¥4ÂC??§ay$bÄçòñ/ÛWÜRœ›ÍåâºàCwJÓŸHFA‰cÐóþ@A’++ëä€xUq²8Ñ&iE9Ñ© ‹|ÀRC±:ÐÃM¼÷ÔÏN-…@«dקYÁDPÐ åû–_A:ÝnGCô£÷_½|û;Õ̆f ŽÔ’äò(VÁj`ºÅ»Q°:Æ®®:¦á«F€°DKA:4|@‹Ì ¯aEdl†5îÜéHy8À½]zwgÐiÓƒ702Ï ·4³ÃŸ½ýN ¯aY[73NðDÁ5ôL‚I’b>9-ªK$EŠ‘³¢Û'ÐíÛ1ÔE)îoo÷4#¶ý -Œƒ¢UÀ3dl�§ŒÇ©U5á9Ûr¦ þí{{‡¸µÕÝiA¢la:q‘W}üiR’ŒÆˆ ©ê5z°Æö9BéxòæõçüÛ¿F8üÞ÷·[íÁó§QÖÕÒ²7?ÿõÍËOYìv ~ÄšCÆ€K5ËOƒ(›Ôkˆ n¸Ò¬R6S9–—)Šn[~4nDÙ" -ªnDEµÑ]p@…¡G¾ku#êöi” HóÂ…Ÿ±âÀ¶Kð[Û]‡VØÞDPb'‚’‚Â;5cÌ##È–ÕÑ Ô+H8œè€AÀÝ žÇÅT¢ÕeÈ‘Î nN@?aãH¶«fÕTµïƒ”„Ô0©O÷67€(š·uwº¾÷A>»Å€ÙÒ¬)&up@*Š^C\CYÜy'én¢iª…†î󦾞-_ÿòWŠæö:4Ñçw¶ˆÝ6Å0†å”¶[Âîð“ -¼Ê³<AŒºÝ!Ç -“49\TGëYš¤Ëã¨X Šêõ8’@’r¬ÓÙ¥îÜîlý°CQ†®,¯xÛ1“r²¬êu”ÞPteþÇ' qk«×Þ}–¡Ç€¹ÃÐï±0ÖR´«SŠuÛ»T«EøÑln·CÃmèVž¤û†–2”ÕëJÌÒº–`^ˆhÖRȱÇÕÆv°(Ï.ÏÀ5›Ì÷ïž–ÍÂð#^,”ùd}t¿\œ�_<oÆã½2¯BÇ,"ûä`öøÙÓb¹ 2AIòt+v¤Ú+«z¹,?¸¹þò«oŽï?é Ø.IwzËòCÏ™äq‚½Še,gEàiÕ¹¡kŠ‹&:Z—o_ݼyó“ëìŸ4å$ŒÓ›aw¨µÜ!ån—¢$+Çq¤ÅÔ´ó0ÙôŽX ¦ŸXìoÖçWAÞÌöïb±úiâôv‡¹µERb u·`t-Åqu÷ø½÷=ŽÇc$ª@(51›åÕÚ+ÅÎW›c0‹leEÍQ!f4ÃüÄrrŒ=UO¬`n»“À‹Æ®¾ÚËÊ,ƒ O"×À® Šƒ.ÏgOž\xž'"!ñ&p_Uc02X$¤&d…8RdGiœ¦ïW¯~öúò“üáÛ/^½¸Ù›ºŠ’Þgé�ì·Ú;!MéoÑAuW·¦IRÄã$1REðaÇÔ5ìÛŽeø¾7I²5'š»ÁÛí~·ËôúânG Iu{‡ÛÚ¦!† ‡*Më%Š¼T7+E†8d&qxÈüšaL¯,í´ˆáiØż,R¤k0U",݇çÕÍ£»Ç'õr5¾\~üáéŸ<ûéó‹³Íäì°ªë:Î*¬yÛÛ9Â<Ê<h•Zª–)zv5;Þ”Yi'™ŸN?´ö¦Áæ zz™Ã¾ûæ_}öã¯ûüîÑ¢Ûõú,‚Ü–Öqè¡1 ¤*@×›ôÙusu4^•ÒÕAøòáüÛ/^|÷å‹üù7ÿýçŸþóï¿ÿõ/¿þô°© r4§BÊD’sÏÍWM~~T\ßk®NçUê.êÒ÷þGq™³hqüŸy=N[%Dö}_%²ï»!‚Š„FD;‰¤ÄEIÐRR[ÕR[ZÚR¯3ݼéœù¡sÞ//ï¸çÞsï9ŸûùRÒ`’“Ì/¼g«ªÖä‚‘p�–à×›iÉ€8óDéÍ$à/×®áP0 Ÿ›Q©‡@! (…ÂÈÕ©<^¯Ádd󹶚 -‰REb€P‰‘È|¶(“àBŨ‚T Ô(ÔBKÉ'«³ue*·ÃRœ+1ÈèŽbùÃŽšPŸ3:Þ:6àò·Õ—爅\4 -!2€h4šM¦ËðX*‰b’z1±0›eÔ²Ëò¹n+¯·^5é·>s.6\Ä×N_„ûÎK~Ž&“JCÀÐÂaˆ<"‘‹‚@h¨†CË•²´|’EϱJKóåµåþÖºæFk_GuxÐ32Ðåkh4dë¥b“Ž‡ƒwn22pÉÉð¿“ï"o\ÿíÆõ;¿Ý€Ò Ðt`&à3ô -‹Ì&¡u -‘V%ób¾ Ç_¿~çæt`: Nga€<ÜÝ\>Èea 4Þërêû<Æùqßêœ?2Rí7}ØèûüvaçypjÄç°ÊÄB,–– -ÈHI"A“•4h±V"Tfƒ}ÖÌV»ÂS£ðT+Úœ¹½îܱ.ËD (2Pz¾þôfamÖ㯓ª¸H`ZJJ*‡£pT4Æ@¥y†|œ×Bj-Ù¦{Š&» Ñ¡’“ÿï~²ÚõfµýóQøçÓÝ•Á‰›Ï‘#—Bàef)ô<Ùf`9‹³ÊÔpk6ʤÀTð« -E÷öìÙ`ýÅév<¾µ8êÔZ4tjj2ˆ�#(7“Ò®]»MMR!2:T͆ )É"jªQI+ÍãÚŒg1;<`½õϦÚ_¿\{俧ãY,f“ÕYTÛOåh)LLƒ—™9èÎé} m4“Gšõ'›#'[³ý¶…Ë»±««_ß?{½èýz<v¸Òé.çóH`X )8‚‚H•P�e*T V´9ë=Ù^›ké1®Œ”î.x?î.·ïG]_ãáËWþH¶·AQW¦P -Yr‰8‘ž2Ùò„ýHè“Z¥ÃwV ';-A·6èVnDZÏö¦¿]¾:?Zx³Ñÿ×ùÜ~ú_zôk“ÎøÖðÌP½œÏ¤@nÝÎH<z¥¡A)xH2—ÊÁÞ²ª16qs•ÂYÄòZ¹Cͦõ§ƒ!×ÂD×D0 ‰ p"N¥cÑÚ,|‰åÈÅú+ó~ÃæTÓú㦃¥¾OÓ?¿Eö}^~;[\iw”(e|Dår…T<†C€æñ‘65ÔcÂtZÃNáúxõÁóÞÍ9_l¾;ïý}oôÇ»ÅïoçN7{ßmv®÷„:ʲET™´t002uF¹;lgL7‹æ:”cåg+-?ÞÏüûpâU¤é4ÖöåðÑ嫾ý¹ºƒ¨ãíŠg{öA»]qO)aP0CV™´5Âû9´vûéCóÞ¼ûŘme¬òb?ßÚœqmOÕþu±ôÏŸGŸãO>¬ûÿ|ÿd+Úl/âá)·r�Ë%JÔ”° +¹ÅŒé·s{íœW´nÍ:c㕇ËÝWç«gÛ£{ãWçÏWlº"³Y¢6AQŒ¬ôBz¡[§G$Êç†ørëÙ‹îÍ)ÇÚ¤ý`¹ûûi4lM9Ž–[¾Ä§Îž·¯ôi¢]²F9A˜œøå_7©wÅä4‹ÜT@è´q‚Mš'½¥Ç±/ñéß_‡>îÜ /µ/¸v—ζ«šKè& ZÂLü'(™ÂÂáÙ<®ª '¯Ò$³(ñer¸¯30lL9wæ½»ó®“XÇå~èò`<¾Úu»Üêüv<|¾Õ)œi5êîÉY0.ái8ŸIcæ*8¹"¬IŒt1÷Cu¬°OžØƇí7±ŽãåÖ¿ÿXûûËÎúdÝÆLK°ÛAÄààp‚A—ÒÐr¨@ˆ¨Ô ¼fÚ£õêhíËÏëhËÕ›è?ÿ9¹ÜíϹ#ýU«FÌÆ1h$ŠBgÉX,)7S$ TL˜UMñ”HývåÐÑöcûûÁ‹ýÈâ£êÅ~ãV¸êðióêD]_£¾¡\›£Ö1ÙR2C†Â²H -Ç”ñ¥:_Í@‰Ñ f®ÛÂk+çÎtäìEšâkƒ/g}ëáú…‡Õ㾂+»»ZZmÌÌQRØŒDpÑȊ,Žž†§h,5¯c£ËµÔ>‡:ªÜ4œ¾è:Ûzx±3úù$r´Ü‘¸Å·ƒÐ÷㉷‹õkƒŠ SlÕRˆôt ŒÅÖJ%™4—ˆÊã¡ó³ÀV! ³”j’M´è–‚¶«w‘¯§³ç¯†þ8ž¼úðìp%°2V3Ûo0I²XìD CcÙµE!‹¸ê|Y·J@.¶¯F2Þbtçj‘nÓÛXÏáROl´öiÉdkas©¨\KP`<ƒf&L&évBqTDºf jóyN‹ªÞ$mµ©†\ºÉ6óã®òpWy£‰í6fºL«Ž'¤Ñè" OdšˆHÑ3åLºP'“iøL ›P•#pË=fn¸ÅUœ®øþGq™üÈq–aüO,vlÏÒ{Wwm]û¾ïKWW/Õ{Ï>ÓãÙí;c±3Obp¢8 -1!r"„…ËQ.–Å!H„€7"8s¥8¿Ë'½zžOÏ<ýÓ7/?Û~ùÉêÇö§úçï¶FŠÏ�†IZlxË8㥈×(luÁÁÂÏVèÇGÖw£o>Yûç÷¿úï¿_ýë¯_ÿýõ“o¿<;ÛMûuM5+5 Åxª0HÅáˆÄæ'7mˇëþnóü õødðâ—Gß}uï7í>º3¼>²Åô PÈ)–ú•dtÓ«¯¨¢m°ÔBÃ9=Øxp²»Ñ$ßß4žÜ[~ñôáÓ7’Ÿ¿Û?Ù×»fÓRÀ¡Y§Z3AÌÁ¹ˆ×Zœ×ßòe¢æòt×Óûž2„›‹þ½îÅÑâÙazÛAc³S_Ø–x–€kDbŠUžb#‚Ð �D‡@Ç®uâ[kÝûÛÁ£Ãàùãëxv÷Û'|þÁ÷¿¿xýÕñ«_¾üt÷wv¬P†HDT’ñqÚ)‰Òý0Znú-Xà“õìºõpÏ}õôÎþñ⇿=ÿów½~vþå;·û{«ëèŠÑ4ýE’ó(Þ©a‚,ZaËàú3ŞɎ]išxÓ¦±Óâ϶¿¸³þÞV²pK‰SüàçJ.“K±™ÏÖ4¥.T¼[F·¢pº‰ÁµTºk‰C_xÈ£àH–G½Ap\DkŠËQg§- B•ËD ¢T^M¢îÎÆáÎò悧ôŒo$Çå|796†ê푱Ÿ˜;‰3²(s ÈU`TcÄ‚™idºti.XDô8¦mHÜÕÑÍ{s o¹_?Üüí£ýÏN×îNM‘•pÆ°;fk'Ù8§¸@Õ«¥±OuS35Q±4cÜëôc' ä$”BƒµuÁ0tZaZÎØ|1×›„èç�ºŠH‚䛚GI«5 ‘j$³£Èí5›žî*œ¨pB -Hƒ0[Ø\‘Èp„ -œÖž“ìSR$-†7iB0´:q8Jë²½4Ù^_Þ[MCÛÓÑPCËì€0qe6“(ˆIy èÕêÓŒ9?›ËfŠ4%éZ`u×pÛ¾5iÛ»Kõ{ûÉñšûÞNûþþâábs£c·½Aà te&S¬’çÍj—gJsE -ã[Ak§Óßo¶–žõe|èó}ïjèñjëó‹“'îß¿µ½?Ć,1§\èäve¥µr¯½pÚˆ§ŠhïlÞxÿìc -˹*G«žÙl7Ýö8Ú*§#e²)Ù23SÍäÉJÍ)AF TaÂáåX‚qE!"›Gó¥Zåÿ×QL§—e=‚ËE�…(°ÊU!ŽŒ´H6ͱ¬–`åí˹Ô&8n¦F6œ¾dŒHʦ0Nã•qwˆ_£``+.[£iB¡(OC{Å’rê]{ó™LÁqÅ6<׊(Œ¡j„ÎI©hd²)Øæ1[`\ŲåF9_ËÙY -jFëš¿Ú[?1âLI8ï*î8ºÉ.!8%ëz¸°º—«ó•ù2Këc¹¾)´ÚÅ…† 4ÇÓÞe f›¡l@õnQ”Q*׮΋�‡S>§ô¡â6ˆ[Tçå8%9€ÏVÅ<(¡L 8#˜¨v׋&¼\OD£ƒPNZ¢Õoö%{ …Kª?Ôº`va:0£Š›@ÍBè�¡¼,¡„N -®dv-–ÍžÝX³£EÃíÒ”( -Ša’ޘϥ -ã¦`.*ñ DˆSk\›ß™ò ˆ0MÁ^*£R¶LfŠJy4ëc(ƒ!„.Yd™dMˆPQÆeÄ&Lz á–Qõ¹Ê|€‰tg×ïRJ¿„Ø�¬€¸aÖ×ìxšÍ“媈ó>o$¢3H¯kUÌâÕ>«v1S`¾ oËþº`O¦>WJ%V‘CE¯_©PJWmn™ƒƒxéX‹7a&,B2Áº½•cVn"„©kvs×ëƒ9P»’ůd0�1rEúÇoÎÍfQÎZ´·½Á-Åß(ƒjÊ}UPÊ—…·/—f²Ê6oÝŒo¦Õjå@u6OæK$Í{¦])]¾4?;[-•éTÀªÑ“”(—«–‹0É8¡a”Q„¤lE,@*@úeÌyëy5Þ®ÉMFö/úÓX ƒ - ÎìŠöP–ÓÓ¡”k2¥ÄJ´Œ €ò!ºÎÚËíåÓ“Ÿ…GW‹T©ærÞ–ÚºÍØë˜Ø®bzâQÆaµ^ª7ˆr&bíU)¼Îš“t3«µ‹ˆ`HÚ„”¤f7›SÁ#lhÔWêÛ¼–HÎP:Œ³èŒbôoéí]%\I›çœ1ª¤ß¦J[ -V(cÿ£°ÌšÛ¶¯(þQ:ñ¤±¬•ûŠØI�@�@€à -‚û¾h¡$KmI¶e[‰SY±'q83í4ižúÐv:~€~ þõN¸÷žó;§¥Ë¼9rGÏfÞBŒ¹H“|Š¯F1b,˜«DSª¬5›£'iËjí”ÔN05(í‘ò8TÀÅC°¸%}Q" -ó¬X£ä!ÊÔ‚Q6c3²Kdëà¯è\[uóÞ)*4QÞ‹‘+ñàµ8"‘\)Kþ˜�¦Æ„Z’lÆĵʡ$³å‡#Ãó”ÐHq’¯›¢é2%¸\~°ÉÄP-ŽÛI¦ -6Œr5ˆ¶Övõ”SÚ„PõÇh0ÌW!¾qµt¾OÉ ˆ6îÖK·âY?œ‹ÑŽP>¦Œ¹PZröòþ&¶ ‰L…kaDŽ§ -aØC:p:D@ÁÜðã[ÌšSÑœ€·o_\Ä„&!õ²J3qÛнσ[>,"ÃñL׃ 1†ä€§`\õí [ÛIŒTwJëcRClemƤv*ÛPœÉêêOåÁi—“l!N¢=ÎÚðcFëÙ’R™ÊÎ(€ q|?xuqðª8ù*ß¹@øJ“HÑcÌ9k.’\#Î8`ÿ<ðQi3‡!DR)}©rÆÙ‡¸Üƒ˜b×!¶LÉ¡„á,!º@šûÐjôƉ\ÚÍ—ûOÞ“Š‡ˆ®Ö{꽞}×}øÞ»(®8¹eGÓ³Û`*—`L -¶°§4VÎøÚ¾TÜ“ pWÀ³ ÜNëZŸÊµz³«ƒ‹d®yßPE*-Εê>GøN·€ã┉¥‹˜‹ ÜF4 üj!DèãD1C(L%g1Z”ÔÀ˜˜Ô£‰êqÖ<J‘¤Øž\z?I�ò�‰ç"|‹TÇ©l=ŽF—T/£uI¡½;´Æ¨¹t TÕÊ¡/’¡¥’R7š2BX~;)¯˜ªKÅ}”-¯ûÑ¥cY—Ô„:L‰žÊ†P…5Æw©AÛ`®dºœ±wq¹Ã˜3TîQV‡¹Òr+B‡ l,U�f!¥ˆ˜qâØxÓù!âí�µá'"°––«¥„¦/L‚Šá‹pAHY߆?ûÃö½Ï}Ÿm¢AÔ¤s}Îœà‚»¢üÑ4`/ÎU#˜Nå£wä1Y¥]h®,ï„7ûPº€‹5ÞžÄYƒ«”Òaô1´Õò¼<XeŒŽæIµ`U@¸²·ÃL#JUX©!ÙÓ�; óCÎZ8£ëÑêSm÷6B@s°¬ÑtyÄó>X":ÄÔ}ª4ÏÕΓoùz®2Ç$—ÑÚ¤äQr“Öº¹êR®,PÁÉÚƒåËŸ'—ß:ÓKÅ;e -@'0ˆÛ;Ÿ½ÝŒÒ”ì'…þuiöÚ<¥ŒqŒ)IάüÖl> -$$ÅÙŸ¾m¼vç_Ì/>²Ö,É�V‰\#%”¶!¶Ø=ú¶}ð5¹•ê«$i'IQj„Ö¾«ã0¦šÖæis_,iîqœ”XÕ“«Ç\q ø�ôÜ8¸Õ§™Â¬ÔÎj½®Rr€³¦¼½GhS?¬†E2ƒƒk,mЯµÖ9™ŸâÚÎ4À§½Óœ5ÙŒr1ÂŽ ùUÊXËleEj³0jê¥ùÙÕ÷!DYóë¡4”©�¡ÞÙèò/ÀÚÏ_úû¿ÿg{GkAf'™#ÔµøÊ;ýÁ™ß�å I¯/¶Ã™µ-,A[aÜúÑ›ÙâÒá#‰ìÙ`~3€�vÝ2›ñl*7HÛ‡Zçù½µèúv2ŽÉ`Š0¤ÅÑ|/’j$ef -¥þÐ綣lΰ•*' §`ÊB3\îÒùi±÷ªyüËrq¨·Žî# *µ¾—%GõhÕsÆÏDgFÈ^Jò²ö¾Ñ½2{W¼µ€¹Ú,�ÜL!œƒò5Béêâ[icVŸ^×Æç BËZÎ1Z?%6ß3Î"5ÇË—û—ßg -ƒ$c‚gïšðäEãáûtù@²ú£Ý‹Ÿ~ùOu² -*¶õÎeyúGwïÕ9…èüFˆD2œvb” ¥�¡JÇÛ{3:ý`õŸ’jDgiô—€*?µ/„Ò!ŽÄòRtkþ¤?‰Ëå¾R›Ö0L“i—UÇjípïñ»ƒó÷8hƒ„ÐtÇ7½“™ò -Z8W¾ýðO§õlÏzýã¯ßüô7?ÿkxþ.LADòj÷Ó_ÿ›-׃l·cWi>«-¾ž=þTì_a™bkviº{2ˆ©(ˆžÚyÿäGwñEs÷K&×<×½SÐXB°B«}ÚœáÊáÛfû¢½÷e7AUVÝ¥(K«]˜PB}±º½úæ7\t”-÷èÒ… šmÁ™z‚´IÁ+®�¥ø¨@\â#±²§y'vïÐÒ ÍÒ¼¹{½fîâ\Í:"µ8ˆk$Óõ~Z·‡¯nþ,æ[¿ûýƒ„5oVæ7G׿Úǘpõæo²= ‚BXìGq#–2Á,‚sTÝ,_ü6¿øQP›V7õñû?Çe¶Û6b…á· Éd2^#˵‘Ú¸‰›HIER%R‹µï›cÉò’x·'b7ÉÌ “L‘¢h1½Pô¦@¡Ó£º�]ç|ÿ÷g)©È¥Zježi¾È´N„Â$ÈåRÖ8U=BÂ*>µœ¤áaK°K”Ò€€ÿ¸€sI4_$o´Á©~Šò…h¢Ú;øÀg;°pGËs›Þ\ýzpû·|ÿŠWšVãÀh‘RY4&éöEÔœ§ÊûµéÛñù/b¡¯Ïw†·ËqÑ9„Ê@p{¨´—.’Ê�cM³bï$(ZÏ0‰”[„Ò÷Ç€tç¦2û;I%;Lv·6{×:þE¬ž»˜ÒšGÚôFÉxY®ÌV=ÁP¬à‰P®*šs>ÿ<«‚s‚°¹B --£*–½b'œF´1—ncÂ6Ê*…!)Y~Fe´–Ú9Í©˜ŸÄ¬´!&mÀ¨B®ÓzŸ5æ!y„':0%Zi¯9I2Ïv.w0¿`…Ä2(– öF‡(´Ö§7§ÿ\|6ÇoSõóˆ\LjäìèÝÍ¿mü|ªí\§;WzûLm_رäùëßšÃsp¤¥éƒ9¼S7¹þ½©<ÙÄAól>¢ö(mˆ§ú¨P¡S]H„hnÿñJÀîA:{)ãñ*òýº6mÛ—ôÑÅŸheÝN|÷hb8 ªé¥ÝxvÝÉm"âàðgQڡ—)]ÈGWXùã¢S}H¸å ¥vúÇñ|ÇéHÑLšû½ûîâ£ÞxI§a>c¶²Ý‹5áŠáx9n.2Í×±ÒÉZð¹1.˜àád¬BÉMÁZpÖ<¸<CÎï•wh ò(¦ÖŽã…ÝR÷dÿìS}À“ÝXÈâxn°ùëîù—Öþ‡½¥vLKé§÷‹ÓŸ¶1ñ™ð•I;b~Ç‹'û^*ŸÈtNßÿ•O·œbnŠ§†¤>M6.§W_k{÷¼ÒÝ=þTœÜú i“@ràæk¸2ŒãTíàfõ³·_˃kX6GPF(ÃM›(gÏá±ÓåÅp~]^"”éãÊÀ 4¾HrÍÝ6Ý¡¸˜íÅJ3ÞX›où5©8‡Ø|"Æå…ü^¬üR¬œéí;ø‚ÇHöåë/{gK÷³ûbn<i«V_ò™1“¬ƒÁ¢¤Z]7'×bº TCÙIµk´wòSv}ËÅþeuöžÎNP©ŽŠUÐ׃³OªÑÝrRa€@ux‡õ£äŽ—¯ â“gd˜Ëoû£wÑ?ÿ³¹ÿI(‰¥ƒ¨µïãêO6)‚·ŠŒÊÚÝ&Œž`:ÀW1º`w‰žºm..È,øÑšêÆ”1¦B&ÇŒ:†¸\±ãpPPC 5x ªÓšƒ´¡"‚ka©Êê}Z®£lÎîcC´fœÚ†cE-è#þˆ!d¡ƒ4ÿèQÁcz¢VÏCñB¨+ Õ|íò©d['Åé5¾mÎ>Öf?ëÝW~©èHùΩO!‰ˆYÌ)Ųý¸1ös9wPâ“%QµRVÏöÀýP.æ´x¶ÃÈ•l -iË™ö@ÔB‰jDrú˜×¬^ßFy2š;~õ—þég:=â2£˜9&¤ÁæZ£‹Úä•3¬‚çK•p*±rRF•_Ù&ãJuvúA)M¾{êDŸ›E‹‡´>Œ¨]Qm¥éo_ÿùð§oKÐù`æDjlNú—ÏŒïŒ9;zûõ÷ÿ¨ÅÝU—àá.® ŸTó¦vôE,-¶¼<»¬E 7¾Ü7x$¤"fTë ï‡wb¦]í1‰:ª)Á‚Vfý,G©ò)–©ÜóE²fó¤<|Íë#�‚Гù‘ 6<¸Löyë(j-ØÜó€P±¹y¨ bf€„”60@ À0ë²Æ—yÈŒ+H×fõ½´ðh[sF<”âÍŒ¢j‡¬U[È`E½ãÄ’?nâWý‰+[ø)efJñ,ÈXIc”ÈN¶ÝÑ ;µîà‡!ÀWXuìÄ pZ¡Â xIÞ´Bv;¤mB‰ÆC\vÝEclVÈOØô€QzÊÎ…\»ró溛Ó&”æš›…7…šæcŒ¸9'¤˜äœ>^+ï§j‡|nˆ'ê¨P°²“ЄÌH2Ÿ/ᔃ¼¬˜Þ•óC&ÕXqR(!³©gˆR B4¡iB|PJÇ1Üdú™g©~¾¸†àA!Íåú�Àâè.Û{½Š6'NEsFûØEéðO»W¨‚V]d½¾ÀHÃõLÞ+AÒ ¨¢Ù{³{É$[Tz¼áû~£ã5.?µ¡À Z®(ùn¶8ž,nãé´6<Þ¥äkBÍ Äš ŒÜ*uÏ“;ÛBeRßw®#Ƹ„Ë°PkOßhÖxÓÍÙ¼qž‘E}ïC¡s®•ç ]™Òäó×[§6¿ÉíB»¬ýøίX¢Ö<üöïÿ^}øˆ½0 Š¬þ<^>Žæ¦t¢FGÉünvþÙMeìÁ¸O{™"o¡ÜÎ90ETjÅÞK7©mô-¿ºîäWí4F§“Ö¤2¾tøEŒÔp¶��‘«ô/Üa}e‹z²î§8³Ú¿FÃúžx~Xp¦á*ÿGq¹ö¶mžaø߬i˲$KIQ<ŸI‰GI$%’:ŸO¶dYVìı7Ž;ðÚµ)ºb::ìlÿl}“@¼Ôû<÷}]½Îœald{‹þû¿·Ÿÿöbý6Ie¨:!õÜ袽Öá‚”@ V´£l£m:ügì9ªt�³öµ¿¨�f�ò„¥ÜgôrŒK]¸7ƒ‹¯r°Ü˲”Ò‚$!Km§wAiqó -‚Çêauxc 1Uª¯ÌÞ•7ûÜ9ÿåüûE'¸èófÆ 8¥ÜPZ“š¤Ú†EÇò‡ÀuiÂÀùzš°2E‹¦ -ÎÄêIQoÃÃÏß•¥†€² ÒdÕÈï^.o~C˜*)ÕegȨ-€7§½ÎEhg]É飬›Be®Ü²‚Yq]ö§¯ÒüË´pˆ`7%ÿ˜ä]F´µJßëï¦çƒÝ“ÛÛ!” ”"»ó4®d9Ø#:œý°¼þÂQ±¶$;Áä4K[à‰ŸÆ¢ÔQ‚îR¸ž§¬Þúcà}}Œ©B{Ý«hz_ëÝfÉZžöÍæ%oÒD9GYð{×ÑúòîïÝÕ]Q¬©•)@KkyoÄçççÀ”¨?ÿ®Ñ½€l”+#=ÜúãÛáî«Ó¿9"«ÉœlÕf½“„Ðr‹·§RmM—†fxÖ\Ü;ѦÀ¸ëדÅ5#Us„Ž5ð¬ÁîÇéå/„Búa%š(ÖO!ZŽ°R¨†âŽ”jÑŒ¼ƒ¬,¹»óáùÛ#>yH¢˜&HUºÔ'µ&ÆE)„[V+³jÿ=°„R[FË'Ð1Ù;Ée„(1j7¢yP0pÉúü±½þssý…sFûG,\-˜°î“ Ns[]SZ(ÛÝhqWŠÏôpGk«¿ý&ø`j}•ÁK¬Þc™à.h}€ò ð&ØÐæøÊíìr\Ð:yÚƒ*‘ܱèÎ0> µ¶ê-ûgOYÊ i/¿rí‰RYØñּ˒_nËV‚¨@x>ó$1Ϻ„T!„ŠéM ’ʳÉÈq{)ep.¸Jnð‚³<~7ßÞ#ŒEé1 ¬µa@߸R7*ŠÕrâ•îMÌú„á¢jçˆJcp ,q6 -l-ƒ´Ò†]À¤Ö!ª²Jcwû+¬ê‹}<ƒéy¦ªºÓáæ§ÞéÏBuóâOæuدƒ¬šÁ´[”H³Çv¼“+SÉhVš+Z©áœ‰06.F’31§ªwƒ†×=óŸë *3Òœ`&Fû‚1–ì)F»‚·Ž?6Žïq!*!h‚j›×£ù[^©IfìDÇÁð²·}Æ7]/“L2§²bÄIñ‹½âAF¢õŽÕ¼ˆŸôÚ<Oi¾ÀzN|®Uß¼Ìï% /éö>ìÕá½½SL)DƒÕFm¢ÏB -é=HÑS‡ñcõn® ºñ™Ó~ejƗЀ9ÞO“îaN* -Õ<cA»Õg÷Ññ#²hMžÍèðå8¿Ÿ0¾‚p."TX»¿½ûýæ‡ÿtw?‹õ 8…žB¦åyÿ0¯e)㲿>ÿð×Áú®\_ô6P¸Â„AʱcàùµÑÇøô'ByÕç0'¤„z–rÀnd÷XÌI¹±—¢H¥É–¢;?üˆ%q RºÞ½ÔÝÑ·‰Ü‹ý£$Â'5Ϩçø ƒkëVü™ju9³§°Jr}®—gk‡yF«5º¨4s¤š§tÑÂ…¸Üxx§pò}D~•aÚ„–ý4ŸÂÊ(ƒšU;×áø®Ö}õQdkÍÉUÙ›$óRÓ2ƒPZ0ÎP¯„ÒL!ühyÛè_äH3W4@µÒh)‘•8½eù‹d–yuX(ð5à(âù•ƒ,UI &l®ð4KýÓ/ç؃wðGAÁ¥Q=‘¦)Ö2ª˜ù,V*Š1oŽhË•ÚÊÌb«xó³;?ž1’-M¨~Xs3Ü ->\c?Y<HsµxM¯^e¸dVÞOqP”Ú3‚MÉ[¡E+ŠÙc”ˆ ÜÃ#tLrzô3™@D{E)‚æI -B@㨬Hë¤ Äs¤ä�ØFñuFëIµM)¾«ÇYºtgqΊæK`iÀËáX¨¹úB—‡)LeõÈmmÁY–oÿ²¾ùjuvСÅmw÷¤Fg/³<%7íøh•ê’w†’Ý5ýygõ¡œCDÒý{xçO> -Î^ãyhÉçµ£ôãÖÔwýÓ§Öâ^q§Ð€ûG<£v@¾(Ô¯T‚3À-X4”ñ`’W²RªoËÇ`ù}tòdt? B3]ÐÚ:þT -VP”¬=¥ŸGt)¹3R‰0ÖñâåûÇß‹r”@T\jÕ.x ½ãà -ÁøŠ=gõ>|”êŠT;¯2ü‹½Å7ÂáEϼ]´qºÊ—º„f(7‘“¢>ÝÜU;›QRÜIµ ˆ+ÙJî%Ž¤oöнCR,Å/pRô ¥›Ç~ýßøê7è2È Ž2½2ü98DeÕ �aÞ89† MdVmÐJœB hð?í‰ÿ“\¦½iäw'•Ún.Ç`®æ¾oæ¾€a˜°9l0ƱÁGb;^GYÇNÚ¤ÚªŽ”íöÉJû¤û`ß`ÞJ<@¤aþó=>ߺW¹pËJ–bÇ¢!lÀ§XåŸ<¯ÿõI¥T“X±+Y—Ku„]Áì:Àµˆ2íB™ã¤“ƒR•,Èb‰gµˆ Áu‚à½Ý3ÖÚÅ"”Ç™#X‘ >bŒ(ÜÏ.‚µ»¬Öó-¦A{�T¬žÐzªFK+;½)¥v”i4iŠ·Tg»2>¸ß½úipòcCJ¡7iÑ2½Ô -rÝJî¶LË¿þ-Yfü*öto";Æ:¼=I÷7_~¿úûïùÑWHŒ4ìö\ ç”’€öDgÎALï¬Þ.tê¸b“V�…5íÎÇ›5µ‚[‚7‹ç÷VÿT°}8ðlÕàC¨KhI0ýà®(©£»ùáõ7èwhsÚ™ðíW´½‹ftü©·{E+±×÷öß‹ÞBV�Œ9RýioüfrtÚæ´¾Ÿ_�|zÙ‰- )…j+TPËUšÊ¸˜ÐÃÅČל6RݹhN*¸ã&kÕ™@ìƒ)m¨vÖîöu{úŽÑû8'w¶_}œ1.tIu¸…yðDa“B›WãÍ-B5³ Y´‚±Û_ÁÛjª[5N·2ËŸÔ0AºÝ’5ÃblT§üÍŠP¨pz0»*Îwq)GÀ²€3,×ù*fGã =†ýé/¥—e¾Š‚À¤áÖà¢l”éxg½·ú=øtƒÜ,qeDeÄ”æ;Äu™y²Q¯6õ„¿(â[UºI€m¤¾CcÖžÆò<XÂ4ÞÁÎïóã¥R¦Ý"j‘rŽ&‚+´ÒîïÞßþšýKðöJÍ°+:,€œÑ°l%kXR¼»ÏCV É ø«µeo¬øØh0ådÅw¤hÙjÏh9DY‡5wüÁÉÑÕ×÷?kÉBù¬Ôáõ~“u0>„†ÊƒÂ½%BuL7œmAW’ Úxk’<Q+Y™ñ1 ·ÐJ’é9£õê´Ëýa–Þþ]¸w/Ë&ãªNÖ\¨án•²äè [ýcÿíOé«/ýƒ‚µ'Å“×UÒå¬Yg÷îÕõ·×w¿ì^|uç(eÝùñåÝó foAiâäÕ…¢ÂØíÙàào)%¯¢fp9}DH9<Îwš”Û½Mç?ˆáBpö€‚@$EDâ´Â ØŒ5ÿg`Bé7ù!íÍ -[(3‚‰ZÄ+a{pªEx›(ãs!„ðó"Nƒö‹5™à"Ù³êô€ÒŽîN0®]�˜Q¹R>Ü<Ëj±—Áñ"tøç§5�:éo–¥bݨÑ!ÂÀjÀP²¢ý:a×1‹à:MÂÃÙΈ¶ÌÁ#:¤åpû»—h¡Ê‚H8=…†oOßÿzrûÛèü?z¼.£:%ª;‚Ry0þR½Ñ]¾|(cJ`['fzB8û/ÉhÑ1˜Þ@é7Y‹RÊ1Øß9úâ`%É›u -=%˜““b’VÌ,Ù»î¢%®¦Õ,§ÀKìøÀHÏ%Ñä - -oMaÕD )uðÈjj¥—fvÍ;´Ò+V©§›µ&c‹Ö´Ü0j¨Åª™îï¥X°ž¢)$9Ð=Ø&´>àݹ“_E“[Ñ?"ä~ UÊ þøâ!ž^òfŽÊ½Ó©s] =˜$ð¤Ø‰v®Òåýðি{´Ycƒ&Yá<œ¶‚I±Æ!¸ cŠRZåyÞ(sV8íï^"$_ª“¶`MFG_ÆëÑžj2-ÇëëÀ:ã“JÎh;f¼2z+-Øo0a±&üICŸ•Ù -áâR(˜SšóyÑ7Ý|vöIo/ʤ÷¬,¥#L§ÁõŒä¬ÒÔ‹%ÒòÇÝ!ÜÝ…Øyº=/M&.m2ÁË -2ž†ãëhüŽm I±WÁ¬Ô„ÐcUˆ\“Wr->uÆo7×nv©&*‚¬äíäÕV™üîYåéŒáZˆë”Õ¤íBUÄ„¸JÚMÖc Õ[ýhxžíßdïò宀))‘ Z)°}wònzö-?úg{öQï'’϶bLôe¿Õ»àüµÚ¾ŒÇóùG³sX%4R -�ç(¹M<N3ؘ‘ìí¿ù¶ºý/tJ±."˜* ü€³ÇJokƒpô¾·øÌ´F8ë ÷^{É¢Æxp¤sê0ÿ�ÓƒT·T‹7·%÷q£•q»Nû�½^~>>{@ÙÎ#ÃÀY))©f€÷�ŒšÆ6t‹ô¼“/n¿ÿ™h7ª"€\‚Úfƒ¶%g×J¯×¿Ì.ÿýÇ¿åÌpÎãñ9Á¹äj{mæßm’Ê�ŒeÁµrÍ*ü˪@Å`Õ¼‡)2N±Æ6 ]2’.£ŒqB:‚>[cVË0Ƈ˜{€¿@!%ì‘‚Üdüó¢@Hzê÷ÖÁà -*e¢&a’Œ¥š‰fÇ84é NÃlÞö&eÏŠl©ÊÒœÍT!d)Ī;Ó‚œmo–…ÿq\f»#g~—éxlk±$’â"îdq§¸ˆ”(S¢6K–,ïK»Û=žžÎ$H‚Î$`ä*@.r1›<[Ž† ¥bÕÎùÎÁOüjºyÑìQ[—є䶿ùZÞþŽ.ŽååòúÇZÇüæ[®FYM>œµž?÷O?0œwXãüøìòéÏG5ñ›ºÖ±d÷,œ<óêk‘B8n¶ †?[Yq)‘+‡¸Üd|‡ÌW¨À¼l›TwzXqz�FRCÎV¶•ÝÒJwþøɆ§åz°å5˜g•9ëpò¢#žôüµ0ÆçF¸ÊæÏæ`ßìEMÖU¬2.ïœô|P½ÇĪñN7¬5i¡7i9Ytgø˜] øTÿ\"•D¦¨]@)&t‡Uáê™—Ý‘¶‡r;B¤B˜zŠÞJyøGÉ…¢G-Á«S2FÈð§0^Ù9U£p•¿:dSðOd´Í[ðÆ)C’½nI´ž]þ˜-?Úƒlä¨c�x´ž¶˜Ö‡‘N�˜Wo©ØR›s|Z¸s‡o›\H‹1A&#+˜vÛsx-횢- -@ Õ3ÆZ¸¦$˜‘í¹“ßÛ?ä‹ŒŒ€“)ƾ¹ÿ]9¿”ˆá=4YQÈÿ:”dèÞ~ÿòï_þëÅU‹u[¬OI™ßôŒRPRš3;¬Þ/ö$\�íºbk1 Js¦Š9¤Ôؽ¿Ó£½@–ŽÑ¢4ªk8AiÕ¯Ž…ÆC±OŸ’ÅG+¨3á›Cᄲ‰·³«N×INï(zpΈ9`£9cÒ_¦Ó{Ý9UH.éI·ðr$™—ž‡Åm:}ô‡{;^±y”A$`éÎŒDçV²ÖüÄEú` ìK4&’Y’x”OëwÝ~üGX}èª1‰æ¸D^ËpÂ]`)î+?¤³'/ÛEÅ-Šf"†L1 AõÉ?“ÁU¯¬ôþ½•U†˜™F×cÐÚêÍŽë|»£pÂѽMϨš\Ô‘LÍxßÕË®24“k%¼Ð㫶<8h©-¥ÅÛ†7멉¢'áhoå·ÞøIO¯Y{z"x´Ã`Í` ƒø£‡tñCR}Ø¿ÿ9½ðúÀñ'ýáÖ×dLV+ÞY<}Y?þ…îé•–»bŸ|ü«##Ü)þdèîQÖê-…â=É*�Q胬1BÕE¾;Ùm4yá?êè Æ‚regêåWÁø±É<Û©ÆÓGÃ⺩® ÖípN«cœP„ãÝ8™Og÷«ów-Z†Ñ¼2·×( Ê|sØáä›ÇmÖO•”X_2'Š=e¥ÁQ]88¤43ÞÓRÚf}š!¤X—bA ;ÔZ†éΫÝçR‚?k-[PǪ³äÔqMŠêîïÿüOVÞ#›ŠœŸN‰€Çˆ]ÙuX‡â}ÉÈ«€ÊÌpêg+^©N‰±O&ÏvÈ8¹ÿZ|ÌþÖ•|QÈö˜3�™) *È.WÅöû|ýb¥É+.k�A1½P³g’½@7q²KŒH4ZŠ2mߟ} ªÜñwJ°–í-;%B\Ò‡ñäcP¼Xñ5"B“Ãã¦(ˆ}/‡nzãa&;¬ìàü·˜+âO¢üFÊ¥‚Žf¢sOañˆÓÓÁÕÓoõŒW(á^wV² ‹+X5jкãò Ä‹J°SÞÃÅñ’cosD&¹,%k&[`¸N9Ín ‘Y0z°£sdÅ`f�$jã«Åñnƒv$g™>'Õ;Ùùã¿n?ý,ºg=s*zKF68M"“ßóÝÑêoA‚#jŽùã†Jü¥ §X_Ôr´~vÓÏ®t»j0ÈbÍ:¸Äz“kœÈh‚¼Ya‡¦?׃5ÕKŽÒââ3:ãqSotÌZÛb8_3rô ͮ޲ÇÚ% ±Ù±ð]øÉô–¿öâmOËŽO¤&mœÐ^Ysç‚:{G“ëÍÕû§<5¸$0JNI)l¤Ž(£F0LâŸÅ僕lD3§%¯ÍŠ#Š•!¼²³/ýÉGÅ]éîB†Æ9ï !ÖÚ#&¢9–¬’‘}Aï÷ôªDb5¡‹¶añÖÅ„ðhR„™é>(nÞ;éDŠ1ëOžq˜Š»Ì‚$› ¸Aa‘¼yƒ6ÁÃù ˜0l=5UIáÆ«lò® ŠÆz{´$=mUÞL÷æÈDüWs+J(!ÊV¿öÆïIz÷H+x“au×<@Z¿|ç>Ëþ\$%%ÅG”JK >¦xE²ÓPb.hcÌO££S¤“Å @[l`Æ×XÜÉŸüñ[Õ;Ã-S‚|jA!Hs€·?y[^)<!–$ßüô·_nßEI ·p#úg<)Á·°Ä–j’é}“±›4A÷l÷=kiçÏaùFȶ'»Ëßr‚Aj Ñ«]‹Y4ÿtöø'0ÆQU }%…œQÀÞ€«Ã¦ÑUKˆ6XoýrÉ<Å©*¤P¡OËYpúœkÑ…Te}A)œäÃÌöà’ŽWÓ7‡Ý&ípêÐꯑn8ðn/9nè -U묫æj¸ƒŠñôÜeKJZ|€7ÂØ€‹ý†·vóG‘ÌXy€1S¼ÊIö£ÿ‘\fÍm[wÿ(}H*‰w€Ø/–‹ \À)ŠµY¶¬Ê¶,y«ë¤ÆdÚi:é´/Ísûú–ïÕCw†o$»üÏ9¿sü®1ºãQdU¹ËiÃT…&.B€Ã8c³±P¬^„çW•Ü¨ˆ&w€.¬½QRå5Ùh»4šûÙÅ`ý>™¿Û`rtg@ÝA~3Ù¾g¯º9ñJ·û #@©ít»M½¶áu0ÆÍÀóÄêãe†"Ù£ÎÖ çªÕ§�6{‚¢W×z²;b”¶iø#¬3èžï¢6\òÐ~0ó;[Îè0jb'gñü!ÝÒø‚ø+FNY)F=dpòRKVFtfƒÇÚíS°Ü¯¾ªÀ�1®ÎŸÄu¡j{8½øfvù{ÁÌêj”ŒžC`BPFPÑ=?ùfóúo^ï»Ã©¢80jZ•èÑ!ã‰5gtÖ•]¯Œ¡>飃 -RÐä,D3…’‚Q#©`MoåõŸ‚~‹u+_V13(tp3ܨþ©bÍ%:¶š[êŽó%¹XÑëb´w(BGj¸Œ§÷ÉýÓ?ÿö¯ÿíÌ÷ó -ˇøäKún«f‰ŒM»‹‡ìä.ŠŒs|ù óÀÊibÊÒA]^½üá/ÿú¥FbNÇÆ3Å9jôïhcGà¬c`Ø…Öâh%pþæŽñXâOKb,;K«um'×%!W£‚±jKÛÇ[‰ö44µ¨ëVM‰;Jfw4ÞzŸ‘Ðbu mJCÒbÚœº½³£ëï¼þo¡7Äìfjû=ÝëóF—Fëdö“WSNn (™Þ°&ZùR tÊJÝ:¬?Àô íãVßò†,ï0œ«Ðž“œF“Wþà¹@»]Ć?fIJE`áô®À^ç\0{ h³µjÍ_¡?*îBqÑ1—´±EwcE|Ž¤KçoHp¤¸##^çøÆW9žC+œU9»\ÓÊU‚÷Zá²³x�L"è‘žÝù3³9i'è‘Ý^<¬_þpùæ§Öô¼±¾þƒŸ@zNç‚„KÙš¨æPÄH>Äb†3;FÂZ˜“šû%s$[#Ô‡¯÷™\‰”õCÆ…ÖµòaRcx“¬Êy^r¥ØG¢ÞEÌ•Yk/WÛÏ×16D¢Bq£ÇÓ7ÿ]ÿ©¿ýŸÝë¯÷E€–¤¥û‡+5ÑaÃÞU¶|‹‚‰x…í°J²¹ùv¯vl¦öôÞíôæû÷þ÷çŸþóæÛ@ ŠiŽÀÉ0™:IýäÔŠÖFóXñÆe>,ÔƒsZF\�Ò!iEn -V?æ)Ʋ¾† zL(bI[i7joG'Ä›U yg„^V•š2g©ºÇ8[Éšàˆˆ™éÁ”ÓÓÌ8óîÉûÎæ‚'�Ȩ.¨BŒÜàH‹UÚEw8³¢ ò÷ ¬ªŠjõ$£¿+Îχ/’£Ä•îEYÖø<¯·dw Àö›k3>Ó«/-Ì Íî±ú±½þ „KÁBøJvz’ÝJ!§wä¼»ùM 0–+É%ÆB›@Tx%ˆ3jt&¹!nm/Ç•ª*FºÂ¢ÖVpbî –sÓcÞHhc’΃þ]=±“oõ`•N¼LÇOk’_'-¯µnÀZ�lô/`…sþ ó_ïÕ@ïVsIýEMéæ÷±«´"{EdÐU¬>Š\Bó@”Ã-TŒ -ë¸+EÔU)B9RÍ©Ûº¨J1Oœt ©ae=WqycJófï´ÙÛ*8Æ6Ï×ì|Í‘í¡CïAç -^Æ{Ý›°sD¶UXkçWÖŒ8stCÖɳÒÖ‰V˜öæìžö®{^`ÎÎaÍfÄÀ`´®´x«'¸˜0Ø•Ó:,I0„0yN멈Wš ZÌH§†Üa¿(,‚‘±$E•“i¿¿ú°}ûsvý=ð©«µîŽçÝËN×ýɽ‘lgÄ™ƒ²–ë+F²ÑKÆ„6žXÉ—ÝŠùb”%ÕuæñøžFgéñt¤«´i0jiwñ*Y¼ãÌIENàÕf´N'w~{Í« Ñh[Ñjõô»óûõè¸BâŠbðŒæIEŠ°fŇƒ—ÍÉ£™\¡C”¤K-Ý%i¸ÂëX5#áVtŽ�{v0-³&²™-ž|HVr°©kX§‹Á0| -7‹:ã9uóqxö Ž°Î1»qÊ•ÔRÍe…ÄŠ–‚ž”êV®¨«q�°ÜËñ ¥ãS¸ßê±JZ¹Š†«‰Ð º’]dmÕÞ!Ù10„otqƒ,‚Æhþõ <Û¡£9nžÓæz¿¨¡6¶Æ/£Ék'=GÉß櫤È:ÍjŒ³wÀ{’ÉíÅÃ÷íÕèÌëZc©+mXÁýj3Þ¶—ïÇŸë::ÝT²ŽD:.KQžµS6zÝéËùÕ7?&«O>ÌUÍÝhÉ œŠ¥oOŒÖ¥×»ñ³g(°¬ÿƒAElŠÆÀŽ¯tŽ«Ä0#} -¬…VU•€(Å›Köä‹ÆA²AóB jÝôI:yå´6Äîq$Ѓq0¸Ãœ$ß-^ü=œ>T¥…팓C»qvžïȈ¶4>£á‰ýO€�ƒÑ5Ñ endstream endobj 22 0 obj <</Filter[/FlateDecode]/Length 36910>>stream -H‰–Yo×Ç¿‰´‰%q}¿³ïgá‡Ã}I¦dSŽ-9®íÆqƒ" Z'@òT´úŠ~¿ž¼÷¸çžÿò#/y9¦¯CÛmÊ1ÂMXß[é^ñf¢9áõ‘oegL œV*5¸,·ß÷7õøŠ×kŲUYñ"®åúQÏöÙúÝøö‡úø“í1¡'胴>åË÷‚³¡Õ±â.doÊZŽ;´ÊÈ©ïËí§ý7ÿ4Šç¸ÐcPΫ¥æÎU¤øUPßèéQ´Ö‚>Áù–³i4q`]Ùè[ÉÊÎöfrcÄÍ]jö¼M¹c|åð ÷Kf…Ü©mg‰sÑYSøÃSÜ°GÈQRJ¢Lëm³ÙÃ`ýÞW]F£E'ì{Õí—ç,#öXµèˆ=F›Šúˆä£‹ŽØÀUdÏÌÞµTÚRb‰Q¡œä¦Ëz0¾I+CJ©‘5Á¸^‹°Î›¢ öt§’ìŠ1†(¾*o~Ú¼ú-™¼1ý•¤•vo=¹ùίnoÕ¢] -•jx°²#ô;¬×¢LQ-óᱜžŠù%Ü·¨nî²£ô/µ+Œ9²ŠS4{´·R°a_ÔÇø˜”Ž’KÉšiáŽ7fpnf›¶i9Q¼©7<9õK¿þZ–¢1 ¤„‘3N-õðÒˆv‚1ÔùîO‘]R ÆëþúíòåßßþGÏ Ê9ïª]J·ƒ‘bU¤ti›ÕNñÜ+NV¼ob¨«¼œ’B(¹âOH9åÚÉnACX–"V¯¿†³“_1F-X5¾Ö£KÅ©w¨£ :æ›7ûÇ_·¿³GZãb.@2Es Zs=¾é_9Å3ÖuQÜ¢tNN¼tVG·xÆ9ÆÉîÒËaèŽÑ -5®Þ©á%ÎÅ8w¹9+¸‘û`z9%J†Ï‚òÖÊïxµ&ø©QßI¯½ìªK»¢V¸ý39ÎŒ’ú ̾ÀZˆ-{BrD”‘sèQñ_Ü(ér®—îªÅ£ož|Ñ"yßÍþøµ‘Ÿo‰óÑYCìÐnPÜÁ’"RHŒð`{ј:ñµïš„Õ&LNÎ)13ƆŒ>^°R*J‰€RdÕFºgoòÍŸÃþµjO%}(¨yox=¿~OóA£«bbL©¥è/»RÖ¤=LJ )S §ôx-÷w+™ÕŸu¹ðœÐXsÈÛZàj&¸³pú§Ééñú“dÏ P \§Pîçwåê/zvâ9.åqjÁ©¤ùK%:€ŒtЛKF…±.l -±”ìIoüRñ—¸ØÃø Þ½l_é”wjÞ»8-SìA—³;´a“ã´I»CyÐnpAûÉðN°K#¬wßÛÅ5%÷s$i’Æ…f²Uü!&$J9³ÖÓ+§<©Áš” !lmF37ŸÑˆ3JlÆÇŸýვÃ\x§E+Þ¨G)™W÷¯?/Ÿÿ{ÝHjnÅ›rûAtæP(BÈ;|¢Åûj÷m4|†1N»Œ”C8åh/z+LÌ›”Ó$4ÙùŽ’Ù߈ÎFn¦ÇÏN~”Ì‘ Ú¤¥˜#Ý] -êV -Z.‘µF64ñ�!ùãÛ¡Lŵ¯Iy¬1N7oýŇdùêó´…ž6ENíëáBr¦„\À ²·¶³;«·G清ëçÄ«@YSBH€®j©h œÐ#@UÒf•¾hŽÛ„ÓÂMœK ±Pœ©ŸmE£$…è¬%uH^À” Œ#Ø «Ÿ3zuÁ¸]9í )—ÐbÉZûÅJˆ‘5TȤÍÄ ÌÁ¨˜F¥Ý�y8»¦µùsP£X}˜ßÿìOT´hŸ@)„„W3NÀ•ð™–¼�*"gÌ€zæ�Y#¿<-O¿†Ó%Þ‚Ë-Ê20ê°E¹€bÁž‡õÛþú“S\Ó:`Т¥€&ºBN›¤†‹‰™ÕpùªÉŸ·eH&/÷i)‡ŸBécr.:S«¸Üùn°J±ÆD‚6€À@nE{Ô¯9svNš�a`‚[Þ‡Ã{/ß™ñœUb'œÄÅ„\Ö-6:ÇmX P#»\ðZŒ”W‹»ïŸÃÑ‹6ã´ƒàC'Ú¤£°8ìåÇ°ºª{;»nú_µqÚ‘)L'ä¾Ò;ãýíZ¼A!<k‰€Õ™Iæ烋Ž -–f!z¸"Å�’Ž_‚/gmE8*Îp«ÃD²³r¡ ½Ëdt’½2UlÒ bÞXæ‹÷Éè9-Æ´×÷»}ÿïÞô„ºèè¿Óõø]6lR®ì¾þë‡w¿ˆþ¦AØÍŽ®¸Ëlüò>yÒøò)P=ükñò;ÙIšƒ²7î0n› à¯oí¢éLJÿ畯”pÓEx/JÉèSÞ\Bw¹ô³½ÔøÿÙ-“Þ6’+�߃ð/Œe‹K7{ß÷½Én6ÙÜI‘IÑ’(›’µÆvâI&Ì�“`N9Ï1?%?)y”3“IN9HÁ¨O¢zQUõû^½.–ì‘BL -©¬ƒÆv|ö[3ßÔä$^œ=üIpFJ0•Â µßÃLdwîdgPE°—àŽ-»ë/§_%ã{˜_ØÉFÇo§½mÐÙjçÏs´nòÉ/¿¬°A]l˜u{ñÖ -1˜V•&|™šîˆ…lÓ¼b’ÑIw£_YésJNžQ&§å¼–R6£¶aIçïÖ÷ï¾vŠ+Jí@uwJrñ!ÌÂb%Xðw}ùá»áöKZ/ôdÞžý¢9yãå[ÁîU„°"DN´H:[Aß/ž‚5€ÝZ6¹O§¯Ys -« gva0‰äöy»Ë›}ɪîD÷ÆU>¬r¯~s%Û]NkÁe$½íDs¯¹”¼¾‘Ìý⪵xßœ<0J«L9UÚaĘâ<N‰9®z…2%³æPê°:5j¬ÅkiÖ¿€5ªBÙ°5šßü9ÞÚ X|Ž!'Í|5^\Šzô¤,ÈþÒÌ®“_žé¶`?>(Y{ñæ3ž@0?/«.vóñà6êîà«™Q³Fw›v^~ -˜g´ÇÛGz¸n>_Ý|+˜ý'O’‹ œ´ä¸\·ÊZM„òî°=»…ïGJN;Çïv¾_|îª|ëïŸÇÿï�þW`ÔÀ"¨EP‹ A ,‚X5°j`ÔÀ"¨EP‹ A ,‚X5°j`ÔÀ"¨EP‹ A ,‚X5°j`ÔÀ"¨EP‹ A ,‚X5°j`ÔÀ"¨EP‹ A ,‚X5°j`ÔÀ"¨EP‹ A ,‚X5°j`ÔÀ"¨EPãøoŸ-âá§ÁîÄ_Þ.K£¸tà$®‹åÍíæºÔ*,êÎõ¾¾=¿Ü-¯_*Ü¢)–'êÅfù‚8üØ’€FD~}~z¾ƒ›ÝõòŦLÔ ©ŸR?®¼×½¾»9k/o¡ËîãMw}þíöa·[¾Üœw ¸M°¬P.Ñ„ŸÑÃþdSºƒCÐ?£×pÑ€“-Üz šÈˆéŒ&Nöí‹)É -GHŠÌ/÷<OIâÇëôÇ×»?¦?´ÿÏëÇö»=¯~ˆ‚ÙGñ˜¾ðüÅFýxú(÷Ï\–÷‘F¥º¿¹?_oŠÈ%FÒ” ³ù(²?ùQ<¢Bq’ĈČ`i´ÄýgÿmŸý¿¿ï÷ýQ&8ˆ”‘ƒæ‰Ç1Jqîk@%DNa™Ò(ù‰l÷µÉ™ê`¬»CÙðú@ñz¼T݉dt)QAmÌxaDG¼Ù¡Õz V!Ù=ÅîóZj§1‹S7ßèÉJ‹WJ°0§Œš‘¬Q£5NT¯g6^~nå[½±Qâ9甜„•›ÎE«ë66A~÷¯µðX4‡Z¼–Ý1«µëR";#5˜éá<ì½äÝá!ë2Z.Ø=ƒbQï¸ÍU£e·žkñÂì‚·r5ê“J¨ƒ¨¿‹Féü½UìxwDy]ÍâÞ.¿'wáàº1}kççbxDi©LewÈêyMk¬Ëk‰dfšßׂas½#Yýº’Õ•£·!B-˜A{#<‚¿¢=Ê÷qï•`O(%«ð!ɇŒšBöœÆ’–cZŒìpî4Öª;¦¥”âB^Íìð¨=ºc\ÐÛ†?%Ùà4h±Á*ý¯ÚÖýäDrg’;p!)$œÚô®¬wu黎SrÙÒJVå|ȧu%c”Ô ^¼Í.´¯ -Éi<Æ%WÒ2Õ*4È¡”P¼/ªÍJ]?¨H֥ĺÓrK²F²óÛ!ùfAñ'¬ÖªÖͺCÚáÕ¶êL%k¢¹3#ZZñbº~›¶ŒäóF×JÖAqn¥+Jë¬Ç+9…!8ãšÔ$ùX÷ÆQ~¦kQËãö©N#‡’ŒŒfÄ+ÍéÅÙŒäÝçèÞÈk]˜É©ì/å`Ö†?Qìn‚·:nû¬1½÷º;+=ƒmv$»ùúÛÞò`ux£ã¤çÙôC8x-{sVß×0«4¥Q—PƒBíêÿºœ^Ôø°B{64¾Œ8³¡›6'¿¬Þ¯oþ úmFoXÍu0ºËW¿‰ÆJ¼VÂ…î]\3{ù{ÖîBq:m±þ<=z'‡+%\rFÇ©-˜k¼ÆÏ(«.59%…/S&d•ÓrÉB¶EÌš=ÎpF_°F¢;€äˆÎrÈj9t¬ËMR«´Íȉbð2ÒbHqE²OrÊZQ®³þå!©Wj:Éúð gU•ä…ZÕ‚•`ñúÈ -6N´^œ’A©«Î¦LЇœ>Ђc¿µåöRþ¬,pJËðg~ãÄלžÀhl@‹é³šö¤Ì—IUR2Í™jÞ‘lð\ƒ×ò*ÔçAhÎ#xh9嬟ðfQç=VJöI LAëDÅURÜÄWF0oõ¯~÷õ_Oï¾øÙg5;ÝtײÅ=>¦„äñ%‚df5Á¯rAMHàðZ'ns 1¬þÙ«?zù )E‡¬£Xƒtô&=(NO¶Z$ë -Ú?H.×·+ -?JÖ–GI‰÷ûáI‘%R"u4#ÍÅžgìº6ÇIã&) EQä ú'?û‚]Jb iˆÃsö^ë[›¹Ÿ]*v-Š5+ÕßzÙm2{²ã &~ºÍ–OÞä Dµ®4ô7Þ‡“—ç/‹k‰Œ ·öÇ÷îäQ ¶œ>•œš7Ç0«¦Öêò.ºJvƒjÎZ$3Í^Šæ„™Œõ`Æ™¹hWÁäa~óKsÿêæ[Ϋþ{vÆ2>*ƒmP¾)÷ß–ï–Wß拯zÚP2Æ~~V¯Éð :+9ØK§eK®cw8¿Ë…�)¾BÉ®F±®dNysÒ•âŽ2ì›sŽ¬$ûÜ)^‹~Ýá38‡M€—´hµEËX)ⵘâZÆÂûXœ!Tß8) â¬N]£NÏnuõ6e¶£'%•\ëá•\úÃ{/½îËPEÍi™ˆè¥b¯%{e§7Éüϲ;F)‘ -3:sјÀ¹ç±RÂ+Ù³3éY[d8GP‡ŠµIqJŽª:ᬰƒy‡µÏØ Ë§ -™¡ìœQñöš7 - MÑG/(á}ɘ@º¸Aµjâ‚üvºûìMxÆXÉ&®^A`¸gÕ @Ê“¿øQÙ©xk -òæ$l/î¾haÓWSÉ* oiö¢5裸ÒOwÁèÀƒêƒ•ìÕ²¿íZó–ø#Déô¶Ü}¦Ç¸<ºÅ•.IºwFG2Ü©ÞB²fãúµ;Ú£/ :ho .e»Áú@+- `|hŒ‘#€½§º¿u’£"µ—¸‘{s3Z’dkÄçn~Ìžœâ¥èÍ£ò!*ïHºõG{-]§«Û‡M÷•Ü9Ä8loAÔVà¹nzÌ–ß$³wîðhGçŠ=$»ÂÀ®6ì,@§$«â 4‡Yr莵Öý« |X!¬ãɽ•]w…¨ÍzP—j,%§yý¤|EÊô„¸M}>ìñ!ÔÕîÙ¼6RI…¤èôÜ.Ð|%ü©-w! mdZJ)!ÆÅ §f°†÷‘裤”œœììÐG ]wk^hÁc¤°#è9§¤ÈPIC´4ëw{N«ðJ2‚{¸ WÓi’ñqí ilžâ0R,ZßQ^~Àj-J„¡ÞVG„ÌÐýjñÆN¯»9š2YÕS¬‰á/OA™Þˆ�™‰¤t°OÍÊžd%·Ö£½—¿ŒÆ7f¸@,†é®Ú}J£×pî7FpŸjœ;÷†‡´~ìÉÖÁÁuoMÂ-´-¹Ù娺ÿõ×ÿÞ~ýoÎsd¤ 6fzÀ†‡õÛñú½1XÁé�«äiŒèèävö`¥·$9àwË›¹ÙQF´œá¯@fnz°Ò£_%åÃí›Îvi5Fµƒâ>Û|ÌÏ¿ÉÎ?‚¸¸ýùçß‚æ¦-œ‰Ilˆ!ÑFÓ_õ•½€4Jžô”‹÷¥£ŽÓ‘ò%RŽ“ö²9ïrˆ‰¯•~|iÅëç˜ ¯LÍÁ“ß;Ã[#ÜaoP -¢5>ÍÚmF§ú„ÐÞÄœà4’VôNI\`>ÂÙ×a½3Ʀ¸ˆbCH‹S2´Ð~Áèl±˜Á(Öïñ1~‡>ÑtsB«g¶‘Sz®:5‡ÙÿEÙûb¨)îA�ÈÁcw§/&²Vö¸ˆáQÍÏh {ÞÑ[¸\mÑ&¤.¨9‡àVN/Eì<Ú£hš‹�DmtF©ÏÏÐX%E—³[}§Õs‘°õös—#˜a`;5ɉºÃùûáì/®,¯˜ÌïÒúA=M¶ Æf՛Ë¢yÊWh9u+.�1¬ {çìô.[}Šç˜c§¨•‚2½nðGwióÔ¾ýþ—ß6œ‰oHv$Ù5^Ìø¨QüqÚù3Ã—Ý VôàŠ¯ |½¸þaqûŒe,;+ÚºÉÞ„’Ëdz_ß#¾9s¬y j&»¨zÊVí¨|õùïÿÉÖO-ÖÁ¯z+3Ùcb‡T@H€ÕÆøÜÅÜ®fx4fH™ThDjÕYËhD—µQ@š¸ÀŠ•\gõ;+Þ ’Zðú¤o”,æ@ Ã]ÃS2©9¥8C´QJ·o2¼ƒ™Yµ*':'Þ’¸;زê¸Í8œ2„ZÚ=Ì« ˆ!‚Y†¼5àéàËŽÒ—ÐìE—´ aÏn1u…�Ø—H…ºaÏš³€ 3î”w•î.@B` -ËR¬‡ý÷Å”FØá3¸ÄºŽQùÿEÿN*èG³æxSð†G„è‡e§Ay1¨Ðœ‚¨2¬ª _ôlÑ*1~- -æƤÂÈM¢C¶üTì¾øùéÎÝ`vqü4¿ü(Ù¥¬Œhå/’ÉM±zëä—.p“lpœdú_…Å<ëŽo YN=Ù¼¥•¯HšÓ«¯ç‡/ÍËŸêW?˜£9XÏ.¿f¯}ÂY•â.ÂòuܼO›$¾Â–¬dË›EOÉX0iÂÉ}2{;¿úÎß0z%9HÛ^ÊŒ`‰7Gotí¯pj˜Ê4£ &dV4}lŽ?åƒWÜ6ïîxÃ:e™ qÆmÁG_@-ÓßôÕœ’0ÚÄž%Ó;É©Ú}‘ÆÞ¼0lÿž€ ¼,èÙYjÿ#¹ÌzÛÆî(þQÚ8±(‘â"îû¾oZHʲ,Ù–¼Ä‰’Ø™I›dÚ´¢ E_ý}ï×롆 Óº—÷žÿ9¿óf"Íê¯u@ÛCÜ—`Xö~"O'JCò1ÉÐƱ€ñ8pÜ5®,HvUûƒíX¹Àg"ŒûD¶:\™ ò—uY)…sNÔ -K°B"ƒRÀ¢ä/[�˜qi„[h‰S€ -Æ zmxZÖòó›¾6êS -PLJ¨“çCð1@~† -j 7#hë‰á‘Å!ÞRÄBXZB<)ÆÜ ÏAžƒ±5IUrÜ,:/#£‰rŒ‚K¿}>Ábˆ0¦j'çvºsò=N/¢š³ Þv¿GÄÇúåo$aD]Pm¬¸Á¶£é!mðvÕ꣕]+þo¶¤\¢+’Ùk¯ÚSR¨x½êÆÎ.Ìb'†g¢w·ëÃߓ9ÄjpæV·ÁâÞßØÅ®nà‡€O(žog×þì½Uäp§„{ÉßPR³…Š°á‰^3JÍeP½UÜ–•#,§¢Á¹ä¯$Ϋùë°z],a\¬–ófÍ›S|Á®‡"‡n²9^5JÃuX ‚þÔÍL"†À½‘!¥"&4wíäoìä¥éoµ>%#blB´q<ÖŽF2-’~©3˜6>™œxh=Jq„aàÌc`IK%-å(f°™kæÔÊZþ|(�x 9ÈXÐ梾�'HÚÔ¶œ 8üž‚‚Ábú�Ûc1Òk?»°‘¡`æ§Lo‘ø¸/t@lKà;1VG -@Ó4QjQÿß'y@:ãE l²—"dÃlÑF»Õû~0æ³?¢M`[X\ùÅZ4Rl³r -]ýæˆ )I¶æØÆ)˜ª-úœŠQíütæW^~Éé%«Nq%‡+JtE»4üÆK×Nv‘tï=–#\&Ö<»ÖüMºxHÛ{;;K1°\tæ’»`Bp483¿©6ßÂöƒU\Î<iÞAfXE0k#Ù¥«/Óý_ížÀW,ú@Úm€OVvãÏÙ§z+ûkN¯±«¼¹æ«ð>` Ç(â.ɧôõdF²–•\&«ÞümP<%§£”Ì-öNuKk倳¡^�'¦Ï/ö8y”ˆ G‡;«Ï‡“ži›Wú‰Ã<öw*FP>-Ç#ÎcÄLÒÒPÁc1«ì£ -×D[ÃþØsü -”"z^òTìæ©+UX]÷W¨o½WL�ð€œœ•ã1k:aä`~TÔ> -ÇàcÄðÙ1-ë¥átp6xˈ°(¼:÷êzvŽÕA `¤¨×è¶CR!~F0€Y1VÌ9ÃûCJÛ#.{·qÛ¨¾…ñâácJ=Šp0¤€â6v²A—AüYaÇAñĈ%HžcD|Tìe=ã7)6 ̾>ˆßÿ8†ŒÌðÛq?\1��K Pr餗°J -üò\öqò4È&¤¤X°šòô‹SÞ*v›vFOð§_ÅcÕ™gí›hþÚ//³õƒšl}o-mÊÛMµþ\]|q¼Á)À;Z>ùõP¯5ÿ°”®azà4³¾«%$}èÈ)ü?¿ha“^~×¢X 1ÎÜ’NßÔ§äŒWÒùæƒ=ÛDg$„Ð!„ -*XîÿÔ½ü®e{`CÖ$wÎÈ�&‹PeÕ<�ŠF¬Á -®bN´‚I3@¦ %š3NOIÞŒ¸Î)åD©hŽ„(‰ú(hŒ„q¸#,‹ì¹ËÂÃV¸C”€x³¯½x o‚H[ÞÇwÕž²b¤ÛÓº…u§¸N.P-Í`ÍË'�øÃN+©9=ñ!l¬ŽÉR€@ú <9Ó¼-…$>ôÈ>Ý"0<–FSœIóN"'(ý!¤‚½A½ ù¨¸þöý?‚={1 oŠÅæ¢û²Ùn»óbÄqÕ´3Ó®%½æžÔÒ—PkÑ]|’Ì…b5Ð-¯dpBrb‹fæçÚµôR¶ffr›Yn³~ùG39=¦t â“›n¾ 8àr‡¯ÿ"›|IÕ^hngÇg–‡Ryúþîó?ìr‡ûÔJwOãÙ»³Ã/õî›äXÑYÔÝs Ôƒµ™¾®ÎŒO«ù«Oþ5]ž‘2ü™ïo¶�/¿Óƒl6ÍåWÎlFŒfÀà½Ââ&¨_"IM«Û~RÓöˆ`0,(#°P3^o^ÿmýî»Y\ÅùåþíOc5<"¸ã‘¤: ù’Ôw,Ó!™Õ‹?¤5t=D¬ÆOeg6QÂxß.P©`GÄ·�WY:ñNX6ë ¸„o<ŠÏ a@ʈ$ZƒÜèø¡žÅpbÁOF´Ï᥈dMÞÈÏËîåPp1,‚1‡‘¢»ˆÀÞpÃnbÐ…šéöÜ Öhøwº‡:KFÝn?ª^ƒ‰À8H¨„b†óœC½†3õÓSHÒBE¥X§—Vo}‘nn?üLÉ>EkšV¢Ø(íøió´ˆpiŠå}4½Q’¦E¦]ðR0 á „ÎÏw’½ý“`c!@«ÅÆD£Ò½ÖMÎ`éˆ`–O%cª83 ÞT³›|~设êá -ÏKF!êxeÄ%L`S -ËÝ«Ïÿ«±æ,¼x«{'²Ýª^'ÙÉš.Ïî?üåßþüÉ…ÕÝ?ÞEõ«róÉHÏi5Ïèù–C=誓{É[ÂÓÐ[x»½þñ—_ÿ»¾û®ÏrO0ˆ’Qïö{¿¾G‹ŒW¿ã½ LƒäªÏÁÌÿ‘\Kncg~Yf�ˆ\�9$�&04;ÊÊj[£)Ùž)í…«\^;¬¼õøù|ÐSÅÒFÍKàþç?ç;Þ·€*HNùòY4ó‘`Á…¬dPœ)¼W7F¸:]~ÿÏÿüOq§–.BöÉV¸“± ª�Õòå½æÕð‚L§¥îÖœŒŒ˜.îüûe¯ .qZl.±[ÝuÌ@S³Õã—Ÿþ}|üÓÙX²*'ÚøzßÅÄ�Mxk'= ®#öš×§#ŽN ‡Nâ‹{7Û1jDýºò6ž -¡Æ;|Ò⪬ï©×ÎÛ€%lg0VE5"æÌtWØÓùö`Œ5‡íðŠ€ç%Ø0¯Ä@ÓòÎNð"°:¨rÄP¨·‡åE’8Ý»tze¾;cF¬*i1õ¨Ÿh ËÛ2"XÎdx›X½wá4ô\ÍE¹È -7†ÁÂK w‰¡ƒ +2å‹ËŒ²‹zûê×÷FÔajØ\ÙÌÁÐD…šV·^~òŠ„T´Ïåî3M:;êef´uÒÝtyoçG–hLýóëý¿MŽÄ4ÚxÙ>,îÕ`MûéW¬–5ÏíÍÓ«Ÿ¢Õg’øÞíçV‹'ZB“@ÝŠ.ÜâA Žùò5o_XÙŒóÂö‡ÌÞ8¹Bä±_‚q>QǼiú+´ÎjÿeÑ=-Ÿ@8…ùžõO85ÄUij7¿Eù’^ÞF³+^5gÇóòcP\ÍV¯Hóþ¥ä…cÞ`xÊ -¶¤%~y78áR¢s•¢sp bVÄjúrg‚®[;¾ÊÚ¯z¸CX j!ª‹½8õ¹L;½)»o.:/XÚ®a›cX„èkz.k)uX:-ÁÙ(Žíóô´èÌåצӜeŽwu³RŒ¯Vœü’t$¢O y#‹³ã¨¯Ã»øˆzi…âm`Y:Ê*†¬Æ -#ø'²Z -³›¾NÊQš^'ôWg"Ë9ý¯› _|sÂ�qŒÅ·Ã•ÖxT/ð^T˜%ƦåPE‘5³_ûÙIµfP]8=¡�âæUo¸œÊõ·úê/Å᛬!-Ý_ÊV/$ÒÇñB¤b·,R[‰¨ÓÆùI¢¥—í‚ìèá·?¤ëïHÔ{Ñä‡`¯ýökºÿ9\½’°Ã×õ`gDTΈäÍég°«îï%ZOÔWª;õ& …0;¹Á‡ø[h�`Zb+«8h û2ü=q6àj,–Qw€Ö ¬�Fêä·h¬zp�É ±8ëà1YZÙ!‚ûÎðw0\)òTRègÀHHO(J´QB×ÀB0-¶¾Ÿ©èMØŒØPÍü=.w¸¦áÉK.UZÂú»2J�$†k„{Ū`—Îmœà´ÒBRBù^"¤4»…œp>×l‰V¨û�øS¶xÌÊ[ø•¬•˜æÙP|÷~<`B-oÀ�ú`lVƒJÔÄ XŠn=ðJ!jEµ|òžZsÍœŸ@þx`¿¨•–»_´¯è›#ÖıXãýPÔÁça•¨?ø]Å@Úzé̦ ã’Ô -:xrA&›7:eó' ˆ÷u÷Büf¬Dª»ñò‡dùµ:ü1ªŸõø�¯6/ð1|Üx—7Qõà$}P’ <ÔÛï3åIˆ!&ͧÍÇ¿–ÝZÐAöqóÉ)>b± i÷ûhõ…ÄG‘Î $iûÒÌâÖ -Wáü††»°zP܆Ó2ÕiѽüŠ8 +zà=ÕY‰f+Ò%oT<™ABnrgPÚŒ×z´r2Õêl!•‰äKj¥fØÌÌî<tÔRÒ`‡ðMšh¯�û‚Þ¿C7Ô§ØHô>œI¤)ž<)p·¦³D×Ôb0Ö!`e+¦æx*A›ùù}Þ|IŸìø¤—à[$ø·8XS¸¡~ë¥{¸¨¢g†™ûá–áŒ!£q¼ïEÀ¹#øª€÷⇬p¯Y54‘bU_X^§™µim°hï>pïÎ؉ం÷a¨½?—Þ—´B5+™LñªÝbôç¬ex±WÄÞî®\>˜vYNï�uçŒò‡`€|ºÕZîδW£‰…7B2¾D5ËŸ‘/ð«ÞûêZ |{ÇÃû"_uÀ!"©�‚’A#ÎÕÔOo@Ú¸d4M+>ô/è‘¡è0J„žUn^s°VÍiT»z³¾_¤þÚONqqÎn&²Ù%¬mÎÌOPŽ_\'ó{¿zTÝ楻`@Š§Xd�•ßéµjmîþ|ÿÛ¿qf‰bKíÄå-wr_IblIJûŒ±rji'¿¸CïƒÉÓè¤8K¥×ßýëóþ!ÛsF1ÂëÛ¨*AW7OÔmT-u£n¢Eç‚É(Ô˜6¿)·_ãù†è%[€ÐX´ÑhDµb½)¨€Ë$Ö܉ñ¿>ÔÞ›$šœ‚ÓÙ! y9Á€xÙ뤤X^b7j/׊‘±JM»ý>Ì6‚ -ÿ¬8 N$и«×YÓü8d/º -ØIéi -†·zv»0¿FÄÀF4½r½½½äÊv÷˜øÙ¹4ü”p> ±(Á@ÐR ‹Ik7ÿˆ\àÉT±ZÁ¨8¥KéDË!'¾Èß\‚Á]õ :pª!£’«ô‰<ÇÃàWú·#)òc¹éÔX"Ü@m0}׈p,Ì t - ±@…¾P„h£P,8 -T#NØõˆ·¬‘³o(5#Þ -wn;'»âô„iOþëߢÂ@ÆRï“ËÙúÅ-/ÎÁ'Ö"(o‚Qÿg¹L›7Ò üOÖî“FH [Hª*ÝÄ}4Ð@ã>fÆŽXÏŽ#¼ëuÄþìMáÐ'¢T•oæ“g“éè¹ÔÀçu3µÝz @&…L±~ñ<ÜþÌ¿Þ©!lÖí«ÑM˼âôÁÂ75ŠŠ:„øT±«;p¯¾0#g“õË¿gÇß |½–Ä@Ò’.©Y”¹3BGŒýdÝè¸M42s€±Â†C?^¶Ò-áuP~Ð’|ø¤B†œäâ4`Ú– Ǥ-E‰+柱“²^rÚVzÐ0‚¥OÒR˜dK -×òňˆÁ×Ì_â€RN¸ÀžÿU§°,$”ÐAù’¼¶â58íÇkž˜-NIJ+° -NVBÇ›{ñâœÎ2ÊéåµtËY Îõâ–¯ÓìwqÉÝÜÊ(¡‹`Â’5n›#?;ܶ٠O95Í!F’ë ÿäç’…Ž“HÝ~£eþpÉ!je=•Ô莧¼èã‚é]ŒÈšÁÂ1}2©`¿è>¢ÕCïƒÆkØö³eÏ2 Ûý¦�Ú1žø¹ÌF2´ãâíloÑѳ¦è€*Óás>ÿWïò¹Óévé$ë¶æËVª¢Á‘Ê÷½Ñ‡,9=†7ög?“hÑÖ"Ø`&r"%/÷@A¨3V u¹Bdž¿Æ¥±©î–朆 J56Aôp¢{¼Cms"å•ùN£l•8ǶR#.¨È„ ->ƒ'-í`—»jbœMœñæ -æ³l€¥{¢Y‰ÙUMlÔ€EhIsΈ¿%Îâ¯JRÔùõѳ;¼ FnºÓjñ±zþç಴*+B9Åu"‚ØZÖài³EŸ[¨V`ጠ=7ZC±˜,EOEŃ?`ÛaøQ‹¡êoìa�õ놊“»9´Št+Ç?[^ùÃåí—ÍŽä4y à@·6)ÄÙá‡WÍ&oÖ™%Á‰NÆNr 6Áq\µÜÒR|Ýá¶ecµ¢‰®7éR`RŒT5í‘Œ2x«@´>øIíFߎ6´·7ƒ°AECô–$} éN¡#šm½òÉéŸ5�HNÒõf]w†cjÉõà..TŒ¶ÙëX}p>u²ƒå/5L}¸ómØß»½ƒîH¸&þÒËvº3ȪǬz#ÑÆ •í/šh|jò»OÿeéZ63öú˜¨KÐÀ`'Û’`¿Â"AM7m¯Ñö2Â+ÀÿÏöî’¦š7½â´Nãêz;FL›Þ -„o8+ˆ)‰Î»Ïÿ™þt’gÓÛž} ÅÇé€ð|Œž Ñ9XZµ -ئkk³x³èà'GüÜE•+ÖÀcØd¾`7`kAþàöOW<…ø!ÂÛVG,éØ´J4*-6ƒ?‹JÒlC9Ý›;£¶><AôÀŠ‰lJ 2ô‚¥¬y|mk}Xb£E5È/D°éL -ÀùÅ„Ñá>ØÏr7À«FçŽS )AA/<Ö ã3YL"Œ^°!Ôp‚tŠý„ÏàâµãoíËK «:ŸûPgSàS§SêÎ`õ?„‡HÅ0vŒB±ÇN~Êæ_âÑOÑð1½™ñ†¤;Ú;á~2ùHÏ7ß5o-³©Ê&’UÚáýHsfuùÎJ©[ûüÍ— ^+ÜÔrE¨åG¯x¤ñ2,âщ÷4ÞÁÐ@,~~\Ÿþ˜ló‹#Î9¨¹S° Yw!Ëîy3o€—Œ\sgª3¥Ùë?±üIs`’š~•ã@“{Ã_´‘êÌÂá{¾úÕˆWís'ÅæC™ 1€â…æ¯HØ[ÔÎfNqtòVËɼQ¥S+¼g½:U5Ä"Â9;@;³P÷²'¼»ÂÆ›næn²¶Hziº+Á($R¡~"8Zgý sQx-;«k¡:ÞˆÖ m$\Íb¬Ô2îKöXÐ -Ý_¹½GP+^ªžb5‚»¢€�‡9‚9ÀI¨·¤Hv‘Õ¢e"U -T»Ö¼F§w„#2QÖ"XRUÔzó™ÎÔ êŽãbÇˬ-{èÙ䄃,ñRNo/™…áT~‡¬s\´JL¨luo-±‰L‡w¼ ?l´ºWMÔ$"È쬢Ñ{oZ_Nïˆ!*•üÐî–˜\’œâ4>|‹ïp°tòFó“-ƒò©¿ùµzú#]c½ƒáN«Ègï$Ûkî -és·'šÝGãý¥ÌŸYq0ƒ5ë“ùçáþ{¹ù%ž¼[ñÖô×Éè `Oâ-‰¶V°†½þa¼ÿË÷«tme¬ÿê–o¤xÖqvp¹â˜/¿èþ4ý’.¿Ù½ƒŠÏv¼³¢{,@u+\-�ù8q‹Ä\2ýU,=àÞòêYÍRsè¨l‚žÊ3iA9d„àá°><ÐÄ\ÄøÉ\!¥dedÖ¬²1I÷nþH¢û¬z†Ï,ÛÙá -ÂVÜ)g´]½ùÃÝŸ×ókæº7íF3F<ÇãW;ÙšÑÊ&Ý`‚hÐܱW‚ò…${ئ,UVa"$Ç”Ø ´ 3gÁŠ†›zÓüöë-þôL¤wØ‹¶éàK…Õ×7驤š¥åÎx“TÏýõçlö)ž<®^ÿ•Lße¯Ì{r4ƒ Kïû£S1y1Â¥H‡Nq€~šbˆGéþL©ã)40g÷hâd÷@è ü)¾ûÅ›—?ïÌ@ÚÈ>cÇÎ×_Øà1ž}ä˯nyò‡{Ö[‡Õi|ú>zúÝ=ûƒC\>ìÞÿôËGÛ¹ùVVÿ#¹ÌšÔF¯0üwR×6M74«hE»„$H ‰±ÓÍқݴÇí-vÙng2å,—“š©\¥R¹Onr“¿“ÓN•JU }ßwÞó>ïi&©jŠ¶SD…/To}T0ž$%P#&u@W”>ÀõQw07Q°3l4ÍÀ‚?`RPý,ÛØKKãL’†ß”ãy´büœæ•®Ž¾ÕrëYA~+‚¨09Ä”1"ô¾u€j‘4ÿ8^<È\( mUØòH¨-‹FÈ”ÇàÉã܃ÔÏë&a∦ÅûûŒo÷öPP×wsÀ¸è'«$ -\ì¥iç/g(X¤ŸÀô½“ *àrpG8•:LyJ©CTöúoöò`ã ³YuÁ}/ÁB‹ábÛhÓÖ$Å6pmHè#¸g9¯hMHµ êJb -oö$gNª]yöÓ2˜?7–×ÚŽ¦¸{ß&”HR€“d|�ÞŽr^,§8àEp˜Ñ´’c=ÅY‹î:†UÀj¢ˆööCß!væsœË9sÁ]™ýçÁæç¬Á" £Á¨¿0ûi €sžZ_3Ö"Ëz�ÿ§k`qUïêRиI•º¬5‚Õ¢lõÑ!¤�ŽÄc/!ftT -¥Ø¬3’‚öQ`‘YÖI³M„ -JŸ«-$o…ð6ÂUH©wQä„e²‚—¤í$i“ÀX—$˦Ž+=Îœ7F¯ÜÉ gŽP18¢jI²RyNrQЗ¢»C…v4Í¥05’d㈂r.ภ†1Ò9$êE{•Ààøg^føNŠ 2EU{Îø&'¶¾‹âP8R›`ò C7àº+77s|ð$Y|p€‚zB—´Ñƒ½z˜ jQØ#ã>ŒÑ‘o–{t'rŒtÙò.F¦àpä½øÕSÚ˜«0ö¢X™²• l3EU£¹Rœ4ÞCŸ¯Í)ßXe9¦žh’ƒi.’˜ºÐ¡ ½’wæŸÜB¹ÓœCã‚ܓܵ>|a¯ywŠ]òëáy}¼ÓZ¨B³ÒL#I×àÁK¦lŽ ßFR",>ø)Ò!µ‘ÞºkBéhÞ1µÅ‹û)Ïy¬ ”Yq .¢ -ì&Ä ‚ˆ÷ö’‡ˆH*í‚äñö²2zåonéú±hOÃ̀ȣ˜”åz¨�W—3åÞ¸>^üöqÆ®À´X¥ÍSûdyRî]‹ÍS° ¢Ö±ƒU·�úp@äÀ]HPŒ½Q(tK¬Ì AîG0HÈà Ek¥·¯{§_O~ø¹·|Óß¼7C…¦à,8w‰ë=±>¯OÞ´¶_c+h1TN`*.˜Ü)ùgzç’6†ƒ³ßýg‡”Ãtp`ZëÎIÞXöIFé#R¾îg˜ûQ$‰i`,RëJì¼:Wð¡hÎœðš1{y¡V¬Î -¥a^àj(Õåþ•P?É2 ÕàaœÜG¤$a"¬'Õ¡àn•à*)BÇøú~<Jα5 ²äÊþÖl?sG7`ûð„,Û„#…íjòPšçj{ÇVWGxXIñªFiƒ¢=ÇJ=h“‚dg�ú¸™æ› +h@¦ºÌ‹íro—-ÖRÌ"Bš…ÏY„<¨†/ôî…Ò:7ÃÑ9žœ,ê!2LFrpÚ\½ï_|]Þ¶ç/©’Ÿç¡¶€î€øwDTsb§:z[†i¬ÝÉ›CT}§S”™ÀË„Ú/y§öèeeü²Ü»œ_ÿTŸa’ÍÉ)ÂÕ‘Ö¢Ôßñ Ûè]?ÍÉÑ$Ϊ~†4î?M§p]nn¼í¿ù´¼þúã/ÿ²  6ûÌ×·@Æ#Âɉ]¸C8y£âyíI†’ÖÚ2µc©±Åµ0Šê¥úü×þ—,ï=E(ÙwÂ\æKS¾ùŒ0—@öÙÙm3!yæ¾%«’ÿ\vÖèµÑ¹Ø\=ÿðK–kpæÔ½Vïýãw•p×\j_üäoþøו‚í¦qFGñÎŒÞÎ\×go¼Íçêàrxr3yñ5[´Üð²½ý(ù—¨:¬Œ_µ/ÿ$÷ß -tPkQDÌ@4R‡TmIUg¥Ö¹Ö{NÊ`Ã5—0Yà´ø Œ> ÜÉ'PQ“3L…µ†Y¦šcë¨àƒmâêž@k@QhÍc4?Ï»”ÞçcΞkÞ¦Ú?_ìþÐ_¿Ïq\Ñ–škk°kÎ^[ý+5¸à-ʵüÑË`ù»ý4›"4„ÑÝ•üSè…æâ}÷äÓÍ—¿Õ†»§Y4ëS=ôB^›&lÿ-J;‡0Œ@ÞeÑãZ‡³§¤Þg¬Ðhæy( -æ+#=ØJµ9.8àáÀ—êà%.·…êTp–ÆíYÉßÐÖü×úVïTiÌslUòNÈR ÕÂZx%7WŒ90Ú›þ; Ûœ¾jo¿XãײÊW¦ãdtÓ;[\ýE®Ï¢i‚ëVgã/_û«·öì]kóc^ìr‰è»') 'a,œÅ=þÀ:§lóœÞXVÚ'{ êñQ1ŽU²R/÷µæ 0Ö¶;[¡2¾ƒ²Ô§ì^žÍ5[?ŒÍb¨”È‹P¢4�ÛT‚SûBiï² -Ümª7“Ü[›0ån{pöë?þSîœG2«wüùñ?ŽË¬·qó -Ã?¦EÓŒ'[^%Y”,j!)®wŠZ(j§dj±vy“-y÷x=k<Kf&Iƒ¤-2M¦èE(ô¦½íéqÞJüHžó¾Ïó<×¹ÎoÈT;YZ÷õ§7ÿå+f뤸ù<ݹRkÇÙþuaðfàäüÝí÷¿DôÊgÞ�©µ„ü–Ù=kî½JÔö*kûßýø¹¼©[#xÉBi§¾órïúÏÝ“?Q‰aÙÞµûg>2…²™°x7T\f=Õ<³'ï:§ß'ê§Í‹ZïÐ3)[Œ•ÂB* 1yÛ8ø�HÊUè÷å° -ÿà£ñs+Ú¬Oeã=g€C0 ŠðÈ« �Z6*ã§o>[G.LÓ›WråV8×,Øg~©‡ŠåPœ•›®€¼èãXHøLÛÚxTÛyf´"LœÅ´Æׯÿ¶Bjœnõƒtý*¾çaa³›Öj¤²:í–P(ŠJöÁ£Éõ™úao㢻ý¥’œ^ó©8Êu/Fï¿ýY2ºÝáɳ÷?ç» ‰V¤º3÷µÚ•^¿ ÅJótÿየVp84Zðõ°ÒfýÒÆ«ˆÞ÷Æ`¡OÁ5 ‹¡‘ñx'+ñFçâöcÿ©¡!?A7øâ˜ÍoÃr«©Üøøͳ¯>‘| „.š[g²\nÇìÝ�Íz€Óø9µ°L„£9Èm¥¸X;YG‘äÐã—sÕ}LÈ8<è -)ÇŒ®^«£Te½ØÚ÷ÒÉ{ó+a.¥väÂ8fnܵ˜PÐòƒñÙ»æä9ø‚ƒQÜfÒ=½qΕFaµñ僓×ç/~À¤üg³(Ê–¡Ã’C›jñùÝ=þåŸÿÉ6CLº¾~5<û®¸ýbuôbpò¡°þ2ÀN_?|òGÈà ¸©œß€aÊÛéÖ¹jù!"¿lnœ{MȤò©·éDGµÆñW©ÎMDY³:çnBÿÝd>�ž—Ê»ˆ,h©Ÿ±D³'%«ÉÒÀBÑ,®ÔüÑ"ÊÉ´ ‰0ùŽ»ôæÊ—\ ñgÄøý5åŽ"TKO/Ó^†ÕVqjb’íÓFÏ…g\h<n®_~ùSX0E³U\&ìC,¾ëDêÇÝDž‚Vë+L€I`B‰l\¬F¤2 ‹jíƒZïÄO%“•Q¾{f¶ÏîÖ¶}hÚ#F,½}ÿ—_ÿýßÖîÓ.ÊP<cÚcÆáJÓ”¯žþáÇ¿þªe,@%UNû¡Ñ~fö_x0Ïꞃ…Õ‚Ÿ.)¡¸ÍÆÉõ×oŽŸQª¥ŽÿË#@¯›HW(¹ÍÞÞmkë%SÉòº˜ë¸1DÕK€Ö…ìon,ø8†/°Êª3 xp úìÌÇZ^,I‹Ö¼—übÁë%Ähªf6÷›ã±Ò¦ÓïͦæüK(ëp8Ÿã’½X~¤Ù“âà²uø–ˆ×}D\Õhº}ðâZ.í@7é•]B¶>fÚM†Ë”ÜAI¬‰Ön²±o¶æ^PÌ;4bFK,miö¡T™¬ðUW@ŠªeøvŽe*Äfaý˜¶„0‘h^·'@8„¶ªUƱ܆—иD “Ë>ÚXa³p-Hõ„½ÆTû·÷]€î°n€£nàœPbU\A‰Ñ,½<œqãrn°º}«×. µŸk>‚¹EÅR¼´qøü#B&Þ°(ˆLEû†Jôî/bî (eû(•ÌA²ybv®Ö¶_57Ÿ+Åhº¢“££[ÃÞ~àÂC -̶‡È„Ħ¶Äâ˜Pë^\Ú_+Æ ŸÎÅîLd šäE(ì²rÕêœñf—î ÁTøvÄ{~˜®l!„¶¸Â»Pa¡q¡î�@5úœÞ#ˆ9ãñ\}_*ï„*¸ª+”rx¢> eŠe(¡äð0H$Œ•“«‡º}¨í§kÇ(SÓk‡Wß A ØWØ¥PíãêÞ›òúãXºï(§7ß®v@H=<.w|„îD¸‰™e2€z'¼¤Lúy‹5!mvaaa†|1?¡3r~jÖëpá>2í¡óþ˜íeAßlþþ¬ßé‚Aj%R«DÍ>hD}4Õ¡ä*Æ&Ó¹vmœ·å¥R^2²9Œ_ B5k˜FOD‡á”3½xuWì(Õ=—›Cy×Xª9ï#Å„µqü¾wüR9ÅŠp¸æ<4ìÝç_¸gæý>L¥¨¿jH®DÅ°€DTsí”K¼D0&aŸ¤GjiçM8±©tf»7ãšrø(±’\ÝWËv§º„jÏ!‘0gÊÙ-Bj8CIøFžH|1ȧ*[I{<Pp�Jª»P ¡2.*ï*p¯—ó‡›R‹£òð)—Êf/[›PzkÆÃÐQs÷è6ª•¦ƒd¢ÃÆÀ6…Γ»l!Ì¥ fÉѤۋ'ezVï2U™ÄRˆÄe<Sk…úá’gäj}ûÖX{ÌÄÛWÆbB^B3”ŠßŸõy‚"¯GÛ¬”×+‘Ìô¬Ÿ ã·ï¢øÂ,(-¦£´‰2Y:Ñ3gVÿˆ]NØÕá#XÆY>ïÁ]~nÎÍÎ:é%„w!Ñ9'^\rFz™œ[&fÖ±ÌÌ@bã9?Sþ|ýÍÿ(.ó߶Í;Œÿ/ú6>d[÷EŠ§ÄS")Q¤D‰"uY—%Y’åC¶,߱ǩ9—ÔI›"qše«³^h1¤@Ò�ÛÒbº[-†aýeØ€ý¶×�!ðxñ}¿Ïó|ž7î€LËÓC㾆ȰÆg)Îè^ŠsVœ÷eOP¤ãÓl¼ŽPê˜5 U6Ñ»'š‹¬:ç#u0i÷óHH FtŒ‰ÇÍ6 R™ -úôŽ 5ã©Æ`ójk°ð*DÅåìl¹»WY¸¨”×h ÜL€yjùžAáR'7›+·Êó‹;ïÍnÝ!$Ó,L¯»(õ@Ü8`Ù‰*�]¤ô\Ì€ØüÊd<¸hóŸ¤6¸69»êÕâÙÕ…+J¦³°r¹Ô=Oˆ„ˀ؂‹±Ñ&Agí^Êæ£PZeä"Èe*=ç¦ ÐÔ@Ú’@nBÞCÄ0.cÔÏÈfø0>¡ˆ wЋJt$o÷ ÚKœÔ·Òª>µ ˜ -&ü¤jÔ·ŠÝ} ˜NJWËë�«BBc“N„EMÌtˆH$Dé6IÏe¦N—ºŸwú×’u'ÄzP}8°¡Ã&:›õÂBkäI’š~6G«-`2Àv*K׵ʺ [˜ÓOÙ}A*€ËåRm¥°¨fÚœ”ãâ“#V,@ë\º5OjE ”PàîŸk4Ww/¹°ÈO†l6'Š`Q>VÔº‰ŽÛ‰—þê7ž]<k±B>„d5z‘Ô¢’_Sò+Ãب‰jM˜LX6/åF7JÙˆ2¹°zAZ°á4Ì)|zŠÑª8(2œîA/ÄËZ‹O4˜ä)`æ8ì'@Hs&Ä“¡õO_×j}&YEÓÏ$ JfäœZ]¢ä¢åyÉÌTze‘—ܸ8â -‚zBÏ $}ÆàCrE-oT{…™dy‘I”\8Wi÷WÏßEÍ·&0[$bMFm4ó±Á’—�¸BJ§§E]o¬ƒHm^©.^ȵNG´ºœªî±wÄIB¡4)‚òXAYcsXô@àc0Ð*€Ý&ãSh´NÈxy[«õÓéqÉËÙ¨Þ&ú#vŒ3Ö hÝ c·ÕæƒÐÆ¥¸x Ü”—°�è ”ÕG+…ùØä2otþ{("†å’YßõÐbG-veM$—1—©nˆ©®‰Ø0kZa ÜΧ#Z#ÝÜgƒ™ð;È<æ%e£ìÌAiþb¡s>^˜¼#“ç±ùH7Ì¢Œ&dfj«7Àß„ôÎÛP/EÂ:*è�ÞØØ”œ™W ŠJ¼>l…‡-^‡uûB(·º¨‘ tÜA°BvgïvR«ŽúÐ -Ô‡ñ9’Ï#TÊO¨; æ™4çqÚ�8áÁ]0…0q�f{µ0·–¨Ï&§fó3ýîÖùùÝåÁ*=‰J1Ýä劔l¢´6æ&\0ƒ„$ZÌDe!]AA'‰Rëí[”òL@H¢¢.fªæÌ <Ùµ¡”Ò…Ž”ªŒ9`œQL´¡D±¯Mï2úœI„¤”Zžá*Ÿ)#Ñ”3$"‚1sùÞ²2ÝóET?£€ê1);Äž²ØmÞ Xl9;ŸkŸ FS C -*§M"áxHÖ™dˆe£V›_mŸá³UwHâÔz8Ù†Íêaßv¸œ^ZÍÎÇ2�rNäð,ZZvŠG+~&í -Æ}Œ,™2–²¢”ç1QO76`Z³“às¿Ÿ!C -A% LrøÙ ãÁD*:Éé3g€à€Èè`÷zwëRØ(yà ˜eÔFXë�”²xGÆ}cv̇E!R/`ml^Ž—h¹!CÐÚ!1·zîæÜæA²6±Ê¨s*YA£9Ê¢¼’¬,á�3ÂY°ÒnD‚¨lvz¿ºpW§ÆÀnÀ,Îi’Ñ -ÅrA)OIE&V •bº¾œj„t%n¶älO)ÄtwlûÑ-oœr tJRkN7ù橉áÝÅ0BѨ¬$s}Œ1-6|dòã")oXÜàš€P® 6c™%œ2ln–“Ë'2/Ö»ýíþæþ¹+‡ï<8~ðäóO¿|ñòÕï_ÿí‡ÿçÿ׿þö¯×î:[A1?êŽÙƒ(¡è™F®Ð(Tf'§ûàûÞúÙÝ‹7î_{ÿÃw?ؾz¸ëþÕ÷oÞýù³çß<}ñ»Å·—·.éÕù ƒgãEN-¼ÆÇô\¥Ý^XY\ÛÞ>¸xùðÞÝGO~òôà½Çç~ztãþÇO¾xöü·¯~ýêû/ÿø³OžÏm^ dÃGNÁ#±DY5jlTQÌB»<»¾7½²SêöýÖêÙ•½+|øùwúËëüðìå·o=˜šÝRŒ†ÓÇ8ÝœÛ qUo™•e$¤Œ;qŠ×*3kùö@«-ÄK3àwy÷æåÃG‡G¿|úÕ7·Ž>ºvïøÆÑÇ€ïpÄ …îÅf¨pVh1ÉÑtYÍ׳•fqz©Ý?·}áðþ/¾xxüÙËWß}ÿúŸ/¾þK§¿gVzdÄtDÄÂX ЬÛ<Œ+²>c6×ã…v<ßܹtûñg_}ô«ë÷Ýyôéõw_ù?ÅUþ•äº…ÿ˜³Ö=gÕÔ#jÈð1Š2¢ 8A8ç˜Jj–ÓgE3ÓœÒÌRp.GÔ� Ǭn÷Üï®w¯õþ¶÷ÚϳŸ=(º'Ö¿‚Ètö•7vƒûÀÈ(Mb²0ÂÒɴ؈Ô`v,›/‰‘TÈÓròÊk›ª›•òÎÞYÝçoî+§ûúÔ}e±9‡&æ"ãÞº‡¸í‰EG}È‹*öô!y‚Í N& 0à¾0 �E -ÁpÃ"%ÒJy]Û‹ryw[ÏÈÀØGYuG|vmtj98îoÝþøB$‡$$f=*¬xúLÞÜÒ><2®[X=0Ûí—Ñl³X7×7v§{qu{tr.¿¢‘ŸTæ°a:‹-¦Óù¼0aBBzIy}uC{c{÷ÀðÄÂÊ6ˆÞ”fõÍÔüÊú®Áâœ[ÜØÜØ»ºþ¡]ÛñxÜ -¦ñE9¢Œ2~B6…#Š³òòä =/zÇß}˜žÕ|ÙÔ[ŽÝëËÂÆÞÖ¾Õ}võßþ9»úawžm½Ë”ÑÃ’À†‰ÂQØA¬8%¯¸´’òª¦NÕÈÄŒZ³4¡ÖÌh?éVõÆÃÃCÛé‰ë×~ƒnßLÎÕ¶¼‹É Q¢qxƒ›ÊÃÐL82Áˆ2¤åÏÚºz_¾ëêù YÙѬ{&«ûâêüêÇ¡Ý¢]Þ)®êÉÅÅPY\P-<•ÆK'åf”˪ê»_¾z5:9>r×d3}3X¾YŽîó‹Ÿ¿~ƒjÕ쳚m^\ŽÇ}ÂÝ¿Q(ÉË苤D…ÃN)({ÚÕ7Ü50&¢7ÙŒVÇÊö>(1ë±óÈqb0[]g¿ÿ¶;N¦æ–j›Ÿs£’1d&ŠôòEC -!'e§<”>®jìx>Ø;4¡Yþ¼`ÛØ5-oî»..¿ÿ<r86ûõÍÍ×C›jà8]þ 0ݺÜõÄb�‡É‰‹ŠÏ}VŸ–/jP¾þ8¿h0ÛlÎó¥u½Ñâ�3r]Þ|Ô®¾~ÛÖÕOã&âcq8Z²$» àqõ³úÖÖ¥R1ôz`meåôäÄu~Æ5™sÚ¹–ŽöGÅ¥á±zx2ÍòƒS°‰DcÒY¢X‘Lö¤SÙ×Ó7Ô;0<ù~F¿gÚÞ5-,ÙØһϯ÷¬sš•9Ýš\Ñÿ°¸66¥(!áÅóãÒÂby‘¢Ì¬âÂâ2Y©´«½ueiemíóúæ–ÕfÒa8<²»ºþ~|âZÝÚ~>ð*§¤’!H$3"‰t~ x”Æ%fæ?©iª|VWQY¥Pté–Íf‹ýÛŽÁºº¹}phv8öcðb±jV›:z£%ù�–Z0[Ì<DBñdv+B—P*•ö¿^YZ[ßÞWëVöf×ùÕåõ³Õâr¹Lfóüü¼Z³PVÓÄ!ð5šÌŒ¥‡%2Ãã%ù™Yù•OëFÆ&¦>Î~š×Íë–÷ ¦«›_÷¥ÑlÙÚÞr»Ýv§K»¼>8:)J)¢^œ—7%C‘T"%"Zœž-e«^¿y÷^Ñ®î™,`a»/¿ë )®³sç©Ëh2Y «©CÅ&©<ˆ?ÊÓÄŠ¦sbBxâÜ|™ªwhqycÏ`ÞÒï8¸Ï/ÁÊ49..¯@?z½~wÏ`4 MVÊ»³*ÚÁù¶àëOñƒH2ĉÆ%¤äV×7«úÕºÕ¹…åyÝâî¾áûŸŽÓ3гÁx`±Xgfgå-í…%OÁÓCð ”A‹ScE‰Â¨è”¬Œœ¢ÂÌœ©4¿S!ïëWvv664Öň"iL -O€"q0€ü÷ß(/o�â Q\fx?.ñAJrJJ©LV"+ÍÍK¯©•©TM¯ú-í-]ªê¦¶äì|zh$‰&¤…¥’è1àf…�4 ÎrPå“梲§~BtD¹4¿I^«R)‡{¿¬ÍöË‘Í~4ýi¦¾©!5'‡Æ bG¡, †¦)œŠÊƹ2&);Jœ”™šZœŸ]_S159²¹±a±ÚŽõ¥EnþÓäøÀ@¯¢¼¼B,ɦòD>þD$žéßñFÝñBzø ýîc‚¨ÑÞã¢"0ûEfayiA3mØÛ>;s«ÕÓíÍÕOd…I‰PÀ’¼|‘h"48† -ÃPÑÀáDâ䂼–úê‘¡þïÆW5f³Éé:=¿87}Ý|ÿv¸¥µ^œGá(€çxúàþüËëöè{0�æ°¢¹ìÈŒŒ¬ÜGžÔÔ46·¶·w¨” -zf}}]«ÿ©éÉqÝœz@¥|VYÉ£ˆtÁ S:–Ìå Óhl!� \TZ¡P¾œúðñÍ蘢óùøèÄŽ~osãË@OÛDÿ‹ñ¡þ††ºRi±D’&L‰K¯ q“þíððÂÀ1!~p°´�ÏçÇ••”)::µZnqyl|ldèµzfzgÇ8õAÝÕ¡,**ÅãIT8:§€Jñ†øCý±0$…!³¢B#’â“óÒsKÑ” û�¸[|áˆ?äcxûaÿõç]/O8AAbh0D�Œý¿à‰67š"€Á‘P8ÜÂ)Xr0Žé ß…�?ËòÇÒ=ü€¿îyyû @ ?�ÈL.8@¥S±�2€ˆã‡‡FÅ -Ó3Ò˪êr‹¥œðÿq\fË[G~“Ä$Š$�b#¶ƒ}ßwp÷E¢¤Ñ6Ò¬Û¹ìTlgâ8•‹”/â‹Üä-ÓvÕ)V‘ €>çÿûëîèHr*Î*Þ`Q Nr6ÍÛ~6ËF{+hT+qÃjÔLʼ5õrÙΖ‹õùåí›/«ÑdÖNïn®/vÛ*JÅ•´øw ¦ÙìNæÏ:4#ø 4ÞѲÊgWû‹Ýb=oʶ©?~ýñåÍÙùvzw3YœANØèÞiIé -'xŒ¬Ã+…Ì¢t»Ù¿žÍÏw‹í¯ÿùõÓ?6³Çë«Ëýþíýí»»ËÕêÉzçëö‡JéœR§]– zhKrjÚMœ¯ëf ÍF»ÜûQ†Åt²¬V‡»›÷wïÒ8š·‹2ŸšFDsv—2º”ÎÈ™Ÿïãrg xHv£p\·W^±öãåþæÛ‡?ÿrýîQÖÊ×äÙ¼]æi©êËkà"??ÛÝÿ6÷mþ᳎€RÅ ETvA¡rÿo§ÓÅbŸE©¯å'é"-·es^Ž_°‚‹ô$ooÝâðüˆ<ê}B�„ -ÈÓ (Ä«ÕþÍÓ§ÿ2j½¥Îxã$;x…êŒ9%!(UÒ2^MNºäq—<%œTš˜î$m.ƒtë3Ý›bŒAr1T£àµ†S -Û›Ã�…ш–LVd5ÖŒ„C-تߚÙÚ¯öP(yÙnرLó -/_ŠfF -ŽâL1R{ÖtpÂÕ\¶*Å.4¿¦‡â-^¬Ê -ÃëªY„é–é·V´”,Îg^VwúD·Ëò(1¼V6k=ØD“ך»ì“AöqÖ0nHKÉÑŒ~VZm|ð’VɈ1ÎZc÷Ñ)®Q ¢á¥$šw Îð!«–¤CÓÜf¹øö¯ÿš-Ï)’ ì4rG¾[›°`TéjŒ0BúìóÓ&¨F¿ÃbQ2T2VÐæí¤ç8)ÅÍÅxû!©/ËúÌÐ3QrÁ¾ùåÖ'§4< -¹+9:7ÓCPdgÌÈÉ2š±†bèW7ÑäU½ýfrxÚ>þ3š¾ÂiÕ0ÂÕöARâçGFkJ’êêúõÏû»Oš³ètùÎ/ׯd£:îñ8mÀeóÃxó§zþša¬~—UÕ„ƒmð(”™Å›õu2¹ïbÒ)>ìØÅ㤠h¹âµV²*×pà-ÌMíî-|5Õ¤×È«þ‚SrÑlX%ÿâ?îÒ`¡céFc;Z©öx½ÿr}ý—&žb-ÚZ¸ðë[¯¼²â•¨¦^0>Ü|mDË.!öIg ÆÕú«hþƯ.Í ,.³ñn({`¹çåRÐÆNñbrö½B€ÑüFP’³pF×ñzáf;?='hŠ …lÕ¢QÀðÅŠ¡jOÓæJ§½È¡4,_À¥yó¡Ö(þ†â>¥##‡î÷‹âø„¤H XD1ŠfVº3TH2Bô¼ÃAÒJ=D/•æÎ"Y[Ôr^+Ž1¹C™}ÆCÖ8koëõƒd=°&fM”Î Õéñ`KŒ2y”£GQ®ú¤‹ µNwH0&ÌŒ4Je{šL^ų÷C)5ýq2¾Rƒ+Å4ev»ÔMU+wg-ÜÇxÓÑž–ZJi1VüU0zðªN-«‚!eu÷c¹ú Û3Å™Ã~{„§«ë‡¿KZytB+îT÷n´J‹s 16PŽH–Q_½û¤:“>mªn+™#Õ[Õm³{rÒAYZ‡“Á Qhº^XÙ•_ßÛñ¾Ó-…ÞOOÛ.…pÖAþROöns•Ïwßvo͸µ³£ÑM0ºS£-£5”\tI0猑ÆiiæX¶&¢^yé6¨¯:¸ô› ÔXv'þøN‰7¤òZ<™_¼ýø³]z¬5Td•È¬T¯ihÁ‘ iþøÕßÀZ¢iNkúÃ[¹éÁ-oÀíN8ÍFçpµÓcAIÏ€xN~‘ÍßÍ£fM§«× Âï{Ñɇ‡X€ºª;Ô²ªíù¨€�Ÿþ@}9¥fåŠAyÖ>pZzÜc%Öí’êoBRc”‚³6P×ô–�FŠT§EÆx¨À ÈÞíy4ºíޛɚBJŒ9µ‚«€ÝoC·Gv´3Ýù³/°ã“¨auïÄ^.i6$HC³k'j!ŽHÁ£PŸC%GÖL2ZQÝ¿ÿisû$ZDnkÓi gf8sNÎá®^ŸÏ.¼‹‘2Á˜”›/¿ùßüúGFÎY)°“¥d6ƒa iS7;Ä#HÞ‹0;óÓ3@Ãû¿»G÷ú<Ž£ÓOPÐ8©p#xÕŽ×gS¼ÃA—žŸ@[(ÃFDøãç>Æ©:”Σ½>ô(÷¨/c -´‘OßýòòéߧŒŽÿç¸L{ÛÆ®0üSHÇ‹lm”(®â¾ï)QIí«-[²Û±;uâd<“IÓd‚dÅ EŠ/í§~,úúoz\€à§Ë+Ý{Þó¼ïQ«ÖDOœá?}a$E»¿ps÷ñKE ³„’õ2Û$„X°æZø$KØÀŒ²39%,NM5a„ç`MKr†´ìqf«j$„1ö@ö'´±fOi®¼î•ìN)©Á›mL¬ßGw¨Õ¤ìc<$R›‘îµ–)m£€/F‰x-Ãe•0ƒ0`€hðq`;B×0!¦õ t“êŽÕÚŽYoÍ ¥ïi”²!´Ôf”ÄkÌžÝþ(˜ ´í½³>+wxcö¤Ú«×?5{‡ë™2„ŒÔ Æ¡d ù�U6¦åæú¶•£vJäUZiëÁ.Î×9#Y]¯6æÖ‘ß®Ü … *†–?¯ÇG%LÏe –ó8£ýp[»ðµ-g–¿¨·D««zØ0"1€0²5Šç/÷®~à6Γå‹t÷úw§(dòpv¡B¬XÏæÉJK¡ß=÷z„e13G¹|mÖÜ»Ÿ¾“½q3YµwÎé)R‘J¸œ/òÅŠmõhëþó,À7Á@)¶†ÓN©¢îøDD«µ“ëM¯ÿàa ÕÝ#@¡ã2v‰C!Š]“+1ÚFá[Ú¼D”°sh„³2Wâ<BˆÑ1’P¥F`çÏ?óùWLn’b�8r£“Zô¸‘>y¬9A -WGßBü{¸áAÉU!²Ëù“OéÞ« Þ{õögÖ2VÇžÓß…óÅ×áþk1XÒ0¾´w¿üí_‹§o¡%ÁAQ¶Î™C/>—œyÓ*Œ,Ř`‡’:¤˜VÕ¾,Íp‰z&‹ŒKIq™k¢¬O‰øØ·ìÛ£§²Ó…s»µÄ8_tFZs)Ôg¸#U¯D9`=À.H%ÒážÓZ j,km»9ÀY›`lNjÀæù²¥¬J-Œ=ìXp¶,æJ¤wŸœÒæôÄh.Ò“w¸–n™2ecU—à¼,"€ZŠ”ŽÃCÚä}P΃õòÚ6±(é²r_v¦z}Þ¢3fô)·8³K‰Í2åÀŒvŸukS˜2T=üáó_§ó›GùL–„"2r¡±*µŠE4RAo3rƒ×¿{L®Åpa¤§<”R -íæ축¥³EcÉœ)ö^‰¬o#r•êÑ -®.ÂF¸Í|#áÁJ]»uÔèžJba³e)ª8ííÄ|I>KîÄKŽ95Ò¬Øâl‰È•™{êr>ÁÕ ùPJX ÞÒz\âëÀ+9\¹éÙàðíàøûÚðR4bP “®¥AÁ9Àm�m°û\rûë™ -7ŒNU¾¥¹Ãd~ã¥ÇÑàäÛa¼>ïõâƒÛîñ›Þãß··þì†1û¬-žýû?ÿýúÓŸÚ€¯�ÙœY½sÕ½¬‰Y›A“b|ìžÞY¨áYÿª³ú`uÎQ¾NrŽÎ1>�·Ý©HàA²;‚ÌÆ]Ð^võé§_O? €`§gZ|&øZxb·/Ê+AuŒ.ÊÖû¢Ù¯.RÖó¨ŒQV˜iNømËJM;˜pPboª5ö’ÅË`|Mˆ.0 -Aó¾æO½Á…¿wG9Á›B¼„ü–G˜ -ã@Ý©Ÿøé)4e*›Y”™ÉÑTå•žhŽÈ9"¥„uÆR}s'„À �)Ep">öZóåñK’w`ìÂHC³z¼’€À¶òôÆvE6»²Ã/æ -” øÂ!cwÖŠ³FœÞ³VK�SüßgƒJÌÎÍ£&%´wÜêžòZ -pƧ€J™Š—þ’ÖìC'Þ¨Dš_=ØÜØDTå”D²újm¬Õ'$(³}`7ú¶rY„FiŠ‚:.4½çħéê~Ž…`W÷•héôž(Á>¤‹åüÙÿôÝË?¬ïà(¥á¬ƒÑ0çŽÍÆB÷p eT Å°HÛ¥tÞLÜôØ]Õ‡—ŒÖ0‚^wuË9]ÑíKþÌl¶Æ×ÃÕÝþÅ»«×¿ðV„±ºÓÜ…Ë—œ1ü+Œ÷I©á´ÝÁE²�þnû¬ô¾òÞí_BÞCÅaë’=ˆF—Š?eŒ”5SÑîè¹î‰N_ö¼Þr°ºñúiÁ._̯>ÇGï9wWðîŸn,–·?üüÏht -�üIŠCZøéŒz!Šf¸ öŽ“C'9Ù¿üx÷ñïÉþ)5/n>¬Îß‚-JVÚš_G«o¢ÕwóËÏG¯¾´v¿p±JC®)5D«ø&¥vó„]À ðw�æfŽ™¥k%ÊÃùPb¾¾p'/ôî5.§¸àÁDàëÎèHî@kî6§ÏÌÖ‚d`Škpí%Ê‚7F[•ª“)09„a`-’%L¢¥¸¼Ý>vÓ'Œ9ªê5XÅ‹7ÍÑsÈ]0gá\K0F´œHöˆB§õ5o¸à”h©L˜a‚»ÁAï;Íý\YúêÁF.OÃO±,ÂÁè&½ÇHB ƽPâ BëäEoÜ=õ‡OÿGq™õ¶aø·4iÛ²µR)JI$ÅE¢H‘¢VKÔjɦ-Éû"Û±ãÄNâØŽã$Èd²M›N“�3Á´h¦˜Ü´èUÑŸÔo�^º8à9<ßû>ÏâêÙ‹w¿¦‹6-Wó½»™¹m6·ÐœuVÝCw =FrEr˜Î±Rƒä+p U¥VhmF“y·?‘ªB~A.ÔæX(Dµeî=}ÿO„ØlSkŒKý#½µ[ìß-ôŽ2•5”ÊðJ=SXpèY? é[ ƒ£7õµË ó‚5ü1Å…r3…19í\ëîðàRZΗŒöf„Í9×䢽tp}õþ^~iož3J½Xî+7åõi-½¹ÍdõÆnýDÐ,°=–Š$_ç”^Bé"D -·ÚÙµì#x«‰é ´3¯uy}žI[®°à'äùõ‡fwÇO‰éâBk㬷wÕX=)ÛÇ™Ú&£4>ÿ÷ßþwñÝçp";ë‹Áâ¦}n,>�‚Š®ëÙ;Çoþ8 -F²qÍV{Ç•Ígõíbc¡ Ioùúß½{/>pQ*KËg;gŸÑ–¦+˜Wœö Dn°H¹Ídû°80I I«‘œ$•ß§Ø>©®^.ÿyxò±±vEõ‰il~x -¨�íæðÆ`²àh©e>SkÛþ°§€WY¡‚Fe/Êyp5Ä”1¦ˆÇ‹‘þñ©aÑ•,�f‡IÝà ð Z…ð$âø”PmHDŠ°:8ŽRY-õà7Xaqñ47µÛœ‚ŤÌZ”‚°ª¢$œ¼èÃdwPpú’¡HNЖÙòã'T3f£¤ Œ‘‚{[춷®;ãñT±;8ªô÷ѤFJÕlmC(PéV¡{§¶ü0]¥0’•«o)¥Q¶<Ë*Ó QF\¨‚¨Þvb€(!"£×¶TkœmîK•µ(kBX™Ýí¤ÖRJRiF|êÎù»Ï?®cr¥½¸ûâíߌú -PV¾stçâ§ëÿÓ=ü0VpÖœÈâʦµë&gÜD˜Rƒ1Õ‡‹‘„)šØæ”â -SºO…¨ÎY}êÕèŽÅ|¯i¿ƒ´$8cä¨X‰ˆsŒb•æw.>5Ñjmp¡·ö8}ÁƒŠž¥S¨ŽºƒûP‹8“R’ëpÂ|~Ć¹ÎVwóüìí×öÆù¤‡3y¡°%å+àP3nÚ ³œipòÜÛ^Ê'õa¦ºÏéC^¸ü€è,ÉåC1äbóôͣ׿¬¾ëî<—*©M{bN_üÉÛof{ìm¤ÑXÂÈ<Í×ukÇÍÂ…"\ÉZá¤ÊÔ”÷7¦g@cåŽl(ÖfíE™2J¨B¶‡êä$2ã"®˜ÃC#˜ˆ“*‚¥@a:£»NåÁx7Ê¡tî_\OË‘‰g,Ö˜¦ÊQ®’Ðl:»�•M0z‚7¨d.€'hÀÈ<8 [.»C)€I«µ›o¬NÌ of!žiŽ«£3³7ÎjõËëÏÃñe€’µúÆàÎëÞøû’ýh~óº³õœ5>JÔûŒX CáÆ$,žòdÖ6;G ¥9éÂg|d4®‘Æ„*ìž4¾ÒKRš£¤ZXT(qrÉZ>l®>ª¯>,öÇý§ýÍs!7Ÿ.ØsK§Öò½ÖêIª4D較Ôü¢ií8¼#ð¸œÍjv\îÎzé�&Ä’&J(Ð8´deª›Í§eû‘£¡Z÷¯?|ùWJïzP§5Vµ+'ûÿzöúWkã \]Îg«ËA45éŠ9ý,Fé &(•„ypC”Rg‰d˜LOµ¶w½ùéߧ¯SÚûNT ¥E0–…/…ÓyP3Vî$äŽÓŸ˜ Á²bq=Æ[Þ°"5è/(ë”Þ¢€è¯vWŽµÚª\Ù 3ý¨ØŒI”9l¬¿'ÊÐŒbaÄj]OˆuØ@$ãð2“³”TJí]”nÞœ¾qÓW…la•Q€lõiWÜÑÀªfÜäÄ„Çä}˜„`8NªaF×Ûc:®æ†‘Dn6@ÃkŸ/m±ÆPiÀ(Â'Õyá«°»0™…O0,ùQ.ˆ 4\zk:8áȤ¾/,Þž Á‡p’(£SR=™›ô¶Zê7ì#YïÅÅòÂÖeülnpO(ÌS‚‰'¥…¢iQmŒ -xƒ39VéÍûåÅ‹ùWḠPAƒÁ™´à HD@)3©Ú‚9¤äVB®µ–šötAJ…æúèðÕÞ“O‡W?>ýÓ·êò)'·®.?¼ùËׄRƒ9 -%L*ÝÍÖÆ᥽ógʷؤ+Š'J°`Ê°1Ê�†wû€mp1I$,¤r}!¿ÍHp¥h„Ü(¶¶:{ׄ‰®tŽêöy¾¾³´}¹¼wM§-/ÆËZãÕÇo¼9˜öШ—;œºL¦ …eàÒ(£¦K�žP".[Je=gmµ×ÞöiíîwÀó@8. †?"‹ú¢6·ëçjcFŠbßAËrFQEoŽ«ÃS¹„†ÓJ®lû0Ö&!fw/~^ø±=þ¾²rê·¦Ãi?ù‰ËгþÍÉ«þŸã2in»¢ðoI9–%sLÄ €HçY)Q²(K”,J²lK²Ûv;m·»Ý]íÚYd•ªt9›Te›ÞeEþI®R…ªÈÞ;çÜïìUG/ªÃkˆëõ $… ¬â¯GɦÄ05Ã:´ÖÓ«Ekk#B!)†d(Â&Ò2)øŒ}vs÷ü‡«Ÿ~Cñ4(w[TÜ‘îÏ´ên¡y0 rb$¿Ñ_ -ù*Á¹B[2;jq ›hYÅ°µ d#œyÊ@!‚ö*ë(iqb…á&æŒ8È鸽£`çÚö³çÞÒ˜Q‹¬fóšŸ3Û…Ò–S[`Œ‹ª(—³‚“À%0N.ßd•&Áx9µÅk ØF0;ÔOè,‘”£Y2ú~ç¨PÞ¤…"'J/_ëÙ£ýÎáÍäøÐV£|tñ±¾¹dµª]ß«l>“¼m»µ,/ÕÊÁÖ¶¬9�EÐ0Õÿ‰HÆi[”¥æ‘ vi¡t½MÝÛˆctÁôçv}Y›\í>»ÕKÃé?ÿÙh. €O2´‰³Ž ´œÚncúô!"€Çå|?g�†ÁzpÁßD£kTæ¤àŒÖã”jŠÐ2@zœ•Þlç/A¨º [m(>¼Ö;'ÒR4 ñ‚ÅÓ¯úIL¢$eNm™µ½;#W¶yk :£áþ ˜NÔkà»îîÁ’j+Í9iÖ’í±ºÝs .(¸Æ–Fm °¡8Óf¬…²ð¢ÉöÙÞáõý$`vš¶@9Îè¼1ÿ‚}=œ-ú˜Ñv-i/Oì`®:]h1HJ¨"JA6P¬8=€^æž:ý‹îþ{¸ÉWwPÞ(”FýùKÝÛ$…rŠ´S„•BµxFˆ&9Pl8Aÿq= "#| -ÏsbfK_.ûãý“7´^Í&̦Ë{öã×ÎñG%XܽÈm-oOÞëÎ(MéIŠg cJï8Õ Å[iœ7ݶnµ °P@|€àÖC„‡<D°\<Í?Œâ„APÚMÎœäÌ%WpÞ’ -Aw¾šŸ¼<xöñðæóòú—³7·ÛOÞ{[O³jµ;:Z]þ A†ÖäbWq§|~¤¸ó¬d(‹dÍJÀ ãf…ÅùÀ´@§°É9½™+ö½ª;]B€Þä3jƒR’36üIoz~ýî‹êåbšŸok.õAÞñZÁT¯:팞Às�fbe\Ń#ÄBHÃ,ÇžÞC5cr5¯ó¤¿x3:üvy}ëuO ÖÏŸ]þá�‹!‹âm¨c—ô*¸©19–‹-Pj£ânÚƒUóèûÿzG'gïþõïÿ:Á£h¦ÀåÇF}Œ/ÞþüÛËO_sÞüA(KóžböpÎ[„b³4gרìÃé€ÁaUi\9uWoq5”V#I-‰›Fy&Û.Å R!–d@)B¡çB -€4mÙ™�´€kãÓb÷Àî-«³…öqΟ!w®Žžß!C$BDàŒ/©-J¬`YbšÔÁƒÑ”�œçôl# †³ÝÊ`´waÕ€«W{Ï?U'O*“3²Úݦäº[Ÿž88ûœ•üpŠM‘ -+²9äõ¦j÷Y¥¦Y w@KnaPÚæô¡P³Z'ŽkqL‰§EðZšÐ"Ðq’<‚éëò… çöTwЛþú÷ßÿùû¶OÞÊvbÓî¯ÛÓ§³½ëÅòuÁë^¿Pk@þÞŒQÚH&¿¦ÖCX$–Å)3…*Q„_ãëÓÑ8O²ï™åéæÞÍ£Õ{€ó4SÄE<Ù•û+x‘/MiÉ›ì^¶'+H¡Ò€‹‚O >—«ýVÿ0Æ#1 -´Ä+ÉÚQDHáÉZ’Þ°ªSF–sx9€pZ‹¼¿SR4†²ÞœÌ/g‹›x:G¯ÀcÝÐcð¹R–5½úLTË‘(J±&%• …iþ,b÷^gúöÈGÉWWµñµéïTZ·¾G«wȤíVÿ1  :Á¹âîîéíÎÅên…âœjµa²£„ü‡µØ½0J*IÂfs-»þˆV|\´Ó”v¹¿ž„œ --§bíM»·2[Ç|¡[î<6³´djÁV}~5\¼=¹ùòêÓ×o?ÿcõú/¢ÑLÌ X`H’ۣљ!tÀV ’d>YÎÁPãÄ"%Yr©5˜_\}÷çÓטhɘ½U}öÊíæKc»¶#;›PÇØ|ýn…l‘×Ú¼Þ•q{ëª7µ —fmA! MÙ1܈âfË^ÒR –"äh’F)ͦ‹‹ËŸš³ÕâìÝÙëÏùêPÌÅÆ®Q=¾ø~¼ø…³…‚Û:<ûS»R*ÁX(åà´Gqh‹$mÙB4ž&؇Q†~$FFâ ì•Û½Ö¾Rl<ûi°{•UËRiÌ¡2|pg†?Ý?ý®;=‡˜âÔº×<pëÕìAìÄP)#îÝ‹¦QÄ"øµP"£ ¢²ˆ2BÓ8©šÌÈ¡8,Í«‚·U™þ&-z0’x©bؽDŠ‰b¤Ž#¸¬�?ѱDI3¼ä%P!ŒÐa„ÁS5êj¡¢™¨N}þþ—ÿQ\&Íiägÿ(qÆö0ZMÓ4½Ò½ÐÝ4Ý@³ŠM Bí›Í’¼ÊŽ/ã±U³d™šI<‡TNžäªTN¹ä¯’×Uº8ôòŸ÷y~χ½³·¡\^Ôšz¦ŸmìÁRŒÊIi Xx -åH®órÍÈ|Þd$-ke›!”ûÍmo˜4ø|€L`ë§CPh(¦LL£Þ %5h4°\Œ -mË%ÄÔŸìÜA®½¯fj{¯—÷Ÿ•;íáÙÒ>4¸'€ÐÝÜÚP±ë!LÀi=€ -cˆ†¤XÖJ³Û¼V™]8ŠÄíi_%¹™ƒ¾s}|õçÆàÞÓ¯~|þî¯Éè<OI%R, -FË,m�¨×7_©¥§ªÝ£ÜüÍ]L¤ç¤}h!l%½‹»·ÆC·ÆBˆ1uŽü’ªPî@]\¢œmlQ‰L”Ö2³Ë‡÷_ýðóÇãËëtk[)âÉúÚÑ›ááË„ÓÀ8#™ë·çåö®‘íªK £0ƒÐkÓR1S!€g -‚e‘q(††g,® -s £¦Ú}Fn|ÁʵÖ÷9å-;feeaÿjã캾þÌí?Å`T-•WÏŸÿ1&ZSAÁ$ÐL”±£”=àñ˜©h•ÁÚÙæá—Ÿ…n{| ’Ë©î7[ï†qe¶µ¹vçE2ÓÅh‹JIÑe$—¤¤ ®îzg^´¡DÌ„ã0«íõ“ሄÆÔ(¡O¢”Ì)n("€Ò -ÍÑðಿsiV7+½ãTqæ8Ø{Î�ÁF J_Hð‡ÄeófF6éÅa@a,á -ÍÙcC”o†�?g"øÖí©Ïnÿö³qϘ^iJ²Â‰éz{Ó)õ!Z5gRcµŠhw’…‘Qß\VûÇkûÿü÷ÿî¿Î˜H·œúºY^…—³CJ)RòRvmçwkM¦¼Á`˜œAâà„RšU’ —cœó‰Q‹ÕþA{õ´ÜZÿòÍïŸ}ýc²Ð¥ÕÙtuתl—{çÃÃë…«ùµ'Zv1“ïß9{%Ú¥ -AɲR¨È68[!-$AðY„²&Qu -U<^j"ÀÞÅ ÀQ8ç»'/çGRºž,.gÚw+K»Û/÷ïÿpþæo••{õÞþéå5%=×Uì6+—Þ¦%Vª(©.ìÚtˆB £Ó’ÑSÒ+�B8mÙc8¤Ue:Àx¦°�fDi—’*iÀçsúlÒí°zJ.œU„ÍHvgy÷Ewõ¢ÚÚ¬u6HÙô¼é´a‚-„›TE1ƒ‰gêù¥ÏxÅ%œÑ€p>GëMZoÄ„|gådiíV•×ŠzvNsZ l6á*N‹’K4—©6Fõö¶& Q\ã‚ „ŸŸO³2Í\©‹ q!á´‡‡ûÞî>úV-mr-ÊæÖöžþã_ÿ-W¾ #cI›Îh#ø'¬RSµÖè•ï‚H¦¦£~?²xL‘IÝ,Ó‚…/—§|䛞‰ˆcàühná³N¡ÿÕ7ž6YœN²2²çvÝÆh´qúÝOoN ²«‹§õáÃTe ¤Å&Û˜ÂÄtºùöû_§}ã¦Ç3æ…’èõ3@Y,¼œë-¬ß»|/;s(›¦õjܜՋÝL}Xz;´âZ•»p$Y󺻜̃±TUg^Л©ìÒlw_rJvuALw û ¢\Ú‡)^D‚¬”ÌŒN~2œ¸=õAeœDf¢\TË»w^´W§iVV‹‹÷šk—«w_?þ®»ó$U]]Þ¼øåãdh%l:®×y£i—•ì@LõVž"›ZïX0L@E¢È�~ŒPâ”Æd�HŠá8*o´Ùíêò€Í(-NŠ]Pl{å¨3º'˜Õ©Aø¤ -½ -ø Ä’Ÿ’7#h‚ R0Yàœ¤Ý’ªa&œd÷Àú²Gjn1ÂePÚª÷RÅNŒwH±`æWÀŸuwEÒ[dÜFc -X+8SpÿDˆ¤/Gq `8xL1«póTq±·÷bíäíÖé»ý‹ë½‹wýÁnœ·¢¤Éˆ.^—Ñ°S;$Ÿ5s½BcË̶‚!%)Úi‘”ö…¢qßLŒËfn„:#Zã>ú‹ñ(‚Ê°Lq�W!Y·Ý.7i)Cðp¾U]]Øz²}þõöÅûöÞ.:P:6.9«EÈ%2Qöfä -§!v»£c„ÖÀ‹™Ÿ¬ (#1±}~E›Å“2ªJ®w®¬^X½#Öl$ŒòÙ£o6®"”Ž3i€(³0êm<î<³J#Ál¶Ú«?}øµ>¸ã¦Ï¤ƒ„ŠÒ´›jïTÉ PRß:z¥úŸOE&ƒl˜±q.M :Qº2¨´Ö·õw£qx®»óBºVîîÞyøþô«_½–mnç:‡¤R0iœw:¢àK¹Úf®±…PêÓQF*™>Áæ :‹à©q?%&UÁ¸—ÖÜ•TmÏíç»'QÖÉ—–¿ýÓÇãg�êвmsv¨•j®¾Ñ&J¨ŠÑœ[ºÏ*uh�Š*BòL`ëjNoqp|õög�°5:Wz!/HV7Óº;<¹ÖóÝÁæÅÓ×i®œ†¢Iÿ?ÇeÚœFvFá¿2åŒmI’ˆº¦7šz¡›}S³4‹‹„F -¶[ò"[‹myâx™L9“)W“ªT’J\©|ȧ|ÌOÉkWÝpï}Ï{Îs829ø¯í€Œ:‰ˆÅF»qÑ`ƒÊFN© Skñ]²/ÒN–·BÉÚB{gy÷jóñpº‡×l¬>‡ Så\kßIÊŒ˜ƒ?„fjÇ$0jX½‘ÖAepøS™¿P¼ñýÔ¤Æb²ÒF“Ç`$ Ö�°®‡I¯.õVö»ÚÉ××ݪþHÓâ”oŽ™ô6Êâ -X°€Ó¦¤B¼>ZØ<Ï,ŸbR‹|f9^Û²à=1½Æ¥WÅlÏ^°!Ðè<s&Úlaft@¤¦Û“@qN«‹³`¼aµ6Š– -Þ˜ê`$Ai—ï>U‡ñÒÆ|c7½°ÉH -P· ¾Îf"‚ìù€ÇêBïøé[ˆ[ã:Ä#±Rænv…ŒÐ\a–2àŸÉñilºÞ°b)ä@½Œ¬¤rõÞðP]Z]ˆÚol^õÞw÷®+ëÇ¥Õ€")^ýøùßÏ>üM‡ð6LÎ,î5û/ê~\Ý÷…›$ Ñ9¤D• -f¦ÔmsLãÔÌ£†d:”n?8ÿðäú(3fJ‡ÍD”Šóµ-¥v/^;²{3 :)¿æÌÛÉ0ÖÒrò¹¥cÈJ‡ÛB)C°ðWŠ›²B�ÍšH¢JËìäç¬>R(ÄÊC¥y¸:º¨÷N9.ñäÙÛ¿ÿë¿ÅzÚ@{¼ŠÇ§àlÞ†…õ6ŸÞâ%|i'!OêQ½Í‹s uw [ØYFóÝ^ÿðÓ¯ÿ\Þ8iŸµï¿É¬=M¯>jŽ^ww¯îî]&+ƒŒÚýòŸÿ½þý_nžåó4_2Ùƒã䊟+šíÜ;všWŒf\câý~z|Â<k Í®(Z¤5–[£…<¤)Uq±LH‹L¬ `O -óRn9×Ü%ÄʃÂÚImxQÛz¡ö/¤ê.iHñÖ½ã·ý{¯ÜþŒ›Ub•íPa@„–±@ÝäMéÜP£`¿10 -5Ljr6"ORVB¹vº²ÖÝ¿Z¿ÿr÷É»¥³huËÍA®Ø7QÙ\Ð5pÂãþB¶~¯Ø>³kN6;k¡Ív¿…Þ„é-Âd°@… wB™»”Pœ6SPgP*<k!gL7eä’<¿’R»ðV.¹i)Yº›kî*õm1½)ô¢Å#©r¬2:8oX1^HµcjOÈ´`YÜÁ¢ÎÆNé”ݹ‘*t´FJ¿‡ÈWŽ#óíÓç?Ö–w§gQ—7éKð…>ÄîÑŧçïÿQßzí SÅrw÷ø%îOØ11šß(¬<«ö^Å«'þhÃ.úOßd+[ãÓ¨F‡M +xr½Äâ}»'¢.ôk«{àÌ(ss¾Ëw+ÝÓT}OL5Á6J›“:lbÒ{P:C‰¬Ü0ØZƒæ›¨n“|hÜéM`”úBùd±±Xî ý”iîË…5’Wà†n*ÂEÊ£‡¿}óó—¥þ#„H°¡¦Ç›³â3ZàvûøÛ¤F›0ˆï~392ëÒ(³Ct39¸?ôÈt;²Ñds¯sô~ëìSaý)xE¦:ìŒ^žÿRï>¸øÃâàQH]U×O+‚ÅA0¹Òœý¼°þU@£Du)ô©è²ÕŸšuÞšÐk,(,#&|ódÜAÈž@–àrÜ|[È.mì_]~ä•V¬²®,$j;Rq®—:Ï#ê&Xœ ã¾àb3Œ¼�j'¤–7ÞqsO˜Ð ÖŒ£PŽ˜ŒÞ²)ž@é¤Îîw|õÒ’Íå×™1Ÿl3T׃òAÿ$—V—v¹%”–D¥S<ß;ûãúá[!ßõEKžH«÷Ð+ƒ½p>çdç2‚1 7.'•6¬ ¬¾9dBE"ˆÉVR]÷ø’ÀÞ�$´¨ÒbÞ+æ mƒÇ’Ú·y¤~ÿè‡÷ŸùH%$¥y”m<H”FÐ2f-ÔWÝ:¹Ó'ï -‹Ûw´.ƒLÐÒ¢¨ôÓ£Dm£#gçïÏ^OÏ¡&„ƒ&RíŸ\ü -“ -*&§ˆ`ܧÏ_6FO ïƧÀ„^¹Å¥z˜W™Ð"f„-6vâ•MÎ … -Îåa‚x‹ô'OϺøÝŸ„Ø¢ÕÉS|!_Š«ýÕíçÇWŸÔÕS7›wÑ)š/ëÞ1éÆÍ©Ûã†=nv]dvÎÊÝ›3Û™H²›#§fè•"Z3Øf�v÷ÊåäÂvºqàb>QÉ7÷óˇ;G//ßýYimRÍÇOøëêýÍþÕË_ƒKFª¦æ;�\ª>c¡æAÒ¯¾¨ÕáÕq;êDJ•Æg“z+ž�».o‚Œkg•Þ‰/VZž:‡RuSªÙÔª'Tò!ÂåHy×^2¢ƒM˜©!7øâÈäËÏ:BV*‰¥`faR˜Pp‹„ÉáÁp»Ó›2 �¬JË-D‹ýúÖust]ì<N5öåbŸB¢ºvïE0»$̯,n¿¦£u:¤BcíÚ=YÎõ}‘ƤýRÙ -èe¡]¤—1ßüÍ1ãÄ´Ãhgq2QøäªÉÁEÑŠÝÐýŸâ2ÿmÛ¼Ãøÿ2ÇŽ%ë>IQ$ER")R")Š’¨[²îË–e[>âØŽí¤v|ÆGs4iÀYÒ$õ¶®ËÚn -è°èOö¯ì€?/$ˆzßçû<ŸÇŽZ\x¦±tøäêøé7Ó«'jv¸Ýâ -x}\€KCÛ3 F+á£5½º¬—‡Rªk°ú¯Z& ш‡ˆ"¤›†P -FˆÙr?¬dnl´Üºýpnç¢>Üäæ½tÖî’¬zñúÛéáŽÑ ‹ûé´‘Œö ÔO@zd+ÃTúÝ'“ÚG"©PÑ:T ¸¨Vyrñþäéû�—AH68Ív÷ÀÌÁ…D×…©3nsSÅÖ&Bª7'<^,9‚Ó:J(ðž×®Û̬Ñ^¹úޑVè @ŒÔ“Yk“àž³k´˜¶!Ê–1©ƒà\º¶˜íng¶s5%?Ã*SÙÆJëQã¨4³!æÅÌd(t^QT{›ÁhÐ¥q°Ü�´æÖ$âðáž&VÌdõCT…µfsùdýôƒgSƒû³wÿõïÿœ<{ÔšœÞך÷¤â -¤ÓôÚ“í³oº«ç…öúÙ‹´Ö1¡Q.3—hÝÓ;‡»ï‡{_WWÎËÍõ¿ýüßwýÕŠ)'wË2¸8G I)Ýhf˜«.?z¹°ýya°[]:*väÊ|eaXeóøòàË?ÅJÃlcuÿé·ç—?ÜÞYž;ÓèyURl˜<aƒp`’Ã'{ˆ.³±:ÊàBÙì‰\ÁáãvÄõꪴ\§…’W^–‰äšƒRR2õB}.^œ×õ±e•õSIh^7'¼&;MãìðÐ�TBƒ…ÄHÍFá>Jýx1q:’IU›O3£7ã%"vüŸF2b¢Qéßï,Ÿ„ä)„’˜è!›‹1šQ›“ñ`’ŸIqjÓå‹X´ÉJ™ì¤ž´àv7cE½y§½rç+è}´ã"IkzpÄàq¨{\B3»C`Ýc“¾ “ßáâ®ßpŒŒX®˜¡uz}Š…ñ†bŸ~j´X ƒÉ÷ÉuÓȸcÌä -2š1’M d HRv 婤¦SõÅbo3ÑØ':Œ‘âÕXi–œ c9JÌÉù¥XeVÂN*m™ -0 *¨½6W%bà:6င¼™ŠæÀ+2µÖü.øÝþùEoy§ØÝXÞ½œ^¾~øv¸ý,S_æc%1^ËOÍo|É%ÚÑÌluᨿ~^ìkÕ¥pºÍÄŠÉ\çôÉÛ½Çoì¸Ì'û´ÒŽd‡;¯çw^'Ê‹ÞÚO?ÿvüü]8ÙÒ*‹ùÙÚpçàù®þþÛ÷¿üïÍ÷¿Þ;xùá‡_¾z÷!7Éͱ‰~ljµühóôÏ3w/}\‘fõZÿ³Hºovó&7‹Pª‹Œ3‰ÙòàDLÏzJµ·Ê9V®ózVk�“T¤RèÜ_ÝCzX͇ãU¿X.twËsg¼¾èôë^*Òf(¹aq1l$íÁ““·¹D£5»…q31zªºJò9+£l¦><ËOßgâMJ®�;° ”\8o÷|tøga=¤” >mváô`ã,]ŽR(9âÃá Ó|Ééá'L¾ \¶úDÊc¡£õ´êv RÂ:Ô¨"QÙh Ô>fôƒ®¸Xç -ØÇ8HA_~¦\vcQЪۙ0ûÇM˜ÑF™íFÆà<yÔˆÜ4fàÂ?«ûBZX«%ªKÀ`Z²Ë¶I>I5€£‚j—·Õì@Éõ VŠ16–Ci™5¸Ô,4 †&#©]9Õ0cVåñ…^`jtÜ>2jáFÄ@(ëÁ`ÞS�]…öÆâÖ“ÕÝ/ÒeB„ª´�DR¥^,×Á9°$-sÒ”¯ûhU-Òe&šÇ¸¬›”½”’r¢ZJû‘TÓä %*‹Bz¦ 1¿Wî®Å“åVcúÉóß·—6y%ßlï<z}tquvùáìò»ãWkGÏ{K›ç_\n?|ÙìÞ?}_[ú¼¾ü¸¿þ´5<Ôª+(*ñÚãW?vo_7 °~6EË5iênvfî>ùâõ_xeÊâÛü²™Õêw›K{o++|êÞƒG/¿þ±ØÛò2)px[D¸JyæðÎáUº÷�jãÑù«b{mÂNÃ9ì¬ÓG˜\¾³ÓX8‚?ÞšÞìÞ>-ö>Ó[kd´èÂU\ÈÓ±Jª½îòÍ+pèq2¬ÃY�l L‚׫㇯~8Š^k;08•ÅÁXAÐXb®q‡à²T8¥¤;`¶zç£õ&ëôÉ”XSLd†Ê &šRfšŠn"frÒ7èµv0ãÁcàHàK�‡£È˜Ñ7eÄ�æ¯:ܘë#·<4R›a}–MvB±:#ÕÌ®0/¦|Œb´ãR„Yˆfæ”Òm©¸J´ Çô:«–m^Fˆ7õÖ=µv7ÝØö³Y;ÂOÚpÃ$"JEI2ÛñÑqÛè˜ ¨~ÒÁø)‘ èT¡y Æa]ÐjÉÆj0Ñ$"9VéM(nv`H�¤^”óËrñ¨Úí—](Ï« ?—5ûíHÔÏ$aš"z—ŽÀÀÿOq™õ6•Ÿaü«´²8ގϾï>ûbŸÅ>Þcgw‚BâL@@Ê ²5fM§R[茦3•zѪ÷U/zßÏÑé\XGÇÒyÞçù=@qà“‚Z*( ")ú¬ä9v½™ö³î¦j'ŽŸ W÷VvÛ7âÁv5šÙzmi¯³9Ý<>K׎6wï>zýýøæ8I3ˆjâ -R°1:¾÷2[;Bh׎Ƶæu/ÙÒƒUBqŠ³m÷öéZª æÐnîg맻§_>|9"7ìxôßÿýßÑÙÎê‡Ë·£ÍÇ£[ž¾ûûñÙWÝ©Ÿt¿ûóßn=ú²HX³y õÝúêÝÁîÓÓç?ăiÜXÿò›!¬P=OÚ%ƘܻýöìõO§ovºÓÁÚÑ7ßÿa�Èöøìàá·_|ýËêÁ«±óäÕŸšÃÏ/ÍbWf±\QpõNÚ?Ø:z¦[íg/?üüÿÈv—µ–õÆ è_Fvpøø÷ÎimœQLðâíÇ—ïþ´·áÌÁ…æŠ|‰0i!•+‹âÜ"wúàüÙ«ï*”ñÙÅ…Ï.,üê×¹‹—±2]·’}‚õ'‡ 1ÉN_WD«=Ó<åCLœÍˆž-ᬉÁo-1’qméx´s÷ι՚P‚Óìï¹Ù¤Ìy% -¸· -f^Â5IN#e¡dÅ.Wè|E ”„Òš™›QJZ&53€vvϦ?lß}Ó?xîõoæQ™`t0dŒõ(¾–«è%¥B˜rµ §Í‚ëÍ-XBWËŒ·€¨ãV(‹â|ÃîËÐ]ÔßÜ:]QIà¿,çÖÒÕ¸=æõ _¡85„1êKË7œž_;zê&kQ°sLË!ª×‘´ˆálIö%(TäÙ<]!QÍÆb‡d0ÝÊd¥ÆK‚¬’ÊÕ%ú�|5ô¸êw£teuãóÞÚoµ¢¥éÊþ“öøNØëA[sS7Lý°ax®Ï¥ÚÔž §”è¦â„ñägÛr°VÀ-¿}#ÚÑÆúþ£k·žg›·X9ìûÜ™ö÷X1®w®ÃPØɺæwú€|œv4§GËX -$%5tÇÏö`EÒˉ£Éêä6TZwxâ N²É“ÖöÃh°ïµwy=åx}zò›ƒ»¯T§áhT+ §ÄU§W(ñ…냷ï>¾ÿÃOe¼t•˜-i‹T2à?aïÐ;ÿúϯ~ÿãbA˜¹\É#šdj˧ƒ£×%ðOö[‹š«Œài@$Ááû wî±zlšñõéƒÎÊA™21ÆÕœ!_Í=!(¹X¦òy”Äi£jàŽ“Œd$ÉÆ©žî¨áŠ‰¨…Û“['§çAg¢…CØŽÛšr(T\ÝLTB1…áCNŒd-sãMÑèá|ÌK‰i÷³5Z™n~Ì@J$Jš…²kVõZ£?É—ÄùEž…<Gr¯Äb5ª#h®«n“¯±ÖZ¿éw¬xki|?ÈvÎ]Þ8îÂŽpú ÎÚAP#ø¶f`IÅ2áz ¯>úÔ›£-5QÊçä¥= a³¶YϪM'ûѯD�TYK¢x·XDÙaE‡]-0BZó…O‡ì|,–Ø0**Jr(ª©d÷)9-ár<Ø {×0Fç•P÷;’™nÛ»U+)£¼f¦i{ EŒähÁ¦¥ÀðzšÝ‚í@ -¡*+G(åÀ9P|�oHJ7ŒP†elœ6!mõ`È© «¥@PÀKP»l¿Ã N©ÌÎÍ£0›´à_¾Z¹:‹‹´ (ºæÄÑ°ÕÛã”ÚÌêÅÙ˜Ö»`¤òª%ªú`y+ˆ—fæpVkÛÉÎÒÎã“sk¨ëð’OqU†Ó)€ÍâÔ@q2¿±æ¥k¢[njûM^öàcA‰£G‹n¾D3¬A‘2K‹–aò§é¦ x~k]tÚ¸à¬åzÍ£ã³ûOÞXµ¯'µö^wó¡ŸMóIJ© lŠ «4ïT•¤ N8µ¡ºË²Þ¢iËw[÷ïþöwïÀD¡4Rp1Ò¢‡ã]¸£"Â.hU-*¤2LVÓÀº%=…ÅsZÈŠv6ÚO‡Ó°³ç6'v¢Ñ%Y×VÜx tE AмVïœÐʤ…`F.‡U*¤eÕU3¾8“Ÿ¹‚@§c¥&§t!&P -Ð÷³k¢Ñ*6ÎÕ!Ç+”‹ó5�c0FÏ…yÃD‚Ösyj6G�"X\“|F0sy úIs›b]’2ÀvX©KBI%L‚ly±Ì€ 5+´š¬Õ9ÁÂq¾R¡%Åmt†‚8Á -6#Õ85‚¹€vvuËå@ß™™bn‘&i»T‘q\y›&Á=@fÕåÉÓë ¸—H5FuÕÁ]Èaós¥bâxg>‡-,PÎêPµaf4ë_¸\‚(¼t¥|e°‡þTßJ¬f†PÁȈ‹—‹bµUõGN´´ÆF8‚[Â`ðñ J”¦x¥5Yz£¸³i…š‡RÃ/–ð2*ñRÁðVÚw¶î\-0yl!‡äre“UÅü?Åe¶”0…á§AE˜.4¡mº¤¥iJ¡tA¡Ê"Œè3.£Ž·z¡Ïà«zx€\$çÏw¾?WOóÙÒOgÚõ“ÝÝkµxäÉÔWžß§å -6‘ée¤ºÉ£Á<ÉÔM ';Ø€‰ €¤¸”¦y¹\oŸo¶O,HÒ¢rÃB3¤ÝyR×Z5\Ô²Ô‰t»dýµÈ†—û~¹1)øÞ¢laó)XmŠÙ¡ºýH'{ݼ0/,}1¶XÑ6Àó–l‹wíéŽ$#UÕ›tÌž„âq¶ “k⤘ÈRœC±ZyýíðêSd;ÃÂ(r›- >‚ý+_bvzz®¨ -yyûþúýsüLiSŒ\b„"žZ]ø\Q»�êÄ>/ŽO=J¹ç„>‹ µÚ°¥À™€´ôâ9‹fØ€ÁŽÑC˜ÕjMUê*2m6´Æ™|ñ/À�)Ûkò endstream endobj 23 0 obj <</Filter[/FlateDecode]/Length 36532>>stream -H‰”és÷Çÿ”¶,˺µÚ{»Úû¾WZi׫Ëò!Ù²mÀCp8b5PhJM�'4¡!!Óô€ÐN§“iÚW™öMzδ}Ñ™þUgžwÏ<×÷ù<ÏR.³0%9´œ–¬8IkîÆ͇‚B‹aŠ 8©S¤& - Ìb‰ª5–êÑ mV¬a”V(‚“'‹EH h0f*•çEW1"`„+–«™V(UÆTÕ˜ã<Wdµ©9ƒ©<vr²xb"79q‚cIuëµèÛ÷½x®„ò(¥ÁçôD0ûŒ2]ª�ßiì?üôWª0Ö·¾JO•qRÒ¦$õ¨k˜ÁÁì\»1Z®HT0 Bűq’'¾i¸?=»¥Y=^«’O�UÖ–Ù°„ªª$`)’D» †E*†&×ã„” -àa’&¯[Ýa”ƒF¦HL¤rcÉV"ê ’uqÆ#YŸáÝqN^t šA7ZØ!§uœRIÆ{M·íÖû%¤šÎ¡¥Š€“¦ 5(Ú€`T•(é%Ql¨&Š‚2LÎòâ¥éÁ«D¡Z³¿r¹ÖZË䉱¶&Q´V<A‰w–êEˆ‰§GÎ -I±<ÇišÇó&Ç[¢`$£DÜêî~Ÿåµ|)ˆÉ‰bf -FQQVCEÇ»C1Ð>IpF‹•\Â1²á{sh¡ßò=¿;<{q±„erp>—Š€¦-S³øÔÉìÄw³0,ªVOÖ’PTÉÝ(îÛAïÿRZµ:îÇ(©‰‰üÔd¹TÀP„Uµˆ©šP™,ä±2Ä ˜Ìò!Ã5aL›ÊÀétÑ°Û¼d²È8FDA®yþŒÈû(,çs4Ž«Êç²X±Ì¤`*UQUwL~¶ŽÖ–ES§X.h´gæ—¤#6AS,C†µFa5ì,¦¦ \'Éu¦ÃZd©RÝVg[.]¬wû²Z„iè‚쪖M‡^Ü톗wÎ<z|<\ÝΗ±\ Éæ˲lXºÚ¨¹®eÒ€ -=³Ûª›:Â9 -‡4‰ê$öB?¼y}çà`ïÌ[gg“°a¹¾ËHVâÓE&[ªær˜m{A踾é×›’R³¼™1½Œ«4.Ñ™ô—×ÍZÒšYËpZ•ÕQ\˜Ê¢'&J0eVÅ8W�cé`„vÝh~¸±±uÁu@qãƒb8Ç Zµ¨/Y«Ôzƒ³N}Æz²@(GRʘ^4LÓÕÃèœàÉf[Ѧn;šÐ›Â f™fͳ5‘Ñ$ÚPÀÚrk{û´®ë�Ð�!oŸã\’ÔÇ¢i“ç|($ -¼Daß2G½æùat}kîÁþÚ½wÎ>ÿðèúÕéF],ŠV ËB0ì;'¦&Ó$!#e’£M›žWwϲÀQ80Ç…UIàCQeÑ0ô†ôqJÊd˧N¦S…\ͨL–,•¸Ô$>‘BÒ‚8P˜¢:NzlUfÉsc@ðÄ‹bCÕã1K“é"žÑ¢JÁ%MD#^ìj›ËÑÎÖüp1îöœÕaxû¥£{—Þ¾rz4hŒæ¢8ŽÝ bx=•Ê–K†�®Å&ï•®.·†ƒ0/0üfÝ°äé¦9˜µ/®ÕÆ2|tü½ÇvŸþðÊüB'W¨ä Eß]˨[bÓ¤#œø—Î$ëN/¤×gk›í®~ôèêïþî?þø³?óå¯Þ¿rq.‰eÓVy5lƒ®ÖtÖKjËõ3+ÉúR;òµNºb8…c5ÛX̬n,î^¾øÁÇŸÏn,cô¸©R‚Çs™UÛ™<6yê”ÄÑf8˜ë÷{Q•Á -P0g´Ð?¼sge}-h†»{[3À -à4'f0=Æ©J™²b*J;Šçz³qÝŸiê³5öú…þík›çF•Ž}í\÷ýw÷~òdÿõ'÷_ß<zpã¹¥$y��QÅ1žçÝîÈ¢©²œ«±ÃDÝøkóÁ…ÕðövãñþgGÛ¿~±ÿ›þý—¯þþÍï^>ÝßßÛ\]šóL«Jó%`„$¨ U 9 -8<˜«[£¶?ßÔ6‡õÝöùÕîÛ;§î_¿wkûÉ»W^~pøüøá݃[+ƒa;i¸¶ÌX!ã¸T*1é)¬TfÓ©b:U(`�Å<•ï5ÝÓÃ^äëÆ/ô¦çû¤%ÍËÈ©T!“E1´Ê“¨/` ©<j77ýã[‹÷‡O×¾øäî—¿<zõ|ïõÓõþáÉÿöæëßþø§Ïï^ÛÝè$±(*HÆ¡¼J38צ·ºð¥ywÛ»µw¸×;¼Ò{°?z|{ôâáæ§Î¾:>ÿ¯¯_þç¯o¾úÅáÑõv?d1‚*¤$ÙŠdò4ípèZƒ:X•îljÏ:oží~þÞÙÏ~´òúÙÖÿ(.Ó¦´,ÿ™éš©êîôØ.¨È¾]¶Ëv¹ì;\"®ˆŠâŽ[×£¸EƒDبq#Ñ$§»cŒÓéêªI×|æœz«Î©zÏóœ=ÿúÙf÷›ÍŽO'3ß¾žï‡†§ûžêl•\ŒÃÒ0i€ËW‹Y¹jº#W_Ä/Õalx³šxß(*/Vˆ½ÎŒíÕù^4º»ºè÷ûjꪬl—œŒEbßßKú£îI˜iJJ¡%Œ8)3Á¤Kr\_Í9gü-£¾Ú§s¯_¬LŽöf„V«Ål«/¬dÂ鸔x˜†–è<1ÖeỳûëôúxkæYdülwzaб2d}÷jòîãæç÷O_¯¶|><u¹í"! ‰NINŒO%âD–M3Kµx_•4²Ðr¶;¶µèï3…ÆKöWZ>Not.¹>Gg®_öûôý êšRµFÂSÉe\žœ©bô#g¥™e¨r¥«\2Ûeõ»õ~·f'è½8x|{ýòòdåÍÎà—‹ÿýöËÇ膿9sk¶>º;6?R«qãÓ~ø1%öè€IM"¤ÆSÒâ rLúÁ¦#z²Öru}!¯Å&i5o¯ ¯\+ÓÝÓ~ŸJ*MÃPq&‹DÐó)Å*|u©÷>{¹7/2×´ý¨éh}à—£ÇßnO.O‚‡«ž/†o/V7ç;ª‹5JÒ˜„I!Â�*W„sèPÍfb—=V/Ùžª<zÖYô„§ûË-¿L|}·úåíây¤ÿ]¤û|»/ÐYš!e‚t !I$6 #fs 0Û®$9Ù[¥‹šIûE¨íëûùO¿6‡ÛoŽG¯_.Ö-U¿ 5ï-Ôu8ÕYij2…$‘иr³þQR‘ v8 µ‡–ƒe÷óIGh²ìêp&‰Ì»öæªþ¸Zÿë÷“OÑ'¶{ÿdw©ÕY(¤`ãŒÁA¬€Ð$(Ö1ŒÂd#?®ÍBt -úp E»4lÛ]¨O•oôÜ]n^ìM\LÝ]>;Þjp --¹ÎŒÂ³ce•)a(H5™ØØø²//ºá½xÞ™«Þšumô|9_Š†}»sÕ'm7ѹ‹g¡ô¥ne£™k ÆÝKüÇß¾Ç&ü,£'YåÈ&#Ðå€ýMéOúKNÃC7ÑÇ¿¾||5öq?pºÞ~ºâÚT²Ð¡m-f™å9'öŸPtL„1;·Ì¬´j(¥*Œ§¸èËÛ™«µÜ²¿ì:w^®¦¢›ÝgK5×»]·§c—»=áñ‚ùVñH£!KÅKC’cœF¦‰8 'G çHIfÎ]ÈñU°Gjx3Ulö†Þ„;O7¼þ¶õçÍ«íÙšù6O5•HÆ`� ›¥� *0Õ(Á–¥ã[,àhƒns¢êÅ|ó륶»7Kýûìú p¸è–WÛÒe…J$àðOÉã)\©˜ h9h›ŽÑ\¬èujFê¤{œïw†¯ƒ«£•«ƒ¦Ý™òãµÖÍéšÆÌ»>[gà@ -:[‰'AXƒBæ(E -ƒX¤c -e„‹Àm¶ÛóÙÁ¦èÖð‹ÏöLíÊÃÊ)1àÊè©TTš¸ÙĦÄØ€FWóáLÂHótÅ�ìzæ@µ.(;6œ?ï¾Ø}xõjâÓYðd£3v‹Û£À—Óé·«µ[Ãj½Ì¦g�X"̓ô -¹‘ -T|®ÏGÚ$‰]%Ô@“rºÍ°îwܽ~>_¸|9òÛéì݇§Ç!_hòÁ í¾YÎçAdL Aéº<ƒ.c“+óÅÆ&Ouå‘ȧÚLÃî_•:Øc~î;^ïOT ÏzZK¤v=KÌ@3(t"#™{?ÆЙÌÄ"$@’IŒ¯ÊÖ[µµf…סqfÛ-ºí3ÝöF3ä6q]fØfJ@PiZj*ŽJ©t)‹«â°$¥2]ÄI‡€òl±»HÕlÌ´å…÷ÏCž›Ó©£Õöõá’õÓx5ÈÁñ;Õ•™ ˆŒ�°X[ÁæãȘâ0D*:YLIÉqZ£‘4X 7ÈVÌWûcÿ¹Ýþ9ŒnLx<öÌB½”Íâ%cØh,‹L&£’a�¯åS³Å@¡šY‘ 5Û”mÕ`am¤24ÝôÈgëÉ°fòé±D|üψ˜–ŠäFmf¹PjdÑù\ -1G»oÍ¢$´qG›òצººê,Þ2m·S_W$)Ðñ”0-&8$ -œ‚á¥ba £²U�K!•g‹ PI:!G/3Ä´ò\QS©®½2×S–Ûm±A^¤‘š°‚Ï Rði|’œB%Rdx<‰HE#RPÌų®¹DÜ[!^´¾˜oØu,wìÛ#ÓÕÛŠõ!ÛB{Ž·’0‘‚F㤢X²G‚“dš¤—Èò•"Q N«3²<V¨Ë.Øžªùr±vóvù$ä‹Ì·Mt”¶Wéí&±�æ€\%O”K�„D*ŒÁÒ˜t(G“¡âz˜œ%¡§ó(YF¡VX¨ä–ª¨žyOM»XkTÄô ‘p@b2ðS\L+P÷þ‰aƒR:OE¥€8ŒâêäƒL’%h¹€ŠEÒAôSLE -‰iÿ£¸¼–ã8®0ü(¶$’BXlž™<Ó“SOΛãìb‘‚�A$…"eؤU,Y®’å²Ë%_úÂ~?®»ûœîsþ¯ë?=ËZÍÏt+ãyƒau†·z“s^ -°Žˆ¢€%E[³§½ÙÍåýÍéÕQb¿š{?½ž>¬á—Ûéãvøvi¿_ywSÿf¬íaÅ8²1¡9¿´LOŸ”àD¢ÊcÏ<ʬ™Ë\”7…ùå:þÏ_¯þûóÝ¿/þ°-††bò²NüÑÍôò‹¨f¶Û—§´}Ðp}Çw8Þá|²DÓÌšæfî)¡«{ž+é%YuŒ«6‚s4wŒ´I8mêfê;ñ 7 -‰Æ{–²êÅóá0qc¨PÕË‚$$‚R:¤ÒhƒZ‹§Å,½Œ¦w¢Ù³¼‘¬ùÐ=§8•g$× -OÖ/6§/WÛ<L\Ýðì<ð'v*µ&’B.X…îv°d¿ZiÔkmI4]'½nìÅã4XÃۓéÃEü§›ñç»ãûãáå$ØŒ“"‹)‚ÜÙ¯µq¨I¥Å>ÛGÚ"§²ÑÍdq7@MI-~™j—Ÿ9ÌÃùè×?þûçÏŸß½¸[Ï2e�ør.L)!"AØ$ +=}=ö[h„7W¯ÿüÃ/"o \•ìÄŽûÅl|8ÈƶêÒ¨À’°^£÷÷ñZSè°BzaS Ò¬>P<É0$¨7™&Âv~«žÁp®$ÇŠ’�` mŒ!EWqRUôŒAÉ ÿÐÉÎ ->yÖ(1áy¿Ù‹¦·ÄPäTGƒ‡³%‡uR7ïeEc…•$�EÑi5KÓŽ2|$(½FKüêw{_³_«Ñ<C/‰ƒžÈÉ"\Õ,Ecqd(R¡Æ…ºÃ ´úh“m´€äÇßû½“žÏ7½ÁŠM^‹a|˜÷ñôè'Z®›¿¬aônµSEÉ=´ºWfv)Ù3^ïëpx¸ý¨E«iSÊVzŒÒÅ—åQô”ݴۘʋ© -ç@|HðA‡q5kPÚ’¦Õq£I˜ŒœÁ¨ð²µÎ’ÞZ³ºåÛÐbT.Iö\ófX8ù‰®u»«û3JÊ1ÎÃycZÊh1A(“® Ǧ?ÑåÏÃþEØ;öâ™$†=?3Ý~µ‰!Žâ}Ý?†ƒ×´>(ÑØ«ßV°&aÐòPOPƬ£B 1‘””cdŽ®Œ¦§‚â“ÀfäX6†” FûÛƒNµ(PÆœ¥ó{.:Ä(Hðžß½ÛzS@qƒ×R͛њ’6åà\ ÙÅžµ:F%mÜ[¾·Ò®i¹{€è¢@+‡nww¿#™=¼ö‹Wƒ“gpEÉy›´€ÏÏkHßÍ.Âám2»÷F¯g§ÎïÔ8Œömé÷_TêŒÅû¤xÓK”°Ë¹'Ì&ª?y†ì×9FéëÉƼ)W&hv¥)4AÒšsv÷‘gO«• -Ž R)`Û››°×hàh›œÅ‡½6iÖ;F‹´1!E¹è›¯ªöàk e»wwÿãbû‘ÒsàL½¯ú3#\ºÙi±}D�DYK„Ø;¥õ>&¦¤ÔUÂÓñéãÇŸþ—½Ým‹«Éµ=z/‡ÎãœÛ"5FŽg^êcZî)á¹™?WüuYqÆmÚÁ¸€B`NKØýáVi%÷ºgÝåÍ™šÑÀ‰G‡¼Å;w|ó³ò`qõEõVòÛ§�ŽÍìLô–”>bŒ1Ì/¼zÿ7FË+m¡¡�§8ˆÇZ\ˆüxµºø`ÄÇz¼¼5¥Íc)û›6–GY·†ËM\ÂY¨»3Å?終ëB7ý…äÌËPj°Žo’å;Þ^ñp‰—"/Q‚“’5’ódk„±^‹°ËW{Fë“*áî5^ËPZ«µØ 1QìB°&2œ•=å±b/¬ä¬Þ1 >&Å>MË -óÖŒQ{{ ®Òàp-ÙÓ¡–/bá”sƚɩ⌚ýV^uP#êпQ²çöèÎêßíVÁA[•Ì‰âÎ0Î'….Æf“–¤3r·4˜-‘ÓN¾uóË2ûA[j’.°W’wâ„+’±êÌ“¤Ö*c¤I‰)B¹”L±bÔlpµ: äÈÎÊænÕt#§FŸìUXে—Ÿ~Ÿ½CEŸÖ»¤š¹ýÓ¿.7kñ‘ìŒÂÉÖ^´}@jåýËÔƒ³—IŽ¾çà¤<Ù]jùs=¿¦‚Ô†eýaÉÑèÆÊÏQÎGÊŸ*<õ&ßYýW¢ÂhRL}¬øG„b¬#¹‹Rñâ¾wøoýÑ‹dt}ûár¸äÜE|ò¸|ýËùwÿ<¾ÿûÿ9.óݶÑ+Š?JQ`v¼$ŽµX²VJ$EJ\DJ$EI¤¨]¤ö²,ÙŠm)±œ±â8qÇv2M& ’ISt™þÑ]P}€>P¯û�xï=çwÎ'7—ÙU“™î`~kÆÝd -¤N…ÊBë]*¡|ä&�wy �øàvR“Z¡xµ9\M–ñ¸ñµ±"Ÿ&ë+±|îgêNTǹB©@$ãðÑ?½éŒ€¡z1ÙOjÎ@’MxÍô’’—`Ì�ß$’}QŸÓŠéÄ’Wë/Y¹eóò�y@¢Ÿ.û™*.ö‚Ñ’+�ŽbE’8[rÞZ"Åv,; -31°í ¾NÄ;8ßp“ö@bË[³’Dæ3ûH8·aAÜ!9-ãR;AN·x£vD'{w©A¨0—'’£Ô=4V'SC$Ö´!2!vâÙéa÷Fwƒi0Î7!z|¤æ -Ü7’è@oYC›Ìáã`iñÂa5¶wp¨ÛÚæ6¶|÷~µõÕ¯·ïÝGlHŠˆ·èTeËí!‹3ìEé‚# íÎ;ò¤ÂB6Š~ĤZÞH劌Úw…“8W uRîBMÌ™¹ö‚JÖ·}.ÖÜaÍJûéœUwÈŠ3”ó^X!ì°$‘èÐÊHë^vŸ‹{·ŽPšƒ¢tÓKšØöI6¿ì%‹¤<ŒS±¾$56QŠçÍ�_&¥Î롘AHxaËV‹ªíéÅ—þÙmp&èÇdzt‚AÊÍcsþú¾“ÅÊÉú“të2;¼J¶Ÿ†’½]2ËkÃÖìuÊ8±ºyA÷Ž_W'Weó…¹üV†X‘Áâ• ›m{ÙÆá›Úä{¥Ë—\õà2)1©öµ VGÈBD2#©}.w(•g.œ‹z¬0£3Sàè¹2¹•*ÇTz˜m‡¥¦C±€VŒ:ƤÅ'îø>ÙnO.ÅæfAWŒÜ‘ª§xb€J}U_ÍèÇq¥ßIïbªÃŸp‡²”2æ¸4ÜARrÖœ¯ÞÙýÂÚ6¶ax©Õçݳߵϯ>ÿõ_ÿUõÃ5ùÐÇĶ2ú~ü^3¯AùV//—¦@§jíAÀM(;h -ô#Ëhfjq0wôŽl>æ¾ÕìúÚFÞwEƒñvD=êç_97¶<®@¦ØñJ.$áBÓV覨ôH(=²¸è-gØî‹CXBùüä”/¤ T5ˆÄ Ó|n̾p¹X¦#WgJãD%–Æ”Q'D]ë}ÃiC,¦y=ªî'«TsÅ(#]|ècw€)?!LZ˜8ð2ÕHrX\{§nLŠ*}:Õ%¥V3Àï”6ŠHFoz±öŽJ·=d -¾½kÂýg•Go#¹ ¯´º{ËþðïBaÃ$„«Éõ³ÜàÛòøF©{‰Ä¦÷Sš/¢í†$/›µb2&ÔõñM÷øƒÒzŠ‹MˆÎl÷åÁÎZ(1PÚÏØì!v¹Ü”ÓFkŃÆr-¡Øg•ÎžñDÊa±'Æ¿›œ¾]·¢Ð1Ö(÷®›G©ÜÂÏVQ:wûáZõlêÙ«›þ~óåŸÓDz�ɈϿÿO4ÝÙ°…wQ•Lî Æ7ÅÑ«áãÏ™Ö*@eªÃ³Ty¼éÀmè)ž¶Ž>•G/Œ½—d¼<—õch,vŸ@ˆ-"5D…ŽŸ©¥jËÚø¥MAUË‹Ô I BløÂù[-nW¿ýåÊîÊeöt‘t‰V}TÉ«8«çº+ ôúvÈêâ™t—Ë%ýHm.–ÛV"•5½Ë;ä]|ÃÕ”C\êBÀyéŠ'RZ·²Úy~ý—¨þâ—ë›ýÖŒz7¯/ÿ¨Ö[wÙÕÍŸbjß!…>®åD“»ÁÌÂj‡ÙîõôÙÏæò+'‹ëRoNÄ‹L¢Ë´æ¼ÐZœú!+eª™öÒÖÀø˜XõÐe„¯ƒ–u�þã£�ÎuÉxªôn²û7‰î -ëbª½÷ä]¼h‚ÀGwv›½zòâË“ë?WÆ/âj¿Ú{Rî/éDC*æ‡ÏEcži,:³Ûƒ‹O’>¬tçÉõݺؒ—)@p#L>ÀÖhuã (fµ½sBªî` := Ô1. zyóªyò4É(&W|Ô9y=8û$µ/|\Ý‚$ì‘N6ÒÍ“m„ e‰êh¬-óx刔ÛÐ9¡°ùH5"Ö ±ŒJ€d†•I4{ËO\˜àByUŸÐ‰*Îi\v ™Ï$c&Uåê ¼†ÜXðÈe÷9mŸJwÙܘ/ÏÉô4’2aK¬:´xèls^4/w°\¨’R*– íMOߢlÐÚ]ÞþeÿùÆÁm¦{Mw1J9Y¾¾úþo¶ÿ#"žÍ—yóEnøL>ßÅ”‹oêO.¼¨x“ÖgoÉ+wU¿ rÍM{jž‰Gµ=&;‰dƨÐd3#H±´XÚ ÈΦ¼¾íÝ°" 4WP ²5>bÓºKÝ[³CŒ'¡jzȼ?R´zbv¯´úQÊ ¯î»LA>úÂ9(?иØ̼L0š9>KVL.Ð’¡‹Áñ›Ñã÷ÿ£¸L{ÔVÏ�úoªÞäf™a†Å°¯àÝÆ,›e0ËÀ°ÎfHfÏL&{•Din«ÛäV©*U÷˪~©ÔŸÐÓg$>€„mÞç<ç˜Ýód¾KŠ%»ÿ´<¼öè@B!µ¦f¯J½×éÆ™ê¬ÄÊŒ’lðp&Ýbõžä¬ç(q7>–^]4?%°Ò†{ªÕËã«/Å8£žÜ^Àñ€]¬UÆÇ79|þüywñ)çž&ÕâÙåÇÕåO~\ÙŽ�¾ª„º«T—0¼Tva«™ÒàòÃßÅâS©Pù cd»7/¾»‹bnxxú¥>…Ò´æñì]*7—¬Ó¼{ p#yóêÝ÷æø[ ¡#¬…&mLp€çpÙÅæjrtÛœÜ ¬šÀMLÛ‰gÝu¦o�›(¡)åýtc)ZwCÇ—f;±ÈZ?‚â*¸P•ª‹tó\i]™{ïá ¥uã©òùëo‹«;÷óEÓ(U‚mk´ÏÅÒŒËvÀ`1ÆhOo{ó[¥¸T'!vòýœ3]\ü4Z¾‡^`”f}tÓ^~H–ç˜ÚÁ”6èëÓ«/†5Ü ²$@ ½¼ÃñcõADt×åÁ6C -UT²ö¯GÏÿj‘š'Jã©ìG…΃-–zÿgË>”FÀ„)œ(ÆÅ6ž¬ùBʽG¨7$$¸»¾ç‰Aþà\çZLvÆ3X—k> - -2ª!B <Æ‹)U Õ6oŽ’zã+¾(O$$_Œ=FBv Gb)K*Cƒtï?‚¨PéV¡}a´Ÿš‹ÐÆ’Œ3FÕ=¡¤*ÎäÊý‹úÁ{gö¦·ü£»ü“9|Së¸Z\¢T‰«tÚÁ`N#]iÖ,&TЄ*fŠáä}±¼î‡ UR(h姷zq¶`ûâ²7!™vª0Ì™hŽy³ãÇDF®œ¾úÛèòk²8JÓ´=£ÕÍWúÓkwþ*HàùjëœJiݹ)ÂV×üŒ–k//?çóß= -"dA¬,åú³¤9ICÅس¿|ÿקŸ»]4fNçgöüÓèæ¥ÙÇ8g/OÞ}ÿõ¿Fýp=$…ÅnHèÁ+ß{éž|S«ˆÈßeQ¥îÎ\Bñ”-ö'Ï>Nž¾WJ{íý+.ÓÁA5¥:XÐÂm¢wq”ož0JƒV›À½hªl÷.š“×¢9 Di3[JF7L‰ìHtNdgÅWžÄ¥–!”Ò!r7q@ À0žòÖ‰P^†™R(ž)ºËÎâeL®ÝÛÀ=ÁT˜µ@üäÒT6¬ä¬{‰pœWÌAÏ>Þ¢î¯Ç`'®í¤à£ZZæêW ÎÉZÓLyîGåM»‡›).¶xcÄs@àTmÀDî´–¬Ÿ(lAÄ%4B(o„’8_–ªs¾8ærû¹ÝkÝ}ŠöÊiÓ¹žåáN!Ó¢œ¥ÙG´êò€ÙT%Íã¼ûL¬L¨L“j>ZÒ©4Uí'wpHè Ñ&%'mõê„Ëwׂ,Fë|~7H 6C+6”&¬67ˆ¦,”)n‡ïô#&Ö=•ŠBe�¬Oß—÷_¯#´7H±rÅÚ; ±&|ÓQq¶Vh¯JÝ•ÙYጉS&O>¢Â¦[CR¢ƒå{xÃeûL½¿ýqOjn˜Òy1àFRoåªÃr}6_½ÑŠ}¨6J²ú˜N÷ sâéÈ�§÷ëîü¥Oï`:c.”ÝÛ”µ.Qú�,4€¥÷ÞœÙ*x#Zˆ*éΪ³ø\</4@ºJù×ïÿ®÷/½1#U9„º‘œcm÷D4'A<ãöžýöŸÿ½øü+{á@yó‰Ö<•+ÉŒ›”ùÑûåó¯([ò%´�UŒpuFëcÂ.BVxNɹõýs”)øãæNÌØŠë¾$ž,fykvˆ)8S ø<¹Öè%͵öÁFŒìöè#Í„zÎ"L¥µÄù–3Dýç_þ¹ºøôûû¾‡7ÂY„°dcªþ J§õ^„-ø0ŵüŠ»>ªš-•|aRÎ�æ C—œ«ÉB€0"©š\ž×¦oIݽ¿……©"M–$kf -A\Æ5ŒÍ«ö!KÀT2ÛãCuQ½ÿlt/‰LŒ/ÂqOö…å`L3?a¢t Ž¨/. ¼ÎƒpXÖƒ!!N¥j7Ä–àÇGGoIÉ -ÓyPYˆ‚ ”Çh#S™¹ËÞ¨ŠYR²£täM* `çz#R�“ ©êÃäu‰§Š‚Þª¶©LóGOìž'¾à n’™“£ ‘QªZuÜ]ÕÆ7²5ö†y°RÞõØG[8ÌgŒjÃ[wñ�a3”~°IJºqº /nÄ<!D”)}ŸÉ×ìNX°úg ˆþ(ÜoÆUÀZåÐhž¥ÕšÞ‰dxs’Úð}o€ÍýÙÉçJï$”HÓJ¤¥èžq…‘ÏlCPFu÷i®26’ŠÃæ÷3õ•=~+U—›¨úx›Ò-«û!ôYŒ‰M"Ý$m>?4Ûg’1Fåþä²Ñ^D uañ4tVmü²9{‡Äó@¿M2‚ëa,³îe¶áÿ—YsÛæ…L'j‰;El$ˆ}_ˆ•@�)nwJ$E˲-˱kÙ‰åqÚƦ½Êe;ü‚þ³¾šùî0ƒù–óžsž"®WŶêO¡)É‚Ã\E‘ý•;x÷ôõTÈ(œÐE¹Å˜cJRZ—cxe¹h€.¡ëdýpL /Ëd%MV‹áEôp,ÙY>žmîm¿ðÞEæ”ã WKmBjsþ”Pº€ à^ï\ÜÓz¬¸Ãdõ`¦×F¼5’3>HÑŠ# �sU®šœ1✅è¯c‚]à&˜ÐÞôÎÜ |@êŒ !Jd*ùBhSú™®Ç×_+´…älýghÎ’;S›+7=„“7ÊgŠ3c‡V >íy ˆq>)7I±i‡s+š1.0Y„?.ò8Û悧¡•® zëÍ›åáÊ:´‘ÒàÀúŒàoK¸ª:}/½2™ÝYð¢|RÄ]„lv'÷Ð%r”a«ÆeÜbÔ3˜BîpS»7ï…Q=ÊTË„±-ÍŸŸïí¾‰ýQAÈcÌW®"Ö ½Æ5E5ÑÝ©›Þ(͹lõš½+F ª¼²nUJdofwwZx %¥¬px=ÅA"6”=Ë6ÁD¢5•Ý9Áø¢–ö7º›OU1.TcÀ:×÷/>_,_j Û©—lÚç/G‡Ïíé[ð®gy6hœ”ðrzt\Ï•eÆ8½ÛdõÑ–iåJB½ô¹ÞZ}ÿ;ΓhÕ4ÜX`ìóOZòFëÞ²fŒ³§·YKJ.dŒÀEËläÇC¤¦ùéµwöÂÔN_B"BT¢ü"×ÅÆ:nŧdó†,9³§Âf „FšN_§«„ÐDy›œ;><üöö/ÿÞ|“:{` -'Þ§aBTÀô -V¥´mŸ¿ûçdûÐè¬FûϸeÒ!!\ÈZøpñ!ÝýBJ± Eéä9è„RâšØ©ÐÐâo´æ’RºÇEšR{\c"ù3¸ðS.ÈWupéÎð¥á_ü)‹eNó¨G5ŒmãrŠírU§9¿-4g˜EDÞÃ()`=Œ -˜Òê_Ü6{„Ò0Æ*Õª˜6º/Ôp;Ï ÊI™³‚£ÄÇ%¡H4p!4k îãéC0| ñQç‚Þì®Îò˜\"ôrÍ"Õ>Èâ•T{ET¸X¿ïŽoÊFê V 7³™7úN´ÊWØ“B&Уȧ#·+t3‹Û0A^¼õâ]…´Æ»/ÏÿíNÞÀEAÀ•p#[bhαZÐ|…0ëR*ØS'9ðæY¶+„Ì©áòú!J¬ìŠV¢ÆÜŽ"˜ßÍä빤ûd~wRæó%Sä!(kLhµ÷fx…×*ªöˆU’ö§à˜ì˜§fÖåvˆQ>$˜€ÄѼ¢œËšq!ŽPX4¨m´Ðaõ‘ìÍô^jm*Œ™Ã¸*ï@‹Ì„ƒbiŸCoÄèB½«/Lã¼Hhœ‘øý0Ëúõ߶oÿîn C»«÷Û¯Zrý¬"ÐJÏM_IÎTmï\v‡v´\ý„Ò^•èÒ=ˆfDo '„.‰ G‚´Qc=Ñ™[ñÍx÷µ¿ú¤úsHÀÌ©Àj€/ZïCëK·UÛ×P·`Ðp6%£ WªbvöÝõc{ýcrùÕ¾CÅ^©¦[Ѽ¿ùh¶¯ (9wÎ<It-ûJMÎÓõ¿Õ•$‹jU¹_׆ÀA°FòFpPWH6RÝ%gŒa©+Jœ”…£ã-tãó;FOžúvÝ2-Á’r\¦ý,"£uc¾h öeÒTýYk|WvW´2ÊžÊßãÇJ2Óg¹*%…àÒ½Íçw¿þoz÷/È2ð*le~gEK`4°Ê®ƒ‚Þx%#Í–YNë2jZÄ-Hð?fÈlE‚¯”@¹¥SjD¼ &¬ÃÊ–ØïŽ*ø®˜/4 -zR"Ä|…añF…ð�F€1ª•)0Œà3¢—/Õ2™Z6ÏÒJÄvJ¨U¶ ڼ�Åž’c"¶IéCP¸›Üzƒ{9\«æQŽBê*ZíÔÕXn®ÌdÏ;RN1 -Aë$kÊV¸2Z~<õkoÿ3"Ä›uÞ4œØôRÕíö™èMz«Ÿž?þ§³{¤Ü)Æ·Ug,Z N[lc/>ÞùýÕçßÓËoà*xMo´f²?#¥h·fXÁäÁl.¨’î5«Ï7z”å"arÎ4š}4»×œÙëÂ…'[„õ!.!@$ÞäƒÕ{E -j§ë»@¾Cš×1ÛÚÔç@4ëÛç¯êR䄳öüï,äæ -eewÒ½_>€¶¥ë¦·P>d¯4WU!†hË”8ÖQ£lœk|LjvŒ2”íoŒ‹„ewv²5Û‡q&•¾ìì³»Öä-¥vŸêœœm>pÖˆàšÜÏáœè´Ú¨q-VŽNrUÙH¼ÎBóFvw–Cå\™QÍÄtÇe\Aj6X·`Ža`qºY!Ý“"—)2ª7qË‚ ¡dwX¨°¹þ’˵7mýŽãïdÒª6mI l°±ý÷ýnã+`Ì5` 6÷ô4mNª6§ítÚ´©ÛÙ“#ÛÞÁ^Û~é$?@Éøïïåóõ’<œÀþ𨼉U -¦Ô‡„VÀ¸tz¶<ý=¸U`wÊFè¼<àÄqñO -µ*iÖi äôy‰ÞrdÓlcÍ)gçÈ›³öò<Xn¢;ƒ49ü4:¹×úçç—(—UGã´Æiíþâöäî÷áñߤ`Y&8Hn!�9»`ieg°¤D%ؤG¼b7Em5ȵp £šŠÝc%9²ÚœS¨…œi8>?~óË‹·¿Ùk¢"¥#š}µb!•[ „!GÕ¦ÝÚ“p%[ç€7’à‰¬ìÔIO�¹%+Ëö¯x£Wã|á»Yz«ñò“‘¼¯·†Ýùk=^T›®šl†§^½ýûàå×þæ³äNaãŒf—éüU•õ÷ ³øøòæÛ«¿-^ÿÒ_QM7êž\ÿ¥;½ÂY0»¥IKW‡€(HJÊïµÆ›ŸD7oj£*åàŒ/˜3FÁSÐb‡lúýÙÛÁá9^K%Pˆ¤D(‚1„p6CöøÿÌh}RŒ ÖÛ© "ÆKZ"‰¨Åíñ…‘¬ámR|(Xág%Ž`Zu.,á*#$ª“#}z ¸–éÏBº�0¹6C¸)xiÃñ\üÇ-@«Æ†;˜RªÙ8<¬†1%7YÕ¯Öp¡C2:» ZL�‚GLH‰fX¤½ÇÛT±Š@$‚9€&o/Þÿ~~÷ŸÙÕ?Íô£LÎÈt¥òàÃ#9> fGG÷Xæ8ÛŠöÌxîΙÖj›M -„Ù -×ãý[(}¹M-â £Õôøk8†•¤îÔš´hÑ09+' iÍfË›þÉÏRrD냇jVÀK ÑyéÆ\)ášâ -oMCz¦Ç/šúøô;¸v†7bkÃi½Rµ¹µƒ“¼'»ûXÝÆ)éC3\¥¸°ž’}Hr z°M8s,ú‡Ñ›d~'‡ÇŒÚ/SVO^ߧû×¢3¢ÔÎwjBH& $<+w’é›ÁѧÉ涿x´‰£ˆD‰¦ã+š—p SŒ4àÌI‘О¹&¸ñ~qM°`|¥Æz’;ŸÍÏîeï ˆ«œšžÝÜC�ÖøÕF¼1uÒS»wjD«:—pÉN€äÏëRüCƧ•! äìsB(Ê¡ã.¿˜í5ÆO1(à;u¡gg—Ò,•Y7Ì»¸»±³Uh<+²$Ÿ�—’|´])>pÓq~“äï5aå^¥á¡&¤Ò!rQéE+û°¡„vñʸZ¬Hª6jg/w1öñÓÊÖó/fœ”Öš.ÉyŪÜÒ*ë‘(à!Õ~2¹®n‡›w££;op -”ØT2 -Â�Ûwçïö/¿ŽÿÚ>ølö.%DVÚC5\Y½×Bx¦·¯Óüóèð³ÓyQeV‰�çšj›y˜f°1#Z®~øvz÷oè”RM&ºdgðÁ˵ÞmŒãÙûÞúgÞšÑ(˜,_Ùçˆ8Ò† -ú$Í?Àô`õ=À†zÓ=ÅØhíÕ¸ 7]å—÷ê<0œ•6`õ!à=À¯${Óº%zá¼3Zß½øñWÆÊUÀ¾‚Ú1Nó”ÖÂܬo~;¸þÇ÷+8qžÎ®ÒüŠ|Hr½}æŒ~Údµ1 ÊB°F†?/VÄí2UPò�`µ5~S‚â[%‘Œ©ØN«o7„ˆ`[’9“ÃBÈÈöæ^Eà/PH¹ñ@A~¶þy^dsö΢ñ¨xŠOHÆayWw2ÃKihÖ_ÄÃÓhüƒä-Êði •«ˆ<^Š -!ÓX)Õý#ÚШ½ƒIOž‘’‘õ¦¼Êhk›…EÐôÖöôSwýÅŠ—x]JºËÑámmÕ¹Hº”º‡ÂS»s‰×õ§…ºáN–ÇzV =©0™Õ&VzJrˆŒ£¹M`,»]Fòk¬/×ko ³€+8À¼ ÷² ²²: -€¡©ÁÎr³ZWnÍö±™¾DfNòž¸L¬ôA=¡ða0º3ÁƒSÑ_N±¦5å®Ûݨ™Ÿƒb9wÎZÓšœîÂnâChdZëÃÏdgŠ3fŒ”1Rf (让èÁFrÃà\Œr80&JÀ€´>n>TüKFGÇ»”¾]aAB‚уàeÕçì#€«ð!!‹”þ´ÄÂjàõ!)´¡e$oÁY¹äìõ—·Áè•âÏY!„9�«§L·¶qg<(8À¼í]þR¹®AññÖ\‹NŠu«J»p¬ËfÃy¢¡’|«Ôää0ˆ�„ ¡B›·ö*„›Ä*5Ü$ùOáðg¡àØ -®¬Ž>tGTÓÁI–,Íûì÷«0Ò‹‹ßÿõ_ÝÍvkÚnͨ0à®B—j¶ªu«!;YHÖÐŽ ]H°]\ˆâÕ^SŒ*¸�ÔÝT†Èž#gAI£LØðBPÍ®`fŸS%\‡1¢tŽ½á+9üÅeÖÛ6vGñÒ‡Àc[ÖJR÷õr§¸ˆ”H‹Ú¬ÅvdÉŽ—8Î2™$Ó)tÚE—´OÚ>õô¥oý^=Æ뻜ÿ9¿sw„/ù&eof»N×IN_!Pôàœs\ ÀFsJÒ?K'·ºsª\Ò“®pr$™—ž‡ÅM:¹÷‡[;^‚±9”ÁHÀÒ‰Îdùcé/€%°/Ѩ$sLâ‹`ü°~󧋧ïºjL¢9‘Ó2ÜpW+Xc‚÷ -Ë»töàe—QqƒâF«™‡!(!˜~´ËG2Øuqü`©÷7è¬2„fê]U@kת7;>áÚ…„sŽîmcÚèEm>ÉÄŒ·]}ÜU†f²W—z¼k˃ƒ–zÐRZœmx3AM= G[+¿ñÊ=ݳö¤É{´Ã`Íà>ñGwéâs2}·}ú)½åôãWýáÖ×`LV+oOÞ®ïÿ@·ŒôLË]±Oó>¾áÔ‘^*þdènQÖNZ -Åy’U�¢ÐYc„ª‹|w²›¨z‚ø:z±0¹²3ñò]PÞ7z„g;ÓrroXC<7ÕµÁºžÓêMŠô87Næ“ÙíòüM‹Ö€a4çƒÌíÁ…¢N™/;=9Äæñš'ME%c¬/™•bOXiptÂRš™ïi)m³>ÍER¬ÇI1¯Ðj-ÃtçÓËOR¼k-›WKÕ9ë©eMŠé«ŸÿþŸl|‹p<nX(Jp~šwzJ<FìÊæ¨Ã:çKF®X¦Ì'~¶±â¥êŒ!û¤z´30@Ö“ûÏÅÇÌáo]Éõl—=™¢‚ì -pU\|—¯ßZéFrJÅEc 0PŒjöL²è&Nvy�D³ ¥ˆ'åèâkö%˜~vË÷J°–í1(ZvÆqIÆÕ‡ xkÅ{4D„&%†Ç ‘û^<ÝôÚÂL.±²_€ó_CWį¢ü -FÊc9ÍDgaqÛÓÁîáWzÆ+”p+†—Vr;-Y5ªÓºãñˆ;”`§œ‡‡ã$ÆÞî™äZp&Y3Ùš†O(§Ñ $2FwvtŽ¢z˜�‰Úølqœ[§É9Ë–Ÿ’éÙ*¿üö7Ý•`NDïŒQ‡õž‚&‘ªÃÁ÷|wôJõ/@¼#jŽ¹ãºJü3^N±¾¨å(hý캟ít{ZgÅZ›uðˆ'^½)£ ræ;4ý¹¬)!9ªK‹—ŸÐz½cÖÚÓó5#GÒìé‹Cöà˜G»46:þ¾2ÂÀò×^|!hÙqSjÐF“¶pdÍóê<îUûÍîýSž\%§¤6ÒVG”Q£&ñWñøÎJ6¢™Ó’×æÕ#Š•!¼²Õ—~õAq—º»1ã=ï .ÖÚ#&¢YJÖ˜‘}^ïzŠ©Db5¡‹¶añ&ëB!šÁÌt·ŽNoô%†2ëW¸LÅ]ðfA’MP\£°HÞ¼N›ïá~L› ¦*)Üx™Uwñh‡¡h2Ö3Ø£%éùs«òfº7G&â·š;¥ø€â£lù½W>‘ô:,n‘82VðªáôU‡÷�iýñïôQöç"SR|D©´”àÏ`Âç¢Hv„%æ¼VB?µŽŽN‘V׊[!@[l`Æ{,îä~ùZõVxeŠ÷€Om>¨1iðö«×ãý %'†%É7¿ûó¿ož~DIá1náFôWƒoa/ˆ-Õ%“Ûc7h‚îÙ‚ufçáø=$dÛÕåÕ¼œ@H->z¶k1‹æW÷¿c° -f_I1Ψ`oÀÕaÃèªclð¤öË%ó·ªB!H„>-gÁép®E;R•õy¥p’+ˆ™à’ŽSÓ‡ÝíôÔ¡Õ_#Ýpá]!9®ëu -UkÕUs5¼Äã#¸g-)iqNÙ€‹ý†·vó{‘ÌXy�™)ÞÔI¶£õ—°zêéUW.:âUÇuÆïp}<‡±'f¸”H/Âú)w*¢é ;AoE”tzª¨÷ ˆ]#ZxÅþôâûtñ-ØÊÑìSÃ9-Óíçxþžs0w•o4«J-¯Ò¬Ìp3ÝÍ!cÁ(Àó2)±`‹6ìQ¾µƒ…BJÀfMQôºêHt*ZŠa›ºWaŸþp÷µÁª‡Ù÷ç^¾eõœVR+½Šýêш÷²·¡Å#Ĩ‡4n^HT£G;0<ÖÊ^‚å~ñ¢ „\uÜ¿c¨ë]¶Æ³ý×ùõo8³è*QZ½ÆP€ A - "©î¯¾^~ûWw´Çép«(´2èˆôè„v€Äª=öó‹ös¯Œ1} -ÒG@wgNNUó´Þ”Ð (yÀ‘™änÜòôÛè’ZKfPèà0fp©x/%²Œ éo gRkŠ¶Öå£oNxÌ‘¬âÙ‡púáî—ÿúáçÿæóïkÓð©5µgvÌ& › —‹óÏz°lÐöúú×Ð#êlPçŒqê×7ïþø—þ’cVÃÁÉ>Ë'#|&pFŒ!$˜Na`Öâ=f‘áüK4 Õ™`YÙ›5ùX´W$¹µÒÛ&ƒ«QÁ%ÑÀöñV0FªšZvµœQ²S¥ó'#¾ä´’ÐR™e#ã¤PPc£?sFWgÿ'¹L{Û¸Î(ü_ZWµp…³ÜYîì+9CÎp¸Š¢Dq‘dʶ¬È–"Ù±ëA[»uQ4R4_ÚÏí/ì¡Q³Ü÷=ç<çù'·øFöfZ8#F¦©ååš[ðzFãErô“WRN -Q”wP̽rtʈ¾Õ>ï/>Àô írÃÖÍÂto78G¦¹¬âñ×Õ¤DÇ’–îA)°âÏì|ãöºM#Eíy{z‡þ(;3ÙAÇ<¡áÝð9’.¾%þ±ìõ֢ć¿-ñœ˜ÁQ³*uµR#¸¯œtg€I=Ò3›¾4¢‰@8y“ŽÙÙÃâÍ_Ÿ½ý¥=¹o,žÿÁnAzv÷’'’9VŒ ¨!z‹Y-$¬‰=©7`¿h%sˆúðäi£T&»m¿aƒBY5|©qx“ô^sÝd#[Ç‚–!æ*Œ¹Sª?Ýc±6D BqíãÇÕÛ_‡Ïÿ\¬¿÷zׇløä©�ÐÕôé¾Èˆ:loz'ïP0¯°FN–ןƒl³e3%×ò›Éõ—÷ûÏç_þûöÇB M1<¤1'ÃdX’zÉÊŒzt*»£ -°~™oqj8�¤Aƒ¤U)jš¾ÌS¬e} 7jj˜PÄ6^A¢YÜYω{T…äí!zYMŒ$:"ö‰âœâlEsŒ#"FOó'œ–naÆžfgï»Ëï<@Æ¬ä£ -5¤#mFîˆÝáÜŒ—ÈßÝŠ|P“3õþ]¶'¸f0x$æ°‚p?”$5ÏóZ[rú2l?Zs-œma:f˜c±úØY|ƒ“¦1€ð'ÉÎE+«‰§efr‘-DSŒ•ÊR¹a¢M ª¼Äé}%>Üæ�SÛ)qåš‚•®6tAíÈ81gÐË9é)¯'4§ÓG¿¸õ{WV2CâÍVi·NÒÑ‹ºè±¤ífPë¬ÀFÿöW9é2ÿÝNônF'Ô›Õål¯áì7¬ý -þΡ2èÊf¢—P½e¿Nªz•ñve¸#ÆUÔU1F9RŒ‰Ó¾¬‰-Ú:³Ó5€¤ŽW¨h¥ªÃëN£|å˃*Ž±Ä‹ïÕ½º-Y=>…Þýî^Æ»Ùuн¢�ÛªŒ¹õ+óˆØSt}ÆÞcl¤Ï±íÑÑ=ÍŸ7i¥ s¶÷ëVChôöFmÿƒ€ ƒ]9µËK“çÔ\A¼Ò^Sm5D—Sð¾(,M½ÇUN¢E1ÿ°~÷ïÞó/ÀW\„UjÙ–ç;]|ôÆ÷z²nÚCÎèW„ ºŒKzõ1 ¯ÌäÆíÝùbîVDÅv§Ñ=Ï$çéPóçiñÌðÇ`<ÔÒlv—̾ãŒqUJàÕF¼HÇ·^gÁ+¡ wÌx>ñéâþg->’VU°xztVc<³l‚þ›hüh$t¨Ý²XfhSM·IÌq;Fé‘`-ØÇ€=ËŸTHõÎgW’ùƒä/YÏé`1t‚ÂdQg\»½(–ç?à‡£}<ç–‹Ûu*••rÝaš‰Ÿ4µ¤Ìš¥Cù°F�ËR:hxî7¬‘v©ªbÇê4ˆ®d2ÈjgŸlÂ×3LAÐè}Õ›¢¾ç‘b[t4FaÿOUÔÆöèM<þÖN/PrÁ·{5rÈèíÕöÎ.ìIÆ7—_:ó[Áž²jÆÂÊXÁ|Õ®ÑZwNÞ.?³:ÝD4:ªˆñcí7IϳɛéæO³ëŸ“ù|PªÛÕ’8C{¼5ÖÛÏÜüÚë½Dé€eýªB$è}«µÑ¼)F‰eFú0&ZUM -Q²;ñW÷ýd‰æ…@AÔ:éU:¾³ÛKbåñ5ä÷7B0ƒ“ø£ÛÙ듇š£¡qR`…§A÷%qõxM[ç48CH²Xѯb‚F8¯¬d¥z`ò±@‡v¼P JÒaÕBÎÐC»óßc :àI¬X…Ç0òŽ¦«ôôíèêƒÍ'5ZÁrrÉàº3{':sV©î±âM„¯Uf5NÁôWùâûÕ·¿Ù˜�G:‚–ƒW5¨úE0¸¤ÉF²pPcÈŠURŒl»¼«]«}b§+³}iÄkå2g\ìR†'üÆõ!LâNh4W†‹„úÍNÍ°‡dˆ rǘ½é¾3“ -§³’÷VâêÉ.jÃkY£O$:.Â{÷jê‰Ùº°Óᔌ”W™Ð -×ð1XnoBŒ:@¬xêÖî¾$J-ê²]@ï$>Ï/?ÍojïÑûd=·[§ãË~qµm1°’k�‰tƒµAÝÃ&HZÞéoòÉu6½WÃÕâÊ>‚;•êZ1aì::º³{W˜¾„÷%èA10GÇ(9ìQ—‚q„Ï{ óµY¥ òú×ÎàÆ|ZCü@¤pTHψ–°#˜0õ'Ä.êr�÷èž>Ìnþ²þð/ÚÙì1pb‹:ÁPµ�lð1!åd/¼ìÚŠWûU‚Å”¤!†èžª?Æ�{‹3ÄËyZÿŸÎ9gж´ø‚Fgª3PÝ> †A±éÌïWw_Üýݱú¨&¥˜6S2{’5¥ñektëdÏxD<‰à]JÛKa±q³gMç˜3†Š;ó:¸é’Ó3- ÏßjáY×ø@�o6êaCGÖ4Õèì—Ùn#Ç…ïƒð4`$Š¤º›½ol6{e³¹5÷¢h‰VJöhâM‰í,°`l$7A€äÂä9üHÉáL웹ñE€Œ:ƒÑpˆju}U:cpu¯ÜäZ± ›,JãÖ<[ÏàÕZ©´Ÿ;3ÕŸñz;ÃxûLYPk®7)ȶ¨h&8GíŇ•Îg Âæiñ2¨ž¼“-(• 9«Œ_”“ ®HÜJ» G>ê\—£#„(4&åêY9Zk¸kç°„:ÙLàxøŒT´'8’ÞÔô†Šœìˈ¯³_%«_WÛçz[{ ZI}p>?ÿTP¢Ì¡Åh5Þêj•£C½u „ŒÞäô–åNp)¥V¿œèÎJ4†ŒÒ:”«{\IrŠ7ì‹Æ6˜U§O6«¡{3¨kóFRI®»ËßÚâÎY=›!‰ÉV»™¹Ÿ¡Œˆvpf½Üg¤�¤Ø–º7©ï‘rYÎ(Ñðô“ÞÉ‹rsªøC˜vÐÃçKµÔ*z½C~Xv¢I^ôѧäù§« šíÆàZõºåêpqý;¯sÎ#î:#8 |•‘«Nã¤XYÂÑràíæ3¿»±¢c$í‚^µÏ‚dVŽGÈóF´_~S<¸ Þ‹yz¥x©¸ô>|±ö/×/^Ý|wÖ¶×Óĺ'š?ÇâÔ$¯4Jµuÿô7ñà‚}VD=Áæ4ãµ.Ñ¡Ë;àJ¦;ˆ’S´?fe¥ù+;~>½|å'—ÈZªÕËÜ¢3²ƒ#ÕÅŽ`v ÷ØðpÏ°IÐ>äy§Ì²bxÀ‡RyŒË·²xl}†ãó4k<=Ð¥Ñ|!òqf¿Á½Öµ[_Î8ËÚ{yC±ú0yÃEÔ€»Z ˜L_€Ë©uU-xR±9ãçã†eå&§uŠþ´Ò:ÑÊÝ‚ïfutŽ˜!Óô'x'Eáh÷÷ÅàÐlæÕB>N±îW:·{†;°¶2ɉµã3|M0º^ë9œGö†B)1*sT£³|œß}S™>pFŸ3¬ã[2~±_¬^”·pEDDÕsz†;ªt7G›¿T§ÅÚ V9‹€§µDkåX±êÍ«ÃÚÇ_øsÁ† ºÈ'04-˜pfó Pbµ†“\"ŠÃFv”½œ‰© é ®®ØfÌDó§nçJ æ¸ÊÑs1R̈±ZêaÃ`ßjÞi_vf{&OºwÈarêÔæR±æW'µÎ3lr+>ÎJñ‹Î««1ƒ «†YѶýìçg/_UG·9ÑÏre„?^5Gx;|8L.«ý»¨‡Ð‚õÎNŽ|ÓŸâíœÙ.Ö/£ñcûäËRíAW»›Õ`/–?Ó1«DûyK›…‡ØÕeA‹a Íñ=Öe7WÊ -ktvY7/ÆH¶Hý½Æhc†3¤_ÖèïK_SÊGÉâÓÆèý‚ùøîOWŸþ£>}@¡öóöÖýŒ6ÿPªð.ßÿÃ?×ßj•²úAÞ.GñK”÷É“Ì»O%˜êìáï‹ûo]>á–¨ƒŽób#DÅ=§Ÿ=|õ¯°ûA±º:DÇg&Ö¥Øí©âáìˆf·ÒZ—¢!+—sB€VTÖnålpú¹Y_eåõôýo„R_qG’7Ìo3ÌP¶§¥ø»YÁ^óÉò÷Ý“¯ÃÁ=ÖH6šN4¯¶ÏÜæ*§6÷øX0‡ní¶>|,×/Ñ}Š³²lÌ>Wˆîè@‰p™švŸCµGL2ša÷®6þÍ`^wófA«óZ}/o±j>S~´¼ÿëàâ¥ÖU^m¢€º=Ê‚=¬ïÁ¬<½öÍåãw½³/½¥‡ÓÆäƒhø€ü‰ö0#xÁ/ù³°y&è[óŠ]¤µxx_½àÌܦ`&ðÃJv‡·Þì ePí¡^ BËÆë-':’¤ ¡r³¼+é’?-G©Ü1©ӺªÍ>‰†ï³Jm?_:`Jì6½—Š/ÈA&§gò¦d&^[îTÉrE^«Ægð¨LÞB4šÞ~ëõ6Væ3GM¢úÑ`v)êþ»û‚ì,Ìøª2ü¸ûÞ—v yÆ{šQâÎÙ³‡Wf0ÄdÞÙW3…À®Ÿ#-ûÉ®fV+ÉYµ{Q®Ÿ Àì2eÞëÞ²·úâèöÏ‚Ùy÷©+øØNZ8ß?´vö5´�¬‘ 6&Üy¹ÚœtñøÝàÙ×n÷ýûg¢ùÿ{ÿ+QÒDAH!M„4QÒDAH!M„4QÒDAH!M„4QÒDAH!M„4QÒDAH!M„4QÒDAH!M„4QÒDAH!M„4QÒDAH!M„4QÒDAH!M„4QÒDAH!M„4QÒDAH!M„4QÒDAH!M„4QÒDAH!Móï&ª¥&úåÎŽ{qì,6‹T?Hí”Ba†ÿ··›ÕMª–Ú™–n6Îz¹Y_^,n^¤U|Åä9>}ØZ-ÎÓ{oF¦1(]¿YŸ¬/ðe²\œ¯öÓYÕð7ŤÙ4óúOÿE*'ɼg–Y†‘>-)<ŸçE’DY’búùvÌæ’Ä‰Ë -¼üö óí AÜ~§à÷"Ãa¨lŸb+ó,ÿfÐ[¯ûIƒÞzÝiª—ºH5SJzo?Ý華J]ÿÇná^×Ï[Ÿ¯Ô7í*òßbâ)ÀO:«ûõrÕòít¿–mÞÖóÍôP[ä——Äô$Í1lšeÄíó§?í‰íŒ~xê‡åt³d¥×æÓÛg™ÔÎÎë9n7€š -Ǧúá/d«ÃªQÁˆU§g¸ÝîÉÅ.¯w•òLªýŽªtÇmä¿IòÃãñH"E‘M6Ù¼¯æM‘¢HŠº5Òh4‡=öØk¶‰w7A6‚öG#¯˜R�BÁîêê徭lLy9V–æG3ÚáJ4'#5ƒ]’UÉvMìFÔ2“¶N² ª“[õx¯E{B·frâÕœf¤!LU¯6“WÜ[ŃžI´AN5Tâ`²w³ ¶¦nr¤ÅcԼׂ6gZtPܹ •œ+N§Òµl‚úèή—× -É®¡¡a}â¦û¤ygoµh íIv%Z…6, mÃæ)ì>g›ïVõ$ºÝÈ(85ê§ló-Z|Ú÷Éò›]Üã`5Ô2.w&è#ŒàŠZ,›¹æ71È•ô‰l5É92æõ:ÔèÖÁ -~±Ýåí§¨~–ìÅä}1`Å€W3@ÏI®GJ4¡lœä ºó‘œ Q ª¹¬Êî£`’^þ’èkŒp"ñùQKÝß&²»–Ýe¬#µ”ô©¢Ouo4!R(ÖlDòò1¤Mx’ó$s‚í±9…õ)~É—ŒÑç]–we-WJåx(úXMûœþ²/÷wˆCØ>RƲÕ)ð;aÅX þBÐÆÎäpMöGŽ¨–ª³”…æ®ðÚŠ¶Ë÷¼{àe_4¦V| Õ½•í‡RÀ žH -(Âœ9#§¬éÞ<,NAvÀZ•'=XðF’Œ T3¢½æÔQ¾fE—AŽîuÞøÑŒOŠÐ=ÜÚðÄžrм5qË»dùÉ›>YÙ=¦ë‘9‘íæí—ÿÔ×_%k"'»Ï—?íÅÛúYÃIy’pJW¡b»U}ø4EzňAäAÛ°@q•vȬ°3sóSºø±Ý?|ø'öK^O¬ô@»Åþ—pþ™Dluõøþ÷õ›¿öÄ錪Ãß²ÕŸ”`O‚kdLá8¤Žk(ΈôÕÐâä‘ï M@i…ìÌ�mìϳFf‹ŒF²:ì¶�v€!(PÐ -ØÈ))+ƒ‘Í+1±*0ãCDyÉä�ÊbªÚ÷yóöŠÕûŒÎ ->ôj ²ˆÂeA«ÝKÖJÔ;‹ð»ÉAêªÓe’>Cz«Ñ?~ò‚U^ô$DƆ¿ö“7: ½x Õ:ÂÙ+F»è‰=V•I®9KÍ[)FçB¢V@{ÈF -üÁ#%CVK¢Ñ¬8ÑäøÂД´IX½‹«ÑäÙ ›qóî×ßþ{úø?¼`ìì8=üœo¿êÑn(Åÿ7€™3’?@”‘b°€7¾qÓk�Ä°š»çyÅ +‡W‚C¬6ë¾FÝgâÔŠ5fWÒÆ~~£Øh6¼ÑçåIûÁŽw"Iüt—/?xÕv$X©Ào|ª×Û׿“;l–ºÛùå“[½#t'hSìtÈ(AÀ<Iû¼5@.°Äö0Tµd¶ª½”ŒŠ•¨l–mc,Ù ÞÎîÿ=ú¹ÿIpKâ·Ð³SÞšåI‰v´þ¡>ü¥X~^/Þsj†õÒßͳ™ÝJÎJ¦|.[›ÁZÔKðx_ðB�A -¯ äËÊð.6¦È¨8î+ÙȘ æ -Û[gò,ù]9Ý‚M ^ú<½d-À(ãqˆÔbJ€I¡æ<xŠMfä@,8¡ñµIWgÖX«Ïٗǽ¡ÎáDk%wZpÔéŸ=yéÝHUt‚šKЉV+öÛ+;½OfŸdwvÁ(}Δô‚€™¤Wà\Fðxœ %¿¸Â=i(8"Ék!™sP‘ ŒU'Ø@VØtÖçí+žPª˜-À.è ²×HŸ` E+^1êùX¯@º°€XéèøaºÿîMO¼ZÉ&nÞ€ÀÈ=«ƒ4Íúì/tNE@@vdM!ùE£ -¢Ýõã_Õ`>")¶jÝ[ÑA²f}‘‚ƒˆYûéž·R=ZÉ^'û+ÉîTo)Bþˆa:}¨÷?Òé)®OîäH‚¥™œâdf{â-°Õ–ݳ[€HuH{+º‘í9Ô‡heqÆ å‚S&š¿s’“ÀÔ^ÂÙš73Â¥™ìôxëŽïiûÁ™¼–¼YX¿ ëG3ÝùÅAM×éêëîíïÓÃ/رJ—¥ñõ’3á\7=åË?'íg7;ÙáV±[H'l7Ð�dWì,‚<&‚Z`«@i08ŒZ�v¬µæiý -†u\=YùÝ@{¼ê"6K-ig%À+LNŒ{Œ>B‡PW³‘Z³IÑçÜOY‚^ôäHB-tºaqʈ1<C1Ô‰A×à}˜ÀÎPI99ÛîGˆtÍí YÑâbGÔÆ‚’ÂÅZ ¢eyÀ9—=)€r«áÌ“òå{44Ï ˆAtˆcÉšñ#d”7¾…j—Œ!ê½ìK 3`¿Yü`§GÑžŸoÍ<ùÉe¶ÜÆyáGI,…XgÇìË?ûf;@�$@Ü$’%ÛrdEqEqœ”]•‹”ß 7¾Ì¦‡®B¡@5ÿrútÇWí‘œÖA™ÝH02“ÈÄë£}¼âËf.{#¾ðËWñðÆŠVˆÅ(ÛO÷?À¥Qkt,Íð}ªûèܹŸ³Å£èŒš¼‹ƒþ†DçÐ6¶ä—ƒéý¯¿þïöûÿîP ½¿µ²#6œ/Þ7ÌþCàÕR&K3¾rËG§x°³[’ñÛŸyÅ‘Q´Rà]$3/;ÚÙ•™ÒÉÃí»Ïöi-Ám‡Õ}±ýXžý¥8ûTquûóÏ¿…Ë›¶ -Hl…ˆ!ñ(bkN-P´€îAÉ#V-ñpN.€:šŽLþDI”€ã”h[ÅšwÄÄ §O‚äÒN6'�&äÔ±Õ¿uË{7¿5£=öÒJмÓfŠ#´Âí-p‚»”õŠ“"†qÁóFȾﷇbŠ -A-PV˜v“1^4x0Ål/Áÿ¡O”�U'4X«œ2JÍ] ãÀfø×ÎI‘JÆP |@v§Ã¸œ”*ú„bF%lÑ:Lì¤c ¶ð{øjƒ¶ uQ+aqnµnð‰„Ǹ4ÝC€N%}Т´“–7ÖHÕœç6X »8ÿÜoïᙤvÝ|þ!Ÿ}¸²ýj4¿ËZM¶K`³æÏÂ|W-ŸÊõw´’¹ý5‰V01<ÁðÏ�NvW¬?%spìw ƒ L…ƒ»lù´<þõo¿ü¶}ü»èŽ¬dKŠ+R\cd°’¬F ¶f½óSܘmýâ±b„;;9@*øswýãêö'Z2êPqWv|î¥!½LÇ÷ÓÍÄ·` u‰EtOŸŠõG§„U¾þüÏÿ›§ï‚á5m¥ vH àõ!>wÁíZ¥Á -™¢@2Yhî)l…èò.`\ðŠµ“^‹oìd‹*ÈZÕ3Fœ9áÁ°oƒžRÈBP«¢R»œÅô\0³fOÝøŒø§Ä[9á9¯ ÛŒ+¨9ÔÒfÁ«1 Có>^€L XþÐ쨜’ÂÍš]Òf`q#ôì9 ¨+†°}™LqoØ³î® ÈL¨ónjx+8!l -¥xû礌FØá3|‰÷Ô¢òû‹~v*èG·ç˜üü -a÷ÃcUw‰ë¨Ð‚ÂQ´ªž7YG²'àO3Xˆf‹‚ç‹æNä&ñ±8ýTí¿ååͽp¶»ú4¿ü(;#\›ñÚËwéè¦Z¿wËËŽz鹓nqœtüUo£ê =ë UC³ÝÅhûžVcŒHº»¬ÖßÏ_–¯~Z¼þÑìþfvùC8{Ã#ÁžªÞ*š¼I–²åw$9`KvzÞ³*V-xf²ŒF÷éìýüð%š¿cŒ©ì"mgÊÌð“£?¸vóNæ‚2xòGfÅãÇåÕ?ÂɃ_Ý ¶ß Ü1aÕYfAœI[P¸–l9¤dЩCœY:¾“Ýi›³QÅ^ºù| 'æí瀙 —Ec¤¸§ú3˜¡‰4«.kƒ&-ÔK0Ìj?‘¼2îQGð¡cãqá¨5JæÇ»bò–„;VÎðL„‘Bæ²5EÉzjÆ Y‡•úpN^-°Û‹%ca0½>à Ñò—-�Lqih‰S3€ -Ú z <-kyé¡õAP''»œUÀÇ�uø'ì©%ܬI[Ï,pRHaQh ñ¤•lAž J‡[URT3/#úmÞ9ôŒ¬II|I`ÑDèÓ[’xKú;;ÝãVqÕúÑfzöó#ëåG5ZKÞȧ~±¶¢1¶îú“Gœ®X|m%—Šw*˜“ŽœcVÄÃ[·Øw¥@qÇf¸r‹IÎÌl'§¢;&«»ÅÓæ©þ©SýуS¾"Ùµ.ðCÀ'”�Ï'É¥7|cewr°S‚½ä»R³…Š°a^/%ŠˆæÌ/^+΄•C,§b‚s&’·¼f^Í[Åm6{ãbµT0KÁàshr5!8œ`T82Æ( å°býÔÍð!#øà^„H««"&4ge§¯H|ezNÉ°I™€mœPÚ‹¶LK™¤Ï9uÓÆ“;¼‹) F)·0ÜyÌh)§¥ƒƒéo@æš9p±¢–¾lõ�<dÜÓ*Q$mà…N_48|ÏAÁ`Ñ}€mJüþ¥— ld(˜ù9Ó'H|Ô3 ¶%ðÞ¤Ô“¶C7ñJ)ªÕï>)hÒ°;µ!³f‹itºx¼ûKƒ1¿jmÚ¶Ù…—D£ÍàǬ܇®þð¢ÙéJ²Uach`dÏ,0jѢǩhÕ©×ßé…›žszÎ*™]ÈÁ¢+:"É oìöWvrO߸ -E¸ðÖ<ZkÞº?zìOH²¥¤X.Ú•äŒX#ë9cLpfz(ÖŸƒÉ“•]öì*ßCfX¥g–F¼ë/þ<Ø!5/XÌ�ig|²’ƒW½³‡OvñZöVœ^bWéø!¬î:XEð�K¸FÑ+άó<Áùõx2ì°–ŸÇ‹¯Ýêµ®1xJö´«$N¶·‹#å Ž@½�NtŸ—íqóR 6\Zì„R_¶øši"(uǡ뚊!”OËQ›s1‘ô‘„4T‡ðŸe"&PÊ:ªP&ÚjÕמâO T³æ%·§å -?ÏJV׽ƷÚ+x�< 'eåˆbM;˜øé˜#j…” øÇÆ1øê„–õÜ°§ÿ'¹ÌzÛÆî(þMZ$±EQ\D‘÷’—ûNQ¢DJ¢kíÄ[œÄÉÄ3.O“NèCèö0˜×¾ô¹ýz=LÁ/æryïùŸó;p6x¯Äx)¼:Ë[ô¬o=b4€‘Ä*ÑmÛ(¤Zö„“9É�=vIf8SYÚ‚¶G\6nÌÓòÆ‹‹ö´Mà`H#¨½þ]ñç&Yó9Aåø.×Q’!âÓâ\·ªô‹³©á›áF2°v4›áÊ��\Aƒ’G~~j«hz„Ç A6‰@3ÍGëOþèÒðæùâV¶úøWƒ¯$‘IÆüé`þ:¾ŠF§ƒÍ;Öß!û !Õ]Êf¥zõxóqüü‘`{ã5À;]ÞÛ×=´B«4£-`)ßÜÃôÀiNy!²BÐúMèè9ü?Ÿ¾ha‘áð9\«b¥eØgpK^½.×ßÙýjäÓÝorΟ×èB,Ïÿ°¸úÉœó[LeàÀäqÌ_Žëw€"¾kwµÀpª–d`ÒEÈ” ¡ˆ3Q¬¼£Úš=®+ƨgŒ% Ž„(É€ú(h2Å$Ø œŒ–Õi¸ËÅÅnr†(-¨NS{qAÓ‘¶j„¿Ì«º$µ¼ªœÃºsœ…¢¨–N¼Qõ±¢ø^2mNÙPêE6ÞŽÉ2€@}ž<0ÙD“Ž>;Mº¥`x¼Y,(Ž¤ú؈œ¬#ŽpkƒzAòiñòËOÿÖ¼ÉQ[ƒ¼….ü‹…Ò”Íùî~qxÇñŠÒcŽ7p¼’Z¥òU-M ug‹çÔ™n ݪÆ�NØéyÄ$ÃC»_R34k¤»'¹MÜ Þ\}vúëcÁŠ ^1¹À°j÷ Á—»}ü§y’¡H2of/ÛBZ!JåúýõÇ¿z£3œ¯<`c+Xg“·Û۟˳/4\¹é6]Ü) sdÅR½¾ÏÖ÷ãéÍÿä'·O::üYmN¶€pxmÅ{Ý©ëÓGÅ©y93àð]Iq—WHRÇ]ìodùü)'cXPF`¡N¶Ù½úÓæíONñ"žž¿ùQdÉSN9æ)ók8ò¥_^#° LuÆG¼Ú–Lt=D¬ÆNÖº?éI6ƒo¨T°#NÄ)ÀU–~ö;¬;e\œÂ7žµÉ3NkutDŒÁë_X!ø¡ìÙE»çÂOxɇç¨4ít.¼1<ŒWm-À°höFŠî"{à l¯Î@l`yS?Þ }àv©º�¯Ðìr¾ÿŽ…5&ã@Q É�û8‡zm¿Šò5$i¡¢ -]¿‘Vc}©“ì.?üEÐ#A2Ms„bÛÌ㯋—Â¥.–wiõ‚¨i¦ŽW¨4nuà „E4<£ÞôL‚=ŠZŒV‹…{l…ó ¿…¥#‚»jNíÊð'0@|©éÕÃéíâÅ£•œàzjÄÂ'#.a3ìR2:»ùø7‘e¦?³½®toÎÂõfÔ–Û»ü5š^#¹ðX+XEÙYZÞŒvv~Ø<c ÷œžXñb¼º£áž†ÞjgûýËïþå¿›ëßãøÜ`…q@”ðÛŸGåZdvò;5ÜiF÷_4¹£EšSѦ~¼Ë¦7²‘µ$.dÆ'ðž=€÷Òh®³ÝþÃßýOÏñDw²×†?Þp’ªT˦š[Âs2åÔ) -x22b0¾øôç)nÙ’bO0¹ÄšPÖ1M gWß<þssõå §óª [¸½éb²&HÜÚN6Ä›‚ëˆU‹tÐXG2r˜è!>¾pÒU[ ™·„®ŽE«B(Ñ -¿¤ÈËæNF“K€%lçˆSe5$ÆÐpf˜ÓÑâ ÀcÛ{�^ìÂ.€y94É×Ép/«ƒ*[¼uº±{^$é‘@Ý`™Î¡Ìß<i·xµ«EÌÛ ~¢5@6¼h)ˆ`ÅoF[´ˆÙxž†ž«9(ÙQ‡Áa°ðRÝ™âÐAÐËJ€Åf†é¶\¼÷Ê=\âÔ0¹Š‘ ˆ -5-(ÎÜlçöwRr“¯Þ²xi…Kd™.ìd5˜^XÙ†'}4¦fý´ù‹ÐHĹ›®áþøBõkÖœ~Ák)ñê´º™œ~ÃÙ[¯ÅÆíG^‹:ZÌâ5@Ý·NÿRõ7Ùô}6yÃ+®¤'8/¬°é8dø•“@ó%éÏ:*'†7Cë,N¾/¯§›× ƒì¤-Ó–H5ÀVDÃK';CùR€^î\³ -Q4{Œå¹ÙÆ÷Hó棔…ǶE½-2^²ºZìåû¨Âö]6RY_îÁlh€1«¦Ü ë‰ÒÉ= VT-Db±')¬²’Ó|ùà 󂥶ÉÁ"dO£™¢%Ì®`é8è.œá±M>‚¾€v™Ãì¹aWÏ8Ej==ǧ;ÿO:’Ñ;мžFé¦ÕÔF»-:øÉ47ƒ5qç°,Š2ûǼÆKv[ò Nd´¤§MTÂ$ÙwØoŸÈ¼`7o7 -$nüê„âƒo[••X*ŒxOFŽcÓ -¨¢ÈšáK/Ý©æª;@ì¼êÖ=gIý]^?”‡úëê×õ¦ŠÙ‰4q<–YÕ³&<R»2{e».ËÝt姿ø6©ïH¸÷¢3šñÁ\{“ûääs0{O‚%n§þJר‚* nªÝg°+õNº¬ì¨1¶”Ú%è0+>Åxh�`HZ¬û3³¿&áö¥{'Äžƒ«1,Fj+XŒÔÎÎÐX©¿É 18ëàq²¬°÷¹î`,ØRäi÷,—énÛè…ï$[ÖÆMÜ÷]¤H훵Ør¼Nì3M:º�S´h‹öŠÞnz -è—MQä÷ž÷œçè ú¹è HO¥ø”Ð-XÓ²õÍL•HC°™Ø’©fñÑÍ>hg¸uÓ›høAwkÜ©9+» ®5oá%‡bòB´‰r`»SË®Zª’_éBÊðWȉû‹ÍÈÖ´B+àoÊùKY?àWªQ3ͳ¶òî}÷¢g‚´¼‹ž�èƒ °yK* ¨É]ô]º z´J1ªéú%¼ëÍg>Aþ¼Ø¯µç«oôÍNßá¶ç}û}Û�êðy¬’úÃïj6 h·˜9¦q ôÊKöx9K©Î<ÌnÊÙ'P‡HòãbÿjÆË®–éáe4z®ž^ý’->[ù>½|ÅÇ(|Âü˜×÷Ùô9žš - “ôj±ûIv -ÉLâpùåòéŸõþ÷F²GöùòKP=±,H±ÿc¶ùnæ׊;³IÒÕkS0«/ݤ³{7=¤Óg-\ŠF©+b4º5ƒe_‰à==Ø(ÎJq×’=•Ì -‡w<ƒ,œ|ke› „¬ô`‡T„A<Ћ¬89éª-;0O2yŒèÔ³v“á;\¾¢^ûBov¼§ZÁFÔ+6ICïmÁ”H"«ÍŠô”ÌŠ³u‚5]OÖ«‹®…€%Ê +¦x*٘ģ£å÷bþÅϯ“â|K‚·%OÄšÒK7^EÅÕ¬ÒvFqºë‰v»gˆReàÜ5ü‰*ð^~ÈK†·`@ ׹í gáx—,Ú»sñÝY_ƒ¾·÷-µ'Å£Ò©jŽÁxÝ_1úVß³£½éoLg‡‡zý9)aÚu=~êZ=òG0 Ÿå¼ðàø›ŽàñF$#ö¥èe9ÿJ¾àW7Õµ"|Çã}É£€à[°œùkµUtÄPÑ‹¸¸‡´9dš¦—_5/âHi[ zZFϪ/_‰9¬Õ–º?}³¾Š/ºñ6ÞäÕc:¹Tßðk¬6çŒnPN\Ý gã鋘—.e)&¢–°È�7z°‹;Ý»|~üëÇßþ[tjŠ!–íäõƒ›Ô¦’älÄzÿ•±Šzm'7qõHïÃäÝìFÖ¥oøï×?ýGõg=9é)¯ïSU’ýbùÉ —ºQ„Ù^0²–ìô´5ËßÔ»ŸóÙ'† w€PWñi4ŠMØoÊ8LÓ›9ÿQ{c>Htx“äLç@@KêIjÔH+X^Ó_ê\§=•UZ®v¿KËKYÇ?§¢Áƒ¥Â�·°zË›dÙ¶]·{¦¤„ì¤54ŧ'y ‡ûttGÄ`#†5 £c”^GÃ[?<2ñ³Öà¢crJhu¸C®0zA1`1ÝE8z"$s¬y+ÙžŠZÕ‚1BA~½¹ -‚ᬚPœªÝ³äA¨5‰<ãaø•æíÌ‚|ç/\:Á‚%â4�Emôš®‘q[Ì :EB}P¡))mÅâÀà(¨fÍ_t$ÿ¢osCrö ¥&f´áÌíä”·¢5ì)nCþ.뿢 ãAã“ëÉö5¬O-øÄ›'õ}RùÍdöTsø¼íÕAÚ<Èd„;N Ÿ½¬n¾õÌ›M°}³l‹^K°Û²Ï•VDE=È!¾3‚MN,英âíøòëéÓßöOFùv#‰…fUnØ°hœîÃhÇÛ¼:uiŸFæ-X+ýdãûa}ð:”?µŸ4• ¥L³ÓŠ†¤e«¦ÄÍ?q’º=“õZ1&h˜ ¡ôiVIŠÚÈ8»ÐÏÚ*ÃeGœ_1P*)Žœù¯€<ŲH"”0 |i™bd]Áz!Ij‚Ù2?ØÀ*LVÖŠ$;d£ã[:ë”Óó#ø]ÁWíYGjÒö;;Ú‰†Ñ˜°æoo;JÜ–"Á¬UoÅJ†ÃÓpþœO?j>§ÒÜyWô~8ˆZÝ®5³ìI‘¤æ|0½ÀÀƒÐ‹%²}z¸Á~é>ª?¡÷¡1rc³,ðlÌ¢XQÍû2´Y°ž|]×:Hy» ;ìq_M Êzõ2=|m^õ·Ngˤ:)V®ûµIƒ7Yq?Yõ‡W‚=ÂçûïayT¬lÒD¯Tg)é(ˆ:ã7P75¢“ŸøXñÎÎ¥ƒ`±Aµ_=‚šb=jÎIÊ5ù•wº¿dŽŠÑ .Ô2QÊõçáâÙŽ¯‚á.×ê³Îs ³ƒÁÞ±Ë,=Q½ H,ë©éqP‹¸¤%¬hæ·arüµ’4õöúô,rGÒJÙ™zénsüzýò—p‹,ý c%È)aPbª»qWŠúbØ~¨+ð™ÚKËŠe³»Và؉0~BµF¨º+ù€=¦¨_t5(Nw§h•t[n¿ûÙò‡óÎûóþ@KúR(Èp`Ú‚V0;¾xÖê÷%¯É, cíp›T¡_2Ž– -à–UsÝ¡#<êÑõ.ÝL‘ª^°Ö)ƒÑ|øIãÎ<(o¢É½7<‚ & 1» -뇨¾3¢u4¾Í–ÏÉüG²àAZ8‰›íÝtϘD½ù¸Ë‡Š¡x“?‡søo2~ôó+‹/®Šém1¿O'vv§0¿ÊÆwv²o>Ž7_ÂòƉ6A~ìÓøÌ&åï>ÿ+®Oº7¶¢9¨ÏÖ .Ù^€ÁÉø6ö×<$ÔÔV²®’ášWÀÿÏöéUT?XÙ®%XmÁšz»%¦½ìÂw’kÄLJÒY°kØøðô÷ýã?’êÅËnß| ‰e#g:ð�÷g¸ƒ`iÓŸ™`› Ö6fxÇåc^=©ð³K•›ÿ#¹ºšÛ¶Òè?ٙij‘-Q+@€è½`Ø«Y$Ñ’(Ù–ÉÙdgw’ÝIÞò’ߺڙ;x€DÜ{¿ï|§Ð ><E.]ʨhM¶'B{þ¦Äü�ágM´¸B ha™\¯Æ¥àçrMwä4ÿþ–,¨_(‹ð5 -ÚdŒ/ʽjC,´Ö%žœ1Ðè$˜âc@æü»7%X88:¼‡÷£…öãÍÉåÛÓ:ÃxpA/|–d£Wgg¢b”pe¤Â“s±> ÂwŠz‚g°J Œñ·ï.¾ÿ¾‚S½öÝ'¸v“`VHAõ�?€IÅ0^’NñöÜìÜhÁFõFº£´œ1F¬5Ç{=¾2ºG;ÿÔ³*—Ô¹¸B{-%G>jði… šJ‡à¼J³à1ð¥ôàxi%/à -Q³g¢³`µžâL´`ÍhcVÐàX${–ÍŠ‡Ÿ%g†~!BBB/“Lð]€3%Ê>_"í†Öù„5'\{ÉÙˆЅ')ÜoMÃ8°ú€”ºtPçSÅßÛýRë_¼fRÈ<)Ë@#ï¬Y{…ýáœ)˜åðÎŒ·§8íiÕ7ÖÙ„VœU¨j²Èø`ÎKX;ª £.šKܽÆE�AÙ‚žµd@ºG ýsÒ©0!â'„ãì?Ð\D§RÃ|EW·ÎwK¤[¦ÝR?½D²ˆjŒÛ•VtÞp©/X¸V\ª˜âº -vE�:¯ª 0 +öX({™+LHÃ<…¤Väz«À|ƒM îGhbµ¡‚‚ ªå†uùZ"ŠOHÆe…HsF¥*wQ‘Ìx‡3XâR¼5®Pɇ’ †,t¼L{˜PZbVáâ*ë¿-µÀ‡'gÍ7ïH¸¦2„¬å¶ä¾ì¤X¼5CŽ¨ÀUÖTø‡‹¦‡ÉeÌ)ïÌ£é£Ö݃ÁŒxÇÚsZíÉÞ²?„ËŸŒì‘³¦¤“´c§{Æ7„Ò”;B{&»s֨њF~iÏÌî5çL)9㬙޹öÇŸ¼üV‹÷´6¤¤Lv0öŒ6dÔ!-g€¢ØžFãœ=®p!!e´¹àÚ[ÁÛ1Ί@ïÀrÎÌîÝRb¤·Fï±eMëØÝœ¶´p€ºbUX”¡±àL szrPÃ+Θ2ò€‹Y(S^ƒï"# ²Fàáã3 ‡ ð'p8¨¤0~Ò©1^…61ȬR0p‹c,ØF˜áVõWœ9j)}�»&$§¤{¢�¶Ãä¯ ©S¤BÌ/ebÒTsJƒ¬´hÛÒ‡”Ú'å¸)dž†‰ÎTöÖŒ>m’r¯Î…˜ˆ -6™pì$ÒesrŸUò¢hRukŠ=˜slúêH!î Nî -GÕ/ÙªT§<ZèðZ®‡«vvm¦ïµxÑß>ëɾʀ+|ó®Ï(9çŒA;˜;ñšTzeÖç)ðó®¬àS„”Ö -y²ÏðœºæœË¨1o`¡eo#û{ÉÙ‰öòõM -§ íà1¶`l;»áÜ…–^Ù½ƒàÍ%ÌY™Î£ù§`ùU -V’;Õ¼Éhÿ³ä-H1ì)N¨„ïùöTpg‚=‰†Çþæ…55>Íô¸jç·V~d¬k®8cLKASôQ@ðƒ™îŒd+뺘–Ÿwñ?CF�Û‚¿U;÷z÷hõ”èJq¦Ãý¿ŒîÝy˨ÌνÙ}Pâƒí)-#ĨÊx” -qiCm9ñü‹7¸÷‡àä2^R.ÐÎè9Ì$GSL.HñT×€®³ª -#€¹Ë+9ˆî’µ†R‡Ürf^ç|Ξ€åðT–^ûÃíþÖÙ‘Fþ¶®ƒÆ3ÁY�]xÖ¹�#f%Wƒý/îøQÖVvgçG<åpãþÐÅ›ÝhtH—Ÿþ ")v@þhnKÏwÖÂÒkB!ør�òÎ<€ÝµpÓRûl„b6Å®lºË—dõÒ2' š¦’5p/„>Ú¤ÄH Wáòs¼z}ø÷îÛŸáò‰QŸ>) -V¸é/^üñ“l :ÿw×ÐbFë}1rε{7ÁøˆÓjÁ´BÛP -èHKÔ¹”–r-Þ½kÐÎIŸ.)K1x¯D;£û!œ?¥›g%š)áÄÉ®Ì~±ìá¯Ûƒ[9ÞðîŒwÆ`Ä:ÞJþÂêÂÑçõñÕãïáè¨%;¶=牯õ•|2ò/ÉêW-¾jŠ¡`ö >`”®® ÇFÿ¾å,i{áÍžõ„€ŽÁŸzçNŠ®'y› X>ü®&û³¦…Æ9٣ٹ•Ü5VÑn">R£]÷.) è5â…ÕY»ƒîâä÷\{ÞÄýU¹å¯”Ë ïƒ(€+xËÂF -(N§ÎTßÎÂùþìÉ›|&(®)´§MµÇ8#%Ú(ñ6š~õF£õ³®zš|ˆ4Gð1gÎôø -ìõ6?oüíÃ¥3x0:‡tõ’ßýgp÷[´zÒ’ÛÛ.îY<üší¿¡¼9ý5ïα…oD{Ôáo !Áá%%8K';æû&ë»{m¾ºÙU…ñH)ÕÃM0‚Ê<‡@—=…vÛÉŽP’R§•Äé^é&š}™ÿØ~ûË]|Mfï¿ý ©´R9<h1ÖM8zþkåЋӪ„ØÕ‚˜zSwtoö?8ÃÇáá·äý?@A^v=Û=3Ö¢EÁrX+8(ö»C£÷Éää‚øÇåÖÔ6~†ñÏÓÝ6ÝIJ€€Áø cÉÉ–-YK–²,Y²-ËÆç6ÌÁ`,B²ä¸;Ót“îì¶ÉÎÞìLg¶³Ó^´3½íéKo¸°Ðÿïç}~¿×†»œ¾Wܼí¼+¶f¥þ)´B*d¦’[(WŒ¤éY~pñå¥uv ¡V¼Ji^ʈ©CÎØðesø”/ù…%/ ` 2ÓñðM,ÙqÐ%W4Î;ð{®U/ÅÍïFŒ}ÒØ…_‚B=cíáBÑC¦‚R}=VöÐ&ÊXÑT3^Ú%Ó'YÕ¾XöÍ»¢«˜à"d ¸)“ò€ÖvWPÞŽqÞpzÞE¹‰9šÛ¤Ô åÊjžà$¸R8>ÆXZ1ú„º6TV>´‡þ”Ÿ5ƒÉ†7V„1Y§ìU@Ö -ä -—Zžˆ/NœÁô¢·¹"`³ ±Ën£LÉÚç -[t~$XÓH¦½1ºr2lF”¶©tÏJ[O*ÛWzãÐS=¡™jÂt€þÙ0É1¤ÊI.$Û“7fæÁrÀîVÐ8Æ”b¹Ídå0Q=Œ·{ÏSÖØÍ-¸);&Bê|b3Vš„³}6_Ü›sS«(Á¨onÍŽr”ÒÏ ®Ôþekïöæýß,i¦êOÂéцeÜ‘ü9ùý’ÙÃ>X‚åÅà´€PÆSíhv€²ÖÂÅÒ?ýÛ¯þvÎå§ÔŒ5E™š'V+cLhÙëë%¯�æéþ¿YÅÔV›ˆ•cÞØêïÝŽÎß;CÙP“ë§Z÷LmŸ&¬‰Ò»Ô·žçªÓú%¦ l^6ÄtnÈ'‚¹—®Ïrý'’¹]îL7öoAQ¶¶õÁETÝF˜r¢z¤o¿¤J3Œ† * ‘Ô‚+â�5bÊþTË/Õcù[ÜñóFÂ쇔l4F@|øùR€5åKHѲ—rà B,;qÉM¤R…ÚD™2!u`4àK °9œU=aÙϕ™v(Ù`s}©4jNž•zgîPÖLF•žhN”ú±XÚe´pf€„òjåPk=ž_#ì‘à“˜º ³ 4Ï -Ëéõw©òdÎICæQ®±‡Yð° L€ãŸ Ì#XFÖ!ÞñH²Š²F(Yóq%\´øü¦'¬Å Bá…É -§ ¢©Jf Ã/’yˆR:)ÕÈLËg"ÉzLíÄ*ô9Ê–Äâ&m¸ )šëøbZ4e¥¬]Jéâ‚Éëý‹W©ðX¥v¤®Åê1¥n†5®.:8!7lÒõ…5‹¤E£¯¶ŽÕîI²~šïßx"FY`DŸ?°=1¾™i^%«çDf“PFDºäM.ÛJè?¬øïÛ‚ËÞ„3ZôÜÁÝ"ĸ—H&™¨ÞA9Zò'»h¼A*="Qýb7[B¢+ž|XÌ„Ú¤µM¶°Oë“E' ï.' hL®•›DjtsøáÇÆÑCGˆàµq6Ÿ*‹\÷2˜¬KùÞ›o>½üá+('צÚàiªqΗ³íµó20=yóÕ·?ÄÂgsÜ@0^£s›rsVݽM”w“wßÿÕ7˜¢1‚K¦ó[Öֳ݋ïšÓ?㉮nn›í™3˜DÂ4v*2ÓKVgæΛÆÑ· ë¨18-·öIÖÄõh¥u@@eçUeïk8`-ßWQžà$Àñó®øC'ZP8Ër c0Zƒ@_Ó zº0¾zùI«Ø°¸X=g‡0ÂJûKÚœ¹™«¬z…0[µyØGN2 Ÿ©ý³òÖuº~¼Rag‘ñÅ‹Ÿ\Á8)šik/e!tÁCéð>a˜,Î$âå Wz`Ö,…Km£s¶sñ>cí·ú§Íá‚K¤XŒå:Œ6Rš§£Ó·_¾úȤ›ÍîôúíÇ\ó -H´èb\D>*OâåsÑ: Æ -íÁÑäø&Wm‰¨nÚB¹z(ÑÎ÷obsÁ…„Oa×�‘}BÃÍSéÆéW?´'Wskô'¬”6ç†0\àêë¸2>|yýúSÊÃBQz¡lŸT¶äÖ%èÐC;x5oÇWýhDÞæ´abã$j¤®ÝÍ*Å Fgæìˆ+ÈFÓMQ¥K£d¡§Õ&BúÝ‚%“œºÅªã¨Ü¿£ÆsñìMuç)ì,C†R-±rBæG(_Á(}oúâäæ=Æä>{ˆ a°ˆ2„6Y9 r³yøó/ÿÉV÷½¡”Õ;ïÎÞiÛÒè¦3ýZí=󄵃£ÇO>@?€oÀ?esCF¦j'¼yà†Š<|^íŸØýq:Ûaô X' ÞWƯ“Ë�·a4NVüâoîÛ¡óAðxÎæÏÂZê1¹ÅHE)ß±ÓÞHÖÇ•Ý ƒÉÔ€D{ç]bu†Pù5ï¥Ôå@úó%üÞJd WÉdïÁ*±è…ã% ˜ØÉ6‰tËæËØA{Ÿÿ¥å˜\S;æ>&lÀ8ƒ‘.£ÂŠ_‚S¼µè -yB ŒÎûÓ+^ ‹ªåú^¹5uã’Tåš3¹>»Ûú¾lŽB±ü«·ùõ_ÿm_Ý·á6·æKBlÂò8$|\ue=¿úã÷?þÏTì˜�BŦœyœ®_ËígÊÍûÇå±Ü8z…чq•ÇÕVKj1€�ˆD‚�æœER")Q9´R«{¬é`»Ç¥ñ¸j‚÷.o½ñÆàWñ•«¸'ê¿÷~ß9ýå·`a`µà§ ¡lv.µÚº:}÷ù—Í®þ,Ù}»}ø¿<ô¢B¸¢Ð<Y½}Þ;ýB‹åRï(×\ H¢M ¤»fãÔ¨GHU1ÚÙÂ(ž21Þ>;#³}‚+ɹ~˜·#!ä´ò¤>»™]}¯wOÎ}Jm†¨ES*o4ÕÒJo;ãëÎáÓÞÝß„â.)mP]½šÒ*û·?C\[Ýè&wp)Xý�©øP‘5ûq&2¦âÍsýËÒô¦¾ÿP½erxJ–m½º—ëž:ã»üà:i‘T^³{0»@Bb³ ¸GŠsb¸’ÑZîøGpFÎàJo‚£zÎê‘r5™mÀ/Ƙê\¹ºÿ+g¿ÙB�ÝáÜ�GQà֋ЄÉ+Nßíý(o5GgÏîäI°š³ï`oé\·Ø=¾ûú\,½`Çi™_\çÆ_$oµåP&—oÐRÙ¬–fïê‹ó³f'_rÀÊ¥óûçêølá£lvjln³÷r+ÁÞ%øüñÕçBuHÉMýÅDæÐ\ /fû2k û‹F})˜/†s6ÌŽƒxo+ƒS\p¢I¡Í0.óæ�Ü€P«¨îŒ@ræ‹ÍÝ›|ï2eÁU¶À´™§•N -Åì0ÏT½Wݹã[orS™<ÐJÛªÌï>þŠ3@°Mµ}Ga†oì}Ò+hªðøåï£å-i3xkA -n<¥í ‚?!²�¨/Â+’b‰2úÙ:¤Í%,ìp„Ô)ÁU¬Öf <)V0¹Eéc”m€¾¥² '2¢Y®è´úhD½V^HÖË–*ÍýÉ)8ï!• ±Bg›œ1b šl#–qa9Úª8¼´…á[Lm†hÖU/Ϥ˜óúÇ?~-nY½ß¿&ÃÐml£þ0Er¶T€ú²Ö ãM£iÏØõù£Z9$0Æ¿«LïíîoÔq.·ç6ý´?ʽö#›RÊ J£»wíLþÀ——‚=á™´Z·§B~gK0#,SŒ2FypZ_ùp >@Êï"t—jˆÔŠ3ø/Vm¦v�•ìÎyoý'µ²¶ê«ÆäZr÷ü˜"kõËûgÍénFÑ[í+`›öâ/Ù"ÔcL!^ß?çÝqWóµUõT\ëåCˆÄ_ÑíI{÷.FŠ5Ü={®Î?)Å}Níqzª„àæjZ*nIŒÉÉÅÝLa\ß½í~Nfj¾ %ÈÅçŸþ)í (-çÒrV²·ªN?ô>±[Þx¸þŽ1ˆñaŒG(5„fƒq9†®…âüäðIøb(!ñl ¡ø!±ù&¥ô6üôo¾ „« _mÇ6|<2'°!”Þ]’jóRˆÐZ„6á0Y}Èé=Œ1·v Êär#Ø=Ù[ræ<F9q:ïXʤE‡Hëº72¡ŒnÆÝw†×’5Ðýõù§ÑúL„ѵҬ9½oík4OXk¥sðžVeÄe.³~>8úÚÜ{¿¼þqvñœT<¯:<¹û>×X@ÝP-ˆ€.Š=W½5|€/.áéb„”}*)Øà õçúìôjyós{ÿ£Qœì=5¦I¹ŠñEx_B -*—$Ù’?ÊøbΚi½ÌØó0ë‚©AÛRpnR%’T ¾èöÞjÞr˜Ì¼PÄ›0ÅV¬lnÇ^½öCJ¼è[ãØéžÓ"t.N™nï¢6}„+@Ù<PºÙ<¬JI%‚Ë1K[rq’ËÐPã$¸²hÏ‹ÝËÆô}R¨ã$©+ù^á"˜WŸ)�6L¸Ü$É•¢¨‚±õÒ¤^œ+³æBb§µúbµN}hf3@ãŒ?FGp †ËÆFuiǼRæõúÆ‘`Þe½H¤ì³s#q¾?8¾}ú%Dˆ¿}åóqŒÈ -jS2{Q,»íO¦xûßÿùïly³¹ƒÄ0È0ë.ÄÂÒ¨œ•£ß¿!^ï`Yk€R…„/Ê„1)LfáÆi¥$õýãfwßG²(ov7mµIÞ‰`R4k$äúB‰¥xó�š‰'A -ÎIùåÑ.¿Xƒt¾I^<C-•ÍöŠÑj1\¯Ø^;%§7¤¼¢AOXàðòZqvƒ !¥µÌæY{ñ¾º{o.Ó¹Fˆä[ãƒã‡ïSYïwo(WKªƒ´9‚6„÷ñ¡J4 xD)Å`ŒdeÇéŸB¥ŽŽ?¶—Ê£KÑêi…öíã_ÎØRHʦdÇž²Æ•#¨A`ˆ* -w„K°Û”Þų½¤6Ò›WVç&ÎÚÛJÐJYgLeœ@"LHï&97É:DÚÚïøb.|×;0©©Q îPj'ÆÕ=µ~(¸SÀ¿íÁäŒÖðzç ‡›~|ÓOàœ—†ærçÅö™\˜†0uÃG@¯YṎlÑêÛƒsø64]„lñCïj”úÅÕýÕT¶Fÿ—7oÖ{ -RBBz/7…ôÞI’`bPÊ�‚J EŠ‚ˆu†¦"8…D”‡3Ï7ïÌZgu¸çÜóí»÷·÷ÁIB†,K襁¸/›²*ŦBd„á„�pž8e Wã²ûÁk\U.‘£Œ# É<GMàªAxc -SE·T›Ï� Š.£°Õ‘±ØÈ($,€@Ñq,œ~*†pFfrõ¥7ä -ûéÓ(U -ÔGd(l#ž®D“¥Qñ€§\ç&1´ÀcIp,‰AÀÐ9}¦Üó²´yjŽÑåÉöWºËj¬…éªd_ÃS¥³E6¾<ÀPD#Èp,„§ñ<M’ÌÊU¥�£`ÈM2Kæ½™Å5«Ç•xjž&Eç*ä$gÇ •¯2eñ•¶h–Iq܆df"£Rç¢ ¯”Z]lm -[cÅ” 4ž+MÒŒù^IF>*IŠ†$àê„”ñæQñqH* ¶Hï68/RJ¢p¥,E2ž#¦‰ÔÜDj¸Z»ÝíË,ºÈÖ§ h|–4#wbÈŠØDæ¿#"NÁ©Þ-Ô€ó·|@<X¼ ’64¤‚SÅ(HÄ×Ù(Be,#±‰<µÊQŒe¨£ã)`9 Qh2]†!òahf -J$òè‚d–Ú…aiq`(‚²†l-GkHÄÆ`™ÔÁQd(…<uODŠ<�ÚÄ!YŽ…!rðACP8i<ƒ¯¼)·¤ZnÏÁ0%§‰pr]n#q&-‘Û -H fpô€Ò<C×ë3ªRòêÙÒÔhÀ ,“ÄRðµ™4¡Ê7ÒùfHhbH̪4¯2½«²‰u™"}¾ÄTÈSeGÇÿñϨï€J¾Ôž€ ü뇘ÈS‰ñpâšµ¶srƒ‡é¢âH§Î`Ð$…«ý> -FD†À2IL%BM‰®C0Y"ëß27§e{ž’ªò«Á–î¡îáG÷Çgæ—VBï?} ï¿XÞªo2eù©<ãi5:žJ KÔ‡Áä0Ùr’3<`}~Ñ¥²Ë=CõwªoÞ -\V5w]ëjjœœZ›Y<ëÿÑë¯U§¸©\5pp¦ØÌ’ZÉl[¨6؜μsgÏÕ—ë‚m}ý£cÕíå×{»î ?žœš[š]Ú˜™_ëÊ-©¡‹´(27MÅ“’„2«Tkg -$ÉžíÍ)ªÈ8WjÉÎwxŠ3}—ÎU\½uçÑëõÍЇO“óË—›»Ssü#% XTŽ,–ª3u6/ž&9“@¢³6×y£³PaÏ[\`ö–5Õû‚=wǦš{Fê;†{î|Ã&!0‚FgjèS`cð8šH ²Jiz[º9£Àé)Ô»n?îz0¿ôz#ôqæÅ*€%ËS¡³åS’tpŽaƒDd*@šE`9q‰–$©]ºô"±É)6¦—ÖÞx0Þ3òsCG_kßý†›Wƒ½}£Ó¯2Ííý+à' !’FdˆYb›@™ñÌmf’Ø,V;L¯·´Î™w6PuµòZ°®¹sljþãÁÑîÁñ§ƒ£ðnÿȸ.9'"C¢ãÉs_L#47ÄàhH oàH<—À˜2¥ÎQt±®º±#P×ÚØ>Ø;ôÄ_y=Å]eÌ�»ˆÆ÷ŒI쩹žÂÒòŠºkõMƒÃSÓÏß¾ÛÞÞÙó.¼Ú99>ÙÞ=˜yþêöèxAéuZ /Fcù"±•ÏW+”z»=ë| ¦²¶éJSkïÀÈôì+€ÞÉçwþ:»°²¾µ;>órñåêÑñ×ɹ5€Ç…Ú›½Smɳ¸JÔv7[ªWé¹gjëjÛ;:‡ï=x46ñbqyëÃÁÂúÖôËÕ¥µÐÁç£ÿýõ×磯ۻŸWßµõßOÎöó•i a(l±Tc¶fœõƒq>PvµùæàÈã_&žŽü25øxòç©çËo677ßööÿüï7°íÑñªú¥ÉÅ`)T@–©°øÐD!Ç4V»«(PÑØÒÙÑw¯óöÃöÁ³¿-¯‡V7B‡G_Ž¾nnï@&Ÿýæ+».7åS9&®ÈAáxªLžÂnMËÏõüe5?uwß~4 ¹²Þxÿq}ëãև݃/‡üù ¨uy}{lâ•"9ïL"-*Ž�C2bt8Ž‹§+Ø"“Ú˜á-)oéhé…,o„ß„vf_‰…>ì¾ßÙ[Úÿ|øíÛ·í½‡ãO«®µÉé$HCâbáD$žMc)ôwFNÑ…²+×Ûú:ûG&žÍ¯½ ¿\Ùx¶¸òaÿð÷ÿüñ~g7Þ>>9y½¾Ù{ךU¤²²Ä©0$'" -ƒ§Ñ%t¦T(M6¤äÛœÞgAQYm°{àɯ3ëïÂáÝ/O–ßl퀊ö?y2ùü§»-=<Y*…e¦Pxé·×{¡²¢¦¡¡>¼Ñ«wnvöÓÞÞþ—CðÝõñÉñúëM_±Êìà«ÒÑDÃ&ÓOÈYÌ¿ÿRs°«½«¿³w`ôþãåÕW+ÓÏ^¼\Z>ør¼ö64>1;>5Ww£'ÇWeÎ8Çè%Šu²SiJUè,Ù¹¾B_‰¿¸¨¥©aöéìÜÜüÂâR(ª?ù¿��£&l, endstream endobj 24 0 obj <</Filter[/FlateDecode]/Length 37854>>stream -H‰UùSgþO¶²©2Ì=Ó3Ów÷LÏôLO÷ôÜ÷ÍÌ€ƒ€’ˆrDP#ÑU‘D@²®ñŠFÖˆá”`E .àÑ^q³ûËön}OÕWõÖWïñ=ïû¼óKÏæ]Y}úìíïïžþ¶>5óà˳_×ïé°‡Ëh{Ôȇ,¬'™*«ß½¯³«ã“CíûûúNŽOæç–VŸ=œ_žºÿàñ¯¹µçÏWŸ -çÉÒòòèøTWÏ©DE#J:°®Œ#¼£|ÚåvF2©-ÍÍçÏœûéÎÝé†Æ~z´[õöÍïä–—Ö××s¹ááá¡‘ñÖÎϬÞ4lð˜¸í(æeŽ`iEMcíŽÆŽ‡.^¾rý‡Û·†Ç†Ç&Í/¾ý×Ö6Þ,ä–fÌlll¬>_œ>éj:»G‹ÙeJ½LA*µ´áŒL$‘iˆ&³ï?÷íwßÞš[\ÚxývãͻمÇËOV×_¾zþb}aqaeey~~^ˆÕÕ3à•9¿R‡IU˜Õ™à=I·?ÓÐØ6pêÂÄä½¹ùÜÌìœð¯Þ¬¬ý–[Y{ýæàgvvö—Gsó‹._í8úÅŽö_¼E‚ªu 5ÂT!8aÝšm8xøøÀéóCcS?ŽOMüòhþÝÿ^{ñRð<¿ðxiiùæíÛG»OìÚs€÷•‡KZì|0“©*N—Åâ‰ìŽšú¦]µõ5Íͽ}GOŸéïí=väØ¡d:js0„Ò"z¥årL¦@•*Ç,^G0J••d+³Ù–¶¶=m- ;«;?mèúút_÷‰žî“»>¯¬kä}Q“-fT™ø$ £´ …â4NÚÚ±ïxSëH8´5ÙÛÜØuôÓ¾óßœúùîÝ…Üê㥕'«+7nÝ<Üu¤ª¾Þæ Z]qŒrêPˆ34ãiï8Öy´?Y^Ï”×VUín¬;ÜÙ~ýêÅû÷î--¯>][›™™¾31:6|ëêàÙ³§úöîmÏTÔqþ´JgD�eE -L$C$*ÐV3—û?njªŸŸ¼3>rc~îÁË—CC7N?¸¯mWyEE,] -“&™ÁÁ‡S6½Áìñ„Ó™Êvîê>|ðâ…3×¾œšÉ埯¿xõúÕâ?ïÿoº?;œÙš‚0#„ÙPƒGªÒoΓmiEbEY3áuEkjv4|øá¾ÎÎcÇ?;q¢g ¿odèæôôôèˆp_¿qupìÇ¡³ýŸtt„"ÌÈ«` -@h˜àIÚëm³¹b(jòyÃÍÍí}ý¿~í‡o/]îëýrðÒ•‡³s÷ïý|ö«Ï¯œùÛà…3GŽjiÞ]QQˆeSÕí6oy¡–ȈpÐZ(B¡TëžÖ¾žÞÑÑѱ‰É˃—/^87tóÆÇׯ ìéojj)N—L„³Jˆ&E¡Ôiu$ˆ0‚fq_¤¼´rguCÎX5(®Ã)5D)uzGXoW�ä¦ÍE2)ÁBØ@ØŒã,ù?˜ FÆåMðî0!ZÒÁ˜ÞÈ4«ç£ -”-R¢J@“NÉK�4O,S¨`µè@ŒÒfGXϺ fŽc9EÌF}(è‹Çªkª[÷jØÝì †¥j¤H K�\ Z„—ªõr@oâœ;IÒ.„´Rf‡ÛåµÛx·ËûáP4UR±½Ñáöü¾Êò²L"î°°0LéPæÿø¸@%FßÏ“+4&«=e±„¶@i2“Eƒ.»ßålú¨©ª¼8÷e+˽¡b!IƒÙ…ƒ ÊKe˜DŠ%Ú"1 k%J�ó°°ñX²6L%BñÞžÞéX º¬´$™Ü‘¨«,‰DR „åå‹ - -Uœ—/Ë/PŠe°\¥×A,¡w1¶¨ÓõbþpÒdáA2›yŸ7)è@$’®,¯ßVYÇ2– ?d·ùÜ"WëdxS@œÉ–dì ‚vi`#Q³Çé/5òQN–·lÛÕ]V×iáüNí²qAØÆÚÌ P¡‹L¶âDö ٕˉ?½—§Y˜t«´FeJ`ÈîÞû}¾P(ÉYX†Ó¤ÉʆX{ÜîJÙ=[• -Ĭ6ŧÿòôƒ<q¡X#H¨4¢ÂR`"‘äöݾP V…ÖD˜ƒ$3XBÄàQÃV±Ñ¡€X7H7HóÅš")"V‚ò²®šè�fô‰¸T‹UˆçÔ¥†y½1á¼HÊu„¢!„Aq«4È5zÄä'¸¨É‘´Øc�„k@×3 iFÞhk Nª1ÀŸHŠ¾Ÿ'É+RihD:`=šœrA�d–(¥W�Bðf6&€0ùIKÂ9Æ0rμBqA�¸ÑNŒŽY¼µ(.”¢�Hk S‘D'©UrBª–ËÔ H²Ž˜Iè%‚“v…–)R’"…~S!˜_„ÊÔ‚D¸�Y*…å�%V›$€Y‰Ø¥ZFØq(å -'·µìýk œ’I´žµPnå$„rÚ¢(”€î‰uïý9‹HƒàÁ.@ ZU0§i’öÛü•:ÌV$Õ1®Œ'¾Óê,±;‹qŒÓê(FŸj%)çæ|¹à -¤"%E°išOCâ¿—ÙnɆ%ˆmQw²÷}ß÷ìf³¹‰”(ÑZ(É–Gvì±{ÇždÆÉ`€\ä&7äb o–£�ˆfUWÕùÏ÷ÿÍù8t4ªâ´c¥çnñ,;|Wlîo¾ºãgDeg~xÍðÞ“½v Ö÷ÓíÙó×—ß‹ú´Þ {r¶xÆÉiIv6ȉ‰mòåˬzŽ¢j« ‚OÒv‘IÖ£ø˜U -Þ¬ììÌ/v6sÐÁ=¬9 ;}Š#Þ,Už,àÀË|zU®^ÀOÅ™3RÆ*¹`M >¢•!ÆG÷;µê¡ª$5{ª¹sAËë?,ξ«·éƒ6КèLìÂL¶ª7§…À´óÍùÙ5ºt«OwP–¼tñÚnôT±Ëbzæ+œ3Ar=Bǹ„s=~Z}b }À¨:§¿O¨T�Õ‘Rl„++8î"2˜ Œ•cNÍh9&8£AÃ䌛=š`'yêOE³ÂÅ!o-û”×H¬ ùñ~·¶ßô`Ñ�åE%•ôZ ‰Rî“:!JOñÎB¿¤¢1¡Ä´i´‘b\ksõÒBMVÍÃò"[\3JÜìÖhYÉú=¾¾?¨7Ie{ lnh.mõ9¸ºˆXoà]T!„aNûÅ3or‡3bå~¾ì ÆxÈ@i4ðMALVGoU+oµIEÉîáb„ Úã¹=º6ÓsBˆy5-7÷óËÏÉü§Mx½‚ý6»ŒÌÏ®ÿˆÉÞ>ÂcÉšî<ˆÆíž°·×ÇPáÙ7ßzÑBÁ(e$˜3;½®îõ`Ó¨=D‚“étX�Í:ŠQjÁ‰nl§yëz“¦Ä�²Ÿ”ÛÁtÖšIþÚn£ÉÍêúÓhõBñJ-\ÉîÂÛ£KÁ=DÅဋ} 0çÜîËMVTrN-h)5ƒC;ÛÖ;̃3 -+¿ä½eŸqHÑ+ª“oÔÒMSqÞgÕ„URÁ,¡4eÒ¬m~óúH‹\Q/k)›s#ØÉ9¨]wÆáèžÖ›Ô‚‘B ž„Õ=¼Õñxþªðÿ½ˆ(cÁä� ®`T”«jzxü -àÓêqP_‚Ï0.EÙ(,¯ 1¨51Š÷$-àJ*ÐÔíßÁ4 ®bÎ�(ã -zÉÊ9Îà p=R§µÊíF«;Å_(g@{„ÂS@‡d•=ÜhöeÍ])Fõèq»¶ß£…ØIwº·!¹Áœn_µLwKXÉy}Ê°Üq>bÕ #—´4ÚÝýuyqO«)¬\µŠ^ÊúDÖ+‚‹`T³EP¬…R¼eBJ.’åÛ«wÿ®Î>£\„1¶æÏeØÃmFáÆAóž8á‘ -PÒ‚îxvi¶ÈN‡=h’Ý4ö³ jÞ¢KhRG)»ÙažìC,ä`#´ÿî÷õV›$°Î¬˜-ÔnŒ½Skó#ï?ü|uÿÓ*u(Kð7Fq®ße'ïÝés-8¼¸|÷éï¿’fÑeÌmãRΨ•êoíâ®ËÀŠZ=‰`|ÙšªÖTTKZ†ÿŒõpͱìwʘ¥¬ŒlÃ[¥ä-Íü*^¼1¢N)Þ„ÒÒ‡ˆídÅ¥@" DýQµVk€/Ñ,{ -†+™EÁ8�ÑàãÀv”O(µâ t“[É l3ŸBJï <ÁÀ^Ÿˆæ4¾ýð³êM¡m|\Ê$c®¸k¸€ä0§ª'¿ü3_^×[8„Šu1Öüµî¯ù�U;9æ¼Þ¡š=®ƒÉWysâŸÒJ*»Ó«oÿf¶êè“‚Ò.«ð³mZÝ`”Óë2’Ëîd¯IÕ.ºÖdhqägçéäRóV¼‚ [ðAAH\ ŒáUÛïÎÞüCq'´ènvïgO?@ÿvµÕ‡½«$ëJZÚí³-‚׋lñ2^¾b´²Ky=.R’ÓüìÓñ‹¯F|ŒPžd™ËÎ%uŒ6úˆ‚´Õ~óaxà{` œ”Ð|ˆ‘Vg tP’ÛoöâÃG{]€6PÔ‰ÎE -]áØ% …@I º¦‡‰$0–Ôø"J1¿v‹Ó\Æ䘂âÎÝé-(³J0Ž—üåÏ¿üF9« GQy›”ÏG³;G‘U½¸ºùñoï�0¢€’µôG»íÝO³³Ãêìãÿ’¢µèÏãõ7Óûbû~|þ§ââ‹6Üñðù2yúëþ{þúhIpFP)¥²·Ž«—z¸E(›#`)%&€NŸ³ÚL°ÝáÎ+v(ë´º#Fœ^árNH§•à#`ßF¸ž½6ÂERlƒñŽ’3-<²óšžÒV… -1Æ…`=À.H*î2_©VeØ“ _ÑRÀˆ¬`ò>n@)}LI Xtfj°îâZ“!½Cø”͉ìLÝü|vû•¶g DĹ€"FŽ»¨ -jA8G´©d œGu¼ÖfÚ¨J°‘dቓžÁý—YoÛ؆Ê�Ób/±µSIqÅ”HJ”(J¢6k·/±eÙãÄvâ,ÎR×I¶È$À¦Ó�EŠÌ´èm‹Eoûoú¥€ è‚ Ès¾ó¼ÏËjmB¬¢‡’k[ˆat´Ï®›Û‚–‘‹¯ß~äµê¯n×7QØD"ã‚4¦Y\+çYÉcÄ2‘±i±bÖö¬Î1[JÞ [ÉÕÂ�‰o†Yt‚u9¹Ë«ƒ(š¿É¤i+_šÀÒ`°#ÔêFreäAOs5Õ™ÙµƒP”ÝŒ›1.ˆd“¸±bƒQøÌé£2§²%AqUËÝŒ¦1â3u)3EåÀ|0¾Â$Zo⢥óÀ«Lq¢{ûé³Æü7¹æ‚•\˜@Í›¼3FŠÒ€Û�:xµFÿ§û·×ãÜPÒ´#èÍJïÔðæ¥Æî£ë?†Ouw|V›?ï\9Ã3³{JÈ>)–†ã“þë¿^}Á%|ȦuóÕ¥Ó:g”ŽœëÂ!MÐ6Ä=ÆThm˜-îçü‹êäZ© t¥4ØKФíFœƒÊè-p6BªÁìùÝå«?üexô*œ�ª·/¸ûŒ9Š»jù0‚QØ©†yÀ>+ûqTÄÄ ’I`J±24øÇ–ä -ªÕ¡`‹-ÁT†çVû8ÅZ¸ÀLØœ6sËhšƒ‡˜ÖaŒ-ÐKð·`„ˆˆ«oéî®éí£Œ}k=¾º‰Âd®ð’¥ù:+·ÈÙB¹ -©µ¹ü€Ò;)΂k€�(W‚7òmÃémÏÏQZƒÚ•@%A©Ó|l-ˆ¯Ü‰gäZFrá!ŒÉXvraJ¨5É™PJ‹ëª=$… -`*[ÿÏY+ž†°ÓƒˆŒ1Ž¤·Ú-x�ç$¡…n}£3I¨öá$JF+ŠÊ_|¹º²ŠD,ÅW8ÅÏæÚB¾ƒÂd–ǪíßZlFp—aS")1ɱ®¹{Þä©R‚ù™3V?Sñ¥m~—·F`Û½“w~î/žßÞH"˜$µ=·-ÛCÑÂ"Äg‹á”t'D!˜HËÝ››e¾¹ [²êµÉ¥ÕXÝçÌ®\ž:íãæäáèðÅòñ·´RJ¢VèÃâsZž*A›(gkå©Þ8a -À_/ïû³—þîKÝ_€ï!l)Bæ9µQj-xs‹<RöXµ*Ú=±8`5_, Œúvcrjø;8£5·ï÷–oÝÙKJï3ÆçO ) ·Ï^¿ÿ¥ÔÚ€€¢lg¦·„Ê�ÒÈÊUà6Ä$N�a´ÊîhqóðæSeôå -‡§×“ƒg‹œâ9½ãÒä²4yÒ[¼]üÉé?p‘¼É7±lI+›X¶L©¡¤ùÀ\ Љ<ÅŒ$]Lñ.êûbí8™ñ’Œ!Y€/V)©Êé ¡Ð/lÈÎ%5`’`Ù£˜ß \‰§µõˆ4Ð0Mp8gCÊ«å¹îÝ%äVZld‰;|ZhÝï‚ž•¤Fjá™ -§¶P¦F ¾`´ïÀ,ÅRr$%CºÁ5Œèk…Q Æ}ñåJ ˆC€O8ÆÂŒT‡™dÄ:Á9¡(Ô1¥@áèäY£m·ŽÌæÑh÷êÍû¿jå1V‹ýs½¶àa{zµµó¬Ð½À@Ú 2[&ôÅ+MRð`œ€*’Q/µðL1å8¥*‡ª;Ï·Ž¥ÒTηÇó¿ýð·HZás-³yìÎìö²<8/õÏto/Aé‚áë¥áFŒ¾¥ÞœÚ†Ú8={çï½Dh+cÒ|!J›‰ìz„J2m«}>;ýÆp'zy»Ð9Àxk-‚¡¬©–ÇÛ§7×~~üöSçà9cøåJ÷äò÷0r+Q¬ÏlÚ“ÙÍå`ÿR2ÄöB)ß%?kô9£Ik¸Õec|OõÕ*é,˜]Áî1Zc3%EÓjoÿ‰Ó=ŠR²V¶ï^õO®›»—•ñ…^?`Œ&#úû^üîcŠËÝ psgü¼0z -"¼®?>=ºx÷ë•8‚åXsœï_x¯üŹy¡ŠÝùôË¿O¼ÝÓ ‹JiæN®Ž®>6æב”²²á%‡Ê–Wƒi(Dh‘j‡É àæà$±8Ö$³BŸOñø²ºûrtñíìò‡æÞ5-ù_&{³G -nk!N¬�´»¯òõE4¥ÄR"ø*/y \ %²àcA4g*I¦Œ²åd:wü'˜N“fשL 4;EÚÁX€Ÿ¦ó�Ï4«ÃVB´E0ãmè8†·ëNá7´Âòè‘Õƒ…Z6§WPÁ¥ g §�VÕ +/‡“j�‘6™8fIæ6£6¢¨”•ªºÓMR -B‚cˆ0·åþýÎáÍÖñV,w§gÞàëDÆ$•j®~Wrw(]êÞ«Ožhî,…Q–h¸ó\e.W¦”ÞSVªBQ½µ‘E‰§u»~˜oçZ_+ÞÎ;�+§»È˜-„22FG* OÝ{þþñë³ÓBõ:£å›o~,ø;`Yų{/þ|óý?º÷¿ã -;(גּ²§±Ü@2ëtŠÊ#D>ŒÊçÈÎ^seãJQvã”…òeÞB¼ºÇr±ßŸ={´LgIFÅe“kŒÑp{ËÓ?š{› 6NÿãrmN=ÃðoiÒ8¶±9 -茄€$$ÄÄÙØœlÇà8ØŽÄv“4qÎN6›Ý6m»éLÛÙNg;Ó|iWŸtF†£WÏýÜ×e4¦/αhm0%€ŠP:ÅÚnzµg-Zm2ZNX*ì -ÅY¾wØ_¼xþÃ/Ýù‹Õ�ã -rqJ–ªàP~ÖYζD~ën0€I)k–ˆÖL²¦¾0 º@‹”Ò@.Wß?ûøó½«ßõÞ©Õ9B›ëÊJ¾úá‹Ó]ú@[±Ç8]`¥¦å… r„&IJ»'ªÕµµà¯no€Æj=Í=͹§¦{LpŒ4d}+N««È†ôø(O€Ep%Nž…éí>ò†˜�.ù1cu˜ ©tÀÛ„Ì&³®`ˆt…«¼9bõm¨l’³xÉfRùH\&ÙÉF¶àŠ³ðÈ?š˜t; -ý• ÄL@’Ùniûqm÷¹³µÔÍæõÛ¿Ì–×F3›óéÃ[ËïÊ£gƒÅÛÞá;ÁÞñ„ÅrJ-…K©x²@H”>rzç|®½ê‹o„h"i‘Rr žžVÜ4~®«”§´ZgÔFXT.‹ZÙœµ÷Ÿ5÷Ÿ–†ËÙñ›áâ…œdŠ£úøÊ<éì_¦Ë3„-øpˆlv÷ÈdÀ€8€*æG‚9JjýÍ Áe*å`d‡UÝlmÑž¿©Œž™ Ã=½xûãßÿ“¶úLŒ³¦`ŒªÛ—'¿ýóóÿrç¯`tCqI¯M`{DA -°ôªò†œ±@L0&‰Ià†cl 4’ÈrÙ-ýôì÷ï?ÿ÷êã¿sÝ/&³jŽ"Jéð¦âlÔLÐz¼Öó†“+(ÜV)P’Œ)(mBAY§- -Ø�Ã{Wý½Çfc_«ÎéìPÚ”ÚI;³ÖÁ71¾Í¨w³@oDˆ$²ž ·º™Àè\¹û�#ÕÛ·×oÝöÀ¨JK(îs9 [kÝ—%L°ª ?½²F¥®"¸ -gmXª1βºK6i볟ߌ°ð9÷D* -ö,×>…(Eb²¨6%s+!Õàéb´ß ¨W4¦†11ŠË, \zg=ºâAAd2ö0Sîn¢ð"¼‘ÆYŒÚLå²Õ5ÊÃÖè\³¶’Jeûðz¸¼©OŸÈÅ#;ñ”2&Jd£KràMœËæ®Õ¾¨ì¼~ˆ%€ -ÎÙ†M‚$dŒqRÆHvfŒÖáµFgrÞB´Zlìž}8~õùìõŸÞüáKmr%j××?~ÿÇ_ø\r„ò“éëekv=:zç*w<øªˆóe¸aÚጠïq�Ûàb ’HLNç‡raš‘ËïÀÞ(u{ÇoI6v¦Ú;oŽ^šGãûדã·lÆ â’f¶>üôEr¦ë6B˜I': -¬—œ‘)Ž$(ŸÔÜ\õ ïvï=½¸ù|ïÑ·Àó@8¿¹þDòv8¡)ÖŽYŸÃýó%§m‡ø†ì¯ å'Ö¼‰‘³ÚËÚìÊl¡ÅÙ\¾2 -á‚KÁš}ðòoOê.¿«î½$äæõIÛ_ý•V*Лa!òQº(S§ûØé\Àº^]"(K öª7æC*F(Ü´sËlm&‚£To -„S1Ö&%ðÙþääÝ“÷ÿˆb<˜ÈNe£›¶·%g¢T&aœÈ¤]i-XÙÁ)•WêI!fÛ) v€Æ]Y®mDîz" DpÁY…±t4–¡¹ÉèÊñj¤7ö w^]¨¥]Vs¯€Ô#Å,%åÉ„Ç浺’ßÒ‹{(iDq‘KYqV`I/W)¡ -/'M^¬1RŽÂËœeIA5'Ֆݘ+VŸ`³t2«\¹è溻ƒËÁáK Jëp~zSî/(ÉÉ•§…þyÒÜÉÕVçL,ìãT§,Io(ÂYýŸˆR‘ãR•|uΊM‚Í]¯x‘Ûk~”P4{œ+/Šƒ'“óOéü@ÕÝÃGߪÕ=Ø�À'BÃ(jzqR>\²ñ”ÜâÕ6À0D.ø§6ÕÂ8Æ8)AôhÁAp)¤Gg"œÎhõÎø -5B(©Lć‘ªç@8é ÁzAýa–íšL$(©ÓbM+N¿¹°ÃdÚœÞíì^Bè¸trל<fs˜XÓz˜Ê¤r=t`4O€¸`D!5Zi¡�‚> êŠ'4Ø9ž\ÜYf‡‰LŽÞ=©ŒŸÂb_݈gí4„ׇÞY À6A®4õ&XLI¢‰l4‘…±±¢Ó%ð2³ûPo6w_ÃÙEUÉw[ã«´Ù±Ë!x‰Jþë Ñ0±â׫!ò ƒ`2Í• *O3–e÷vï?'Ò§U¡›În~>ÿæŸÃ¡´÷õŒú|q¹wô:wÉt(â™GÉ|‚Ñug`2aŒÑŒz:SaI�=2¥ –Y2°ƒ(ï3ë^l3H£Ø ¯ x›H0&“TJÍñr|ÿjÿüæàòãââ»ãçŸvŽ^›[ã¢ÓìΗgï8µ!¤T¶)CFî -Æ8Ζ"‰LŒÒÖ<Q>Fœ-&h˜è™OWùlë—éoÛæÇÿ”¡ÍáغŠ"%¢Dñ‰"©û¾LÉ’-Û’o[²â3v='qœ,nRwX’-†bŠÃ{×¾°×ðÿd¿¼@=äó=>ßh"ŸH7ð(ì¦,%” ¡Ì¦-%ÛköÏ_|ô—ªÃ²`¤š¨CPoHú€«Þ `äûõÅ}xÀŒ+À£”Î'-pDLn�i¨ËZ?¼‡iFÅF}¿5þõâÖóóFã�§5køtûè-„&D% Fƒ9†“›Èƒ›Ê½].U¥ð`6òzWkO*Û¯·N?åõ½é‹Ÿÿý¿tqÝ#’¥”vŠÖìúÝw?Åáœ-L2¯6±Hl``÷Ä<Á¤˜^Ur#¸08œ -Áxè©Ïólˆàð‰>LU2.Uób¬ËDuù(„ç¡”á^BQ@š—î´€ÖAª±¡5wòƒS¹¶Ï€;+gÛ'€!!"0*Ë -U"–†“PˆH(tú£ÀùŸNC -Ñô\{qm–,�WOÖNîò½ý\oªAVëËWÒ3ÖÁáíÆô>Ìfí~Úâi®È©&Q´ÍÄdµØÜ YÝé¥PR‹$:Q٢źÝAÞÄÀk.:`ãøo0¤uF.Æõ¦ ·›ƒÉÿòË?~ùÏòÞ5§5!6µúV{|Uë?¬w®d£¡-Ù´D c@ñ5o@š·OlA‡+Œªå^æ‰{²€8Ý„ÛGSŒ¡fúݵgë“W�ç•ÂbY4jpÆb¦5Évf’Ù'Y£·zTëM µü¸@.F³D4‰ç‹õQµµe³cZbøbˆÖœÞ¨Ct’M”“ù>#I3\¾@º:–²KÐ’1¥Ã%*½áÑ`üÌÄɨÁððX=�tG)LÜÓªQÄ„ŒÃ‰´J°&¬01; @´Â«÷¯o?A<²Š•kŸ¬s5»’«ŽõÒ)|F¦„R«¶6qçl¨Màt1žZ]=ø°2û èK6wDHÖ ÙQœûâ±ë³ùx®ÑñªVZ'ù,ÓB|ôÄûè‰r&*WÓ]§uµæDî2r#SßTË„UÅâRixÖ_ï=ûty÷Óóû¿O®¾)À$Àœ6p:íðEæí¨Ó -à ÀZ(úB’²‰C©Eb)‚Mrfµ=œÝü~éà*Kr˜ÍIip©7$ÓÒ -+\ºsŒ–JŸOH§±Æ$\Òª-5‡—0‹�zIZ‹&ê1¹@Í…)NLu%ÀK’5A`~œsúH”µb<»Ý9½«&ãé‹éÕ½”ïĤbª¼ªä›³×Öø+0F˲^Ýš¾,4F(!àT%Òi‘¬Å™ÄòÓvzègJßá -9Ü Aº¸–©mÕŸªîÝ^=Ö´ŠC˜·z{ªdû£ƒ›Fÿb*"”ŒÊ†^jbÇ…²6þàA9ƒgÛ<6‰“•)”JB ø‚b„ÍûœÍK3BY6–J‹S5Û%cTÃæéñG@¢ÁP"ˆ‹TT§£ðéò„½Å°†Ú½¤ÝKa”*(%AΉj1–(¦KÃWßü8½øm€L’l‘W:Éì0מÁÒŒÌ -,ü -ã(ÑŠ'š©ü:/züŒ äô\ ²¿zäB) €ÈÈ\ïD P„lÎ ËO¨„( ˜‹‘amH>ó'·8ËwålsúÕ7k‡·Õ¥Yw|±zî% l·Bs,™-瑤/ÈÍÛ/EGu°•bvãJÞ?Áb¦Ó -"“(eaï|<}ûçöèÙ«¯x󻿪Ðy‘*_æR–VÙPoí¾—+›¬\jNò½§JaE4z�Òî MÉX#b…‡ÈÃy -‘è/¡ãÔÅŠÕ\{³¡ˆ’¯_½ÿîOÿ<½ùhXûRyS[['÷ããwb¦³)5?´F—Õî$•[*5VÅTɈÐQ3"”QB†:�bô¢R œÂiŠÁ0LÍÍû!µ”SMÙ2‰6/éykûðy¦ºId´ÚzÿðíÎÅÇÖömaxÍgVü!¹Rݸ|ó‚×~*€ ™c†hÓ닇 MRj£‹Ýã»ÇóÈ£97ƒbóra×,2^@ÃRÝÚÝzú5;À#:-–)¾À*’RMHõ‚ËKÆyF„ùP¬íòP(& 9D*v_ˆN°RÁ8PZ©³9žÝn´Ænmù4]^ƒ{Mß0@°˜TéF8Âc´×ºpevW,�ò@qKÖ¤ÍÐn/ yåL¨à‡_>\øâË…¹y>H(’Zcy£ÕÝÍT†>$"kõ�¥D•o.©¥ÍTkRÝ4†§[㣟ÿõßÙÕ=lFÑ°2mº/žÈi©Hr[¯ñ¨9o÷9\~?Jy1HB()Eoñ© -—¬læ3£–VÃYwã¼jmßÝûíji‘ëFc¢×ö«Ë—ããý½·½—Jn%[>½xÏ›D€‘Š–(®–0!ÙJ÷`"ÏhÝ”AiÎEÛ|QÀûTyp¾óÑÙ»ÞèD0Zjy-Û=ª^öß^}wyÿ·Úú³Öòáùÿ9.³Þ¶ñ+Š•`2'ŽeË¡DQEŠ‹¸ˆE‘”¨}_,Y›mÉ’mÉ[¼Ê±ã8ã¤q2“=A&m:@ŠÉо“)ZóЇ¢@_úQz=�=âÿž{Î…¢¤%ZJ´ÎÊY’Ò,+壻6íô¡¤ŠÓ)ÜV"]�!‚ŽÂ™ã¤U~a&l8‚‡=tÒ'åQ*Ÿï× -¡dƒÕ2Prá¬ÜlLŠ6–6/Zý“bmXj¬Q²%h)ݪà -8ܪ“Ð,ˆáa†‹•k󋇓.ŒF øUiâRîáâÊ1¬*¯f´øœjÕ@Øl ©X5Ÿœ¥ý±beP®¯Ûaâ… -%ÜØg}àif¬šÈ¶PŒV}yoûôåæÙ»`v”K6±²õào¿þ7—ïÙ~HKêœnúÃu”¸Äª Qª NÍTDb›öÌÎú–ð½THÓs´`âd˜—s6;uåê͉›îYTô‚óc¸…[é…o^}BÜ<)Zl('XP~ÛLVƒµñw©÷!²‹qyùž‘_i±¡:âU¸‰T_¾ÿ,Xõ+W'&nÌ@Iœ™e€² Yx9Ñn®¿‘9ŒÐZ‘ÓZ¦+/——÷Òí ZIšù^²¹/™óZr)”c)yA«ñÅBk[²²ÑbSŒ4 û <þˆWfP ²RÒ0>8ù)Wà+›Çm”±±D¹Ìmî\Ô»{ŠUÕóýL稺rÞß}vpÿ»ÖÆ×F±¿4<ùñçËÐJا•ùp5œYRâ=ÑX˜ðY¯”ÚB¸‚à*�*ê ƒàb„¬_©L!@’PpИ“PÁQùpÝ,¬—Ne�¶p¶Ó;ÌÔ6A±õî~cp$èE'¥B¸T…Vü†qà¡Ëä%t7 }L8'ÉfÑŽ2Sˆ_Š¶ÁúâÍý`¢ãöÇ0Ú,·o™†—·(1§ºàÏZ²+i5Š‹b^,‹,È)¸_ÜdÈŽp¡Œç)znd:틕×£ñëí“·['¯z›oz(“@znBƼÀNi‚³(>®'ÚéÊH×Nšð†|´ Ò¢|a°/ãì·¼¬˜ÓŒÔÑœ´Ó×'=(&#.ÙçO¸ -¡r4Ù"9–b$oç›Å~sôõúñ‹õ“7õÇ„hAéh®ûÍ)g©@Ø›‘ó~%±Û ´ -ƈ ,îÕ/ (Ý^±}ü˜Ö3NÆ×”DžœïŸ˜í}V¯Â¹;g¯†ûÝ>`"�QzzÐ^»¿¼ñÐ̽Z«÷?~ú\îݽrÕ>ã d£-h7ÅöXIô0Jí?ÕÒ×lî)ëb¢„?M :Q$ßË×VG·Ï6îc\x®%ç…H)×Úܹ÷füÍŒVŠW×=J)º™Á'Q:âôÁ—V¥a¢2B}ÁëÓFJ‡c$›"é8J“³”¬‹ -NÌ`·p¿×Q“]£´•l¤Z‡ÖJe—Þ}ÿóÁÃ@j¼®–Õ\/˜X�ßÆi#ƒJ¸:·x—UÊ QŠ&Bš¸‰“lRµÚÞÁã— [“¡sEšn.-™Xmwùð–jõ†'žýP펞Jè˜/Š‘Æe;“´À‰�ËGP*›8ã’&géY<èbbÁD?ÛØ‹f;íþá`ü|çw„ktúZM-:}Äb®±]éݡŘ©ÀB3õr5,‚Ã@ 2¡\a%dÖ¾ørzʆcž€ó£.õhÀº~%?<xæð¨W¾˜²3—»o¶B‰.NǾºŽ9 g4œÓh9.YséŃöη…ÁÎZâ#5£0Hwö¼Bx/’êùÕHqCŽ·q!jCâwb7®Ø Rlb -(Žö0:Î¥ÎRÀš“SuR±Ìr¿±y‘jí¦ç·KKã|{G±Ê@ÝJƒ^-RB°Ì�×Ûgï!¶®Ý@(¿¥Z ˜»›‰º ;0qRˆ[ðÏì6ÝáÕ<œ%šP¯+ç*‹»§õå]£%ê[K;Ï7îþatôº¹~6¿z ÈJ·>þå×'>#”Ap±ÂÂQwëE¦~']¿ŒwQJ³!¤•iIáÂ4*MØèë6ÚæF’b>šïßÿöãן ´ÚÝâ»…¤`ÖJ½rç8Ý¹ç• :«:¤µ’WŒÃ°À`1mT–Ï +m(ÿJÅÅ/)nÚt}¼™,÷Ü´áôEs.ÕØ-wOWž.n<�æTôÌ£'ïùçj‹[3hÀ/—ýÁ2¯V .î ‚\‚yZˆM9|BæÃ:«USí1È2Ymlþô翶ϻ»Oú'ï -ËüêÃîÁ›Ñøùæѳlóv¡>úÇ¿þ÷æû¿’¬¡Õ€1yÃœ”ÒcÍ^s{õk7½£ì"•6ì:ï—37&ݷЀ›IŠÑɬ§*ÀY…ôiÖ‚’êØ‹fɪ*ÝCPBªq{nxÞÙ}ÚÙ{QßzjµÆRbÉJ÷ŽÏÞo¿bCV-§šûѹÛBtÀi‹FX¨Q°ƒ¿1°jŽË§BŸU^‰VúùæptçùúÉËñ£ß/ï=N¶öX½rå~Á@×à1ÊàCsÅÅãZÿ<RÒjñp{C¸zçÀ%J)pÿ縼šÛF¯0üW2›µ-Éjì�‰F€ …`{/"©BR¢Lõf[²dI¶,Ém½¶cïŽÇ%ñΖÉ$ç"“ä6ù/9Î.xAÎ|Ä9ßó>ïL÷•ô-F*MÙ¨3ÖÛ½ÓV碜ZQ³]¼ÿ…W+8JVnå;»¹Ö–œêFŠ+ÑÒ -*«±ÚöÝË…#!JÚB¬¼"¥çà²à’ÁÉOÝÆïܹҊ}…ÑÁÛCU»'•#Ù…“‹›‹»SzÌãKúµ®XBì^}¾xû·ÖæÄ«•ªË»÷žQBÂEÈÑÂj±û¨¾ò<^¿/DÛV 4&Ü;y•©mŽNabÒB;ˆ0ȳ”_IÌÞq‘‘rcØìí™1oäI±+,×–O´Öž¬u�›‰Ü'Ç ÄØ6i$16ÍÈ ^m›]3:3 óMÔ·¼blÜíK3šƒø•B²´±Xínœ¾KwöÕâ’WÌÁ q&ŒT·_¾úøe~xŠÒ ^é¾ŒÉ BHMëÀÛ]£7ã:"íÀ ~÷ûñ1ð½ÇhflˆŒsy8?ôÈt¡¸èh²³×?|»yþ¹8x¬H×7úÛO.ÿØê]}˜];Uʽòà~¢{(’ÝþÚåáùÇÆàØ+—AõHqÈDd|Rï¾>f°cp éÿL¦Z%g2t0Ì.H™ùÕýLJߋ¹¹Xm[¼›hî„Jk©Ö½Jÿ"R^Ä9‰ -=|šS°íthÎïãÁF%¬X@g£0(G\ÚèV´†P ŒM\ò•¥§G0ØX-19d¨Î`óaÿ½ÁTy~'œŸÇØœë·Ö.öÎ? þ –ýÑ -ʈ´?2·rìS/ARÌ»ù,ê\§ÔdnÖŽÌ¿ÉÎCY1ÙŠJrr.Yþ$¸7 +—Y¹à“ó¶íµ³Pyè$CÃáá÷o#Œå:‡™öQ¢² -Cog¾î;xòàMqvë¦ÎËàò&ØЬœ¦Ú‡‰æ.ÁFÎ/ßÞ;1e¬hšH}xy÷êg˜T ·juË(üüË—Õíw£“8¡Oj+„/7¦Cm(_jïÄkë, -)4*X€ ÎÄç¼BòäòÝÕë_¥Ø¬Ã-2b1Ÿ—‡½‹{O>—{'8_ð°+VßÈ„õ›k“7FÍÓFʆ<ތɼ6b²¹¸HrÁ`òNN£Ð+!Dt6ÀæÆ%‚‹ûÔj²±•jßõðE¿œ+tö‹;‡Ï¿ù-7·5£uvÎÞŸ|ÿ×Þ:Ã'Ï~øÒ^{Ì…êZ¶ÔZÓvÆ„¼BŽöGˆÏh¡\˜‰TjímŠO0îN¸ºkÜ\=¯Ü÷Ç*Ý“bÿ T_Õ6xG*U0:\TWý©y3-#|ÂÆh´ÚKÛVA(&EÈ•@º‡r!q¹†ry*Powû43 -âÁÁÕÃXe¥hiØÚü®³ý]©¦µ÷ÕÒ‘‹R¢¾tûi 3/e»³[ÏÃl´Å*eh¬ýµc9£·ÓáüÐi\JU ^vÖãUá*áÏ^±ŒM!O ÉDeͯÖH-Ek.|Æ`s›dºqëäɧ³§ç×F2]ðv³Ó‹z¯‚¶5¡ÃôÊÃÆ´êP+ ”dGg!nÜ4OC8º%„’1Z—†1*N‰™Òb@Mëì¼\š]{Ð?xYKÙ%”ÍØP™æ#/üi~p w�`I‚MÙ0Eoã ~‚Òc¤”©üJñ›ouF´8'U¹Õ�,NŽUž¼üððé¯ÆèXwžé̆ÁxljGt&Òêb -³»ŸFP<9B²š›Ráœ7F&3Þh~úùS:tď§4ÄD/kÑ@Ïî&+¦¬XÐÍ—p¥‘Bª¶’éìö³íM5·À«åLcuqïjqû´¸°Ê/‰éÈPè¼b¤RÛåä¨éO‘€\/´ß”³#|¦¹¸Î‚-DU Ölnÿ©·÷¼Ü»Ó]Þùç¿þóðù.Ö´ÅXó¶RX…tšß|²ÿècgý"ßÚzôêW6Ö6ºe!ÝÏÞÖÚ'ˇG磌¥æÖ_þþß÷¿ýÛ‚«:‡0eó뜂ݛ`ÔŽœd«·Î®^/ï_æ{‡Õ[§ùÞA¨²TY>WÙ={sÿÅçpqi¬?ýéâ͟׎_—ú÷Åz®*-6ŒH@g¥ì¸b÷„*NJ|¸ŽûÓd°dB$JÈÛ=‚Ά9¿J]• ÕÙ`!#”÷IÙfïÀ¯Õt=_ïGK@]_ò0‚I@óŸF6–æ¢ìðب„:3Ó1—[†/x˜È×Çe¥œ_©Z=â„ÉmvùPJ²aÀ“Òb¼QY¼Ó>ô‡Ê£Øq¡T«Ó§7¹‚+„/)DšNdq°Fcrð+k0“6—ÏâjÍÖê)Ì7¨-"lÔNòJ¬‰!X~ŒŒBÝdPˆ˜ÉåtO<ÓFÂîFÇì##æ#&h¨'èƤ?æö†¯_×›-”ÎèùvÔ82iŸ0`AzNóqŒ–1¯¢dzJn…ñ+±ü|²¾R˜Û7¶ñ¶/˜V¢Õp±KU’pá,#fÿGq™5·mžQø¯´“i[«)î’�A$vÄBÜIq'EI¤62ÖJ˲dY–lÉŽlGŽíصc7N—ÔqÓvšigrÓizÑ‹ÞõwôÍðÍ`�|ßyÏyŽ”È•MRi@ -»P¨´eŠ/À<‚¨ öÚÝ_P¶ÿ˜}ÓNXAƒqoH -Çrà™Æfkù�üîöý§Ýá~qn{xðb~ëbëΛÕÝÏ3õ!+—µ–Ÿ]Þ=zÂ$Û±L¯ºr¼¸u¿Ô¿U\ºMÉÅT®súðÍáùk.±©E2ѳ«+û¯–÷_%Ëkîæÿøéäâ-—ji•µ|ïzmuÿèâ›wùéÃÿ}ýáŸ7Žž¿ÿÓ_¼ý+Ÿ[sKtrQžÝl ?þaaç…Ÿ)’´Q[¼)¦-Öì¡Ñ°â&T*Ù+÷ï éž7”¨v×)>GKuÖè’J `2,V -½õÛ¯ƒ¼Á)yNbB¹0wP^:c5fxÙ¨¶–V7E‹iO˜]¬Ý-˜´ÅÃOZ‚ÊЫ뛳¡¬ÎÔWÏòó{”ÚK5�`g â‹ÄÝ8ëð†üdøರM”ƒlÚâ -…¸tû,]Y0¡_r¡<ćáH¶äBØi³?"•m~ÁîcQÒºZu7$Ö#ÑÂ?‹D¡c%Pû„ ]1rg -Ÿã@‡8¾<üFqɈV=~qÚ‚Mš&{Øâ „·àÉc&tÜ´ ¼O`´ájœVKVÀ`Zª(gÛ›õpTD™cÕ¶’í'r‹AZŠ2-ç|¤DË FÄPÊÄ•9IŸ›¶lÎ0âçœ^`’ðؤã“1+”*„¢Y$�ó®tÚÛk×®<N·†A^Ti¯ˆè¥®œëàŒX•™ø,¯Öý¤¢ûéÆŠåLÖCHÞp"Ï J)Y\õ¦‰&+k|z¦ ±|XžÛTSåVcþáůۃ›È·ú»ûŸ½:~úîìÅû³ßž<{·y|ÑŒî?~±{÷y«°wú›ÚàA}x¾¸õ¨µzG«~ê#•„Z;ùýܵ“ËW}°“R->»“]8„kŠM={õG61kõpvLâ3=¾Ó=¾©|zbõ·>{þÕ÷Åîu/¥ƒÃ#te*å…;wÞ¥»· 6ßYloN;H8Ç«Ú…©(•Ëwö+ÇðãùÑܵÓb÷¦ÑÚ$bE7®à|ž”+z{ãóV„dpè*Áp�>*I«õêêñÝ—?�œG„«µ(NeuRVg4–˜kl™l˜Óé˜Ñ¹Ei‹(•uù¥°Pñ³TdÏAe’Íxfžà‹ž lv‘ã&ߥ+,’Ap | àpl0ù'Á£L€ùKcNO@‚õO¦«/UšœÑ£S¨\§â5‹›cÝO%L!˜…Xf)Qº/®‡â%’7d£N+e»—âզѺ¡ÔvÒ]ŒÎ:PvÆŽ_A…x1®ÌZøؤ}lÂT?㤰î&ƒ¤^hnø"rˆ3x–j¬G’Í ˜£•šÑaQÕâ !zQÊ¥â¨ÚƒInË* ŒÉŒY0èL“hÌ‘b(|'€ -f¸}Ac)-¯g›aVåD½TíU†…N_)t"J‰ÖëR±—i®4‡{ZmÐ\ØÞ?ÿºuíì$/àáâ"‚ÉòpçT¯ l^ž•[RjQPÛT¬êÆã.ÄϲüÆèД0ºÄ¦–ôúhat±zóÈqy”UGÿõŸÿ öú™||vCn”ן=ùópïólcET³/ß~Xßlv3ã& õ…Du»°p4ºû;¥°¢$ëŸþÂzÊA™<¬�&{öο=zÏeW -µÁÓ¯ÿÈgC£�éÖÞòÍ/o_|W]¾Ç$çÏÞ¤Jk—ÆWÆÓfÀ §2Z~¹=8¡˜ôÉé³÷û7Áf}Ì,•ìCÿŠêË«_í<øÎhì!hìÞ£oNŸü6–îÀžƒM˜7íÅTœ©\¹ŠO\õn<89{iG¢}<õѯ¦~ñËé/;Þ£.¹}bwuÁå©xgrÐs]¸fBDˆi·ŸEq—‹.í„kRª-©8,Ïï.l=`Œ.‚q©|×»V¿`A€{#`æKQ.åô6B„X«Ýk²cHHEÈ” …ÌÕ‘fõt¬�˜YØ[¹ù¬³ý0¿|WÈ_397J!;}¦íÔ”%dwÓD$ »ífÜþx"Õ†O²y#VT˜²…m(oGÄ/F٬يÝÉù%ÀÝ—ÅC*<ëóó’VUÒ�3Ù8!Mgû7–GæG¼Z“Ó€-/‡2ARFýl°PlÆNŒ›¼v‡‡u7Ê çñq`£!)ŒÙ\Q_H#"‚‹�ˆŒQJDÌÊZ¥ÚXËÕÆ‹+•¥Ãtk+žiQ±4Ék|\ãɨ`̸¨É,IQ\£4�S]îÄ“¨wˆXmÆňé~¼°ÊÊúÒþÜú]½¹î#â9pŸÝS-ßóáJ"³CÁªuRÌ2‰‚‰./Gr9/!ƒ¥@r!Á§Í‹úR4V R*Ã)…r·ÚÝø?ÅeöÛÆuFñ?¥Ea[;5$gŸ¹sgî}åìäp§(š”%Û’-9®-#VØqäiÚ´@ÚtAѼícТyïsÿ¢~æ‰Ëà.ç;çw Òfë›|u3½üzöìËÁêU>Aƒ¡Áõͯ^¿ÿ½—A8&�Õî¸M˜.»ív¼\ýåo?|ÿÿðj¼µ§îs~[«µxþS-ßäÕâ‡ÿû׿ÿ»Ý5·wÄŽàÛɦ>ù°úôOø§�û“SÝÌÁ4 ’àðýÖWŸAÇÍ'×^óZ,뙟®i85ƒ¡ª9,¯u:RpFŠª(H·£áðɇ`tåUçPL,¿zvù˛ߕ‹K¿ZÃv²ÙµêÌBM;â‘ Ù’ìê´"ÖÀñ§YóÔŠ– -m¨=Œ{Ë(žm]?{ók`d—,Š»¼ kö‚z||Ùá¬VÃsØ!ˆäÔm¬pd†F9yìeÕŒòñÙìñ/ŠÅ뤹xx~[N¯T’<y{;R胊ѓ)AÒ¹ßÛÀ’X^ÍòqÞßÜõ&5b¡…I±¤ÄI8ŽëGõ†7I›óbpFÝ�•€B°$f¬hZNjX©ne Z`%î]Á!f¯ÓE,gpÀ¨’e;•åìÞ±æŒ8ÅiV/ªåsY¨[ÅÂŽGQ6/ª£0òõãÑhþXÅ–Œ6{Ø.£|é÷f°(¡œäÎ@ÒR8–ð Ò‚(ªÈP½§àÒ6(×Äþ -x jW¯X3åxã %Álb³ØÙ÷öe–Ŧé~ÚÖ³åKâÖÛ2¨W1i «¢^byÁêä¢ln(†?ï ¯^}õäæ;k¨º‘R»ÐH¨“@#�l ñJ7ã³|tfM’zÅ„:9üØtn4†‰ÃVÖá°nDrl%QL ñƒØtóböØJçŠY*F’å“Oß~qûõŸ“zAƒa=yôôËbz œ4W”lJE!¦©ª…GÄ*‰7ö²'˜aœÙìöýoÿðý¿d+4™™ŒMO ÍàŽXÁhw± y€"Š$=…Ébe¬ÛF°xâW†Õ›n^Ö×Õâe6¹„°³¢#ddÅàQÖœ®4³,'Ïû‹ìn@Z‚1Œ,Š(Iú^Ü<Øîlï -Ðé{BÜ#ˆ Iƒ,Šés+šñjO!}ÈqQËZƒ1Âx¶dY¶T0mŸQH71ÌB7c¦£¦åñpòL32¤E`;†]Ã’$äNW—åô¤Íë H?™~íø}b&ŠBEÛn6^¬APÕ0{º]o�síl¯%3Ðw{›eÚá':ŠX´‡¸È,<¹|çI±á±Y먫¯›Ù!#·8¶«š¶ù°B=ÔIQöW ê(žb£¸¿ÃAníò»û€=ø®¾q†WPu3bºêƒÖ -ga±I§åì<ª6P`9_¹¢”°Fc ûŽ_.7WÍâiR0…RCÛœÂK6µ§p:MF³óÅÅ»½®~Ø‘ax“8žý™ãgåxigcþÎê›ÓGŸÌŽžúÉPVžžeõ1$‘j AvdÕzÓ¤8Â4"¸‘ Ý¥ge½\m®›KËI²jF½ŠWBø#Ö#äƒþ°[C;{¶ÈFmÅ«°|œÎãzbÌçâÕmPþ(ÎÏ×ÕøböðuÖœËØ‹ezµö5«âÔøùaÇ@š¯ “vG`Y™>BŽ¤ºmÁA´ŠŠµ—ÌÉD‚–¢ŠÕ±oÒÑ›°8Uh@W)´uÈ‹Š Aÿ*œ°:ÝÚí²]ôâçïß}ü#±‹.‡E"Å£¡¦ÃpœHÁ@0‰l¿º; -ÑÄØ7‰g[!±"„5R -èÐ -A-n4µ‚±¨†`ƒ’â -¢uÿ~‹mëÝníñ{Ûý]¾Óál§Ž{à–ñdõÙÇoa×ðQtM»”@U|Ë,48ɶZöO«æi‰a•¢ê2èÞ=†éšª–Àìomµ¨•ºaÁÁñôŒ âÔqäyCB2Yro�æ¿Ûïm3?{p°½ÛHŠ™í¥UÙ|øò›l¸jTPÁ+rŒÍh‰ÝQ›Ey¯ûù·ÿüñ,ŽòÓÝB’b\5ó0*n¿øÝõ»oDì02+Ú]Á‚‡Ø™æQRô‡KÀ?^P§Öí\Fž†aºN˜ôƪî)ÈPbZIÕlLÐx6ôj8VM—E”S4Ñ žé™¨ö@l{Œü`ë@ű ¯©„3ÅÈÁáÔêÉÈŠŠy³¾†z„#©|¥Ó´Z‚KìmÖ””È´ûàŸpãHw›ñbÜC/Ôá4Dâlx:Ú\ƒ¢xÙ5ýÁòÉÛrrŽgË‹¶ -š4!TŽ ³bºxýeö<æÎÒýŒÒˆÐØ2CYÁœ 'óÏ¿úAýÖ>ÏÊÛ˜½]N,Ç«]¿†»DÐO®ÈDe†aº’¨ôól5kÖÿç¸J»šÈÒðo™ž’@H*©$µ$©J*UIUöTRÙ+aI la ˆYDhDPGA±7éV±Ç]ÀF»mçôèÌ9Î'Ï™/S=?àž÷Þ÷>k<ät8£É&¡b•K…H$*i9Œ Œ -$E¥@Áç¢Â?Š�À@2<ajÔ&Òè`½QηºøßQZp‹´*,””ì«–J…Ž¤8¹² -M™¬L$t‹ê}�H•”ÅÅåkX°¹R‘B8(8áv8cÌ©‰Q©fabX^ª5VHÊ�˜4‘$…Ùh¬2¦šë ´Òé]Þp¬ºŽ F«t¨†u{ã5l¤V À/µÚh·X7ÇFÕT[ê<Ðí‰Æåm9€¨`3NØIÆÁØïFÙž®Ö™ÙùdcVRŠ¥ -‘¤‚ ,Œ™ôºívF°WˆuÐч6cJ@©d”Š5qvx°kh¨¯õ`[¬6Èz»ÓŽ±+.GERXZk³;i§Çg4¹GL@¯Ä„- #"±D¼>M»ƒ¡Xƒ€XTÿiRá%"åg…R�¢µ¿¸V(»«N¶´ttÚm6Ò„B…šè -¹¹¸‘át&7Ÿh³ fáâ kP¦Ôi\Àf°ÐAºQÔ¬Ç6Q^ÚlµQ8p±.7CÓn‡•2 ”QP¸¹>”Í6™ÍfÆa˜‚ÕFûz½]02ჄƄԛ4J�VI!PîdèïÛŸä;ªŽç›'Ž´-Ÿ›ìï -x=¸‘Rð>w �ûÃg%ûŠe -�ר E…FáNøÝæ`ÖC*˜“FC-&’0X,f¯ÃWAÆRQEÁçÅE…eb±RR•Š4R©¾hŸª°H!Ä0™L¯PàJ�‚Ôˆ?Èë´B2:ì~X-d~Ì`ð’f¿€¥}Åå2Œ¡ªÖB€”2(9R¥2õ\WGu²ÖåmIvä`ÝôÄC½M©„7UÅùý~»‹C1sQ‘¨B*GÕ°Ë,´J̉ˣNø@:”L°.ÖäpYœ>…!>:QiínvkXš?6{<7wª·º&".“KÊ@XÈmN¿±xƒF8nM8´Ó56žEÒ•Ì@&|nºi¦ÿÎ_O¾|tuçùÖ/z»«‚~‚¶’ÉÁ:/¢u›)7t××xZ‚éº0ç¤"~Öb¶(A¤ÝVK]"ÖØR›ëé^¸p¥ª±E£C.PRª‚pÖëÈp©ÜWP`Ô#!›¨ŠÇyN‹‚(CjØb±¥jâ£cc éf—Íõu‡bX‡ƒ°ž² ÝÁç -¤pA—´M˜h“)Ìù«øJ¿Çó™+ݺÁÎøÈ@¦=jˆXÚ£_œì;&ýâäÊüðôñÃíuA?‹Á0¬Öª@Ã\fk„0ФNo§tÉ Ù’p6W»:Ù‘¬wöpüÒtöË•ü׆~ݽ½÷üûµ¹|¾/ÓXWå -‚Aª8é%IVÁ6®ò0©°³ÚGe’ž\KxcôPWÓôäàÄÑ왓½k£ËóSãCGÉpÐk·¨,*•Q*E‹K@i…®¸¨¼¸¨¬¼P+`X :HŒ÷Ù›’<ç4»(¬†TÇ#A/ôEt(QTTV*R‚J-¦Q:qÐk¬HùÔÃçüÑÚ©|òÌhó‹ã[ëÓË}×çÒ¿Ü=óÛO›¾]¼¼<>k‰ýƒI!T2 KcÜF:¢À„f<ë˜ìçGûøÑ^þx>5;’Z™Ê¬Î´mÌïý`íÝ‹ÍÛ×F§ÃqV*d2¹Æh´šŒ4† 6½²Ù 5Ç2ÔÙ¡ÈæÙÜ•Óm—þÜpýlÇÎ÷¿OßÙšz±uâ·gkŸ>î=¼µ°z:7>P q:-…B&¯ÃÍsÖzÞœkpæÛÝ•h6¡Oóxw“¯§%p°…›ìO\[<üëÞßvwïÝ\_\œ<r(cc0¹\ -‚ZÖR*QÁr‰Ÿ†"V¸Ò…ø-Ò�-oŽ1ûëÙ\³'ßîZ›ï_[;7sø«Ë'~üasåÜtm7“iMgóm‡æhO•N%óPHA8íp«}a¤nöHõÑVóòDrg{yçÞêµ¹Üæ|æÕƒ•¿ÙzÿóW?Þ{ÿ|åéS#]>/¥AT Sã:Žj-ZyÈtÆõ3‡Û×Ævî-Ý^Ÿ¼zºùÖòþ‡›co_|ú͉Çׇß﮽½?½qºzvˆìäc~g4Ú“ÃÒOÈ -¥ƒpO qªÇéTfq¤zq$vwcòå£+ÞÞýlóÅݹÿ¼^ÿï§wov¿YMÞ¾”ß½·tõìá¨ÏÈ ‘X%½ÉdCÕ -L-# ©Ë(÷DÙJ|2œèáómα,{v"}çË…ÍóÛ«S«‹3Ñ@�BIJ[ Xµ›èˆêR†énÛé†íËÇîüåØ“¯Ï¼{råÓ‡g¯Ÿm<¾9þË^Þܺzb #ñ1E³¬Ÿ&p ®÷ér•ðh?•µ-åýw.ö>ùvv{}ü»Õþ‡7ÆþñèÂÇW7ÿõÓúÞöì«í©½;§ÏŸìLhÆlBˆB©ÑB(gsÔxl]ÃR¿íÊD`ýdìîJ×Ë[úøóÕ¿?]½¿qlï»ãÿ|zîíÿ(.ó¦&4™-k=rt®î¤ÓÝétwúHÒéÜwá!áH¸åA@ä”CADD`daEÐQuG«vtÕÚšªùo{?À[oÕïú½ÏóãØî¶ç˯7z/¶¶ø -ý¹T¥`X6$Â'ãöÆ9XÇ^N>[éºnãZýÁîüþöäöBçã[Íÿ9Xûó÷—÷o¿Ûºðû/·w–ϵ¤xDsâ¨b©`+ŽVq^7g÷%uã-Öo[,3gË™ÅÓ›sõ/ÖG¾¾¿÷öñìÁ³¹¯ïxqïRG]$•Lº‚ %dË*j§ÊÝp[T#Ž¯Œ–ì¯÷¿½?²}«õÁ–çë#_Þ,ïoŽîÜj}¹Þ÷iÿÖÛ7ÆBËÞ3 \lŲåúËaMnŽÏ¯tÝqt¨Î2ÕºýmõÞæ¥Oûßýó§™_Ÿ\ùõéÌÞÚÀÞ÷OoV/ÎUQ —ÖE‹ÿI‰Y=ÂñÖ@<V\ŸðTú‘´WÝ›ÒÝ-yxëô“•³OW:_mžÿ°;óáùÜþ½áWËmv†>ï]y¿3²yµ|áœ0y&Rèe€^ä4½ÁF“t‘ÏRä€N°+E6š&ÛØù^¯˜Æ»Ç—~Þ<¿·ÞÿÇoþøôdëFÛÃ…¾©‘VL§W«Q»‰r“Z/)Û5õ!èl’œîÞ›m~´ÐóÓrßן—ÿü÷«Ïfvït-7´fBNÁtZ2R¬‡eÝVÆ!h€Ve‚Æž*÷…ÿd»ãñÍ–_Nì.Ýnº;^¶3ßðbõܽëmcg¢5áX0BsnÜä`N=í±¹#‚-hÒ¦œÚŽ¤µ«’¨±.œ=[êÞ0ñh±wkþÔ÷—›æzã3#Mî¦2&æ7r&QÜôÜg¶DIÄØ ‡D8mM˜k nÎÔï.u¼¹?üvçòÁ“Ù¯–^®ŸoñùùÌ—½ë¯ïžz0á›:íÌ„¨F"‘ªX.ìvÅ’·bP1¯-5{ÞP56Óí¹ÞY›ªûú¥½Y|ÿãäo{7¾¾ûû‹Ñk'Ç3µ —™åD¡ÓÂ\(XÂq§IßT*$êŒKÞYtÍõ•Mt6û–F¯7/¾X»¸9Û¼:^u£¿ü\µ£&L F•ÁuZZ$™cGEtÖ‰Í/ æRþteàTÂÝ_˜ìŒÜHÞ®™®9“àºÊ˜Î„%áí$I¡˜1Èå N:0ÜA1^š²G<žqhCLèªðö$ó}%›3µo6z?íÍ=¿;°6Q½6VvµÕ|©Žžjñ5EI›^‚j4F“›áKA=/j ¨Öa*©€ÈŠ,`cÄp&7qW;œwÇO¯ü÷óÖÇýù7ÛÓë³½½5ÑTØa¢X©Ú¤Ò`@ªWJ-(0c1MùˆÆדñôÕyÇÛ#«“M×»oŽf.´TF͸¸CrâDŽDÔR›+ˆ6ðŽ8…›DWä²tÖ%ûÛ3Iöl3Ý]º:74Ԟ쯷„Û+ìåAÖc1ˆ‚#™š•k, êÄL^”r;\1g# µƒƒ<æÉÁÐPlëNšŠ{ëÄl«"® -¿£Ìmq›)ÔP> Ï•a:Ä A&@"WIòP%À£HÂï>™öT…•ñÊGëÓuÏVŸ. l_oÝši\»”Y(êOsvÐ*%-WRZ½ „-ù½V‡íÎRÍ‹KÊE{œêä†j¬[sm_Þ®~z½òrct{¡ov0=Ю)¬šd<¬X‹ò:Ì¢Öœ+òx4lÑÚñ‹Z©�Ÿò0i/Ö[íi+ïª -” h„#Ý¢~ Dó¤hV¶¨ÊcÇÕ&ÒC¦”‘ ÚÍ1A—=â´ÚõRpÃl„€¼Ná$ˆh(n ÄUjƒ -$œþ2æ$R]~>¤tFœÁt²1]ZQÄSu!æ|} 5Föe)OSÕejl:`‰r ëo’l©BeÒã~¥†‘é›oŽŠˆÉä<ª÷1Æ"Òª -/Ò1öUYç‡*¾»P;Ñ™èHE<8bõŒÙÏzÓdŸ(Ú¥GL"ö‘8ÍšXNr&¦0ä»-Øv1Ó†¡a¡€‰ãͱ•\cÂh„Û²%°Li4m¬Éêv¼Þ¬”9 $ê´†<ž¶’(N¢Q(�9,W R�ÉÎ…²N€J`ñÖXµ:£“`¼zŒ…!cr@TÁ4a.‰U——ÖGSv3Op†²s¬_®€ÉÊ–è�]KDt„â°ž=v$ûxV.¬3Ò&ÁÌ8¬ŒÕgãb>s¦ÄÑ]hMX»Ò¾žÚâÆbOÒÏ•ûøˆ`UÈC‡³reZåœPÿõpÞÑ\ó -Þ´?\ëñ–b#À¦Á IÕZæhŸ¾ÐÓs²º6q3„QA è…6…Ö@æ�'lqo¼ÛWÔér§HÜœ®¨?Û{QâùÙ2¦xÖãsE‚¾B·à£PZ™¯Uäñ,åáò¬Tmɘ<9¥€,á’ç)@@¥ ã9ªœ<µôÿéá* ëÂCžŸ+Q:¹•(b4ZN‹ØñÿQ\]ÍQ%Wø§Ø»‹ iòÍ9ç<7OÎQ5’ -´ØÔvÕNv•ýêÿçæ¹ûv÷9_8ß æn¶…HûÑã2 Ç@È~46ý™ †"«ºš=NYM½¼™MB;VIâmQt«Úaš‹¥Y®Š?üæøÇŸž‹ÇÙ¡ŸÄõ¦ÈÊ"Ã{ª Hc±D(’¡Æ†ºÛõÐjÁ¦\åh•Ÿ=ͽ›nGû~{FŠ&§Åv<Ï'·ñà%¯G¬hy^¾Ü¾*"ÔQ-ÀŠäÍÆ…™KÎÓ[ºÝ™>jѬH8¤Ò¡”&4Úc¸º(úÌÔjˆÊ‰©jx½‹s!ÎÕQÚÓ¬6ˆ%eD+aF7i9³£‰Ÿ-œp˜4šÕ�¿O‰X’œ‘ŒÍpâæ+']èNC†¤”#¬qÂÔ))£Ä"Mš÷=6ƒ¾î¶`¶vaó̇’hºí™éµ -BY’ôàÌn¿¡ô6Æqr‚Tpƒ’;z¸‚i³ÅO‹‰¤¤,-³ï™õî`-(Á;´ËF‡œaÚyrŠª<Ƀ3‡éèV´Ç"¤s~ÐØ…íC©"À˜Ái©æŒhAIt1¶®9cÅVQ£X•yל¾³Ò½.(¹q -é¤ØVn{£g¨hÎU0yÝ^Ý»íRÎk„Å+ñhs¯XŠ¼lv^&Ã[¿ûúwŸ–¸§E¡ürMúí§'%ZŸÕ'ï’ɞøþû0ܬÀú£ÇгK+-=Ùí° -Ñõ2îœT„ -$HZB±îÑ3èñï -''K€ÀŽ?2íf¹ŒÁ5’g-ŽwYѯf 5ª„ƒ)ÌF?ýPpÚÏ«#;ÍëÛ¯ãÃGRÏy·Oë-5áÔËÖ“Ã'ˆ·aÆí¶Ý\SzSBj(ặþôñ/ÿË—oj"ÄÄjråtßÉáž5zëU –#žbLÉM%Üšù¥,ÀÉŠÛ«Q.ÂÖq!äÍ{Ð9èáœRr¿±iLo4w`FSÞîËÑY4ÿàï¼ÞK;߀'Rý -l3ðvÏÌ6¢?%õ.môì|7ÞýþâÝ7ZËOjDÙ‚=ÀøˆÖšŒÕÇ„(ˆg³Ý#>Óã…à/HmHS9Øר 3^“+˜„1¶î •`ËiCÓQ\7ƒ±äŽÀQj}o’éçÌ8{Š’)Ù} 5‚õe«‹0~w@Õ¼3¤ô~÷ŽË§e0¥«JÛ¸˜(ÎD°ú²=˜rFOqÆV²)¡&ÎÅ„Ø¢´è0g iµy\fOÊœ.$gPÅUPch{D[C#Y+Á„V³ïíUÛEÂ2u\í8½%»tº×Vëú¨ÀŸÖTÉì+ÞaBh L†Ð)P:-7@À<Š¬Þvóƒ—ŸƒÛOkR…ðxg&ù+7œ´uZ¢=…Š‚e„0I1…Hgë@SŒUÊl±Dñräd�܃šîåtOëýã†÷‚; ;ç÷ŸÿÕÛÜÁb@é BͼÖÞm]ÍZ¼”ÝnØ?]wN ¼\ÝÞü±}þçdùÀÚ}”÷eoªå—z~EYBë€þÛ@GÝV¾…Ù�N®ýþ{«õZV´Ö&Ä”Ö{J°Ä¥a\ÉVÄãÛæü>¼ ºÏ“îÕËÿÃ)ëãէ雿nßÿóìöoéê¡»ûló¬½;¼ÿꤖjéáä¾³ÿÒÜþŽß’*°»>p�Ñ0�»x%Åk¥>_]|~õðo¹>;ªr5.ô»×Ùòs4þk/1± G(9o´QÆBYë3€~A,¤¥”Õ:Ÿ9ƒß¹¤µ“cP&ï¯Ôì<š¾·š—˜”¡”·8pÒ5DûÀä%²Ö˜µçr´ÜÁƒDg:ÑÔŒÏdg„}:Ö¢MÐ}n¢þë -jªþRoeÿ2˜OJTp\ÓP.õÛ/9½wRåH%åݱo¤h+xÓ*íÂ\¨gûïSCmº(£g¶ž‹ÁRË/¸`q©mëÝë"ªÂ´‹ Ù_ÑÃh‚ÿn¼F²ƒ¸TSN«Êx iõÁÁ™UDŒ -jAtxRb?)=zZy\à .Wëk+?qVª˜¼W´(#B‚}wž\×�èÆì¾9}kçkÚhˆÞÐnz&{%\jé^ Qï²·¹7³e…±åhAêRi°V¯*¶m‚)}ÝŸøC ;)S“Õ¼êì¾ìîÿ3|þ+ª4@rh6w‡ë/˜T˜bSZjé!œ}Œ–Z²p’Q½Éûc-^ÈþT fj|V\ý+Îé¸Íõ/ÿ=ÿùïÃÏáôNk\w…ŒWw—ï¿0U ÆÙòCcý¥{ñ5Û|R²=®uýÎÅúæ[>{W#ý°ób÷mþêëøÿ—×nùÅ%Xɲ-«³—¶i’3É)ìä{§Øe5KTõZÅkkm½vvNvs±¤ ò�y |Êo˜ùxÎïœÓºh|ðˆM£X!㌉¶M¹0|›ë}+Öo|©™Ñ!‚›Kâ(÷ÕœŽ²¹já.¢ôHïðyø¬?1¢ä>ðôœéÝ Ì˜Œ4£¥c*nb¼ÓŸPbƒ–:8j¬˜ù ç•Ë½s!®Ð-T¶ï60T7“xU9;ˆõÇ[”—6-Aƒ3JŠ}o|æ@Í kXˆ¶¦ówënáþh0‘ šVk¿üôÛ¿þ+e‡kîec�çËbûëìø½Òºå¯š|BªtzºA.<±\âýêWî¯lÒ›ïÙÌôãU°ë«5÷c½×(Ò�åÿ°°õè©QoóÃWl˜ÞÔc‘U#¿i“‘6—ÚYÑSO·<ëæ�„5 Ô9evŠV2Žù®`C.ž©£ollÌ/Wm$& *>Õ!¡äðYŸUjG¬ÒÄýY»/땺¡Â<\œÓbÛL%—Íà0e¡+ĹÎ7L´F„š©Æy²¶oÀ‘W¬Sáª•ì¬ -~'•6ÔZÿ´{øŽŒ”î0<ûЄë'™;"Öó‰¥êöÁ÷þw¢>[Ñ•Í ùÃXãUºs-æÇ&WpiÝa!3¡èœÈÄDWqçòÙÎuu|/–^8ø"Dg´zŠùÀΊ3ØË'Ltàâ«l¬Ï*í…ãŠóÇJ\²Îˆ• ‡l$Ò¾Æ'Ýozûw‹«´AœQÓµ«âódlfa4ŒŠÝÜÿCÑvà’˜7[Ý^ÿ÷ëÏÿ¬ìß»" ˆHš/|úòo¤òhÍ£Ã$wh›S’íÛæî'¹4·‘²Ö<§;K›Ž5o…èIî—žL·/ÔíKw <²ch,ëfÎÅ—\á&ÆU,t.œ;Èu. Xª2Ÿž9QÕ‰ -.¾`öÄLª=»™¿ùcÓ§ÄÊ]�©[½š™L’ƒÉƪs ôâ3çªÞGGªl¼ƒ²Ï¥âÐòÙª+m©ÛçO6Üñ ÿš8t *œ‰Ê‰ÔâŠK*gW?²Aíw¿_\Z¶@XÓÒ ÞºžÿEÊï®ê˜ùõÏ~©¾!eåÌliéìaøFF«Wý“_Z^Ì®Rµ©+¤ƒ9¿ÜPŠÓDýE¢qÌe‡.JÖrùÀäQÀø8¯©´Õ—-ÑR�ýÇLœóH}!Ö®£Ýë`uŽ²|¸¼½÷.lÀGvÝî]|Þ»úk¦sêZm/]? ‚”Æ›g¼:•³Êèfpúe›™ê´Ô»z8“2Ñ n+·19Jêâ>ŠYnûØ…´ <HE¤Ôq@ƒZ¼õ²8yš¤Å›Ü©L^7?¢ò©™Í¯Xƒë6ž -"ÅÉ3«Ë-dÞ,æ/#uÈ<weèœPØÌn‰àó.>¡‚ µ<bÏøã==Îé1Ÿ”íQAÍÁ*l´¡´N:B™¡ M` ð à‘vY¥KFªL¬ãKOÝ‘>nÁ•©¹b¤¢Åi²u¸ƒƒ88Í -P±8e»¿‡1 @kuôr~÷k÷ìOêàF®žz#Uœ'¯_~û·µÿ#" 7“Ëxë"Ö<Qšg:\<}õc½wjÂàLšÝ©½[¥ö2Õykg‹KëÔ¼MkÀ«lÓÑ!w0®ÈÈmH>5[\vêl¤³N/>3=Zµ‚ÒôvÑÎäÜ0|ø⪎üãÂ:Ä(pª¦Ñ·ÉU£Ý„ºûP¬ }U»LjC>š=1(?и¹ ^vÑJ«sÊ´ŒŽBª¨Îã·íÝ÷±Ú#×<„ÚØK¶ÏV¤Á…<¡BHÝMÔ_ ùAm7œ -=œŠt¤Îi»~mêz°O:’vî˜(ä‘ TCÙ|ûxvr_¿f•ôäZûäYJugçŸwNhÌÞ•ÆwRå Æ_ÌßîοÓãhÃøʸƒ%”™€y ±c£3áDkþæç@¼ äD©!÷¨ØH¬.¾TÆoR{çð>7¼²ÃÒLbרÒKÊ•3€›Ç;¹ùRè^‚Ø®ˆ‰N[ókÀsxíxa·7½,ôÎM´j÷€!kXh˦"Ø´¸C(¹-ä'ôƒé|‰Á–# -å'˜›ÂA6í÷g¸ÌX(¡âI¬y?ˆPÍéM½úa|òÐýtvÁB$ m•òQ 1`Å*4XŒRÊýËúðÅ›@uŒ¹!iýññwÉ-ì -róòä “bÁ*†ÊP_÷Nî•t{ËH{�å]À;ÈŽ´lʲ -mPFoçÒÛgÓŸÔÙ=W8@ù=^›ÙýÕ¥ušh¹Æ1N'uÒMØÄY]qg Œ3Y-<±lšý.öá…V0p¶€³EJ°Ê�ârYG€¡`†Àj°‘Q˜N+jC&"ê –}±©b¾”Îîs3Q/ëWš`F7¯ÁqxÓ\6Hmñ©Š -!£åc¥|êUL¤²lbœ”’©\§¤dã87ºÕWõÉûÊäC¬ýµ#˜38ƒ™ÖÜBÈ&g4ÜÌÉÿâ2ëm;è¿i3ñ$^´oÅU‰»DRI-Ô¾Ù’µYRl+Qâxâ$N2™$ÅÌ @Q2¤/żLQô¥@BL?zD$ïýÎ=§P[Þš’ëh:¯»ºÝ.·çJmîGȌ쵩hõ†IN[¹¥µpZeÌaÎ9“ݵâ.%÷8F(¼Vþýß7_²••\]Zk.ßå¤údõz´ù>‘±Áóóý×àTzÿ–)¡qãÒp{ó¹ÔÝüi?d¥¾Õ:ϲîYΞéö©×}ôÛ×ýüËw ÃM0s®¼nm~^Üþ£ºþ‰[Û«_ÿ¯Ý9?Jª)å$)áS¿]ýªwwL‘î²èeïöÜÂØt®¥9ó³g?=ý¤WO‡ó—¢yL‚jª° CD wqTî]ñz—Ë÷€{x®Ö¿è½WÜ�çÜbc¥Ú')ÖNJûJkï¤úöè™ W—Sz 5�Cº0“¼+¹¶MñÕ$mVFÛãËw”Ö¼ï'}‰\Jð@ü´êJ³§‚Ú> -3)ZÒÝi‚,Ù½# -ÎÄÃH¾æ«ÛRçeZl½•YÛÄP-üqxˆ«´Ò—ìu‚,ÓPaœ #€ñ.<5h ²1Æ BÄ¥ F®ù“YRª©TYŠ¥yiðÚ½A•–Á´¹Ò؇Jð¤i¸èÇ\~$fsõ®8½'åÑ3¥~ƚDŽڌrV‚sÔê*ߺ¸ƒCÚJ+ŒÚ.¸3«q&–OÁYRy`ä´`rzJŽ¡4ÅsÊWB©;ý ”ŽaÓjE®/�€Õ§ÚüýÂ…¬ Õ½ÓçIÁ…+£XžšÎpW=Ù¹Ç;’wIÖeàÍcy8鑤ètûckv+'q"¿À¿ ’Yc”bý0ÜÈZýRcVë¬7»ŒÊª5f‚µä -cȺ0Iwöòdó.J"„Å»—úàmÎÛ—Xk -' -§>8íu•Ã˜‘d«V{w|ù¹9}åôƒtU»›/_ÿݙ܄);W?‡ºQÛOŒÁ•âž%Hs4~öÇþ÷æóï@ì�"‚(Jî…Ñ{®ÕeÍQVkoÚ¾ú‚ -ÕhÚˆ³LìðÆ„H¦'KziÔ™‡òNŒv#”íO(GÑ,™Û›þú6Né$ï°RÞ�ˆ\ñ͸‡áŸäÖpñ–ȸß<H=ô1 œ˜JoKJýa+Æðo¿ýs÷âç{{ÑoRþTa<Í^éö™�ÄZœ5Æ'Jè1Láó]à?®¢l 4[^JΤœÌ†ŽÖÚ¤ØHdœ8cc¹¦VÛ4W2Öh/H¤Ø -ÍVUo•âi$hƒÊùÖ9lKÀT¶8–¼s£ÿ¢¶ø¸øîûä&ž6)©Û <9šÒ”•âë1ÆE¹*lÑ(Êf¼Î‡ˆqªèCdR¦À©¬Y:’ªðç‹Ç2ª—âÊ ²~T"8Û¬¯GÛÃxeŠµ…s7µ:…37Œ©qBcÔF”ÐŽ¢2W‘~cx™3{ßú¨û>ú0.BÝdÍc”Òð´Âë £±ì-^6—·š·§$°”Œ6ðÅ…ý s!Ú‹æìíèò¯�„@²ð QÄi“¡/ú)_\N25ÖšóååQ\ˆ¤dor ŠÃáyÍžõs»w]ðvA´ÁLÉ]SJÛ‡äB)®Ç…’=Y_}®¯’é§÷@Z*£kÑY„I3ÀÚÁÓR}lÌèm¡<7;»ÖòƒÚØÐüA(#úÞÉ3„±°L…RzLa‚e[Ryæ¯U{šÀµÉÙMwx‰3ù"ÄétVsù®·þˆÐe _ –ÅH+E˜Ga>„ÈGQ>N[¬ÖS*Ø}Œ6öƒF*µ'w¿¨ƒC4ãi&e(ïÅÒN’)Ã*sz?ßx.ÁFöèr,cœø‘\Éâ\V„7†`Ð’ÅÁËêä;yEªí‚�¯N[±´EhX¦™�TÝy¡}™âË¥n¯²ÎL(O{"7æis£M¨�®8ödz„àrŸÖ†˜ÐŒR%è&˜P·s®Õ–!²€ðµfÀQÂh´ÖQÊW9cÔ˜ÝS -IuôÌ9tY}¨8s£yDU*WÍÈ€¬€¾»çDb„ÐFGh]2z¢Ù=Š!ìaˆÜ;"£¸ÍK“Ê”(Z_æ×a\N N -ÌWa¬ ßÈlÝeY¹¢:cÁèJÅ!o˜´¢JÑKÍKp‰ýÈ°˜ -þ¨ˆ±U˜…S9Œr[Zîþ£zïAÜ"xžÓzé{ïô:?½wHD˜¯ý êñ B§Y›W:Š³Ìè=FtuwŒ±…8)…q%ž¶µ+•N9ã$'ŒŠF}fÞ6÷Q©»“b˜I‹FéÅ0æœÊñ³Òñuœ¶Á…t².å§g7íÁ#Š-0’£ÚÇVkíÍo¬ÎØuÿ�?qDÚ&çÞ^rßÏ`BMvWöð¹PDqßG%Cu|~øçû‘½$Ï -J>�ö|ëš³/¸Ò -Ï–£¸HðΕ´I�…(êÇ‹°ý¡Jpšó’Ë´·mûŽãïdÀŽdilɺH‘â}_¢xSE‰”¬Ó–lÙÖᣎí:K;iœ¥[›¡]û$@Ÿ¬ú -öÎöóè�ÿ}Ï÷4ؽ†2uÓЀe9*²a¾¬1J<h·øàmrü�¬z³G`s²¦û×éâžë˜bJ]ôÇgwŸ_þíßËOj¼Máu×i¸åqåZ¤šÚÑêüÕ?'«;;^Œ6ï¡pK´B*‹-Á™À÷7÷Þ¤ëïiµ+W£tr:aõ.¥Ä(ÀºÑÃãjýÕ;[Ž5z¢=QÃ\8"6s¤ )_Ô½/²åg$‡É9¬ŠíŠ––åv‰491¬GUo˜-+’?+éñl=\læñ*H«¿wYï—Ù*Î;EÆ#•Ôî|i´ÖðäLß.‰NsÆëÝ¢\ 슜Â4kn»ûwÍá5Ô#6{³»5ËáZ‘0K”C}3Ô+mô -˜¼wôº3¾,³n™q`j+VÕ¤Zß‹9TØÎS”ÜŽ¢ÜF¹z¶â‚ƒ‚î*è®QÚ¯?œ?üËŸ|W¬Ô²Ež=§1Í£„Ũ©ìî{É™díRœ‹šh´Oï¢ô@Ð|ÅéAõƒÍÝî™á#u29f§(5ÓM2¿Ù.I9TÏ$(JŠo9íÕZV¯ˆ)†;Œ„æÂ<¢ÂÓ‚ÿH&Ñ-FKà q6„†‚PaqÔ—¬wBÕö Äˬä�ØÆɱ`Ž´æÆJoÕÆ1Ê[;¸HJP´l%"€¥;·»gÀB½åÞžˆªXKÂþl–£ëïV/ÿá . C;‹×ËÕäô9*szÏO¯ToßhÉÁTó‡nt8X~ƒqAÓjщ?½‹fo”àNÈA‹d³Kp5Joît/ÆëýÅ[#œCfY¨`|qf¨/]ýÝhŸnÑ*B”Œ\Y2ÄŠ7£‡öÑ»ää£3|…)½"e:Ѽ|oµ—P”¢?ç%z¤…¬‘bÐJþòð™Ñ“,V%µ>S‚°“¯dï�p…"Ã?kcx%[l—äg['wºÓÞLy›ñI¾![CZë–¸0[Ö0¦6ßÜ5›má¬1¾ÄÕü§²ˆöçÊVžUôùɪ-HéÞñûW?þgÿæ'è2È e~ãD‡°Ñ *‹ô&é)i¶$ˆÕo¤…Š þ4CgQ>e•&À-'[ªI„° ¯lQxòýã“B®$sRK6“"¡äP„]¨Ø(Àµˆ³LžçåW‚\‘Êd¨lNàô6ˆ !R¨Ãÿb¶Î8k‹Ð_Š,uÖ‚Âýä2ÜjE´ží°eÆ âŒ˜1ºZ}a%É›ÐZÁÙ2ÆЂ¥9}Ø•ÑáýôêÇÞæ۲܅Þd$«æu 5ü¾ìî*Á¤·øæüá×xýÀúû¸Ô6¼±â$Îìq÷àþöÃoWïKO>AªT(ÓnÌ´pF«1hOrf<DÁäÎjŸb%T3W(¬¾d÷!Ú.i½ýhvouNE«×OVe!„º„F�‘“7N›†›Ýü�ýmÎ8c¡qÌØSX4Ãå»öôŠQ#¯5kÏ_IÞV_0°µ¡æOÚ£/Ç'w m^ïøé%À§—lôú‚”»Pm™¢ªÚÃ&â¬[Û„×¢5¯5w&ÕÆÂqãµæŒ!öÁδÞךkw÷¦1yÉGœSš»ÇoDgDˆ-JëïT<8Bڔشh{‡ÔjITƒ‘ÛYÁÛÁ´oX‰åK½L¹Ý²5ÃV¸:JûÛ1Sà`vËdBhrŽ€ew˜G…bÅ®‚î~èwÈmå…"“ˤ[‚7ˆú<ÏDƒõÞêôàÓçÔvŽÏ#+u¡‰@\çÙ'ÏÑ"f” äè‹,±Sd0Úl£ŒcŽ8{L™cÈgð`®¢ÖFPvŸ.¿W;›<ãfq‹RR„¬!„ʨÎôvùõ/ÉÉw¢·—C–Ó9Éá�äÌ6€e5^Ã’Ü9oö9-`e“ªœÞP¼‘êa£Á`Tâ•Ð:‘ë‹jcŸQBœs¸ÚÀïmN®>]ÿ¤Ç—ísrS0:çT„B*¶Cò ÃtvE\I•™ÀFp¢j¼ªEK@n±Ç“sVo£ŒËÿÏ,íù]¸w/Œu5'i/µpZ¤-¥~˜¬þ:¿þ±{ü¡søV´°qÒáY4¾(R.oí7§wÇ7?\Ü}ž^~rzç8mÙòÅ·Áy‰³W¡4 òjˆÂ‰õÂÚýÞáÁÑjZÄk%Òå!)§p -Bhb´Û^wg¯¥ð@tö€‚@$YDæõ ،3{ÿg`Rí`BˆPövËäYQKz]PÃFïT¯À¿‰³>_íC?Ë2é”?[RH¾®ÔFœÖ=àŒc¸ã -ß„�„.�Ìȃ\i~<Ëé‘ŸÀõ"Løû§%�-”ò·ór5KLˆ°°z0”¬ú%m´b‘|#=‚kî€hó<è<b@JÐ~†°ÿ´…gŠˆ„7ºãAÿúôÕ/›¯žÿlDë<n0z¬¹C(eÇ9.³Þ6Î+ÿ—$¶dR\f8œ}ß7Î>Š3ÃM"‡¢(‘”dÉ’ÛQl$Nã 1Т´èE^´÷½éoëa�^PA¾ïœ÷}1Ùiý—ñâÓÝB÷(¡ç¦§Né_±áeËj]'L6³³Pú¤äóf*@9¦—ó›/É,É8ÂyF‹Ít LÎiŒ´éMÊóÇÑË_ÕlÇXã}5cà%Z‰`ƒ‚|Û¿Ö“ )÷Q -nÍ”¬Òê_ñÖlÏÖØ¿ó&J¸Ì¢ÙáŸa¤hþBô0Ê—¬‰“œ¥ø`OÙ$9Ј¸‰àÌ”è"œ¾Ï–Ÿ´ä†5FmÊDååÛ§üìâM)£ÀÄc\é’@ÂsÚq6?Þý|²ý0Z½ÚĤ””2¿‘ÏîÝtÙÄä.ãL±êXpN]ó°!ÔÙïŸVïº,¾Žsê/7_ª»'-X70C0ò»Ç'@\L8s*Ús/¿í·vzIˆý&¦ö2 ùW„Ú?@$”}¨zg‚œ(ZâEÓõÃ/Î`ƒpñ¢¥wÅcB.zåJ:Í6ç'Õðþz±ó¼F68RÌ€KI1£ -%Æ~~Õ¯³ê£äžpZÒ~jB-$"×S̩߇Õw{‡’´1£ª†9”×-„ûæ�}þ‚•RPsœ÷I!ht4ZÍ;\@J±©îŽ²“ד˓íÇéîS0¾JäõR‡‚pÇÀöÃådz‡ß¦7¬?;Åp«'’›ÓZb$—nñVNî¬Á»¼ú<½øì_uX›ÓSÀ9Þ°{5ÇÌìôüòÛßn?ý:¥‰k]ÚR{%|@*³¸cìYñC±ùUtŒŸœ¿‰Ë &Æp¤´œËÖI^ýêÁY§€ ï*Þ©í a\H�zãéëêቒŽ÷geŽ9kxð ZSµw*˜ÃfzávgºùtõýßY·ªu4�3øÔ.Îz„èáÊ?nÿ¹~÷·ßŸVöúU¾xW¯Y9‚$·wÞô{ MÎœÁ¢AYÈîÔŽ– T©·%˜ -J¬†³@%(1lbÉ:z¯Äƒ{´œv¹Puš[Iö„7Ý£¥ö&¤Mï)(*7À?/¬îŒ“â.½‡Š§ÄŒd=Nô-¯´ƒœÁ@Ëbvߟܦ³oÕàœÖ'M©Ý‘9Õª2Ss+ZÛé–‘GˆúìTí²˜ß‹z¿Ö–ž×90>Øôæ?7¿¸ýsŒP³áùôâC Q¾zNÔPAú”q*%·½ãŒ°j„ퟜßüñ°Æ|õ¬SC4Î<qó[RØ;),ŽWN:·ã™æY5Â9.7l¡³€+À¼¸ -Êä–„”��CSÃ:kqÅ™C-\Úƒ2-¹–œŠ!<cØ2#]»ù½õ$%{aô²;‹Ç·J´jÐ^7ymè·F¸ˆÊW0±‚¿äÜ9®å-ð&1FfÌ|LóÎ ø{Áª%« ]€RpP0±@ðÂHõØŠ·ª¶‚ÍE(O€Å”2X@ÆšñûŠ¿fMØè~‹²ê(#$Û/gÞ™p•ì²AYM¬A´&¤<€–Qƒ•àVªw::ÿOßèÑ’“Ð1�x°ž6Ö1c(8À¼zK€Gj&Ÿè.Íôeƒp;Œ‡À©}Í)LìÒ)†4P“WACÑò@tOQÂMåô±‘l³ê§dò€qPpŠé—»‡ãÅ{iÉ2bÄýþBPV–¬Õêþ_ÿþŸå—-Ülá6ÊƲIËCŠ;„‚àR/[©îЮËø`-̈‚WR“ºy}"õ–’·¢Ôé"·Píʆ3”ò›T³@Fôã›`òFK®ê˜ûõÕDuÕš¸ñéÁñ -Er“À؈Æ@íMÃb'Ǽš°RÐ¥’óX9¶Â…›mÂâÚNWº?Æ&A M2Fª·Ð‚SÑq©½ ` Ä#ç¬2TýÊÞœÞý©zóW·|è -¾êáI1†îŠ.p_îà*ÝXñÒË6 n!f aÔ&Á)ßêƒ[5ZwáßwfRoÞŠó)ÌÌQ×Ây µKÁ½¨“m„WÝ1ŽdÍi¹l^› -µPüUWvùT .x÷Lò×m.zÖžµø©ËÖˆ^ -ÜþJK6ÖàF -/p½hRV‡ó!`g -9b÷¯ÂÉwAù°zõ—ptOJ‘aç½tÑ×À\ðÖ‰_ÜŸ^Q£Æîi¹Ëô:” oH¡/»KÞžZýÈZ½Å£¤Åj@ø .÷Au¡ßxãå¯`øéÓ`s9£°’µ3¸nžn”ƒâZÖR¸n´«ë"„ÑBä&ª¤éãb´›-îZ0¬CÚ@æztBq„*_ çÂÃÃmÖ›¼ áûY%çõg£Ã:õì�•ð¾Ã†mÜîF¹(n‘¬O ¸C%+æ¸\¾§Õ¥lø±ÖÒ)a SBÔÚjVnŸþñßx¸ƒr|ÑÐ@” ù;”Aðà1Ô.§ôÜ@I›•^Ë`Ë·°ã¹æÏccä·z\o/>JùÖemFŠ8}@È�™!@Ôÿ9.“涑;Š”<‰W�$±5ÖÆb!A‚$Ä4µË’eY{dYö8ñd’™T¦&I¥¦*9$9å|€Üò½ò”*–.¤Ýÿ{ï÷‚Þ à*ß¾ËÖ¯t#;CÅEc (N5{*Ûst§w‚ñ�IfÎÊ‘@‡ƒíçÎô!˜¼w‡o”`Mì1(š8c„¸¬÷ãâm¿¶â34D„&#…¥Š$H/‡nzî÷a&‡XÙÏÁù/1WÔ/¢ìFÊc‚Ž¦’³ -òë0ÛÓîéõ'=ãåJx,…‡V² óS-[jTfu+ZÇãk/v(ÃNy/Ž—}{½M Í´`![SbM�ÃûŒSi2ƒ+;z†bÚ˜�‰Úøhq¼[fÙYô–÷É䱆¿ùÛÅÝ%w%š’·àÔ~¹í£ É´hðð=ß<Wý-H@cDíÓ_*«Ô_$Åú’–¡ uzçÞ©nOʲX«·¼ÄýJ»\%h‚¼9ÁM¦kFLvËòüè±TÑË s¯nqm_32ô Íž<Ùi=- h—€ÆJó𗻖¿öâ¨õJU¹ÂUÖ‘5w&¨ð¸wPœmNìŸñÔàÀ)#§°‘ºÒÝeŒ=Æ€aR¯¬d#™+{už2mªX=„WoõÐ)Þ*îRwço{OËÒ^]ã¤D2‡²5æˆ/èQO¡J$&pQóçz0¯Ë¯¶\L&%@˜=Ýţѥ“A¤³NqƒËTܹ`æ4Ùù9 -‹ìÍÊ¬É îÁ„aÕT¥¹/{ÅU<8…(ªœõöhIzöت¼©î͉øVs'Œ0BÔ[~ð†·4=óK$Á -^ÑŸ<o 3~ånˆ?“蘑ã]Feå?ƒ 3¼‹"Ù»Œ” Úó³×ÐÑ)Òâ\qh˜ñw²køRõVxËŒàŸêB°ÇQ¤9ÀÛ/^ŽÏ¾)<!–$Ûüö§^Ü~‡’"@náFòW<ƒoa/ˆ-Õ$—ή°Ý³.vEkag7áø Fȶ‹Ã“o’`jBôh×R/šÝ^|ÆØÝo)о’BΨ`oÀÕNÅhªcˆ6¸_ûe²9Â*4W(¡Ã’^0ºÎÕX‡Aª¶|AÉäÃÜà’ŽWÓ';Í -ë´Õ¾ÕY#ÝpáM1)•õ2ƒªµjª™BÅøˆî¢&'5>À‰06à"D¿áÝì…D§-ÒŘ)ÞÄIŽë‡°¸mëE“ä ©ßRÇeÎoð¼c˜áR¦9¼ë7äܨˆ&·€.ì½QÒh«’Þ6 vhîåg£í‡tþ5Ø“£Ù#à çדã÷ñì ï@w…o4k:”Z^¡Y=Ãíén†1<OèÖXÉeÇv0WèÐ�°Y½¦:œ‚•cئîاß?}ŒÚ`Õ†öý™—·ôŒUR+=‰çw~qcÄgÄÛ°R—cÔC7/&ª¿Ñ£S0<Öêå~ñ¤Ä¸ê¸CÔå†N¬ñôìóìü×¼™7•(-^B`BPFP‘Wó矿þ³;8Ãép«(¬ÒmHôhŸu€Äª=ö³mý±WÆPŸ‚ôÑ@]ÐäÌ“T5G媌Á.O§²»q‡W ßJ“îÕÌ -ÆïH¦sÑ8 cÃ9Ø«J•ºÖ¢/÷èH Vñôm8y{õñßüé?ÙìÝΞ̵|öªÚã6Ì*›ö—wù³÷z°¬°öúüW˜Nê–[AYèrÆÈÏÏ/¾úñÿ/Câ–†ƒç²½‡·FøHàœc`8…ÅgÐGàüK4 Õ9À²Ä›V…X²W4¹´ÒË*ƒ«QÁ8%ÑÀöñ±hT4µlj§t‰S¤³[#>äµ!+¢#¤„ö‰ÑãåPTc£3u'‹ËïÝá+Ù[já’˜}ÝìZÞ@s‡m½oDÛtö³t[Rˆ¢dºcF {Utʉ¾•œŒ¶azv•µu:¤î˜kÛlË‘E“7Þè%oô!º&‰uï€#(Aü¥=¸ð{Ù)o@Ñf²IæoÐeg);è˜+#<Fwã|Ž¤ëÎB·¥vø¤Ôn f–UcÔZƒà¹4XeË;À$‚éÙŸ¿0;SÁHáä¼1Ad÷–wÛ¯~<¿ÿ9™Þ€7¶—ßÙñ3HÏÎÎH°’èD1�E¬èA,f0³b$,Åœ0|�ìÍB¢êÃ;l©JvkÚ>kƒB›j -ù°©1¼IzÞh¹nz![Aë#æjý²Äìì516D£BqÉâÝÑý_‹Ëß éåוføÅŽ�ÐÕîξȉtØ`p‘¯Þ£`"^a;œœ^ÿô/ÙLhƒ›éõï?üô¯~þ÷ý·@x1lÒ,ÀÉ0™&ézé¶zg-»µvPnúÕvÜRsâ�Æ,éÖ¥O‡øqÛÀXöÐ×ð ^ëƒ EIpÉèG½ãâÙ;âÎê¼] —5ÄŽd{¥8kÜH'¸"bæš?miÝG˜±çýg²ÃD›� £¦ä£ -±RØ" '÷DÝá„F‡ÈßÝš\nÈ -ˆzÿ.ÛS¬Œ_§‹O„5„{E’Ô>ßÖÉÉ°ýÎÖŒO´póÿ¦%ÞãðèSoûQV¼9†ð•dD«ßƒ–Ö§éiÿð[45ÀØÿH.³æÄÑ3 -ÿ“T%5ñØ`ƒ�-hß÷$!!Æ`/Ø=Œãn»×ééé\d:•ÎEf.’ÊMò7s˜T¹\º ´|ï{ÎyÎI¯µ´ ÄÁX(A´:¢+Èm1µ£ºÖ°ÒDKeåTÀ‰Ù€XÎNŒkA™ÌÞzţ׿3ã9cä°J«s‘Œ_49—»Nµ®ÁZ�lô/`?A[Hùš w#¼ÐÜySÈ*-»Ú2« `½£3dÐŒE.!»s Jµ©*AºÇgÜä"u•‹PŽ$}bwo\Gë\ZÉ@ÒÄ'Ô•ÂfÔ‰ÌÂ|æëSǘÂ�ñᕦYiZ¼9T£ôîõvð"˜0ÖØÉö~ïˆl#HãàWÆT´fè UÒªÒÖŠ–Øöpú¬å÷msVoÃœjÓl±�ƒÚÝÉä]b0a°+-÷H1ÆÂäi9—¯Z¿-wZœCK>ý›ˆð½(,mµOŠ ª¯Åòãöýû÷_¯¸ %!Ô²ÏÛ}¼v²úä–Ïj¼m[#ZÔY¿N9$ñjæÔRîŒøÁé?°òÅ8®s’9êÍÞvÆÏZtÕsF)Þ2)nu¯ã¡–fó§xþÖK‚áÕz´JÊG7]1RÀª©-—/¾\?ÿªDBì‚ÅSÃK‚‹ð΂9ö¯ÂòïСŽk\ÔÚrrHR‰Ç‘R_ô·¬uØ3½IÔ”aÿj~÷1^¾á½5%ã=m,†êBP˜,êŒcuWÅúÓðê3þhm€÷<pQë°N'5©Ö´ÉvlDm%®QÆÉ™pÖÐ�Ë£¤tÚr5¸ßòmCìž2v¬ÉBƒèJæi‚¬Žªâ!|5ÃI:Ýêx)v@G}¾×ÂÕ·g2jcwü**_[É5J.ø¶ÒÏHUÑúÍ–utÌ�{âòáæÍ×tùÈZ3JîÃX(!…•‰˜¯ÜÓ;Ûôâ‡ñÍ_)nÂç¬6®sQ…4«-Wólòj¶ûy¾ÿ5^~>eü“†~X->†S‘ZŸ1Kµ{ëä{·ÿJ,ëÿ`@°!«ÌÎNqg%–ésJhU >�D ÎŒ3Ëß4>ðâ5šQk'wIùdu×¢™Ó¢§xco°cý9œÄ?Î_þÓŸ¼ip -ÚÍûf°ð{߉ιmµÎ•æ_"¤@Yç‚W1A=XÃïÍx#»`ò’ÕFV´’ J1¥äBñ/ÑC{˱„¬6dÄH23: -`ä“–l’Å»ñÝ_†»/r¸åäâá>¿çì%¥Œeç\r'ìoU£ZÂô7ùê§ÍëëÙ˜�-¦¬’ƒWo${…?¼Ñâoâ JÈŠ’Œì°Œ#é=³{a%£{£G[å2'ìR†SüÇý!LÑ™háR¶ç.êG ݉‡@Œ‘#8Ædúª¿x¯uZ¥x;êo:ÅÝ7Ǫ £d5@Ž:áµpÞ[i(¨'FçÚJvzˆSZ‘|Nlác°<¿„Hyˆ&H�xšæq•çøŽf‚U@ïbt•ß|Y>þÒ-ŸÑû5·:‹òæ“WÜZ¬@Ì€D²ÃÚ îax%O»|²ÏfÏr°9%ܹ΄p§“¦RGL#3Û‡Ó'«‡éóø^=(ÆãèH)‡=ªÁšÕ§¸®´Œ3Ê¢¤.@Èìíáƒ7üh ñN�‘ÂQ!==\ÃŽ`š7¢)øpÞâÍüáoÛÿÑÒ]…´ÔñG² `ƒY);{áf{3ÚT ‹ÇJq‹Ð=e¯³ú{‹3Äǽ®íôŠÖ‡h[Jt…—²=”æüb—.Ÿ7OÿX=ýâOŸ(uÜàL›É}ÞœiÑMgühg·"^ŒNá]R×WA±s²Û¶}Në#É™»)º¦ÕLñÇ£«wJpÙhG &Bˆ€7õ°‡¡#kÚrØÜúù™Þ³ -�2nà¨!·øÚM®àÕ¼š9½£»åì))ô*„uBè™VÙjûXQZJ¡£Þùk/»kŠ(bŽ¯‹ó''Zþî÷§-ÖsÒ7~©§{D$RéÛ -ÉûÙ½îÏQ(&z°Õý |Œ®°@][Jáx¸F€ÒZ ]0BÌ]œluàëô9]þô®t[mÀ)igp=»~O±~¥®|D*9ïÍëBR¥\Bˆ›B¢˜%âŒU#L_vV‚±¤Å!Á&õvpÜTcÀZ%¥õ(¶Î4˜¼-÷ÿŠ? Ö‚ª44RL½ô>¿ø¬%{Öœ5„nk+ ¶Ì,‡[#ÐÎ,èÁ8øR¬¥`•ñ(·ÁwÖ®ßõW/õxÂÚC˜¶ÓÇõŽSÙê×ÛðCÝðËm£§ÔHêÆ8©×ÜsV®Ãóû?[Ù5 Ü5Fpø*ÑŒîJö.àá \�¼_Ùù^ñ í–à«pê¤S=çE9Þýݼ2S<ïi©ákÐ}H9q‹Ýæå×ù‹ŸÃl£Y}AIÍh™¯>ðö‚jriíªÑ¦X·m7(‡R,§nx÷Í-¯ÚT%sà§kÔÉ[òöRo&»¯vºkqJÿ¬eÊÆHsæœ2 䌒rÑ\ˆ”¸Å’ >ÔHCv¦§´[%]F#|½óÝùÏÑ©xTåÁÒ(_@¾¦”á’»°’{³³ñiC;®‰¬RÀäE ¨wUº0™‚‚Ëqÿ±_n»[W¾/ªW`<–d‰æùLJ¤Ä£H(QGëlŽ#;¶lgtšh´˜$E2hnrÓ^äŠ>G©]´›4 Z º1ØŸ!‹ÜØ„ö¿¸ùó_T•uÄJO”Þ°´ÔaÔ¤â΂øHõY%Ú-iÐ9 -Á0 w -?Ljx|%XÂàíRiCȇ§X³ƒäžnª™LËB³H¹×äõ¾¿ç‘œ1ovõ`ÕHÖ‹›¯ƒÙ=£'ø’ÄøX‚„_VÂÙ¾W„ˆ(@õêÝžýíjûM8»¯4à.— ੱP•8¬Xqáøuïð379ç-°Aò šêM£³Çš´Ú®w/ ŠƒììÉù²;S†´¦uáÕÀTz”ÑUÝ™\*Þ^åÐsQbD ‘b`ÃÀ¾U¤}©>ϳu0að¯yÃï×›±ÒtÃi39ƒM^Kb”§¡ó -ÀjoJ+~I°Y?ûééG_…“ë²à–˜„7J;“-x;ø°ß½‡7á „HPïï”iÞ5Üü:cô*‹ÆÁCïèÙ<‚‚@W»[RÁ^ªî\«Ðr£@Vá–Í‚‡XášU#0ÎÁ-ܗݲYâ´žìÒ6)Dl=x@Z/Ú“áÏ!ýÒú° ¶‹\S®ºËOÚ“+è/ 8!Þüñò“¿´f÷P¨ieî§÷Àð÷Åpó}÷‡¿Ž>x«)dõ=Òªx«øà#(ï{ïŸ=ÁTç÷^Þ¾…èáÜê`ø¤à•…DÙ>Žf¿»ÿüo~ÿÃJ˜îCÇgt)¸/•¾`Íäú -žÁèñ‰ÙÓRÌ{ЊJÚÈNGÇŸ´$ùPï¾æÍ¡lODgLff,Y33:†]Y‚½ê.»ëß÷¾ðG·p!Iz§ÞX„½S»“–•Nž‹xcl7¯[ã‡Zëº}!0‚u{þ1x…`Oöä¼L kÈ@µ)1Qïøý›æÁo $%—4XµÅ©<Y¥•6øL8{½¾ýv´ùÒŒ/I¥Ô¬I™õòpG8Ì -’§Ó»ºxønpú†ÒbÍŸµ§6Æ÷?¡=,òN‘wMwîwNy-3O¾Ò‡´oÃÉ+Ƙ€Û°F|@wÆ¢•pÕ.g$Ð2(ÖX« ‚–Óâzc%U»¬ -]âlQk›î¬ÖXŠµD÷gõø²9ÿ¸1¾£åf4÷(“ÎÒ{•]^òŠeH¢ÑuZ°ÕÁ‚SáÔ0JÎÀ£Šd¢Ñìú3ØV0ŸÔ¤ÑZæ‚æ>+ðR}iD—Áø·ýo¬&äçyQŽ’Ó³û¯o‹y¿ YÏjCZv»x5ÓJtOÃþ¦Ö:‚�³KÕ¸êæ¬ég«ë?ñFòì9_f]ØNª¿(ìWw -*´�´Þ…ØžnáýHJagñzóðÝè컳Ç5ÿñŽ°ø/à‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨… ‚Xj`!¨±øû;B“xGøõÎŽ½9¬/·ËÜÐËí˜>?‡óxy½M¯rÍÜÎ|ß¼ÚÖOÖÛ“‹Íòê¡ÀE2±§Ës"ÿ4“€IDëêäèdƒÝõò<-%˜ªÂ'G4A=þ _åÊ¢$Ñ$+ŠŒÀÐ4ÏI„(Kɱ</Š¬Ìðñò?Nâ8’¡dQ$Qbâ<›ÄÙ˜LQpD10I³«hV¤%ŽæþˤŸýÜù/YÓyî87ÈmrœLäÄpK~tu“²ºYW7×ÇíåJ²y´R¨ÉO†óÉf³|™£# J&|†wÙAš»ùiÕ("€ƒSº#hŠˆˆÉ”"³ùq¶z™ÍVL?U -% -OçáÏY&û˜ÿóóÇù›ÿ<|}ðÃ*èlÛÃ99O•§ÃGqÿÚ+P -X›Û¯§·'ë4v-bØÌM`°ü¸_žþÃÙcyþéNÐÄ”`(4 ÙåÇ¿è‚l=ß_ôý·D°°FZ|\.GdR¹Çf»[!¸‘tnèÿJª&´Ò`õH©t{¤Y©Òç´¾\›kÞR±Æ¢Þ¥E_1ûv”Þ\w8£C)!\ÅWb±Ú“« §††Ý7ƒ™YTóWª·’í¹ÑJTfô¥²‚ÔzF0¯µN*S-HeoÆš1)ùNge…3¡Òµ‚ÔnyÉ•ê,c zkÉ1j{_ô%s¨ØSÍ™9½—œ5È3¶øj–Aòž u¬Æ*H.«Íª7…åñÕøŸ�&‰” endstream endobj 25 0 obj <</Filter[/FlateDecode]/Length 53438>>stream -H‰UyoÛÈÿ&íë8‘ÄCäÃcx“Ãû%RÔeÉ’mÙNÖŽ“M‚$Û6›mÑíbE‘Ñ?úûT€DiæÍ›ßõ$»Ò£–ÕBvQûõò‹/vó yýجx½ˆgùÅçxù.ìÞ¤«ÏNu‡Ã5GrBWª7Š‘CFô$’(VA‚–Ð9ƒ<Ù˜(vËk¯•‚Q«Þ‚Ð ¬7Ã5|b§/º÷ñìIv–œV¥•BAÏiqí¦—c5ãÈ /Üô {‹±’s(”ô ×uÿN4+Ù¨Í`ÅŠôkŽq*jåéÑk#Ø’p§xÅ[ QÈÊ ÒkÙ˜ªÆÔð׺·DZ¥Úó±VŒP ’‘‰ ‚–»áÖ÷ØšÂú‘œ<cÍsÆ -+x -)t»!ÎLPN -°ž yãÙPŠ‡#Ø>VKÅîU³•È„•"^I´`)’rÄ[<Ž¡ÉáØ•ôZwWŠ½$ÞÆŒ.íx»:|.ú{A $sj'ÚÜÙùž“C^ô%‚‚ÝÊî‚Q2VŠ UÇ0?`RÅõÑ—‚Yqj"›¨fÆ{âÎâbÃJƒ\Ãïýò¥•ÕàR¥{¸µ,5gÊCóöÄ«oÓÕ{ú`çw˜nÆÖDqÚÇßf—Ÿd{"™7¿+V_Ãî£ê_ˆÆd¬ç¢– ZÊ« \MÐìtz�M‘Ñ0R8ûÐ6,PÝV§=²ìνâ˜-ìö_oÿƒZ0R;;Ðþ]µÿ9Z|Ðâƒn`ýòÍo›ïÿ&:SNŽÝò¾9ü5_ÿQ ÷Zx‰Ì)‡ô¸†âŒDŸs6¯dHËñgªˆTŠ;´q°²:d¶²Ýc¯p°»A"©`#¯f¬ŽÆŽ &šÝHê„¢ˆäre1išîMÑ>¾`!c°b�=é,¢pYÐ*¡{Ù^KFoÓk7º†]H+@êºÛe²1GFGè.(ï%³>cÕï2ÒJ3Øé•Q=ƒj"ãü9CÎÒ€Õ îŠøkÕlà\hC"Õ´‡|@`¬Â÷,0VsdwZ|%Y /ù¢’œ@à,™L¢æuÒ¼'O&½(Û׿üúŸã»¿ÿî;Æɯ§‡¯Åö“ï89ù¿‰�Ì‚‘ƒ¢Œœ€üòÊË.ÓnoŸþéWW¬½]ÍîòþSÜÐÜ™j—¬èɤŠ+Õé%«ÌVv~qŸvod'iiíŠÕ[¿¹Q£^×:ð›ÂæÕöÕ/áä[µáõAýà5¯5ºÉ»=2k° eCÁ!XbgêîF¶:ÝYÉfÃÊT±jB;Ñ,e§¥Íãüî_‹‡_Û»ŸD¯Ö‚zvë«>ªñŽÎ~˜þ\>¬®*—ox=ÇF”·aûdå7²»VèŸÊάp#5x|(#1ÄÖ^AÉç#<lN‘ÙŒp2Tó±95v¶îäIú!rMº›@¼zÎÚ€-P&àéÄ”¨gH/ð>ç,fìB,ˆ8¥É¥E×'ÖX{È;ç#2`Ìgð8ÑÚé- ¯ zä~v;V@½¨2tBfª³ÁÎÚÉîÒù{Å›Ÿ1ê·d£ÒÀŒî\6p.#úN‘Zœ½Àg™]IËU{)[P‘¨–€ª^@V8t>œ¡Lµ:€]4Zäl1Á@ -©ž3:‡l4 ]X Ù½å¯iy?Ýñ§Çߟqvz‘´ßƒÀDÈ=»‡4¬ÙÉ_蔊€€â¶ÈžBòKfƻ˗ÑÃÅXË°=3ü•d{>”(8H³fA¶§Õ ‚T׊ß+ÁZvzÝ_I?R”Mïgûéô˜ÌŽÞäZWVvp«£•ï5‰í®îŸ¼ê�¼@ªCÚÛñ•â, >D+‹c0>hŒS"v^`ç¦G3¼Ô½,ÐÝŽøs3ZYéÎH¶^yG»·îä•ìÏ£Ùc4{ie» :èÙ&[Ú=þ6=üŒ½9«&pYšì QÏyÎõ²c±úSÚ}ðò£mU§ƒtÂN @v ÀÎÈc"ê¶[”ƒÃœ‰ÀŽ½!Á5}„°H•4vq;’¢àƒº4‚e&j9"'%À+L^JŒ1F!BP×€w^iV“bÈ{#²(%|7PF ½2è‹3FJàá¤TÔ'&Ý€÷a¶;œš1Jz²ÝéÄ둱’ÏábG"¥¨f0C1©A´¬Œx÷| "u0BîÁr5ÝEZãb’†æ3ˆr8‘í…™¼„Œò˨vÎaPïùP™ûíò'»–œÅéÖŒ)h¾j7F°: ÊìN†@°:Ùšy1ا9özüòUTß™áÆb˜íÛýWHià\C‚…A·àSÝçÎýü&ë_KNó\páâÄßXá´ -yÅUÕ>|ûößû?ü[tkѪôøÂÌn á¼Wo>ñœ ¨%¶FttË×Nñhg÷Vz¿ÛþÿH.óå¶Í+Š?Jk»âŠ}ß— A‚«(J¤DImI¶ì$N]×íÔMÓN2Ó—è?yÉ(3 )Qø–{î9¿;'Å5£hµÀOÉ™“üÚÍo¬ôÕwþ;ߦõ·U÷Åösyþ×âüKÄÕÝ/¿ü^wåH°'Äàd±Ã §¨ZÀ Pò„ÕJ<œS - ŽŒ¦sê?Q2%à8%ÚVµ}11:L¯Üôì„ÀDœ6µw~yïï¬x½A´ŒÒ„4ïu“âZŠàö68Á_)FÅ6I‘À¸àù#d_:ŒG ÅÇ– (+L»Í˜/[<ŒâCVLñ{è%@•Á -Öî"§ÌR÷—è8°þŠkçäXs¦P |@ö¯Çøœœ©FÍ - #D²^vh&vÒ3[ø>|µEÛº¤—°8·Ö4x-cçÉ%.Í Ð™lŒ:”~Ò‘àƺSõ¯Åù-– a—_û‚£X"Þ.â™NãºÃŧáüÀ•T“Å1_>è Ù®d¯Öƒy4ÜU«§ró#æþ`ãÄk˜ž`ç€/?›/é;Å]…È (3Xãá蘯žV×ûǯ¿mÿ)ù;Ý:ÅSÜZƒî`5Z¸µšŸâÆìx¯+f´sÓ¤‚»ÛŸÖw?ÓÚ˜Ñƪ¿v“’]Úh„ì*›ÞÏÎ>!¾{l+,jgûdöTl>{%¬òí×ÿ¯8{jñ>^6vv b‡Tàp�Þã}Ü®X©:3Hq–º -[F!ú¼‡¤¼bãe·Åò{7Ý¢ -Š^‰æ„³jë gè)ÕY -ZÕA´QZŸ³Ñ3ëîÌOÎàÔ!k/ºàõq—ñmµtYðjBÃÄÁ|€àSV‡?´{§fp³vßé2°8„zöPÔ—"ؾâÌpoسá¯!ÈLhònf’5œ6…ÇR|€ýsrN#ìð¾Ä“VO…u(ùýE?;ôc¸L -Áða÷Ãc5…ë¨ÐB�ÂQU´ª1l³žìÖàO+\JV‹‚çKÖNäv’ëâôKµÿ–¯m² Ñ|wóeqõYñj3ÚXɆwÙäuµùè—W=!"Ù…—mqœlúWïãê =KÆZ°†¡¹þr²ýHk F$Ã_U›¿,®¿Þü¼|û“=ÚÛƒ³ùÕߣù;ÆœîL#ë¸~—®>å«ô€-¹Ù…hW¬Vð&ÌdOî³ùÇÅá[¼øÀ˜3ÅGÚÎ1”YÑ©Žnýá§FsA™v²ù#³’éãêæ_QýTÇÑö{„;&¬&Ëlˆ3íJ!êײÃ-§—”:õožMŠ?ër.*¢º+x„ˆÒ°ûœ0ô²dNTÿÔx34‘n7emÑNõRóÆO”¯N{BÜh£ÃØÀx\8j’É®¨ß;ÑŽUr<a¤:Åž¡d¢–3È_Öcåœ“× -,ÁŠ‰lN F�ÞÍ ÅÀ—fx-qZPA»AŠOËÁZ$;4c£1êê„ãdŸ#P|P‡÷pBQ+áfmÚ~fxdqˆ“BŠX‹BKˆ'Õ¬¼pòlQÔØ鬚¡²˜y)èò>ÈA4ó6%ÿñ‚E¡,²r’3عٷŠƒhÖ8ˆÏfçŸ0?â±dxÅ™LÌh;žbÛÑè8¨qºbù^©äT°êž2Ĭ0HÆw~±ïË¡êOhí'=·òžJþ"®×Çÿ$³æŸkÁ©W\“¯|ãä·&0¸8ÀŸP<ßI¯Èø•p§†{™lúr³…Š°aÞ(5ŠHÖ<(Þª^Í*–Ó0ÁyµL–2YcæÕÉ:,îòù«g‚U -Ö/˜C›k Áá…›´Â‘1Fé(‡ èW n†!�÷"D:} 1¡{k7{ã$79Ó›”ŒÚ”iÑæ ¥¿ì*´œËÆ‚ÓÆ0m<¹Çû˜”âÃÄÇÀœ–‡´œap°‚3¹n|¬¨g¯:"€’ƒŒE½’Œ 8AÖG$:ã¤èe‹Ã_á9 (,º°MIa0¸"éÂF†‚™Ÿ3½Fâ£^˜±m,ŸmJ;éª�9t¯–’Výî“‚ž#q»×H2‹a¶˜FgËÇû÷¿¶ëEKèÒ°-Ì/I¾–Ì6ƒ/³Ê�ºúÃËv¯/+v…¡M€‘¢U`Ô¢%ÂihÕìÃìÒÏ.8cȪ¹›_*á²/y’34ÉÔ¬Ýô<™½óA>z†páí xµÖÉf0yÔNº¥äX.¹•ìMX3½)&8+;›¯aýdçW¢[%Ó{È«ˆVi&»ÁòÏ£ý7§!ð%‹y íMOvz Õwüäo²æŒ»Ê¦Quìa�–p’9U½yïy‚šñdÜcm;¹H–ßùÕ[-Ú`ð”ÝY_M½|ï×´>lqÔàD÷‘|›Ç±áêÐb'”öªÃ7LË8‚Útú±©©Aù´w9Ÿ‘RÙ˜ÈHCmÿiQb¥l¢ -e¢íNsí>¥Ú /ù¢>Téó¬T`uƒ,1¾5^Áà9«Äk¹adç`~Œ¨MR.àc¤ðÅ CÓÁÙà-].À¢ð:èÜ/˜;°s¬zDk�#%£ÄlÛÁ@*Æ/ÚL›VA¬«VŤÓ7ÀöˆËÆm¼:*¯a¼øòI_{Ù‘à`HÕ›:ɳâÏgŒè¶ûB»Ë¶{'ňø(ß+F*ˆ^’o@˜Íø !|cü#˜©Ijªi®�€Àí‹PòÐ\èÀ*9 ÃBpóÿ'¹ÌžÛ¶Î(þŸ$UL‘±p‹}_�Ip_dI¶,ɲ-+V¢ŒÔnš™>ÔÓ™Ìt{Èäµ/}nÿ½¸3½ˆ/ïw¾s~‹ÙD,Id»m>¸£š3Ï7‚‘â_ ¾*‘ $Ôç¯âéË`t:ܾ¥éÙ IöRÐ+É©ÇÛ÷㧠-®7Ü�¼ãå½™? ¥ì�KÙö¦N³ÊŽ¬œ6¡£fðÿlú …CúùS¸VÅJNpÏà–¬zUn¾7Ó¤eÓý;grÎ(.#GÐ!„ -*XžÿaqùYž†óâMàáÁä1ê.Çõ[@Ó7û²§YU›×°éœ�dŠPŠ5¬'™²9®‹Úh yŽ„(I€ú(hÁ D¸ ÌFËê5ÜeãÍvt†(-HVS{ñ†¦ "m¥�©Sõ•ØpªrëÎ0Q-P-p+©cQðG¯›îœÐœ6¾›¥ú <y¨û3žD=|è÷št‹Áðøjd1+Z¼äâf òk´:J§§álP/H>.žúüoÙ™´º2äÍöqxà_ˆ(ì)MÙœïï'o;Œ(¨å-§$F)~QKSBíÙâé±fš]C·’6„öŽb £ü¤Û€ËK‰LG²1Rí‰Ü&¶Wo/?Zéæ˜5€"ˆWl.0¬Ú@pÀånÿÑ‘^P$©3Ó½…“ì -¥rswõþ¯Îèóå€tlx›dòfwóKyö‰ø+;ÞÅ‹[¤ŒpkÂCª—ã““ÍýxzýðÓ¯Ùú樧Ÿ¥f² �øù•T«®OE«f„�Ì€àwEÅEX^"I-{q¸ù™fóo:–ej%ÛýË?mß|¶ŠgI~zþúgŽFßtÄc†P·†ƒ!_Òò -a`;ˆ5n1R—×ÑõU°3Ú¨îd Eɾ] RÁŽ:¦�WYºÉ3Ü°j•aq -ßxÒUžtävOE$Á¸ÐœôÂðÁåÀ,º~Âð.<G"q¯oõ±°àüd´¸ìÊ–E6§0Rt7Øn`:uº CÙºáíç¨óð²YÎßS¿FƒÀF`*¡2Äý�Ρ^Ó‚lÉAZ¨¨lßm¤ÕX_lEûïþªËëº>B±m³úñ—Ãó -Â¥.–·qõŒa‰®Ç–SH$l÷à „EŸg ú&Á99D«ÅÁsløs/ÝÁÒÁ})#f¥¹ ~©îÔùôfñìшÖx?1ÅÀOF\Âf¸¥htvýþoMtwæ'Ã_©Îœúâ̈]-w·ïþø[0½Br᱆· -’³¸¼íÌ섧9xÆÈ52ÂÅxuKü%< ½ÕL‡ç?þòë·W¿Çølo…u@”0ÛŸå-Zd²þAò÷²V…é³&wä@¶*Ò´€Â ÷ÉôZÐ’6¯Ã…ôp ˜Cx/ æª7ÛÞýý·ÿ¬a‹QT!{¥¹3ÜI‡wQU€jÉôB¶KxŽ‚L§±J„žŒŒŽ/>üù_¢]¶yK1'Ø\Ř֑ƒ¦òÙå·ÿÜ^~:êÈÇŒÄ ->Þt1ÁETìÚŒ¶Š3×)FÍ‘a›¥=^Èa£C„øøŠW]ɧκ:æœ -¡ì+¼¢ô$+/¨=M^�,a;Ž$H¾¢åš5ÞŽ¯ÆXsØ7p�ð\vÌË0Ð(ÛDù^VU¶êuãö°¼HÒKlo ϡ̯ŽºmFêËu¶¨Ÿh Ã""Xt»¬ÖåEo¼OCÏ•-”‹¤Õ£pc,¼Tµ¦:hº‚€!cAô°°¸L?Þ•‹;§¼Pý%¦†Íµ<�Í@T¨i^qf'{;ÝCHéä:[½¡áÒð—È2Í_˜Ñj8½0’-£¤hLÍùIó¡É*õçv¼¸ãÉi3ý‚‘cÅ©ãêzrúaxòèÏÞ(á†kÜ~„€`ä '‡4Ü�Ôug¥/$w›Lï’ÉkF´y5¼p¦ã(ùN.P�9ì¯>éINÓœZg±þv¼¼šn_pdš{ɺ+6§°’‡«òVr†ò%½ì¹lœìÉædz“›žä³;¤yó£D…Çv9µËQ†7úrèd‡ Â}:’h*`&4 h…¢WM¹Ó@×#8‰'÷Ä[!,PµUˆÅFœd$ÒʈN³åƒ…Ζ6JØf!82ID9¢fKÇ ûp6ŠÇ6ùúÚñtfö“§šY=éˆ,g¨~X±÷ÿ¤Sb zšWã Þ¶›Úhv9/dº·Qì9,‹`¡ôô˜‘Þìòĉ샖¼ø´©“¢E‡ãýúH`X³ùv@¢áƒ_œÐC#@cñ o'ÑG…ñï BË0&0-‹*Š¬ÉŸ;ñ^Òs¨ÎîQ�qó’]¬%q÷YýPžü”nˆ[CZÄ™Šz#$¥‰ã±@«1aÚŸš“ Ù÷ifÇ+7ÞÚ`øÅwQ}«øKp/:£îðìµ3¹Ö½Ùâ-ñqâ®TƒÊÀª¾ØÀá¶Ú»gݧeO -q¥Ä,;0¾C0ÂS¼gMB�^Uw¦§ÅŸÂ¾Tg˜sp5–ËHL u+€‘šÉ+q7 ä aÝ�<&KÃCpŸ«Î -Æ‚+Ežö%úiuûHO(J0PBk`!˜[ßÌT°{¼lFlñ¨fΚú‡Ž;¬©··ÃƒD3¸SsWj€ÄpUo=ÐKÝ]Eù%¢åM•DMûOD~y„”lL '<ŸmF6E+$�~/ãì~%ʦyt,|õ»N«« ÑòZ]@l€M¯PI€š¸¢CÑM n -rú?–Ët·môŒÂw’‰-kã&îÉ;%Qû¾Ùo™8 gšt -t¦hÑí½Ý>t -ð—-Qä÷ž÷œçL×’á ‚ïû3Ë›O?/ökVå‹Ó|õ•¾ÙêzÜö²ë¾mZ@>URø]Ã¥í£ò3Ç´1®ž9ò“žFÎdº7Ùí`öÔá’ü´8¼Øñ²md¦ØEÃçbýËôük¶øääg<|º{ÁÇ(\"?åÕC6}‹›ºE’žûŸU¯Tì”!ËÏ»wÿ¬¿·’²Ï—ŸÃÑ;ö‘)Ì6ßìüZëÏ\’tõRÌÑ£ŸnÒÙC?=¦ÓgC,ek`†+b4¼³ÃeW‹à=3ÜhÞJë¯wªØ$$Š{žÁ^¾u²M8€¬ÍpT¤^Ü3ˬ¼ñÒUSõ`ždòѨvÕOŽ„o±|A3¼ö…ÞÜø@7tÂlŽØ$ ½7%[!‰œ‘lHOÅq¶^¸¦ë©æèªí `…2ÈŠ™CžJµ&ñðýpùœòë¤ü¾%Á›Š/cM鮯¢ò„‹ÎÀõ†qºïÈn³cÉJeàÜ5ü‰*ð^~ÈOO–¿`@R/7¹,oáù;íÍ¥üæ¢+©aW.›ÖÛ†ÞQâž52½©nÁx3X1úF×w£ƒlì`ïŠcµþ”`Úu5~êòG0 Ÿã¯|qô‚MKòy#’ûÒÌÁ`þ…|Á¯j®«ëˆð÷%B‚oÁ:pbDä÷ - TÑ’…f–qù�isÈ4M??×/(p¤´©…#£gU»bkµÂ¥L_oÄûñ6.nóÑS:yôÀ -*¬6ç oQN<º/fïãéS™—#–ª‹ÙHXd€Ö>ºå½éþúþ·ÿ–½Šbˆ¥@;yõØÏz]Ir6b}øÂXe³r“ÛxôDïÃäûÙ®)J_ÿðß/úÌ:jÒÑ2^? ª$‡Åòc_,M«ÙA²²†êuŒ5–ËßTû_òÙG†{@¨4Í¥VlWå€ -¦íÏÂœÿƨ½6$ZÜ&9Ó9Њ^0 Eê%ËkK³–ë´£³JËÕþwé`§šøçT¶x°TêAãVïø“,Û–ÃëfÇV4aÀNFMS\ůXÒá=ƒXÎTD§(½ŽŠ»@œ˜øE£wÕ²ùJh´¸C®õ0zAÙc1û1|G.(öØðWª;•Q»WJÖ„ùÍðÕUgUG€âTÍŽ£ö„Q'òŒ‡áWê·³KòÏøbé…–ˆÓ�!p´Ñ©»FÆm17è uA…ºP¤´Q‹ƒ£ š.Œ`ÑR‚«®Ë ÉÙW”šØц3w“c8¸“¢£õkòï³þ+*2îÕ>¹žl_DuÓ€OüyR=$#b¡¾šLÏý>ïúU˜ÖÏ�2YbÏ ä³«»_‹ã׎]b³ ¶oš²ßܦðI'¢¢U‹ß[á¦'(ôÅŽ8ñv¼ûróño‡wFùn-‰…áŒú¢fÑ8=ˆhÇÛ|tÓî¥]™¿`8pô“Šê.âu(¿Ÿ´ÄJ2R¦Ù†ieÃGÒªSQâfÇŸ9IÓ©f¥Y4LÐPú§Â$e£ 2.®Ì‹¦NÄð1‚#ÎÏL”JÊgþ½§XI„z”/#Ó¬¬-9o¯EO0[&„X…ɪF™dÇlxzMg“rzye´¤ -º;k)uÂ~—R³e"Q-±À„`«ùë|üÔÒâ¦Iv¥û+VR7Åü9Ÿ¾7:ÎÈèÏÛ²ÿÃ¥DÔšne؃Ž)zÎ…é]Þ䀦 X,‘í3Åû¥ûèÁ„Þ‡ÆÈ5ŽýÕ²À³1ˆbe=ïªÐfÉzòu3^Kdh/åíÂìÔsÇ]=*«Õ‡éñëpób¾v:7\&£ÍÉÍ ²ipb“•“õ— 8Kîoœ¾‰ÁIsØ`&æH÷–Š9‚¨3A uS+Úzù —ïÝX:JT9ñŽè‘ô{ìP[pNRÞªÈ÷hpoKæ¨Y5âB} `°þT,žÝø÷¸\£Ë:ûÌEdG‹½c—=Xz¢ûX5SÛç ñ€–tt¢ƒÈïDrú^Iê…z}}z¹£Õ›úé~súrýá/ àYÆJ(SRo€!èý…êŒÛJÔ•EGªùY `Fh/Ü X6Ër+ÝÊðŽã'tgˆªÛJ�Øc€úUÛ€âÌþ’nËí· [þpÙz{ÙíIW’ -¦µ!%³ã‹nWñëÌ20FáŠm2zŠ…xÇ8²À-§ât‡–ò´ºO×Ûõ#0iHªúáÚ¤¶,DKðá'µxóppMüâ6Ø4Äì,ªÇ¨º·¢u4¾Ë–ÏÉü'²àAZ8I?;ôÓc’Íú/à.Có'½`çðßdüäg‡/Ïåô®œ?¤“'7»åÈÏÙøÞMãÍûñæ³ÜzÑ&ÌO]Ÿ]§üý§ÅÕéhê³5¨Ku`p2¾CÀþš‡„ššZÖÖ2K¬y\ñÿlŸž£êÑÉö ÉiJŽT×Û-1íg×¾—\#fR’΂]ÃÆÇw?<ý#}ð³»W_B¢…jåLàþ¬wp¢#,m3l³ÁÚÚlïxð”ÞéðsŸ*7³¬À‹9d¥WpØZ1}Lç?5”ñ#–ÜgĆˡmtoãÄg+>àϺ5êj(§ßìxµõq=ƒ=,Ÿlª<±ÊŠ³édJmks,±-²†ü"‚ýd‡´€ó‹†ÂAtüöÒ[ð£Ñîu$[ˆ%Dxq[/Ú¾’d2`•xeZa[Ô8àƒN9O|†Kq&8Æ›íòÒà©^çþ?’Ët¹móŒÂÓ™:±%™”H€Ä¾ïÄÀ}5QÔBɶlKrœ6MœL2™ÎäOÚ?½€ÞaÕ™o0$òÛÎûœóú— N al -)PñCx°TãkÒ9£#Þž˜í-XªþÔH×MdŒ>kMð^Ïlo—ïêbqÊ%5.®R”èê|Ze‚†Ò&8¯Ú8p|k*$^J)r…©ÙcÑ™²ZGq†Z°`´«õ4$É“Ïqï½äŒq_h!áƒu!ABH&ø"äÌîQÓ~¼DÚu!ñ k¹ÖŒ³gu!C&9¤ß3 åÀê]RÊN¨ ƧŠ¿±ó[RËOž{R>”ù¢"C¼³`íö¯ÇÌl´Ã;cÞaµ/OM°±Æ&”Ò嬃«Öa‹Œr¾F´k¶ÔEs†½ŸqÄF4mA/h’î4…ü˜tªLˆöÆñêY?ð\´NGuóY]YÏŽH·B¹'¤þò5:‹èì ãV•ŽŽë!å‚5EjŦU\SAW4 ˆCǧ*à�’°b‡…³W¸C©›/a©U¹F4_g˜;ÌžxZW ¸j¥n½~>¢&ŸŒË -‘æôN¹“S½€¯pÆ KlŠ·Õ¦Cò¡d‚¯P*”’{„XT¹ø”õ¿9¢Áïù–DjªÀÈh—–s5ØXÉaðÖ}D©òLE~8ix¨\ÆñÎ$ÝiÙ3â5kO(µ#{³VyÎ>ÅgH!&)ÇN7Œ9¨m(¤!·…ÖXv'¬ÙU£…þ¥56³-猚rÁYc½½õï¼òJ‹7”ÖkJ…¬ìǨ=J. E±5Šo9{PåBB*(sʵV‚·fœ9»åœ±Ý¹ ¤ÄH¯ŒÎmj˜ÝÑZŸR»X@M1ª¬GÊðÇXp†°9=Ù©á9gŒ¹K‰‡Z¨4½:Ÿ¡G@ËvL§¿‚r˜�Ã>|au¡á#í3Æ«R& -™U®qc{ʨ]3\©þœ3û´’CØgBò’t -h;\Kþ‚Ú‡®õÛ´ 1i¨eSƒÌµhE뽦š“rÜcXC]ˆDg${F�›¤Ü©q!*¢JášL$vÝDÓæäœUÊáI9Î!vŽ1és"…¹#œÚ3Ü9– -Ô^² \©Öô(¡Ík¥Î[ÅÖLßhñ4_=èÉæ”+|õ®›rÉÝV0qâ©t*¬Ï;#èçÛŠ‚¯"¤ôì`Oöq™S×üAs5æÍ."´ì-e#9kÑž=¿I‘´á}<ÊĶ‹Îjé¹ÝÙ ÞDòœU(á$š¼f¥`.¹#Íö7_$oJŠ©`0°B%|÷F‚;ìaÔÛçËGÖèžñ)Ôh¦[èªU^Yåž±æ¬9çŒ% ÑÇ‚fº6’•,jbZa|ÞÅÿô½mþJmßèÙÞÊo•è\qF½ÍFv}L{•Ù¾1³[%Þ)Ѧ©„2^S…¹´à¶œ–½}<ùàuoüÞ-˜\aÂ×MjgôaGCLNHíÛQMƒº^ªð8ú‘3ÎZÉNtg¬Õ“ZXäŠ3Ëçsö”ÃS —Zºõ{o[ùµÖ^“FùMMÆ!3Á™B]xÖ¸�%f%çÝÍ÷îàNVqm—{<åpé îœüêâÍ,êïÒÙ{'¿@ËCŠmÀ—Kë…âŽBxôÜ¡| -;€yg -`v-\ÒjãÀD8̆˜©Á2›=&óGÚ5 ¥¨c_hú(³)Fj8gïãùCÿòë§?ÂÙ#Š¨ Ÿ»0+\æÓGp/K˜ÎÿÓ5¼˜Ñòý%gõ[‹`°Çjµ`T¥l8|„Vº5.¥¤R‹×Fg\`„€òÉ°H9˜‰Á%ZÙe8¹O—J4V¡Sœ›ùaؽ+5^´ºWr¼äÝ1ï@´u¼Ó“ü©•íÂþûÅþ·ùݯa¯%k¶5á¡/ô'yo”’ùOZ|ÞCÁÌ >`”Lç°c#¿¡eO½ñƒøà�üÔÛ×R´üµä-ƒ|7»ýUM6¯.Î)îÌö•ä.0×mÁÄûj´>ã½×M ê5â©Õ^¸Ýöâ”7\kÒÀýy…v‰g䲑ç�t…lyˆ‘§]c¨o·áä“?¾÷†oƒáŽÛZ£†Úaœ¾-•x>zý·ÑâAçèz|ˆnŽàcÎëñ*Úë,¿¬>ý‰ëÙӽ5Ú»tþX^ÿܽþÍïµdévVӛ立?›'ÜoDÁ»LaÄKÑî·û{ä[BH°xÉŸÎÌ)öåæoÉâÑζÅò£[œW”R=\}¸ÌCuÙ#x·¬ %9ªñ”’8Ù¹‘.£ñ‡áþ·ÕÓŸîôc2~{óôL¤J§r¸ÓbŒ‹°ßÛýb•wð‹—§Ú.fêÜþ™_:½»Þîkòæ; È+¶ãõc `úMDkŽåŸ²5.z“ß¡@N Lðåù×ÝwÿùôËw~¿|ú'h¦ÅoâÙ}8ÿ`•»dú~z÷ûæó¿ìî5m´ÖæÌÜj¯Íö¶³úRnÿîv¯¯¾ü»{ùÕêÓf »Å6ž}Ò»÷öø“”]*é¿’’ÒPx³�XÒÍÉöçxû#~ðúïf7_ýþN'Þè—[sâæÆ?O“&ÝÙ×öÚ`ÌA‰“ 3 BB„ÀœÆÆÆ^cc¯{íx7{Nf’f·™¤ÝÍ䢙éL:™ö¢ém¿HÿÎ w½/Ïá÷46芗2QÆŠ§[‰ò^4Óu…A«ÚUÿ¢;¾†%ݸ îg*QyHi{v”w`œÈ,:!£Hž†FŽçG¤:Lê¹:ƒØ‡'¸p®Ž1ȃRÆŒ>ÅÅž ¡+ï;g `ÍÔôÑ%°ÉÍ^sBé£ÉuB]ÃbÛÓ¥©+”Yv„mîÐ,@ìªGÀHS´¸â6U'Y,ÛÙ_„8–©”ÞYyûquçJohÕÉFÓ-pàŸ =1C¬ž$àBr}ysþ�aî¤M`L™Î¤êaªv˜(í4÷Ÿ¦‰/ž_òL�Õù…]ž¹›/í/xÈ¥5gT§ŸÿtaÝr¤2ȯÔÁe{ÿÙÍÛ@³ Q3ÝxLd†ÐŒ6,ë‰áàä+U/{oÆ‹?ÈiÁd%œîÄsC”µ–ŽÎ4ßýô¢öûw€T³Öeê^ºN(,Ù†fol]ø’@žžßÈŠVwYm*Tyc{°ÿl|þÖÉE’u¹qªõÎÔÎiÊš*ýK}ûi¾6{þ§_hmhó±Þ ò[|iš4÷3y~ðX4w*ÝÙæÁ3WH}xWw¦’ªé;/Èò£ÀAE$–^rÇœ€FL%nÄ]³¥Ý�o¤ÌADiòÀ 1‚ÔG€/YSÞ¼úHg8…WXôà$ªBl¢L»` øS‚l>̪^Bpe"Û‰HM6?ËãÖôI¹æ‰ä<!)®ôsª4Ž…ò£mÙ!)¨ÕCýhqw`,H‚/Niu^PZgÅîåìú»teºà¢@ó(WÙƒ¼lKÂñO`öŒ‘ w"&ÕPÖˆHu?W_y Z"^˜HU9mO7Ñh2úE4QRŠõh¶ígcRƒVA¡yŽ²e¡4¢rM.Æó]?ÅÓVÚÚ#•^8iòúàâå{¨Tx¬R?Ò‡×Bí˜TGDªî«ËN.™ßjí½"3¥u‹ec ¶ÕÞ‰Ô8-n¼1#- ¢ï9 =1¾•m]Iµs<;•1žé„x“˵Sz÷öÀ][hÕ—rÅKÞÛr·p¡ làÃ%ÉFSµÛRŽ—RM4£JOÕî¬bÀf+HÜîÁÑ&Ä&¥Øâ¥O—]Tº½œ`Rcò¸ÜÂÓ›áDQ7·Þýø¯„1¾ïŒàœ¡6¯ÕÖçJó"ß»I ±ÐýÕ‡?üÓŽrr}¦ ?O7ÏùÊa®s¡vƒf'¯¿øöç Püh%êT~$·æµ½g©Ê^qsúÍ÷gõ4¦`Œá’©Â¶µýdïâ»ÖìÏáTO7wÌÎÜ’"‹Ò·¢ŠfûRmnî¾n}›²ŽšÃÓJûÀ šd`ÂÚˆPJ‡ -¨î¾¬î ±%è÷5”‡'¸p`¼Ô¢;qßÅÉ6Ϊ7ºŽ1¥ÁW ¯6(@P=Sœ\½ø ÕÚ°„P;g‹‡`a¥óeÎ=L¡«k¾$ÁÖl^ö+J@ÂgÆଲ}i¯GTØ,²1¹xþ“;”ˆ -fÆÚO[GUô’:¼ÎâL<Q qå{6l‰…¡ÂbÇèží^¼ÍZíÁikë ‹Q¡D绌6VZ§ãÓ7Ÿ½|ÏdZÞìúÍû|ë -šhÙ͸ñB\ž&*ç‚u¢‹áÑôø&–PmÞ(S=”…rHªS< -%g} -[ºÙŸlúâ2Ó<ýâ‡Îôja‡ü„¹Aj"¿æVß+“Ãׯ>„Ⱥ˜ÒäQe[n_Ýw�§‘‹ŽðòZ�)Ûœ¶•Ú<‰ƒbÏáa•Ò£²Äbã™– 3å±Tìkõ©?Yr£Q‰S·Yu—·-F©‰|w2]ÛýöÂж"é¶P=‰Æ(_ÅH}öüäæ-Æä?º „µˆ2ˆVª>$ó]³uøó/ÿÍÕ|‘´Õ?ïͿѶnÊã›îìKµÿÄKhž?~ù�¼?Êæ·(`}+]?á͇ˆÈçµÁ‰# r]Fß <ÕäIuòJj^¹M£yb¿»ë€ÌÀs†ó¶@f©'bÐr›Kb¡kÛ |±œŸ«xbB�ÉÔ¡‰0ö–»„Ú!ë~ÞGª«ÁÌÇ+áOí±õ°•ú÷Öðeg„H”ýÔÄn®yˆgÚ6Ö†$“rÿÑÓ¿¢”LËuµû(e`ÉM°3é*š´D8Î[Ëîˆ7’¨B€1ýt)ÈèðJX\4ö+í™',ŠÅq¾5—ó[Û6ds¡/ßüå×ÿ¯¾su׶y¹u¿²!äIDû¹š}ƒ=¿úúûMd«, @Ågœyœi\Ë'^ÒÌ3Z'°Â`ÕÂ>]H”¶Ëö2ÕÙÅW«M®Ã¼Á«Ý…ßÆ#@¯= WpÊ°½÷E}t‰„$QïÓJÓŽÁH䤕‘ò`Ù*Á•W½”߀>…uæ"'&â´±äÝYv:tLªÈµimr/m˜ðÉ¢÷ÓEÏ -BؽQ?©DÅÿS\¦»mãW˜"qdGûFŠ»H‘”HŠ›DqÓbí»dË–lËŽ÷x'ÓL–)’ÂÓ)0Óé÷¢OÐ/}„¾J¯~ ?î½çœß9Ð;çÎôºwôaïîï¢;'E׆ª«7²Z}ÿö7°k«Ùä.Ek!•ZàÌaš-£¬©ø‹Òð²ºsÓÜhì¾eKtV–+]½±WêŸ:Ó»òèš2ÆH¶¬ÙØ]$#qÅè‘æ®äµŽ7½Â‰3ºÒÛ'„è¨þŒ·¤Ü Š-øR¬ ®žÀ•«û¿ñöô»MÐä8Šçp~‚© lYq†Þ`F«}49{òfDû°½û#Ü-Sê»ý“»¯ÿÂU w�ì4E¦'¸ëÒô‹äl&y”-•[‡ŒT3›GÕÝï›Ë‹³Ÿwß|ô.´ú!'WÏïŸÓ³ "$¹ -Ü6&ns¥=ÞÞ+õ®D{Nå“«Ï•Æ–ÛúsY@rAy1»—Ek<\¾7š+Ñ|†4œ·aw<Ø{g]⢓¤„1ã¸,˜#è�„ZãPõv¡h@΂۞ߔ—Ys]ájLKeFé PÌ~Sð|ÕÕÉ7½õg7õÙ£túâîãï8ÛV» -{ú0~ûËàø“^?D³•Ç/ÿœ¬n¡&1C°–¤è¥³ZÙ€ú\xd¡JÃbÜæ7œ uZô«ˆD uLîÐúåZPß²ÅÎf”Nù‚Ù(8ý‚3Òš‡P‹ÀêµÚR²Æ|±ZoïÏN¡óîR(Ô™b›7&,D³³„kÄò§µ}àŽ/íÑEeüSÛ1Æ€sÕk»q²Pò‡'¿<ü^ÝrzÞ_“AkPè6¶Ðpœ&y[ª@ü9k”÷w’9ÏÛÍÅ£Z?"D0ÆŸ~_ß¹·ûÇ‚ÑÄùR0ÍÂL8É¿ -#)•FÕÉ=¸vfj+ÑžÆð|NmZS±¼“檰#,ï&Y£6:N¯B¸Ês„)CâÒ6"uÒlþ‹SÛ9£A%»w>XÿE¯æAkv-y{aL‘µæåý“æôI¶à/î°MwùÓ³·ˆÍ[É×÷OeošÄÕòöÁðàCmt׎À3B]·gÝù]Š4k<?{j,>)î>¯x}ˆ‹ BôJÛKFr7£$Æ–dwž¯L›óÛþÑg*¿ŠÒ¢ì>ýúoÉèF¡Òò#7¥%û÷ÃÃÏ@ì–?¯1F1!Ž ÆÐb4-§pÁµXZ˜}P‡¡L!–£x1’QÂàØB›VaæßEâÓÆ/¶R!†ä ìAˆUVð–'Ÿ¤íEŒ–`L&§y}€±æf0“¡M¾4Û“ýo.R´“fÊá´ˆeM¦à9]÷§@&´ÑÏ{ûÎøZ²Fze¸>ÿ4Y?b¢‰°ºVÝmïÜwö0Úo8kždJ0O«¾Œâ2.³y>:þÚÞ{·ºþe÷â‰R|¿1~s÷ÔZBÜDP-Š€.Š½Pý5< ”–𜛠åP‚¦D:Hoý¹¹{õjuó[wÿ£áÎö?´v(¹ .$”‘b„ÊGW 'ÙPŠÅ93§mC.³ö"ÎyÐÔ mi›TOP*!¸ÞàæÏÀ‡Éü3E¼Ž3I\á -õÀVêÅ«0¸Äs}k8ýs`Z„)¥iÓ\lï<‚ -P®”n¶O«²R•àËQŒÇr–ìΨB -a_+Ø·ÙÚyG‰õh:PºRD>@õù -`ÃŒ/Í(¾šDŒ³èç$õÓ|3'`2`;ƒ/Vç4„æ"šfÃ)&K°\¡25+Ó -JMЛA"Ã9‚=)úϵ"“µ3,ìÎK¤…áèäöÃ?bDá/B¡(ŽEQmKæ ‰·ÂTV°ÿóßÿí®nA$…‰@†EoY¨¬Œú£~üò5ñ*ˆJW6‚™P’cRœ,‚Æ¥Z0šû'ïÍþ~ˆäPÁí~Îê’Pd'IIDÔ¬‰XF%•5`æ4Ÿ¦ TÀœ)ùyh‡—_¬Þa®ÜÅ$?+!¬–Ójf÷€Õ¶S¸(*¾Û];¯·â¤¼c žpÀáµµâÌ£1«uÌöYwù®1¿.·W¹R+F -éáÉ÷lÑÿÓëÊoSê(gN a>!TIR�Ç´âFS$';Îð"urò±»z_›\¬VéÞ>þõìñç(dmZ†ò8¡¬ñµ*'X¢Š‚Žp n›Öûxq@i½}eõnÒœ½• EZt¦tÞ‰dòÑŒDÅ{ç$i3†R^ „Š ÷`S R‹¢èP*˜âŒÆžÚ<½À¿›Àä¼ÖòçPa<&pÞÏAry·{&Wvb˜º" ׬Æìˆí‚5´Gçð64ç‚·„!wH5Ik1RåJ³êü]kï‡ÆìAo¬3¹z$£Âdà=¡Gy<gIî¼wòüL²D¾ú2„'©"–wpÉxãÕ¾æî™Þ’‚bK´è¼¢/ÉH§²8cìÆk|+BñRõúþ[Ùê½z•ÂÔGˆ5Z¬cl%M™0 ó,ûÿ§¸º¿šÊ¶ðÿòæÍš': B ”„Òn -é½÷„@€Ð‚¡Ä€€‚H•€ÀP¤(ˆXG¦D@Š‘n„Á™ç›wfݽî:¿œsÖÞgeg`Ir ˆaØP$qÁPXlšô<A|š0.M’“j¿žQRiÈ-&Jth¦Œ!I rŒLaš$ -€G‡"!IbÈbº$I¨è“nÔ÷$Tò)Qt!š!eÈb)¹4]jBã™M2Sl€!±? -€iH Í%–@ÒôH@`Šù†ª<–*3 XâEçÇ(Tê,+/1+"† ñÀè„€ÄÁò9ÿà p<hlŽ2Ce)ƳÄQxGçSD:KàH!¡&š-£ËM¦[R~1U'0)üxšÐ‚ˆ] -#ÿç|ˆß…Ðp_™Á–“ó|€=cé€N±,c$$ Ås# SaıŗÐD–ŠaH%æ$IŒÛ##!M 0LX$90 -Ã0ˆ,Eš‚ Èp p¬Ü’ºT{MnðC"ÉßL%+åç~ábD@0&ÃBàx`Ú&(œ‚£éI3‚ÈB`¨l¥ é…BS‚Ìû5CÑ,UšŒ¦ò„Æl,°4%hi8Š‰ *•‰å±™µT~\�è $K1åI¶ -ÏT™Zˆ!ñ´’x«8!—.1rIeO“ˤbþõoÿŸÏÁÐ$1“o -ã~9xþBXp(ѵrã¡*)üƒ°.""±]þ³?„_ MÑð4…lY6–(‚“)Ã?0×Ƨæ8r -ËKkœÍ]ƒ]CÏMÏ-®x?9>ù¾upúvy³¶uP“lÇ3Ô¿ÂðÁxt4O*3«4f1M—˜ögå_+¹YßÒ=XÛñ âî=ÇmgySçíŽÁ†Ö‰ÉùÑé…ËöV{•46O—'sµ¾!š*¢²¥*£Å’yåržÃQq³ÚÙÞÚ;Ô32ZÑÖ_ÚØ]ßùhèùÄäì¢kÑ==·Ö72™^XIäÈ#¢é!‘x6†-0ðå&2‹ÇShL©Ö´ü²Ä+EúÔ,sNA’íÚ•²š{ž}Xßðî|™˜[¾ÙÔ—fçÉÍ!Pœˆ‰Šæò¥I -£Eà]Á©"cJžÚ’+2erõ)ào-i¨vö:»ŽNÍ7u׶Öw?þ†Œ#h08H–i2ËHb¨¢–ÄÀWÇ+ ÚÄlKN©£ÒÙyÿyÏà“¹ÅnïÞôÛUP–äœ2…1£b„"¨€‚0dp³p$-(BbyiŠ"!Ÿ«±pÕ EUwúŸŒuÿ^×ÞÛÒû¸în³§¥wdjþ¨LS[ŸãVxâHNÀ¸®‘%N†Zž<)†«åJͳÕZTmɼì(¯¹~ÛYÝÔ1:9·wx²xúåðdsk¿oxL¡Kó@žÄÐ1„i"•-0„È ‘h2,ð(V8ŠŽ&ñ°dXaÎ/®®¨owT·Ô· ô¾°_oŒÍ(W'9€Üû ~ú F„x¦¸ôœÜ¢Ò²êÛµ ýC“S3Ÿ<ÛÛ»¾žMïîÙéÙöþáôÌÒý‘±ì¢[ÒøÂP7Éäp L¦T$VšLÉyŽÊëU ·Zzú‡§\K zOÇg<}åš_YßÜ›~·ðnõäôûÄì¨ÇÕª»<¥EªÏÔ§JMT¾R¢4¤_ήª®jkïzôäÙèøÛ…åÍÃùõÍ©w«‹kÞï'ÿûûï¯'ß·÷¿.¬zZûëRíLq< L4ŽÊåË´†Ä˶yŽ’š¦»ÃÏ_Ž¿~99ð|â÷É™å[_|ý÷8öÁÈXym»X“B¢ªqxK$ÒÛ"1lD…Å’L)ùŽ²úæŽöÞG÷Ÿ¶ <w½_^÷®º½‡Ç'G'ß7¶} oÞÛJ…š,<MCç˜q4C’Ä™ñYéV‡½¤²å·®®û#CÏ&@C®¸·ÜŸ÷Ö7÷6wöŽÿüë@ëòúöèø’H—y1Œà„†…“.Á‰¡QtQDåh¤êDkaisgsÏ�HdÙ½õÑ»ëZZóîìÞ=X÷x}_üø±½{ðtìuùíV*±aáQ—B1á(*"Rê3Óò¯–Üjlííè3·öiëÝŠûÍÂÊŽïøÛ~ÞÝ÷nmŸž}ØغÛóÐœ/1æR¸q°pšŸ?Ê?E òˆd>›¯SÅf-ÖXKv~I•³«ÿÅ«éuÏÖÖþÑëùå›» #ß·³3¿õ?¬oîfâp-ÇH0gXW¯—UÖÕÕ:wúîõ̺\_|GÇà^·{}lb¬¶±!ÇV Ñš™’„HŽ FX$ƒÍäèµz»ýZ“³³³¯£§äñóåU÷ÒŠ{êÍÛw‹Ë‡G§kŸ¼cã®±ÉÙê;Ýi¶rmâ -KÉÅJu±&N¤Ð§¦Ûrm…ö‚üæ†:×k×ììÜü¢wdžc}ãóöÎÞÉé;¾™Å¥Öž®Ì¼b–,b)ˆL)¥º¸ÔLÛµ5ÅeEÅ%wî4ON½ñ|òlnï½_÷Î,,}ÚðìîïoÅ;15SÓØ¡6g£¢9 b¸¶, Mâ!.#7èLùù½Ý÷\¯gç—Ö^NºÖ>z|G'ßN¿{¼›>ŸÏíñ¼zõêåøTá:š@ÄóIt5ÄÖ2ÅqlI¬9%;õÿWùSgþO¶²Ù¨ÃÀÜÓ3=Ó÷5GÏt÷ô\Ì}Ì€À‘D”#‚aE]Ï„#$캮F£‘5Æ#b$”©xD‚H¡ëZ–¢1•=~Ùo·êêê®®ïûÞïyÞ÷}žö®Á¡ç.\¼òÍë7çnÎ-<\^ýåŸÿy¶ñfemýþ÷766ž>9»pçÌùK…òn+åÓCœÞÈBVÞJxB*W춥ïƒ?ÿò«¯§g¯ÍÞ^Z]ÄÞxóëâÊ#�ÊËW¯Ÿ¿x¹²ºòäÉãååe°×ÑÑÉp¦Áá‰B¥3Qb ç å«£ÅήþÉgçî.-¯Ý_\÷°ñú `æÚ“g?¿ù¬³¸¸øÓÃ¥å•Õ³. þ´}`hæJ-iFØêÀ 24#n-wî;xlòä™é¹ÛßÞZ¸97ÿÓÃå_ÿõïg/^•—W¯?¾vãÆáã#;w둬ëõyãÅbsM¡!“Í•Û[·wïlÛÞÚÓÓ56~ø䩉±±#‡ŽÈÒ²_`lv+Á¡$o0Pz# ™Hšr‡ýñl¢¶¡®\*—{ûûw÷÷vîhÞß?9yô/'ÇŒÿdrßÑK]ÞHÚ)gäX³Ó›ÊЊÚIš§ÁüáÅÁ½Çºû†RÉÄÖ\jOO×ÑÃû''ÇÏ|qâ‡ï¿_Y{úhýÉߟ>¹zýÚÁ£‡š·o—Ãq1˜¥ì„t£´À¡Á#Ç'òÙbc[s󮮎ƒÃW.»w÷îúã§ÿxöìþý;ßÍÏÎݼ~iêôéã{ö›:<Ñ‚ q6?LJ*#¥ÒZ [ÑåÉ%£twƒìçgfn-|wkæêòÒ¯^mLO_9¶ooÿÎƦ¦L¡gz3A;ü 0ƃ2Ú.s6W(”,KïïØyüà¾sgO]þjêöüÌÚÚêó—/^ÿüzõo÷¾þëÇ?:XÜZ‹QŒ’I[Hgâ¶(ô•*«Jƒ’¤ -äÂÁtkk{ç{ïí>r죑‘Ñɉñ™ékwîÜ™Ï+W/MÍ};}zrâ÷ƒƒ‰T‘rxM¸&À0õ²|8šÙ&3$0 ádOÏÀøÄŸ¯\þæËóÆÇ>›:ñÁâÒ½»?œþãÇOýiêì©C‡ôöìjjj‰eʵ-r¸±J‹kõÆTà ‰c¶D¢¶owßøèØìììÜüÂ…©çÎ~>}íêƒ+W.O2:ÑÝÝ[S¨·9=-A˜�*Å!V„E ÅðR I5Ö—v´töÒ‚h!¶´›1;„p�Gœóavóµ^‡a¸@02Š»hZbÿ.›C†sÞê$ŠVCpŠs,/qÞ´‘”Ô ÁÎÖ«…I…Fo4áéFPNò.’“ªm.Gò°$árp‰x$[“iiméûð@箞P<pÔ™ 5„kaBÝ ÀufÎ�sNOÌSgù ÁŠv—¿:öÉÞê` ™ŒÆ’‰tm]Ó»]þêp,)56sY¿[Âq;B -ÿ‡ ≕(>þ¶Â`´8E ¼ÝI¿«Ïs‰t<è‹Ýïw77ÖÔf#åRc8Qis)G%½:=¥Õ£UU«²Á¸—ácn)›É·Åâµ¹Dvltlhp°‰µ4Ô×åóí妎R]*U‹b”¢B¥¬2iõ¸¢B_¡„4zÜ`âLb¸ §Á4ÑdÞéö¢(æry#á<è©T¡Ô¸}[©CÜñhÂ'GÚm0sJ=ÔSFÌã”ó‚/ÇðAî@1»Û -DëÞ´SHæ{·í<ÞÐ1ìöD1Ä”=ñhR–|eƒ`°È)×äÊû\Á²ÆÀüæ-…•p¶Údu�”í�!_üD‰¼Ç-9)šg¢”|Y_°ÖÚ -Yì(%ÊÑ&»·ðÎ&Ý&…¦Jc-Ô‚:H0„T*ÿO„´%㊳BÆ&æÀ„-dÆEž@HLˆ[”ºÍJ]…Æ¢Öá(!2ö°¬ã¥¬QŽˆÊHëÌ´ÆDXh/L͸—sÄRPÂ@I‹fÔf°p„3ÊxÒNJ£-(EszšÃë“VÆ£³Øp[D¥#ßVhj38†•1Ös^Ò0Xlz˜…1—" m„)‚ñº¤ÆeÝIŒörÌá (ª4J%£"íˆbL€â3îpiOVéHå-˜S ÌšÊl2 FÙ Ö•ü'àã¦YŸÑ*¨!Veä6W¡jRo-"#.7ÀvÙ©…]áÓY0ãH{0™ßÖ»ç±d^gä9Ém¯vÚHô¨Jc•%èj•yë·•*AûÁw*špåY>*GK%«uˆ,†²;Ä@/PCS+b·X¸rskl©0€¥P{ -s×2R÷0[Ȉ‰&PÑFÖdu9ýîpk »;\Ø•m9àŽ´ª M»RÙm.¼³I¥2fTýõ mûó¥!Ò–P(aN¦[1Ú¿¹Vh Fú\r!”éÄÛŒF¶J „[y†QÁ‚{Q&Œ;â| A—•*¤BmRj¡J=¬ÖY,¤Œ;¢¬˜ò¥Á…GoŠæÚÁ+ãJ!T�eB„3aÆe+„pùw[Ô›•@!‘¥è Ç'8wŠàBé|Wº¡_¡²V¨Ì†ÿr\&ËmcW~”TlK¢Ä1ÏóLÌ$A$R¢DK²[¶ìxŒÇ±“8]]•n—«²È&›Nõ"7ËQªPØ€¸Ä½ç?ßÿÞDþÔ-Îlc„s^‰o´>{¥³=Œoá|‡9%Ì/ƒúÆÍOt¯*§'ñhIKH®ËX´”qhd¥ËÃO!�ë3NéãŒÑ!P«¦v¼t£#ŒÐÀÔ�e¢–JFÁk)_ï+æ8lTÜìòŒùÙC˜¡SÓh »û8¶zª¨%~ïï`Û;x€E=RFz®Z%´@’ä‚ B”ž“Z„~É‘=áPŽS&¥Ûm©ÑÓ[¤#£¸:/W‚ž61À¯éÞ•;½F“Y¶{:+Æéðš—ò.Á…¨±Gc¤3#!F’9î—ÃÉ--Dº;ê6Š7¡„èé{{ø¦‚²åáõڬn µ`EH)!DÊîÜ^9ù£¤²‘Ã2ô9›¿Ì‰lÕ°ß&&„Ñüôê/ʶvÙ«îÔæQz4nw•-œ"•ÇÏþ¬Xe‹Ð»ô¡â̼ü|°|kEk¬gt N¦ƒ ð¼èëveFÇF¼q‹3\5š<‡"È~jTíõÄe‰îLí¯ìÁ&™\/¯> —Oõ°2ã¥,‚á™7|¤$ô¤tW#pÎm\ÛmŠHIFÉ«¹xŦÑîd „’]º£Gr¸>‹Â²>~úæof¾nR-÷E#õ\q*( Á9¼hB›_¿üÒâ•�Y•îîkÎÜŽÖvvj·üq<<‚§&µÔˆg%Çq}ë ®‘1ÏŸ@þ¿D -.,`ê*vÍ)©aäG/À>®õeä‚’rRLâêŠAÑv“âäP5³’¬MÝîÉÊêêÎ @ -bU¢6¢e8©ËZ¼YËáòVï/zœßãCFÉá) Cu«.m7qÍ–º]ß»ßÞÞéòJêçV¸f¥Œ |×YXAßÃÎ9=ч;-'¢1´ŠW‡·Ý?Ë9|¹á-t«Ò¬‰fÕŒ”À[ÍÉ.ÉÙð_¤sZ™í¿¹|÷¯úô3)%”à™ý™ º´' ±¯Ã!4ﱺÑ! €d]èŽ;a7‰f‹ítÄÝ&‹õи_¬áEЪ.0Æì±ÉyÍŽð`b¡áQú›ß6ZmFQÁ:‹6á´H¯Ù³·ZÂv[†ùö÷˷?í’j‡s•þÚ.oâÕ»âø}0}bFçÞ}úû/¬Sb‚Óå=Z Fmô7^y‹ 0“¢VWe„¾æN wŠŒŠ×à7c+^Évª…c%˜ -N…¢¥]¬e·RÃ}gt™.^Ùɱd õp™ù]DIV^¶í‚Ó!‘FȺcÔv‹Ún3€/äTº7ÃU²E"0@4ø8°”3Ψe Ýä&GnvÛÌÇ'Ò;„ÌH0D¶&È™¦Ã“7¾áÚöÎÇÕBµçz°‚HkVöñË?FûW á‡}¥feõWÀ|€ª—Éö¨Ñáš]©CiWegâòz®ÓË×?ºÃͽù`› ù@4ŠYö‹M^_SœßÅUKµ`²Õä¶ï.~»)ðhØ/ÎòÉ#³¿pÓ%,Ø‚‚‘@»Xoþpúêg=˜ð(X_¼Ÿ=ü�ýÛ!Œ{7X1PÍÃÅÝ#[e±xžî¿Ì -ã®”èÙÉèôÓÑÓìôˆàBÕ=€3×üÉZoã„N°>´ÕNóîuŒà‡` ’šñrL±n§§wH“Q²›×ßÂôàÞЊúÉ2 Ð5-]òP’5¡kºbåˆwåÄHO ¢”ó« <Ù¥5JK9!Á<˜Þ€$·ãxþûïúþΉæ�p”T7Yõd8»y4Í°ÊËëÏÿ¶v#:(Y1ªþðbsûÓìôã >ýøõŸj²Býyºz68~[nÞÏþXž12Œ/“‡¿üúß³—_¡%ÁAQ¬šká*Ÿ[ñ†à<%ÀRe€Éš‹æLq‚ÁEX^¢ßÂ%’UÓÚˆQɬÀGÀ¾íx59|iÇ‹¬ÜDãN+ÌøÐ]ù ïÖ¤’RRÖì‚€D‰±ìÇãKÃmo–¼ (Ò¬!,ŽÓ6”R±Æœš‘?3¢}°`Œ6»”é§æL4ŒÎf7?ðÞl@´qJ"h)F Bêƒãè6õ”s¯Ao·…6i0b¢Úv|ìç§p7ã#äÏE{¬…ÉÑR3Ú]ÖÍŽaÊpýòçïÿvâùý¼…‰PDd×s�Y‹`3˜þÙCÝŸ‹§ƒõk³<fOu(¥UF£SX‰Éa‚¡#³¶Â':¥Ä¼MÚŠ>È«K8º.›Ôö:ünÂC¢X‹h|=\<ïQ&FªmáŒËËi§gâ”|¶’u:}¬¹•×¯£AQB—FwÔÕ -AË ùHNÙ“=YÉ~Mé9ðÊ./“Ù³åÕ×åã³ÕïÌ Æ³Käe#´ÿq\f½m£Wþ)ƒÅÄ[lI–L‰")î)îI‰Z(‰Ô¾Z‹w[vœØNœÅqR×™ ]²�SL§ŠtÁ¤E{Ù¢@ÑÛþ›ž) ¾ dòã9Ïû¼p@æ÷𺷰…à†ê”`Q¯—»§†;+øÛOn~KcÔJ£³êìymëÊœ™SRö¨ta0:ùç¿þûèõwaBÉOÙ´N¶2wç¬Ò’3XÒcCÜãl™ÑB~7ã]TÆ7Jea²iùnŒ± mW£<dPRo€³‘RfÏëÌ_ÿꃣ×ëq€ º»bi—5Gb~[-„q#oGª"T°ÏÉ^ÓÃé ’ŒáJ¾<5økKñ9ÕjÑðŠ¶h÷˃s«yç,\`&¼‚1E³møfÿ1®µX£ z þ“QR‘àô¶^Ú6Ý]Œµï®D—Ö0˜Ì•�B&Uãä«�9_¦´&ŸíÓz+Î[p �ãðDb¶i8ÝÍÙ9ÆhP»b˜$*5&U†[‹÷¢I¹š”Jð!œMZvraBªUÉÓJƒN×T{@‰eÀTŒ°þŸ³V4a§gIo:ÕFtÎ(©…~eg’enI¬�öa%£Áä¯î,-.!aD Se^ñ„LS̶0˜ÌâHµ½»Ëµ02¼”p<²92]ÓJ;îø¹R€ù™±V/™¦ -›Zm/e Á.6»'ï>þÐ;¼^XE\D)-F@ÏmÊö mà6–àòëqé^ˆFð4#—uwf6æÙú!)Ú’U«ŽÏhÊéoväâÄi×LJ/çO¿e”BŒJk¹>¯5á®bŒ‰ñ¶VœèþAW�þzq×›¾ò¶_éÞ!øÂÂT–WýBã0e¶IÉ¥d—S+i»›Î÷9ÍKúFmÓŸÞÁjõ͇ÝùÛÒô÷XãÇO�•›gß|øRhì�@À?1®Np¾éΡ2€ô‚rr¸ ñ‰@X¼=<¼}|û¹<|Œñ¹ƒÓ›ñþˆE^qîqa|Y?ë¾^üÎé=pQ);™ãBI(›¸P ÆÕ*A¾0—$t"„ÈDpeòñT‰ÉôÖÃtõMº(kHV‹à§+´Táu_ÌõríÙ`”lAPŽ=‚+ð#”hB[ ‘0IB]Ç"1žàmHyµ8ÓÝ=Rn$Ò¾`Kƒç¹Æð.èY(í°RƒH–yµ±y0ZôD£ ¸ SÌÒF\ÇeH7¸†M{ZnØ࿺³Ð#à³¾ÁÁ¬Tƒ™dÓ5’wB¨'éP„ „ÕÈsFÓn™õ£áö՛ъ#Fä{çzõ0e š“«öÖ‹\ça�i')¡H‡+¥Ô)Ñ…qªHFÐÜ'’ù@„ç•Š”¨¥Y¶q,&r¶9š=úùÇ¿†J*Ó0ëÇ¥þ™Ýœûç…Þ™îîÄh]4<½0XÝ`îE 7¯6¡6NÎÞy;¯Æ -m°‰T.Bk1a%L£¬«m5ϧ§ïÒX/næZûxÊZãgªÅÑæéíÍÇž¾ýÜÚ¿f ¯Xîœ\þFn1Âõ™õ»qÈf†v}Þß½”L?ŒØ^(Å=Jô£ÇpBƒÀ´çþèîêë%ÒY4;¢Ýe5-.Ejw÷™Ó9ŠÐ²V4÷®z'7õíËòèB¯í³FóþÛ^þâSœÏÜ['áÇÑunø -D<x]otztñQÏpæ(Û»p÷_{‡oäúI˜É)vëó—Ÿ<z»ºÎ€.*…ii|utõÉŸÝ„ãÊâr8%9´P\ -& Eª-6Ó‡'ÙˆiMJpÊøq‹G—•íWËo§—ß×wnÉûz íNŸ€*@º-‡HØ,8FiúÛ¯³µÃH\Ùˆ§ÁWS’#ÔPL�bÙ([FÙ"ÆÑDfü'˜HP&Jèt²�š§ìà†�ÀO0Y€g‚ÓáUB´…qOÙÐqw»Ô?…¿¡‡O¬.Ô¼>¹‚ -F*uØ5‚XUbœ¼¼ŽªDZ]OFqK27YÕ`’ Ut§ƒÒ -Bc¤an‹½‡ƒÛöñ.]ìLÎÜþýXÒ¤”J¦¶'•¶hYè<¨Ÿi¥)X -«ø–w`”f™òL.Oh½¥sœT¢zwE‰&t»võ3ûŠ»C¤€•Ó9Lš „6’FKÊõ¡O=¸þðô›OÓÓ[Ru[Ãù›÷Êy[`YùöÙƒ—¿¿ýás[XÊYd eÇŸ¯"É•@"Ng2»ŽÉ8ïÈÎsqãŠÓvKGiKSö�â5×9–ó½ÆèøìÅ eBÈ¡¬JÈ..WYÃ/uç§/¿ÏÕwÖb\”ÉÖ&/íæ‰`‚19 t -•YgòbclJñhÕƒó³Tajµ:û×Wï¿´ö®‚LœÍK…-YBt¡C˜�ì²^Ô껡`LLÚS½r_°§¢=Y‹€¢§(!%U(ûOÞ=ÿõwž|è}£¸{aÊ\ -’«ëÜÏÞÿÝi¯Am¤srn¥òŒèÙþQ„ÈÀEq¡äo Š»¸úÉ¥¨±j[õO ÿÔôO¶Kd¥LKdÂ+k‰å5r9È„Q£²a4 ¦=;_]§ƒ¨øÇåÚÔ6zÅñïÒ40|“%Û’¬«u—‹%Ë÷»1ØÆ@lb °h’ $!I“lv¦ÙnÛMgÚNwvÚ™î›öM_öô›ô¤3ÏÇóHtþçü~˜ˆ1&Ô†T˜ðî(Lf¸LCp{„\"Ä2osF6É:¼äÒ©,’PH&G2€‘MX Ž\ZGe€ÉFûa®¹¿°öqÈ—é¶Î+»Ï¼Í¹i×onÿ8žß ´nק;>nο)žöf·Ýƒ7‚»íѪÓgÕJnR‹q9Bj¦Ì×=ãÖâZb%DœDšT*pzJmà0ñŽZÜ¡´*Õ2À¢JQÔ‹Ñikÿi}ÿI¡?½êÏž+Ù^:?¨¯£ÇíýK¹83¹µD±rÛ^ãФÁ€X €GÌ{Àé«A‰)É”‡‘LFkd*³ÖôUiðÔ†hX“‹ÛïÿòOÙÙ`b‚±kPÞº<þúÏ>þ½1}¥JHfeÝ# -R€É‹kIDˆÑˆ Fg‘¸nˆÑÖJ˜ -ã6³i5>ýÍ»Ïÿºúø£sìÇF«Á«ˆ&MøR &j&è]^ïú#Ü - -Ûª…IRjã*JÙ0¿`XËÎ&t€þý«½s»¶¯—§T¦O¨¤Ö–½qsò6Η`2ªù]ÁÞ ‚<㲋«8FÅÎCŒÔîÜYþÅ” -©6…ü>k�Ù:Ëk\·ÁªVÖ©……@0*…bZ8¦C%šjœuœÎœáœ|uŒóÙU„#c©x ¸c£uQB⊨Õ%{—*pº8eÂ/aT„kLŒÆ“Kï.G|(ˆLÚí‡âê½U>„Ia¬CkõT¶§8«ØoÎtg“SK[7ýùëêÎc%ߣ/‘rQÚF‰´juHÖ¼I°YÁÞuZ¥íëÞÁ‡8çT0`pÞtZp0®`´—²Š7¦õ6¯×Ú£³ÖàfIiùÖd÷ôÃыϧ/ÿ껟+£+Qo¿¼ùþÛßý7j#”÷èô†Y›7Ç7ƒÃw ¶t×[\#|6”ÝAŒvá×C,À6¸ˆd8®ÈÙ¾’Û†ÉHŠE‚÷ oÚÝ£[R…Ž.wÏêƒç¹úáðÁÍèè–I7‚1I·›~øYòv–BØœÞ%ÃÖK ÖJç‡�”çô†QždûO.^¾ÿÕ{ày œ_Ý|"y7‚몳mW§°¶6gõMàµ0MîÐZ'–ü8BNk^_ÙC ´cdKƒPLXÇRÐf^ÿyòä‡Îü›òÞ5¡Ôï.ÇIÊ=ñ'J-ÁDXða"¥ò‚µãuνö´ëÅ¥`e’‚»è¯¡Â*"I“²wŸMo.âÁ0Ojþ`2IÅ—”Àg7FÇo¿û1Šñ` w±dF°:²»%y#µ|�0 åDrn©9c/–ÔxµÊé51ÓJé-°4®úÖÐ…¥àÒ -rχ€Á‚wÁäh<M±9’6Ã(Ëk5HYÛ·ÓÂàB+ì2zÃúH]RÌ$%ƒ–l86¯WÕ즙ßCI+Ù”“`Ì�ÆApx¥œÊð!b¤Í‹Z*Ák„°ƒ†@ógY §`4sZÓMUgƒ`2—Ñr %ß0:»µÉeïàh«Ô<˜ž¼.nÌ’’gwrgœ½mTfNûTÌíÇ’ùXÒ‘Ì€"Ô0Õÿ‰(…›*eËSF¬LèzÁ¾³´Žªîâ,ß{<:û$g{šÙ8øê½VÞƒ�|‚:–4¡bæG¥þ£å O)M^kCô`ÁßX®å†qÆŠ‘D¼pLB€ô¨4š´^m¯ PBM¥« >´T†8"œ?í]0´è†Pç¬(iRbEÏï| rn›N·X³ÓÞ½„бrrW3F;.V"”I¦SFW/L¬ú1”(¤F/Ì´ü`C0ûT[ð%àF½í£ÉÅÝ¥`v„HCå˜ãÒð 4öÅ•DÆíÁ„ð¯¡wÐ §g†¢Y‹ †9ÏDñ” ˆ%ÀËìÎ#³yRß} Š7ˆÒšší4‡W²½gœpÜÇÒᨴŽ0þ» ~¹‚"_ ÒaL¡Ø"‘ÌR´ã¸ÝÝÏÙcõ2̦Ó×={ûSíàµPØûr#«:]î¾”ÍN—CqÏ,JfqÚ4½N§#[U9]aÁéBK/iè‡A”_ÐË~l5H£Ø ¯÷x½ƒ§ræÔB}8>¸Ú?{=¹ü8»øæèÙ§í×ö棄èÕ;ÓùéV+ „”ÊÔ«O+Á&˜‚§ãI}ÉÁi%˜<N¹À´@§ð’y¹ÌgšŒìÉf=Æ€7¹¤XÂÅgv5·×è_\ÿV´Ú©L Ì‚Vª’z_±¶h©DEÛë×:‡°ÀÌ"DIKHw!¬ZÒÐnw|xjFòy»vØÜ{Ö™<Ÿ]|²ëcI£;|4=}Í&N¦qÚ�‹ -'{¦Rï •©@¥Aá6 -ֆњ—§·“óïìÒøÁÑõ¿ÿó_³0ö#*¥tµâ¬Ð=ùúýW¿þ‰·‡÷| ‚¶½Q&Ä -À`%ÀдdŽ´Ü.|8<U`N}Ñ[LôEÄÕÂtÍÙJýâ2ímÛ¾ãøKÚŽû HQâ-Šâ-Ò$EÝ¢NK–d˲e;vbÙN|$q¼dqÜ4iR¯XÒ-†b† Ã{¶>ØöVöË3$òÿÿŸ¯áE“|( -DÊ…bH"Žç ”á^R ',¯´€Ëý£µm¶÷Jã3ÕÛϺc äÞúùýÓ@ȉIÊåÅ‘)bé<"’’ÁƒÁ8œÿÙéiKicZÅîÊô8_®žOOß•VWMÈjkªV¡pt½}x“æ]œŽ§r´Pô+×E³CçÊR¾Qio“¼ŒR(i2rSû´Ô'¥0–#ð‚KØ816ŠÉm±j%kµE«ÛÏÿð×_þùË×¼Ì6ĦÙÜíÎ.½Ñ£ñôÉlïRµ[šÝQ¾äo©œM(‹~âž„ÒIB£¹`”½çOÞ[B‚a"£)ÖÖ£Áôéæü5À9BÉŒ‹r¶`¯:s·w¬8#’·W7{«sH8.’€‹œKp.“-Uš[ήϟ„Л«¤h3åâI)Eçy¹–/@if™*pË™â¡%3ZOë«“ÇãÙÓ0’%9›ÍÁÏZ ;Jc³NšÖíê8#A” u‚w`…IîX�1;¯9zqý=Ä#¯õ‹Ýórÿ‰î®3«:%ÅÏÈ$k^£³ˆ»àC£¨ŒÓ•¬±±qðqýø£h }aFÌ{Ðì(.|q7tËŸôÅr1ܤ³ ³ºIæÜdÆDéνè{1ÈNm,wöA‚90Ûs½±ÏªBsG¯^—*Ãêä¼7{ñàé÷ïþòòæóËŸ2Z0 0§mœ^ĘE?¥¸XB‹•XJ @V#Y(5&c|^pÝÉñùÕÃK,“ 0ÛóêøÂj(Nß,¯Ë˜c´Rýü„´ÁJ+·„|ßž·'0‹�zIÚääfFí�Â%µ`Rc -à%É; °8.c$JHfe4;¾Þ;{WÏg‡¿9¼¼QJ½ŒR1jZi¼süUö•¤UÕjì¾*·¶PBÄ©<J,'I›`Š°SdO«Áp:¡—‚)(ý@(€Ë•iÁÛ±[9£ñàä›îÆyZ,ðN¿2Épmu5w´upÕAL1bÕ®o[Õ™¨·!vB(ïá·nT�1Äqö®/â‘8 Qi T!†I_Š%_–fÅšj«+‡º; 36TË5³‰3 Q,%c¸DqÍÁWd(’Ž"ËÛ”óGI”JRº¨UEµ(é•Œ\Y®N^ûçÃgß%È<ÉWrZ/ïNŠÝC XšUyÑ‚…¿ BaɬÜ6J›d¶‰³¢V´Š=ãu'„R&�? ¸>ˆ°@¡¡ø‚X(N¨¤( ˜‹Uam•É\ æOqå¸48RÝöáóo§G×áñ`ölãÜ+@ ØnåöLq:.¤™|}‰H”¢9l¥9ƒ¬æ5G§ÉŒ§0Bb媻{çÓÙÛ?u·ž¾þæç7¿û›^Wh±Nåj‚Ñ7ë{�êýj}‡W«ñiiõ‘V^—ìU�é0¦'HG±§D¦|{ ¹½ˆ@!ê -ý%¶`ܺx©Qì> %7ÅhnszrùáÇ?þëìê“ݨԶ2zg÷ôfvò^*tqÞÐK“þÖEc07ŠÃjkC2ªÑCs#ÖPB…:�bŒ¢J"mà´Ee`‹qH-å%£:Vî’ÙªUêß?zYh¬1rÁô6GGo÷ž}êÜ¿.O^ä -ëñ”Zol_¼ù=‘³q*‹ ™ë¤h'˦ SѼÝgû'ïî."w Š/©åYÖì“Ù2šVšýýÝG_ëîg,ZªQ¹2+–)ÆÐHõr(JfsŒˆ(š‰¡<X;¡Ð¤ˆjŠÔ–ü±-óJI - ´jogv|59¸2[ûÞÚÙrm -÷¸uø†‚M*@•aDˆ ¹$ídÍ\™?”€<P\ÂÓ -Ã;4kÆ:%!Ï9Á -¾}'ðåí¥/¾\ZXŒÀÃc„¦èŸ³;ƒýB}CÕl&(Ó¼œ3Ô«;FgÞܺjMÎvgÿýŸÿ_ÞÀf”ì~¡sßllËËÅÔ)³bq÷à+œsý±@(G©h"I%¥YœQò ‚/|fÔêzkr<Ø~ÒèßwóÓõoÖ«cFmÚ¹å=l¬]ÌN>¼]Ý}¥×ÝÊäѳ9§gD¹)®J žì@²”IJd¶˜ -?¦0e!Dûbà½QÛ…s~|þ~uëT´;zmê{/Æß]þxqówoóigíèÉÕ'JùÒXqœ\'³#Õ9ÑS–ÇൠB'H glÑXSìM�¡4ãÀ™ãih+/cx7RL™½eÀëóù¦^rùŒ\8«$çŠÎp:ÿz¼ý¼Õßo÷(¹ ä+fa�ˆ'5$mÆ0à 6ãvú«çK(–Ó¬<Ζ˜|Éw ¡2Ü<ßؽ�«fµZ¾¸¢ú lN*+…>-×Þmuw:ƒ‡a¸ñ…¥.(JøŽÐi–Û+ÕÇ ,#H…Áìäè×ßÍ_þ Ö÷H¹ú?ÇeÖœ6šFá¿’êtÇqb6„„6BI ö}7« Û`ŒãÇŽã´Éê¬îJg:ÝU™štWÍÜLuz–šê‹¹˜šª¹™Ÿ2¯»ê» ¸è{Ï{Îs˜èêøü¯¿þ7éš,.ãIR™Ô]ª»Â*Ÿš¯ôO´xDb˜uÌÍ‘ƒá>Üé—•4Åi(p{Ó“óÚõÛS·ísVçG<p‹;¢'ÚÏÞ|2Ûݯ3þ4§×ü™~¨¼+öûë“o?þRí@dçZ“ÂÊ}5³ -ÒbüU3.- |0Xzýþ3§W¯]Ÿšš6BI4ÎÑ@Y,no´Y_;<»ôêe„ RrŽU²r².¬VvÍ%Æ´L7Vß´E9¶ìƒ±ä|ú"'—ÔÈR¶±%è©P®Îk} -WЄŠF«�Y)(5ÜüŒÍó•Áa‚6Jëžp¢œ÷¥7·W;»¢^R2½dë°´zÖÛy±ÿàÛÆèk5×[ÿøó¿½ÐJ˜ +ÜR ¹,Fº¼Úöhmø¯RÌ7÷¹@ÑŒJ�¨VG�d�‡æR.±8c’„ Æ0 Õ¨jÙÜò‰€-ju’•MPlµ³WërJnÁ)A¸R…œü†± þ«äÅ;â!H&œãU¼ZÎd¥gÌ.!Ôë‹Ô÷|Ñ–ÝF(м£&k¸[wò %Þ–cA®8Ù‚‹`Y§CNÁøÆNøMfÁ$€1à|à1QÉÁÃÕd«9~¼zðz8y»uüÍøøm»»Éº5‡S¡ùžó"8°Scu§;¢D›‰âP‰T,†ûIJi9É�Ø‚°¦yœáÓJ´2Ík·LÔÍ[+â5Û¼¤+àÊù¡Xƒ`Jn 8_Ëõêï7Ž^m_VÇO0^‡ÒQ_?si›rzÒÀÞ´7ã“»þ¾•’ÀÍfÅ•+kE8J;Îç¡žPJrV¹u1Ú€'gzÇZsQŠž@úîé›ÁÞ;)ct JIô›ëVFµTŸSJ•jïã§Ï…î½k×MFe!|¥C»É5'b´‹8åáÞ…œhß0Øg,Œa®(45èDÁL7SYÞ9m l�x.ǹ`>ÝØܾ9yö#-ç#¥hm×)æìtsǬTp„7-Fóƒhqh%}7g´„Û'¨ˆSoÍAP26§oʈ̣.Ü”b5?ŽÕöã£ÇSËï~øyÿá )RU²+Rºë‹¶Á·QJAŸ(•—î1b$j†âƒðP ¦n£“ôf«»ÿäõ�HÀּй‚u;›´F¸²³rðotÇç/þXêL~+¦ d!Ô«vÀÇ(.ŠbÆ´bPÙx£M¸5GÍ¡>öE{©Ún(Õjöú“—Û¿ûÎðä_Z eˆÅtm«Ø½Kña1X„;„fŠ³:5,‚Åæ1Ce üéìª_«|ñåìŒEâ²Úx«CÖu‰™Áþ‹CºöÅÜŒ‰¾Ú}ávP*üÕMÄ‚ (-£¬Ly#‚^N,í7·Ÿgû笾ìVÔl?ÑÚŹ(ð^03P2kÁÜÈi¢\È`åf×â±£¢ÉDŠLÍ�ÅQZAYÕì”æ0Á£—½ñ*!êZ¡WÛ|oì$·òË“Ls[Ô@ݧÌû²n)çä¢$Àž/ x\mŽN¿‡Øº1mvºtI¯ÁÜítÈÝŽ\DÏ‚¦¦(lº—¬ÎkEP¯.¤‹K£“êÊŽƒ–£ÕñòöËѽo맋k÷�ŠôDããŸ}úá³Ù©bl8Û>ìŒ_%«wÕ»¾HÇê” fBO6„@vÖ*L¨›Ê°�Œ"øL(Ó{ðüã·Ÿ ´šì‚™Ø¹§UòÝBë(Ѻ{³ :½4 ä<ÎG`X`°H‹R‹+§•«þ-”2'¹¢¸YÐ<“n-VèÚ)uÁáãµr¼¶S蜬í_,Î9E%ùèéû_þùŸÊÒØhõ¸¼—¯à–J±`>êå|ŠÏXHæuŠ uF.Å›e¬4O~úÓßû[g§½ãwÙÁãÌÚÃÎþåpòróðEª~'[þã_ÿ»üá/£JjÉ£."x€âJ¸îW*v\¹q÷¨!N›@¼_§oÙç;ãCmA«Æ‹V‚ôáõ†;Xãô¶ïØóZ^/ö‹PB¼v§<8kí\´v_UÇzc"D—õD÷èôýøè ãÏ2R!^ß•ïp¡>+/!DhÖÌ@‚üI¨96RÁ¸4>½°*ö2õÁðîËãדG¿_Ù}kì2JäÊþ&*Œ†®áFœªÛ_Î-UzgÁÜ€’ró¨ÇŽûQzkA§˜eåºYe7b´PgH!2ò&Äň11¼Î¯¦«Cx)¼ÈxôÔâf±3),í3«Ñò(V‰z5¯ïß{ÞÛyà`U-Ý‹WGZ¶ËÂ*fLšµP)_¤Ëës6anÏFé›3Í÷Ο}ßêOŒó$íMùÒ«jy±{ÿâ§gßými÷’àÓ•ÚprúÚíOâl0VÚ*¯>mŒÞ$gþØ2.MúOÏßåê»ÓFÒ`fgmœƒ�<kÅQ²}Œ»¢Õ渵vÎLòq&Pt©•ÿs\Þ¿mœgÿWŠ4¶%Y’E‰{Ý‘¼Á;’wâ-÷ÞS\¢H‰2µ—mÒš–"Ér¼âÊqÔiâ$h -¢ ŸZô_éãüá@À‹{ž÷óý|é…âÂA¤º-Fê€ÍPrÖ)fF§°‘è¸Gé%–¹¦6M+Ô8Ì7TZ·ó)°q‹#„MG˜Û%¥ÃÙˆÅBg°zø2Vß‘3óv> '´Q>ÎWØØ{úÅ›ÍÞ!B†©Ž;â*#!1¡�o7 _7Ž*0·¿ƒøÃGGÀC&J5¥3‹6g -Î}2Ý„I&Ò®owÏ×NÞeºÇÀŠXiµ³ñ öMµÓß==³|(åÚ¹î~hn×]v‡ç:Ëgƒ“7åîž]Ì…J«¾Lò·xp|ÒruD9<¦Gá2bÂÿ™L˜IŸŽ“\ŠKÌ -ñæÒÎýÁýW|²(v“;¡Ê¦'»ÞÍwN}¹@œãH>cebN¹ÛNzŽ`ÇÆQ"¤EÝ -B9rÆ”É@FÌD¥ÃS&Öü‘¥y£•Òa°Z|¸d(u`óaÿí\4×Üô¦š(í“êòéöÉÛnÿOBzÁåÏ#Oº|Å=‡xáp>eaˆÝ‡9C6B'gÁ`õˆ[mp©ôdµˆ †á\w…Á½AHh1G‹i‡˜‚´-yr=#îéõOžÏûÒ(éIÖñÚn(¿-cRO}Ü[wpï23³~]a…e0ÙC´gFLö¢µA¨²…Ѿ“³çwOßP¡Z„ƒ&RêÝ9ÿ&åN.i-"‚qï¾ÿ°´qònxÜNè\ds$Gˆa²µÍ`qelÊ… -Á¥a‚ÓÁ† œ½<ö^Ì,<ÅgÜÁf0×k¯ŸÞ½x—kؘ´•ŽÐ|Aipi?¹2~mX=¡$tf·ÕW¸+C*ÉéÏN©ìãôJ…°9M�‡mæ:äB¸¼Ý±2—˜L×wÒ>DÆæàóû—?$ëÓ‘úæÑ«ƒ'?·oYï]|þå‡Úò}§§It@¹HuBO©Ìn;›$]~ƒÙ¡Ô&”õùòÅÚÁ„• -˜�wÇ[X5®,÷]üÜêA¦Ó÷”V<ÅU&ÒÆ¥˜é-ø -K®hSMŠf&¤£"¤\ã³ZWzÒ,¨(&æݱ6âŒ`BÆ&gŠpgÀÛ-ŽˆñpÂÕCi¡¶W]{Tßx”íEj;r¶G‰!Tš¿õÀo -‰¹™õ‡ÀaÚ_¥¥4ÖÎòž ŸžÔ“ÞTÏå«aÎ(ë)@½ô´Õ.»½Ì•¸2¤¹aÖ˜‚ ‡òË.¹¤5s€hÁ_4Ù¦§tµ•o\¼=zð¦¹rì‹Ï·«vÄÊÚÙ(´1:©!¬t RèE²])\Wh°k×ÕŽÁLˆ()ÁKC)ÙFðñlË-ÇFzFÌÎ,ßëôŸ–º{Bb¡ã:D$ßÓß6»ýI�Ç訕&uN¨Ÿ ô(.Äó]—”ùäS…Rí#èò”X‚j�'òO_?xmgc((¶Oâõ]€9ÀÖ6ŸB…kMTzf%}£fÄæ…Á鈅áœ×†µ*µ\]zûÝ?n(¡ t0 -‡TæCmO J=çÖh>ªE9“µI5g£ÅÅx};=»“¨ÉÉYFÎÅËKíóÖÆafvÓšçc³¡Ðyy_¾ÐØrŠYP#ÜŹvh%ŽS¨Þì„gÒThlJ QåT*½ãõ“?··æÚ·ç6ÿù¯?|íTØH+P¹%¥— šk;Ÿ½©¯œ¦ªëŸ}ñžÔ”‘u‚3·"µƒ…ÁëîîËÂÒi¶²þ×_þóê‡ß46Ya`oè\ -#«·‡(¹.ƺ‰ÂÍ£óg;g©ö pó0Õî{òóù…¸ÊÖÑåþãwÞL7^^Ù{ðíéåOË{ϲ}> -ž„«Jòe¥ÙÐz›¤·zÌDtgoÉæŠá\Ve6¥·² -jü(uÚS¢¹Œ÷iÆ!$*í¾KÎȱRªÔñ§çºV&k¥â‚æ5:(u4éôC²Ã_` *Ô¤˜,"üÀJù>~~ZHº¤‚ÖÊ©,j“! -ügBŒ–ó۵ޱ˓C)IoãÍ„¬5:&UÁa¶I˜#Ìú*F« 1ÐJ ¥20SZzJëL…‹TV«K‡0_.Ò2ÓaP;VHIŠ÷Àò£¸ê+‚BT& {lÊ:¡ÄôFvxD?4¤¾6¤‚Ö‰X9‹Í»»÷êÕIµ†P(Ÿ+‡ÆõcJ,hRe#™ JŠ¨]’âm)¹H¹¤@ª.-¦[Áò†;Xsp1É_ðfæNÆ·Ó› ø„'yÓ›_£}eHa -•6ëàRpa© öjNáUƒÿ(-czø%$Äî¡Ä°"V^›™�ïöNŸ6zýt}£7¸l®?Z?øº»ó0VêM{3¼¿˜ÌÍïì?fƒU16WX8lŸfÚ{ÂMw´êð¦C‰ÚÉÅ×»÷¿ÒážéP‹–«B¼»Ð1ßÌ.Ökÿå÷£G¯Ü¡™@~19·]ìö÷}óöçßüõ¿_ýøÛýgïúõÉ«¿q‰Žè0Á–7·6Ó;ß:ùËì楕MÓL¤Øº#D[*Ó´ÒÄ ”ÏHþâ2knÛ¼Âð_i'Ó8¶vJÜIÄB€Ø àNŠ»(j_(Y²%F–e+^¥(²;vj'MÚØmÆq:éE3½ïô¢÷ý=¹1Ã!¿óó¼Ï±Øìj}í±š_Ñ™æ`UJ‚Þ–Üc¶@&“©F¥¼÷ÙŸŠ+›eÙjj½²x§¾~.¹ÛaÂ%¼½œÔ;¾+¤ò™™Kˆê -Þ¨2éMà¬ë4÷(©äG¥¸Pho——ŽY«›Ô[ À!œ‹sZ„”‚1cÒào”\„÷|¦žòÞ0MËùµƒó|ckƒRJ-Œ*!Df¤Z‘¦ç0N¯û15—pÞaíÝ<¢S-œs“œüIL!]ƒnŸðÐW¢Ñ$Å -þ[8ÇWÇÀŸ“(©Gñ4ôjKM{‰É9ÜHzƒ,Nð˜<æAÇç^D‰Bp1Þ–íV¶9³sU£¸@I¹”ÓâÌEÉZ0‹k™ÒJBÐ9ÕŒRœÑ£#:«L¦1”`š¹¨;‹Ó^ÜJ"˜Š“$Ç&ƒŸŒù`‰ˆ¢*ÍæÝéª,lúdïγ|o'¡Â5¶ïˆ8µQê“¢Z§ë¢6¯XmŒ1ÍêZ¾³Ã¦Ë¸XŒRz,™áµ’jÖ²Õ•”ÓCølc[É/Át6Në‹7¬\½×Yzòü›…áHÊ”{kG'_|ûàåÛó×Î_¿øêíÏÃÑçÏ^=úº·vçøì/áE{çråæÓÞÖ}»¹ǧպ|óËâõ‡WgâP@Bp½¥Í—Oᙕr¯¾ýIÊÌû¢r€Ð•ÂªÝ>\½ž~ßؽ¤%çÖÝ/¾þî—êàÓë�á¡ŠŠúòýýûo󃻰6>øüMuáÆt{œ -aÂBÙR¹ÒÙ|�ï-¯ŸU·ÝÞ *]&©”£á,Ü$”²a¤\ºEÉ.ÜÈFœÍ -V»¹õàÑ›_AÎ9µ"Ù!TRùB¬/ÄAKý„XLÊN&ßغý»¬½‚²Å0¦'Õ:̳ih{V5ÛÕ -K”R&Œ¹03î‰_¹$¸B@$àÈáØ4:áÁ&QdþÊX(Šëðþ“)ÄOófWvW…\Ÿ7Ú¬ÖòFdIu06ã ’¥Â,¤ë™ÚuºGk5Fq ·-˜õ@ŒU¬®Û»e¶ó#B(Qi6@ÎÌ¢ªVÕÌyo›ŒMÀêgC,A;X"›`œJw?δì*v+×Ùã²ÝDª$˜-·3"xËÂQZ½ª—wôê>tu”Ð#qI2;„XóA4M°9˜¦”»È¤*�p°8à$‘Ì€ÌÉ(™Š'TYÊäì²Sì&%KN9µæjcy§Ò_3+}ά N[¯®º›Ýc»5ì.œ\þлþ*)h2™A0ÌÖwÏœÖÐS$£§çVTkM7#¤F0IRöG§±„N5)·î´GË£ç[·¿‚‡&ç%|ôßÿýßðø &–µù}£{§¾÷êÞ‹ìYìl¦¬â›?ÿ}ïäÙ\D÷€/gš•å{£G3+›f¶ýìåÖSAÖ•¼¨ -2¹ºÿôøòýè鹸Yi _þð/tP>?ʃ@æ{Ç·ÿøÙóŸ›ÅìÒéù÷¹Úö•ñеñÐôâD²»¼±0|ÈŠù‡g¯>üó?”TŒ‹ólv ö/ÞÙغóÝáÅÏnçAÓŸ¾;{ñ×t¾5 -MÌáÞˆ#,Rl\›!'f°Ñ‹‡çoÿÑÇSýaêw¿ŸþøjÈˈÖz$žlÀÆDÉeVkb öÜ0i{Ät“PRUŒj8.„à™±x«§WwêKGË7/Dw€r®¼ª8¦zð^`î 3‰¤Î˹P”òûŠ–|˜'@ ´…09? -™ë ´í‹2Bº,,oÞ~Õ?xRÞx¤–¯{‚TeÈ¡¸Šàút€òÒˆ@qy¨6Æ"˜–É-À_òÇ8ªNù“~T "‚¥x©8ç#ÀîŒò:è.'IÚ‚ïÆ1E·›f¾‡³iO�Á’„Ÿ©Î¯ÝÚ],ï)VËȃvöb”§ŒbR‚R := Æ=±@T&“NQBŽÆe€�+:㉴?ÌÇi›â\„LTàœA°&—*v£ÙÙ.µ†¸èÕÍÆúi¾wS+ôØtžQlE³SZ–WÝÙ0;9KÐ\Ž•Kk#¤ -šŽÐO)§O¥[³a1•_Ó*[’Ñi¯Ÿ,î=rº{qJ+}ŽÎìòjœ43… -Éj3©¢˜© D*“¹£@ -$’ÈÉöRÊYçÓk‰²Y©šƒ}Xi•Ú®ZÙu§nÿ¶QYWóË8kc8»¹{wãà<)!EjÚÂh““K³^|v6®¦+O_¼ûê›÷¾ˆpe,2îef*À´¥j…w?ýúåëgf‰O®<~&!ÖõùQexé~úἺ‘k¢„ -ЀH‚âƒûÕ–A„â¬)æÊæBcÇ!TaäÎ9kEj·x<Áh8Æs|8GÑoYk/%µ,&$£õ{»£‹taÀh58ŽânF¨<X(‘PXÁöÁâFÿ§¸J–ä8Êð£@€4[ÏtW/µWVVeVÖ¾¯ÝÕû2£éÙ¤K2B…m2X¶Ã"@pâÈ™/ÁñODŸº»*òÏÿ[™·¯X´SiKíiœî¢xµ¿~üìß 3 »g‘Q<l8³4óó7žuû>½A¤ nË™N�ÕâÎËšóÛÕÝïÊÍIûðâþSµ|«‘üêåW[˜H ªfªP0‚F£k?ÝÑF‚–ób¼êMZ4‚&Dz^g&ã’pÜ\ƒ×›Þ"kïËÉ-u'¨D‚$é4Is2“eË´D”t‡O‡Xé`ˆF¼ÉCF•™íÔÌ›Ùé¹îÌxÕi/>¯w¯# n”;žEùº¬·a2dêdzÙúNÃLA[)¶«¨Øùé -ÆÊËžéLd=ƒ{Ðiß =ˆ¢Ú5RÇà¶AuI¼©éÏ AA^‚Ú•–be¼`žueà&¶ÊãŽÔ9UF#lYnàgíärµ{GÜæèLôªf‹ƒ-ˆb5õæWUûâèL5ýu:}ûâí/¿þ;˜5TĄ̃]ê$4H l ñ*7[–óÛbvË‚6Égi¹ N¶Ü‰Íq˜åf¤#ÇÄ,‰bJˆÄ–[”«;–U«RÍ$/_~õý§?þ3i64˜6ëwÛW?”ËGÈùHw%™ÀP -1Í4=D8"¬"ÞÜ˯œ`…qRæ«OßüåoÿúÂrQ÷‘•+(ÑŒÐv4Íþ‹²ÑBB‘ldÀ¬‘âƒtÛÁOüÚdérÿ~vùXoÞå‹7`v,Ú"3/'×y{¸ÒªZ¼o¾Æî %*Ç)’„’dìÅíÁÑàèD„NgÚânÁ&dX–Ë×,Z Zª’1ø¸¤ç*m ƒ0={]EQ˜†n ŸrÄ@â¦UVÌ ´¬:Ÿ.>ÓÍéÈŽi7p$¹Ë‹7Õòª/�H?™Y~ãøcb%ªJ% Ûn>ß\Š¢¨©ši¥†Ýo¼€vÖé*ÜÀ€è{t4âúá”—U M1õ�˜…Wo>ÆÅFVmX"¶ƒºÆ†•÷8¥{Ɔ:¡Y—Sz} ê¡AÊj|¨Žâ%6ËçÇ<Xáá‰pr -±?Õ7Þôãj aEÜP;8±p–ûlrSî£z–W€øês�¥ŒuËØwüj·Ûn^%õ¦PjhŸWÙ¦öaÐd¶ºß<|ìÞ@éq"Ç q<7.Ç+ÇÏ«ùÎÎç“Է7׿Ym_ùÉT‡¬¼¼Í›sp"Í*ÿ¢â(š¤Ë¤Übš�ND‰H*l$è)ÆyÕì.öo7û7ÌIòzE½ZPCx�òàXèõ±Š`4tÜôå@1_„Õ]6¹›K û >ï?åÖô§âüⲞ?¬^|‘·÷Š òÂ,¯±Ã±Îj^KAÏ{é¾a¢Búq4Rˆé#äÈšÛD먼ô’5"¹„BÀRTA±:·â}6û–7*- Â*E‘v{‚¤Ú -ô¯jë„-¤ÓÓáhˆ>ÿí7¿û±Ë!%‘"Õ£©n�¹^¢ ˜D¶_?]…daì[ijYHX„°ÎƒKA:d! Å–,˜KZ2(«®(±çÏ»£¾1ànGè NO„Á�ÈÙN§È-óÅÅï¿û¦†×H’kÙ¥¬šê3«Ôá&ûZ5¾©Û¤'&«$ÍïqèÙ3ŽZšž�÷»”enØ‚qð<CÆp8ò¼)!¹"»Ž7ñ?éJÏŽ¸_œA’re{Y]µøá§|zÑ©¨V$˜[Ñ»³þéøÓ·?ÿû¿ÿáø¿<<>�‚p’”óº]‡Qùéû¿>~üIÂþ§Œ${(2ø;wÂ"JÊñt±Á7Ôi»Pç¥iZ®&é\3<™šJ,–ÔíÞòÁMQ…¾SOçšåŽåU]E4ˆWAv+i)€Ã)‡gŽx΂±jf2ÎU³�1„wR–*ˆE庽|„z GÖ<0ø5Ê–Y½•8>û#KV#˃~ÂÆ‘á¶óͼ†^$ŠhÀëˆÄùôf¶D Škù“Ý˯ªÅ(Ü Ù`Ò„ rnZ57ÄSè/«— 1O’îç”F„ÆÌ -ó¢2]¬¿ýñÏ&õ»§×SŽ¸Î /ŠÌñ×o`w¢ø)T…(’Âq£³³¡,©ã"¿Xµ—»E‘ë«{¨X\:ßíÊ}éz,KÞi‡þìôàק<ϼxãsUq=;oÆëvºKÊÍÓ€šopž°ÏiÝ“£A¿'‰‚éù-0w8P{]i�¦ 9&m0™ð’Òá¹0Y‚ÍuNx˜åTy±e´y§{¦Ë20‹žJÜ�+j"HÞGžëy>M#z¾jnîXh&)ÇËí‹›f¾ba¢èš‰Õ¦ï._5«k ðKQì,5U{v¸×ç‹÷_~¨×ÿç¸L¿šÈÒ0þ·LŸVD²U’ªT’ªì©Ê¾V’JXvB H ЀÈ"¢d”ÅFdÕAEh×uœck{Úþäœù25óÜóÞóÞç>Ïïñ1ùÂc,R¡2×Û7Ix<–ºêP_ÿP 8’–ÐèìÔ´™L«V“N‡Sñ -Zô˜ÇeÆT‡E¹¥t;5¹>KksuKKCèD¹7Ïi±â:ƒ–â4’|N¥i4@£Ñ-Z3˜mR¹ ×{)õ2„Ú5Âíõû -ƒ˜ÉéòQŠ…Åÿ·&.z4•óÓa:Ä„‚–Q«c±:='PVVY¥Ój!PL}(˜ª‰F—Éî“âv‘ÜDú˵TXI™ÆÉàˆ)§4ƒHÔ˜Z/S˜`X%Fõ2,S®´b*V‰’£ÅhÂ1̤×(%°RJ9TZèŠDJT*¡¤„xRêï‹Å:*Ȩ0„¢&HÎç° .˜+ mÇöæÊìsñÒ®SåãWͱj‡ÕŒJqP ²O†)ý㧣G’lÊçÉØ|1ˆ*Q™M¯7ë´z‡!1È…0j°BŠ"°Z®IÔj•UoôqAiJjÆ¡Ÿ““§Óhœ´t0%•O§‹“Žp'±)c0Äl6Êa O@8I‘Â!©^G@<Šù‰ÄªP”–Ž$c0 VÂ<!È¢+%»^çQ†íÕ•9<ÂCj‹–¶ù‰®ÚÆú’¿µ ÛN„Îh‡URRj ó £Šj•ˆezPmÐð[Œ¹Þ¨6ØÌj\æ°aþ,MM©‰ZÃØЙþsÑÁõ9¹nZ:3-€(n3:\mÆ%6L`Ç ßPrsµ¤EÌ›™W±±¾ØúÍóûÏfw^®--\®¯Év2L£@vHdM*¥‰tš -sÍ¡"g0?ÓnPº ‹Z¥æ�\˜4ê|¿·¸,/ZW3|íFvq_³�u£)l:‹2ÎB‘"3% 8rèT,pÙ,þlŸ´a�!©ÕÚ‚\_{GGQ°Ôh³Dj\^7$BH¬ÔRÝÁft ”/ AL&ÇäòL;‘Mffƒ×¦Ê2‰š«|mMáŠW‘[ÓTá¹|¾áê@|q²{b¨5qîdUE¾“° ñ„\�A£Jã–I0…H¬SŠNE™ßPšc¬*¶´E¬ý'}בÛñ;×ZÞï>Ø{yz0oçgë1\(@@xRTaU(,bÒ"P¶/È4äØ”á€9Z–y¼ØÓX]’ènî:8_?=Ü>>ÔÛÙrºÈÈtZuÌÒi,.WJ§ÃÉGz†(9éXrRú±t A@¯@H›®$@Ú *£É%9>·ÓjwÚÜ"X–””ž’Ê8B„Ï1 €UšQ`㵆 C§ózãöÒ¥ÉεùÄÂxÃâ`ðÝÃϯ—ŸÜïlŠ–¹„D"g3Y\Fš¢{q¨"SPéaÕúù}wŒlo ÛëÉsñ‚þ¶‚‰ÞðT_ùÂÐñƒ'ÓŸ^-?˜kO4gú,"€Í`0ùR©F.Å@+æ”ZÁ–biGX9Òâ^‰Þ¸T~ýbÑâHåÎýÿMßYë}µÖóy{úÇ÷½§«ÃS—¢Mù—]$T ܪ7‘vM!©Šâ¦ª,8âI´¦ÄVWæ8QfïŽùçFO¾ß{´»»yk~t´¯ùTcX‹#L&�„|¡:%}èPÄL#0вŒBMw`ÌR/~¼Ð-5Ç+ŒÓC±éÑŽ+}'éùý·å‰+‰¼\k8 -Fâ僘9[Äe˜•'.(²[Cºá¶üþS9§Cªñ®ÀÎÆøÎæÔÜ`ty(üæÉÄ·k_ÞþúûŽ//'¶V/´UÛ¬J¾€°<T¤Fa¡ZÈt©YU>q_£cc®cgsìÁ|÷ì¥ÒÕñãO—;><ŸÜZéy¾ØúewúããÄÂ¥œþ²¹ŠôËIµ'½ÑCÑKP]®ìBqýBx´-g´Íûp¡{ÿÙ¯l/¿z8ø÷Áü~|ú°»2Úxp=¾»96;rÒcÓ±`*K½\®…yl„Çt£”i–¤F²Ð«ŽŒ—:"–‘®àúíáå«ËS½S£}‡„"ÓH“¬Ò#n*$j´K‰¢™3ë¿œyqgàÓ‹?¾nl/<¿Õùî·á¯û·Öf{š*½nŽ+1‹…Àd¨YÚDÑ,¨=ˆ^ˆhÇâÄúdý‹»ýó÷¦bO—:þõìÚ÷7·þ|=¿·Ñÿf£woýÒÕóU~†«ä„°9|!Ûµú\³¶Ú-‹iot9æÏ{NTﯞýþvöŸ[SÎìÝ;÷ÇÖ•žÏ7¿Xlz½ÚþhîTOŒÌó:x€�âK$Q]0§¡„8‘÷D·/‡ž-µÝŸˆ®NÔ¾>½»1²1Ûúh¦ñï÷wþý×öçÝ›ïÖ½½¹¹Ø+·Ê„” $•¼2K]bJLô³!t0f陯vø‡#›sñ{“µ[+¿¬í?ºöþÙä·ƒ»[kC-ÑÜòPÈ•„ÄZʬ„¦,SÒRÇ—úŠvWº÷ï_ܘizp=öbåâŸ{‹»÷ú6gš¶WÎþ±;³·gu {±×}:¨¢\—+èi¬#?§™ÎÿR\¦ÍMVþ).É$,¼i»ÚîÕÝ÷M÷JWû.Ë«$K^$ïccc˜`âL¡q‰!P3ದ,iÂLJè—Ìtúê/83ï9ïœç¡ôí`"ƒÏõ(ˉ?Ú¹³}æí‹ÏÿùõêÏþøhugkvç˱G—:/éàrg@(ÿ'+EK(&»ÕX¦¡©7jbÅ°}ª�1ß|÷O^=üèêØóícož¬¾yºöâÖñçW†ßÜŸ{·sö‡û'¶ÏµnÑ–¥êÃ’@Ëœ†’#J£ÉùÁñ‚0ßÏ/ KëSárßuæÛíc;7f~ýéö¯oÞ¹8|wczùÄ£v;îå¹ ë³æŒ×Ñ›€çÙ•Ñøóƒ6&¿¾2ýþÛ+ÿý÷ó7WŸ|1¾¹Ð7TJøeŒ€ DsRH’‚ªèÓ<&ØJqz²#xrtiÄ÷Õ¥ýÿ¸»øúÉ浕kÙûë}Ï®¹uaøô¡ôhW²!žä Ň Dv€4† -!O0¥yâ¼³àwŽæÕñv÷l—ºq¬áñæÄ‹Û‹.OÝY?ðågkS™Õ±ºÁ¬Ø¥e¾,n(IE\JšÅè„&Åe,%;»’Ìé¡øöjï“ÍÑW=þÝýÏ^?<ÿóóÍon+ïâÝÓÕ_v.¼¼vàöbdù ¿”¤q‡Á`´Ir2Ȉ¬[% &·³Å”¼µsÄêDèÂtjk¹çýß7ÿõêò[úiçâûïÿòìæüÍ?PêÎ\’\:'"'âÍMùyt EËûí¥€y¬9½/°6]oœŒlžÈ½Ü>õlëÔöùÁëgZtúº’œFÛhŒ‚B™d*ö”Ñe/®ÏjÐ`‹û`{ì@.8Ó[K]œÍ_:Þµ~¼ëPNÏŠc9¥”r{Y–à #Ífb}åãÄ°ÀyS¡PÂ#$d¼¯AoOæÕõéæíÕîW7§Þî¬=½6»µØ¹u:{nÈu¦GXÞH³Ô€;4Ý- ê.k h‡ ›QÃL -ØŸ"e…ùܨÿÚéÜëGgÿóîÎÏ/Ö_Ý[¹q~jª+]HúxN2Úy›ƒp�FÔjTp(æ"4¼aúäÉRhº'¼0’º¾4póÂÄ¥ùÒÉáºö´‹*Ï0TWWÊZê dbé>·/ÃQ.ƒÊXO~f¤”9·‰+-××ææFò3½±ãû“#mÞÖ¸RÈ²à ˜b²Kf‡â~‚ã\ÐhðȲ«wI7[§‘}Mž‰b|v iª·®œmG*ÐõeƒJÐEd±Cz�10æ‡ 0˜m†ZÜ -¸q, îËÅ';µ“ýÚÕ…ö£7Vz_=úhsöÞ…¡;«ý[gJ—ggŠ²—œVI -f+çD= ¢è ¨Ó†$½þ–'LZ5ËH†›j—çºÔ;kÿ|wýíË«ßÜœ¿·1}þhqv0Ù•ÕTE`Åäirân˜Pì’¡äÆh]XÄ“ -Zï¥V¯Ò…˜»‹abª3pb¸u¼#–Õð”ÌËú“ˆ×q]eY+¬{í<ë£ ˆ°šXДÅxÀ›ò{ë½jLÄש:£€¶ø&ÈŒ‚”ÍNÚ@ÆÍ‚ˆl0Âz=d`Žàbþx1ß_likts= ñXol¨.ÅÆ -¡:n0-vǤbLIË$ ûÄPi´Øx”ŠZR™>ø`O± “Ù£‘nÔ˜¸`kc})zºC]Ÿkûüd÷âXn´ -Q ¢¢+*…‹±ü4Œkœ@1¾Œ},%H¼ÄS¬Ì‹õ‰h2¨Ä4&楽"æHQ’± Ì^ƒ£¢Êfvð„‚(O¥1Yi’öH¼ôÇÂáb5ù,íW¡[PYœbq²,€1[0#€UÖ@ºjÐ -kJ¸K‰uôŸÃ(!!)ò>ȃ6D`\Í -]Mé‚×åHJä¼²5[ vë* 0àô:™)¤89‰ RÅîʽº¦^s‰>UT#¹!â*5û&ºcC9u¼™ìnêo -å£rkÄÒT‹øh—®Æä„p÷îjû‡»j÷ÔÀ"¬…‹Ñdw(Ü̘‡ë<DR�ã¼m(^žY999¹¯³»!… °ì…‹S W@1žL83i,å*¶õž:ƒ”¾Ò„#œ[ -E©x¤>¨E8\°êv€Ý«³îÚeÒU9v¥kÍœR&`®µ€€Í@{«lUµvãÿÓ£lAUsC¥¯1Ø�ØlÂM�Ž‘šÃ);1/%ÕóZ¶ÖÂþáÃÊrM@P*YT’´˜vÂ.Øó[¯sŒÁë×R.VÅì±0ÌWW•¡]o'毬†û›O~÷û]:Y—èVe?ì@a;$àtùhà‚-.Âá"Q••]L@_e¯¬†¥ÙÛtPò·òžl¢uD¦-0 *«Ö{Sýj¬‘ŠfÁÛ˜íÒ¬W+ô"Ô3¾6ZË#\$$ª/ŒJZp,dÅü6Ìg° vP†a±VoÿxwMá—ÙrSÙ†_%l$[–t¤3èÌó<Ï:šgK–d –Œ]`T‡.:UI§Ó•®ê\ä&w¹Ì#ä²¹Þûì½×Zÿÿu$š‹%cÀ(m”öQÚƒ [Ö›`,9ªÊD-¢!$F0r’©é÷£l*ëu°Auº8€%ÞÈîPóGV:7ã©bÖ·_ãÓ*å ´[%=œOp.‚jÁجjnW±šº;ð+?;qÂ>Ï©ªb8n¢Ùƒb‚©í*î‰Ñ¼Â•&°Æþú(W-¢*.´^!´B…=,3ñbL…3¶æµ{Vt1Æ$„PP[56B™°B˜òðA‰©1àÌ~<xÉC÷«5¥·¾ò›ÛB‘ *-DzÓSƒ)ÆFåš…PžlE³_‚ÕÃ’ÀÈlüZ׊?Å…zR H4ôÔ°ë{O`Îè›swô¢9¿³šg5!-c:#†ƒå¨·pƵ“•ßzõ_:íyÔz\ RUÜ9*ó¿ù]>W $ïĽŽF7F¼© &øïCPXQ<„ž(Bl(ÑÚm^ƒUˆðŽP3Wd‹ËËNY{O ‡8Èå¨Â›Î@3²£#¤R®1”N3Å9eL+Àj 3«l\¡‚ßÿöÀl>%õ–`f—/?·okJÊX]BiHn_õÇv²mßCŒQ!uÎhÙWU.Æøºè/:‹÷oÿüïtöj¯ÌAd(Eçfûµà¯)µƒPv “ !ÐÆ…¸‰þ©–îDw -NN·ª”‡²>£õ€ÙÝÖVñq1uêËúøZ¶zZ0fŒ®œÇoœáÝyn¤Kðáèì{É™À�›~1:Z²äœqMijÇHWÃÕÏ^%ä4Wf!Ü`„œ‘za7œLVoÔðD §¬3É}Bû âÒ>D„"Â#¤¡Ø}Ñ=¥å>„(0ªhî·à(É›Ãëh|C›Ú#@äÀJFx £AoWI§„š jÆìãJ÷�µ÷XZN*¸|X"aÂ@¹H4G¬ÞŒ>¨)vDs¨Gˬ¡tˆq \îÓzŸ²ý#*wDëþ”7{%T‘F0„ÞW£…èŽ)ù–^©yˆY%ÒC¥–Ù¹“Ù¾Ô—{L¾,ñZW´ûUÊÅØz•LªDœNu0`æK¥4tk§p{¾Ì1›1'¼3·ü Fèùñà1tXd ŠPÅ´C5¥<à)’ŠGÔag„ÀL@q·R¼â5¡t÷s$ãLYkä·6wÿÑYÞT8WꘔصÕ8›åp&Xm¿»u[«2cæ1¼\Ý\þ©¹ù!šÝSFfÁËéNIÏq}„É-ø¨ýLOO+”Rù§{«7^pJGtg(ïWI‹·‡@áðev|^¹í§Qûüù›¿ þ˜²‡áüýøê/§·?¼ük<¿o¯>êîqÒ\mo¿@¬W“S -¥þÌݵ֟²Óïüá«šp×ଠjÎùp!zÇó³÷¿Þd¯D—ißi_&³ÁðeÌ.ŽÃÄ”Q›0©Ã”žGTà_0|LÉ-„IÌúÖií9D„„É8s)Ùã[=Û!|ãötsoƈp�ä)}HÇB°fÆ€‰N3ƒ±žæ�ùVèP–nûÂï]ÝEX“œ™ä -Î Â&&*àî~Y†éØi>§•N®D×ʱ†B¸äƒSÖ—«BûJ²þÖ5¤ˆW;Zã)çÎäôŒvçKÁ©×¾<„¥ -a¡l˜Epæ õrc¾WNA#.”Å|‰‡I$Íë]±æ¤XÀˆQ„uˆðsòá£ÂƒÇŇ4D§’·ÐÓ g*b Q{9½3a•oäI -]ŸÜeãWFº Ô:g÷ÆSÁî‰þLŽ×’? :»ÎòNKfEÒ‚iMiÕÄ:¥wJ\£*±«8#§±-ƒfÇ'RtªgçÕ§Õݯý§_`±&‡,[m/?A\T$CˆŠ ¹/Ç[ò6˜ÝËÑÔŒ^wÇ8C9œ -ÎXt'Rxâõ.Ýî9m¶¬Æòò»nÞýØÚ¾óÇ7rýÐ 2œßìn¿ ’è“Ù›úâSûìs²|/&kTn;³Åõ×tòº\süÖ³õÍ×ã‹ÏÃÝ÷»û_”ì—+š¼7bÍÐ6¡4O®~œ^ü”m¾8ƒ;\hàB,û}>œîA u:#÷Ôp§¦ÏíÎU8¼ÆG ÆnïZo^>�=.¾„£~Ö^|PÂ9Ì¢;�гÑxƇÛT)ßI–Ë‹OŒšA5èʈOÃã·B´å ©ÀS›ã/Û :Ê7`*ª‰m-»´ºwBxV¥Ó¸½»ýø÷ -åïù\E%´:¾]½û°ö‡Ï¿þç¿ÿkŒ¯ö!ù÷ø`™ÿ0¾ù¹µû?ÇåÕÛFz…ៈdÙ–ÕÙËÛ4§²La'gØ{/²(ªY¢Še[Å»Vl½öÚ7» ’‹Mö"ÈE~Tðbn|óÍ9Ïû¼W0ù«–@05�:=ÞÀ9Li ÃüµC¿2XÙ$7Mþ9Ù¬äÃU°ëkÞ‡F¿“-còPÈŸüaaëÁc³ÑÁÀ[lX£]4"‘U3¿éã‘6—Ú^1·|ëVˆ?…œ²º%;G˜‚Gl(ÅsmüƒŽ1J%¨¥Â†ŠOuq>ëá³jí˜V›(“u²~¹*ÌÂÅ)µDrÙJî�S6Bµ“I”+¡|ÃBêX¨™j\$k&TðKu"\õ -%'Á¾ãj´Úà¬wô”ÍÞ0üwnÂõÓÌöë¤RµsøÃOÿNÔ§k¨`§sÁüQ¬ñ*ݽ–ò;¸´î²áªS nÁBEWÑ Êå³ÝëêνTzæâ‹Ñê€uVÝbC*ŸRÑ¡‡¯Ò±¶VÌ+f„‰•¸d’*.ÅŒ¥}|O»{ßöîW°A”ÒÒµ«âÓ÷xlj£t„ˆÝÜÿKÕ·á&¶4¾½þáŸ×Ÿ~«Ü{" ˆH’/|üú¤ò`Íg@do¨ÃiÇÉömsï£Rš9pEo…ÓÝ¥Mךƒ·Cô$JO?¤ÛϵΥ—ÍσÙ0–u+çáKžpá*62Î溗&$ªÌ§§n¡ê -¾`õÅÝTª=½™}÷B§Mn™Vz�:,R·ûu+ž2¹d•Ug@éÅ'îUc€ŒTéxWÈ>•‹‡@Ë'«žp´¥u.mxçñ _M¹„*œ…Ș±ÔâŠ'(Wί¾Ð¢þ»ß/.-Û ¬Iyo].þ"ç÷V ÔìúgF®¯AHÙ9+]ÚBBgÞ…RGÑêÕàô—ÖáŠ×&Ó«Tm×Ã&I1Ç( µ¸›¨?K4N¸ìÈä}¨”->åu3‘¶ò0K¤Ü€€ÿXq€s^ОIµëhïZ¬Î6ˇËý·l²c�{4_·ñíþóOûWÍtŸ³r]¯í§ë‡„XÒ£xóœ×v•Â´2¾ž}²ÍLu·Ô¿š_•² n;wP9Bî¡ Ä,×9ñú*‘.w]A A-ÞzQœ¼ƒ™$¥Ü®L^7Ž>å3+_±‹ëž"ÅÉ»ÇÌÚýY„)Ú.›yê –Á9Aج^ãó>‡ÐòI}tÈÄûF”3"9Û'DÝE«t´¡¶Nm,dFA}mÈ„Š€G:Ú£Õ©R±n ½ë°pn‰’›+f"ZÜM¶.�wp!.N÷ -P,Níî*hŽ_ÌîþÑ;ÿQÞ(Õ3¤ŠâÒäðõ‹?ýºöD°J3ÙºŒ·žÇš§jóÜ€Jg¯¾ÔûgD�<Â’æÇwZÿV½Huß8éâÒ:š·igýj‡Œö1¥‹pEJiC"ð©éâ²ÛàB:;Èôâ˃U;LšÑ)9©œŠ_\5àß,¬CŒ'A5ÍÞ¸ K®š™u‹Ð;x/ÄÚà«èeròÑê‹ü€qQJvÙCªîQ(Ó2»8BÐ$mÚØyÓÞ{«SJÍÇ&´Æ~²}¾bÂMÁ*„´½DýU0ÿLÔ÷ØÔã4ðp"X$#uNßcô]Ï|}Ò‘ÌNaûŽŠBÕÊQ(»oŸLOï«;¯iµž\kŸÀx@‡R½éŧí³ÏéÛÒÎ\9¢Äø³Ù›½Ù÷FTØp�¾2^±$d&°¼˜Ôu™p¢5ûîg6Þr -©1¦ô‰ØXª]ŒŸì¼aåööÑ}nt儦™¹¥ž`òˆK)•s€›/;½ùZè]°™<™¶QÂèÀs8v¼°×ß½,ô/,¤æd -À5$´å‘Š>¸lÚ¼!!Ù æ'lz¾tÄpËùs»p!›Ne2\f'X8Š§±æ-<`¡šÛŸ<~õyçtî~gІ% mÕò1›ÒR!Ôòà²>ºâM ºÊŽÒõÁÎÉ÷ÝÉ-ôB(äºåÉwTr„ˆUD(ƒ¾îŸÞ«éö–™ôÊ{€w?2Òr°•e‹°´Aø˜ŒÑÉ¥;çݳ?kÓ{®p(ä÷y}êdªKë$Îê¹Æ J& 6Ü&lá잸›-£TÖ`Ù6Œ‡žxaÅõ¥(]$¤!!.— ,Ôh < -ÕiÅDl"‚‹úÄr Ö¥"U$28^*êdµ Ëèåuè#.šKB©->6ƒ¨`Áb´|¢–ϼ¡ŠW—-”›P3•CŒË „œlœäÆ·úðª>yW™¼µ_ºÄœÉ-fZ3¦XÜ"ÔQ˜“&»¡ôÐŤl‘•ò‚ª+z‡MvÀý&ãc¢¡d‹Žn¢¤-£Üü¦‡ó†ËþhŸ‰ ÙX/«–àSG/êÎ~¤â&1jC\ÌãTcp^½4ûTð|±xN%/¼òÀBf–DH.Ofoåüè›Gf‹/ʦ&|õýj[P›éüøË×ßî>þ:3fŽ+Cmt×½ø[bøÆMk“Û¯ÿ¯šÛ~båìlÍÊÔá§Ô_T?ù½-˜×¢š ›ÏœÁâUÝ~vúoúÿ£¸ÌvÛFÏ�ú8ÍÄc[ûJѤ¸¯w‰¤$’Ú÷Í–µYvb;qâxbg² ɤA‹¢íeoÚ‹Þôú0ýøÆ° ˜üÿï|ç¼úf5N§ëÅ™S šÆ�,(Œ*qì1Žj£[ÉŠ¥p(6{'oGgŸõ`@ Ä ÒÙÞ1.xle£÷oÍþÚºdŒq -Ó!¬Æåªq -P0dÊ+µ}«5¯q©qÄ8õÙõüêmvŸÆ¨h®ˆËm?³±3½¥lô#)gT+Xæ¨J(!ìEh؉át~-5®«ƒVéWÚ;§y‘ÅÌxFŽ!:ð0ŽŒ>V½óU³Pa¢#—xjÐX²YÎO@ı6§5cGJmµ¾UªëêägwöÓ{1LÓ«'QL…'…L#”¶Ý{!–f*`¶Øʺ?zY›½Ö[g‚3'nFts¢o4v¥Þå#X—Õ{¼Ñ/+·s¦ÔŽÃ9™]µ6Éq+;¢ÕƒÒ„õ!W—D±Iõ$þ¨´>ˆ¢kÔµÖ�8Ø}k®?GP1•d³Õ>}s$ðÉL¾DÉ]zÓ8¾ æ7”PBÀÁ›Ï—`Ó…Ñ"¤èòú×Þê½RY di/Nü˜ -öÜà Ü(¸ãjgÕœ_Ü|±ë¨6Á^ÉîV,Ÿ@æ0åÅ]WÇŸ2T9MºRpeM>Û7À%Á]‚…"dùôÙW¿žÀ´TÞ>nÿf~õ½»|ç^€t5†¿ýã?ƒÅ}ŠöŠçP7Fÿ¥=¹Õƒ³åÌN^ÿë¿ÿûðýŸ@ì8ª€(ªÁ¥=zc¶žœYÁì_¼øvýî7LndXêye ÙR› |¡ªVu6Xÿ„I~– Ò´Ëé‘L*Ô+ý‹ñù{„¶(ÉÔ.¼¹ñægŒÂiy?FËZoºùHòÁûøA”á¬ÃT¶¯)uœ%=Ýžþåoÿ¾yûÇ'{™Bx¯ \Ûôv–w&à ®èžäe?CZÙ¼.•†ÀBŸd„&h¶Ñ¸Rý -p0O:ÆìSJ'Çûçå‹]³yÑÝ}åÝÙ^‚Ä…:+4Œö—üeç›”k¥Þs¸–€©BåDm?·Ço››_6?ýÕ;¾GX‡VëpÀ“3¸™£]\je¹�pE3Œ¡9=ðº(ª t%Šj±#§rWléøHnÀ—o^|å6.Ö@e! -b˜JŠžÓ:Ÿ]ÿš"JWá!ÖAÞŒÆvn*o ¤ÉiF2<U¬kî¸3½*:££ôÓ(F¨›‚3Çh“`uÉêØíhóÐݾ7ÛÛ®‚¥ðæ$ŠÈ‡ -æBñ6ÝÕÇÙÕŸñ£ò~œ7ÜÄi"¯A_Äè(¢qMÁ]Kµm‘Ó¸Ö^Ü"f x^'K”€Àvë¹7º+·oX9wÔàœÖûQ´˜Ä5ø| -‘«Þâüö{ëäöˆ-‹Ö¤¥>»SüMŠr’P‚×™¼ª¶vÀFÞê˵µ3¸ém¿ë8V -%y<n¿F97Ï×i}Ä•ùBO‚éá-s„¹8»N¯®”De„)Cgu·ŸFç¿ L èÏò”‹“N$%%Q-’‘Æ̘RÙçû0ÁsæTo¾|ükœ…±LVb¸R¾ÐÁ¤v–õ¸œ²hKàByæÍÞCŽñöq-¦Ð!ÖàD${ - -Y™<4‚Å;ÊèïÇI¼šu³¬Kšƒ,_…L�ÁºÜ¿Â¥¯·¼émÁ_ɵ…ì-´Îšu¦YÆ -+'1¤@ÊmR3æ4/w3tº &4<7›Û$UF¥f:oÃ*áÌkŽ³´‹I ÑžuVï¸BÒ˜½sfõ¡`Mumw/˜A¼Ö°ƒ0ÿó"1Mš(g¡Œ¥Ú#ÅFÒd(™?HR{*C¸Ð\p48_¥c6¿œ¬ïR„†Ë>–0VoT¡Í‚V7üÙª•)oŠò"=‰ZÕî¸ÄadXÉ‘åXFÉ ˜…,WgDR¨no~£úd‰eå4QÍQoù¹}ú…)-Ÿ„éPZ†ù:Lpp ±¬”#-Fð$} û[ÞqJ`'y¡ŒPjŠÐÖ㌡Z=ícœ¦Ø•ó¸<Æcêð0«fó£8}”Í›Œè×篫ó;„ñÀ…rL ².•‘–g÷ýÉ3Z(sªoxs·wÞ^ß»ƒk`×ÓJŠ$ëQœÿdïè0Æåå¦ì¼é¹<I£Êa”Α¶áo¤ÒôwOÓ{!4…d½?�öRïNô.ÅêŽ(Ô2„BJ.!VQÖ!Br(#*pýH¹•Ì‰¦¿2Ï`™ªþ9lÀ$íD13œäŽ˜RšÐ`»UÆwÞü€ÌjÃGaSštÑ÷Ïüé›,m¥(3ÅX¤ÞYßþéúãß[Û/le M¡ÕNiiÚ §¥n#¬_t›—è.n‹•i{y7†ªp‘’¤M(]øþrÿµúek´èøÝ ÜŒ¯å˜J7 nxs.ZŒ¯îEpLÈb—5‡ðÂãd9„H@éJë\6û?$ŸìÇC):”Ó„›áü$íÆ 'MË‹Zë ÉPúF‰¯l¡õÒd9œájýŸä2[nÛ<Ãðt¦‹]Wâ¾€ ö}%�b#H‚$Š«DŠ”D‰’YR”z‘âD®3ÝI&=ÉLN’ƒ\AײַÚp†À¼Ëó÷¯‚ô¸Æ4êœ]¦]BNšƒ/ôî<yÕ2Áî,8-Ú-K%¼‰I L³öè.:¸ïŒo >h¡“.n›ÝE¡®–q£BÚ”>9C½RzZB¥ý£7ƒéUqj´ S«ŒY9DÍ¡®Ÿ)’¤ÔŽ¢žŽÜCØ ‡9à ?:õ£3„²§g.õf_‹‚‚+cf®Ì±‚k·g y·h%‘œ7¾=’u\ôîêü>LyÕ“íªlîD2„8Èè|Yì$Ûxy›©ˆDË–D(J’ëÚ½ÕÝ`´[FeÝ™ðzL±bU9¦úî‰L ¢»´ÃÖ™4„€‹#Ø0î iîC‰×"È°•ú¼1Q;[+¹SÚÇgåë!º@Ñ’�–μ]�¥›\s^‚·†°YŽn¾?ýê_îè%tè`ýfüòc#>ßA$VK½äZqôö‘äÏUoì„«Ñæ”õ‹¨j†'Þü>\¼“ý—uh5”ŒgM’÷ewiG/§g‡ë¯õÖ0[•øÆÆkú’Óê½sÀ-0ÆwAÉ(È•iB†Xýíàè±wô>>ùh_£rZ& ;\¬ÞŠRð–Ü“DÔÖ!£Ç¸àw“£¿?þLkqmênŒaÁ4ã/%÷p…âCÝ[ æ.½½a£LEz±K²Ò šßrFüÄÛ´GpmÉSjTa[¹šŠÒær{ßm+”¥·íé ®êYm’«ªÝÅv‹Œb%;y‚QºÒéñ·¯üÏÁíOÐe<ÊòÖW°Ñ *˘zµ‚4Wá…Æ€Ó“fCƒ?ÏR9D¹pËJ–ÒEBØ€+W柽@þü¬T¨H¬Ø•Œ¸ŒË„a—°&‚û0F`-Ö™v¶ÈqR‹“ýB™ÌfÉ\gµˆŠëÀw1º¬µŠR.gŽaEÖø€1Æ p/¾òGwjw]"¬y¦F»�T¬Þ§õH ÖV¼Ý¥vªu¦†Òo©öve¸z˜_ÿ˜n¿«Iô&-Z¦Y~¢{CÉÙ“ýYºþæòñ·þÙ#ãÔÅžîNe;ÆX›oN£Ã‡»¿_û{ròR#f{¡¶”Òí‰ö‚ƒ(˜Ý[½\è ¸bøÓ†…5›)·™ŠZÂ-Á=Öà\°Ò¼ðø´Æ· .¡@$þì^SRGw’£Û ß¡Íi{Ê·éæÍxó¾7¿¦•Ðí.zË×¢{¨§�Œ9V½YoòÅôä´Íi/¹øt㬠)‚jË–P£9.¡Bq0¡‡‹}3<ã´±ê,DsZÂm§¦ÚSˆ}°3¥ ÕΙ³wÛž}Åèƒ'œ“;{Çï{‚]Ræ1NT%š¤ÐæÕ0“'T3öû‡ âNa‚åQ5_át+¶¼iÓj¤Ñ-YS0,ÆåeJB¶Äéþì–-I8ßÅ¥>8–¼Ã"ÂçËX3˜øÑnô‡?v‹|¹“j„SUe§H‡£³ýÓ÷ЃÏwÈL+VUFŒh¾S…¸.2Ïv2ª×p äðo9<_¦QÊ�l#õmLØæ”4¦ÏàÁ¦ñÖFÐpñl>)ƒm‘vru‹”“*aVq…VÚƒùÝæí/ñÉ÷‚»_¨Ò«±¢ÍÈ=�ËFÿ–ï,9cȪ>#ß`µ¶ìNo - £Ü?å»'R°n´h¹UgmÖyéöäúóÑÍOZÿªJy¬ÔáõÊÚß‚†ÊƒÂÝu•öL7ì=AW’5ÚxCINÔ蟚á[hôû³KFë!´ÃýÏ,½å}kÿAô×(ã¨vÜ^©y™²ä`Ÿþcyóctüa°úZ°F°q’ñE8}Y&Î:èÌïoxyÿóüê³^Ö)Ëï.6¯¾ëŽ.+$˜½¥‰W@V -U¦Ù>HWïxkB)I¹nV‡ÓÇ„”À)p¾ƒRÎ`|-ÞˆCÁÞ -‘䪧ÅnÀf¬‘þŸ e€ò*ÙÌ”Øl‘”@Ô^iµÓs-8„¯Yg<®1„~‘£«„]£½\E&¸@6'¬:=Ôi[w¦×�„.�Ì(‚\)n -žeµÐíŸÀëÒ?>¯�h!¤—)J9ĨÐ*«!…¡dK„h"˜Ep”pq¶“Ñ9Ð!xD‡” ¼,ÞüËn=[fA$œAŒûÛó׿lßþ6¾ü·žë:õUg¥ò`¼µØÚ¸ãûdý©ˆuÚhø{zkjF[Â^î’ÁNU·½Ãtv¥²¥ø4”£¿|ðRXIr¡pÑUü`rR@ÒŠ÷÷o›G!XãjôTÍr¼„ñ8¨®ŒèRòQ®UªÃWSXµ¯¶Ž(5}b5²¢Wf|ËÛ+ZéåÊÔóLeš¢5+ÖŒJÝbÕX÷öR,XOÁ’è†lZOyga'×Áôèò PWŠ5~sõ)œ½âͤ.÷*Láº@z0I áI±Œ®£õÃpu÷_ŽË¬·qëÃÿ%ɌNj6Šâ"îÔ!).")‘i‘ÔfY”å}‰=öL2Kf’LÑm€ A‹^èE{ß›þ¶¾ - dêœï{ßç™lÞ‚6imÈiI0:ÏÞp]¥õ–àC¦D2UÜ£J«û¢¢ì5ô`t2Ù¼iIX|“‘B¬Ww¿”Ÿð¬B[Š•=¼ÿŒ�dÔXêÎUçØÏî{ù½3¼`ÕQ•&½$ÿ’%£†F‰Áœ�‰¢èqLjýÁüìég7½lHÑNÃ�¥·ÔCVÏ{ÅŹպÄåøÿ}€Øy¾×~Q‘85—rêpŸêðjd7£ò}R~Ô¼#ÉÈ©vPAM\³¹~§;w²Ç~ùnëPzÊŠa¶*±ºó´¸5¤¯v¨ç»mµS($cä€SÂJÓh“¬)…œ©Huo’½š]|˜]}œ_ -§÷ DÙ,L„7Û×Ož~ßý9=ûÉÍŸÀ ¢k^Ö6b+¾ðòoõøÁNßdåOóóŸüÛ¦èHæ8'[©¸U38fâO/¾ùõþÓÐ)UÆhµmÒ+ð=,»ùƒà,F«òË?ªÞJТ£Ó×QqI«âGÚÖ3Ý>ÊÊ¡’½6°²×ñ—æ`ëh !d”ÐÍ_•OŸyípË08«îT²gÀ{ÀƒjÏIo©tÇÕzá»3¿ütóÝßE¯Ük�3ü µËˆ>«„fLß_¾ÿçÙ›¿ýö´º?*³Õ«¬|%ê$¹>øóï@›RwECYèÞܬ+Tg¿®a*xc -Xí/~€Jðj¿Jkœèš½‚,^íµõaKêwex¥æÌÚjŒ1zÇн¶6Ä~aBêí- ŠKðÏnE4Ýiœ?oQñ¼šp¢/©íN˜ *´È£Ùýpñ OÛæl§ªÕ›š¢‡*¢ -‘iÉìÁ™3¼´ô Až½àˆSäǪ9Ú«kÏ÷%^öŽ?¾üÙÒ,IƧóó{ÎÏÙ=ʨpo-µø¾wøD³öÎëG§wx±'|ñ¬¹×0¤î‘—ÝsÊÖA@¤XœnTºÃc'ZÁX$Fòp¹az…ÎW(À¼¨‹+Í+X-�£©±ÎFTJݱÑ_;é‰L‹o5·äT„g„-³†g^ö¨¡ž´x+ŒÁJ÷Ñô¾3ØTÚ~…éÊÆ8_YýÕ x‰‰U‚µä3FVƒ7©1YèNð6Ã?Añ)ÎJ$…HrhP -…‰]àÅ(HõÈŽ®H�Û`s¼¯`1µ(Øy[ñ·b=ªñö>%a„t'GðJÖ¡âŸh€«x›ÞÞ©J°ÕžqzŠ–!áFñJâ/'§¢ùks°–ô:€‡õÔ…þ>mÑbˆ"À �óök -©ÎvQ|ª·î¿®°^SpnÞ ÕVÛâÔ~Ôä—"€ª§ª·¤D„‘Ì©_%åïâÙ-¡à$Š6/®O¯yÙ§9&+¨é·WƒuÍÞlÿõïÿÙAQcº5Æ¡ÄH.Úú˜—ûM¶Ó`´^²!Þh×$X¶Qª•Ë!Eë nÙœi½µæox2?hè5J¥ZºåŽu·øj—¯Ò6dÄ<¼g¯øfŸö¾Üá«”Iì™5ZVxx…BÑÜ-Ä8@€j¥¤7ïçךu(“XÔÂVÛå$_Ô#»¿ò’Ë~~ë7f°�csA$`hÖ„ø+#\ªÎÄEz3` âKÐ3±3&AéŽï–*_ÿÕ+žZJ@ü).‘S#œpKM=Ç}yéMrgGk?¹„¸5•H@“àßšé=œµðõÝ…Ö;†·2ò3sв´v¡Ø“Ý}®Þ‰7áhöq[/*¬_çCä`ÓÒÆ-yØ ÏeïDÎêÒàYMyV“kœ©Û“¶ÊZè6F|i§wZÿœ1ó*o7¥�ÛqçÈ1ˆ3ºéÏÞ…ÅÓæå_ú“GNXNÖ#ú*t‡QSÙ> -òÇåí/dpM‹[Zn ½&ïàNéÞZvŽA†ö貶_“)ÎdôTýnE—~öÃÿ¢¡Ð6W²r;>sÓÛ -ëbðL«Hó[Ý⺩– Öm°V¡W)ÂrÝ œæ“ëÅê¡ÖTaMΙ›ƒsÅÕùr§ÁJ·¹_•2Æç‹L6sF¼ØçŸíPj'Þ7Å~qšœOóÅØœðÊ�î°WÓ;Ýi±~Û&CŠwðë^Íä•T±æ¬’îÕIR\}þÇ£ñ5Êq·b@”üMÞbexŒÚ•:£cQœ#ê±l$زŽ—;ѱ,kŒ±³{3D¬ÔÛŠO'F¾µDGÐ’™²: ³ˆr£SÀUR¾‰—FÿX´R¹cu±PtÛS͉hÎà&VtŠñ� ¤)ú<IGå§Þä½[¼ë¦¯dw)™cP´dQâ¢6²×nòhç0D”&%x»zv�<öºýgˆ0Yã“œÿ5æŠ8™Ÿ"H9},y £‰`¹É—Üâô4}pv÷½æñÙÛÞÚK/9#þ‚Qüƒ¦føË`|âÅŠˆSÎÆÅq¢ƒ`¯³D"±êÎEc"`xŸ²*-W$wtcú+tź`f�$´qq\÷ i‰Öüÿ—YsÛÖÅ?J["Å@ì;.v‚X¹B\DR¦vY²,+±#ËKÒ&M›tšIÛéd¦}hûÔ‡öôß«Gáè…ÔŽÿsÎ難töZuÆ~ó·Ëû?ÊþZ²÷åà€Õ >DASHÕà{¡?|¡‡[€¨$ˆÚ§5¡ÖÐIx ªÖ—-..ââÌtg YlPœ‡—¸×ä-MP°gØ¡.ÌhCKénCY? 3Öšf£c×)‡åCÃ*уwöd‡{ZÑ.ÍŽƒgá/+åN¸ ’dµ–Òd¬ãàȆ¿õ!xÜ;¬ÎÏ>ˆØ?èÑ) ÕJZÉ`#”–ïÒV¶`˜$\'Ók'=”í’QJ 4O4§@xëqõVóW¦¿T¡q>xÚë”ÁÊ©lgʪ¡hÆ’™A•HLà¢.ÍhI)},Þâ|Lˆ€&%B˜…‚â6ýÉ•—C¤³¸ºÅejþR´G$=ŒF(,J°h06+¸†MÒ3ŒüdUT×Éð¢h±Î#Ø£%™åc« -æf°@&â[ßÑbD‹ýbõ1ß‘ì¢7ºBâ¨X!¨³1�¤ÅÓ×ÁäV 2™ÒJ²K댒âg0aZðQ$;RNË¥hŒ1?õŽ‰N‘Uš_!@Û\d'çXÜ+oÂñ+=Xã-Ób�|¢Ä¨Î¤9À;¬^MÏ¿)<!–´<üíOÿ¼¼û%E„Üz‡r¸È|{AléÎ0Ý¿j²n“!èž””KÎ[Þö¦o0B®[~%ª)©-öíZ.ú‹ûõËïÁ»{œíkäŒú�ö\í4®>…è`ƒ{m°_©ØܪFFA"ÄŒZD“à\›ñh¤*ŠÚÈKO1Ìœ”·¤èt‚ž=Ùé6×N¼Aºá»RZk˜ UkÝÕK½wã#ùm%mN„±!ú`ã—/e2çÔc¦3/=n>ôª;Þ¬ºê¨#8}Ú`ÃŽãEpwßî2‚aýŽ’€»�ýÙ ;AoE”tx]6c`b×ê/ƒÑùdû1[~ ¶ÁäîÄò&ãåÍìä}²x#xÐ]å&‡†3J 2œÂòÓ/1Æ’5Ï«dŒÛŒ…dï—'n´ÔÈØ°93½®>”½ŠQئTØg88{ŒÚhÍCûá"(O8³d´ÌÉN“å}XÝZɹ2rÎJ ê!ƒ›—R=<4ûg`6x¬Sƒå~ñ„‚b\MÜ¿š@ÔŽ©:Óùù7‹‹_ö¨«õ³êD&`T�iu½|ñÍÑ—ö‡ç8nÅÑòŽŒ@ïï1Xw§a¹¥{eõiHTƒî gAÍt{Òh)h´šd®ø‡þøôÛì’z[ÃÌ ÐÁaìèHŽ²”¬}ŸXÞ~½%7)£+öŸí‰Ð‘“ùÛÞìíõ§|õ§ÿ”‹w;u…å#|ê-ãq;v‹ŒÍ«ûÑó÷f´j2îæâW˜VÎ\ÔsÖš„£‹Ë/~üÃßÿK« gàà#Å=èï¬Þ#³r‚A‚ià´–œC¬ -ç_¡éÞ>–UƒyKLdwMÒ+'»j ¸ŒÕRlŸœHÖP÷AS«®Q²Z®zU¶¸³’#Á3:B¦’j‚Ò“ôÄŠçÞðôàê{üZ VFo¥ÚÓÎ`høcÞXým¶ø“×rNî¡(Ùþ”I½EƒNY)tÒÓÉöLÒn1®IÆÄŸ²¼Ëpžb Ýì¸?{L^ Ö�¢ëª‰ì³j¥À"Ôpå/CÀ^y&ØCP´¦Ë7芷R<t̵Õ;AwcE|Ž¤Ë—jx x•™lk|ïIçĈD‹ç´i½ÝQñ\ËÕ=`Aô,_Úñ\´28¹`ÍÙÅê~ûÅ?§ó[ðÆöê;7yé¹å¹e2Óì}@#‹-œ K0'´û%»’I…úðÙSk©»mcqA¡]=ƒ|©±�¼Éæ¨Ãù~v©8¢1@̵Yò¬FïÔ»Õ˜¢BqéÁ»ã‡¿VW¿Ÿü2Ý4»½ÏvD€–¤ç;{+Åè°Ñðr´~‚‰x…í°JvtóC4¸|d3mhoç7¿ÿøÓ¿~øùßßþPÄ°I»'ÃdºjdǤ¿5ãâï·ù¨Ñ [|Âé#Õ M5§äX cü˜·0–ú$0! ˆUSA¶ýâ¤zþNõ$ïVèe)–}Õ]kÞw+‘®HµGF8çŒüfÜåàùÇòè‚Wý®¢ -1rSSV)$Ýá”ô¿»m¥ÑQ42”Ìÿ®¸s¬M?ϾVIÕF¸7eYÏàó¼‘ÊÞDíÇ[;95z‡ÿoa¦¯ðÇÇ_ÛOJ´ì)„€¯dw(9ƒŽqÆ€dgƒ£oÑÔ�cµ–ÜbÚâ€â]” ÎœhýS ÈM¦xkÏj\«£a¤)ÆõBÁys€XÎË7¼™Y½Y¾|ŽïÂÑ'[¡ñd«t“u¾MKAWMýÔzÖ`£û)ÎEúƒÌŸ>£Aï$^[ÁŠVuÆÛcœ½ŽE‰á³¦2è*dŒ¢—Ѓe¶”I±ÁnSû±RŸB]•ú(Gš=÷ÒóŽ”XÉs7?Ð8BÛ¨QoÎÞ2Çã…k,`€8xvê´+;S³¿ÞÃò^Æûƒ›¨<¢�Û(–<úYüä2in=ƒð?IUR[)®�Hìû¾‚HŠ"D‘Z(Ù´bKò:Û9dœŠç03‡¤rIþfšN•J…Ë÷öÛý4oÌÑA*„qDH[#(¡vö¨d·]}^ïÂœJKoÓ=�ƒnÅÞFpÎ0˜0Ø•ûA„0yJÌÄ«2芽6cQ‚K}_"|/ -KW|Œ*Ç*y^~ܼÿïàöð7!„Zºçys€×ŽWŸìâQŽ6]cL©Ã:íÖI‹ VÎÃŒ\(ÞÝYƒ;ZA¾huFÐÇýùÛÞäQ .Ú|ÖQÆ’SÆùµê`<ÔÒtñ->PjÑ`#xµ¬â⥬:‚Gˉ”峯—¿KÁ²Á÷œáÉþYƒ ðÎœ>q‡÷~ñV¶èP5¦F(]1Þ'©[âq„0àÝ mœ�ötgZ'T ¥?¸XÜ|ŒÊ7¬sNŠxOÂm,&‹:cá*?ÿ4ºø‚?Jâ=÷\ÔÞËé°&ÔZ&Ñ´à´+E5R;<掛 -â�`ùä°Rª¶mîW¾mòáaC„ÆZ4v]I?&tÕ“ -¿g`,¾œb‚‚FŠöõ <Û££:ñ†/õôXDm'÷AñÚˆ/QrÁ·GMþ˜%eÐjO:Àž¨¸»zó-)_ÒÆœ0’K`e<æ+öÕÞ&9ýqrõwRB§›2Ú LêLpD蕶ÊÊY:½Ÿo^ì~Ê/ÕŽ{ØT÷Òb#8¡:z!‡×V¶³ÏQ:`YÿƒíÓòPïm%{ŽQBÌHŸ*¡¡U5YÅYsF/¾ïøЉÎѼ(ˆZ3¾‰‹#<çõŒâÉ™8Ã-í.à$ÎäåâÕ?Ýé›& ¡Q¬«{K·ÿœ·Nä`£ô.÷!Ê"¼Š ª^é^èÑZ´ÁäŒ`%`+ù„sÉ=Cí—?A„´2êð çzpäÀÈ%^ÇËw“›¿¶_E ËÈE£]²xϘ%)MDëD°§ôw‚ª‘%`úëlõyýúßjú&@ñ -eàUÉ‹N”hËê8¨kE -1F¶—AÇÔ¾žñZ¯Ô`#£aÍ ºBÊtøÿq,&oM¿Í†‹„úÓ“¦jŒù} FÈc<»,ß«Þi’IÖë^~óÃAÕ¦#¥5@Ž<e•1pÞ{Ô”PO´Þ¥oU§´"جAxº·Á"ðüë@ˆ#4Á€§¥TX†í)fÎ9ö.²«¯åËßÂ⽓3£·,®>9ù;ÅÀ -øLHÄ[ÈuJ`¥,n³é.?ŠÞºJx¸s½ãÃ[R1¡õtçÏŒÁ ¦Ïâ{yô �£#„ö({ç´:ÃõQ[;& RBöpgŽîœÑ_@kˆ?pˆŽŠÕSýsØLXq¦¼‘·8îÑ_¾YÜýcóñ?J²="LàÄuܱ¨ØàcBÊLŸÙéNÖ•áÑBÔf<tOÑ)�ä´:‚nq†øX `GÉyg‰k3¹ ÔÚ–\*þ™hŽDk¨¸c7ß&åãúá×ÕÃoîì”'M6Æ LV°ú\ ®z“—fzÝAÄóAÞ%„v´òò•^wÍJÖÂNðÐsJN%w2¾x'ygÍnÐìˆ�ðf ö1tdMWôÃáµ›ÝèÉ-- £&Žë]Úñ¼š•S«¥…Æœ\ÿ¨a6T’ t£hw]H”ìQÿ䵓޴x1ËŽÎó“+(ÿðÇj›v¬dãL^©É‰TzzÄbåÝôVu€(ÕÛ¨îšE>—€ Ø ®+$p<\#@)¥À^t¸ˆåBœ¬Tàëì1)ôú—º2d¤¤7¼œ_¾'i÷¨.5Ø€2ÖYÔ¹¸BÚ .jq±¤ˆ3Z0}ÑZqZIñ£×»ÞAKîhCÚ(HeÐD±µfÞôm±ûW°üÌ3,ÔQS!øÄIn³Ó/J¼£õy“Kàf ±®C]`fÑßàvpfNÍ_ -YrFÑ›Ür›l¯A»£ówƒÕ+5šÒæ¦m p½eäX4õ.üPÕÜ¢F™è)5ÂÆvc -ŒÐ‡·Œ‘©Þèäö¯FzI�wµ1œ¾ÚèzZ¸Sx8(�¯Df¶“Ü%H»ÍyøjÍŸYÉLõÇàyÞ-'Û_œá½žà¹xOCöOi}ˆîCˆ±oׯ¾-žýì§kÅpR¢e¶úÀšs,T‹Ijt(ëüü£?¼nPf“´(.8ÍÚ§hFhy•–,èC79Gýœ’5KÅ¿šn¿™É¬ÅHƒã¶.jcÅZ0ÒSRÈx}ÉØÄ D‚úP#4ÑšU)»BØu‚ðuN>„‹Ÿ°>Oªü“ -–Fùòµ„wì¥ßê½5¯MªMå ÆÓR“çu4 î*…0™œ„Ë1½NµmtÄ>«MŽ[&¶ÙZl*šS'^±jÖfü§UÍoÃÌkuÜxôŒRòCʪQ ùØbN_:ésÀ¯¥½ÇTpÔ0D@ò™_ÁyºÆˆ”Þ™ã4ÒÓó¿8ÓûŸø[<È -wAøb.z×rø®D¤pzÚ€×ÇN¶[ì~õ¦÷b°Â”«�<6¦¤a•°`ÅŒ1÷FoúËÏfzI*°A|Cc¢%D•¶ÜdC-ÙÅa#®ÐÇ”IƒÖ¸ÑÐû !aÍ©žÞ0ÖQŽÎÕøû嶛ƅá7‰É1ç1s‚6s`Î'``N!¦¸2nlpJÔ4±ÔTjå¦Ujõª7íE êóµ¿ß¡RÖëföZkûûy¿Ìùu僽)l_hM²Õ &Xñ¾aG«V0å›éý3,¹ì?/ò~–Fòr€bÐu»Èéî}ž}¿~ýÑ]–8³XÑ 9¦¿ìŒ®ÀvpØŽ6Þ`ë¶ÔÓg%š5‰™âëÒk†w|Ó;½U‚S4©6SÙœH1]ss”Œ‘³`ˆê-ª¢€tÆ;Ì%SRŠ¬K7úZ§8fká‚„/Ú£+bO`¿tcãÛy&¨ióhö®=z‰|qŸoºx÷{˜îѨ¥ÞÓ¯Ñðx¯ÀXÄ^\ÿÇð‹;ÑYÂÕ”Ú´æÝñk´÷É“üÁ!¨Nö¿ÍvwPÈ'h‰>{LqV‰s¡ -5}å§ßìøÓŽ_5½å‰Ê˜K3æÔ´Öšãîp$vºŸ)nBZ‰µEi¨;ëáê= —EÁ† ®®f•AMñFBÝ;L"¨©â¯°Ep ˆ½h΢Åwñé{¸Ã|¡@B£Ór§^ow–¥z'Ëø,Iôà2Ln´pƒôqÄ9ÄY´'oÁ -Nj.S¢*èv¹+Æ7:v¼ Æ_!R‚¡HU1ÌR2]oƒ3^úf±ûuxþ£Ò½ ê4PRG¥ª•ÅD°‚y½—››OÇëÛ²Ô•ì´}òÊMöðOÄÃ<käYS1'vgÍJ÷ðd›1lÍOvÞèË -6U #áÕ>#Gé#2ÔÕDÒ†ˆBˆlŒÔm¹sAŽª"^dt^j+fª¹3^ë7ì´Õ½&oÝäš®9J)”úÞÞµjÍd+_’òáId„XuÐÉ)VšŒèùý30*OÉP£ôòÎ8¾’ÀgŠž¸á|8Ùp’yc…ÖŒøNòuüâV à3Æa¾æ÷×gûÄJð3Osõ|ÕRÃÏaËftŽ§™®ûN´öâs-<…ÀdÊ#%cq¼üv~ùKú‡l©jbD{š;’ŸåDD�ºÁ�Û'Wx)ÁëLßœß|ž}Ðãm þúÔôßþªòÐêñ òÐêÿq¿�z1ÏÕ endstream endobj 26 0 obj <</Filter[/FlateDecode]/Length 38963>>stream -H‰ì•[oÛȀߋê/´ÖNlI¤H9œáý.J"E‰ºÑ–dY’[ŽãÄv.HRÙm‹n/(èCFJÒöÈÛ݇¢öaN~–-Ršžïœ3ão¿ýÿáüÀOE)Â¥k”"¬QŠ°F)Â¥k”"¬QŠ°F)Â¥k”"¬QŠ°F)Â¥k”"¬QŠ°F)Â¥k”"¬QŠ°F)Â¥k”"¬QŠ°F)Â¥k”"¬QŠ°F)Â¥k”"¬QŠ°F)Â¥k”"¬QŠ°F)Â¥k”"¬QŠ°F)Â¥k”"¬QŠ°F)Â¥k|>"ÿøLèU?~~xÞ^«×«JWݶ²„û|õðz{_éU—M÷þu°Û¼Þ½¼]Ý¿¯jð‘ÀKrµ™oW7Õ£ïFVaP5»ß]înáÃáfu³=®6`¨¿¡*V…ÇŸâ}…S‰‚yD$,Y®ª”<ˆJ%BU$V_üÇA˜òŠ" Š ¡êÍ~yE¦”UÆX†A²¼ŸE©¨RAUÿË {Ü͉é¦rU™Vn+ƒ -W‹)X¹ÛÊÝrâ^î1Ñîf«}wém!#ÿJ&Ì‚´*Í`ûv·Ùæ-¯Zô*³êc6÷+pWE?˜¹º¨J‚X¼Ÿ~õ£&ì¿ü~Ò÷金 FQ}W®>®P9<|Œp_~Š•ÄJÑþqÆ¢ÖEfªS3<1¼)±'²1¡þÒˆWšwªšCQmkî$L·V¼4[sÙZ³;WuƲžXáÄíœEù¥—möZ×4\ZKQK9Él:¡æ¬ÎÒÏvvvmt¶4>CnΓv4X{ɶ‡^gfÏãñ½ckªÇâHz¿©¶‰[háˆ΢ÑÙ›Iž¨gŠ3‚0x%ÆÆÀë®;ãWNï™/ <ÅÉe;ÓZcŽF4œ´Æ·â]röÉÎoe¯Ì¬©¥ñè69ûŸ¾‰&÷ÙG'ÛáhÎë‰Îˆ7•Œ¬¡D É“õ¶j¥z0ÖÃiyŠ1Píq“¦MÚ>D¨‡oFsø‹"¼GwŠsÊÓ´&Gœ‰ZÙs;+Än9Ñ™ÛÙhÞ‰ &<Šd-u¢y¿x#™™bôÍ`ÆIág -¸#ÑÞþ¥õ` 9Q½…êÍj(â”6ÒúŠ1$ÆÐðçP&D3bOšÖQ�Cú@¤©H7Zúñ[C_WÚ‡œù¤aÖD=UO5;×!‡j›—¬ukMã°¦Ö$Ç-˜.žjÄ„ú8¹U Á©¤÷êM«‰c²&¸²Ö×Ü™jŸêÞÂlìx9Û|L‹kQ dsh·7a¾³“5¯DMÉ—iBc(îICírrlø'ì2J6XÏâþ¥Šf-¡˜X͌׺;ŠÓ'{ ä~á÷ž[íK¬H¸k38¥Î° ÁÛ¯Õ™½õ‡·v²ÃáB°ª3~ùþo£ÕÅÈæÀMvéì«hòžøg’±ïa‰vEÚi’6¨A£bg¢ðÕyCŽj‚aÃ�⎵°@VŽÝ©—^vO5YÚ<ü }ÑèØÝMX¼ÉÖ¿i¼£ñ†FK#˜?¿ÿëâÅ$gÍéö®óÍï“ù¯I´¦Ñ -™CxÒzPkX¼!‡Oy»©vM âǼYEz¦ºSÈ6N$k„¬ 2ÇŠ]`oÉÁî)ä:PÒ3˜Ø$]N‰ê‚#’6µsØŒŽxŠÐ$û$G°,Öó|rŸŽ_qFapR�zZ×8‚,ôª®{.…nÝÖf!šB«kn%SŒ)2&zxô®e³À‘/ŽD{f°:^¼AFv«I¡€“§ ýàX>æ4•¦º;Óý91sx.„!ëYzùÀu¶€@dOh|![ySö%µ½Oo)ú •¿jçñàÎÏzãW_ó÷Ë7üÅ 'Ù7_¥ËF|Î+íÇMÉLJPGaCiÃð{^w 1íñÕÝŸýì‚S[G’KíIR|ˆ‹wÔ»ÇIž¢÷‚ô‚8…lEsLƒs?½îLœö¹L;A÷<=øù3Ò*h4× ¾íM”ß,o¾ŽWØê^ôo½ü Ï%}ˆÝ™}h`‘vk¢]GT6 vN ‡š»P¬‰æÌ3ç”Pµúz8‘ÌžâŒÃüåt÷—“ÛoÆ»/%¯Oƒ ÄìöŸYýKŸ‡£×£Ío³Ù»ÙöËÞé}SK°ÑzWÑøÎJž)î\ 7x¿ìÈŠ²Ñ‡=^“‚ºÁA -·ÐÉOêZCô°9Df^ÇíIs*Ysì,ÝÁ5äšá¶ /51|ÂÙ[(™ˆ[HëÂ1%Á --aïÃâ¼Õ\8$Ü Û++œï«ÆÙµ¦ó¤®7ÌcÞhâ4ݹң^Éß½TèŠBÒR"ÑGÄY`gîtwé[Õ›4Hi)FFa3ºSÅÈaç6$_ÄDÒƒ#|p¬ð’+ӄاŠu]$‘dÕÎà¬pÂiMtŽÄ°ŽºÄš@Ú%cŒœ2Š¢gOläк0€Ú…åÏÃÞõpýÉ^þò€·;gíñh0 Î=»€Ó@¶Fûý…ö§"d@uÇÈÂÉ/›yŸ¯žÿN‹NÚÅöÈðgæ?I.ÓÞ¶±3 -ÿ•b2‘µp÷ýr'ER”D‰Z¨Í’lI¶•ØÎ8iê “ÙšN§Å(ŠbþA¿ÌÇþÁ¥�aȶpyï}Ïûœóv®${ÚCtFÊ Û…ýƒ�ªw–Š?S‚¥äÌt!‚?bœîÊÝÇptLÊ£WìµhA²+·$ÝæÏe{2˜½ñúW¨¨ÚÛkÅ©°>ÐJË4>4Æ(1ÀΪ…lÜôhEpí¾�Ë6ü©/Hº1“K¯wNžÜâ•äOãò!.O$Ûý+=[eË›‡®~’½)&8l˜l@ÔKð^/;æ‹ïÒÉ{¯{tâKÕ™€N²3ÆÀ®ÚY„< -^ïËö˜‡Ò`VÉ£:öÊöaùXÁ¬“á½ß´Ä¸ÁùP—æ�,%¯uã¬ü -—aŤA™m!b…êj°Ž ÷52†S4Y¯Å…´C /J’Ðûf¸¦åŒ<Œ˜òza…+ô>¼ÕaÔŒRÒs»…;ÔH7¼™ Å´è3rدfðPÙ@´4´X·ÖPµÀ5‚{x WËÒÁ±“ï ilž:”2r"Ù••œÀ(¿wÀj5Ê�„¡ÞZS‚ÌPýñü“íE§:Ÿš²8ÍWí¡,ÎF™ÝJ�™H¤ô:hŸ§ø²Ù•½™_ù½WñàÖŠæ°Å(Ûw?‚Ò¨5ºÆ*3¼DŸê>:wêwÙìQt†œ‹ƒþŠDh[òòëþøþ·ßþ{÷í¿ywÀ“¾ÞY[ÙîÎÞ VÏfg‰N8µ'“ÊŒnïÑÉì쎤üÝö'^~`Ô>äø)’‰—ììh&û´|¸{ûÏÉî#%¸í°¸Ï×{—ßå—ŸÎF\ÜýúëïauÛBÞB›ÃbH¼E±‚e[ÍQ´€îAÉCVíañ¶œ#êHh:R~MIãôжŠ5mñ°‰¾ —Arm'«—LØVGVçÎíÝ»Ý;3ÚaoP -¡4Í9 Æ Ú„CÐÞBNp+Y/سSÄ�˜3‚÷59¿Î8S\iñjŽ²ÚŒñUC£¸€üúD Peä„k5àSFOsgè8d3ü×Þ–"•Œ @p€6§É¸m)Uô’åc†%W§u@ìeÓ€máûàj¶ uQëq0nõÜॄÇW¸4݃Ž%½_§´—u4ÖHÑâZÛ±v¶ù¾Åd`XØ.`Mr¦nwúÜü áÊö‹áô”Í´s²›5v·EõÔ[~ •Ìí,I4Ä°‚á_"8Ù)_~J¦È±#ÜU�‚2ý9¾ôOYõT~øó?~_?þEt‡V²&ù‘ä7¬dÔ¨ÁÚ<ï|³¢µŸßÂVŒpk'{H¿no~žßýB«F(îÜŽ7^ze¡Òëtt?^=þyk û^j¥»xü”/?:= òõ÷ûO¾zªq.2¼æ/ô -‰R!A�Nàs¹]ËñjdH…ŒQ ™Ì4w,£-ÎÁÒ<ÀV,ô&Ÿ½·“5ª k…`ÛfÉ!Þ -=¥¯uX¥¶Ú#¸ÈÌš=vãKâ/ˆ7w § ŒË«]¨¥Á"¯Æ4 æ|<'˜ðvðᢩ¶•4»h‘ÄÁŒÐ³„¢–û2ãÞ°gÝCö»±áÍAB` -ËRœý·¥Œ†Ùá3¸Äyµ¦Õ)‚ƒüÿ¡¿ -úÑí)&¿{„~XVu+\/‚ -ÍûÐ*ˆª UõîëHv‰üi3ÑÌqQ`¾hŽ@*Dnòŧb÷9èÝZÞÔ'Ûã§éõGÙ)piÆK¯»M‡·ÅòÛ»nò¡—nœt㤣Ǩø&*žÐ³ÞàQõç�šíΆëw´cDÒݪX~;=|®^ý2{ý³ÕßYÕäúÇpò†1†¼=V½yT¾Iªç¬ú@’=¶d§Á*X5çÀ¤Š†÷éäÝtÿ9š¾eŒ±ìÂm'ÊÌpÉÑï߸Ý=Næ‚2xäÏŠGÕñ¯aùà§þú=ÌÖÙË,ˆ3iˆêjYÁºõ(éÔ!Î$dwÜhÛ¨ˆbWn÷b·ñÅ�ô²hw¡ fh"Í:—µF“:ê¥ 0LÎ<‘ûœ2jòQ“÷¡:c!ÆãÂQk”Ì·yù ·¬œaM˜‘B¦²5FÉ5c࿬ÃJ“Ss¼‚bÉBŒÐAxƒ5#ùËLvi+h©f*h7èA&`Z†¬å¥ûóب÷[u|€q²Õö -p¡ŸABAíf´õ%ÃËœRÄ‹ðRh ö¤…¬‘<k”5Ö›:«¤¨,f^Fôœ‹ä Ù%ýá…‹&B/˜^Eâ5élít‡[ÅATsàG«ñå3æG,ëuj´”¼¡Žý|iE#l;ìŸ:å#N—Ïþh%׊·àͲ)w1+!ă;7ßµ¤@qGf8wó=I.Íl+ÑFåãüô÷xüÀÑ¥ê/œüàœÞ+’݈Áù<Dø„À|’\{ƒ7Vv’ƒì$oÙ’bÀ*†9½Ç( ¢ˆhNüüµâ”¬âu*&8§”¼™äÍ1ójÞ<Èï²É[€‹ÕRÞìñfàpÑ>‡"‡,“GÆ¥¡V£¯º.dx¹&Ro©° Í™Ûé+Mo¥]2¼ L„m¼¤´¯2-e’>m«@+79SÀ9Jµ}ÃÀGÀ„–º´”bp0ý’¹fö]¼QK_ÔH2´BÔ‡È ’Ö÷Âÿ‘\f½mcwÿ&-œØ¢(.¢ÈË}_ÅM”(J²$Ë›y‰c;‰ƒ¤H<mf:E0@·‡Á¼ö¥Ïí×ë¡QºW÷žÿ9¿s,øEGÀ»ðÓØfI¦¯‚la#CÁÌÏ™>Câã¾Ð±m,WŠÕh ‡i¨Ñêÿû¤¨Hgü»×J2K`¶h£óåÛû÷?uxk¯#Òœl‹Š‹ X3Åfðp_I¡«ß¾ zŒ¬Ø56†1FJÖU‹# aTçAºò??Œ²¯nq¡DK†xÄ)Í ñÓµ›çï|ž#\ö<»ÖƒM:}›Îœì„•`9qkÙ›öÍBò48+ß6_£Ù£]¼’ÜzØÜCfXE²*sxž.¿Œ·rZ_öÑ�Ò^|²³]Pp'îèN Ö‚QaWyó×·=¬"€%#1Õ[ôž\ØÖ“I¯oÛóáò£_ßiñÅSv猚yÅÖ]rzÙ¨À‰éŠ-N%bÃÑaÄXíewÐ2-ïˆj;q˜ÇöNIåsJB>O2Ù˜ÊHCmÿé°bWÙF®‰³»í±çø(Eµ¼äKz©:ÍsWau#X¢¾µ^1�Àrò¾’°}Ëfa~ -æGEm£uÿØO¢½N1JÓÃÙà-´bQxtîW·èØ9V=b4€‘ĨÐm»(¤R²Gñ§‚û$Qšƒ.c€í—Ûx³¸º„ñâáF{Ñ%p0¤€ê5Îpƒ.ƒø³£9/¹#RtŸê‰Iñq±UŒL”¼a±a¶õ ||…ÌÌfl;\ ��ËHPré¦g:°JƒòD pò4È&bäD²›rõÅ-/Ug–Îoycˆ·Z|%Oͳٛ¸~”gÙú6Ü û !Ñ^ðúXtšÑúóèô‰àxÃÀ;^|0óW´B£Òƒ#ÀRºþ�Ó§YÕŽÕ -F¶¡£¤ðÿ´¾ha“~~ -×ê¢XI ÎÜ’ŽßT«æðHTÓzóèL¶4qi)‚!TPÁbûýüꛞm ÙìVöj^xx0y\„æ.FÍ[@Ý7û’§Zã§bÒYÈ!¡ˆ5Œ´'š’Y×µ¨#N‚#!J > -/ã"œîFËêµÜeãa;:G”€D«½x m‚H[1À«æŒû$6œq5ƒu§¸A)P-p-*#AðG4§›îLÖrn@ØX“¥dôAxr¦ûSNŽzøÐïµéƒá±4²˜,Ntq29Åû¡z*öõ‚äãâÕ×oÿ–œÉ~W‚¼™>6ü…=Ò–ÍÙæÃüä-EÂ@³œÌr*Ù¨„gµ´%ÔžÎO?ÉÖTµèVT38aoà+‹ò“n.'&’VJF©Ø+¹Ml¯Y_ýÁ®(‚xÅäÃÆ›/¸ÜíÓ?(Éá¤�ERs¦º7w’#HËG©\½»þüW§<Çý²Àmdx«drtûsuþUöíø(ž? ½4µ ¿|—¬>Œê›O?ü’.o÷z -üYlo¶�?¿6ÂcÅjš³'Ájh>�3à -ð»¢bVWHRËžßþ¨¥³aA…ZÉzóúÏëûoVq‘ägÛ»Y-zA ´¬¹ ù2¬®X¦C¶Fû´Øått=D¬ÆŒVŠ;¨Q2…o¨T°#ŠÅ-ÀUnrV¬*,Îà/»ä%%uz -" Æ…Öàw†~¨fÑØðšsá9¢÷úVÞÈOÊùUWò0,’YÃHÑÝ@D`o¸é4 èB˧vÃ5Ú>εPça ɬfÇ5¿AƒÀD`dTB’á|�çP¯éŽƒtÉAZ¨¨Lßm¥ÕZ_lE›ËÇŸ%`8]×KÛ£<ož#—¦X<Äãš‘u=¶œB”ÃN B˜ù¹ì,@¿À$Ø#+…hµØ1G†?ó†G°tDp_Les¬º ~©î4y};¿x2¢%ž—Í‚øɈK˜À§•ç7ŸÿÆj‰îNýäØðg¦ùsÙ™ÊöxqôðøÇ_ƒúÉ…¯5¼Ã 9«›róÉLO8-Ïù1¥DF8>Èþž†Þj&Çǯ¾ûù—ÿ®¯ë³½CŒ¢„nÝ~Th‘Éòw¢¿‘Ôq8¼hsG -$k,·- pÃMRßðjÒát¸.á3ƒ÷ÊÁLñ¦›ãÇ¿ÿúŸ•íÓD±²×ª;Å™Pœ‹ªTKêdWð‚L×RÙª -øfdD6Ú}ùË¿»êp1'˜\bLdÖ‘ƒ¦òéÕû§®¯¾îQÒ-2¼·]Œwщݘњ85¸Ž +gFëq:@"ÄG;+>슾æ, «ÖÀ®Ê^pˆ¿hx’V;Íž”“K€%lgŸyÑ'j®ZSÌi9¿cÌa;ìÀÀ³}Ø0/Å…Fé*Ê7ð"°:¨²C+P¨§‡áE’î3²í-¢leþf¯Û¡Å¾hÎõ²¡YC@n—Q»¬AôÖ»ðmè¹’…r‘ì÷4¸1^ªX5.´�]AÀ1/xX¦UówNµSün “+¨ x�š¨PÓ¼âÜN6öp! '7éá½.,Sý¹fõÎHÖ4¢1µû—ÛW„&CÍŸÙñ ->àŽv¢Ûhíí´§‰Ç7“³/ÙÉ“?½'áŠmݾD@ÐRГB-\ÔuÿÈ^Šî:©ß%“;Z°9%Â}a‡mÇ!ù3'(€,æ‹S^öDŠUUgŠÖY,ß×õú GÒr/Yvy¹ÃFôpA~i%ç(_ÐËžIFÁJždŽ°=;ùÉå¹ÛFzFá;Ùµ,Q$§÷ÞgDR±H¢Šå¸!+oìxá`ÙrAn7ÏhùGr8ó½ç=ç97is?]!Íû—ÒrŠÛŽ$g$yc9PÍ2i;Ü©ÞÜðEÇB4`¹3ËïúrçB×Ë ¸¯—ßìlOXPµˆ*b±§=×¼.¨ÛÝ÷ˆÎKlsˆE(‰iO4³òÂKgÐ*ÎæqÛ>¡/ÐNöæ0s>ypÃît¨‰Rd»3Ýiy5XQø#é¬DмSõÍy_Ñq)vëg×V|…eÙ,”ßÆæXGr‚8É>´”Õ}ÔòªºÞ'ÊXûwg$?|qÂŒF@³øAvkxãïm ÂmL+REɚ韒úhøST—])€œ¼oôhg§Çvó}qÿ{sýÝN7HËNVšßÉêãøRñ:=XŽIm=÷Âe19ª^×û´¾‰aøí/Õæg+ßÁ½tF¿¼å&ìu²üV~ËÖ_¬lÇÏítïä×TÑɵoºão°«To!%Gj‡‹!& fBP>rYÉM¢�C6K']û͵•¯°/'9Xá\Ͳ°ŒvZwXFNÞÐXíô’!Yºx&ëÍ‚Œà~r’=Æ‘’§ª‘¢Ÿ³‘Jz¢(% „nÀB˜–ïgªÄ‚ÍÄ–L5K^~§ûœáÆËŽqygx-îÔŸ•Ó×ɺ¿ðÓ}5ý@´‰rèx3ÛiT=ÓȯìŽ2ƒ%râþb?²ÐN�øc}ù¡nßàWšÙ2Í“òëáÙÈ"iyg#Ð{`ó;* ¨É=º zôF1›ÙêC:¹Eðž?7Ý9øùó"`¿b¶~t¸\~¡ož]nûz켘@>URø_Ý¡mãê3Ç´1.Õhüt‡§‘³™æ^Fù±žux€´8,vÏVÒ õ܈®âÉûrõmvýk¾ød×xøìê£pEÅ¡hóÙû°¼í+€^¦Ùõbû³ìV’•1IJûéêí¿ÛÝ/fºCöE÷SؼeYj÷÷|ýÕ*noî¤Ëç¾`6oülͽlŸÍÞëQ'šµ.iˆñäÞ -»±Ã{F¸VÜ¥â$g&YS$•<ƒ.Übcçë°†¬Þá©j¢U^ݺÙr »0O:}ŠéÔ«õÒ=á[vÏh†WÀ¾Ð›“ìè†v¸†@ÒÐû@°$’ÈnD«!=%«álÝpEדælh#`‰2ÈŠžJ6§ÉäݤûZ]þ7iuß’àɱ¦ìÊK–quÀEu»vÜI’mG¢3™¢”Ä98w¢ -¼—?ò³ƒé/ †}éÇ;Ó]¸þ‹öÃkñ‡“± ‡c9~=0_j#)QÍÆpgšuÆÁ’ÑŸŽ}'ÞYÁÚ -¶N´oWŸÒ¦]µO@ÝéȆüÈgûK?Ú»Áú\ðy#’ûRŒº¾üL¾àW½÷Õµ!|{Çã}É£à[°œùGõUœ‹‘bTIõisÈ4M¿¸î_0‘²ŽôœžÕ^=sX«vF0{±¾†zÉ&)Eó”M-0ƒë£Í¹“#ÊIš‡rþ.™}0¢=ó²£Nvb*ê)‹Ðú“7Nõ`øWïŸþõî/ÿÝ–bˆ¥@;EûÆ+öZ_I -6bµûÌXE£uÒcÒ<Ñû0y/?êኢôåoÿûüÿjÁ|$§#%çõªJº[t½¨3Ì*Êw‚™ŸÊîHOQcÕý¹Ý~+æb\n¡¡Ðh‡Z±1_”*p˜–?>MP{o>H´<¦ÓÙÐ’V2 I‹ûéËkÑËu6ÒX¥n¹ýkV_Éþ9M,ThÜÆêmšç›jr3Y’é°“ÞÓ×Hò{ŽvÙäˆÁFL{Ň8»‰Ëû :0ñ“SõìÜâk(áôœ;ŠŠÐ*•ÅôÑä-¹ Yº¿”™¨7CµÌ 2‹ÛÉ‹« Ϊ�%Ä©#[V#½Oä9ÿôogUä;ßñ£Î ,§(BàhcÔwœÛbnÐ)ƒ -}¡Èh£(GA5+\èÁâ\ -ÎÆ7$g_PjjÅkÎÜI÷a}/ÚåHñzò÷Xÿ%«½O®¦›ç¨½=…OüË´}Lb!¿˜ŒêÌtoÏ;~fý3€Lf´åŠù‡åý¯åþËȪ°ÙÛ·êèŸ -Î@ø¦SQ÷²IˆoÍp=‚$úbGìdsqõùöãï»·ÿDùN/‰…n7^Ô³h’í¢x•$›¢¹ªÙ˜Fæ/X+ýäe{Oð:”_ŠzOšÑRÐ3¦9„iEÃGÒ²ÝRâæûŸ9IÙËF«˜S4LÐPút»Å$E½$2NÎŒ“FÄð5‚#)®™(•VÎü -@žbY$JP)_z®˜ùP°_I’–b¶L$×° -“•õ*Í÷ùäð’Îåôõ™~.C!Ðœù¹Ô§!ìwòZœH4ŠA´À„õ`£ø«ââé\IR,Xæ/Yɨ¼-/ß³wz@Çitïr(ú?¾ˆZÃiu«I±¤\˜Þ`à^€Ð‹%²}F´Æ~é>Z0¥÷¡1rc±,ðì‚D±¢VŒeh³b=ù¹‘¬2TÍx»0?¨ÎÅXK¡Êvùa¶ÿ2Y?/Î »´¹UìÂZ‹óêqºú”ׂ3Á/w_£ú Ø56ا‰Ñhn'S(ˆ:ôP73ã[ÜrÙÉÖ)€¥½`³A\=‚–a#jÎIÊ›-ù×FÐ1GÅìꙨ�õêS¹xï$×aù€ËŽYgŸ¹DùÞdïØe–žjþúÿ,—WwÛØÄ¿I[±dQ¤Ä‚B€½•è ö.S¤d¹ÈZ{“ØÙlN’·ä-ß6mÎÁá)÷Îæ7@âF[¦8lÔ@4Ð’†´uF¤â·JR ÔËë£g!wê-£ÁºœœÅÅ}¹ÿËà²äc+B9U»1`Íî AÛuáòŠ¼Uü|uµÀ -xœ´'c(“Õa¬fG?`ÛaxD“6¡ê‹:°‡i�ÔÿxÑŵ».´Št’¼üþõù^_Þ´¤Ë:©5Àre-g‡|uvyYçªÌjÁ C©¿ -bŠã8»"5àmáÐίzXm“C×K»0ÉDªr½¨2xÞh|ð“Ê X¿gLgÁi°BCTFÄZ -Ö¼#D‚=S‚äo5�HNÒUò®œã˜®ÚÕ7À]\¨×œsÃûàü*Ù+^јz}¤»3Ý_ÈΊQJ¢‰:Rì9# ìxkÇGbLX!î©Å%U¥üüÝ?DkÜælZðú˜¨«Á€Á’=#&À¾Ä"AMo®•‹k¥C"¼\ñÿl/kI+ÙY~S£kU½MÓœR‚ðY©„˜‘’è,°k°ñpý·|õ«ÔßsÊìÅ— QÑQq:àÜc…;ÐÂ,Mñl£€µ•Ù¼Ec¥ö×MðsUÎëð°>�žˆM®ßhØ Øšæ.esV ~ˆðüª‹#n1Ø´¸ÉÆ´8êˆ9ü¹Ùé_^C9Ý7oÙÊúp‡¦öèpÈ&‹%¡¢Ú´R¯l͇%^\d òÌI)¤8uVÂèð=Ø—'À³‹›·5Š�„ðÂmY!y!+‰QÂ+£^4j8 Á:Å~ÂgpÕiŽñ»Wׯ_·°ª—s1N€0!äVñCxˆTã ëuz‰änìá{3:áÖÊœ9!Ö\p6ø¾ŸÞ[Å“;ùJ+㶘QbÚ⃞>A?¢¥¼E¢®>dÄ Õ|þÆé#/¯O*¹"Ôܵâms¤{K3º%æB0ç04‹ê®Ç›_ÒÙ7Õ[ã¼P!‘ƒ´œ…�ÉŒT@„¢=sîx‰ui9§¤L°—¢¿Ý-`’Š~;&ÆAèOYµ¸æ#JÊõðä–_X³¼~é¤Ø|(ó¢©A’w+¸wHØó©œçIÞZrWXmmÃ)!ãõ©èT©J#Iç¼Úq>@]±wx÷Ž˜@lçÊýqOƒ¤Gœ\6X¯EbÔOÇÕ‹~¹¨NuÚ~QWAIE4ùÁ5Û¯Ý Y$JÆ~«—4hQKÙÙ‚ZñRÕSÜ8Ôh08‰ Œ${S¬ „¶kˆÔ–Fõ*ÍÓB†pG8"Û´Bª6içæe‹8)cÉ@Ó›×Ûâu[A°Ó;`²ÄKI΢Åy¬«6²Êñ&`BymÆ(ã–˜¶…ðm½?¼¸êž]² ¦&‚¬7èi¥œ¬º$gÑUvðÃu7Àä{%y›dõl'8˜•wÃ#-Øù“/ñîkü,:+VNYÞsó±´<„BºÚPö×Ú`#ØS#¹åÑ_üµ]<ˆÞŠÓÆ¢³îÂÅ×`òÑLO¼9ãÔq?:ì‰9#ÆŒ×Ƣ⯒ÅO¢»h‰1£Žy{+úwrp$ÞžÁÙÁå¼µ;zϨ™•´FÏ=gEáéöªgÎycŠPrŒ«%¬†|Leo‰˜ëgF|/Z+¢My¥š…&ÐRŽ€ÊÖ`¬6Ä#¥WP‰ð<Ö‡r˜ÿ2ì ÅÛdA¯˜b-dwKŒ©ßá^´ç=½„°;rVc ´Õð–Q‡U+Äür.£d]c™ˆ€½™Üõú3Î(Y-íj)¢–Å[iÁ-é/`›¬6¢ÄÑâqL6ˆE›à\Q+}RmšZbߺÊ0ÐÀC_ˆá™5Øc©°úêK!C*Q\ÀËCÉœôã½?~°ówfº-ï¾÷³S›À+B‚yï¯9m"ZS?Úxé-«šB(y+è粩ãVŒšwªxr4˜³o†Z#•ì)ZZxR½£âî^¾ÉAÚÈ>cÇvÇïÅÁÖÌïÝÑ£lÔp!:c=Þ$›¯ÑîÏj´W+3XÎO¿ªÁ–UrÙ]á -õøä¯äÁZv—Éì©<ü¬iGÊ¡F;€®üÉGgòDœ½`ïEkÁ«QW ±ð;?ZÙÝRJÞ$¡4ÀßÌH -mËá1üÜ/žœò‹žÜëÞjvú§U|jôˆÊ~¶‹/zú¨''Î3JÒ&g \|¤hÑì)Ýü)˜~g_àÉMßp¨ô'€I4Ž®’]³6ê[2¡®«¶Œc ¥“=*ƒàÌT‹¼í %†¢»„ËáSfþÎ~òËOæðÈZ“·T6™ÉÞêÂ'%F1'»Ÿžþ>X<ËÑ3þäNžð©Å‡`ñì•÷P—dÉü1ß}óÊ÷¨<¬2„ùãp{ý±>Xwå¸þÒP)G@’·…àéf|è%‚Âfv•ÂˆÅîG¶ÿѳ—°š®>¦ñ^(}¼Í)‰ïãÝ·tÿ}þá_Ç¿þ7Þý€E`¢aÔ &d•)BÁ‰åöG¸øY‹ßèYL̲:k":sô>Z<aµf´jñ.’9ÒÓ§”˜óêÄLÖèvu22ƧÀ"µh§DïôähâÍÏùỞ¬õxéïí²ºÜÙG#½õ§µô Ö’·€“ ÖIÞL ·NñÏ¿Ý>ýgÿüïxþdfGÁßüã2kNÜ΢ø÷IRNº½‚ f Ú@bh±‰U,Œí6v{k»íî$Nw:™‡L:“šTuOåeª¦jæaæe¾Î\§JEÁƒ„îýŸ{~çz¢™0S -±ÐI', Øâa*«[”7’\öPEÀq8i»¢ê:VÀsã†�7*àŸ!¾é£-/aúpLÖÔöI-ºŠÂÁEÅN„oøâ%¸ŽˆËAÚ|âÁ?_C@½a¦€ò¥xªµD%{3–_…‰âcW|ùËÝxyŒtÙò!Fz¡9üS÷ƒÕÇÄ6•9ÏtÉLÚezcÙÕ`•´`:;Äå.]û©"l=« -¶¹e³É…˜*L(h/¡ï£[8î-J¦Úa¾Æ·¥æQªyH„Õã £`Ïí…XžÀ)x"ÊQòÄóðaFßÂd^nA¾]ö²ðò>¢èªQ±%•wÙÒ6&X¢>Œ‹•/ÜøŠQ:)eƨ˻1Ö\°Ÿ=õ¬Ø¨P s:dZ§Æä6^²¹®=¹ˆ|áâüT aàªR²“®=G¥ðâ“/}°v¹�¦x6.Û‘d=šî¤k‡¬6ÂE+gŽÝ¨Ð‡k "Z„Eä&‚ ]f3=GËHÈà ¸2–*‡µÙýèùOµÁy}rn†0£:Tq€J5¶Ð/tÎËÓ;,Õt…EÂoF’(oFx+aìHÖ^<Õlì¼JÕ÷×c²+"ÇE‹QG¡”ƒåF>¡àÊðsÅG<Z x""W>`#Æ:€/¸ÜSíCB®…˜<ží…ÍÐ@“6—wÒõ¦0ò Uó±;ºà<˜ ‹@ðh²É§‚y°‰¦¼˜¡+>ð(>HæÈœ>ã©\Ù/¶NÀöá ~Rƒ–BùXÒyÚ<YYÙñšV.{i_,x®IÔ`L½íè£ò®`�‰ì ÄVÒµ…/¬y‰�iB¬;¨`|#kIÕ]¡<—íVvæ׸dƒ!ÃfÄ›3m|Yß}ÙÚ»ôc #D©LÞé€ø·eƒ¬•m½HCCJÛÅÎù:’|âŽ{cò&šÆ’õ„>˵Ž3íãtm¯øMÞÞpúj÷b -¨.ª8‰ú‚.M@Ø©ÚáR_õ dÒðES–¶¼¨Äk}zkLn‡÷¯ßÿÈ‚0|ï%]˜705ÈVáÂÉ箘;$>qÁòKf\nù!Wš¢¢½ŠH‰Bÿ—ßÿM·?[ -ÄxCµOÐd7”èÒÚ>&€ì½[WD†äü#Y%Œg¢¹PZg)kwrx?¿zï§J”Ü-ö.Ìñ¥1¼ÈØmû¦²ûÞ>ùî/ÿJ˜ÓˆH¥,AßIÕrã°Ð;×'/³½æè¤stïÇ•¢½W™^sÆ’lfÚ§•½7|ý`‚ª›_ °>ˆFÉf,?ˆe{‰ò\¬=‹¥¬LcBiØ,0pŒ¸øˆ¥êq±QìÜ€ŠÜÞGdH¥é'²A²€0Ø&šl’ÙŒJ\Ô ÑÑŘT§Õ!•ë‹ú$[Ÿ;‹¯ëÛ—AªÄsœ¶4ZïL©$Í]Z"TÙh›ƒ?l‘^LI¤ª‹„1ƒYÐœËêèæäî×|s±ä@ó¨ÔÙÃ,„Ä>&Cù/¸ºËHäfsmT´¨\7*Õ ÅN•g!Ú�Š…ÂÓ™–dN¹|eTðpàK¶qŒò&ÛeÔPÙ\/aLâJüëJm&”úA2Ëé£hÂäòvÞ>àµ1!7R•ÉõÛ€Tx¬Ö=Lï”öoÌèL7@k>IÖwœƒïùBouÃØ‚bMŒÁ™1~‘ë]”'¯C¬…ñ6$¢OŸxžXÊQÛ\ûŠTg¤6'C<ÕJƒLeôt3öåîŽdü\-ô�w›Tú "d.gM™LûÊ\=–£é>£m“™öc7ÙÌ…p›!ÎK4À6s&V„ÊbÍ/Ä…‡æÄe3©÷¸¢Cæ;DºZiìüò÷ÿ¦ù²"%ËèßÎ+oð\/[Þ~÷ço~ûÏ&*»'æôU¾•j—†×Æè%hàäÅ»oþG\©~²„@ðtWÐgEç¼}pŸiT;‹ŸþöO±2b*Öš,”wíݯ®uNþJdÆ•Æ^cxîÇs¢‰Q1êv®}Þxö®úsÆ>íO/šƒ#hR´âi;Ì•Q¡h={Û:ü -ÄÅð݃¦à ~2^f%^ö§hy�†ã1[XL¸ü*,@ªû·o>šÝçXZi_‰Õcamø•Ð8&H¢å‰È´ØÞ‰ë~†‡W{Öä²¹{WèmQì,Ekÿú»ßxšQû0oŸ"B5ÄWà}h˜,©A¦›¸T²¹R(Ed‡ÖèòÙõ{Õ>L.œK„È2J-¡’æ\s.æ?|õöC²à8ã“»>èÎ$( ÑZ Ë\q‘n^)öž¨§§‹³×lÚØ1k•zTfXžÜÇgÕǧ°k�‹ÈQ¹áÊ|¡ñíoÃÅíÒ þ ëoîÓúdõ0¡í¿¹ûþ#Ηa¡cµmª4a´Ýâàâвr¿â%Ö<1”ÕÀ·%s'ÓyÁYÏãÙ±7(jµ&¨K^$€‹\ÁQþÏq™4·mŸaüÃt¦™º¶ìŠ‹Ä$�’ @�$�;A‚ )pß@qEJ–(QÖjKU¼$±ÕIk'mgÚCÛÌôÔ:ñ‡^zèé«ÎàŽ?ðßçùýZËroYìì5Ƨ8o=ÚŒ&2ÅlýH¯¯${ÿ¾Å”z®6_]ÿfxò|A‡Áh -¥™9¸É4— c@˳«÷7ïþ@kµ^‚H· Z†¶8¸ksgçòïÿüwexN ¥í½—‹ëß7ßõ–ïæWë{_ÇÓ‹çï_|ñGÈà x©^;T€aZ‡¥ñá\Ä "/¿îß lN©ÌµÖQÊœð…©Ñ^ V¿.Nß$³£öô&Äš?[G!óðp®†°ÐÒ˜ÐVí™fuæ!J¬0Ù~Lli ™14ßs—9¼&ä&Æ”\&Ë?pk!ãê™âž+Ìûp!ë1 -ÔÄIezÉ—g³…ù¼½wûÍ ÅVíq}~[pÎéüÖˆ4˜È‡X¾‚7¶}Q!.h¥Éj£v“ZŽDKõþä¬?»Šq–ÕYÖv®íÉõýÚNÎmg)¨Íï>üåÓ¿þ;>þráxcŠ06i{%ØK&;‘úË/÷§¿~Êm P:@¥u®²Î‹òä+{÷ë¸ì�æµwnÀÂÀjÁOÃlQi‹[‹òàêõ÷®¾âŒ¶QŸ{þ/�½!¶\‘>=»¼!RE«µ§V§!$ÑÀYÒm¥r Ûû¾HFëél/WP&} -vI·qÚâÕö&žzâÃqV‹}{x:\½“šOÚ|´_Ûˆˆt(žaäjÆšIµeÎ9iÌoÇçß±ùí›7@u¥r\,MÎ>B\ëÍ#è&³sÌêmODp…R”Ò’ZˆT„ÂHm[ƒS{rY>#ÕZ0ÎóÙºT«Íƒœs®uN¢r‰k¢Ñ‚»ó„9*]}ŒÑ¹�&$Åšéœ�á°¹^®³’ªû8›Ëú´ÞŠðåhºO€T Õ}˜°ºxOÎg@wX7ÀÑpUðY„Ô„\Ûl-Ü!F¯Î{‡wfÿ–5v«ÃÏan µ™oý3–²€Þ°ƒˆLƒÉ/Tç W˜=öÓ!RÕ*»WTì¹5¼²§/G‡¿>}›m‰¥]Š·–weçpaüTfe·(uLcµ±bmœÑöW¯³å`Œ¯J÷&2‚æyQêÇi½Ûž^Ëö«ÜCFpw4Ä{mQê`lΕBÙÄxFé€;�ŠåÝŒ9#œ™|uûTkÇ•.¸*B=¨è‹h„ÐhA¡(M*`É)µ¬Þ¹éœú§¥þ%!ÔõÒèüå [ÍÔ`)ç²ûìÛÖÞ+©´ŠgŸ¿ùmoç„ÔÊŒ>°f0.®‡Xw8E Þo*’²br;mCÚÃÂÂû"RŒ5½¶æÅ=I•P¾“œU}‹§k½± žL)åT®™ÊuD{´¢^,N9½K§RuÒ?�çã\O•ˆt•–{$Tsn -Óˆ&MN}k–ï£l÷š©n2Œ«TnFRj¡½ùavùC¶sFI 8<(»B÷ðIȽ‹Ð—…úëRz'Yø -–4ìÑóLiŽ³À˜‚sU\Í=F¶1Z]ÒknÂí§¹‘5O„S;VïÔhäú¿dŠ;¬ál`ÉDÆÖ+¬6RÜšÌûI¹Ø9°œ•ãà�œ¶4 Æm!\-Hfá]T¦šëžg4–Å—™ÒB·g•þ gŽÝ¨À‹öñŘk®ùÉTa*×WÀ6õé÷ÙÂÚ2›H—O.î4ÓñcmkÖžÝ;'Rq‘fJ’ѯoŸ"² w·ïÊ£WB~BgZ´ÔÆØ2ΚêÖ”àò½”Tùüv2ëØÛgÍùëhrËå±|þîÃœ\÷‚ÒÒ&ÁÛ„Pá³òຽûˆ]/8ÝÅç°Œ^”ÙD$–Ù¥½A>€É&n™þü6SÞu…SaÖ‹¥=aÁ ‰ÍTcBë¡›øÉgžÍ°H‰ÝO](üd O`œµHÆœî¿â¶FëÖGˆ>BŤ¤.-µPRy¼ÇZíÁìñ…Zb¹ ¡¹ƒ,WˆTOHRÁ2‰Éͤ9ÉuO8½#eÛ‹å«Þâ9Ê*)‰Ö°:¸¨MnäêSJï„û þ§^šz1„K±—½·Õñ‹“o‡GwQ¡P(wŸž¿S+S¨OHôb2 ‹`Œ2…Àä°DÞá]¾X”5ÀA‹×öðôjçôc}òRÎ÷'{·•Áe”/£L~ˆ+Ìmà:݉R–ÛOº$F) qz™4F›” ¦mƒuãJ¾hgòfë™XèCG’÷ñ‹M Tª´ö$ðà‘Râ^ß*û¹æ˜!Ô`L1[G[ƒç°!JJWª€UqÎÂiÍ‹ÒhBçóýhª …¹0]L£|ó¸2xeKÞ`‰J‚Öò"´MÁÖ'³€ }ZíGiËPJÝ7i!H)¥!±S›½Ñk®Pr̓{ƒ¤;@ø0.—É:ryGÉ;ŒPd$ûá:¦rŒÑKîµ"7Â$Üé2íÎþÙí÷xê§\./†âi6Så”–M?qGãŒñOÿýâ*j"ËãÿËÎNí„ûìt:G'¤;G'é¤s‡\$n„Ë "‚¨° -ƒ¢°ˆ×ÎÈ -²«ã9ã9®Â茎âNaµÇì³êUWÿЯëÕç}?W‰H Å@24ºôŽFÒßFú[ó²%R#U!F%&_Å•¸°p\AxõdY}vÐZ^Ï„Õb-‰9ËQ* -ƒ"£¥yR_„™©$fK°d„@IÌYbP*€ˆ³ÿZf×A*–AíQ©Á#Dm"•5û¬Ñ&•9(€0Œð¸¢-t¤Qc qa¼€£�õD r¸¯… Ól ¦4G¬áŽhÃ@ Ým7¢¶ÖFR™lߥÑóC"Öå¦ -ÔšnðaŠ ¾„ÀV„p±°§éD;°Ôdv$Ú8èKîÒSq³#ÚÓ´£ÿX)ÊceMãã‰qž\¢IxÀl#–rÈ—›“–pŽŠíªÅ<3{t -ÑÑ,‰Ž-1È´n¹Æ-WÓ<‘¡¨[ˆ ½LëÐZbà¦x°™-6�A�|QªD &u¦²fÌ] â_1OÅ“â:sÈïõ°°*,•A -œË]ëŠvàŽjŽÔTÀ”_£MàŽ`Ì©§ÎŠNp61êÚR -|6ñ36©mUÞô@¨n_ ªÏh‘ ~–Äça -®X¡”Á•ŽeÇÀggLçÍgB|¹Qª£! ›ÆTnvÕYÝ j T6£óKÄù…|â -”b)ᨠ-P1K®1x»{Ø©ØÎHaì“a>óKU¡ÜZXŠ�<íž:Xí†ÈàÁ±JŠZ@Àð¤²Ú6[¼Æ^^ãOgª»úêzÃ-»UÎ2ˆpáÎ -Ì!ìš*âÊ9bTª$Ô¸KoœQ`j{ÀJ~96›ì$Ãi‰Áá4îŠzÒ-º²j&„B -¨"‘"–FÔÚ-˜¡*{PºV€Ú”„ÃNcî(æ -K¶—¬zÏßÐLV6ôV!J‚ê$B¥"ÍŽÂR&_Ûìó¥v+Œ‰EV-U&ÕY”fµä&—Á‹Õe“í»1o”«$´Ö¸ÎžÉ©žæ‹|v^‡ÍW[½u&9Ÿèâ™1Ôä6F„¨“£°P3በ&G ¤bÁ˜§‰±š.*EÀv¡E”¤\eÉ–Pà <®2–ié´HëÆ!BŒ-=«»†tîpOÌkPkBGU(•WÈ/(•Ê2£!Á&_‹èBjs‚�‚@¥”¸/»w¼¶sÀ«iÈ<G®WÙ#ÑÇ„4FÚ#M0ˆ:/i®”©¼ÞÊþhý(f-/³!ÖÀZŠp'•&Ÿ‚𫈠j -¨É 3Þì¨h18#OÒìm -¸³ºˆ!ûÃ?ßÁ‚ÔÂcs‘?í`äðJ9(jº#v_F†z -™pA±HãˆÁýy!¬<†ÒÈ@§ÉÕ«ÜL®Fk¢y0^Ée:û÷ŽL=µpjñò…•õ[÷nþøö×í/ùpûÁÆè±…@U—÷ïd)ŠJœ¤] _ ˆÔ”UfÀþ†ö==ûÆ&gF§Ï ÿ*w`¢ÿðÉÓãÇæW×î\]¿×Øões×ShààKPk Ë1 -3ѾH*UßÚØ–Ë ìž˜:6·8»|uàÄ™½‡fÆNž_¼²ºöíý÷Ÿßz|zy¶sPevä¶P!…õ&[ØêŽiŒ$é Ī›kÚ{+[»CÕ ‰LG2»§µwä«s—Ÿ<}±ùÓÛÕ[ö>U^ÓEºlÊæj¹½Dn±ÒIO¤Yª$‹Ù° -£"é6ª…ŠÕ[Biðl›˜ùËÕëwÏ,N-ŒÍœùž%ÖsE:W©Ò¸Tº€ÆQã>‰Òlt†þ¸7R¬lJeöæ'Nž½2»pñÖý'Ï6_¯ß~`©Êôz" ˆÞÑà$H¦¡@šåŠuL*†I3öT´[)‹¿¢{èÈ™‹+3K_œš›œ»pðø™‘‰Ùɹåëwž�dŸ8Û? ®˜-DY|¥LmÑZ"FGŠIwRo ZèD ÑÜÜ=œªoÌõô˜><}uíÖëí7[Þnmo¼|sziÅSV“W$ÎgÀ€t¸½†òel5ˆ›Uë\0ÈR#_j€Ô$¬±9<‰öÝÃcS¹áɱó³íê;ë÷'sÀî󊤟}ÆR¡d¬¼6ÓÒ½·wøÀèø™ùŵë7ÿùüÕ«ŸßýðüåÆæÏ¿}øíÕ›õ›ß]^iêÞOÇ;9R‹PL˜-a‚ )‡7«jË ö =³týÆw�½K×nž»ô·w>Ýx³²~÷ÞÝGÛ>®~ûà±kè8éMÑ¡úPº“ŽÕaV¯Ó®ml:15½xþâå«×nß{°ñÓÖ§×ï>ºÿxsëýöÿ~ÿýýöÇWoÞß{ôüØéeÕ]„#B0‹ÕW6f;ÀjËõŒ>>¿tå›k_úfmþÊê×k7üðâÅ‹—oy÷ïÿüüöÜòJÿè”#Vc~Dá2Ú’T(+”™DÑè -ÇÒí¹Þ±£ÓSsç§Ï^:1ñÚï<Ý|ôlsë×ím|ñê�dõßg{Ù -]À`N :îLâT,o¨mÎuõNþùÔ©³Ë‹—WÁ@>|öòÙ¯ŸnüŸã*j*ËÂÿÉÔÔÔt‹´HYÞ{Ù÷}ßw’€! ›,"‹A)A ÐÒC#(h‹6Š(²¯-›B$l¢AÀ¥í²jÞLÝSu¹uÎ=÷;ß=ßy·¹»pxôíïï0[W;/G—5ö¼¸$Fl< c¡°ÌDP15<™Moõ–Uµvö¶v߇Y n¯‡÷f–×`Š…w÷·öÞBáÈÇ£ïß¿ï콞ºzó¶Êâ¡°¥hˆJ$ã ƒ«1;r½g|.ßh¾}¯£çñèôkÛo‚Ó‹ov#GÇ_¾mí퇷w>ýúçÛíöîGÎLŸ.¥ˆ+w¡qüèX( 1˜ -&G)UÚ-©ù)…©¾Ë×Ûîô>™„¶·÷§æWÖ7÷àŒ"Ç_ŸÍþÚûèVk—Hå¢q“i4‘Ç[Xx¡úJmccC[›¿çn÷ÜÌ̇÷ï#‡GpÜ`00<6ÜÐÜt®¤T—ìë<²KäQK$ËÉŽòòK-m¿tött÷ö?\Y .¿ NL¿ZXZ98ü¼¶Ÿ«ów)¹šì-æJÌ -MªÞž¡µ¹4&GvNIQIYy©¯µ©qfjfnîùÅ¥ð6œýWŽÀÛÝwŸ>Ù}™]Z¾Ý}'ï|¥ÄàbKLL±ž¥vWv^É¥šúÊ+×**/ûýãÓ¡Ðæλ×ðìâòÆÛÐÞþþÎ.¼`²„Ç&fë›;¬îˆ*ƒM wJ gH5-WÈŒNûéRŸï^×Ý™©¹ù嵡ñ™µõPäðÓñç¿BáÍH$…FFF†F'Êjù*@W²„V¶4Y¬uIu©î¬‚윂ʪk÷>xþòÅÈøÈøôZ øéëß{Çë¡Í¥å¥ƒƒƒýÈØôü½ýïyI‚BÓP T4Ž…LžÑê̇ǖ²—ïþöû“¡±Á±ÙÕà&\ØÇ_VÖ7`P"÷?DÖƒë[[á@ �ǪonW™]L¡'!1$¾Ì*VÚg~Ay{GÏäôÂj ´´² -¿ÃÁá1\™¡½£ãO°Ÿ•••7k«õ`ÏÃþʺŸs*š`ÍüS”ˆçaqL�d£1 ™Â?íͯ®½ÙÞyoh|vxbzd|òÍZàË_ßö>|„=Ö767Ã/_Ö54¯‚GCJ©D¬s:Ó“.³ÅêÍÉÊ+.ÊÎËòù -Züu]m--7®ß¸fs˜DR…ÎÀ4ÄŽ'¡ 4"“¸*©Î¢·»R¼¯·´¼ü|yiþÙÌš«åííõw:ý MÍ íÕõ·<¹bµ‰%2‹´é,± V†8"³Épÿaó+/Ý,.«2ô§Æ‹¾‚úº«ííþ{½¯ææÖC;›[Û;[Ï^ÖÖ_OÏË©t|¹…Äá!.Ìcó”•7jêÚli¹gZvzzIAnmMÅ@ÿýÅ……ÍðÎîÞÞÒÒüÔäØøÈ‹þ¾îîÿÅ‹Nw®PãÀà™ ]Š…1 ¤‡!c“(|ŽÐjÐ\(.†³Ÿ˜žš}X]þøñ`hèYÓÍêKåEin·Ù‘ -PY¨DÌ”ÂF¤ !™!¢Ñ9J¥Ááôž-j¨¾ßÓõô÷¾ÙÉÑP(¸ùpxtüsñÉ£Þ†ÆZçi;‘Ä$’D]‰ÄÐND¡~ŠÁÅ $Pʬ*¹)++'ÿܹK557n6655··ùG‡çççÇFá}àYßøðPw{Û•ÊJ½ÑIbŠ1�ÂÍTLe«4æ‘ÜÁC‚ÊàóUøÛ~xúü·ý-·û<~½²º¸ðªû—[»þÓ×ÓuýúµR_‰Û©5{í™"UÚ©8 E!RX"\Z@¤ëõö²óeþæ–±±±ñÉé‡}ï÷Ü|öúõúÀÓ¡Öæ¶ââÒdG*%$’h"fJÃS Dadµ1-Õs63¿”Ìã'A°¶d$h< Æ I°ÔOÄ¢D"À)"À!“Ôÿ‡ÎäÉUV±Â@ ‚8"hL•- ‰M ¡±4€*ÃSÅqX( -JÀ� ÄÅè�ÄæH 4‚Î -B*r˜4½NmI6gfe–]¾–_âSêô0ŽÈD0 ÄaÉh&82‘¥±„Z¡ÂFeËA*ŸÁ‘*ä*‰H¬ËÖ 7ÙSÜg -¤ -•V£ö¤¹œV‹”+��âýµPë!±uÿŠŠOHbñaáÍ5HEÚT›Óª7éä\V\Xœž–l·¨½ž4•>¾$#'1uHŒD‘âPD.AàâÐt, ¦°µ\ÅlËÖêìV½¥¥¹¥ª²ÒaÖfºRSl¶¯;דb4Ú DRÔɘèS˜8uu2@ñž( Ðä<‘I&7ÁbCc°±¸bÈáˆÕ*üOZ^†'WÀãê4z‰HM!sãiÑ(r4Š”@²D6žÄJaË“�&Èàr”2M*Slbñ¶´ÒŒ¢Wn W¨!âå"¡Nc $ ‰ŽÆBp±DÉVo5GîEÄSþñϨ$‚� *08&Œ2FH¢‚ÏkÔj½Þ&ä -X$2›Êâô‰E"·K”§ÑI‰/Ò¸bÇ¿@þ…8…H‚¿Ð$‚›Ïh´)©ú9äÃÚ’ÂÑQyf:ß -‡�éÊD€@xHˆù'¢‘?F#O"’b‘�äS*<…-°ÐÙZS“@F&’0‰,þ/ÇeÖܶuÅñÒĶ(Š�A¬Ä\ì;@lÜÀ]¤D‰–,YòRÇc{줞$í$“™¶~ék_ú{Ô™;œ!Á{qÏòÿs4äµÂñç0@u…‘-N U=AfÊ+.#:zÐXƒuPí P -ª)*†é$*0Í/ü|)YJt5wڥУ6Ù&x¸†¤çª]iN‚š]Z°5"9MV0t«ˆ² ,+hìx©šƒ$Ÿùƒº÷:NPRÓoT«6ÂM<y‰¼%N!A E5 `Xëò}Ff)ž¡aô³³j@.Y±i—¬”œÝe®œˆæCAŽ(Jc¯Ç¤qzII Ô8ä —»»Oýc¶<§)6t²Ø^m9À(ŒÅIE7GÝžüÍ·'XWÔÍ -~‡Å)i_ðJh‡MÞÜÈFNPr2¼Ÿ¾Më˲>3${¢èÜ>ÿl{õñ G)ÞJÏl{Õ³jÚE³v_Š‚ê:ž¼¨O?NöNï§/F7Íhuz'kÉ“£n—A¼’¦Õáêåo»›_‘»hw’–ëªYµ0`L0PEe”ïÇ›ïêùK–µñ§ë© …$c -J"j…bM4ÖWéä¶Ó•Oˆ~‡ä0Z (QD¹æ7vº*×àðæ¦fû¾ZÑJ6jÅëÁ‚×rÉrZþø˜huH!’µ sè„'^éÎx½ûËúêÇvW:éòŒä hÔÏüò`'+IÏüp¼¿~gÆËNOÂ)‰`QOªõ÷ñüUP]Za3Y\ÆÛ¾êCÊ‘¼ÛWKÝâéäì‹ h�FókQO)Þ&X²N0 -o° ²ócBQ”)f¡Úµd0|qR¤;Ólx0¢)FJ¼’EåS˜¡?l(1ÁiC1sè~÷ZÇMÉÀ"šÕUî¤dÅøI›‡&B/ju_½TÈ›‰¨¢8GB¹€ŠVWmÓÎúŠ=4ÏêõlX°&™VM‘Zû˜nc¤e—¶ePŒî%µÂ)VAíN¿ÇZ032J¦:Ótò"™½éË™ŒÓñAgœœ0´ÕéðP7uTnÏÞÛÁï -–;2㣌œ1R¢«ptçW×¼^hvCÊêæçrõVufš;{±žœd««»¿É¨<:f4oj/^eÅ9иKêGGÇê/þü«îNpÆÒ½F¶Fº¿«gÃí7Û÷h›dðÑ“á’Y^ãdöàÔ·N²kc’ˆ2èýŒ¬éÐ -Á¹J°4Ò7<ä³ûíÝ—Ñöµ•4Î`kÆëxtŽnôø”ECZ-:”?w)óS5Ví‰dT~vÖ‡6!?¤ž¨Þ$ßhɆ’#%“ùÅë÷¿9Õãì¾–*v©X•î7Fô%Å™ßÿ¤–¤ÇÈm¬`cú+/Û{å5d»M£sxÚÆ8ˆ…l€xn~1˜¿ ‡÷ÈžNW/! -ÿ·±r�‡X€ºº7õ¶«Óó·P>8©B|yæÔŠUòAsÇ£¬…q¢–NI÷ V°@Ô]Z#8¨kùK€�+ǺÛ(港TRp%gnGÛ7Vº¦Åˆ–^¯à) òïa”éÄ[Ë›?zÜm“’^DÕ›ìµd¸¨G™È©Ý¸ûÀpD‰>DðÙ×rÅžÉf#£Û7ß<û ÙÜÜ×–Û˜îÌt缚Ã.çE%`EÞÅÊÑœ”›÷Ï?þg~õ3«æœ:éR¶†d?”ÑÔ쓈÷"œÙ €PÇCbc†¡œ`BF@ã´ÞÃFÈU'Y÷x‡\V1B~rm¡ -†H¨øÓ·m¼Ëë”κËø8b´w„Ë®mä‡Ï_Ÿøç kb §{oòj°ûX_|Š/ìôÙÍÇ/ÿø¯àOz²OJaßËöÜNáäMO΀ ¢šá¤ÁË©,ì`ìF2á?Sw°Ó¼ÂL¦z¼ýe[¯ÞkAc$ü¼X¿óòÕYÉLtª‡%ß…åVñjÑ‚Ž4Cî£Z8×êò€/ä7V¸€‚køœEP8�ÑPÇí¬VŠö\‹ö ¦ ?Ê0³š^B—N0¯fÀÍ!QŒ.ßþj'íC7jÃ[YñδÝò§_þ=Þܵñ>4?¢É¨pÒ›î€ù�Õ°<×¼q›1R%8úUÍŸEç’U™ñâù£Ã£6û¤Å°R¬ØCÝ™¤õ¡šßsbDödÃ,Ìxv„‰‡%µ0YB£´¾®f7NºŠ-ˆÃ@!B’Ä@/=›~¼z÷/+žI(Þß~Z>ýú%§Àv[Pbéz”r‚óš;©×ß›·²ÓôÄ„Ts«¼_}9ý»Wœ3bb§às3Z²‚ËIÅXŒ¬Ž±‡í=€Ÿ@URÒœ´E°¯—¯~øš§Žz�m h”_#=ï«P.%+8 ’C‚–ñ°WËíâZ”Éê.þÇeÖÛ6v†áŸ2@ÚfâU%j!)“I‘”DIÔfm–d;Þ·:±8‹³Ôgà¶H`€¶È�ÅL‹¢—E¢·ý7ýR€àAQç¼çyŸÏ,¤è$mf@Bä†\߆$àEŠcÿÑÝÕÝ¡‚q6àÈð·KþC'؃x<HÐ,ïÎ7Ÿþýb0Â@’ó¬¯:³áÞm0¾´kãËW(£Cª ³³k¯ýÒ>ö&OÜõçœ=#`|©Ž¾ÿó?&G¯àHB3B¢ÒT™V:fmŸ×‡‰Œ˜& `i†,vp¾qA¾ÊöLqg&-GÐià|-EWPÊÂ9zê[Ð;Õî‘ 7KîPófÚâô®X™±åA¶XCòfסz€] HILgä–îÍÙbM«Z¥¥´©Ñ¼/¥ØÊ<ïe¨˜”VkAGR\4Iƒ½ƒ|Ò…*-ÕåÊ$Ø~“ƒÅ™ÂµLÞÈÑfa!- \…ÆaÀ6’sïAêþJnaQÌ „PÐפòîœÞ#¥&x´ÒĹJ -×aFû⺥5˜2Š’ûÍݧ‚ÞøÙ×±å›H -5Æ<gƒk%ÒNX©J -#ÕæŽÝ?á܉ì0°•¼«UÆð¶¥IpPè$Wã•AA'±ò -"ä»ìÏaé¢l„^\Í.,ƒ<y¾©y›Ns?žä"Iñ1´˜%ÌÕ8KŠÀgÞè›õ-ºè‹jM³k‘d.š"¿P—¶rt Ì/¸q\fŒ!Õ’Lx%¸s#Ømo¼joýªÔ9ää$PædÁ!X3GëÀm�üµöèo„–ÓPÜ0:åO4:õá™lùííg7$Í1[µéysëeëáµ79·g¤R’?™žþó_ÿ}rû„Aò@6}Pn{ÝVí+¥Òã@ÝãlÑ'Ew·^6æ7jceÊëî0ÃØж«i:H0ºàl¤Ü„ì…ƒãÛßý09ºMäD�‚습]ÖšŠî¶V=@p3 »#7QªØç”0HJŠ¡BWÝú¦¨‡À8¶_Ñì> [l®‰Î¸>¹°{'9ΆÂfÂFŒ%ZkfûÀ?Åõ>k®^‚¿Å2Mê œ±fÔ¶`c¯—Ó‹’¹%âh‘)´8¥Ëª@Î.Æ×)½Ç—Ç´ÑÏñ6<Àxþ‘Xî™Þp¶u1:Œ]LÕS¨CÀ–bÄÂJZPš‚\ƒ_ŒÆqV°ô©5eoN«]Zji΄뀩aÿ¿gítÊΈ¡ -Îz²Ñóš;Œ�œ³¤GùåUœê|’Ø�ìÃI”ÍnS¾º·¸°ˆ"h‘.Ôy5,–zb¹A2«SÍ ¿^ŠF%Ø$'eÙ -)µôÚN0©úŸ-Ö îzÁŸé½‚½v1ž¾ÿøãèðõƒÕ,Š‹YJÏ0çög"YX„Êœ›ÈÉ+qÅ%F©Á–Õ=.wIÑ‘íVs~NëMÎyk T7¼ÞIgþtýàÍñóïÕÏP’^Áâóz¾*ÃXïèÕ £}ÇU€¿QÝ 7߆Ûoð|å|„*óZÛï¬5R(%à´†ä%wÌé¡äÍÖ¬=?3Ç«wf‡ÇwµÍ·´1bÍ/W4+Ofçß|øÉïî�@À?1®Cpm+8†‘¤SÀm¨hœ(ÊêõíõÃwOß}®¯?ÅøÊÁÙÍ|ÿÔ"¯ÞðÄŸ_ùóÃûÍËï½Ñ�Up„r/ºh^…ÞÄ‹ÍXN‹geèw�æb”„™%JIÜÌ2n®PcÊ£ÿXjžd… Ëš²Ýç�øRƒ–¼Ñ+£ÊÚ©âM0J¶ Y–=‰«pÏj:¯/ÇÉ(B’0&°d†'xZ^«nÁ©tóR»hÏk“—•î#ð.˜³²´ÇÊ]B¨óZc]-†¢Ù\в”Ê)HNvƒgX)Ô+ëÑÿÕ½…hŒ€9®DŠƒX¹™d¥É{ñ$Œ'R<IƒÂÑÈsfÏéY£õíëo?üU¯NáŽ.ŒæaÁžô6®×¾ªGqv’*V)à0cÔ%' Šl¶üÞ>!¸Ñ$Ï« Ùhµr÷Dö7”roºõä×ÿ†äÕB©kuNjãs§w\_ø£s#ØÉІh††?YM1+IèÍk=7Î߇;oQÆŽ§Ø|¡’$ÍH¦¸ŒÐYÖ†£m÷.6Ï~oÖæFuVéïã{ Á1ÎÒªÓÙÙ»›?>¿ûÜßÍšaµ>8½ú-Dn!ÉõY§{È–ÖÎñx÷J¶Úb{©V÷(1,š#Þ y -·±vÜžžÃWÝ_D¡Ek :CVoGrr2¯ w_xƒ£$èÕIoïztzÓÙ¾ªO/Ö>kvXÑýËßÿóæ7Ÿr|i%AÂ˽éëÊús âÁëFÓ³£Ë÷?_H£x‰³¦åÑe°~«tN¦¢:ýÏ?ýûôÉÝj‚]TýÍÚüúèúS{ëÉ©KHAöèbu1–‡( -S¤ÖgKcx98I* ¤µ¨¢‡Ræ—S<½jl¿]¿ünóêOFï/f‡›Ï@ Ý–â$œ,XFíµ·oËÃdNMå$ðÕ‚d-ž)‚Å°ršgÙ*ÆU³ùÒðŸX>OYY …ÿq\¦½mcgþ-MÇ«ö…¤$î”HŠ‹ÄE¤¨ÕµZ²e-^dÅ–íØÙ<I&v&N‚L&“Ìé4`Zt>LæK‹þ¬¾)p?q{ï{ÎyN0;FYþˆ�†O0˜'Áeá)!ÚB %Á[Ðq´Ên© -¿¡·.rpQGÑS¨`¤Ò�á4˜U¥àæå ¦ú¢’'˜B9ÉÜfU7—©šuºD)`Œ4Ìm±wÖž]w毹t±;:¯ôOДI)U½6•J;t¦UèÞ gJc Vqsõ™Všèå‰\ÑÙ.BÛœT…¢zÛƒ¢ DÖªÍw®7O”ÊÎ;`VN÷NÊlFi-¥µ%»}êî³ß¼úu|zMª•öÖÑë÷¿Ûõ ¬|çüîåo׿ü·{ö1iïÄyg,K(;î‘'šZõ1Úˆ’F0.'’ŽìŒà˜Kž8WŒ¶Âñ4Bçâ|‘·6!^íî\Î÷šƒùù·À- ÁÆX—+ yÕÜÒÆÑéå'»±çE9„1j£K«u,X›~Tö#„N¡:éŽB,Æ‹Rê´Z‡ó¾0Îuf݃gOßÿÑž>[ô316/v dq±jÕÇø@ËÙ† ®ß¸ð£bÊg«'‚5‘7ˆÎSB!U(?>y÷½‹ÝÃWJe¢Ìe?é rÏßqÚs/ÔFÚ–ímŒÊ3bÝrø:BBÉÝ”ÊÒRàO7–W¡ÆªÕ=ÕÜSÓ=ÆÙ2J’Þ‹ÆâbhÕK¬xÉ?Âä8e„°4T˜Îäž'Hû1ч -(£ÃlˆÅý¤=Y.ëòöž.ãB%i}"›`¤hÓ©\$.Lž`�#°â¹ìCÒ�“në(ßØ]X .Û.nÞ¯Nž:½¹nÖ¯®Ï¯"´jÖ§£»ïzóJƒ'×Ù+ÞÞZ Ò²Õgåj—T0.‹”>p:çI¹è¯)œ³€HI© -§§d7‰¯µåÒˆRÖi¥–•J‚Zr‡gÍÝ'õÝÇÅþ||ü¢ðLÊmd -ƒõíwø µû(]‡˜¼HF~ËqW44 Và ¹o8µ»`"˜D¦”Ð qÅÍVšÓåÁ¤a¸§¯?þýßi«ëG…8còÆ ²ùèäÛ¿>}÷OwúF7õêÜ# -¥�M/zIO˜ÇhŠ Jç"1º!J«!*”ȲٞáÞ9|òÓ›Ïÿ¹x÷/}âA%F©ÁUDI^*Îä¡šñj'©v<anamåâ>)º˜ŒP&ä„uÚêQ€ô÷.º;÷ÍÚ®Z™RÙ>.7I¥•vÆý×±d’Q.Lx³ëGxO„$²+vq-RZ©}„ÊÍ›Ë7n®À¨rƒ/ì²µìå‚ ZÕªZXð¢bSB˜*ÎØ`ª1Ö²Ús†³ -ëãD2·aàš{"–f¼=Öš§ ¥HL”ºhöbN£tø'„°¢1%Œ -QLŠ iàÒ[ËÑ…ŠLÆîcòí5ÂI¡¬E+õTnC²ÚF©ßœ«V“Ë›³«þüåúèTØ %'ž²ÚDðŒl´ Ö�¼‰³9ÞœX͇åËÙÛç�T0ÐàœMpZè ¡„„ÒNÊHΘV[IµÖž7§¥šû“³·ÇÏ?Ÿ}÷Ë‹?©/µõÝÕÇÿòGR«Ž¤CgºzmÞ_ ßÄÙòlÑ‹Ç“%Ø0m0Ú†÷Y€mèbP$C1)ëKù-HFB(áI|£ØšuŽ¯ ;Séœ×ÏòõÃí;WÃãk&ã0Q5o?}ѲŸ‰à&§vcH¥!…UàRœ52…m� ?’äTW«ìçÜY{ïñן÷î}<„óÍÕÏDÒ'TÙÚ2ק°®6gÕpˆ7DÓ¼ý´|ø’'Á5«9¯Ž/Ìæ!ZœÑråAã}h -löèòoû?µç?Tv.q©~k9FPöýç¿Qra-œá¹(Uà‘Ӿﴂ]/.BCòö¢'æEx/"DHÝ´³ÇfzKk‰@ˆˆ‘Š'@úéc"ôÙîðäÕƒ7¿GÑ$4(w™åvÚÞ¡\™LÂ8œ]n0’ƒ‘JR^çÔšm¦Ô&´$&¯x‘…¥ÀÒjäöJ -,¸«0šŽÆ2›'h=„°I¥ -Òk»†;-*Å £ºÆW@êB–5Z4áØIu]ÎõôÂBQL`SVœÑý(ÂIJ’¯ÀC`„™ª´X†k±C ó„βJA4sJîMe«‹3YŠË*yW*¸Z{RÛ´1»Ú*7fÓÓ—¥î):Zi”ïžsæ–V=°ZgB~#i‰z@fÈêÿD”BqM•s•)#Ôq&t½à Ý\ò!¸¬ÚÛZé °ñ`xþs:·¡èîìÞ÷Je�ø$‚«(©3|U/Ëý»Ë4ž’I¥ 0ÒƒŸ±J]ÉoÇ#DÅ;!LŒ�éQ™«Óêzkû5‚Ë©Ì:Z¬€œýaÎ{A|a†ì Â%8#Jè”PU£¯BÎoÑ™&«·[“G :6]�ÝÕ‡÷ªaJ“™”ÖQ‹ûFýˆFT£”ÿQ\f½m£Wþ)E‘8±-Y%Š"%®Å}©•ÚK–¥X^äx—llj—ÄY&öd’™I0h’-Š¢Ë EEï:w½îEÿIOîàGïyÏó”÷�6Äì0×ïù’pÐàÁlcçbn!˜R&$'Û;®ŽŸA±Ïû“Va�"ŒÏÝC¨ùí¥l,‰òqÒÂHbbÅ*x™Û;ÍvNZ[7p¡–Ö0N×r½ÎøJqW©|4aG 3ŠÉ¡X*a!±þ0uw>!÷#\WÙt…br,—Ïú[Ï)¥”6j°›½ùëÙÛ/Íý7¢7ùzÓØÝ»œÞ(ÙJ*‘ˆg.NçH.›- HÎDqÎpŠYa!9ÁÍE„ƒ>Dâ™Ê-ð%„F0ì&c2FŠ8gòš×OÇWÛgov.?ì]¼Ÿ=ÿøàðÆ]=MJ¥Vowúè»´îÅ(Y°Z¢3äԞ茓)/Fš ÆXða\ÐN2U&Ù0-Ð)|äŒRËX”RR²-"ÞT ¥*)Uùl_/ÚÃã‹WŸ%gY°š`œÚ(êmÕqr‰KniØìÂs�f‚1£ÑìÃD¤µ†‘ï÷7Ï�ïAÍèLÙmv&Ï{;/÷.>º#‚±ûãÓÝGo¡àe´Ir6èA©¼R‚iªö«Iƒà6ŠÎŠÝÖv¿ÝyòÉnÌ^ýû?ÿËz›˜Æª}½²çõO^üðóÕ»/w|ß—¤8W4Ú8›…±0ð‡Óá¸)g×õâüpx+aO}Õ[\ò¡ÒRDŽà†ž VÁù Dš -FhˆD”a)ÃI¤�iBv�Ðã\îYm»½W=Ñû™Âyyí|÷ñG d¨D¨œ.ðRLãI"šP`Ñpþ×IOZñ„N³¶Sìö6NÌ2põtãñ»Òà°8˜ÙÐÕÎR¨8ùþÑñíöìC’/ø£L4!2‚'ËœR“ì#–e³îµ·)Þ 4FÙ¬²œÒúŒÜár(.†Ð4ÌJÈKà8‰+qÆá4/ã´%§ÛMÿô·_þù˼ì6Ô¦ÝÜéN®ÃÓÑÆÅdïZs[ºÛÑr}ÈßÑb‰©~rÞ_ -&qÒˆbb�áæýøü"‘¡Cs®‘®l\nNo�ÎQÚÂÓ,å -n/ß™–OÔÜâÝÁú£Æ` -%$ -p1U S6Sòš[õÎŽÏ/IÈ'z Æ ©(.'“WªfiÁH²YNðàdëµ° -[2/Jm0~4š\†Ð•r9ëÄ€îhËä’ŒáVFi)¿ÀHÆ ùX˜\©P v‡†à5‡/n?C=òz¿Ø=/÷/ŒÂZ±>q*”ô™½Qï<ĽïÃL!/c¯}\;ù(9«¾+™ Øì!üú^ðŽ÷EÄa3™º]٤жQRž›Gææ#Ð3)žíìC{ÅnOú>§µò͇Fu„ò†ìVÆçË“—ŸŸ¾ûòòÃ?¦×¿Oë5À$À‚q &»aüX ˜ˆ -` #y‘„º]f`©±i‹äM!WïŽOÎ_ÿvõè:ž6(Ìö´2zê´Ô\ß.¯ ÙÐ1F|}CÆâ䧴³ßX=oŸ‚ôRŒRšim€’v׸Š«€—Ÿƒ€E !¡0R¶½áäävïÉ»Úh:™½š]PKËiÕ³ªëziôðäÛþäÎhšSß™}Snma¤DÐ&FfqÊ%Ù"Øb‚2‰¤%af1€¥¿L,…H@‚¬·‘o<të[¢U?8û¾»~ž”ò|®ïAnîL/·Ž^·†ÇPS¬TqkÛNe"m¨ Æû‚Ä; Q‚»çû‚AAUZmB!Dâ2Ë—"1Á"€¥9©ª¹«•ÞÌ(¬PiVÇu»Ž²ÑxB‰2r˜Ü¢‚á$‚Ò”¡üÓ†¤W$(^Zñ²•ñÍûŸgW?Å(“â=Q_6ãbwËp/¹@°p -r¤t2JÛ*mR/å$½è—Ñ8ÿ«¹ FÛ�ü@>@&0õ” -EIÕˆ£€J‚ÖÁh`¸8 l«L‰%Пb老r¬Ú³gï7Žoë«'+“«õc0¸o�%ÀÝÊí‰šë „dÍH\XðÅÂͤ+=·’ÑÍác<„qRæ”J¡¾óéÉÛ¿t·.o¾ÿã›ßüݨAÎ=FªÑbU°úvm@½³ÿ£V{Èk•Öèqipª—×dw� Š1*§ºdº|w½»€ÂB$µûKjÜAºx¹^ì0r!Áê…æÆÙõ¿ûó¿ž¼þäöÕêVÚèì<þ09ûAÎw Þ2JãþÖÓúÊÔ*®VZë²UAb,“ʱR#5X@Œ¦Æ’Á8tÄк¿…ÖB1^¶ÚZnÌ)]*SqJýÝã—ùúVÉÛÍáñÛ½«OÝÛòø…˜_‹&´Z}ûé›?¢³¥c„™Ip¹“C"™$i«zckçjÿìݽtî~‚Aó%<ÉØ}*SÆ’j³¿¿súQ¬ÃÈUZ,sR™f-#^"TFÌD X:‚ñ0ÚÁ0áRœÔ”¾øŠË¤9m< ã_%“¥8Ɔ„m€$$„$´°ƒÀ€‘1‹Íæ}‰wÇvâÄéî¤;¥“To™™ÊÔ¤/3§ÎÌaªºæ4—9ÌW™×U:¨8éÿ>ïóüž)$H‰Q)çp ´Bc<¼ÙÛ¼Ôªkvç0U\‚9¶¿f€`P¥ÛÇy||€2cš#›š!`@~<Ž5)Fóú(÷½0ø9Ë™Á7o¹®ßœüÃõɉ;xy,$KI;Ê5gÍ*õÐ*()³²Í›da¬Ö¶*ƒËjïpy¸÷¯ÿïþù+èŒq£iÕV´ò>\Ì)©H2Ë›_á¬yg -qÍx½~ò'„’õ¯–8¥ŠZWŒZèV{÷Ñq¹¹òÍ«_¾|ýçd¡M'*FuK·7ÊÓáþû…õçóËOäL7ïí>øŽ7K^Z€’d$g‹&8[%uO ŽePJŸÂ.Lš˜¡î",à½Z\…sÞ;z1?8ŒZ²¸”vöìÅGí;ç?Ÿ¾ú»Ý?©uvŽ/ßCQR²mÉtX±Ž™t¼Ä -¶”jîMû(4,ã´!¨Éè´ gŽVö4ÂL¸pWƒtŽl”Táó£J%™k±JJ.œU€MfkiëY{tVm®Í¶VIÑ┼f9°Þ€ì#4K`¸ÊDÒµææüâÑĤ#‚‘ˆX–V´RqùVÿhqùV5&•Ìœl5AØl<'YMJ,ÑÑtµ>®9n˜8Bb„ÆA 7nž¦§ÙRÅ"\Ür†û;ßl]ü(†ÅÙ ›]Þ~úÏßÿ[¶noFÆÆ‚<Ç«QÕA‰+¬J¤f›ã‡z¾ "qM=Êëe‰P"D&Ls:VcbÙå&¯Ý¸;q7àAù8?'€[b«ÐûöûOH æ-6Yæ¬VÒ›s[¹úx¼züãÇ8ƒ#ˆìj÷¸6|”²—AZlÒAB²ç £ñæ§Ïœå\»11qgJ⌇ʂd‰‰ÙÎÂÊÉå;ÑšÃXƒVª¢ÛéÚ°6Ü/t6i)§ÛƒÜ Ï+¹¥dŒ¥š°æ9¥‘Ê,VÚ;‚U2«¼Ñ‚ìƒPF 7.Í d¥ µ`|pòSþø-WÐ m”±âé.D9Ÿ(oí>súû’ÕÐìQ±{ÒX¾í½<|üc{óIª:ZZ;ûõ·ÿˆÐJX#¢ÔbjC-.I™ŸêÅõü‹¨Õg;‡œZGp� ª ¸®•êS$4æ#dpÔ˜êè•êÒC€M-uGÅæ(Öé´Æ'œVõ‘2ÔŠ+U(UÀo`/ž¼J^B`ñ0•‚Éç$ͦ¨WÝ(3…D³Ö—Y8Hd»h£õZç~ªØ -Å,’/hù>ø³’ëJ“Œ˜XHËb9r -nà—@8éF"!ŒçIZž*v;ÛÏ–Þ¬¿Ý9{¿}ö¶7ØŠÄô ©1|H/@ˆXØ©@D,2–ѲB}]Ë4½>š%)Zi‘” -ö…a÷½Ë—µì+¯OºéÛ“A¿HE�®\²fæÚáˆFépLÎ׫£…õ'§¯7ÎÞ9ÛÏ Þ‚Ò±°zÕ›a±DÆËÀÞŒhG¥"Än{|ˆÒ2#‚°xH»²VŒƒ „øY`èÓç´Vô1)µº*eÛðd{t¦wXWË.¾_;x ‚1�¢´Â¸³úx¸ù¥^sZ£éŒ>~ú\œ_»ážñÒÞp£-h7Õα”`¤²~ðRè}á -LyY?cÑ,45èD†=°›+ë÷/z›±ˆ -<Wróœ1[noí>zwüí¯Œ2›ild[û¤T 0Ë¡´á£àKëÙÙµl}¥·§ƒŒPPÓ½0›Ó”HMz (Y?™˜˜ÁîáÑPÔsýÔìv®u˜oY+_ZúáO¿~ù¨CÎ8Ze(—‰l|§5,œÔÆÜâ9+Õ@¢Œ‡5q³9Ùêt‡Ïßü€lM„Îe,"Ao§›{ã÷J¾=X;{úò¯þ±/˜D £L,œºj|Žæ²8gcJ@eãgü¤‡öà ?“NdG¥Ö¾YêvFGããW»_ý®õ‡oåü¢R Ëúàͧ%£gÍ4±À¨a¼þ8•!œ,W–“zóúÍé)Žã~,Šúy4¨�ëF%{íð¥7(_»î™r3W»¯·“Ù>N§oÝƼ„€3 -Qh1#Xs…ÅÃÎî‹ÊøiÄZŠÍTe\è,ðža¯iöŠQÝ3œ3](çB¢>,À%7DŠMLÅÑAFÃ#)„”=„·æļ–,½6jm=Ë·÷ -ó;³KÇvgW²j@ÝARᕘ\%¹,°—(;Í‹g?Al}q!£–lµ`îÆôCw`2a.cUÀ?KwfpØtoH F,^¯ƒz¥t\_ÜÜ{è÷‚Œ’u¶—v_mžÿ²~òvaãb~å È*´?þí÷o>|FÈIWz'ýí×EçAÁyÈôQRq!a«ØÔÊ4*L¸èÛ.ÚåF5ümÚ£Ç/>|ýö”Vw@@(5Àå8½9ÛݯuOÝG!±ª³k´2â30,0X¤E§êÃÈJƒ·…RFF2W7„�º‡ñTLÏÕ:å&x}.ßÚ«õÿÏq™>§ßaü_él7›ØñÆÜ „„„�ƒ·�sˆÛ€ƒñÏß±ã3ÙlÎÝfr´ÞÉîNé´ig:ݾé‹v¦J¿›^ðRÒïù=Ïç³Ûè]–Ž€9wøᣗþû¿¥rgTI[l ‹=A8RzܧÐÛZišHaH*ô6•„¨c“©`qbHµ:»·ÿ:·tX]yTÛy›?6Ž«½§ëÅÍ«H¾Ë´>ýü¿§¿ùƒclŠf³jƒ§‚n!ïtKƒû«ûšM¨ŒÌÀ°úï—£ƒ¹’Ö˜Vï4åÉ“ó´'ëcå—#ùi&X°·z¦øä\²ºIæºéùÃÒÊeiõ&ӹ䔿‡f¶÷^v¶Ÿ`ÎæHókÞt—ôÎá“eµÑ;2ŽFÁüÌÀ(hŽ -uëIŸ¨{“µh~¾µuÝÞy¼ñðÕìêY °Š¹%ˆ+þ9Tz3¸¡FX™Ž—·¥Ú!Ÿ79âr-18µ(x®ÐRÃ'óŒ¯é-RiTCÎ ”O®µŽ©-`„¬0U3-x‡Åh>’]LV7å5.Z÷§ÒÃg„`¾÷ࢶ²¯ÃYXf<±¸,˜K×;F&#êXß¹ÓM™Š’Á×C9?Âù§jGçß•æ6Få¨Ù±‹u6ÝÙí_Þž¿þKyõ©Ñ*J¹ÖÆÞcÂ6à\ µ”®?*,< ŠZuî=çWFÑáq|DEêpÀ³'¹žÞ1Xü™b§ÔØ„fFAÌ•´°R0ÕÊ·ŽÄò&'V¡6Éå‡ÆñÁQtDaAéÅBEi˜”)-p¾áš•M›la|RÔá.»7‘Z0‹¹fåøM¬º%¤çlž£ün®wðìùûO³c„;¼U‹->¡ $ÆdÀí†ûú!î -Tá ~õë¡Aà¹Y¡¤4Fc’ðüà;°éÜk ‘êf³ÿzõì6Ý>…®ˆVš½›Ý‹ß–›»û—僚ÇÞL#Ó>×÷]Rש7»ý³÷Åö•Ë�…+þt‡ -Ìé,¡¹é«AÅÀ°…ˈ{>w2a$Ëdœt'ÝS5O|viëªõ–MÌóíÄ܃pi—ºÑò^¶yîÏ,CÅéq7ɦ͎#!í$?c51w%ÂjÔ%Ó(ÈS˜¼:R4a”ŽŒœÆ_º4«7;Ç58D‹Ì@3Ú'|È¿ÕÍÌ®û’³(Ís‰f¹{¾yö¡½ûÒ“jÙY„bI»fáÀ&@½¸-lÒä˜B¬~œ c„IÔ€`µˆK©³Oh°Aj”S#.2É´-ö°7� Íeh.eã’°¶•î Ÿéè-|§Óÿæõ¬?…’|¢ÚWöÃÙX†\Ký’[“ûèá«ôôÚ}™Â`°†i~šKt¢•~¸´Óþ³‹×{gOG'P5â)t.\~„“r%–Ô&ÁÝ·?|Zê=„½1Ú„·¸€Ûƒ2Dƒ8¤Êz(¿<<Ž‚ îœàdhÆêŒ]¼¹|ñ£'83±›v…fC™Ncí|ïú6Ó8Â)3-ÒlN¡³ÝVqgäî€rLAhŒ.³5>¡sß¹7¡10þHm|Â:2†€WˆÈ4P›“ô0æÁ™MÈEŠkÑʳ#mç©êVjn&c½ÿøêÕO‰™µI±º~òöè›?5v¾v®û©Ò½bø‚8Õt‹å1-5atY ÒÐm -a@~6_鎈BGA'ÀÝñå–!Æ¥¥³ü¡=˜¯¥›»|a™Ï¯8Ćśò!}9nÉU’œÑÖP")TX©§¶§äF¯ŽŠâ\Ök Œˆ{Ò—G˜$áJ·›l¢ð`àê¡´€Ðž€Ô)¯~]í}-5OÄÊ– u(.í æ·o\ñYÏT}zí ô0(ÓÞk³{`°Lʵ¤/Ù±û+8uò9 —–6[—/‡Û§îÜS ŽUጄ³]»PPÝPÑž@Þ€MŽkLJ½%V\<ºþpró~vùÔ¯·+õVÄì´:£`[Ã2T®"ÌtPÌuD©íTe*üî}匣Éc$8”ôÂGC)#ظ4çbC2ƒ“¦»›»Ï -íÏÔ<BÇ5G:üϾû~¶½+×AÁZp:ªA½r ú HZ<ñlÛîMñ¥L¡û1ž,Å@ €â¸`öúÙ»Ó›wVg%ƒùÆY¼ºeeèUõ˜_6aQ¨ÔôJú‡ÆŒæƒ±Ð¢‰à9ï¨'”X±¼ôáã?FeȽA8…Í[dà >X&¡=ë«4U£n“C¼ÔâŒæâÕÍTmkª²*$j!/.Ím^ÎõŽÓµŸœgc5ØPp^ÖŸÍÍl0œhd±G-P¹V°Ûè8ª52ðŸdB2¦Pá0U®`©Ô9];û]cóI¦±Soÿóçÿœ>yÇKNq.XÚö¦–`fW¯·½¯.Ÿ'ËkžÿH+ -çŒ5CÓÛbå¨Õ×Þ“[:—JküÛßþô/&ÈtÎQ]¦wjaJ¨r±öTnñäòEkë"Ùèç“]>;ŸmõU6N^>½õ¥ÛñâòÁÍ÷ç¯~ß=x!5Ù(z®*ÉF—LMh1¯Ö̉ÿS\fÏMdgÿW’š^°eíK«Õê–ÔÝê]êVwKj틵K–y“À«0ÆÆ6Œ1&Ë„!“¤2•TÍK*“‡<ä-G>ªúáö-©Tº÷|çüN"(”Yµîg2„X¶ ‘�WpbÜ”u‚º*¥Ô)±„šÍËÒ‘\³·ÏÄJ±L½P_Ò‹Ëàº[ÆÈ,N&¡yMzÍ*Ö!Ùá+ ¨„SÖ ?÷ø¢ðŒÔ>=´NEòŒ\µcÒ¸ÅgõÐÞ@Ä‚ÿsáHFJ4*{Á}F™AIÙé—@Ìî¦MŸÝE#~§ Nkº±ˆÍE™m¤ÅÅNÛ©i+áðÐ6Ÿ˜jn´¯ÃýŠ©„2�í¸HAŽ7Bñ£„u‹BÄ-¬{|›4ãN7wé²sdÄzqÄÓ‹‰>¿@0q_H½pÁdµ¦ÌØ/.™G&œãf(ÈdñÙŒ¢!YÎöäüÉÈñÂœQ_+v‡‰Æ¶èÐbFÖ«ji1 ÆV«9RÊ)ù¾ZÙ¤´¤°…J[¦ÅÌ#ˆ -j¯ÝöT+ðÙ7>é„4 {C -ÍWd›åð»ÛžuûÅÙíÁÁ˹ó;oWw¿ÈÔ¼Z’ôZ~fy÷è)—hG3‹Õ•ã…¥Þíxµ/¤Û´ZLæ:'Þž½q -Ÿ\ bíHvueÿõòþëDyÓÝüá?Ý='$[ñÊZ~ñzmuÿèü›÷ùéãÿ}óñŸ7Ž^|øÓ_¾û«˜[Šä–ØÄ‚:³Ù|><ùÃüÎKŒ+Rlª¶p3’^°xx³‡EIÍÔéÄb¹w_J/zC±jws¬RçS]J«L’‘J¡³·~ûM@L Z^Ы¸T.Ì”—NùÔšOyÉŸ'•†ÕM³‘4BÄÌ.Þî–LÖâ',?2ªëA>gCy›©¯žæçöh½I*5�`§?ìËn‚wxC~ -YØgbå�Ÿ¶¸B!!ÝÛ>MWVÇMhP,¹PâÉ_r!ü¤+e&Ù}¼Ÿ1èx7^Ý EjþpŠÇÉO"ÑØh Ô>nÂAWœZ%¸‚ÿSÇ—FŸI”P<þ(hÕƒE&-ø„Ùo²“íªð -ž<jBÇÌ"º‰Î¦0&.Äk‰j,ž,ªÙvOFŒpTX›åõ¶–íÅrV K*«æ|”ª ÎX¤b ˆ¡�‘µYŘ´ømNÁ§˜„pŒŒZ¡DxP)Äd?Ì»ÐUho¯]´~ð$Ý$ø¡J{í@Ä(uÕ\‡àR€%L´ÌÉ3¢^Ç(M+öÒÍû¹¬'¨xÉ#ç$”(.DŒ¦a•51=SÐX>,ÏnêÉr«1÷èü×íþå[½ÝýÏ_?{úòÃéËoï>¿y|Þí<y¹{ïE«w°wò›Zÿa}p¶°õ¸µz'^½ê£´˜^;{õýìµ»—¦|p€8kPJMžÙÉΚæ“Ï_ÿ‘ÍX=‚WÄÌb¼¾Ó>ë¾\=ñÆ[Ÿ¿øêûb÷º—6Àᶈr•òü;ïÓÝ[P¼*¶7'Ü㔃uá:JçòýÆÊ1üñÖÜpöÚI±{3ÕÚF‹nB#Ä<¥VŒö.æÅÇàÒõ ‚»�ØðÑ V¯WWï½úà<,øxÛ‰ -àTV'mu†Ac`‰¹ÆF€Ë’‚KwÀlS[t|¥³.L!¥rHœ¡£ {*ƒ”hÊ™¹ XôT³‹3ù.^vàáB¨àHàK�‡£“è¸ ›�2ùæ/Ž:=~öG® V_”ÑšBj‘MvµNË5‹[à%£c&%˜…hf)Vº&×Cr‰SjªÎje»—õfªuC«í¤»8›u ü´˜šF%¹(k31:a·ÕO;i<d`D€2 -Í _X )1^K6ÖÉf ’cµZª1ÄÝâô£!zQÉ”â¨Úƒ+nÏk œËŒZpÅé$LS$5KE -`à@qà“8*˜v"âHKÆóF¶Iòº1JÕÅÊü Ðéi…NX+±F]).fš+ÍÁ^¼ÖoÎoïŸ}ݺvN’•C0L”;'FoóŠ¼ÚR’’Þ¦£U7!»ŒçÅá¡7 àl‰O.õáüð|õæ—ã r†×GÿõŸÿõ÷a\^žÙP›åõçGOÿ<Øû"ÛX‰èÙWï>®ï?1»¹1Ðú|¬º]˜?ÞûVXÑõ'Ï~a}ÅA›<¼•�&7ï};|üAÈ®jýg_ÿφ2�éÖÞòÍ_Ý>ÿ®º|ŸKÌž¾M–Ö.Ž9/9'ÍA�'‚ÎÄóËíþ]šKß=yþáoÿòY7C'zпcyõેߥ{½ÿø›“§¿¦;pæàBãf¿ÅÍzqà*—§ˆñ)lxãáÝÓWv„ùì•Ï~yåg?Ÿ¼pÉiõÆ8}Éí‹tW÷¡1…<-W.=×EÄMHbÚñ(!‰jÑåc°¦tFo)ÅAynw~ë!—ê"¸Ì/ŠF׊I¸7fnqQRa„¤Ó´Ù`ˆ·Ú½&;Ž„t„JÚPÈ\ ÅŠÀ3ó{+7Ÿw¶å—ïIùk&GÐÒÿ§¸ÌzÛH®(ü_/ÚÌÙ콫»ª÷}o²ÙÜ)ŠÔfK¶äE–ãQØãÈqgAàd² ȼ’ÇA‚Ì{žó‹r ðI …ºUçžó0d^MeR¶X·I[¬˜Þnûsýñ9‰A^OI›ŒÍ( +‡2ÎühÑíi@wƒý+À]/^èÖ~«â¤¬«Ùqó+c»€ñû‡/>¼|ÿ͓׿I†'ƒ`ç2( ^:7œ‚#ÃL5+§Xs¯ƒX)Ö퉨„ŠKj&à†Ó*‰‘3‚¯ZµéMe=¨ Þ@s+/[ê£ã‡?^ž¼&átpp}tõivö¶˜Ÿ¹ùÌIꤨ³bä§SJp”fyc7^jn-ë)`ª ZOÙä±™ŸPB˜Í^«WÑàáéÕ/ž¼ùýäÑÕ,–à>·Ÿëýçª^õçÏ`)¢á©“-ÂþJÖ2ÅN¼Dæ�,’K6Æq}™M®üüÈp‡a\6Ç?…J›¬oÒÕÍäâÓôñÇÁê*=%n‰{}ó«—ïþ`ÇÇ Úb«òâ%EŠRÓ|õ׿ÿí?þÓƒû»âí´åRVà?ÅòUZÌ¿ÿá¿ûîßmJÛÚf;Œc„›òðýêõŸiðOæ-ãcEKÁ4 ’àòýÖ—_©nÕ³ëó£—=9à•Ä‰×Ä›hîP”ÍnOît8I@¾ç¢ HŠá‡ß»õ¥]œA1ÑâñÅ››÷ßäó§XÃ8ÉôZ4g@¡š‘¸AÍpÇ[ -)°>0IR=Òý¥@*bƒhéÓÍÑõãW¿fŒ’…“ªgÀ™m·í_th½ÑFðiv°„SbUºWkÞ�„‘Oíd,j~::™žþ$›¿«óƒ³Û|r)âäðáW˜Hp¡ -jÄ‚R$3'ÚÀ‘º=1IGió¥7‰~Zpr†ÍšC)pPAÖ«ö8®Î²Á ±�TŒä%É$鲚nƪ+z¢f`¤°A})8X‹:”Ô¥U•Ó ³ÐíÚˆöe³¦³Z=-–OxÅ%Váfs#¨ýd–/ö8âu=;‘ÎKi2r?]:ÑÆJs¶j89†{I‘d×÷2T‰@ÚºùÛCÕ© €— vEÙk1ÝS48ØM¤eÛ»ìîßí"M³\'®ëéò9¶Ê<¨WP+ä.À4$½ v¨Ûîêð<¯¶ª3‹†——¿|xó „5TE‰‘ÉØS°+c�¶Û¹O²ÑIZŸèn&u”‰™Â—5k`ù#Ø8¤')ª/K¦ŠôÐÆŽhVšMOõx&h¹ †I:~ýÕÏo?ý%,çÄ–³ç‹G³É5p¾$[,‡a(Qò‰EÙ“õÛ#;94Ý)Ba–Loßýîßþ‹×Fv$-á¥PVbLx£.£¶)Äp6 +ùœÃfuy¬Ûpk8<v -U&›«z}]ÌŸ'ã;Ý_Hj’ Ž’êt%ky>~ÒŸß kÒbx¿ÕâYV -þT÷¶:[;t:Õck1ÁÉ°€Y6y¢ûÓž ¸9Îʉ@J�c0FXÏfƒçy]Dn«#ïµD�I‹«Z¦hA«#ÆùþpüXVIöÁvT£„#q’5Y]ä“ÃvOA:a9¥éô± -aYdXÉh¾fFDU‹£Äö�öÚÙnƒou@ßn«$Ѭ)®N"${€Ì¼Ã‹·A:çi¥¢ƒºúŠ–4[|ãÝ¥dLâF‹o¶E¨‡ -Îòþ -Tí¤fw·iˆÂû;½=Àô¥¾ÑªPÍoQâ½í®îM½lŽóé™_l ÀÒ<,¾pDÉ!™rL'_n.«ù£°X!¥†´i¡ÇĘÀC($¬§góó·»”ÒìðÍÓjõ4lÚVõ§¦“䣥‘Œz_¬¾:>z6]<r¡¬<9IÊ}H"QË@ÿoò¢ãF“0[ ‚N³¼ˆÐ¦BI^.W›ËùæB7䘻è ü)>òÞv¯ÙF‚£IÛ»6çòj©+/?gA¹‘æs~uëfÕÅ9éºO^&Õ¯‚½èš]^_ÖZŒÀÏ›U’Eu·;L·ËcÕ‘$“6cJ¤ð³µÎ$œ°’Zòs(VûZ°‰ëW^v,€ž’aH£ÙcC‚‚ý+_˜^tz‡êRÒÓïÞ~ø62ŠF,C$Áöü¡¬Àr¹4KÀ@ö §ør¬†£aÛÐ=¬û’iH) CݵXþDwG¬è r‚Å°úÝ»n[¡:¨±ÛÛÝêìíô:X^ß0Ë ·ŒÆ«¯?|†©áß°¬¥'¸¢àèZ&ÃM¶Å¼\Tç’ªzΊN³%ݹÓjQš(‡°û÷ï7ˆ[^ÁA÷0èÄ© ߶‡'<g™ö�̧ÁÞÙjýèÞƒ -| ̦†yõþão“áªÍF¯H±;Òü%²êvWJ£þíÏ>ÿó‡ÿuÑÿ9®ò߶;þ§lëê[·D‰â)Š)ž’HJ”HS—åC²åC¾”øÊáØNìij“9i3;‡›Ë«m—£î:,A³5Ò¡ØâtÙÕŠöÛ~ÜË�þFð½ÇïûœÊ~ØÖÑéD¥\B·3fI’õµWæ–·`Rpz�ÌúC1ðDY•“49¡g -ˆ ‚R¦9#ÂjÎs¢NQLœ“I‹ð(Nah”‰%2f•€R¡`@¸ŒecL<€ÓJ 8-*E1U‡±$�[—imsb¤Â)vLÌ¢T*Lª(¥1kÒ±$‚Çd½dÌzNãA€·rªÊT€Jt8CÞ�Fe†Íý7ŽGâ¦]¶MKâåP÷AUTk¨»:D⌫ŒœLç@1Àlƒ0‹L2ÀAP饘ŒÇOZ ¿G€Æ¼‘tA¥i9J+1FBP -!V¾´ºñSŠ\Ž Ç´·zº:¡P(ÆñF\0ÀÝ…`€ E¢Œx<§Ó†Ñ¬¦öÍJ^SµRmT,t(Èå -{=8A(a˜wtA-o;Zì€ ¯”9ÑF‘8ϪF¶dZ•„^~󃘉€óH^ÖÚêêl÷yÝp(Hñ‚ ˜ë÷¡nì¦�smÑ]PG‡GJ€Íu9‚àC(c¸´ªõÄh-q.'fÑNìñ‘šÂ¼Âù8ÏtR¦{‹F½1“EŒŠêÙBOÿacR!0ŠDt¶20j¿„M%»´©ðl&ìÍÏœ˜Ï”*4âˆ0.2\ŠWT³Û(–RÉ897¹s}·6:ëòÁNoÐáòqœ¤ˆ|6J)À^1C•KùŒ,Ò!ȉ…ý‹íÄ@Å8¿2·¶¶8yjªgÐ6²JJK‘¬âôÓÒá8p"¡êF2¥ÉZ&ÇÆÓŠÚЀi0%°E±§Z—Óv¾g –Œþ_šÂL§#ôV«ÂäHÌrºq0:(H¤RfmbâØL*™Ä±( j¢žO›V1©xº\J³ÐË\Âö‡¢ ÌÐ1I–TŽO“¤eTN.Ä…¬,&’SîÖ =ÈrZM1R`âàáüìì˜(ŠÎ฀#,à~4šF.ˆ d¤&<Ž† <ìÅà€¦ÈõrîxÍ\9ÖwyµqéÜÔÞÝí•¥¹îl†aŒà÷qŒ�ö£·:Û;üAˆA.èC£#0\NU3©¤ª($Ÿ6æY†&¥8ÏÅ$I̪z%Œ±]_ËÛmn§3ärc]Ô붵‡[Û‚ †ùýÑ` A†–]¦" ±jÊÂùéX,Ë‹ÀR{‡ÇïÇiR ‘y…XÈT‰Á’Ð6çŽõ×R99Z3ÖO m_:qæôX½š÷™–e¥t“¤Å¶6‡Ï \A«¤5&PÒðãùZÕиªKZ.#)\wN®ö&æi0†{»?¹~yá滧ûŠNwÀå†qÛ4+¥H%–“ SÆ'«Ú‰I{| Y6ˆñ^e¹Y¸»½togé7¿xç/øäèåÓO½wz¾Ï¶89ÁÓ¼‰SY"’…tÙNd&Gìñ¡‚© EËD)‡±0œNHC՞щÁ…“ó·Þÿ¸ot¥H&À:»‚^ç0ź\p{K%ò9£ÚW©”Í “Ž!¸$%ë•ÍÍ‘ñ†ž3çó=Eœb`<*$AwÈéÝuèR“¹¸L«¯Üke´žœØ›¦Vf*ëËÍéz~¤˜Xž.½÷ÎâÏo¬>þ`k÷üöå³3ÓC¶eÐ8Ž#‘0LÓ´.&Š\Læ©hJ j6?QÕýų́±>›½~¶òáöì/÷WõþÚ·¯ž½~ùÅÁÍÕÕÅæèPŸ*+‚Æ0FX†Ïò¼Åð$÷e”zAëÏ ÍZfa¢p|´tfnl{kåÒ…Ùïœ>¸µ±·{õâÚ…‘j`gS ŽDa· -‡Y¯—ì脽>ª£ÍÓÑæö¸!$ˆã!Xåér.5V+›š¨ô@¹»¿R´³¦+R$×Öæîr„àP„FCgY_=‡œoj»¯®Önl4>ýàâÓ‡Ûößÿûoo|÷çÿ¾óÑÞÅå…‰¢mÅbñ`� -û]îíQðéq¬¨¢gÕ¥òÆbyãtùòjýúz}ÿjóþÎÔ£Ýãÿxqð¯oŸ=ØØ^)T -úý”eqV¦ " 5²ØÚ(»Ùn¯o/||mêß<¾}ìè‹7»=½úÍÓ+ßýéà¿ÿyýÕ“[÷¯-\\*åM*"X<«¦Ëfb¸,.Œh«Óé™^r¶/3óc¹“ݧ&Ì¥êƒ;g¿}ýûW¯žöðΕsgšI…¼0A#R—+ØÒÒ†\–Œx¯NX’·[4z”ãÃÆB#³:ì.ÜÙ¼»söó®|ý»Ãý»ÛƒÙfsr|vuêÌM9ÓG…ý°bÄŒœŸLÝZº~®ÿ¤¸w©vôåÞÑóûn.î6ÿúbÿßÿ|úýß>ÿú³Íï_îÿñÉ»ës¹¬€aò#%1dDŠò4S‰îœéþòÁæÑó{Ïn}rñdïøW‡›ÿc¸Ì›šHÐ8üevª¶vGD ä¾:ÝI'N§sunrή„pÈ!C¸AÁá2È!"„!Êá‡QPAvfdЙšª©ýgû¼õV½oÕï÷<ŸvÇ÷W:vçC¿$&Ï^õÆî8î6¦×•¦[´r³AOÚ†›Iú1Hé=£Â vUh§ºŠ†›ÃM–XÛñΣ‹³W'OÞnü~2÷¿?ü”Xnq=ŸjHlÎÝ4kdדéß^J#‹‚P5…GMéI¸àšøÖoã·õé >ùm¿j¨Õ³¾4ø$z2Ñ=1ÜgÖéè,!‡%‘<‡,6sk³Þ2t¡7wsºyýaóÞrÿ{þ¼889ˆí.†?¾¼8^\›é¨-¶˜4"’¨TZ ÈWBŒ 'hc´xø]~t´A»>^µ÷ôîæ\8>Q³½pû§±ßÞ/~y7w´y÷ýf÷Ñúhgi†N‚À !)›Î"PÌ©D&`´}Ôª›ë´l<¯F~û0óïý‰W±æ£xûùþÈÙ«þݹº½ùÚw«-/gë;jÒ3-:j*“A�&§Âã¸áÖVf!A|é{ïÎBÓ³ÁÕ姻“‰Í¡Í™ÐËéêßO—ÿúõàsâñÇõÞ_?<Þšoñ©Avò%È�b**¶‰ÝêT·")âåÔ¨îÖ(£·óƒþÙ†øxùþJÏדµã—c§;ã_Ožî¯Ýk:}^¯ÁæapQ2¬\Zi¨s±Éñ…¾ÜÄJÛñ³žÍéÚçS5{+=_Žæñ¾éÚƒ•ÈybúøiÇj¿}¾ÛtË“©‚@¤Ë×ÿþ·²¯]ÕÃ)EZ³ê -*‡›íï–Æï'ýôCôÓëÑOÛÑÃåöÃ'¡í‡%³ÖÖb©ÇÀ3ÈÈ~bÀb¹�ÄÕ*«;+§Üc*²€¥fVØÇŸëËݘnx½p{{!ô&Þy¶=ÛO¬u¿™¯;Ûêº8=Ùê‰ß/˜i%†n93Ír:M@rš@¤‘!²ìte¶ðè9M>Y_%:T'Ÿ›Ék||yïm¼óp¥íŸŸÿqþz}ªnc&2ÜS+äX,H‹JÏŒPÝZv¹{Û‹Œ4ÚÖƪ_Ì´ü0ùúvþ¯ÿ¼9Û‰îÎ5Å*jýv= -ù<W,•›är£ -ÓÈ*cúmâ–bcoe¨^÷òa͇ÁÓÝØâHÕâ@þÖdÅþRëÚD]ÿ-WcÀ‘esÊp#Œš¸�ÎæˆA̤1: åùô¼F¯ª©HÝPÍtfíÄšÏ_̆×'o>ù¾j<쎆2zªŒUùX–EŒ£¤¸ DpºBéB@±ÛpЉóI--ß5=ë>ÞúþôõØç7±ƒ•Nò{Ñ/‡ïo>LnÐûbˆM¡¤2å¸ÃhpcˆZ%äæ¨yy -š_{½«Dm6MDœËÃÁ¯ïc¿Íž¼úùpêëÇí¯ö>¸1;à/órœ:€Ûm¹r1¬GUy„WÏò¨¡\ ÿ†a<’?Ø”ÝWëñ¼‹ßÙ_¾«^(žj+h-ÑRB̃0Ÿ'#Iæò%6E¥äÜê<uC‘õ¦ÇØ´…œSíÞ‡ÝÉîÀ-Þ”…<J¿SE)$"*•#:!¬“bf™Të4™ì™‡*²ˆ¦Bs‹W5ÉGËŽVÃç‡ã{‹í˃%Ëýù÷k÷‚²ášô*¢P 6[Œ1uG &5Ã♩˜–äT:E·ÜÀ@~¿Q¿Øï9ÝýïÅúçÄäÑæÈÊX8pù:T*Oe¡L¶MK0R•×ªf/]R™…·øM‘ y Þ¹4Tµ:Ñü°Ïß[—QäRÀäJròU -©¥ƒÛêªPëÜRXülƒ2ô¶Õû½&ÞíBl¤9oi¼««ÞÛVní®qÔjlr“RD -�*ÓXr*[ÉôBÔI:C–×H¸,•°©e5’Aˆ*r4Í¥¶öªœpyyÛb§¡Ð¢Ë7* -±äÒYÜšàZšê¹\”F¡2)×!M ‹ñ†ÇÖRBôVE/fWF‚;Û±ö͉Úõhåò=ÿl{v[)®•ÐxŠH$£2¤<†(S(phõy&¦ôz·4\„wTëãu_Ž—Îß-¬ömÎDÆ:JÛ«|B¥”!˜I®ÉáAj¾PÉb‹$0žmÉ0cC)ÈÔÂv9˜©û¬jŸ +5Ã%†žº‚¦bk>9qÄHê$8ÐõTèJ©ŒËß±PDs¹BFÂaqÌfÐ:õÚLÊŠAf)`Ãá„ÒÔ|º^"qÙÝ" ÁáÀL–ˆÉ‘è-ù�§¤òSR¸,_*”Zõ¶Roei^a¶Z´cåÖÚ,$â·†|¦ªiµ+³ÊKJ.¢]ù%)•ÎD°…Á–“ÈôÍ7—HÄâ¦QÕ g›ŒYh+œâH±j²«ðQoÙ`ÈÓèsš`PÌ` -‹Ü\jõFø!• JbË䨅Å2í‡Qi%$VX‹ -™Ãd€HB$ßQØ—¯2©lT(3qaMHcˆEbUõV³Ù 0ÒôÐ¥WÙM&µL…@0‰H¡ Q*L¥I׸W’9>¡4”Ö²ÿËÅ'Ö7(ÑÍ3ØÕÉ+( ÆÉÁÃÑÎ5Ð74?§ª¤ 6/«,:4"ÐË;È?:$8ÙÊÆICGßÐÜÅÚ9ÚÙ7Ã+0Ã?$ÝÕ-XOÇÐ@ßÄÕÅ'0 *4(&<(<)2$')´&?fB]J{qxuÒĺ¼¦¼„Òä’¤ˆŒ¨p+k m}Kg'c{5mS]ÏĨÄêäôº„Ä|?O÷H_ÇÌHÏô@ÇÔ�»ö¢ÄåÓ»VÌ8± À�$ŒRf endstream endobj 27 0 obj <</Filter[/FlateDecode]/Length 16997>>stream -H‰•çŽÜÈ…ÅÞ]YÒÄŽÌd‘,朚d“ìœãt˜ž 4’Fa ²…]¶ÃkØ?ìØ÷séwoñÞs¾sŸßfÝбUEI±3VJWËÉvýÝ·Áúk§{íZñ‹›7?ÿò«,Zx…Ò¯õÙx°ìæO8\â·\âNN¨RU"ùcBŒöX˜N‡ÆX‘€å*¨b<I+4k!PÔTÓšZx�ŒLS:Åèš™RCÒ -+ZúùcÝG+8¡Šb¤hI˜Líp!ɱ,è¾á.Çs ³ hç³ØM5^Q +Ë~Êã@L$]©É?üîøÇŸNJ%NÝ8l¦¶,¨2ÝνÀ˜XfcCˆM5u±ÓÁ«|¥dS\|‰Ú?ÛOŸÃî‚•mÑHÝtYÌîÓÑKh&‚ìA±Þ¿*ÜÑ9yŽkJ°tZ7v~¥xcÑì˜noyýÙH%Æcµ§µÖ"@À‹ Y1œ?:× ]”3Ý@³O‹1-6HN—ƒ~…0Ê”U¥m æn2ó•›í•á´Ð+rr‚ŽobDS;žùÅÆËV¦×2£1«„RbDð NÉ9¹‰±6€d¦v44ý®MâÎeܾӱ"[–é†Qnó*‘+Fftávßpf·B(Ççô“S¢J[œÚ3ã ì2.•êÈMEË -ìF´•´ˆPSÕê±R“†)¼'gäy ²Õg“{Ùb\L°.-†Që2î^—«NY¢‘áÈJVŒÔ¬³>%4oªyãi•j*4íù';˜ñŠS[g˜‰ašënÐ::!ewìõžE³×Ý߽̓aÕ¢Î8PK'»Íéq0 -ò˸÷²9¾û¯ÏhÿiY|Z.¬Ô•ßÿxvZzã¢1ûÐœ½w³+œöŽŽIŠ¶«¸ùè1vR€Ö1›‡¨ûb Q¡½ÓªTÅ$Åhr‚t‚=þÃùé)…á -2°Nl·]©Px…‚#B_Ã:c—I«Æx„”áBòÓç^÷9ïôT¯}wÿ×éõgÖ, ?fGÆV<òíìú+]œwd·ë¶·œÙ!äŒQZZ¼l¿~þûoÅúÝQ]ÆøTo>óúÔø XJjŒÔDó'ÈoŒœrj[‹÷vq«E+TYóuÎ'„-ÅÐ!Ø£Þµ/9[»ÖüáìdÝ¡š\$ËOáô}0xé;ôáìæ/z¸ ߈GÐØùNç¬ÙÖÀ-.§—¼ùðO`§u ã\ÉQ0F›w†””DébqùÉJ/Ìt%…+Ök®F‡:#Åq>(Qj•R(Þ5ƒ±íEcŒQ&I›v4Uü *¥7VÉômsþ^ô¢;§ÉJî±Æ¡êô >¬ÑêzcΞÓÁqEçŒR'KËMÍ›IÎPuÇHSÑhÞÔiîʤM‹)#w8c„&,:c ·+ÂiEtâ•âj´Ž:âÝp'À[ÍÍ€ž¯Þ-1~oÐzϼÕò[¯çtîŽÎáY]Wì¡Œ !b¤ÁçÈé@m‘ :«É‚Ùõ‹ë ¸B¯ŸÕ•*@o¡„?^0À9+ƒGO±Rb¸J06+gÐB1ÅËIµ"”ÊT/Gâ^ëÙAÍÀŸò0\Iþ,î]=|ûï`÷—#Îl1zt~çºl¤kÕïÇÃë¨wY‡Þc ÿGOww¿t¯þÖ\Ü! C5˜ÅY<ãœcôÐü]ÄQÿ…Sìq!ÂPRÅÛpøÑé¼–£ 0ºŒœs EkZ‰ ÞW‚)rE:½o/²Ù»¨ÿ¼ÙöòÓ¿Õx.Ótóuþæ×ýÇÿ\Üÿ+Û|é_~s¢eÞ½¼þøLj°F¬e¶^ij‡ÞáÏíýÏñô«£¸¢ý´K7JºÕËÍÍ·W_þ§6G5±.Æaÿ._K¦Ü5%·qŒV@«Kò)8g”…ø¥ø(™`ô(˜{ë°wŒ”RSÔ&7z~•Ì?:í[JÉI.X]}ñ²-Bò(g*¸K59Hþ„ÍÙ^2·ÓÕ›Pß…Ndõ_Å£·Éðu•´õp7öjxAI9›e.:®¤˜…Ý—¢98‰¬–Aª¦;%ÙKÁ¼|\ŒÍüð}kèÔg ìÎs9ZÅm01Ó“}£W"uø´ÔB°¨áÞè1ð{ðZÍ=ZÄåºvVSH>@CkŒÞHÞ¢J¨%ä4ÒÁ@|Zæ?)?zZ}|.bb¡7¶Nq%{Ó -®Õ(e¯ìŒH˜R“úž<…o‘ÐÅC{þÎ-¶ÀjÉÁØí\1f®#-^ÙAWÉàv°{°óu•wÕdÅšÿç¸ÌzÛF¯0üSŠE±ãLbKÞ´K¤$J"©…䧵R"µ/”d-–-^d[Þo“xO2É,H;Ó‹è‚¢èèêqïtC€<zÏó>GÔ;¢f2±‚ kDvÑtù³~AÕ@Ùáag°Jòm±v^›~JoÝ®;¢`<_SûçZ,¸lBZsÈH¤‰ÊÊû\á€æé`†I¶¬~‰@y»?çÈNTdRý@²m¡E¯PéŸ~nÌÞŠêŒÍˆhè"•FÉýó §# …{Ñòy¼y®:ÂõM"î›åá}Dkô~VìÔG÷JïJj]´>¸ø¦�VÄp&k£m£+V¼Í÷¾å·þÌÔ`öÁ¦q”ÿJ£#DÊZîH×— i¨³û]\.’±>ðòœíÝ¢ìÈmÆËÇ.TZÇ8G y•:8RWLÜš™õ‡+•Þ¹ÕÍkõ4äŠ -U‘²oªj˜<YxÕXnÄðçä&.¬›ƒzGÜÃ÷½É©5×,‘P¼5™¿[5³Ëø³U·Ñ“¡¹Imö3¬öñÕ§¿þë¿Bn° %^œ«ðí?äFïÅÖ5$_cô‡2} Ó‹5ÏÂ×V½“_Ã"Ÿ|àõWÖ©u½÷‰l&ê¹ÆìúJK<×ymLÅ-l£Âñï6ž½0è¬øŠ5#ÒY‚:,ª1p불'Úf3;+:òņkÕÄ@YBýÉWÐS&oñ$±@ÑTc¥3yø՗Ī!eÈÇ*.Óñ€äp9'—ëG>±‰r6Î+tÃÅy¤4§ø¶‰L¿4Ñ€;À”™-TgË8§)ÅnfÔót}_#/ß #5•m>öÝ#¶ÝH®÷O»³wžhÅ@DàÙ'nœdw܉žŸ/׶¾ÿã¿S©G_>T˜%Ô×Rç†/ŒŒÎàÒªÝìMnqÓŒt\ƒ‡p¶ëÜÔF|ùÐΕ :ãµSÌë,:‚*_9¡ãÛN®æKô}b{aÅ°bÀ‰2›nÐ|uÍ3¸%WçÒÛÝozû‹l§e©~]zõÁ“˜ši#·ÿ•˜$æÍ•‡w7ßÿýæó?«ûΨ -IqÅO_þãVŸi]›˜@„·Xù(ݾkî~Š•çVOLiÎ"RgiÝ®µr¨žô~ùÕG©}!o]LxÊÀXVM¬“+;#MŒš©|$ï\걨2'M¨æ@E'W4¹’:ÓžÞÎßüŠù$½Cðź�:w´añ*&OFoìt.Q›¥—ŸŠÖ|ÉʽJ@Ëe3oÉ[ç_¯Oõ ÿ?°£œ‘ÌÜ™ÅgH¨ž]ÿä*¿ùíâÒK3”5%l'[׃ó? …]Í&=¿ù% 4´PRÖä+o`áM[¾…ñÚuÿä×ÖÁGš“ÇÓëL}âdÒT0ˆ©bi’j¦Ôc67p21e;V90ºDX|œS¤dñ K”Ѐ€ÿ˜<�ç’ùúM¼{¬Í1&ÇE*[{ï˜tb�{ô´nû½‹Ï{×Îv.¡¡Ô÷¤Æ,"ilžqò$VœV‡·Û§Q®™Mʽë§qÑ#•‚â¶PI+'….î—AÌò[ÇN¤¬áA2ªz„Ž=4¨'[W¥ñ{È$Å·|éêø^}D•S“¯°b ®Z92\Œ–ÆË'ÊY¼9,PAò„ɾ"BpN6!¸¹‚““0T´¢–‹ïyãÛdO‡³:Ì/äzdP±ûD_\['H¢ì ¤ŒáÒãAÀ£/Þõ‰]O´F':~iBDûîH¦DÍ/MÒsÀÄÎ**‚b±âVÿ£S€ÖÚðjþð—îÙòöm¬vêÖp?>¸¿úöoÚÿ#‚‰5ÓËdë"Ñ<›g›8úú§FïÔˆ!À#,iaø ÷îÄúU¦óÖæ+-ºAóÖ-ŒWÜ¢â=w¬ƒ±%:Ö†Fà2ÓÅ—ŽMkÚÙJI‹ËÆg$Mgãmtž€Ã‡+i6=¿_X…N‚jˆ¤ÙÖ«FÔÝÿ€mðÕM¸Ë„6ô£É•�ùã¢chØe'%¶:³p¶e°³$’yyªŽÞ¶wß'êGt¬îbR²º—nŸè=z'r…‹ay7Õx*•]&³ífeðp2T¢¢ VÙ (çÓúHÑ쨸ó@Ç¡BbuÎíÚÇÓ“ÇÚèÞ'ªàÉõö1ĺ8œéNÏ?ïœþ¨Nß•GBuF“‡ó·»óït8Z³¾²D°Œ²cX^7ß±RÙHª5ó“l9QfèŽõÈįŸ/¾TGo¡½3{Ì®mpiJß53U·0`¥Y¬zpsù'·_ŠÝK›Þ5R’™–±€<‡×Nw{“ËbïÜHɶ@¢ÅÂŽ*ýkÀ¦™£ôV¨0f¤§¥ó§¶7ìqŸ`~Y·!<e³£Pñ•NÍ;øá×ÞôÑëG'Oî·i™Ý)h[±rĤ¶}| #ÅJÿ²1¸DÉ&PÝÇNL”þèø»ÎøîóóÊø `Á†* ¯{'¢ÔÞ0P.€@eðñ£¢-+S}iDKk¤+ÕÙXië¬sú³<}d‹¨°Ç)S[ ¶´Jy%¯ÿâ2ëQ#;Ãð¿‰<î±»Yš†¢(ª j…Ú‹¢€ªbߺ¡Ùp»±±ÛoíÝŽfFŽ’häŒäÜDs3Q”›Hù ù1ùZâQBçÔ9ïû=%Õ\À€„1ÈTmHe[HÒ¼½G“jF¾Yðí úCÉ}JˆÅµì®a\Ö<P§*FIã=Î*þ"ëœJI+lÖã”–êžAY£>Bçz ätï ÂçÞð™;|ÉÚ#LpX–ÝæèŠ×›”XªMžuï}î¬?Œ·mÿâÏÞÑVe¬æô9Η1ÆòJ…Îéåk»±¦Õ:ž±´bÏt;åÎ\«ÍýHµÉ©ž]›ÊÎàn”"aÚªm„1¢-sÞ¹ê¯5©ø'qRú“w_<ÿš¬Ôê*ß^VOPê“Õ«Ñæ]‚sóÁ+`*spÍ–V˜ÔÄE»4Ü>ÿRêmþ°ŸÀ8O«oî㬞sg¦{ÖèÝûõÛ¿~þå÷›¢K€Ì…òº½ùyqýêú'Fno¯>}ûí¿n÷"˜Ô í4©ŽáS¿]ýÍìíb)M¹Ñ¢Sœ¿¹o°Œu™\Ûðæç:ôÙ¬ž ç/ä ¨©w‚˜|ˆßÈQ¹%š=ÁêCï¥sµöøYÿü½æ¯ Ò‚_l®t÷”àÝLq¡u®ŒÎN©ßgôA×@ÌêcKw)¨(C&?SWjmKˆÕ$S¨Œ¶'—oi£u;L…9Bj�øÕ•áN%½Œ²£˜þ4A"ü^†™ˆåà«UÝ–º/2r§ØXj›8n"RÕ QÑŠ»NP%hàX˜àBR¢»,!g½H\ÆfÕZ8™¥”šÞÜ(•¥\š—Ž_9£×¸Öã2¶P‡pv -š––vû`¨Ù\=‘Ö¼þÃòè±V?ç'¤ÞB'!xzueµïß”CÆÉhmNïäý™Ó<—˧„D -ŽR>N°jF*fLƇTš¦s \¬7øAkÝÆgôŠZ_@vWŸkó÷ALˆ&xɨ7Ξ$%žDR%µ¼á®zºóOv”èS¼Ï›OY0éXTtºý±=»–‹”´öÓßG¨¬="xg?JBodA©9«uכݻ2kãí™ä,…ü4‡ÉdgÒ›½8ݼE¨|ŒtDÿÒ<~“kì —xg -Š’ù³{½Î:‚«Ñ”ä«Ngwrù¥5}éõ�tU{›¯ßþÝ<Òn®~v£wÚÇWšž -£ñãßÿó¿×_~ƒÆ>Äd�EÅ¿o÷Ÿõ{ÙÂ(kt6>o_~Å¥*’±Q¾’’»¢=!ÕcŒ«£TÉ,ºópÑ‹3~Œvà -ˆd©l¥ØÙÖ×(mR¢Ç+-x�rƒÅ+œó1éN˜–Ôöpñ†äüïîwC,�gRÙØRÊ Nºš=üë¯ÿÜ=ûùÖòÝ&ŠÛ0Ü•éžKp@¼#8ã”ä!¤Oi¢ÕƒþOkÇ_ÌÖ«—Š·¨�f�ò„Ð1F‡’› ÎCY7•kµMkõ‘sF{’à+Ð$x¶ª7V„è%(;ÁؤT¶Úp-¡¦²Å±Ò¸°Ïj‹O‹~qOŸ£™Tà:'#„‘ B¬ÇYªpEFWmàº&£t1„©á¤JS9³Œuš”ªðç‹9½Ae@Y‚0®‚[¨¯GÛ£ig‹œÞN€7½:…™Mé(i°z! ÂQ¹ŠêšÃË\¡ÿ}ˆ¾b¨v“-œà´‘Îh¢Ù´›ËþâEkym4–QBJáŒã*íG(È…ì.Z³7£Ë?C!&ów9ÝœFR*øÅÝ0BÕ$[ã¹X^Q)F¨ÉS@Äxö[ˆ§-h`»~áöŸæ»ž¥ -Š¿¦µNË*<E¥’;Y_}©¯’™¼`öZ*£§²·ˆR…#°�Þm?*ÕWМّÊóBw×^~Ô›ÛCÜ:8âÔü qúcW¡µ>›Ÿ¤²m¥<ó‡OuwšH“óç½áešµŽ0 eòàYåÛþúÆ”¡ýãÙåd!05ˆˆ(ãðFH)ïRŒ½áXc¨ÕÞüzHp$.2¬•Ê6q±ÏxI¶§,˜«ù�X‚ÏÜÑ5ègŸ†±\˦…2œˆhAÁÀ%‹Ç/ª“×þä%¥wî’$puƉgÒèƹht îÏóKB,sZÝ^e½™TžHîDmÎ3…aœ)€ÅqÍ’RƒTŒ1LI-„.7ABýî…Q[QyL¬ÅR6ŒÖèfŒAœvp±*Ø£æì:Bh�$ÕÑ# çŒÖãÍ¡æÍíÖý®Ó¹*§6 Ø -˜›5ƒ$ÆHcMŒ1»/zÁyp”º{Dí)$í€sÁÑ\‰fôÑÉýãùÓhZ%$€«+Ð7*[!<¯Vto,Ù=¥8áRnÑŽ0³Ôº–ØË 2Fä_…,ÄÙJ�H¾´Üý¢zëŽK±´%ýöô}ãìcMo胘ùÚ°p Ḙ M†wE«yKÎì³²oúãŸG)%šÖÐŒËê=¥t&Øÿ'¹ÌzÛ¸î(þMúЉ#‰û6œáìûÎÙ¸ É™!Å})Š‹Ë’,×®$;–ë´‰‹¸y2ЗE>A¿YÿJ€û0À�ä½wÎÿœß9ÈA(«Ñ?õŸâ «G”=K`6Æø¢5•Ý9ÆTD-ê®îÚ«w%1ÂÅ�j‚ê»&‹kAËvä…«æøåàìCsú¼k/É&'…¼=ß'Y™1zNç2\>õE‘°ç^t®×–ßî÷“R2 wŒ½6~§…¯´ö%k(kqz“ÕÚ„äsàBÆ�\4˶@~œÑ/àZ%:õ¯!Líè%$`Að3T%UI±VdH·ÖÑ»põ†,9³'`³zB9Š¦×Ñòª_AÄ*çÏþÛûŸ¥Ö:…lÁÓŠ‚Ÿ*êyºQ’¢²¿9óÏÑæ¾ÜZv p³„ B*p ÖÁï×'wÑö'B -ÍFç J p±•§=h7Je¥U”ÒÞOÓ”ÚáÊ#©2ƒÏqõdI—nõ_•ÉwñÂóX.‰ID+²MTŽ -B3[Òi®Rõ4§/ˆ¼;‡QRZÐõŠ\=UÔ@ZÝÉeµ³*PZ‘±2¤S£rû…ÚØÂÎcˆrå¬úŒQ‚ýŒÆʨA5«õnƒé}½ ñArõÎì¦Ü˜%‹rÓ³¸E¨]3Ä+¡vÒˆ09~Û^(»@ZPµ2¨Ï˼Ñuüe2Ϥp\¨GOGnæéjµa‚¼`ãÛ<a ·ÏÿíŽ^ÁEAÀeP#žahαj#Ð|3I)ì©žñæ!NÛyLæÔÆâôÞŽXÙD?Œ¹œ‰`>|;–$¾íÂùÍA–Oæ•Xš‡ Ä™†ÕÜ™5J:DTí«†]Iå$¨c²7`žÈ,ºAÊ!ì°HU ¡À$hÕ5åœàÆB¼@Y`A@€m´Ðbõ\ß™ÑT[å3QäJ¼-˜!`iÀËÁ°Pgý‘)Ó˜Æa¥{åøúÇÍë8½ÈÐöòmÿâ“žîåZé¸Ñ•äLÕÚ±àe·oû‹Þú{„öRˆlø'îøޟ݉ގ í"$‚ìz€ÑÎz¢3·‚‹áöSwùNÌ!c9ÕzP¾h½Ômþ®6O·`ÐP¶JF@®T<ÄlíÚÇÍã÷áÉ'«ÿ;\·üywõ`6×”œ;gž$z,WŽ(5Ä8¯ÿùñ+©„qD+É]RëC‚ ”ÃW‚s¸B°¾ê.8cK)wžïã´ÐÆ7Œ>ñ6é–˜š`ö 9ÈÒ•xAFHc¾»¯õvYÂT+³ÚðWv—´2ˆçäo÷Ñý%™Ñ^¢DI péÎêÛ/ÿ›ÞüY¾Q‚Ìo, ¬2ƒê`€ 7^‰ÀHãY–ÓÚŒ¥Qü›ÏKð–ë�·´`JeŸ7Á„uXñûìyþOÏÒɬ@ó A3˜˜Ì3 ì4ZÎc”h‹EªK1ŒPaD/™Ác1<ždi¥ bËaj‰ÂwÑg´9Åæ‡1úÐ"l•Òû p7¼ôz·rc™.™ÏTt�¨hµEª\]šáŽwF„\Ï©B¬)[]è•þâa|õ¥³û¡ ›$oN`z‘êvûPôFå÷çÿim)wZ䛪3¥-¶<Žn?þzõá×èä3¸ -ŠëåÚL®Ì©ÚãV0º7›gWÏc’î 5«Ë—;ëdå4frÎÔŸ=˜íSÎì´áÂÃM@\B"€H¼ÑÕ¹"„ºjGÇ7?C¾Cš“ÖÈòMý¾9¾"%ßiÌšó7¼s$W7�”Ñ—ÝQsðbxrÚf”¶]|:áN©.KB�ÑËp !ÜO#\‘²Q®‰ñ-Ãß2J_¶g¼1Lc–ÝÚÊÖlÆ™Pºr}kÞÔF¯)µý„sbýpuÇYŒkàr7:p¢\©Œs5Vö%Ù½Ö‘æ ìö*X‘YF5CÓfQ¥€Û`Ý‚9„EéjžpÒ\,ͨÞÆ-–0¶ -˜hp‡©<›È åêÀÖðGøcr?ÅfŠ 0¡P²³ð“öR¤ßÛN6ï!¿ÙÃ’L*'S|@²õØuŠz¶—Ï jBö¿‹c‰‰:`®öH}@—‡¸>†L¢ -kö¡ugÑú'©½K‘v¼hâb”+9L"¥Z{|»þ˿“9g’̑мEÈéM�Kµ…&ÅÚsFïÒ²G :Áj´Rä¡£Aa[¶q"T—ZmJŠ•"mÑFÏíìN®>_ÿ¢´.s„KuVm#´…²0aˆ<èJ ÞYæH/ªºuÈ)0•x4�Þ܃i᯹9ÕSJ3OÚÌoÃÒœßW&¼·D([¶ÂÆðR®Œ3„)Váæ¯óë/Áêc{ñŽ3{Ðq¢þ™?¼Èà6cNëãûÕÍÏ÷_Ç—ŸÎy‘0½Ælýò‡Fï<‹Ã°kš~5D¡¹j2G•kÓÎâŽ5„eŠF¶d3j¿$Dp -Œ#„Ýî_³·|刳&@A ’xN`”Ì ØŒÖ;¿3ðÿ9.³Ý¶Ñ3_K§‰íØÖB‰¤¸“?Åq“DR«%ʲly‹×LO‚LÚÉ ` ÐAÛ“sÐözmý4€ˆ€¤ÿÿ¾÷}ÎRí„àýê`’b¤ª•¶¤7½·Ò Ü&-E²3ƒÞ«Š´Ä¨Šëœœên‰ÌÌ-vwÉÈ}@èÀÆUˆàKag‘•…Å5/!&ØÁ´H>:Ä´*ÙÁÅ„À¦ J^zFr>ÉxœÜ§¸Eý-&ÃÂŽØBTaýgt¥‰`Hd{1ÏÞÝüíîÓÿ´³[Œ¶E«0»(e)ºP“—áâÏ“‹¯Ó¡ÅŽÙÉÒÝqÁÙŸîvm¦Çï¡ô)ä F,B9Ægóë/Ñ,I?$V x LΫ)Œ´áŽ‹“§áËŸ”ô‚5GÛjÖGÀKL»ägçÑ£m(9iÐpk23¹Ìé–Ì‘7z㎟ÚÁ¹häÕ¦°sˆS’¯zÇX«ƒÓ2Çvt”â=¥Çä@/ zà&¢=mwOƒÉÛtùI®9}X§ ¬Õ~ùúkvü¦íNh=Ç¥>)€ô@I áyµŸÎߎ.~˜¿®Þmâ(¦Pê%§ÙôÞ‰—U\&XdŠSF¢=«Æ^EÜÇd/9®Þ<,¾Fò¾â-×_ÊÛ¯ª¿®àº¨g·O_!�I)â‰dÍÝ즓ßXñYKJª¸ÒIäïZJ²‹¡×eµ1 â‹rÔV#·;Y?üh÷6îb*P:!õ[rÞ)”]ó^Tfðí]ˆ}f¯ÂSR -\JIñA£MK¡—]&åSZ~@ÎŒWóãU &”™¹nÛ˜XÙ}P¾Û:”Ükq~×+ E7&½âª†ñÏv;/©]ˆJF -%ú•¦Ê(Y“÷)JêÎ0=ŽÏÞÏ?L.>ù£ DA+4(gl?X~8~øurýKoýÙ΀8-BNƨ‘9ùk9º5{o²òóäô³Û¿lr¯Å€s‚Þã¶jŽ™ZñÉÙ·¿Þ|útJ•T ÆT:< û¥‘ß²Ö4Y|Ì7?I΂EáìäUXlp)„¸€#eäL6gYù=¨o6´§íiÝ£a¬OŠ@o8y,¾Ò¨¿e8+cÄ›cÀ{€Éœ(#ÑT è…SØÉæÓåwÿàœr¿©˜ÁGP»$ç¶D_VÞèióô¯õ›¿ÿþke7)³ÅcV>rr’Üìݺ“ï€6yc -‹e!;«»¬4ÚuSA«#€Õ`úT‚–‚*Ž(ÎÖ:Îê´Ôaä˜àÅ^¨N‰¬1#E2jgºÇ ö&¤Îl)¨[l€^T8ÍEùm<}OK)Ź¼ä™naù+ùô>ßÄÓoÿ„ÑÆ»UTo"Qö%%†*„Lã•Ìì®øœE½CLy¾G)V‘Ïï%-Ù¯£Œ@ð7ùƒÍNr‚·”tp29}¿µ¿Ùií7Ô -åÑúŠn:ý¼eîî·,ovrý—½}ö›çÍ}L噓ÝPâÖA€HaqŒ°´ã¹NUoÀ)]’wàrýÞ9tp…˜–~qŽœ¢…"�`hjXg5,yc K«wA¦EWÈ.) Â3„-Ó㵓Ý#¨'m…Ñ[ÈÎ4Ý´»« -ãVHCPÞà\Ýâ&Vô–¼3'Õ¬Þ$EÐȬ1„ÇT÷ŠO´œRpJÚ(t/R„TÍð\ñ�ÃV°¹íŠ°˜(…dÍ©°ø+΀Nj´yÐàa„d+‡àåõ¾è#€«h›ÚÜò` ’9¦ä´Œâ¯D§TÜ£áÉûpòJë.y9€ë©³Á®ãœE�'�˜wPá'Õ[Ÿä,øe¥å4YWÕÎ1\"’¨É-Aˆ�„ ¡¹'9G ÂMᵑ§åŸ¢ñÎCÁñ \;»ø~0º §L0YVêò¿¿°'#sµºÿíßÿ3½¢F5Òjp¡ì1ò€‚f«‘¨“®ghG°$X 7¢$=Úq—ºmŒ:Kä®herˆÉµ†Ô dÝÈvñì]ÅMí_©Ñåîüq—®64Å;á#t¿…‚ìÎFp€�6’ÞS:“ ¿@z_P"ùcS¼ËÉ¡,œtäWV¼Ò¼)062ØP‘>TÜ…êIÖ�ˆKéŒK ¾X9ãÚÅ+íÁõÑíÏå«¿9Å!zŠ;‚K¤¤N˜RRÎᾜÞe0¼6Ã¥›n@ÜšbÈBÂ(9L‚]¼Öz7JwMÀß·§¨3o%…fæ0IhíL4‡/¨:&(ΙsF.*-·Nû¬’·½„·ýSÁ9FÞºÎwŸ×Äç5¡Fi²9dD_@¾“¬Ôhcö®QpJjy•6›¼Û¶'c VrŒßùÅÃêî¯ÁðžB]ÝÊ:ñ¢¯‚·I©'˜3/¿?ºú¢t/pnKËÛiÒ¼¡ÄDv–‚524“µƒšÐ LNM¢ÀI9Õ…~×ÛÝÁðïaèWasy=7£µÝ»ª´l<M/zù•¬ÆpÝ BÖÅZz “« ¥Ež?ʇÓÅm)†5ÿOq™õ¶qÝQü£ôÁq$R\g†³ïûÆÙÉqÄ]4µË’eYŽY¶“¶nÓ&Eƒ´A -Ðö©í[_úÖïÕ#€ ¸sïÿ9çwXdngç(-Âx²Óg¤›ÇÛÜëÈŠ9Áú¢QËö-f»{ÜÓB5 -à=)¦=Ú'ÙˆâB‚öX1æ”Ý¡ÙÕ w>=zàÍÁùø·Ùµ9¥Rœ%£TÍžYNŸÿø×ÿä“+„c£m¡(ÁùIÎaäxŒØ•ŒqŸvÖõB¶J¨Ìü|cÅ+Å™`ì“úÖÎÁ�9# ‹QÀߢ/h™dWŒÈLQA~ -¸*·ïŠÃ×VºJvÑXŠâCÕž‰öÝÄÉO1@ Á(I1âÌj¼ý4œ}¦ïÝêJö-9„¸¨âúmP¾¶âs4D„&!„¶À C/‡nzá`&GXÙ/Áù/1W¦_GÅ)Œ”Õ'R:š Î:(oÂònOÓ³³›Ÿk!¯”Ã!<²’mXž™ÑŠV¢©YÑa<¹ñb‡"ì”õðâXч±÷S25XŠÖL²¦€á=ÂiÑœãk;z†"˜�Ì€Dm|´8Öm‘Žè,óÕC2}%YÕ‡ßüíòþ‚»æÁ[RʨÅø(h¢Y÷YøžïŽŸ+þ$À‰1¢öiƒm´Ó_rRŠõµ@AæÃüL³§- -Y¬öh/q¯Í´:š kL±CßkÁ!Á'»-qqü€ÎØhk¾ÑìYã«z¤ÚÓ';ôÓ‡v hl÷-<)>³üC/ÞòjÞèˆmRºsNƒÇÀ½ãú|söÃþ O N ”\b -éÉÙ.¡7 †iúëxrm%Á(HÑë±&Á˜²•#¼òõ‡aýVvWš» qÆ{Úš=•Á¨DkBI>§ y-…*‘˜ÀEÕ_hÁ¢'FX¼C»˜MŠƒ0sÍÅFûWNz‘b̆õ-.SvœQšÉ&(/PXDoÞ" Šóp?&¯¤ŠYºñ*¯¯ãñDÑ¡¬G°GKÒŠÇVåÍ4oŽLÄ·ª;%¸€à¢|õÑ«îÌô",¯8VðêÑôyŸó�iÃÉ+oÿVòç‚9!Äx—PH1ÁÏ`Âë¢HöùŒ -N0?;†N‘Ö²[#@»t`ÄçXÜ)nüê¥âñ– Î>õ¸ I™Hs€·_¿œœRyB,I±ùíÿ¼¼û%…ƒÜÂà¯Ys¾…½ ¶kœ\µ)»Mšèž=>ã¥]܆“7!Û®N¿æ¤ƒÔå¢G»òh~¿~ñ-cw–¡}9…œQÀÞ€«¶>P&lp¯ö+Dc·*›¥l"†¤”û7À¹.éHUÚçäÒIN1Ì4Ÿ�·¤èt¬’>Ù´I‡QFÖðé†ðI£¥µTõ@)”ð*Ƈw—]1é²N„±!úuïÐ-^挖2Œ™ìMäd|ø!¬ïHe_ÑʤEù}vˆÁÂaì#\‰f /Âú}1w*¢é ;AoE”ôEІÀÄ®-¼ò|û1]| ¶Áä¨ö¾îìW‹›éÉûxþ†u »ÚŽ7ªUŽ�¥–W«V®»¹æc^/Áó’YaÁ.©#Ù£âIJYé�6kŠ¢7PÆ‚S“bÛÔ¼ûôGgQ¬hߟ{Å ¤œZéi¼¸÷ë[=>—¼ )d£’¸y>QüÙà±V~–ûÙ“ãªáþ¥¢nõ5ÉšÌÎ?Í/~Íå@ŽÒú%D&`T�I}½xþéèË?¹ãsœ·Šâ@ÊY_@ G{¤$Vì‰_l{½2†úd¤ -*È@w3+¥Š±ßêˆh„”±æLt7nu úmÌfWÆÌ ÐÁaŒàHöŽEsÁëæðDwš¡ÝS\ôùÉÁ:ž½ §o¯¿úÇ×?þ·˜¿ÛiŠàÓì¨sØ7:$`l6ZÝ—ÏÞkÁªMÚ‡¿Ä<PBÖ¢ƒ—Qú¾_^\~ñýþþ?BŠi/E{VwzøHà”c`8…ÅçÐ%ÁùWh@Šs€e%oÖábÁ^›É••^uØ\ -Fɉ -¶Ox}¬¸ ©Õ@-(9“œ:ßéñ«V$ŽJæHÒsVy%Ö‡3g|º¼úÖ^‰ÞJ W’1ÒŒÌòƪ[1ÚH¶éü5Z'#g´¢(î„àÌf‡�R¼o%§ûÛ¯`zv‡´5³2Ý ÅØ$íˆúØN£éoÿ%« ºkÞ% ¡X„ä¯ìñ¥Ø+ÎXcŠ6’M²xƒþ(:+ÑAÇ\ëá ºÅ9às$]¶xü¥èÔZ¼m0á“CsÌû´Õ%”n_ÂsÍ`]¬î“z¤çhñÂÎ8=…“³ú‘¯î·_|ñðS2»ol¯¾±ãgž]œKÁZ0§²q�("yb1‚¹#aMÌ ÁÀ~Þ¨³F}øl‡lt¤Ý®ºGÚ Ð’B>¤„Ô˜ÞìÓ®›^ŠÖ’SGˆ¹.e~Þ všŒ¤NP¡¸dùîøá/õÕ望_xåM{~¶Ã´x%ÛÙã)~ˆŒ/Ëõ{LÄ+l‡Ó£›ï‚Ñå#›Écu|;»ùýÇþõÝOÿ~øÕŸ!E›4jp2Lf e^zlF[mx(º]&h üÓJ)9�¤ )e=aÈš~ÌèË} ú?ÉåÚœ6zGñoÒ™v¶^Û @Hè.=º¢HBB\ƒ¹ÙÁβ®;q²I³igºétû¢»/Úé›ököÎ0Í`$=ÿË9¿ÓTS0! ˆ–:8‚@Ò0Ù¯ž%gBaå!rY•2’¬KÙž£¶¼Q D’ÞSÝ1£Æ˜±¦éÕ‡îê+ Æà" -ÕŸ‘:´˜ðÙak„+øïqE<«Š²‘ñZ‚Ÿ‹Ö÷ô¯¢‹O’1¬ÀÜÏA‰ ó¬Úì¾Ù–z{«ú‹¯)L#Á}Ìן’åGÑ»lê,¾¬Œ7Ó*ï1jjD×éêÏHj€±“²P®H°Šµ‚/‡[Èmе£¦\•1ÒT]ã”DDÅì1@,gÇsV‹ˆ_ÄÓg7p{·f4CbRiµ/ãÑËßjH'Ŷ®ÀZ�lä/`?ÅXpùïj w#¸$YMLKuû´nžV ŹGç"È +9‚TBiÍ€(§5rFiÝ:>¡~4Rˆ«|ˆp$ëc»sSåÛ¤}eÅ�I G¨¨'”ÍjcâOƒld«3 -eL €8x©f–j–`´pŽ}w»;hDcì¤{¯{D¶Q´qÐ+c"YSdSÚ*ÑÜÖ -˜ö`òD²»¦94!ÎÖiͬsm�ƒÖÙ)íì^¡a°+£ti)ÂBä%“a¯¤×TÚuÞadùºD8/KSëÑRŒ('<_|ܼÿoïîgà+nÒajéçí^;^~jOZ´iZCFïW8¯Òph.´0ÌkñoèÞéÝsþbWxÙv§ÏíÑ ·u)cÉPuqþBw0bi:{Œf?0zA ´Z—qñÐJ–¬ìsZb„‹ÅË/×O¿ªáœ’Ú”èað´àŠâC¼³hŽ¼þë xÖ£2Ôq™/Ó¤©Ä'õx-÷$oÃY€=ÓWhHô¶³ÛÑâà® -ÞÓÆ`h-,:‹8ãXe¾ú4Ø~Ƈ!}¼ç‹ê‡q:)ËåšM7##¼lªQ¹aœœ‹çU;�X° ¥³z‹@ýÏU©sB)˜±‡DV2Ïidut*‹¯¥è £ÑúJkŠøž‡‹ÐQùýïI°üö\AlìŒ^‡Å+¾FÈß–ªÒ9©¤W«[GÇ,°'*îoÞþœ,8kÚPz–†˜@Ê$ôWéêíMrùató׆ŠL7掌*|X¢ÍÓº.hY:~=Ýý4Ûÿ->Ÿ±ÞIU?Œ–A©hÒcÍBë¼p²}«÷B$ëÿ`@q§õÍöNmMÑJ3ÜçŒ6ªª‚ˆ)o_w¼ïF+$/ -¬ÖŽoãâÑê¬$3c$WuGnÇy3(‰;z˜½ú§7~[åC"¤3FðLîu¿“œ-Üö–xW0)PVƒoWÑAÝ_øƒïÍh´ÀäG†V¸”±•RÒPrÕ»Bí.þˆ!äÈ€•BÙÌÍð"Ì‘$^Çów£Û¿v_”` ÉÈEƒ}2{ÏÛ‹†:Rœ¹5æ¾T¹¡22º¿Î–?®ßü[O_B)áÔ¼ªºCÅͽÁ ‰v‚‰BX«†£e‡1`YïšK+^=ÜhGXsÚÁ\ÁeX)Á_Ü‹)9c,{†æ¡~wTÕ¡t0Ä>‚2Ɠ׽ù{Ý¿¬0ZC°ÃÞºß~sÌ"Ú°jZähc‹ÐÞRUE<1Ú×V¼ÓTiIEû¦¿ŽA"ðü'ÖVH‚€§fŸ -¼Ð&v.Z9ö] -·ÙÍ—ÅÃ/â ¹OÔ2«=/n>¹ùí!Å@ -¤LHÄ;Œ â&AP³¤¿ËÆûtú¤øë3ÚÇ+l�u:©©Ø„14Ó}0y´z·è¾€óJÈA!0¥£åò¨ù+NŸàºT7ÎVCî�„Zý½=¸w�ÁþÀ R(*VOV#ˆ0qÇ’•×DêÑ¿Ýÿmóñ?$Ù•h8q@o¨˜�6蘓²Ó—to†ëSJÂàqrTç}dOÅ-�äœ>ÀÜ¢†8,P%¹äÎqm'[F m©á5 ®{ 8}â ½|—,žÖÿX>þâMÚ¨*Äè&S0z‚9%áM{ô`§/XX¼žA»äN+ZúùÎI_4íFÊά•à¡+FKUo4ܾSý«j3¬²!,@¼Yˆ‡]4^ÓT‚Nÿ…—ݚɧ £*Ju‹®[ñZ-h©Ó½1:ÞžÐb·DY'”ÞàCÓ*êM#ÊÈ ö¨{ñÆMok‚˜ÓŠVùÅ£.~óÛ³:ç:Éƽғ=,®ômIÀÊ{éîÍ�Q&º¿Ñ½µ�¯@]SN x¸†2¤À^°b$ˆœltàëä)Y|ð»×*²-éójÒî_O¯ß78¯TQ)!¤ÕLpg1>m´(1ª‰±j°3NÑ}ÅYŠÆ‚‘WšþqMc>g Ò«"Ø:ü\ìÿÎ ªT%´”¸É]vù™Ä{ÎœVÅjkª1¦Ì¬”heõœbœc)ZE{tÊ -mŠó«w½å+=sö�¢íôp½ãµX±z•&ôP7¼¢ÌØÈ)eº…íFx¹ÛéßñV¦ûƒ‹»?Yé5 Ü5†Pè*ÕôÎRq/¡á \�<‰¶v¶W½9H».ú8µLœd¢Cð¼ä-F»¿»ý×f‚çâ=--¸äÌ>²Ä|·~õóìåOAú?ö«¶9mìŒþòvØ™866IHB ïˆ÷7ldƒ%"„“x§é®§»;ÓNºídwÚ/ýÒ~ØÐéïèOjìÍÆNv㛾àk÷žL‚žkÝóÜ{Ï=ÇHf÷#q5SÑÛÓIÂbÃ*ª%*Fgöërפ…ásBD…Í)— )?†d)oMÈ™nQAü‘º¤èÉòißz¨xp|ßÈÄÒÉÜ(ïò±/·£™I4'ñ6 ÄŠKÇr¯ßãòÁÔ!\¾í¢6úŽÏcoôñž^ÂX>VnÁoó“lãi¦jDÓ‡^&¹CECñˆ|4 ¨ê¯ÈtxP¹p•…®²ÁXSJúXnXF¬³R+¦ô©”jÂåmo’#ÌSVŽàul°ØèÙB²ãr~¹N…k`òáG2“Bk f/šéÆ×rä*»´Bs>ÚÎ6NAyÄlO¨ÑºÑ_Wßúçl´†Ÿ‚³ßÁáÇ:±’™¨-AÁ" -нô~4sPh;#çO¥þy¬2…Uö‚Á“B¼ëår Åáì°Ô{Ùœ|´æ|d0þMʱr}/`¤ZZµÀŠƒŒlí…v|2ì̸µˆ -WkÒ²*)ýLkÎ á*‡ÌEË´P'öaÃÀ¾•²Cpûbz°Hƒƒ&äÚ+ðyu–®ƒ±ŠR:ª´žÀ&—'Þ`y‡äU�©‘sGL8ï2Åužýêä³×¥ƒ¥OP¼l -LŽRÖëh;èp^µJU±³ÓêÓ-Ã+²Ò‡·³r3VµŠ‡Íé«De - T»í•@^âÊ ’>dBE‡%™ I–Æ©R?<ƒuÙö%¼|‘‰¶¶™%”ÁÙæà€TkŽœ€ûe¢O°¶ËUB©‘ª}Q;°!_€qAž¬þ°øâ¯Õþ94ÊC%×êm‚àûƒ¥=.'çÇÏ~û·îÓ車^}JÆr£ÆágÐÞO>Ù}ô8¢:8ÿ‹vöX0Ÿ –Ð9H 9ŸP«ÊÌÊý/Ï÷÷|ûy¬¤û!ñÉ* ëkÉ~(=‚³#ÈíBÃH{Œ˜òñ9ˆ¢b¤›)œtg_ÉUÝ+æÁ Ξ}Ë':¡ÌA0Û£Ö¦'&û‰òvx 0ö’¢©ãß´§ßä»g°¾`Äh=]–š'™ºî×w¸2/÷2•eµw‘ªZ>üBA.ŒkƒÏA+„ÌÁ^¨—©œì°Ðm: -G,çÛ«Êá/!Rb~›’R•“ª;Tœ ×@gJý—ã³?wÍß'*\‡F’¾@nV„Ë‚XóÌ6mëâûý“Wt¤É÷kGÏ‹½sðŸwùì.¯$”A¾~ÂGÖâÉÇÚàÖʽ³ÒÁV>�µ È*è@4Û&[\\åäD†p²Iu! -Adã"tq$ÆÕ€ (ãå2ÁH-¡ôSE-˜jEóýtcQ|^ì=cB•Ø£ÌÚ½§!…s»¾È.%e5[…êTð²1N*•[O@£v©8X£þò»ì¾/€ø¡'Åê¨;°„ˆòÈËiM./ -½_µ_%+àg²wCåÖÉ“ó×r®“ùÔÞ ä’Õ9¸eE5ájfÂå‚zRj›©êÌ6â⇑ìx_ÿz´ü#/·=æ}¶“”züñ-€‰ªà�kGÜ”Xª_šßwŸ|“i¯ö¸Ê?†w=ÿÜ@ˆàB7"¸Á „n Dp!‚Ü@ˆàB7"¸Á „n Dp!‚Ü@ˆàB7"¸Á „n Dp!‚Ü@ˆàB7"¸Á „n Dp!‚Ü@ˆàB7"¸Á „n Dp!‚Ü@ˆàB7"¸Á „n Dp!‚Ü@ˆàB7ÿñ@Pq?übk+cNÒš£¹:9×V"Ïàÿ mé趫âÚø¶“6ÆŽa™šý†¯hŠåÜþ†®ÍÝ;W•n(rWmcj˜ð¥:ÖæºÇí…R þºh7ã¦/ÿt^¸|A‘ã©�Ë1¢ÈÂ?¬;BÏÓ>@ó4pŸ®‹x -ˆ¬ÀŠG‹ÂûEóu‘ÈP< -‰bŠ8n=*b‚!:¼*zïuHEï½næÚw™®º+äÞñ¸;û®ÖµOÐ7qÝ·¤½ZÎjš-1læ b™5Û0Ãœú|W_'uhÕõ®Êbý„¡¯©m%kÌ×kàÿñ#ôÞß)—*ÖD_¼±(?û@rï<?›ðÈÓ²ÑÊÑ—ëµuµµw*Æ3c>±usýœuûó¦óöÙú‡óbq¹®;MoyÜþ–iŒák~¯9½Yz¦ÍWWµÏŒ‰3ûp±©^ÖÂT~¨öâÌh¦Ó™ƒLéMùÆ9¡3zŽLæ9Ö<^ óxq<ùAb~¬ T:Æ*o!²®Ù8kt¢¤µ2'0·¤uËþyËèøRÉ ÔY"/Õ1^F¸¨¤³²G«¹nŽuÔö\ EìË›÷l˜•i©ŽáŒo‘ô·œ–—ÕMc®£/ù1gÈ¢R3W§Õ±£}³ëC6/¤Í£riK=këOW°ÑeõQg¸>r¨m}¹š£_ãoÊQèg¦Î|`ê?-ô×”So"ÊÉÛ9 ý^ÃD]k¡ÛšcÙÈëòvÀÆw›jì±®ØÚbfŒ‘/õ[Zqýn71?B†y‹VÞ ÃÞááIY§ki8qvþó¸´2¨Sð§õc·D ~ŒHÄ•ÇýH€I€ÿ ðØÖÀìÏ+–±$ð^e@äzÿ2 C" ‰€$’H" ‰€ÿI`b\ä^ôñ$ú>bq°OIÛ¸Í0’h=Œ81æÚm—Î}6?‰ùb¦=ëÃP·Ø™káA›+ôýû¦|ã”×æßNC¸ºNÄÍ6¹CgZ¶ìÅÌš[Sä{ŸX÷pÕh¾š†O!"š¶‰¨ºô¤1¹‹¨¾0×°óàN<2£ûrä«ÇÇK¹óø÷c[;Ú¼bKd#s5qUÞ¼ ߆ùé7-Õ1œñ•Ïò²ºiÌut/scÌÆò¨ÔÌÕivëÙG0»>dãÄhtó9Ò–zÖÖŸ®tsŒ~¯¾3jó§Ý\ß—› ™Ñ}¹™š+{´šÃAÖl|n§�²èµ9úôC5¹”6qLÌ[JoPaï‚ò.»7"ö/öËh·M -ï’覴ë¤Þv‰º«´RÓ8q‹%cg¶Éž¾”„†&~*Å4q+:øðñùÿõnbIžQãbGZ³Z³bá…±Ú‰Á!ïQÈü£íÄÁäh)Ý^‘à”µ_Ñ~|š”Rq«ã”f¥ù¬ºfåuc‰R—+ܤWá17ÊØùvr"ʼn/Œ2v´Ûl]ß.ù éí…pGÞHŠ¹Öbï_'×`¢ôXN_b™w‰Z«‘JÁŸâ|[µÑ0 ‘¥™"[©zJp6˥Ņñ¶[éå¡ÜŸ„àhJj¦ŽÁãL«â˜ì=!8®[µ«ÿX" Û×Ì -NJêåžl/¡8Åç‚…Â|$3CdðæløGGrŽ¿10Ï6ëè-5š268ìƒkR\„Ëà&Ò2í¡W—x‡„¿Sæœ$ýMá5Ïxôé.ñ¯ð|¿=•QHÀGu,£NtQè"‡þ)IÃ_>žãžXžÔ£‘¶ù§dÔwœŸo…E~úµY{éÅåqeô‹TÜaVj`œðNdŽ²é,}*ÊõОÞÿ~žÃ^~CŽ,ÿÌX\YÿÊ -În&§M0ÑX´é%³›LÒÃÇ¢O°u‚®Jçèÿ²â˜èŽÐÊÍ,_&×Ä`¢ÞM,0É3 -r\ìHkVkV,¼±0V;18ä= -™²8˜-¥Û+œ²ö+ÚO“R*nuœÒ´4ŸU×ùçú_K”º\á.½ -¹QÆ.È·“±N¢W�³rb¼ endstream endobj 28 0 obj <</Filter[/FlateDecode]/Length 3614>>stream -H‰ì—]oÛ:†AÿƒohMý‘¤]ÔWq|â-дEÝ-Î]@‹#‹ Mj)҉ϯ_J¶k¹í‰†Ù˜¢¡hâNć3óÎKnàUçŸ/^2úªÓý`‘¤0ÕŠ‰yçåý‚ûö$ÿ!È¢X8ìK‹Û3£!Ë¿è^(EVwåQÂ8U òïûî{¡÷ÿº^¥Å_ït÷ì%á›]Æp)¹T×Ä®ºÇnØnéÏëígvSÝ1‹4“‚¨|‹ûÅ£éнì?¼åg¦é–ŒäBçe?èêÃÀEgX:†gbµœcId†k4ÍvyÀDMÑ 1Yƈq£ž@ª)BчTº¶YM©¼5‡ü›'è³6á$ƒ´¹8à>êÝãÐ:ßCܾèN¿M®ŠÀ€äûâýÍÊ~`×Þœ: å'šÆ¡¨ÊÂÞ€LA-ÑP -ðҨ&Š¤ ‹ŽÅ£KUÊL†wÄ›åõi¬Tibï”óU+pO.poZk®‡.ÕVàZ›“eŒ‘}µ$s+ugÏYêÐð™¦cX2’oÝBûAµ5Ò&ébÄ ºŽÛVzD+½}΄†o[©m¥RÝôÏ{ÿÀ–Σ:A×ÌfµwGæB”�›'´]îé¤gºGãÜN‚vžùJï$vý[-@ÅO?x<³ÈÙwˆôHAíÞF²¢†~B»Tã¯6{1Mš±~íªg¸©4*‚‰"iÂ"tAãñXP³J£°cQŽŸÛåA3‚ƒÌÒðdì§?›iÂʹŽÙìÔ#k˜ŒãtÞ -èOrlŠ¶&<6Mû„ -QÍb.%=‰$—êÝŒ“èvØY$S1½z×{í`„VP±Ú{ý¬ÇÖTNPMé©«¼›×RU#f‡(SPDW%®”Ž]@àv´S–‰Ú QlM»,!TÞ]£ä]ÊE*3¦Ñc4Ù;GÛ£bÁ4".na/È{ÉõÑw%Ç&³y™&ßL¿Ä…‹¸î{·ôíÅxG»K*;j‡ÇÙ<ÑöûÄÄ+þærfÿXæó¦Žmp9b`h…2,Þô°‡�ܾɷƒ>‹R„=EAò[ ±~¬÷UH[…ímžÕ³bÒ~Èáðnë@[)táÃf„´ÞO†äýZ÷Ð0÷¥NÔ'SÑØÍsh“¾=ç‹È¯þ!Ñæ`»Ù?îS)à”»ÀÖ=µîépî©5O3OÓM+7×=UÍÓLAíà+vM˜Â¡‹©4*‚ž&TqqÚc4#OvK5©Õ¥\¤2«tñ!jzÒßâë춎2ÃœáAÎB¶à·+Ë ý 3rŠ9„(¦“hã]‰"i‚}’RÇ&«Ðã&MQÎôgªn ía„⻡¡>Bñ¥ÕŽÐG¨«8‡>=qek'è1MÐj„P†¯Œãôˆ¥€^ð4!kšòz jù‰6Ï\›“’Ãí£ye+iÂ?J†¿¡ƒ‘ű}’g®©4*‚Êg$!§šé(ÁòdÅꯌçÏF‚íÅø·ØèË‚0‹O¶n—håïd¯{çX´ÉàJÁ ˆh…¦û)Ê;àW£f†Û‡£U¤ižK¢Ê/ˆýS÷ǤïýNoóïw¯~|‚E.^áµd»¼múT›ØÐ,"ühuãRr©® ¢pœáÍÃ’‘|Cn£ÔzÄÿiÄR@˜šÖPb²Œ‘³6¯£NÐ-EÑzQ,õ^k'hKKñ>–Öa^Ó5¡+Á§8Î@?=X“6O ª*hÇ(SPDK´Ú•Â÷sÇÛHLÐ5°]ÊEš“å׊c•‡œQfL£¯´á(Dÿ5zÄ6Ñ?¦úBW‹2SE÷7·¥šíÀnBå5÷gêŠ)4ÓK.”<k2Ãçx…<í#< :=4NÎþ-›á©Ê1µiË•Ñ—æ‰ÊÑÛë·^çy”Û¤-·úËÿ\Äm„¯¶Ã݇ýU‘YÛмê¯2d;\™‚"Z¢K°q¡[Ó©4*ë¸Ó„Ex¨Š›ÓÕ ¦TÑñ܇SŠŒiôðG!®AÍá‚ó�RÊ‘<®f¦¦Z-žŸfÍÓµØG½{`\ã‡zwqgø¢;ý6¹*ªØ‹÷7ŸR·· nNÑK_ýþ„Ê•J›Õº”qR¥ÂÍô<ôa›t*B™Áßa¶ËëY©ÒDr9_µ -÷ä -÷¦U¸Vá¢pèZmî™+Üy¯sÞÃVËûà¦á½ ¬xf÷À?s²ºé?½z{Æ‘³ïé‘4‚Ú½ä½[ÖìRíš·ML“•‚…\¢•Åä.gÂkÈ;bf3¦RÑcƒŸ¿¥ï|B -4‰"³0ÕV¤„VñÎfÏ•“G)Ó¬ª|Ëp?¼£e)gøÄE„G×ö4Ù.À;rÊ•Ò¶}öÇbÿØÜíGyÇ$üŽ¬ÐŒ -2M”vP”Ízï\=4ÓæF~³Ú;OD$ŸÖ"öýN8èuúçög¯cÿíkû{h¿è`1‹Wx/³]^Ó¥…¶pX¤Äs®Þbó‘i:†%#ù†ÐYÙò^ˆSiT<Múf€‡«E(f¼ªý÷äÜp'5/–ÍTÜÜù¡µÉAb²Œ1ªdQªº`G*SPDKüHÚ„]gëÀZÚ&Š¤ ‹ðPªA X‘\¤2c>™ -áz™«I.·ŒÍÓ…>6'·øB»£Îzh3<ÈYÐ ¹+ƒôë¸4 ANñ §5€Åt²�—å&ÍÐÇt3f©ã5¡I“Ý[Ïy”V#„2…•Zç&¬)¥× æ&>¥‡ÛG½{`\z(tÇw†/ºÓo“«"0 ‚=ïuÎÑFeý%,²^KÞeöâýÍgvü3'«›Š™PjFúê÷Ù/w!GξC¤GÒj÷6’÷nY³KµkÞ61Á ¥ž,ä²BöŽ†»œ ¯!ïLPˆ™¨œ¤e«Ñcƒw¥ï|B -4‰"³0œà]Å^ˆw6{®œDx<J™fUå[†ûà3¤¢Âvdáѵƒs(x'CN¹RÚ¶ÏþXì›»ý(ߑšÑÞ'4QN÷õzï\=4ÓæÖ{³Ú;OD$ŸÖ"ö…ÝzAoèd=‹Wxÿ²]^Ó]‰¶pR¤Ás~Þbó‘i:†%#ù†ÐYÙò^|SiT<Mú6€‡«Ef¼ªå÷$Üp'/–ÍTÜÖù¡µÉAb²Œ1ªdQÎѪ`TlýîÔº7¼Úò?_ÑӕűÉàR -km¾‘~‰qÝónéÛ‹ñŽ¶Îå–³y¢í÷'‘äï•~[Y›v8¶©åˆu€ÁÊ´P°KôAÄŒsôQ¬{Ï-b&X•£/Wm -Dîc¥ï|B -4‰"³0Üáv³âÍž+·îG)Ó¬ª|Ëp?¼£q&€ ç‚ÐѵýM¶¨?§K¹ÛnàcMà~”wVÂïÈ*s‡š(§y¸^難fšÁÜÁ´lVû7Ñçh ê û´Å_Ûæá\ˆ¡u—0´3ŽÍåpÉ$=T@‡R1Ggñªâ„JØÛåcó7€ý�;Ý -©lá0ÂÈçĽéaܾɷƒÎI)Âwý Fþb£¼Ào××Tk1Œ™a¡?äS _rÚJqMùð?öË®·i -ÿ€ÿÀ-Wc ¤\u+THCªÄíäÆNcæÄQb·+¿7m‰3üzRcgô®©|$?>ï{ö;¾8ÿ€ÖI£ëÌ8¿¹ñ1¸èp«Ž½°ÃóñHàó°ÁÚÀŽÎÃñMÅR³ØÔ÷ÚÑ×=§…—k?áy|x„Y¶cﵿ˜:_ÊÏO•,Ù(»@D‡b·5+ä -6~˜ÝáÁSnŒ.ËxÉ]îÏnÙŠ5õ0õVÄà|¥©2ØJ¥©.LqâN¸@+aÔÆ£”+î*_îOÀàh‚—ŒÀÂhìIzgþɺ€�d¸Q±rw¸À·M`?jpV"ÖdÓxxEj/3°;?8×{˜iÁ–®m:€îÃ@ÔcîÓ ß(_ÊdY3V&&„\'Æe³dÅ¥`*1KE"kR.áÁÙþr¼…}8Ž›#lµ¤ä…‡„ųË~„=6æc{8'VÄðÝõ #¿x¡UŽøÃù02/®_\i°ÆÉØ”·›×›Í\e¾ß“n÷va|íìÒ½ŽVV¬&Êe†¬"é¯ûÃþz¯ñêÇÇTõŸK]§l"ªœàHLãÈ“ñ“ZxÙÏöx°iu#‹J6|ŒRâ#^g!ʹÂA®B˜ÄqÒ9:#—8Èe�Rs•Lñô5êèNtf5©r0v%¥<Ëtï•ñ«¨àê;áåIBã“P|`Ÿ$46È%/“„”Pßá»z¾`e‚Â=õ?K¨!õõN«wóJç«—lûx:w°wàB1XΦ,{›¼9›ÿ˜}i#*ÖÉׇyšª×x½Òwÿ~ »Pi€*?Yª®¥.©¹Ûµ|B‰vù4GU·b/éÉXRîÅîUE§lÅÉöBð³ôƒ/¹ÔuÊ&¢ÊÉkñ>¡£f¼aFtÓpR^;!“0pfKgJ“ÈJÉöèà%†ƒlpÍo�@¾, endstream endobj 29 0 obj <</Filter[/FlateDecode]/Length 19216>>stream -H‰ÌWyoÜÆýûØ?H(–˜û‚<!¶%xe#EP,(íHbE‘.WŽûéûfÈ=¤$–möA$5Ç›ß=3oþr¹˜'«îÚÍyL¢Ù›7Y瑱ëÏ¢Ð7Ív3ô¾éäãiDuL0(97Ëiàg×oê®=‹¨YLÑYúÙ'Ù}Õ7ݽÛÖCÝÞEíðÅõëÓèäc®ê¡qÕtwÝrsS¯»Í°üø6]þxõþ]ìÖ›Ó(àΫc™™:§*¢òŒqß]µOÕfSÿTqãÛÒnÛ®°\ÚýêE4gÜD‚ÓhN¥Â€ënórT,WTJˉe~ŠŽ5á”IÌ$±– ‚(KT ‰Ö¡Œ– Ì»›í£k‡Ë¾»q›MÖ5]¿9‹²¯U½¯îÐSEwMÓ}‰Ò¦ºy˜Á|rYÖƒ¥«!¢Ü59§l™nëfõaûxí`C*´oæË@ùi.Ðúo߬—çhY¸ÁÛzÇÀ„Çb 1¶J£Œ’”[BZ”P’*5“œ)‰"„VD#¥’ÌD'—ɇ«‹DÓQvéñ×@%·Jqe3ÖSq*¤Òœia-÷-”Ƥal„ØçToÏ%•…Ñ ‘–JÃÑ‚A Ó–inöb1ô®€{\ŒPz$Vc†B¥¤—Â@UPM)§vhÆ §6è8¢ÒäXE4¡’X+™’y*¼0• -.¥P‹spá˜)‰à/¸ŽtÔ‚rÍñe…o±Ä(BÄo±Ôp½!½ÑöXGMS†QˆQ!^0 !´Ô\sC¬aKàSø‚ëH0³áˆyMa6íc:*áåTVh΃%˜Ö„0cÏ´¤æH0Ø•@K¿ #!$£´„ -_ÊÀÅ©2Á;H7ó‚ËçüŽ è3ö`–Q/õ™©”þ$Æ$‰(´p'ú(Ä4ÂóH2Ä8C`K(‰¸ -\š±2¸PR„ ®¸~ÁõL2‚©(qŽrZ(‘Ü ˆF¸c˜D4ÖÂWŸ“_>º»:ÔÏÚýãtÊæ¾[?VýƒOÙh.P7¡ÆîG#ieÈ8íÊ=®TÂP´˜5±D¥¢°ö³¦±(.aÜÆeK”g…$~‘ÒÙkl¬ùaÀTzÅÍ=ÕîËYô¡kÝXÁ’~XŒÅÅ‘ŒÏ±çã¶qý§¶ "õMv,aﻕk¦¦0¿lªP¹èá9¸ªú;7 ^wÍv{ŒÙ€ù®úêúÝT/SXºÅ:í�q—õíòiÜ™–wâ’ãbíÚ«îsPe®tL9Š ꆋHÅu %^!Õ`ÖˆÅÂbgCðPªXäÒ;MFÜ쥦‡ç$JÒ®oá«8ÿõ‹vµœöd·:^_†õýê;ËÁÅo.±…\ô5Lw67Š¨qoyÛ׫ÃÖ¢YdÆGpO<…'…tHXû½-Sd!¡ %ìÕ–Ñp“jì|Í–Ùû£mÄïЊgÝ£Õ?øhÀVˆÆØ·ÿ=˜¾]Vãa}Ù×çœ}=fyÙlÑõ¶ï¶ëóö¶›ŒG¢ÏîçDþ*º¸þ'þÁ™&¹½v®ñg -×F"oèÝÃkѵWõúô›ÌгwÑ؉™áßÝûõÙ¹»Åyâ0ý¼ÝÎ=<v+¤ctñx¿m6®™ÎuèÇ¿Î{ÙTmÕG¡Ý«N‹õ3òäõíÉEPüCü7üüÔˆÃ5ìS?íÔ~¾Ì·u½¾Ð»ºý o›×»ómí6ûU½qµ~…zñà†›û—äcëþ²îqntíê@p;?5«Çx{æ‹ Ø“g¼n˜¬jšú®¯Ö÷õM”öÛÍ}tÕuÍøù§iôm½Ê('D=ƳÏñî÷iÝ·í¨äk«cTßuíaYì ãÜ?ùšû9¿³^ôÓNü¿q埵ɞQ±ªÏÅß³øR!UÞÕ×ß®‹›@õºßüè=çSdsðÞ4ÿ?Ðïÿ°â×Ç뮩7{û…–®¹s½s+d^ê_ÕõMã_!Å7˸÷èmÝ® Åb[ÞÓ‹ -åÃÌf…²í÷°TàÝ^ìIe8Ví‘óù76OÒÓö¨ÿm_jìËgÑɧ¶ÅÊ«ènjŠèéì÷qÊQºšý2ûa–éL2�ÏX�HZEšY@`Sh@¥2@¤<€t–¤Š€<É€40‰T"ÀP€xØ(€|fó€Ìbi̶Öì¡”•³¿AÏfúá~¨ïä8!QSšÂdÝc”Á©×Z¢KëâX.c—9¢ -•«T%ÊΔVRqœ‰,e.3Èl¥Âí•ãKD!r‘B’‚ÊK^ðæ°¸:*.9n¨¬dÌšàÒefLá‚Épu-iNS -Áp¸ÓR’¦Ã%–("‚:þŠKø³§‹ðá !0\*¼Ç§žžþmÂÛÓš^þc|&á`Í,8-ïÝwzÆgrôôïý˜Ù4-²ðwü<PfP‡@!QzH2îÁ&ð=Ä„ÃOMÐ{˜™4vdBºG6!ߣ˜Pî È:St›À÷‚Á?~FâbÅßW„N†�*T ÃSÍTÒâR¨ -Aòd»B—p Er„£DPêbÓšQš™ñZÂAñ+ ™B¨û|‚ÈÎ…-ኈçÈ ‰|ÒÈ,‹K‘o92¯LÉ,¥ÈJŽ•ÈW̵ÈáÙœ#·K8†"ßy6†[˜?2ŒÅó€f$òT#ÙH7Ž”#éHˆg#7 C•ÑôÊ =*‚Ÿe9PdeV"€9Ë9 ‚›T#å&¤âËPžÍrÿ+€² �-Y/‡ð',^èf+,ÔÑ›eÚû—b9‹…aõQMàÓlü1] ZduŠì.Dé›b®•ÐäßÌWËŽí¶üþÃl$›_É =ƒ¬ƒ¬¼0\Ãð"waçÿ‘ª")‰Çc\'l« Í‘F[ìbwÕ”³ÇÊ/‘¯)šÃx'>içöIUÞ\‹K×q¸çÐý4&”’ŒÁ‹NÅÞƒü¬¯bž•å{¼¯Û”±LRF¥É \‚Ó³.aœ„@av£ãPÔâ½ (JZ’Óe¶)Çàpçé"É`Ÿ"îÌeWJû§uºùÍÃ¥Îo“}+ù=¸83 -8Äo~ç(ÖŸ0)—\´ ‰çPm™’›&\™gF€eŽ¨ -VfˆÉÕÚ@nÒÀo?Ë6ßt8‡ÐïfÿŽ'Ã=¿kuP.ü„Îhƒ+“W wA!Â܇:®úašýÇ#>oø¸Gtïìšïþ-GÕwfPm!–â@=§ùIèÂ1d&qtè™>8›ƒæÞ"ÊQwY[у~VMùâûPÐÝÙ{þá`fÖýÒ•]þZÅh?”ŒvÐŒ®Pˆ—„ÑÏópž¤†,ñ“ÌãÂ<`…ñ¬_ÁtÜWŒN;(®üãÜ7+¸ºÛ³[#uöÄ1`°^jjkJéF•·ÐMËã´£H&{‰; Œ‡~Z¥a…à<ôà)‰ÌB¹JåE‚²êd†F‰ÎáJ¥…Š9ئ»+mÁ"“ þpêBÔ£'Û4äÑNE@A=³#°' <b›$©‚„·N#¥¶Kƒoê‹‹ôD $!·(áH1INp.Nuð]*:…H õÆ@\VÑ"$9&ËIQŸT ð»\ IFøÁ$ S>‚È¥zü¬ß@ãÓ-ص¾ÇKCRÙÉ~îD \ w-*«¾–´¹Ai#²V:Ú‹gëE•,§ª®ðœbÂâcÏã€rÚàÉ -Rœ… ²É#»ŸT;ÄØ -¥U ¹ò3aÚ™m‚f3—Žª†1È*Úf7hÀj«5Œ²„V>po°HMr|D2k§üÝÚ-ÛÌ4Ñ´‰•¤ð&Ò¸¥ÆBš7'ûvˆ{«,X×çåãN1mkËbV£hç‘i‘2(47 -yQG´15ï$Y¢ÈR]I²Àçe9=Ò‚”°"¦ML ²€‚Ïìø¾S‰ß”vÃY ÷µäÈ8ÕWµn/½~êbÿøl¼/˜—ÛþUż™ÿ_zá½™/ßò›½P9•¡‘©ybì0‡à„À[#?›+zbäå ƒšñÄ:`°xnç sœc;=Ý�? ˆ¦ -Ó~ÌÒ€< <°X Sÿ�Û€— h›rŠÚÌþÈåÏ~ɦ3©‡²—fuUvWTKõZ”\Íû©ÖÏfÀ‚â‚:È67ET8<ÅƓ奓)âW°lTc˶å'ÔÛYž1ËrC™^6ƒ¢¼+üdŠÇæÅžÇV‰>¡Œ³¥3HŽÆçÖ•¾mB©?¥pXËÐúúA@W`fk§"à·t…OmÜÐcÀN$›z +%Ú‹-»;…õDÞ‹A[`ŽÏí}\ëÁwÆ_äNy+O;#ſʺίΥé¢J§Årå½ç¸æzS×FG-÷êéª{Bš‹úþ†¯9( -Ð <dB„`˜% -r²JV—bÃôŒ(›ˆ&³`Þ7 –ˆ2& M’7,X${v|ë èÐǨ’&tµf•y1htfðÀ÷X ®€V8AU%©²éÜ0»¾ÕŠ¡ñ2‰‘‹Ø¸7‚ƒ¦pnÌ[Ä92î×¼x65†qkÎF¨ *Í¢(dÄ ½q‡¼©”™E–"¢l•"¢G¥Æ$RdñamL8ÅoD€©¥¾´¤3á5×^Yž”áÜr»)«Ìi¤yû©õ^⬠«Íílû†h+*ìêãë%â(ãq_Éõ2Š!÷jRýþÄ´î˜ÞE:hÆ´GL¿/MÌæl/X‡âEþÞå»^ÉtVK) ÊÇô‚¹Ÿ^ãvñC€ìµõÕ̤…Çš®«º®k¦1+•¥-ï{3±{]æzá— /¾ÿ*¶×Ü}ezÁhOË‹±Q³½>Ùõ¤á¨äúûïwõ§¶v¬Ì!“N•’'bkiËð± -ë|]?[¬¾…«o«\d~T¾Þ�ðgpÈY)õ‘:¼åf'L¥R·¯ó€NA"ƒ£z¯Ê¼—Uq²A§Ë!Ó²‹9«¬Ë"ûRÄ°$37F™™ v:PµÎï/Øh–ÍGŒ."5^[yöʯ_Âüë�âÞtûÚØ· -'xüšß&ûVò{pqæ]ÿ0_}ó…»ÖŸŒ}§zƱ» c¥7ûŽÅ5y|rt [À…2Û2§èÝV®XÇöæ-³™÷dxÐœ=œS‰Îe¾Æây›rDL~~ãP[ÒÌ€Þc )ûw.Ù+ð?XXu¦‚ÇxΡaç)r<˜>ÒÛº yœ&Æ„wˆ× ÞÍ9Ƹªó˘œå»ó3�=u.ŸÂ)N¶d‹úï“«ÍîôL‰ú#E¥y²¨Ìˆ›J±‘sŽÇ‹w8™æP”:3ç0³$omª ‰*ƒ•g¦˜ÌI¡Å~O½Üsdï úc„ƒ™YwóÕò÷é›ãó§¿ýøí§¾ûüïzaýîû>÷KyûÓ??þö_ß}zû¾]zsñÏæëx|[?¡ üµ:P§ËŠšÌM¿C#YçÐ":{SV?ªBö–±]ÈÒ¯PÆ.¦*Ù¦c©d»ŽíJ¶öøªd¡e%eo1[ål´´FŠ¶jÚªj«®Ê¶jÛÚìwYÕSí€-¿"´ÖÏæÏöŸ -Ä"@ °IaÐœRVõÕKé*jƒYú n2cI¾*-µŸ’a•lØ$vɇŠÚ*mƒûþ #ç7 vÉ{s˜m÷Ê^¸:d•^iØ“/þ¥z[iÇôº¯:$pj?AÂBkpóÚ=Ú2ƈ+“ÔLºŽùR5åR6kÓ6<ÞêfmÊøè:ÇT©¹~{Ií ÙÚߨ_tŒÂÔPyÀ_Hªá¡M3•†Êßå:_^°~�z×ÍÔ?OŒ¹rÚ+š1hªÆ·¬…&†kþâ‹Âi5ú‘r§&¶(µ=Áwš³þ×Ï`kò×ëRýUÚ¿ï[ëÙúåßæzQ¿´^¿—VV–aÐÝwõs]1׌7=¯Ž×‰¾Ôž¯+5Âò -äÊRמrIÕùúèÁ?{œ·q…S,pŒ 5c‚ƒìúÒJYîUQÉÉ,!YE$¤Û¹°NxÔ}ã¶Âµ¸×Œš1ÃËNp´âZ°RÎÞ…ÛÖÕ@…C¾ËVcX¡Ì!`%» ÙÙÄj3‹ëÝ2±®BõÓ6zCç(ïH÷xÈU!Ž£@'I/™k‰ƒt¢«¤¯Œò–¡®eMd>ÌÀ!T«¦/ËkƒBÉ¥áÞÒóMtÀyVÂ\ÍÑvÇQZÖ.§ŠÜÕì1È rسÈ<2“Ê¥Q:³jõ¬¤2Q©ýØ<tëp›‡ò4¦¹Öînÿàåtm£‰pˆ{#)±Š‹¨Q*=Œ’Ä’¹1…\©B/>®ÁV\츀 ëvá¹-”ä ¶gÖ4âÎUÍVÏXÍZEmi( ¹!5tω¬š+µ±%¸Â_p ¶ã¸Æ?îmï0Çvá1GàEGy ?þC}Ùì8ŽAø êú2€}iÔ±|ã¯á³áÓÌ`±‡ÃÚïGFV‘%µºGXê)Š"+3#¾"_aZ]ï"Ü…nÓÞØG±ßŒý>ÌýæªÍˆm_3²¢eTà†'>Øé] ¢Ê Ý\¡jUš`¯tE|ÝCh✔§ õ+ôhaaoXÖ¢,ºå¡`Z&4VPMRe3ªpe…îË"v,ìÀbOk6耂Ž¨¸–TïÊöA=¡¤½<šMš.± »²²Kœ¸á‰±,X<YTYí`ILb³[Y¾dYy8ñ2' -ÑúÁ¢‘\{±íÒèvºEb“où„k¢p;oWü,ªøŽp1}‘n…oðmgÛƒlëȶT¢5DZ‘gåÙF²à-ÛVÉUYu†„,¨Ï¨ ð+¹ž˜k¬¿A²åñ-¥=Pî³MçˆîñK#Å{‚\Oz”¿+Õno¯ã›ipI´”iC³£æyÜõ}Ðñ¸¾ë}nøv#¯ê»}8²žGÖ7÷¢Gú(ýâ™L;tA -Þ7`àºP£ha=±ª²¶3VyÂ|±î«ï%Ю™Y‘Ÿ™šŒäI -=’i‘XL9ò,Ù®È{a DTƒG]XÔÈÎj‘º©¬¡ŒrÂtŠòr@G)7)<)ÁŠbDYV¨Ô*ª–õ+•¼q}399¥6Á[€¼ØÞ#ÙÞ1X^ fB!™FV$H"DÄIv"É[ qDøº³IÄ4QQQ�QøPð t4ÚPÎP¾P¦‚1IFóÔ2¥¹Òli¾4cš3ÍóÖ2§¹Óìiþ&Ãj5H$×↖Ç|ð.¸ŽÍ!áIæŽ n¸`€‚.h0�@³þnù—ÉŸFÞ2™Îl†6í8Íé šŠšÈar—3ÁLñh(tNù†:«<Õå=²ÁšUø’èf.ÖÞ>ñu2�Õ/Â×{‘o0"ŸW C˜ŽÌ KM]M6)CYo%dT(g©Ø@“Z.4¹‰K K!‹"•¿.“,ÀA׳\LYVYÞD÷K\tY|IC¥NLÍL7œ™0y!yšA$SeynòµAÑËhZš šX\xEE:—- éÚ_æ[µ515±³ØŒ¬šÀ¤KIrõÕÁÄ¿2šcBÎ(Œ•…ÛKl+Ñ´ -Mk¦ijZ†žåsÐÛ77„gÀ`md¤6øæs¶íγR½ÅœóÆÑeÅñÄO¼°‹ä™õy3ŸwÁóîçÓ¦fØ+Ðâ#N|y3à�±â¤·{ÝŠÞŒÞNi¦Î>ãàº6ÙšÙœ§îeœlžzûš2z;´·8š³£3òX -÷ò€J…‡a»`åx»¼€¥£H~n4–•æ²03•31[b4™¹‹´1Ï›u?[o§ûl”—…4sœèDâE™xéHâIžOeéL)w£?Z]hÞî„ØšÔõªüÔýi~mzµvýŽžœ6Ó=ùÒ³ŸŒ}ÑpW~ á^p'ýÓ|úùã“–ûš\€Ñ¢iÖO/ö‰÷¹ø”±vÅV±!O6¢«pš¯I.ùš¼K¸a_b²U¾†çAùÚ4Mù“¯M×^tnj¿Ÿì‹¯¯(¼tÞåŸz\…êb©ÖšQ}.É¥§’mÍßz%ÅÔáä~|˜xvü}q$L8ïº-ÉÃï—œú¸W\ïâ+z¥\kñçߊ®ZÊ¡N§Òµ è‚Jwø¾OüÉ%tF±Ù“s@zÞáS7áîS–Dú«u’5Eüˆ}õýysE¾5žÊÝm¡$†Õù¿º-¬ðÓüôóþõóßÿøåóo_¾þG,_~ýík?ô·—¿üëë×_~ÿòùå×vèÅå¿š‡G‘Îð²|F“Ó©ù—Ùªš©®4®ËF[ 4±”Âç ƒj)2è‰KÃɮбFŠ5§¸6¾mÝtpKmh›!`k×<ÄM†5Õæ>ªÕ<Gµ™,$—â¹BD÷z@RÅ@<i%Al…S*amŸš–À\˜$I¡Pàp!{l@ŽƒöæH—v ¾"ô)*<JÒ'§Ê¶ ¼îB²Ê'¡ÜШW¬I8¸0¦ÆÈŠ•kÝ:+Z£–º7÷ÛýZÄé!wÒþ> Q‡À“›;0c{o·ã„×fعeÙ#¼æýÞDìˆüQ˜oŸò¿ÅyÁ£À™DÌÁnR¥ñ,Ã*YE^2ä±á¥åw!U°d�7gÒ$éæh@E…¬¼4ªŒ -å"d\W®!Ž¡b°Š˜S"¡pXUXÑ3»`NS†(DGm¢u…Ž6ý!ÌD‰†*‘¨§›…Ó´žN6ªžÓMâl“‡Ùfn£ÞJåØæÃÈ0HôUBÕéAž:7)œhj›eæ¥o£÷^çÕE\Ž±±En‘ÚØ[NÙ™ñé±ô0ü·ÝÅñ66û0ü}˜a'<é£0|ù™0Ïö|üçMw7Wê87=ãú�··îÐÿ}€³mšsã;ªF^ã w}~½‹ò27_ -íôÈ¿º½wüïÚ™nø‘prA{~l9pÚáÿãÎåˆÅc¹>ŸžÓªxµî²gÎavÕŒ¥í¯çþÒÖnå:^Çævtéç˜á´™èUÂÖõYOÉr^êŠõúÔœ_®ò·'÷?|Y†~åíéãÑÏ=¸`_÷ã©Ÿ3OßדñC^-nÑäÇqlÇrÔ£ÀÚÃá�eL¥‚ýØÐm r…_MÐ…9vÐû „:Ã6 -%€gírÀ8Ôd`Y æah€¸Á·fø_Fø¢G! È ®6ÃE'pw‚³b~©v:`¹íw†É˜r2ðç�—vâØ@Ò ÎµÀUáÃðógOpø�§v›ÀëF·[࿸:° dÙ0°`À2>XÂÌNožX0\Ì0x¡\¬‘“l1a<xPˆñ‹„E2³Àøjà°´m ËŒ±¥Æ‰Q3‰¡[`x†kAu=Yt7Ì»v;_ΘϨgLC”!ð̆¤¥‘î">ˆÇ›¿ÂŒ;÷TØ÷¼ÿÑ£øöP`ž›žò‚ôñû?,¦¯uŸÁ·ùlòM^1M&µßìÙæmžÁdiœ›a§W4zFÑ´º’m^Ñì™ø€Ã½ÙW´»4{ÚÝõ†7gÇOÚó쟱éµ}oü±õµù7Ãîû¿+@Ó�GTN…@¥@Ä É¹Q„¤ý|ê‚*ƒS4Ô¡+ÄÖ1¼É„ÂP+T-ê ]5ºrôHgÜngËšAV®pÂ>ŠS|Î0ÃÎþd|ÈñæYàïÃ0Ïö|üì-¾£É×cF›OhôŒ¢ŽHg»hø -¿ é+Ú¾°ñ#RæwV—ößèóE`2ЂFJ´ü�=p¥Ð„}•pÅX8S&b€Î–‘*áŽZѽ@¬ƒäBÝå@·s¶•&MÄ…H_óħ„MU]‘ßã×g٪ЈÔYÒE¦ì$JO¤üò††ct”=Zì-ðÌFþ@§4–3æã6Q†È7‘LMCÄ»oÂ?w…wªý8 ¬ßs¾Ý¿O˜agûa¾Ïe~ð¢Åã˧Ÿ—?@ìŽÑþdì+*Ì–ä‹·SðSx±¯S´®dkʪGlÄç ¾¬¬±ÿe¾lv$·‘ ü|‡º`_$EŠ¤á‹¨ÃgcO{ЃÁÜÛïŒ$)©¦m‹¼ -H¥f«JRF2ó#Æ\À2‡b]™1âÑÓJpønH6Ê÷âu 燗ïÍùí‹]yˆ_̇ÿìCÔߓÈ›!ö§ºö«^RÒ¯ÚÛu—a\ Òù°ü?îo¯?ýöéõëç·?t ~þòõýðøî_ooŸ~ýüúøÒ†.oÞ}¸GxÔWXö£±²9Àl�5ÌFAeª¨²»³Î–©bvÓ}AY\Ýæo½óžÌ$Ž”„úVýbPx7¿‰|žÌÀ#Y”ÂÚzë~/àÁ²EàE"zΊ2.̲àŒ<‚'è‚ÏLʬiIi%7 ?BS`*ß$œÈ\²ÁPLÊ´Ô}ih0àµ]¸-YH(ÙÑ.Â@r7Ò[ê[¦´â.†µŸx(bß"0ŠQ¶Mî]ù«LžžÅþjÏÍY?vO÷&T¤‹²§ÛžxórÛ«¡Õ‹E“ľJkå^yÜ% ƒût„°Î;Ù<wÏ•£F ÙÅ~ÌQ¾fiÇ‚<Z˜Mr\¥ÙJ¯ÆŸ;?°ƒÛ=ßSnˆ£ç§Czù–„²…¶Œ ;·<3˜jäÐÂ,g½Ãiþ.ãïåIõ‘1Œ~\u÷ÊqWé[¸¾|l®©sÝ¿î¢:9wG O‡æf©íŸ6gþ¯ÿµŒŽÜÐÃ.j~CzVÚ¿ÏKõ¯ú÷çfüPªã|iee¹ÝtmWõ¿9b.?s¿è:zõ©vý¹¢Oø ¡À+{%×úìúçôzåW¡×j`½*¿Þéumôz²k$»Nßpë*ÐjH¬e«òªÒ*YµqêɨäÓ¦Š¥H‘ÐF9tðgÇΛ0O¨<ùñäÄ€ã®ÔÅ7˵‰2õÜÒEóU&Ç»Žã\eˆ[ê—8¶£3íLçÄ;uOüƒƒô°»(>Š“ôÒÐÎÌZ=ÓT±5ÐÚn®“B(w”ï¶EʪVs]ÀðñQ÷ÍÆžÒŒcñâ™L¦$ÂÞ–2š’µ-j–¶@ 3$µŽfŠ®st3µõN_ó0TÌ"ͤ.<²ÑåÐÐu[.*OÊïˆmÏÔt×镺ÕS×TýÙ–¦¾êëÔ47ÁU3¬ Í`•rM¶k÷ßÏmë2û:t‰Ñ¾•‹®«ŒtÑ|Ê´:ž4=É#w•i'ö=mÇßj–y Wâö˜m3'dÁ”ÈÀ o|p¦;Ìú 5@ªÁŒÊ ³¹ ^TäªL‚½¨+Ò×= -MX¢AåI˜úõ¨2±7„õ@Q–ºåQÁj™ÐXB6I–-È•º×Iì˜Ø“=®³ÁH˜¿%Ù»rú Ÿ0dzyL6™t‘“0qVÎÒŠ7¼1‚àIP%Ú“ bL¤ƒ‰î¦/YVö€K¢õS�‹ríɶµÑí*tcÁ·ù„k€· ´¢Þ®¸-²ø‰pgnbÅ+(óË`ÛƒlëȶT¢5DZ)ÏʳdÁ[¶¬’«²ê‚RQ ¼£‚è„»xé5âo`¶¼¾eiŸXîgšÎ½Ç×FŠÏ¹z”ãÊj··ã9¾™—DKYm(bvÔã®ÿ�z׳>Ï O7òªží—‘uŒ¬ß<‹Žô7PúÅ;™6tB -Î00n¨Ñ´ODUb» Êëƒqˆ¾'P»v8³ÂŸNe2Ã<±+P°Ý±ÊÙ೸]à{bdƒG^XäÈÎl‘¼)Ì¡éX)f™n’x’‚Ɉ´4ÌPÉUd-óW2¹q}gròD–¶BØoòB`xd{G3^],L„D2 ÌÉL AK$Ù‰$ßÉG„¯;‹DLÅ……BG£ ååe -!±ˆ&õ©9¥^©[ê—:¦ž©kô9§Þ©{ê_6´PMTa$cqãƒú>ü)¸ŽC¢'™'6¸qÁ -N 8a aÀ�Zëï-ÿlò£‘7'ãpsj«§žÐTÔ„·†æÖa0-¾6vNù†<‚¼“vÙДG£–¦- \ÚyàØì¥ó'îI¹ÀàP4ˆ:H° p߈ü}î¹™¿»àídš•7Ö›+Å,†£È¢S„ù+5X6Él5Q²â`ôœ[fàôì,ìš#,ÓHˆàWkðÒŽî¶Ï@×Ä=ñQü_ÅaqZß%¸KbLl¨ºKÊDÃJl÷=3×d—Ì«cßØxußÇùÑwƒÁƒ»üÁ²´B»±’{—IÚžô!”Ê$=Ù¢$M(N22×ZZ°Å—d‹Rá´ïDMzn︽Û&¶ÚÒZíÞÚ¬´X)%^0É.óg3ÒcG‡õœÛ‘ó\ªCf“ímvS$•"Ár!6°ÙʦÍv1œŸ2åQu4÷Í yj -žUv¶¼ ªWÍWãˆIcP=%¡œG(WóÀ/ÊPé¹`o¡g�•_”YÆ 1BY”KH$¦LÙñ(""¸!ȼ· -j«±a†z!‡’ “]R©1Cñ¦ù¦tS¾©\´¥«^´Þ´]t§ès±@È0§-îºù‹¦›ÂEñ¢Yeø‘TŒ‡-[ÿÁU»Ó°’&f& HÚ&°'8 ×A»i€ ˆ °0ó3QA`aæŒDbÁáà"d#>@B�"tr%î,·”ïqæy¾²%T\¯l -.Î×LÄPÈÌ�h²†gô,cp‰àl·þŸZïŸn}k=¿´~M#²ÿ†ÉÞ¥2C_þ‡TfÊFeg‹ü·±•£<öù1M/nŒâ¢_̇}QýÝØ—è&°jëfóùa_q~N>Îx dFì4g‹R•q™/Q~ò%zŸB´E¾†Í!Ù˜³ÇÛÊ×òùWp.·ûGû˜âK‰q<ä?ùŒAq! —"±vQ~9§Ù–ÅÉý!‹… –±NÇO™÷·×ÛÛ€‘)ãºó©02_nŸæØÀ½àWÜ#ÇøìÏPüó¢A‘F?-é™ò$t¨å1Ú„Ï”FX/Ðö°ÈÙÉ-ç€'‹ø‘)çÉÎòXź‚Âœ -@’ßq>†Ë Œ”»÷ÇBF\¢óõXˆàøÃòsü¸¿½þôۧׯŸßþÐúùË×·>ôÃ㻽½}úõóëãKz¸ò½yw”µ¾bŠcÉX‡Ö‹¸*¸o\Õ¨ŽËÙMÅšÖÝ“üøTMMá¦x“ØhÚ*knJ7åvTé¶\T[Å®§ïpm¬s§žø¤ô¤K×7ü¨7ÝzúS¿7ëy(õ ™vR/Ú@£²+“v9¶±‰ûD¸êJÄ,Õb¤*ûsQKÕÑÕÊXÓjg›x{Ko÷¶žíkYÁ€‰mÍI[3$Jék™°9£«y¢…m=Mºªô³Ø–¦‚ÚÈ -q¢516°5,†‘Ø»<ûÖ†žUØû¥Yi¯ßØßû9Ú8–k+vFQñ1ƒ Ú7|šâ$=ÞJÖdwÑæÒÑ´mCm‰›ÚêT˜š+£‘—¹©osSl"�Ï'ö~ßbÅx‰Œ’<`g�U+U©¥©4TÈo"2èFDãŠ!!&:…Ö]ö[ÕãIû“¶S†ëM÷mùóU²#ÉmD¿€ÿPžKƒûâ[.LÃgÃ'3tðdÿ?ü"‚d2«ªÛV· v²º*»*ÉŒå-—(—˜ð§gSµ7qŠ0…ŸÂMa§˜GF+D~v®ÔšjOr’ôhàäQÅ2 D`ÃCA½£šmÁGଆ4J•=IFKÎ"’*”p¿²,üøÛ²/u9°#Ãuxˆ€Lxþ².Š¶!¡u=P ‹é û^r¼ŽweWK¶B×íB=¢53v± Û¾ïu?ªV„U÷H¿<³¥„Èä“2"õÇrI´ñüIð$~fà -gb9Á+š(,½`>ý¤ÿÐEY_D¹#¨ý¢5pŒ`l‹Aˆ€ºB˜ tŸÎJÇp³‚ñ´ø@åyÞµ´—$¢ï"&>qRÖ<S¸ŠÝ¹®�‰&ÑéYPÒ~ÛÑw+ú¯ É:’ƒ³äl·ÝJÇŠþÍè䈎öèlàO×]1R"DsiÌ.&fÇäl BLSf£&›a#ËæyîèÕ)Bǯv¼Jñuðv‡¼²Ë;CØqkÑ”C—Ë Ìþ·°-”HGœúÆ«;ù#á.ÑÓ)¥†à¸W_ùP“H›c5¶·C½ñÏõ=¡î>2#Q/Xî„ÊäAØï Å—ƒ¿ ØEµ¨S•Z É‘seðÜ;ºóÀXnÓ¡X‰fÞ�fÕ@W¤?bô<«ô.ÔÇÂ¥ÈàÉЈjÒP!¤C€«¢EV†nŸ˜LCS%§õÚäpjw·1Qã½$Ö+ä´‚£ƒä”‹‚t9,æ†OÏ})µ&nb‰ÄŽcå`©‘C!"P8|QÜÐDlÔ"¢$B߶êHbÓûŠEaìÊ%®²÷^#eOcH^u¾EØK¼ë¸“ï¢è3ðKX<q@.6ÖÉ)$\ä ?Pƒz „¨Uª b+ªw`׆ëê|P\îĥϬ86î‰ê”†«Š^ #£‹‚Vôq10u®g AaúoWhʆ<P À7‹ÁÈJò£°ª$…IzójåÔ)¢TD°VQ,VD°œ&®[´É˜ Of|×Ås©‹ËÊ—¸?:ôo…z¸4�uú´5õz`V”þâî†Í#L}!±aºiÊÖ#½Kè Dˆ¬ê©P…¨µKo˜ªÐ34(†Æ¶Þ‘î¡&¡^à -s!¤—¨›¸Ÿ„WG8ÐYš»Ë(Á‚ÑøMïÓ!>@ZExGXRä´¸qµ¼LÇpÁÛ¢;ß"ŒèÎæ<òˆ¢ÿ-S¬—ئØï¢Þ‡¶ì³q»óv¨ËGûñPw •¸+ -wuCå&° :"—½è¨Ä†+빞‰«¸´ÚD*WJ*ä¸RƒÜR½é ÒÍNà‘O££.NGßÁDˆ °4´ ÓSEC ëc/Ï(”TvCËpD»¢ÅAAº]…UÍ,Iˆ÷ë~°{ÄÞR§ºè3ÛÏv(¶Ysì—¸7¼•eêCÀ¢µPçÛ‡0ï u÷‘:©Ç§jÑNažéÅÍXÕ*ñm±·<D:š ãñHO#> ÆB•Ã“ðo†{+ÿùmSý äx¥.¡þ×/¾ó†è$OõW’Þ¿mûVYý(X²Ih€c°ÃÔUCh:0”w!vàq.<À\ŒªåY¤©£ÑªÜ÷Dš‘îõ{ôø•þÆé]à×Ägn,Ä\#…µwbííYw¯YuïÌ̤¸ém^<Y¥ÐaauŸXß{€®am_Y×ËS¥a"]óˆº9Â动Üì\8Óø¥_‚‡&67gK ñ¦oú%š\ ×æø…K|-è’5fÕ´¸Åµ—$ï|ûÇä {HÔdãÍâšq·xúf´¦Eÿ¦~øñ]týž²èˆáƒè@ÒèG š: ÅAlg‡+Ú–pWc)^¾¯+«yºÒ× ¾hZ)LŸ±¬n°´u/X ÓÆ3Þ8)ã¾ðÍêý.:Üɺ�Õc4´ø›ìCÆFðÍ,¸T àʹgî46žK`”`ÊÀçmXwõÃò×ðcýþõ/¿þôõ—oßÿ-Öo?ÿò½_úóíOÿþý§~ûzû¹]º¹ðE=½ŠÛÛúc”°Œ¦ý%lp !ütÍkÃyòC¨$襀²[((=`€@ ÀþŽ("ÔØþpOÃL¡—÷qï>ÎÕ¡þ¦˜$îe -K‚_ž…– òÒq™…”aÍX#eÖC+žÊÆœø|†}#Ì5®@¨¡JŽÖbÐ<Mß‹EöÑg¤A Š€+m[\SJFýª5}ö‡˜ -Íç¥Y}xŠYúòÓFšâ‹N.ž3óµ+!×-Ò‡9âww€²Úg‹ÑjÈÁŽÅ&íOñÒ˜UÙlÉð›‰r(¸s�3TœÒò‰›ø˜øgXâ¿ÜÌ%t˜&7"tOAY¡r*=¯º™`À– Ïc3ÕèncuÖÛ�ŠòCL¯v³» -c¢uOÀ…Ø(+Èq¤AAÂíH¹Ø=<·{jò{äö®~o¯7¬ÞiôÒ0zbóÄä±…Ë»G"Ã+gTߤV?Ó)»8O’«~®zQp1+Î}œ…�>œÐÀ1ör:N±ã$÷3cùTlM>7ÎþjvT€N©U‚NÇõ SªBu \™„ÚP}H¬ŠÊt}vçÄùüm¾å!Œ×Ðr&!*“â·”œÄm”82¿‹MR—ö÷LÚ‰[ÛûuþâK¥],íÓ2ýðüïÚ~¼ñ«Ü²¿.í5+Z§éåã8ê±¼ézÈ ŽØHÍYÕ£Öº× Žv´Í5AÖˆ{W-R¯÷’ß7ˆÿe/{VðŽÀ£Í-üÞŽÂ/lð ÜCÞÒ·�™ï ÷õz€TvË -’) ›Ò {`°ßC“vpÓ -Ž*à*QÝ¢¹»âîz[ÔvdÇëØÕ’lNW¶œÀ*EVQ”žž^žer,L™©å2!o;ysF('’Ê‹d&+$GÒC ’Q’$M”(I%‹ÒÅ C¤–3Êšä2‡Ü)$Ò' ¤J)’HJ¥$ÓÁ;Y¤T’Ji•ÄRj%¹H¯¢÷g—§ï,l-=’‘Ò²Ò3#Ù‰-Cœ%ʼnêZȶ˜5î«Õ~ì-‰k‹Eª*[)Ê+GjÉ•-|K´„ma$éýá-vÑ7 Ã1øæTίýŸù8dÒ�à†%ö'ÉÁiV3ifva�àøš-A¼ÕÅZ ˜yÏÒÏòùɈñ±ôÕÌ}Ò>ÆÃæ)›ÿÎÄD"G£G.ÞÏ<¼&¶pœ˜Ø3¯˜˜ýÄAûŽë}Í¥‘ØI[´ºPŸxÓ.ˆ‹T#£NCcC3Ût®qÚô•û)ì*§0liH¾èª&Že~í[ý¾¿Šî{R¯¡û‰¨çj¯¯÷£Üªú²Xõ²î#~o¿;‚Ç‚Û‚Ÿ»è^r:ÐÌŽmý~¨a]Á<f¨;h·@¾®3E\4mŽ®Àv:5A%GÚô ó<Åš„wž}…µ¯ÀƧíàc¸aŸâ†ý‚½ù¶Í”ØNÌ<· K`èˆß&}ù2“mà æ ßKávH¯=_²cˆ¾ˆÉüé�p¶/ÁSv·B˜§eOä°¯ËNh’᪋;RÓÒé?Ì—ÉŽäÈD¿ þ¡.H—B¬d„0.IAgA'tc0õAÒÿCfæÁ-;»[Ð衃™Ì¨,2ÒÍ—çxìÔfý9†«<åò,ƒÑÜôj“UwR'üÃ_ªƒ±û1¼¸Šî¼|º:}õäÐÕï÷Ìptå+~[]Ç7š`·ŠQã‹…< Ú|òÌva¹vÔŸÒëOêõç^ñ®È^ìànÅo¾Ô!U¡/„Êo;¾qC=³ÓP;l:l>l9lívô”9½…Ãâa -x=³Ï›×i³}uÞ´ió:kbЄlò^€øEÀï£nèlb'ˆ^ ~OÃù®¿÷}öÝk×]ûȦûÜǦ{á�g( àN¤õVáßAK9zdS*H]2:r ™Rúµ.§ÖÂX¼Gƒ-Ïá™â4a¥µP¥’÷Qñô{¶b%^«ª¿ÔÌVßñ{‡³rÿ®v¥næÑ(€›€øÜóÿòpÙRŽRñÞO‡‹«ºM² … -f”(ðg<Õ6¬Oÿ¬Àâ;~Hº¸éw´©î¥@„è°(²ü¿\SŠzlñ…ÂDn@£‚6êŸï ´gvÿò:ö8^Ýòwa~ˆ QèGh’xaĈ1Œ%—RÉKÚ'2…ÐF&Ê\£UƒNº ,¼“?…Á^^rÙ÷zþoâžò -{ -§¥üÕiifíTÝ´šù4-Õ2ÕÚ«RN½RªNFÕÉb5RsÓ„ÉI”’60î¤J™GÉpJF•Ï-£·ç9/$¬üp.nÈ Ë…ÇPÐ*J-¨øe*�…²ÅÈÝ›…Ç,õÎÃÞÃî3:è0©±± ± =ÈûhElFlGÑøM‰m‰iPs²£ÊšlrèV@Œ¶ÈVÙ£ÛFC3/-^ÍÕôlÏÄO±ãÓuÜ'ÀñvŽzx»³“ÔS—cœõúØè>* ÐFBPC=‡Ù}¤ÍN±Âh)ðâþZéÑÞsíµ!Ž&E_¼3®øÎn¼ [W~8¶fØà ‘ÄkÔ{@xÅ„<²®Â1ËJ7‹^AT×û:W›Åït|žžl~aÍÙÛÕîZï;ŸÐkä»j©ó´é·«hJ»¢Ncr“”¯MÒîŸ2WýmÿJî6ÉðnâÏÇ’]µþçó«öiþöµ;n´/ÍÇõÔËÊt{èÒ?ßÚ?kÅ]nsÿÒuõ¾NÛSíz»f;lÏÆñÇøÿÑÙêÜ?tîû7î?©?=À…dþ+ð»ñ‹ù׈˜fbm ëuá1/ÓÒ€,jÆ° †-yI æ‚ç_g|mžÝ<a.²ÉÈf#›Žl>² ‰3ž‹9É&%›•8-q^¦ÂºŠ©‰sSt4<mš°Ý†Íð¤8•r.VâÀÕ«8Xe W©ç sYŽ¬›Ã¬µÙx0§é—ÔÍ´•ÚºÇx±ájÀ³mÛgµ‡ÔÚgµIš™jÔmè3›©5˜øcv{h¢Y¤¤´t’³ªVõævq!Ÿ¨yh•ÌË1ÛQë&½©øèVõ”.|–ø”?* -ƒYv¯¥‡Ä¬°˜ÍÂÃ)BFEÉÐ#…±b–d{ñ ݼ™¢È"i7lÙñe^»ÓÅÚ“Õ¦¶çæñn§VÛ12®Ý–nûÞ¦n[í6vºAUwH›»ÀfçܹO¢~·sd½Œ±û`»ºË´{ñâb·v±z±ñbÃi®GÐiùÉÒ“ÅÏ,\ÍõÿÊÖí›öx6÷¼ úüú#Ù##Û%dCÊΈÀ¿xS¦d}B `5P˜Í õbF¬2 mC]a_(4y*•gDê7Ô£Y½ÂŠ2ëVD˨e¤±ÑÄ(›…‹"ô1oâ ÀN -ö²0"#îÅè]”>ˆ'¤Ó+"Ù˜tEI8*+›²tÆWüb¸Î£Séíä …)Rp”ºMá+–å¹á‹ Ç‹hcÊ`Ñ,®=Ùvît»n!ìvðmß‚pðvDQˆ‰·‹(~"Ü„;ªâ5”ùé`ÛMlĶJI´NHËòl<ÛI¼å;Á¹«N(!3 -Ô†ßh šð”«´†ÿÄæÏ÷*íIå~0 Ù9bïñs'Åg‚\zäë¢j÷è¯çúê:\ --9mbî¨y¬‡ý³èuÝ®ö<wº\Å«võ¸¬,ÇÊòÙ^leÿF¿øM®/‚ëò[âÄЂ?áUúv‚—+挅˜0ÒQ Ô®”Y Ï¥* %ŒÓCXL9+t¦Ú ºŠŒhˆˆy(Z7M14 œ2+"ļÂÇlF„¥S„2VµŠ_Fò,Ä%úâä$–ö$l7¼ Ø ïYl$Ük£Á¤@E¦Y‘! $Y@B$ñB’‡äs ¹âùzg‘ˆë bbb�bðaà!èè´aœa|aLA‚ DÉ™N])ÓÊÔ2½L1ÓÌT“n]9ÓÎÔ3ýª“„&¢É!å‹Ì¯ùà‹xv<è=É=±Á.PpÁ .�Ð[ÿÞòÏ&4ò®d9ÔL}Ú ¦éš†šÐÖIÜùX_Š:'ÿƒ[ào²®ÃMùhÔlÚlàlçYgV³gçuŽÆ/í€Új:Wá†î¯ó«‡ûÖ^'Ó,z°=Ü(frÂCKÅ/k0F¶‰È¨ØÔ0½Ò ©ef¥£³©kNò0Óˆn„ógïð£ƒÔÉjŸYªQ=êH=©+¦ÒTüÁ@ÐÉÀHj¨v2dŠSj÷³*Öx2òæã\Õxí|×Û~:,n:ùA dê…vU%(.‰m}egVbOö(I ʼniU5gL -h¶`âQXá¬ï6x=wï¸{·Õj[oµÞfÙbYZJ,žƒ`gþ¬Ž=öè°Q¹]”ç¬UMvo³«!)‹„Ê[mV³åaÍvrÊO¦<ªŽùà~„â,–aØ/ªìàõT¯v4_ó#’Æ¡:G]9®\àÌ wä‘QéG8rB¯ra”_ŒY6ù >#¡LÆ%"º©ŠAØJ‚Gˆô�!ƒxÁ_;("ªaÄŠ$‡V‚!ŽÐ6äÃÊ͆›7«7k›œœ²Û|±åfëÅî}‚wÊ®G¼XºY¾X¹Ø`æô6šÉZöjý›¦u…á, -˜˜U,@ 0l³8Š¦9èá: “"¿ -ƒ2" Âæ!d> ˆ€K®Q€;ð‘ü?e^ÔOö‚ŠMóÊÚÑ‚p1)_«Ã ƒ˜Ðpb(ïyùàI:¬·þ?öÞŸn}í=¿õ~_\'²ÿ…É^R™“.ÿG*sre§²³EþÝù7³ ‹8‡·”Þén¬âKu?üôõ/Íÿrþ½„vCmM`¶Xßü;".c,64ú†Ÿ†êQª*¾[á-ßKˆc.¾ñßà¢!¾Ôñkùoõü”C¨ýùÅ¿•á}Ìa8vù]7!/´3*rkôv(¼uß”'ŸíN£ ÙÀýÄTµ}¾ÏXIß;·…•áòüq(ûÂ;îÞjy‡ÒñôÅ÷ߊyeµUèX=PÍKñ#ÞÇ°¢ŠÆ‡i ÖÀG;+¸Iª5ùÛj>4”æšQFÞ'Ä’/‹\iwïÛBH\¼ó»Ú<<þaúKùéñéßÿùó‡_?~ú·-ÌùõÓ¾ô§·?üíÓ§ŸÿññÃÛ/} 7ú£{¹ -9!Â$ùŽtó_Úö%‹þ4×/þÃ~ÙìÆm,Qø êfc Ùl²›ÝÜ ƒ¬/²6H0¼ˆ¾yܪÓÕÍ&‡3’¥6ó`Æ25âpæÔÏùöGWɹ"¯ -ª¨â L I "À%˜òK›ây -(iñµˆ²dCôìŒÌFÂF™Ï&lÙ6’îeÿ˾”›ë°™dCɦʩmàÁ:!»!½Bˆ“d"oi]:R”Ø™CŽs’æ�æ¹ùÅ!ÓIžEB¤†’P· Ò:‰sN#]ÐH7–<·rIÈ·Ûø÷Õß”ßDúCØ)VŠÆû§ç©¥îfI×Mª"~Æ2ÖµÜaAçRIéÛa‡§m!£ly*%2bõ/Z"$ -’ûΕñªT )½£Lr‰¬U‰˜]‰¤ñxlܨE2æˆÏER¡DR™ä¬_I.‘ ±kÑ௅’\í^,{S•÷tZ•í§^o>§'õ˜}%ÐR2yÕ™z”0)¬¶ú,îŠËâo¯£ ß¼%°¸x›ý]³¿êê¾ùmi|_˜l ÀÅPœ…«Uë›]ëo¾Å×Y�2®] ×ÂÕ<�zøàkzNàè«9ã¯7ßð‚FŸŸUx¹©; æÈ®!¬ mäµC® ±© -?mÄdKä‚ç"'c¨uÑg°É¬«×=5`êÈ´YQ‰©W—þÅr7e7‘þÐíÔVÚ6uÈyU-ª|LóDü4ª(BÂF™±ÊÆ›±-±~S“ó;¬…5Ó$—•cd ,&¦‰‰hâ%ËLÆ÷Ž¬^Ùãòå6ãÊZX³üÑ(Ç02gaô4ú‘÷ çdÇÓ]<i†•µà–§aäˆà6_¸-‘›pÛFnÌnT¡[oÝð¦ì¦äöºz⫸ú5¾Úç|M®¾ÄW[û -g“¯sñUœ $Ö|g8»ÀYñu„¯ÉÙ¾8Ûg—ì,ñ«bå¬Å -ß;+¾ž:›\/V¸)¿‰ô‡Û±•Àµë¿Ågº²zª|>wùÌãìpCûÖ½éï w¯ºv máî¹·×={ÓYBÓðµv6ûZ;{å+»jé¾0â0Þ6œmˆÆXß›®}ãR¾Ç‰¶á?B¡ïÁfžãYäðx¡›D}µÖ7¹rW#^ÛãŒüŽ“@zm&ºfϘßË 1]òu s.‡obœ\· ’º=ï;Ž©¸›Æwü"¶Â - 9æÇæ}¼z¯“3òÃF½úî¾{ßt¿TßÈ·¼ þÆ™Þ ¿¹ËÓï_>>|~|ú3?}~ʧ~¹üôûÓÓÇ?.ŸôÔÅÙŸéô,_¸½Œ\€ÿ!³ÜÕz¦c:j«ƒ™“lQŠÏ “‚*ªÐa…’’0Ú…•VÍ_Fõ¦“ú¨¯ØÈ9z#å,=o”D§&m ÄUÏ:j˜5J/À$'±„”“t:¸î©j‰Ò[˜^EJ.-ß ÅÃõrø>ô‘Œ<Fžd3+'Gãâ'ù4–¬ÇƒÍGI2ÁxµÍ<ÂWLƒ/R>·å{à«ò´ñ<s"¶Êˆä0“,„iî®úSùƒ6ò -TÁW(ø»ý7…Õ &šP[3ªiI5”ªÊ¬„ôÛ�ÂÄåõ#&UÔk … Ô¿±X*›…º†kÇ rš -Ärõx_¡X‰IýŒ¥zæ~*¨p¬/8& © QkhNUX0¥Š¤†zçH‘,É2%ÊÉšRIªHj(è³Ô‘Tj‰d¥'»»»²§ºSTUA,U0”všÔüæ/j~,‹XO˜'FÆÀvÛÓqE<0az2ÀÐHÖgÓa<ñ?kr¾ßV£Óá`wz-ŸÕòUD ½óáÕò<4&Kʇv«åb·ƒó–ú<•Áçbw2< [l::Øp‚çb÷)ø¾áøÛ/hôù%:nlJÿ4v'ýÚ›^å‹BQ,TGjf(…ÜUoÀpeÊ#·NnŽm&æúOãnNë“´¶[,D‡!æuù YXsØoF‹´/Óh@I.2wP\{$…÷â{–ðŽxG÷Øî6×]Åýøé$ñ»ç¨îÔÑ3T·ª› -ÕÕÁÿ*úÓM®óšþSþ7G²“—°Û� ¥Û ¢;¿òŸy—ËÍ ¼ÝoyÙö–½o%ô+»8Kw»Ý‰átŠxÏ~“òÄî£áç¨7Ãðly¸e9ÜK–Ow,Ïȷ˯™ÏÒ ì;‚ßµébù‰é$®'»ã]…Sùƒª¡ÓªØêa_û"Ø—€�U€v/æûóÛbþ±×‹ñT·ú3~´=Û{ØÓikô›}Þ«éöy£}.–OGËI<¯,_*Ë“á›åµá›åÃIÚœí¶Â›_˜Èš÷Îã"¯ªÈ/´B‰–7‡7†³aËË£“3LŸ}äÄo‚wá3m³&:Þòš6ÃujÜ8ãÚhñ¼R•?]sáÅ,wô_z÷á;º£ñüýã|à Å ´ã·ã¿i‚FÏ[–ã•—ûk|Ç/bã¬d&~'>—Þ#¿}~¦¾ôÝ=þ¼—ê+ù–7ÁßÂ8Ó»á7÷ayzøõËLJÏO¦ãã§ÏOùÔ/—Ÿ~zúøÇãÃå“žº„Ÿéì$_Ö]Æ.À*Eæä%‡RÚ.‹mÙ¬ÛÉíãáT>ÙáqLlûÜæª×ÛÃÿpÁ{/?ûÝ3¿§êû²ÿ£îDûPZ}ä®|Ô¯Óõ»í#¿N'oCwÞûUoò¶;üÊ~ý·zó#¿Aÿ˜nðØ‚š„“„‡xU+ò$Ð -7Œ6…ixFX&ñLb&b˜qŠ2f&N‹œ1¶³r8žÁz^¾&IMV»r1 -dñ{¸ÎYâyÛ;Çà¼ãüåxqKÀ“ŒÀ©fu+pÏ@Z˜»,9xuqPçí,q½ÇÚ'‰ -=bâê*Jägº†7´4Æ[äT{<ìEÈt¢êI1Ð\T¢Ù†¢ô¨?·•:BtL²¹ƒú+oEütëˆÏh8ŸfM¯ÝùåüÑëþì_pÁÜöûPZ~nVnw‹V—F_¹ÉS‹nîI[Ûv=7DD/¯¶å.N<pèžÉ.hY‹nõÚ¡Üèȸû¤ån1ƒ“öô\Ÿ=#]²j/p8Ôr@ Ž(ƒ%¬±áÞòX±< zî9NZ|ˆí3iå8oë-O -éxÏ…9'€¢ÂëÂl°2#ÐBˬ(ð ·ù�’´Ä?“C€Eðƒ1djh\A&-$_‹…„^ÒxžI5Á·øû) §•€ÑJÂHQµ*[äT}Q5dv6ó·A�4ÑPiT’Ûtv,g"ÃSex|VfÕÿy…Ú£èúÔÛô¹à¶íÿÂãÇ\ðÇ¿ç¢í×|,•öÓ{:hÜiØ‹ø)^)œÈŸª?ŠôwGöuµhÿßJíWÊ$QþájÎDç§_¯Ó.ëëEoùã|áÿ/À�RB3 endstream endobj 30 0 obj <</Filter[/FlateDecode]/Length 14912>>stream -H‰ìWmOÛÊþùþ‚Guâ]¿·Ÿ(ˆ«Rª“¶éê*Zì qëØ9öºóëÏØNˆc(S°ž€ ñîŒgžyŸ#éMopuñácèrémopâ9Â-áétx7÷¸’™‘w¥Ã(b% -gæùnăôžJƒó@lîÒb¹àéÝᵟDGÒàKà9p<†÷7Û¤?˜Ÿä´^ð4eÀæ!èáe’ÆN§1#@qwè/f‹,âqâ4º5ù›ç!O�‘Ok;å—R¬¾¿äˆŸ²îŒsk‡mKN½àÑ O-ú~mØ9ã0‰~±ÅÌsö~yE=ÚÕÁó¯h'|*½ë Æ_ÏN3ÆU¢)Ø8½õ\1C‡êŠºñæGT<¢÷nføv·&o“Lt4¦;4œ»Ž#Y¢‘,[@2<ŸŒs“Û EWz÷èñÒR,ñnãõ7îˆQ˜.è6 -+‚¨\ TÄhomñ`ºYWŠ¥µJ,ÜþÃc©Bh³l35ùèòºe‡wº]Û|ÎXÇF•»8'[X·¸øvæ¶ÑÏð@ðÝÌm£ÕÉ•®ç}8Æ\¤™q·VEÛµ*p™!}üß&ü|çÖÛ–œší·©Ew¯®çCÄYÄ3ÏÙûåõhW‡l‚Ǫ08áSé]o0þzvš1v¨šMAž+fèP]Q7Þüê šqïf†owkòÆ1É ?0¶1/ÖA‚ŸÛ‡ç“±3K¼�þ37¹t½w/0ÅBïâ -}Wꈆ÷„ÿðXªÚ¿ÛL»:ïê¯;kuxÝÙµ¥àŒ%qì±`T‰±‹#$:“\|¥wÛ(õx øBï¶QéëäJ×ó~³=þ®Ù™!ܽ¼÷ÓÙ4•Ð£··3OT,9ŦºôÑÑšºñØÓÑp’hÊ>vXT[Lû"ñXâw.“Šz -ÑôfˆŽ?ÀŸø,:ƒX°�í!có •º(ßß-€?å†q—6Ø@ák¤¿ÑVù»gËz (øq±iQ&uÜ‚Ÿ—-Ž"ŸB/Ò¾ŽG^E‘ñ*c?¬fŒÝ›ŽªZæm¸à!zó+0t½Ñv}n‡Iä𡿘1<$Zí¾vm]:ç‹0®Ü5ºXÐóÜw|Œ}o#ÄÐmﻆ¢uH…ïŠ@H—W…ï*ˆÚyb6çÂs~Çþ™7œ³ˆ-fx€]‡‚®wPߟ˜Wµ`î[(Î]é¾áts1ò“ŠJñ‰×’?/xtÃSKîÞHT7Õ~c—¼žíêàù‚£›óà„O¥w½ÁøëÙiÆØ¡2<ŸŒ^ìÌÐáê=nŸbœº-´¸ðúwÄ(Lt…wXD¹;TÄèLÜâÁ¤dW<>˜#˜ÿ1ôâŠ$Ú(gFZf-©a\z]èúì„cá |BÆõgÏçøðÝâi~³Cï¨A2¿„pýQZ‘¥qdJ_ÇB»f1?ø_ œ%]‰«ù4«Xt^`ƒè,¢¬ó!‡»[]!âóðº@óóëtJ¿·z˧^P¹vÁ™8©Ú¥¶böž£…. ‘1ÇIæ‰ÏªlQ€VdiØÕgžëz« -ß"¸{†Æ¡ù^ÀYE„m9Ìw.BüÆU`hY~VpÝZþÇÖÛ\Ceþ-[VL$[P°¨V'Ìé[˜^LôJâ‚°(:Ú=n‚ï¶Rêk•Ó(œã;sFŒS~¢5yBkiP‘ù7¯ÑÞ¼†Sþ9‰®*V Eº2³Uí±œá‚GL„ø8ß0ty¯À_ǃŒÃ$røÐ_ÌRú-L´µäòãp¾ãÊéúµØóG‡õà„O¥w½ÁøëÙiÆØ¡Œ(Ê6Jn=WÌÐq²¢n<üë šqïf†ŸÖäÍwb4¢;4˜»N㨘ä8–-àžOÖ\x|¢¢ë¬{ôxi)ÖW·@áõ7îˆQ˜.è6 -+¨\ TT¾Åù¯Èƒé$])–9µÖ•Œ»°¬ä4Œ*ÇÂNEeß`Š3êÏžÏñ.ßâi¡……$óKG°5YZØÐôŠvÍb~ñ¿ˆ_|u-q5Ž0M9,ˆljïækòÖfÙýص%°N´í×Àý¸_÷k`“í~¿vy Dbû5p§×ÀiÄ`â÷?†^¼_wjÔ~ßE m¿– í÷Àý¸ß÷{`Ã{àÁðœ(“÷{¿¦Gzz2ùŸàÞ"ËùñˆßxAñ¢÷q‘½C˯ÆËùuè÷GÜ÷œ™ÂˆßøQO‘†ðwu›~á½dýA¤á¾_‘”ì÷j ÿ/ßàèV"Št!ýïÿŠä¦üöíÅÐ$Yé+Šb›¦4¿?3ú†¥)Vö©ëº”ŸÃ«V_œžœ^:]ŸÈeVùáûëþp;ù²¾R6_ÞZû£/xLÌèìqø%H}äJ7s=˜è% ";5ŒÚ(·Òúÿ覗ñg?D±LE×$ªõ)¡ði¥ŸVvg(Šº’•ÓRÃ0t[’M[13M²cK“LÛ°ú–?+†*]Í‹2(%¦ï63+&Õ|†0ª˜ L#`¢ÛéiK#§ L1LbšàFoÔeˆf½¬QVœØ§&UtE§†šjô,i$Åe©}K72u,Mµ´ÔˆV_7l R ›>K‘ -ÒúÀfê¾Ä* zo©¹s,fӾШF .ðÖ²r4úf%QöYùÚYIá…†.é}Å„øÓMõyö«NHbX–Jjß4 ‰(1Ôš ™çˆ"²¬¾šMÍl/!)Ô2sÓQÿ}ùiåé)cóS^'¨Œó…e¦‘«y ¦Ž·ÕMÈý,Cå’ççˆ#š)Y©}•XV~`•r”RŶÁ’£”ªŠEá÷Å•rG×)䎬ö5ݲÁœÔxž(…æÙC ¤lE¦œ=È6±ôT” ‚tÅÖëº+/i–™7N“êÄRR¥Ë’t¨H$}ІP;MégÉ2ìT$£ªe¯1˲^*4rqÙLP.ª÷U¡8|ÿ‘}¦Ó·²Ê‹ô÷Š•Gq™@ )¸ß :” rQëkL¥Û9£Ôrùb•½†ž>÷¶.S¦´}ÿ´–ªZúR¥|pÜ“ŸdŸ$?©¢üSdòSö([ï¸w -Åꤷ){DZfÖu[kºu]~|’öê[׫’M•GÞ”Qê¶næ—JùàxU¢WÆݾ|JÌÓ>®(°„äÚõDþ_z_Ò(ïÅ°†·gH‡GÒÕ×khê˜?³ÔÔ-ÝÖà-ŠaÐFû4]U§– ¨ 'UUŠ¬¥ÁÈD@›I# - 5‰'6TFÓÐ ÅX鉡˜ÚD…Ê£ÙJÚ¤)55¨d–¢Ú”è¦t5ÜN@*ÝÂãÅïÜÁcðIa*€³ä™ƒÉcÀ7§ÕÐ&Ï|uáLžg€ƒIÎ0à 2Ð_àd0ŒÄ‰ç/X´”Þ•ç0Ùωú‰ Á£àýÝ"ŒÄçå‚Io€D‘£0ô·ivíó³˜/¿É’"Š‚ùõ¨]dFþÇ7¤EPD·g•QVTüöþÎÉ[Ý=UíóôÃîtEUÞ›qâĉÿúáã§î_ý‚ÿÞÂü4}÷«/ÿðßÏßÿýG®ßýòÓ_ørD~öëO?}ÿ駿ü\ƒÿþøŸƒä×óâ7üñ·“êYO¿=ýéÏéôQg~ÿî.â¼fÆý–3~RGý5™—ÈÃSäŽ?°5•ÐÓ¹×bÏ'¿<_êwêa1NböB[æ,;< -VY²](RQ7æžZÔ:GÅJÄîá9[ŠØj÷çRçF9:YZP^´4_(ânÎëèn Ñ»ÜÎ#—¥Â·ƒµwX¶høö»qFù–lR>3ñcÿ*ãØ>øW½ :L–ºûØ]^çΘ—i&ù’ynMÌÀ5æ²Î÷³õwÔÛG£¯H¤—1ìfjË¡€äì2dxz¦+±×Õ²<Ø�Ïq“É=¢úT§|ŒÑULd²ªL,£`Þò8[µÏcaTÞ¿ã‚ÃYƒêô˲ž²#wצ&vîUåÂà,ªäñÐPÓ@9q¡Þ·v‡÷øß8B0…|±Mðoµ»éºÖ¿›ë+'¾Ìµvú7F«ÃrS©RÔVŠ¼åÒ¹zB8rŒ¹)Ó1:´ ë+Õ‰ž”çO”DŒçT³)×TÑ¢„}KY‰[óù@b¬²jS`°üiQ{&a”<|0Ÿ™Æ�ƒÁ)<ôLoÓc[´Â›ðÜl’:Tž3±n:+E禩ª€·žRRÙÙi\úÐU -ÕoÛŠ¢¡.s?\ƒsÒ#UýÇUø#ĵÝ@¾ðpeêŽ]# ôÅ„w7F N§°…¹SÂ;Ð{Od÷žŽú ->ËŠøÁ°ÃqžVÁFÔÈkÿzxîHÀYæéúþâê8¨¦¬iD1[xˆ–öȹЗùŒ\¶à°2¨updHfO=</7Ù¯F�Êè9„ ³m=‰F¡9Ë#n4_‡§†šH!'Ç/gm[qí!dŠÔ*°¤N}íËæøÃmRO]YZ*5ª+þ@‹6¨ûšðv˜p|EöaÈÌmoV<YÉj1²yÉ•ÐoêSªAÕ"åå/ê–r•ž……8ƒãIûÛ,sJ¥IÞ&B}óâ ji¦´ªÐVÜ¿â±Q5¹P)wÀNŸüm{<p›°t3�Æù r^š¥ÖTÖW#áFA³·FšÐÂ[î9/ #?›ñp8½’܇·Ð´4PŒR«sΫŠàŠ5§æ¼ÚmÆ)“±sã=ýòAh¦ÍVvb—´zóÔ$2=GÕËŠ,üxÙ̾ŽiÚºY86EY"4êÜ°Ó‹Ždív~]Imì×]]ýmИ+/÷$ÙŒz¬œh|vHCOÒ‘ºôPÔÃ|dá©™qÄ2‡"W1t™5dÈäÃ4oàúÜS^Õ*Gƒ¢’˜|<ÅëB?¸]2Ú¡µÑUŽ©r߀üøîÕRܖ모œ£[»ÄQ PóÖ@TÉ&3À-¥ys¹!$„÷‚®] û®|ÇÑÒÆn¶b¬öâW¿Î"«-šc¼QL@âćìÓ9È’)?fQÞ$A;RÚîy30úÝ_j¿Ùδk(f¡ß6¹˜„Õº˜R½xÕå‘Ç9qÛ¥Í9<™šì##Ôà<qzC¤™sÓ rÀ"²É)— ·ìhoò{íG‚sGø¥9 ìâ“nMlBjøJÝFd§øÁ»X–fª{Wßñ«1gZˆ‡'Úåim ºŒÀ³ËÚr¿ò�ÚþÏFp³6Ü,×ÛÇ£/éGkBùFüeìc›@2Y{.ab-$tØÑ fÏ~ô1)Æœûí_ãöíúMÜÒ#{çÅGmƒGl¯)j*Ü—Ãs'"µŽØfWiæY|ŽbÅ®¶ÒÎZÆzko[nñ*¼ª±»¾Ã›0Û¯Bssýï3–î—–i‚ÚdQdë«¥ 7$º"šØY.J|nöÐw!ó¾|*›å*Íi嶘›žl¥*ÍÀdåm3¨ æõœ§°-RRí`íÈ$žŽjzºÅD¶ïU‡Ó'Þ0>!¨Ch7˜½1ïiM«½”±æ¾eœmv|»£Ê{Ö"°¦Õ¢o§í6^>ZYᆆ¶{µW.n“ºÏÒÐgÍ;ŽLÉ8hOádW),øk1à5õ‹¨Ú}¬üúÅë.¨<fðï _/Sûåk§£»–îš^tÿV´ü«<¶”_åzÆ\"eÞÌѨ]"NHôao^Re)?l?eQ»ô£f»HÖ¼s!óZ2ä²xõQÚù9,™VÕ¬™ºl_Úk…xÚpÁ- ?»Ý%á -uYiw ¬;ùKC§Êk…"?&Ý¡ªI¦€öIŠ¥ìµI.n`cëíÊÚoZ²9ÜjÌ«?™¨r¦k{ÖƘÖíÚŠ‹gIj]yÿÒŽw«§ôÊ™vÀ]§í²MP42Rûé‰o‚öì!Ñ™‡LPŒu“é¶³Ë 2"9ìÝ^KöÈ®`}tÇižø··µ‚ÌЉ‡Í‘¬hÕ›°á`æ7eK¢Êµß„¾E¥”ü0T.N—¦ÆÀ+Ms«I³Uu%}4ö¶1÷Æ¡tØrz ̨)N7H½þâdñ…5×fÛ †>ɉÏË° u4sùsxönÌHEŠìõ¯åÕ,AVE†¸,6ª]fÐÓ²ûLێ电†d—DÛT¶q’$ižv,MBÙz¶•ÜË¢v·A‘Þ{Ü“Š`hZT dúí'<–/9ß¿‚Ô‡¬J +"Ù æ45ê~ûe¶ÐîeŽ¯½ÂHl‹ü®¤Ü]Ì“bI©4\Ek>C€¦ïKJpp"RÏM¾qì¹’—•ôDkZí$tQÖnÊ’„§=…=cáÑÕÞó^YØ2™t;¿°‡ÔgÏÏ«,ßÄ8]ÂK-0P èU;7wÕM²Òø|5š–"E ¸#Ö>2Mº,é—‹ŸË2*£¼'õBQ—ʸ¢™\rw½$½“шVp È®)NÏúv¿•¬©=¸õl:pÇ›0äJsÁ-]{qmÀ=ø(ɦ×õMeH(õ§ÿeÁÞ·—lºC½ZUžÙ¬nÓRD¤àyˆ7|nâüõ-¾ý/Ô>Ù{É>¦gš¦¶º`©Uq±vd{+´ù ä t9“KöOýH@YKbE ͤéFº}w}¶¥Í‡ã}þLJ¨º\ ~$—:ý’dMÍXì Æ„õ”/üÙC˜Y,B7Ëëdzf=(‚Võè69a[·%÷ -'Ú¶Ý.¨w©f‹*¨SKš -+‘“Soà×+#¶¥ªÖsŸðP·—ìS–Y¨J£–©Nß‘¤bÉóäߦfÁJúF²Ç -çÌÓÎæ#@c´â®Ó`QHšéA5<H’¯ -ä7¥û¼“Á(¦®nB•‡+TGß@¢¢�-[Ñ&Z–D{·äa °¡§j¬tуrï¡:~qÍ&´È\6²–\…q+Ò\›ôl‰A ¨ìæ³5\Dh6½½uš,Ò1ns}|wƒÇ b7¨>Jü|r(,³è¤ ´#R¯åúyÝ=åÛ]H$Ë`d‰ Ïäõ$Òлí¶L4B)ãÿ1_öØqì:^ö ŒO󟌕*ö9Ž+õú_}Ž®¦{^lEö@Ýl(TŽºËM8Ìàî¢ -eÛFý’ucⱓ_ä’åSØxs3;Ê(©å®µá‚h�%¸ƒûhÍ›wEibã,62½\X¶}ã’cw¬ŒoÔ¿ÈZ.nLUÿDÌÖò,s -*ÂNÓ¬ãiSa¾�CŽÒ8I‚;)ß -£Ñ¼…($áÉK 7&ëз.(}{¹`ùý9Þ*ù—gŒW›k`ú�9æl±Øâ޳Ȉ‹:AÁ¢,3Šû2Eþo:.¬¾ô¸(3Í „„wvÙí ñKI—0?Œ|qu¼¿2aò#LQZøض‘ÙSº_ ‰ÌÅH] «äÆ5/½ú÷ò¤¶Ôí‡^LÏásIü]Ó~[È—¿3Ë¥3RÒs+¼CÞKyÛõöäÙÕ8ë -»Þ"œõé†ä ¯±„¥nµïÑ!ÉM #p(9v‚ÔbsÕ8T£õ-M<»Ö¼‰Q–å¯&Ìw¼vG§Ø" W|t‰^_/ùÖUS‘ÓŒÆôó%Šm¸Ø©ò†ÓÔ.DøtÔàT¥w<ð:dùoÖ67mß4<vÿ¿é¿îÁŽðUMÌ[FŒÇ3an*[†·SHIÅèÓþ=úÕŇeñ£®d aÍÌzµÃ8¼` SOÓò–lÅ´¯|,Ru›SBv?|R]"QbÁ½(2mtÄb¢Ó¬Báyt?r[¤"l_6Oð6Ëë×qj›Å¤Z¼ïêv•êÚ -û‡`vì¦.ë”+{ǼƼ -I•M’®J÷²9bñ¤áè~Ðá)©ø2V®Ä;)HóÆ;r˜¡µ‚FÖl0ôRê!£Å·sfóüUí# ýÉ-Ý, 2æ -u_Ûõþ$XT‘÷T1”“Í’X¢+ÉJ{ØÌ+ù0àÒ:&8´�ÌÇ‹b-Æh˜O•Z@jK¢ŠÄDš$ p=¦¡ç÷Ôw£š5äs‚,=#ûý)þÏeÿûò=Ùî@O‰gFϬ‡\mvï7™ô$Ý$S=7Æ‚oHȾnóM6õáÏqvYnÞ1¨Áž¬c‰H\]—²}¸yêê/îª=h<¥»vŒ>ÈØêö‹Öo¯îÖ0ˆ^Ï=µš³iUæÇ1›&õyeþßS'=bá㟳œrâða©`Î OvA£ßmPõ;¨ª¾bÇÒwg!W·Ø¿A2¾êqâòÕšRöK@QÑøfÙ©ÒVÞf—Hæ”h.>Φ`àèù:S@?!Œƒ"=¿¥þ«x´:ªišû-Kn,++F1ħp¶¾¿Jéβì"¤‰„ -àŽ$9C¥Ž”œÜ~®ÛòxüIfÆ«Ølè¨úï)ËÉSS‚ô‰$}Αdž „üµ²³áxéÓ±lpaÀÒ‚$ ¸˜bWG<®Ê¡ÞõZ){óÒR‡aøSÈ=€EYK^&rß•áÐß•uYFìBËOîüñò¤2×ê]jüA7挶ٲ…ºèZ+Láð#2ùC&²ÖèòdĬ¾JVé‘èq £ãHÚŸ’yá¡%g›¯¿ \‹$SHb»kã¥+?bëéª}¸¿4›gZX2Wª3v“©Ü‚ÌrÓýþ¼8¦óMŒm+F?ŠßJöß#GÅQ¾½˜Žé×Ê]iX¨Þ¹îR¥¼÷†¿8–/pzöA¡y× -¼<éõWç†ê5iQÍOâìjušÝ¯AãsoÓȨáN@”nêj²¹Z$SÞÝ´ðIÝ’EIúäÔUèdSRÙ¦¥ßÅzýb<jéòyw›kebqEm|Ò¥ŸÿÞ“·í¦ÔxÙ~ÂËKoZµµ}JöÏa–Èjááw?º75lˬe†žh!rµBevÂ=‡Ü`^°ûð·'Sp)•cÕ™ƒ¤íbÕ8r8êöG6íØïÍŒª|˜VfB`äÎа´Ñ¿ LVTOLI‡¸xkÞ«r„ó²Õ ¯$÷¯þ†¶)‚æœAtæØþÐì/Âǘ§ÔAØ_³a-ÁÐ ¿p‰"ecK_K®RYúšS¼ôý"m·÷”јUïm§ö[¥Î 6&¾#àŠËAž¸Ð#m2sº$rx)Y³¶›PIö±‹%Ù -¯Ó×_7cï”ã[#ì£&-ãL0¥=ìŸnJcb7M(¡ üÕ]•|4j²áx§Ù‚Å-iO#RëðÈôðoÀ)|byj¹sÆ3;2¾¬$?þ°ÇQ3gŒuX9›Œyäû£‡|_“‘Í÷ײö‰Æå² 5ÇÙõ¯8áÉ Þù¤Èh¡jÒ-¬½î®åR|4WöµtsÉÚP´ªµeFIY‡å$/P]žõ]´²Åî»h$\¾?QƒRtÅÿÕëŘ=‚¯TCm'¾J@sxV(Ý<Ü•dÑV›kÆSì¡ŠÀø%"ɵsw¶¯ŒÃ˽u?U•#5ï{ÞGtÿ¿nú½X6þo?M*§ž_aqÏG¸¬± ʵ—1EDsG1X±DºCˆÕ„«$V1¤Nmc¼ó½¢R&g\$âË -µÀBVÔ‘xä–SLÝ7JÍ¢˜¬/ ðúOleR‹WYÇœæ´áRÕºØZ¬Û5)Uø•-¡ÏÄ€ÏÌ_Kë€òô)vÞ#ö€Öi¹d<™ŒÎxùªÈ½˜0)‡ˆKL=QùëHiçÐW±Ó¸?Æ]å¿åÞ¬á^e¶yŒug'P`&ï„28P¨R9Tg¢lùR@˜áØîM*^2 -KäLJÌ`R…’{v ÓżaîwÅ"4·¨¢^%kð©yÁ•ý½ àŒ½$’Ç&«xÕ‚¦ß-~¯<Ù A#ÌÝ[�¶ŽÄ"!PÃé -$ÏDh`gj[ò5_&¹lvcø:XPº ?>wþÞÚn„-—o_zìô–¿ZÄ_Ùv¯èšbÐfê]Ötá!$³\ª ¥EŶžP¨ÚfKX ´u…CpÞ2P=ïí 8O· -_;õ°®Ôs<°°ô¨ð–_ð½›{Øo¨üt|lÏK‹2»Þܪ¼ã=Nl×5¼zf±R¬W>7qw±;+àØ~~Ù ¾êsIw÷3šÚE@›Uì‰çB@\`0§Ùèœ<1—ú›ÜæâÓ8”ßá~Ø!”;åež•j2öW6¦Í²_ÂWÆŒÈz‘©¨**ºÛþŸ±(ªiP Ä!üÿå¶ÉW÷Jdìé߬ Ï–ò¶·¨Uyµm.JªKj8[eQèÀŒÏr*f¯¦À±è^ßðœ!ÑQU´/¿Â/yÛïÎ@Œ �zÇÚôpαŠ.4´o¿Û½»™Cà(*îb²U®±WË®O}e’q|-µ|m¸×¶(Ψ9á*Æ·XÛæSÐ߯»M*U²’ëª$§Õ›€ÆT-úÜ ‚òè v›ê> Uï]#¬ >ÏSèäáú=kåc³/h8#Æ0kSÓª¼•w«8kFgþ•Ô§•"¨Sù‹™ðQ3g[3ì"UW=¼ÿa‹23 —»›Ô" ¬þʪ"ÑJÑ©#Úù½ æ)¶8’Iì•,<PØoßzÙ•%•J5ÓåÚ–‹òžr”¦»·¨øhÜ2…¹$ ZVàótî‰õªlúŸô>ìŠBV …Â*0ýªš×¯¼\3¼Üá|OPOì^°Ö Š/ÍìbGxo›wѺf7&5¹™‰æ5rqŽ6²Ý.»ìv3#³8 -èÀ -‘@aX ÝJŒC6Ëä/&2Du†¦ÆúTB²ÏeúÛ’‚±hk°~ʶK®®xS¼ÿæcÚ–`±”ȧռ8ç°ã»ÁâyÅS6Ü,ŽtF¿q˜–QܨÕá6d·T#FQy:MÀÓ*Ï&(Ø“ÎðˆHðxæÐz%߈åÓéÌ—»Ž$¹E¿ þ¡LiÈä3ÍÅÈ,@ÖBò[òÔ€éûuÏ fVuÖø»ÖLE“L2÷q(Ký%[±&“OŠ1RÚl—*±î«‘ѳd™¦ygù$ûÛû[®~ÜB( ÔŸ*žú²qÌäÊ -¾v.Á¬7Ì¡‡S‰¿ÈMm¡¾ÌÏtjöPooÏþ¼ý,5×ä}Ïï§n–ô²Ni7º(c Eáªlj%D(7–7¬4盨H ㈕™Ð? P"ncN…•Ùjnè¬Êߧñ¶F7]’ó‡ÐJÊñŽ|Ó ªØ¾< (ÖÐffkÚul‘éDÏu¾©¤%wë`”qªx<ÊYW6°WAÑúŠ¡*WaV³YÚõ;0‰ØÀþ¸¡)¶Éì¶lMæý€\Ðt*Aú-ºÕ3TÝÝ"Ä¥€·^#xŒZÉÞ-æ7Ï_.î!"ì%‚<âw«{Paèñ¡€ýýÇ ”À€Â‘I3|Íåÿ~÷qƒDF -,•Ø(�\;òHE6•f«8Ý÷R]‹y-öµ>oü¥7G„»•©Mæ;M Êd?¦BYš&MjÓ…ë–â-è´»˜yVÿk²Ç`%¯×õ<ÛøÇÍàX*I¥Î§äH<Ñôœ)Ò”31ð.då•MeÊ(aõ:È6ÚÍM#¢«ÄK<EMf«f(}' AªXþ¥—Á3Tt°eƒ‘f*ŠQç41„¦2e’ˆø͆šKájVéí‡DbêËÝÝ4ËÐT"O0 ÒCX];•xcY)„EüKdvªyìã|ù5Ÿ·o‰º$ñšeÕE+i6‰œ„ˆ“}#T«Ä?ݼ£ãîS`‡<ó¹kc0J@:=Å,7C~¥ %*9ÜÝ’Jn¾Àÿã-I«rjülU525þç À˜®eWÎÚVåïê.¥²@~jüŠ˜k&"ûKIò0{¾Á~yAxaL°2Ô—Q°Å`þuÌrµ×,fÙ-Žað°]Ý3*\ Þ{ŸøˆÐ«˜`l(Ú¢PÜ[Ã>| -?fÁ¹¢ÍJ¹Þ±€Ê†uÛ&nTtá͘íãc¦’í"$n4Õ -"0¾šÍÆLbaÊnSc§uˆ°ÀoöyãIú¡bxÓ›yoœÈ…û[¢ÌÑ÷_ÿuûå¿·|ÿ«J©ê S’ŽAWÝ4Ž›Ú_¶Ôº•ÆP«M( Lª‘¸L½¦:±&_¨˜Èu*óáUÉ¡We·B›š¼¬J*T¦oÒ†9r¬²(Ðœ¶±d±Åîô“65H mìÔר‰*î å1ªR¯ºWíÞµ´ô&®I‚hÕg Ô$y…-A�‰:qäΧAî² -W\.jt ÷X¡doÑø2Ý-Õ™06,Œ™Ðᾟêϱ#'Šƒ‹AºRÎdx~kjšâÚ÷oƒqé öô¡vÈêV7áÇÂíèrGeôž›L�\cWã3æê’žUDVÇÂé@*±ÝÕP½º´#`P2âUïsçâ~Ìʱʌ®*Vä‡ûªaL1ªÙNf£-·gÈ•@_š@<Ó?½¥§ ’«ÝϨñé’ÔÓ÷Ó Q† OBÑIŒ¶k‡ éˆdŠG¤’•sßQ'Ú³ðèƒ@ø(qç?�µ¿›˜ Ü]hŸb;U.J-tö‚,Ñ„Ó3A$onå9k<N/˜‚m_OÓo*g>»N -×ÇK´Oж÷Ís‚AÉ N(\'P„Ld f˜.'Esš±(Œ`ÛÜ„Ããi¯*j€?9¨Ÿ´”™7–– =ÍŽ–€ÛN}0\ˆø)0Ï@ÞÇ6Œ1œN‰UÕ¼"ƒG¡ÝÀ0Ë9ï“ÒÔ¥ÔÂ95îL!`÷.§y“c[9!Dž%œddâd]UHÒ÷Ÿ’vL’;#¶äYí¢ÀÍÙ�4×6‚úÍÞ*…¸÷`X2h]¯É#;àwp£©Î\?êµkŽ"]‰ƒUIt@FhÖ8�/nïMm –HeGŶ¥” Œ±Ãp‚õ[tF…'w:Úí´]œö< “ÚÏI®«=•qàp'W À9ÉÓ5Ö#<]ûØ+L°ªX -(0ÝN -d(v"2ö›BÊJ:Å›U AaCâóAuêô€Éö˜FÉc3Í\êIÈœ±û=jäb(“©Ì3.GLÇ‘‘ÞÙ;î.u7”¸Ð ân€¦üþ}qظp•$}b2^s(Ÿàlôá_²ÑSìú#k�Ÿ1tˆ!É(¶£eEwÙxôÛ™¼ZUXè»™½šÝ«ÇB#}wa“vñŸ6´{ØÎf¦¦˜`¢Jô&»ÙqæWáþ]µZ H|ð>üÖNQ€{óÛ¥Ò8g”9B=ü¤ÔCôü-×¢)ÖŽ‰Ì*¼¥€ÅƒbŒ0Og ¸ÃÓ¤=» ·x€À'#Ž¶H‹ÞôѧÜ/¿…†CÂýúýBkþÓhÜ–8Pš\©•V0äIîn¾šTmr$I¡ -î³&z€Î‰V›¿||×q-ÌÔ4ýçÅ#_7øEKnꂇ֨EÇi–¼P Å$"‚E]©¤fÂrÞh¾‡š¯Yehë¦k*"ðtcÊظPÍ@ŸÀ) š $÷ðFɦýÌ<Œ6Óƒq—ÔeÕž[ò*¡÷ «ÖB‚£„Ê;Ç¡Q™l^ê³ê–;-.dσþ*oäy1^>ž¸,uÙÛÍÅ Jj/’+ÙÛ™ÊXeÔLîç¹v.9"0[øjâºÆŠÎ±ø¯�±nñQ½ mf¬µ¢öÓC7VP'åÈ\ZÞ Ýkå‘”–P:>ä5¹¬¬€Uɹ+I¨ÂæÒáã¼(HÌêq é¥q¹. L›l^oq6œp_¡‡…/¡^àzݦÛJ/v£› íãQ1´ÌSºÿ㟷~ÿÓŸïÿø»~þ‘jY* ©ê €öÐÀŒ. kv"ˆ×ªéªEݙ䤛õV%xĸ¡4^M®w7oTs®ìjØßT}ýu ;DÝZÅ}µè³GÄ‚v §Ÿ‹Ô½^sœrÖwLÒÿÊ°¶ŽC‰¡òŸ%?BpKÜç>ι¼,L”8¹Îo¡Ì§LL–s£z"š&Ÿ“ÕÁžxyêôKS‘öý-¥ó’Ò„²~A®B’89“|ÊBbi‚)Æ°öŸ/?"¢ÈÑž‹Ê‚†ã”3ðLòÑåÎq -M-Ù^³|„ ü¸Ð:n|ty“Ól¢øý;zϲqÜ4…B¢©«Ù�d±§y<—é©#ÐT®$äâ3Ô—x~Ùx®:Ïüä›L¼€Çɯ‹_¾nhp˜ö€¤Ç¹†tBלսŸ‘¶dÃs×±æ8ùñö‡Û^‹¦;&cÜt,b9ßñbÕà}.C»îÙ°Š#©¯ö²áøóqìãýK|þŠÜm¿”½Rñt_´ñâLÜIœÇJÁwŸ¹ûÌM%D~Æl1òëæçºó+Ÿ~ÛwÚ´=âò¸‘2==$(~´àãe`*· H}³Õr mYñmë±ìøÂã'_õ]Äç©‹í9E -Œ«HϺeU?÷¹h?– ñžA®}ó8‹å±Gûž{Ïuë÷¯®«œ*Mçgø*¡¤PžÉ:é\%MsˆMÖVŒëg¨¬t¾l<VmÏ,]¿¸®!ê–(‹Ÿ¿¬@fšh—³[ŽU9*¡„«z Õe2¾mŒUÇñ÷/úº®_ õûêZM¸_PÃ/GÍ€_QJ™ñô&ÙÙ¿‡r«ßö‹ŽÓïô-„¬Ý‡nyÍŽt·ÕlT[ú)ViHàÓèýz%³ovî<—x¼3`¤ö [ þóÿt·eY6ˆ”"Ç ®uxÓ¹FzÁ/±±‡ß8÷ËÎO<~òY.ýg_0fðK[Ó£ó8×Ѐ¡÷ÊR̯‘÷¿ì:Ö”sº¯ßŠïoyNPê, «!H¥ÄÖµL_´ÎæüÙy µÍŽçªóüÇO¾zr_Bò·Ûÿé.·Þ Ž+ -ÿ‚þ‡ó ¤šÌýÒ>a¥i‰TAª -¹Æ ®‚QWÿ¾ßZû˜4 -!Ìñœ33{¯½._½ùúù‡‡on¯nïï®>|<þÀ£?ò÷Óš¯ž›Ó›?ݽ}õñý?îôÿۛ˛nïÎ'O^ÜÞ=<•ˆó÷õÏéïÓ?/žԊ#$(GÑ‚ón -> gU{à¹{kDBY‘!Z Õnh=Þ-a.'#¹yR…Ó“Ï•=ÿ:ÿ¯u,Àà?¯?òŸ?óÿä.úñóюý=ouø—w©UŸîìÙmÖDzüh¾˜62ªêš—qA¸CDUü<¸*ÇñºÌÇE&â$i¢Øß%|l¯(�îíä.ùáªÂd}ÔOœ#`mm³II�uøž2elõ¨,Mh<©r¤cœ 7NÀ>£Ø$ÍN˜ ö+ô…ÒœLª™a>Áus¾-N¢ÍJ*ú`«TM79uØRia_J -¼®ã}zQvõ#Q«2çœ=OS÷q±!¬ž6r•W%jâu–努lðøAÕbVT¶¢ë©j×»Tö}Y»jc�ý€â˜M"„j/Ú–#$6•Êò*UÎ2¶ìVs´Qo:´À¶m+xðµf³a–¢8-ÆOWËCH"À«¬±©–§ISÁÒÏ+ÀV]ÇÏÐwý»ÿö>aï¤â?=¾~õðáöî‡ãÉååóëëÿ¼yÿp¥¥Oßkáó/þgÍ«wW?Ý\þxs÷ö»«‡ëwßß_ÞüóþÃ͹ö/¿¹ò¯Wï¾ÿøÓã¢Ëÿ»èÛob‰jÞ ÀwaÚ_†x¨Ä$1¸Ê}»&�Lt†ìÑ/׸¦a|c‚ºM;'‰²•¥—6Hß�y}_u6ŒIšÌßqAÖ!èΡ¯�0K,´ÊŸ -Lƒ„¤KrËD£Ž²ÑvÇ–à(409kMo|9&p2[#W” 5óè!7ºFÛšŠ.¥(bŽ hhߦ s 3úîØ@=hÍ÷¿˜ªàUÑhùÁ4Twš¼=¶U9šö}—sÆú”d €ªfØÏb°×ÅZ` ý,œzY2O?+þN\æË.³ _LQõ„ JÞ²–Ú¡n3£½‚a¡£áÅAñ‚Úµ,k[ä{ͦ &µ”¹áYš—Q‰˜¢ÙK° -ÃïGürˆ`™^Ó•@Ege)?ž†ˆNÁŸË3¾9(h\Ï•cìƒY_†'Ûáí²¥U?P”šj åŠIF6(› -Á£ˆnZŸÕ·Ç&÷�#lTÔ8ð3Ì£cL±ŠìÐöƒŠ ‡°ÈiÍû˜$'T[œÝŒq‘g“šP¡(Öªb•ª(þÁe°´L“XCî–Œu /‘zÃÔ–âOdô€²uÌUÌFQ×(lŸr½w‰ Y=ù ×(¿4H�® `š ñ7-7@�SÕíœ U¢¦™_9 kAÞÕÚQ]Ñà -Dhz³dUÔôv{žÃÚh'ÕLHêÌN]=@ÍÐm {iWíþ�( BÏþ,¿D0zk”uBqÈ×j)JqŸ“˜êÚÁ)§ou3·®jlU5»Dù3Ø ‹€©–Àk3¬ íšš9†‡~åÃ:ŸúyYÍ‹ÏÈMJñ}),>"äǦ±"3,Ÿzµd³»út°He§`• ÑAcÉK zAŒ(¤âIâåXìâb\1Cû”¾MsL5üRà9QËÆÒ )d˜&<;´žÖÒ·sDÑåEºƒ|ÊI{®$ø–£Ø D(Ñ%îÛàëö1vIEQp³¿š»u·Û¡´= FZ´ÈºJ–•Sy]³ê9±9QòjžýžË<ј‡#/Úˆ_$OŽ”Ü|Þ -× ÇÞÆ–ñ©C¿SÝÔºOfB$8«8“Ò6Ú9Jé—kÐE®Eö8y)WH‡/ÒˆîâµãI»-¿œrÖá8…û/p'0BuÌýôCV)Nžž…Ñ£{ÄG$K'Àùšm†Zi"¢(z–ä²û~ŽæF]2:>µ‹=1ZÐR³½EXDቬpH!É)Ͼ‹ò�ÒÄ5Éha3’v6ýI_˜h¨íuøsÉ4ÐVYõäQ¥”ªòÂyÙ”¶>|“gÊ Ûœ\Ã0ØÒê°:¶X¼oú¢‚éßP[ÒLK/cV1YLÅZvR“E¤)Ö:N,†ÉºÝ0>hà6ÇzŒÅQ¥t8‡ùT/SWÚì[Á×`ÌV$ Ñ’Y7=áÛO(òÅmë°–ˆºx˜{ð¦Áäuu2–¨âÞŲá¶Q4O–ò¾›ç2MBXx¸:å,‘>`BTQ= -?”ûÔ ŠRÅ+ˆ+„ò^GjÆ"ŠÐ5–S3%™Î.{Ey1‰šÖ,‡°"CAAÛ‚<½‚ZÔ5/FHá' -ÙÌ®#²ì«’g ¡ÏpS'*6Aï²¼ª„.Ñ·tJQ‘Þ…kRÓÞúŽ7 ¯nÀn Û(F-¨ã8‹<¨à°h–ÌÆ-épÁ[‚aÚÕc4ñz&ùQ÷8¥VE)"#³’Œ‡ƒÝÜaYFªYËZ 4vcªª˜ƒR\šµ¸ÕÇþ¬åÃÁæ‚È+§—ü÷õsR¡nHMa#§äûÛµpä¡"–â=×i+-Κ›t°¨�ïa>¦ËÅkØß┦IlF:*—Ìg�€›7n6Ç„ØèPeX4@H¯¾@› (Ç·3w$À÷é´}Wu »�ÁžR\=Óøäaî›9ì -×kÁ™«5ªOO„¸·†Œ9ÖôÓˆÐ2¼ÃÒH•Yè[Šò©£ÓTYŽwK|Šå h‚Ÿošw²•d”8W^w©"5¥¬È c¦ee¥NÏ—”mO§�+Ù^Epµ1L;Ø”÷ÃÚaBR¡Ëh£ž£6‘‘d`wÀqQüÂ5z-Û·U€]èÑÌg‰µ¥?sh¬å|”æNp¢f%ÇXè”2ÎLZã$D°\¬šiÕs£*•V{Š�#‚ËÛʬ!ɺEºïõ8/¦HaP¯ÙœÉ,;ÀæضÊùê i˜´5B½µæ‘TõiO‘k)R~;c±(Þ…?¾—ú¸‰ªÁ¬™áð„YÆ<{²æ8¹ªÉ=,镱{× ec@”)%%G©âŠD3âÄ-3"œ¨%&XÀb(7[ü…u`Í2l›Ò2âÒ£²Öu[Ø¡•2<N÷Ê^SdÕù†„˜…F¢² Rð´€¼ÕÓiY‡•¸9p£éÉ–1¡Ã³†-RÉä ©7ˆTº[M%ÃR¢2fk=’Îäf‡¸Jª£Fáë¤Ä^áç·ää™:YO,Îìıê:Øe‰ ÒfÔœÇã¤@kaÒ¹L3à�W(ñ(+§·7g–ó½™HðÀÝv³íÈ9¿G¯ö.¸3.éÒ²7¹ïŸ´?š……W1rدqg0ŠZzD*PÆG‡²œèĪ\º4H/Õ@#|P£w–ÚThª"kk¸Âðë€Ïz {À]ƒªžy0íà nÙ: Dණjì]äE( -E-ÔµÍ0™zCY`‡A-ó1†H°ë‡B¤jCh³¿éb•°³¼¬a3©ËUZ‰åÝËÙ¸ðRxÑPöÿR]f¹ „@½J.`‰išíP¾ÿoêU3Šò‹ìšZ+<còÎ0.ô).©¥ v.z;Å é'�Û»(²äþ¤%x\šµo3, ŠKüXö°â–ÝE7ÀlŒùIžs¯Ý‘ë Ã`'6L?¬>ê¢"稿…kªôçT;2çtÍÏkOUµ‚ë¢$I-ÕSéƽ²çEåÓµWqMm¥œâäÀ¡/wì’YIôëµ3§y†Gõ±ÍýD.éÒü©ü‘Î’¸û$ä§I›“ w] _.k(c–ûïqòí˜'‰ñk<-Âã…÷P¶©Ñï¶wÑ*îkèàv¾'ëÂéRªÃ&¦½T@4‡× ¦ŒR÷ñ¦Ù%^`d…‘Q‡š¡j@LÇŽ8.DþF¨°¹]FXʃµóI –¾¡šõ°C”oöB«ævšlLv#È39[ƒN;0M5ôX»à„¥n¢m”ÿû?#Ì«Ý -]’”ÍYhÙqáõìÝ g#Â]vZ‡i‹_�áú>Ç endstream endobj 31 0 obj <</Filter[/FlateDecode]/Length 18472>>stream -H‰ìWën[7~‚óücÀ.ªÞ†—ö—”di4È56 Å>±ÝÚR +ÈzŸ~¿!yn’Ò -°6 ‹Éùæ>AL”½&%”®6WÛ(½ˆµrV:qVMT¨¥×A¸Ú#•˜U£IPMäœÍ„裵Õ&€õ¬ºNMWë'Wgë«åb¾º?€t¨k¤áH<zµ^]-.Äál6=;ûtór¹ž3ë‘øž§ÇÇžW—óÍìºYœ?Ÿ¯Ï._/§Öͪ°þ¼“ñÅ|}ùúîcÓÞ÷E¦gO2ËøTo*)”ÈŸ“»J‰Ï `y^9qx$N~ÇNdét,<ÓgJž>]œ¿º»y¿¼N¿í鬹¸ZÊá‹Õò¬¹½m«æìr}¹lþ8ÂKS|NøÉiS}ê¿~)RÉ,•?añ;HŸ…’â¹xûNŠs>ú²šhY{£LŒdœ20†‚Y”uR¯²$nSÒšŒ¥hý6Sb!7¾ÇP`¯ðÒ{¶û.âà–ÇÕ6Ó$sñŸSŒ8þ“¡(ÔNâª(¶ežd¡û‹¶±o±<®˜GG‚r!2ÒMžãÄY©b¨›<I`»qËXà,#àI˜1Ï–wòŒ ±%î–5·@oq<þÏ9®fï‡o‹ùMs..Vóó«f±ê(ùfd7ÍŽÚþŸ]T²–í_4¤|HªÑ ¥qÈQXª½’Ð!ÉCWý!-Ik¶Š:7tᣗ5A“P¨ö¸÷äfð˜’.F%´A¶’DRAë*„{¼”Å[ÖÕžl°Ñ團 ‘ljÈy4x¡Dí½/`³!0†F2 Ýjc¥U&DãÉ©û¨ÑÁQá;¦¶äat"–ñkHúL5œ@Ãj†à$ÞÜëßrQ9‚+ã·ög2§oEUKü6>@£Ä&û€,9›=dɇ,ùdIýŸ&óYeðSèY²Ê¾IšÜßcÀ×QÌ¥":] -ß.o™œ·Ú8‚VyK#é“ê;Á‡<öǾm“ÅÙf—»¿xTÆ nÊ9ÇÉ�Eg(íMBBðz8¶õha82 t ó8ܬ÷oƒð!ðéÀã²ßO¾¶–O¶ŠùäëªC@ƒ(„XF©íê°«šO¶JÑ=^³*TLB´ßD8»YϵpÈáÀ …Ù]ý¾°:)k,û8˜ÈéÀ2ˆuŸç´Kƒ®1@9Î6Úí¬é{ѤV»š•®ªK1mªOùë;|£ÒFèSFΦ1Jžö0yy¨Xð‹ÆZ\ïö9±Ö¯ÄK -󤕘D¹€'-7µó.Á�CÌ«.es6mãF«àK�G¼„<9Ž·s좇ú¨¤5D”µd˜ð¿ö7®?þó׫ Ÿì`B"èEÜñÆ`¿¤^„LÙ`àmxÃð¸ÅØ£Ò¶"æœ2Øß©ñ¾eS[ãKHÆ‚™þð¶r‡»·m3ÜÎYÕy´Ä™°±Ïbùáá^¬!¢ôì`{—I7¶‡êÜjÃjéMÀ[†þP}÷¦zSõùî¾Î+'ÄɯeW~a÷àT‰éG|IxÝÁi~®«XpµƒÓÖ&ñxHÌÊH´öðÒðè‚‹Ít±\ ±¢"âÁé£éjýäêl}µ\ÌWwâ>,=C:œ>SæÅ|½nV‹§ÿþ¸\_ß}lŽÄ÷IêG³åòz̳˜¿¿nþùéê¼¹Í\?âSÅ1XåéÓÅù«»›÷Ëëô۞Κ‹«E¡¾Z\ý¾nþh·â·Ã›f-¢¸m.nP›ÅoGGœÄð9ù<Hj7µü¿ƒôØÅsñöç|èe¥¤1ÖHÿ)”‡?óÏôï¸ÚXöL\ôR(2§õ¹O´ Ü2ï´e×õÚ9NŽN¡³r..y¢·Y?ê¨QÐ|ʲҡˆ&*—ó®’ȺˆS„�ÁÄ£‰P$œÅEV¾} Ý®WóõUóî(õ'ÿ©0èqé -Œ/¯ËÒH^&†ÁìÆÝ%Ç6€ä¤µ,;úfKÀÐeŠôd|Ô¤1žå -Fk`nÔÚšZ<ÎwxZqÇ Ã`ÙáAßOÞ#‡ ¨¢ÁMõÐJàÉ�d™BÉ(Ô5ŽB*åÑʨƒÛ]àupZiÇÃ`ÙÛ±sETiKì60ÀºXôŠ`7‹þÆ9HêØ`6 74ÁbǨT÷ƒÇ<Ðb‹§w"1–¨—“ä¶!‹ -зJÐî$oãփР¢3èÉSóáÐiƒ¾ÇQ2Ø~àØǨN+íƒQãeÇâ}LPÜš"Þ“¬å&ðP…ñ!˜DqV5q´8öŠlH{ô6*pTŸLŸT/{8*ŠÒèäàv,¼ŠÈV …’Œa`*4É@„xâ U¡ Ÿ3vox\›Ü:8ªÏ~´êÀÁÁ‘Š¬ää5Ú:æ))`Íl!EùØë’XÖr«œ’©ÚŸÁô‰ Ïü4\t8x\ôc¤#Ó$î%Z9‰¸a7cd -ïã dRI"H«x6ÌÞÊM2ÕÙ¤ÿNxåG«‡‚+OV‘P>Yû’ãÄa´C�åÌ,�C¹,û<fÁuª3@/°Ž£U_$ÉKÈ£4 ì8HYÑ€F©âóÑ;ÔLRðž$ºJÃ’¡2<åR:’ Ñþ'<6%¸z³ËC^^—%^¿.ƒ%’¤âåß°?ùç}ñù¾°nûéõoÚ~©N›Úã=1 Äf¶ &ˆ©éHDÃH)(—I6Lr¦%ì³rÔ›‰®=©Á§ -¡eéIå „v›|Æêr—+è°—¢= ìEZ]ÞÌLƒý¶!t‡ÅR9€,”¦gc¾SG׉ˆ@Ï€µN˜H.“ÊÔ5"Å^-=‘R‘NbÛü&jW¡¨¢Ô&Û Š¾5Akù¸Ð%Rˆ-àˆ¶£#µ¶€wmð¹HÙ²pÖ¢eÜ•Qñ¢… ò}èŸuáÓ.¿ªá*-)d=jïMwÍEÖ¥mÍáÑadò}&*þdé°F•%¶Øªœû/&Y€1=%´’6Ù’%ÓýAgŠõ*cB"TíIòÊôÙí,‡b¾LBÑ#’…ØζG;bòÿr›4‰dcú¤H–'Æö$’g>©./h›ÌŒ…LmõåþD*GÝvÄyŸh!°"…mV”œÊ²i+‹IQ‚]‘ô&¥ä• ¡®u&E=Ï d‰€•o3:9Ü©¯räºrxǨH€ë&8•ïŸNƒX¸üÈ¡ÕW×#‰½R -Õ)mø£à˜ÞŒ T RŠ^h\7•_èý.¶ÄmPÞn8Fx·uóŸ!ûì³–Õ/æD'¤‘íÍá4ýÍb™‘pss³`®‘ªZôhŽ™†$h<2l‹ M‹/V -ïÊf·¥â½+W!j»e(©Á˜ûV¿úkHód«K¨ª±!¯Â¼Jéü®ZfRWïQÛ¥ÕÇÕòÕ§ V«ßѺ¦¡®§.hÈÊjG ”™T~Ùe¬sÆÌþhñæa.J£›UR˃dƒ°M.÷tXHô—ë3¸ÜHm1·1#¨RT>8Ù¾[³te¦ûm\|¾]$ú²æŸÿ@ûxw@Íc±M`zQ\ “DX3Tþ\J�¥M¬Vð¶,dKƒ¥«\v-žAVzZò¹ì¡×ÊÖ`Ð".VL–ÈO¼å -åø‰~Šûk·~Œ+ÆÅ´Žþœ•×eˆ`p~ˆ¤`0:}[N¥[ÑÜ3|x‹ÎΩ*T‰]æõŠ¡ÈsƒfJAÑ>‡Kf{·°Íz%üeÊSx¬4ŠÉ>dex«_}>ˆ¸ï#׈»AÉfnI {Û"õ@‡ù‚ªÚPZw µ´ƒC>ÕiòÝ÷Å9HGnJû„R*Tƒë4(»öä"S ày€$J`žÉ}]l-“ðFŽD˜dÂ(”‡>šºçjÑ X[ãd¥ª ìY°»VÔ§ÊòâšòR-<ž£C$Ð}ÿ˜Ýž„øÝ2°+ÖªkêMtú¾ÁV] Y„Ðèþ$Y¦E¸G—ú¹Òb½v&¯/¹æû¾†ÿ“yUL]�¡ÿ6²79–nj¯NÖÌúp-Í)½Z‰¬mÀim%SÀ¬{&IâjP2bÎÅÜ]Í}öç;ÊÏ]¤.È›oR™iÔº;ÐÌV»ËQÚÕæÏ‘ÚÇ»¢û2·+¢[µœ•ýÖ\é95J@©¾ìŽË-ÑÑ¡Óô²“ÛR»ŠSÍù©aWFGÃ*wGÈJ2ëÓL"‘øè0ó?ªvŽ6‰ oÚÓÕ�ECi󻨛ÕÝòÇ‘ÓûÀš|®Uê˜I€¨½³`j|5“˾+}F\g3AÊ"ùæ¾óxg0Àµ…>àÈÆh>Õ•Ò¯Ñ/Æ‹nŠ�8hœL!ßtsBÁJ'hä%—-9ÃÉ£ÓIùPõԋ1E,ÓE«(ó`srtÎÉÉ�QŠÏášÊ¼h_ú‹œ“w²K—Š�R¸\ZCš0º«—Cü¤Zd椲mYP;¢î!t±”!ê8C÷%~!¶rm“¶¬mO”[è\‘Ár“Ic²Ší‹ »H49(?¡S\?ñÁOѾíÖѾ"sQd-¡ß©»ôU©ê By…²/]mÊ4èàñ6’Ý|/N(Ô>C”(åùë¾ó¬>¢B¯„q‰›éš^›A4\ýH8ò¶kçwÞÆt~©P“î=ž�4êcIÁþ) zX\”ƒO¿(£hƒÍOúeKyó ¹˜–ê•@èà+2M:oèTŽ}ßXëeÏú%±ZÆ”ÂIèü×øtPÇçRÒù„]¬.@o{ˆ/].àtI ºsCÕopTŸÿ‹ÂµìL©<$D¶Ÿ$;Ù–HÓaoƵ2ì$¦_ÛÐï'$4ïy¦ö ²°Òu#æ²Ù´CƒÈÌÛ5AÚ}ÙùÍ=ÍY'» AÙ`“¦=!Æ[ù#œ©^ Sw%µätä98¬}–I&-Å•`WçÃK">”IÔæ'8j¿ž–#ÍÃ<�%•Ç €Í¿2gêã -É ëO€1‰&Ƴ%¢ûm‹žþýg܉=<ðôËf“ù)(‰I{ -<ßFù�eÞÜ–Êùy¶pVO{=+Ù0¾MåtBGL6±óËv€ãÍ3a›§«ÌgDÀÍRçSM‡ïg5%.:˜óÜsì!¶PEû.Ö#ÌØ&Û€š¹J˜¢(@aÐ̹÷6æLs²¨¤DÌzVR‡t“¼åO†ÿ,mäøŸòIˆ‘« Ó ò³pHˆã'>ø)"é¯Ýú1" LÜE%” JÆ‚ûÇ@Y1ãl´‹”*¾éBØWBÝNõ$«€Í {úe=OW²ß:ä\Ï™ßï’Ûækb™%o3|6Q Ë\òmb-d€êí…°šÅQK“Yv?±(B³í¦M)»iCÍ#Ž4wˆ6¸bªOtõ ‡¦AÉ(’f³.\�Ùw•“F-Å&Uû E^æ|¾k\]²2ÌŒ%·üä$M6jEUªqÔ’ÙÑ“ÙKXÍBHä®O`ˆ LžÓÕ=º¶ÂX|Enq£ßM¹–˜ü+Õz@ëh…ñöêþŽ`{bB¥XA3§ìG‘iÐ4³Þ¦oÐ�ï·G\Ýà·-¤Ìáo®PÔ–—Ø&¹HìU»%Îîi> Òœ÷g@JÕ7ÝDr̦’”Õ*.—úiËöœ.,Ð,ó‡âCò¦ÔõF ¥9µÜ†AuëʵU¶,ZH%õ2Ç·‘µ„8…ßÆói±œ%ºÍÂÆ=Ö�K³ÒŽPeæ$õQ€4²¿Ñ4ýM³ŒhiÚwÉE%U(ïé¶$½@2H½Ûš…7…àïl·¥â;òPçµ£eX ØQ(:*%[Qêöæ·Ìùù;•ÝÖÕý*•_+º[ìÆ°òluYg4xDå(3©ü²Ëšv½Šw}´ût˜aoiÖâ¾<ˆ6õÚäòL‡EÏ´|}hi;bpî4ÖS”þH³áuïšâ·±/¨7¡þ6ufr@U"Y®^ú£ Na™Z LzY#Ц6cô»!tSïfÄ¡‡S-æ|Ñþ�DÅh·jÔèkŽ|@ë(}õêÑðÛ@jí9ì¼èÊœÓd×Ŧ°WOV¶“N=®ÌD¼÷ƒŽ‘R€\Õ}Þg±³ñÄØdãJï2æÔÊd¤46d'Y-Ð]l£‘¸Xy~€mæ²A…*ûD®ö²ªªk–Ì6¨òŠá‚ëÀ̽Hdú�ÓRZ -M›Ý“rQ{¡{-Þä<< Ûd™~RÙÞ /¯@“£ZÙêÚÏêi^�ò¥c£ìß-i¨Ð°Û&ÊG¡o°YSR2ôµ½9ÌOJKXöQ뙉~Ûùc W@·‰ÕêI¾´—©ZŒµXhu.Y)Åi¨9›>Ã*‚�AYä 2‘Ͳ-,0³P pAªÆd[mäÛªOôýö‘ùÜV‰ì(s¼êJf‡Ã]hæ–¶«vr¸ò:ƒ2:}†¯w'Í 1‘:L%-È98å0¹•jbCmF¯JIôBGE¸+O‡èUŸHDþ¨ã6èn(¸u]‰|t±Kö ï–8,‘~¸bO�¢ÚžÞ.&×ÈNÎÚod»`®ïPšt&yÑz씣”] û[¾ -P¢#¥vTm¼’‰ža\6¯`N¥^ã~q€D¸½\ÐéÚ(%b¾yç„‚žNÐXL.³jwª“°“óˆ£rËE€è¦×bYº¸9Zçäf€4òu%6mÉÜôÿ?óU³²g D¯À{x—º)“Ì$™Üƒ tUEŠêƯÞ3ÉL’'n\ ]|=oòdþÏ™Öjó®õ6”ìCN 8å-çvù˘]è¼£ÉÁ‚ŸK†^&[S¸$HKĺR1¤ÒÆE0˜¶:2ÍŠØ%IØ -€¨f†qb·gr“BB¯£ÂÆN©Cg©pba¬â¡«ÏÎ0ÙŸÈÄ?pü‰f<½ÞÃzè_ÁKp€ª=Ñ‚Z2Ûì%“Á “ª -·1ŒÌÈ@°dÏ=Ê钑:wTÀ@ºSë0í1ÎdŒQ¼#ø¼¾ÿåý§ß?ýöçÇoŸ?ýúË^éõágØT^ýW·¾.åI¯Ÿþ‡îýý]ÎA§!c¸ª8$7·CCtwë75¢6v4@QÆ€Šu€AÇlú9‰±ÙÐê¼:ø! µZ»è¦i¾.³ZÛŽ'¢·y4í0eÏ�T¿oÍ -–ðvM” “gƒkBq1ÅgPŒ1nóÌ9츗ùæŠÂ4ÍÝ£SZ/ò«ÅCrŽ]©6²sjƒvêКsa1v2dqZxÀƒSú¼xPæysóÓBN0T±}+M¤\Q¶žÄɹøÍE°~nÑ0·Q„õÁá襶A÷]úŸ—µär=¡Üº%'�j÷w]v`Y%ò¯¹89 Óÿ ÖØiU§q¡‹Uwuëb€’õJwÜ™?›Þò«ué•ûÑÏV:[¼!Fqrëb€êeº¸`Š”ùrHO@™çË[ñs®d e: ©w1cR9 ¿šFë>Ï©×ðþZž^ÔCÌ©]Öe!Â…1 Á±á«_-¹Ê€…îøtõ· ÕgG¬^ß!ŒImžß´Œž«Æ¨ƒ©ŒËn½PÆ'´Šê�£øìkÞÈQ¢ö*ëUÊf]âGÉê<n•œ®®*ï ŽVó�¬ÒÝ—w·¬':zýjp€9ù÷\šS°.i|@g�6X=ê={vbBÁŽÞåd�›öGW™_]¯:]°¼IKÀcd–· ò1¸ç»©ÉƒÌ§ÔÍ�‹³…sÊ -ú&žZu‚Ndö1'¨ ;@’‚¡uEXsKúDÒ$¯Zã‹¡W÷œ º^—±’–‡°º+ÁÐ;Ù•õ!*�¥ èîÁ~ãÿSË„4v%6ÄsÊGRÿ˜Ø\mŽz�”œP¢j2ÔtÎWul>ˆ¢ -ÅØðR=‘åä’»t|Ò\’ÅØ€eqóe—b€íe7%:èoí8·Öâë2¤¤\O¬F:MÑ)l¶ÉŒÖ÷ IkYP:6 VúúXÓå+æf[ªÜpÈÕ3ƒMR¾:šAG—ybÂ5°îµ;ÊÓIL]Þ‚Mò”’æä±7Üè€ØEû¹žò¹³ZM/µ¡’—RÚ Öx¢HñPµ‰µ]mnë.=ÛÜöÝ«ÍW›ï ì.çwU¥¾³öÇäÁ[Gë³óô£õ–úl}vŠÎj¿¡”\…åª>BHÝÿ -<ÇÆN )å‘XÞzj@«¡®š`̪ÙZI{Ö‰ƒXû[šïzxꊇybòÆìÃ{›kjWL6tÄnƒ«g]<Y&4¾Æ1ü9 snWf—;ÿ)å›7,(-]Å“µó¤ƒ?·= ²è*feËQ;W³Â‹–ç±Ú{~ÔÓ ˜œàäñ±ðñæÎÃa[ä^s"‡ -9Ëéðþ, Î:ÅY-HÅ ž³ìÁnAöRÇqäV¸sÎ!—Ø$¨çŠôšìWÚÚBÖÚñHhV€m¹H§„‘K(ð<1¤]©Šþá#,a‚iÐë|Óûð‹8þäÉÕôzk[A·¤BØͦ˜bä`ÑÎ@`«Â6…@IUíLo[‘±nE:Ì'c”K‚ǘ—IP£˜˜•‚1ÏäRïˆØ²øý/ï?ýþùë·??~ûüé×àrz}ø6•×_ÿÕ¯KÐë§ÿ¡{—†sk‹„ŒÂdŠ#€¶É68l ƒj’æûlå⧬Bc)Í)M°úM(5?Ö’óVÛK@~³pâû…mÁŒÒ%m3ü¦(77û£Sl›"íZo²{] Pʺ™&Âá§4šH62Œ‹µ;8¶Ò é´6V½ê;D1O´éAÊñ±1mYk¬ÅCú�'{ϨьZ/@í„V^z¿ÎUîd¤¨›1DVÜìy&+»d™SÒ JnG#·7Û²àWÊùK$¦U&½Í Í2¯Š`¥ò« -¥8A?×#ä³,LúS)äû@ŽW÷9F€ý‰Ékö—43½ é€ä«Téi~m¾u@0²TYWÝ_ˆ¬õEF(µµz`®± Nî7È°{šÈƒ4ÄÙqˆ”ùf8�#Õd²AF[^ž†d!ÏiS[:†9Í£�uYm:‘ù@Ñ”6¥&”»Û1Õ A¶SDùêü‹Ròô}.v³ kÚÐ*üª×9$Òc9ˆÙX6ÐÜj6ñ$`Xy¡Êf@˜ß ÔVˆÎ7Wt‡Nšoºe\»R÷s#XÃÜ&”šDŸj™1J6H£Ûª‡—Ư#âì_#‰ÖÕ¤ÓyÊõhžƒüjoÅ “ñÉ‹XÙP´Œš®xœ“_kÓýb•._ºyìT½|§È£Ÿô‚”uU¾ƒ6“ä嫳ëQ>)m1ú²Wª·xMÙËêS¯v–k:hõLMs€¸8¬Á-h¬Ñ*ý¹pÂkÑ5_ãHë“Ps=ær`¶F„ø—Å%¦ÀZf)ysÄÊ›a|4éš�'c¡Ž:‰Ÿt,õFÖâu€ä‰:>ýP®G©ÐÚ�–qÄÍ7–ñó,ʾ6�’ í©ç\Äj&¾.k‰"_Ohó±rš¢c�&£ŒQåÇ(›çcSZ‹`Ú£|ÅÜlKõ‘Žê83Ø$å ••7öå‰Úq¬{sì¥À‚“Ê[°úšã““[,#6dœÇöÒ°°Ÿó¾·Hð¬èØ€NhmJ'õéç–FL11«·`ÖÕG)Sˆ8ö'¦ •ý*ú픽'2ºVê[pP9ÖÑÒÙ/¯¥µ@…»y»(Jñ!TÇU©Ýëã œà*(Ì ú1 uÿw*`0qy¤”òH,û–c´†ºj‚߉w±VT±cÏ:‰åqˆ¿l½]»$9ÍË,òÆ 0ãåm®.¨wL6tÄnƒ®PÙivdBãkܼƬžãjv¿3»\ØùJú.(j-]Å“µó¤ƒÍ5o|ˆÄ]‰YiÛœ›GkÌ6 -/&mä- £žNhÅä× E€7wÛ"_€ôšy3ð.§Ãû³$°YMîòöÏYö`·þФ¹cCM5ØwmQE{kk¥øÅòªc=Ž¬°!P–%)þõR IcÓìŠ-ùD53>))5쉯a\îƒnÇNÛ‡½ögÙïû/ül¦Óë=lG¤½“ -Aó6<ÐsCŒ*,öÙÅ‚Ç‚Šþ„[@:¤Ò×s·’5„ˆ*’Ë©sÇôH¢Â˜ŸæAÑyææ«dײ ~AýÃ]‚’ítzøZHôX TB%um¨’øúŽtöñk6ݽ@os^\O9Gæ{*ª¯¯~úþÃo?ùý—/?üüõ+½òë‡ñ&~ýñßõ9¸Hz}÷74îÏwy™¶ÊjIDR&õÉ@Zâ´(´t“ôK¥oB½†í”l …&ý_@—…H)RÄH9 ’”vÈw&‘…uµO¶Ãš!z¬=É*“‡ZqÈz)ÏÑn¨Ž¸4Àʱ³*Bn'�µ³È`ŒÅÀ’»¯Ë -å±·:4·‹6ÈÕxu奥®ý°fÞX Õwö®þÐI®^+º.YCgå9ŽØΖ -_ËZMcNjöŒE¸|kÓ¥’©–Ö³ÞY3YØšJìTvWVK'ó%Íérd6=mùÙUK#‹Ë"†M÷¸êÔ\˜Ú Í9幎ï]Wèˆk:»å”²ï´þ/æ/R¶K&s-œ]àª;Wæ½7A)wêê΃ð4HÕ-01ÀÒG¹°Zë†ÌG³«÷c Ö0€mÎ$̽›´žÓd1íÒÕõd1íIDÞד*¼Äˆä5ÙjÑÓ¨„žLÙ ‘^à‹¤ 8¦meõQòR€æŠÄŸ|óùŠLb¯6+Y8¸ÇNN<¤[¾Õ¤á=Ñ$õðQ€¿~¥{w1&½ÑÞUÊØí¨esåâ‘˨õÞ µ+¡ö8žÚ¨é[1¾íünq|Ÿª—mW#%ÚQ-Mßš’¿lj¦gùl ™¨å YþY Ÿëjmš2©«åÈåH¬°³ýX~Жºcñ@l’ð€Èz¥U]*¢% -IaIo•´;ÚÎZº[.ö8 Iõjòzic<ÖJC^‹– ’c«zŠ¬ï£Ø:î^0ÙO£õ¥¿+3"ðÈ-š–¡Kb|2¥¶D‰4,ž-ô¦zœÂ“"A‹•«Ë·j.ÚÒJôk·uAÔçì6!ƒ¨O®ä"‡oÐUÞâÇÍmÿu™Üh͇pˆPùÙ)‚‰UÚc‡GŸ7$ˆZï“û£³g¿tÚì#ŒhÃ&Víþ¸^¬Ý×ÖMö`NÕ ¹ý–„û—?¶r>ø·ÊlMë]A…¬5®ªHªGwwI;šÞaÃK n5½En ìLS»‡fHp¥¤Ï�W)زïT6&Ò>i.3"íH Ï0nǺyÛ$óÍ€,;â -@î£Ä.-_×t�šÙNSByBùHö ® ¢¹ dL‡Ø:ZI%ÇNo·›(ºÀªm6 sÝ´,zDZ)BíU÷Ii6òV·rÐ -bÇEo)ÓâÏÖçë&L¥ø›‰†ËÃ+ŠAJ*F×< Û]ýX×-Œû´:mª2QÜLf¿ŒÛmhfW³¡cï‡3¯Ó+£Ö~¹¯¾7_<±` £¨µjo±N!ÑÍñæ– -œMUíÊš*9ßБRîÔkÙœ¼ÔÛþ#‘¡ÎèJø‰e]—7d#ƘÿQRÀØé{ù(»U[<«›#©cˆs(ØÅý‚¶ý'èÏ}íI.¥·Œ^š’Dô,)Æ‹ÎPÛVðº»ËLu^ý˜÷x{€Ýœ7xܬ#gññ¸Ç@ŸÚ6UÂí{ôœPŒ¨´Q&Pz<VŠ÷Œò’lÓ²†[T©î1¨ùø䣤´zÎ 0¥ñØŒ,ëÙf¹Ñ�I<#JG¶÷Âvm° -Õ'õh“é2ÿ&3ß¾¡;ef‰é'Å"ö‘B»Ë³éö‰ôiRÛ# …Š[ÚX®žHy€ÉL:K&ÝŽKDˆoÇ%Z)¶L°œö²]Bt•4é1Ïš&¤ezö@Ê’ö€š5úý€cðãÉ€¦w3ì€Nš°AgqئÙ9ÍÁLruº&Íyp…|ì’Âÿ†8à’æ“2†U¯ˆ:)[þ>@vò\Jé“ÊZª)‡ÞÙ-±ˆS:rˆqV·lˆKP¥ O“Óœd³eÜ…0Ó³ÐaÃèG+„\…~xezy?{¿:À’çãDøy4gèžÞ¦ÏòXç³ü%DÆdxhžPxå£øiwòn¡�6¡[È`ñm…f=²Âkª^9ö£Ãt€Y;ôLkIó-ØK¿îåÔÇõ:O+¸út -c™7o—lèpÝ£qe‹¡1¹ÕsŒrô#ÎålØ°Ã_“5ìPðJOo*s¡7`å:ÐÇZ\šò´D¤dÙ”2·Aù’ Åg¤&Ó …GNÐ<·Ûî;Ï0xFD°6ˆf*ãJ¥Ãò3‚76‘Q7xv²Çpóé'#¶48šF¿$x¬ ñŽ -.ŒQ¤ô‰Ü”Àìá„éÝáØŽ®Uá&Yƒ¦‚Á\',n’Ž‚`MOø½99ƒ1$Bí3/Îùá<ŒÒ뛾f<¯¯Çâ«Š7“„%׿X'¤×÷°�Þ®½âÔD©Éëú�ǯS,ª·ˆ œÔÚümÈš NÛpf™…: ’ 9`QœW7 ƒŠE<tMa†#`=„áë«Ÿ¾ÿðÛÇÏ_~ÿåËÇ?ýJ¯üúáG¼‰_üO¶}^’^ßý müó]^Š[#´§ød\ké¨@C^ -eT1½‘g¯¦UVãK¢¤.¾Aó± [ å.#>-}äÇVfpæB!ÅæÁë8QHþ”¤¦@!ÉzÛ«¬!‰€I.;O=¾¦Na˜ÓÕ!}"P§¿‹+<÷ƒiÜ×€ß)¡”sê5,€öRš¯ìúƉx O?8x8ÌOÛn‹ñÞî”ó§>Õ g<á¹s7,EvçCSóþ˜¥É¥á˜n¿ÁQËõ‘eæ5îÖºäZpã¶]Øt+ -e´sn²ÆÚé@`FCÂù}Cn3ly5ν“«J" òZîЕ-¹nY‰å —ÒÊÀÇf£·kæ=2Z^‚,Ø…Äz^®¥U#v ÷[@§ùfO<K›5ô²]š»[C/Œ_‘)ƒîø¯4è׳Ã\Á÷¶3¤ËÝ6y.ȳ¾gjoÀIÔ/¤µß H)"ìýeLJÂàÊæš”ÙRJ½vB§S])‡œfÑÍθoœ‘$'×;â€Ø"îy(™b;-€gNWhaŸ{k[t§(‰uיݢ%ÔMQd|c—ÊF¶ñÛ‚FU ©"aÉ™\®„"'‘g`ؼv„Ñݯ„jÇóMB¡WœµÐˆf”ÈÐÒ{ø“W{„*šættØÕÝúL 8~ÍÀh]h2†¬M^sQìM¦ê¸æ»az€ž½Q<1ŸýVü•Ë<\&&©IšµŸH#ëd3²e•58¹ ì˜ #ê˜ÞsØõžXźg0j×”lçXuWÌÙî*¢°ßÛ[µËɸ. VìfÔ{ÓºN£„»¥µ~ H*v€õ¤¡IcÙe»ûíˆno9=‹»Ž£^ÍQ°I‡mÕ:ñ¶Óô9ܺ¤ž&^ÑÙ-ýM±‘²&ÔÞ“IÇugÒž&Øëž>Zú‘£IJxæ³¹âΡwwµDsµð·åÛôúãU_ÿÀãtFÍòod·ïþùnr>.ßñËœÂÂÙôõw,Ì,-x¢•AÅ´Ê~>’âªST¨ì8ñxÃñ„Çž¸ïÿ‹ëÿòöô²¿ÿ‹‹³º8ƒpÀÇ9-'ë¤Wi£ßR?ÌÏ/[´¾~]âÆ©Ìúéßì—[$Å…Áü‡zA‹îÍûÅ~‚#Œø²’e¡ew@cÏÎ ñ Xÿz'²º»º»æÅ2ÖØìÃj»b23"#Nœ8¹#°yùøMo¿Ë¿âîÌSí÷Ó™–_ò Â^Q~¨sljeܧ.AÒâ¦ö;o##êøWÚßt&‰F?™,´?éU·X>>ç›ÚïÃòý¯Ý"ûegžìOÓ™Ÿù¦O³E…Ÿ_tÜôû'Xˆ^øQ…ÿ9XÿvLŸŸƒÛöØÜ÷z‘¡e•Ý¡ÊüÙ¸yl݃ëõÅ16g@ÁÛÕÕ^û�ÖÚóJ ?Rò»ËÎØcQË—(]ÙŒ÷ÈWÜkÁQìcÒ÷àÖEÊ!˜¡|‘²c8Ì5ôxNH§!K¦šæ••ØcÌC„iA::$.¾ÆÊf¼/pµâ^Ž`¹ý‰sæ/\O™BÿO€ÿó³êbÔìý.ŠîöE?fÔ©eV½µûâN4Ìð:j…0¯,Éù<Üœ—Bâ|ƒaww®!ýÄù¬.fŸnôEG-ãæ-=ÅÐgˆŸY—âcm‹_ó±–Ž½6YM”oçöý4;{9Ì“ÍÇ<ïÈ%Å’2x½iø27ú}ã¾Ûâsû|œX—Òbe‹ü̇Y×*äæ&Q6Õ$%õÏîÕJ%¿»ˆN¬Ka²¶%úXÉÑ-o»ì uÙSwoàßg€ÿÒËåñê<ŠÎÓ{íÐyZ“—Ί§e_ŸéÂSXg3½y¾íÀI«:ìYWŸ|ÊðÇùEÎ6®1ÕjŠvúw5w+Ô²“H+ò(<‚‚Õö9Ó‰gE¤QÏèÊÆJXEâP·g´â⨴ìÊ¥N7®‘ÃjÞžøä~Û‡O·Ÿò ËÿQŽøùgû#Âk5ž=XÏû£sýï|ýìƒû‡®_>\ßݾ¸3ýSžž}zû0½ûÁ§>~ñâááêþöåÝíÞ|õÞô>Ýôìû»[™¿¸þéêæ‹«ûo¯^>|õæõ7w7ß¾øææêïWoÆjßëAžz&/TLÑZn´^ƒ«0ÌT«eóÙ—W/n>ñpý;Bé_Ý\¿¼úêå‹›ëÛï>¹¿~õÙÞÁyÜÿôýÝýÃ!b¿ˆx¿ÆÂüä‡ëWWÿ«~ÿ‹>½ûÞôüÏï°Ô}ýñí«q)ûN_HBngË»âÊw÷ïO÷wWïˆø÷üGý¸ºøaü÷«5Lß]¨#fž¿áãwüø¦§4}>ýå¯nzE·>ÿRï‹-ðæ±Ô -RŠi4¸¤£€[ߦJ]7>oSʲx×$P@®‡]—RvÛì[1[OÞT,‡e‰±óãÌÛåÅ·ò‘í6ù¼)m{8ЄµH¡¨5ò¼ëÛÖBóÃâ,4buü_Ä“¾*¾u™^À†[¨pÚÔ-¼ --jùÖç&oiKµm‘K§>l=6¼þì-‘дRcªD·),÷±‘†ë¡ÖhþR.€Ž“t[‚>µ)uvµÜƒöà5&=«S •%ÕW©W=OØ{ehÉiSÁ¹S‚kÞ:õ[¢ƒÕµX“·9v§}<e//ÙÌEÅ$ÎT`r¬–që -ãvƒ¥e/K¢‚Á’áé˜HZª˜$¥è ‹…¡Ó”žîº•W–ÐwIt.™-ùÌ–'åN§W‚ÜØ¡ù£.‰lœÚbRÍ 6ƒ -¸**~ÛÖ\UŽ…¿¾·1ÛJì±TãÈAŠ‚X%qü©¶ÃKƒV·û‘ºæº=·”XŽ)v·}i[àP,Ü¥ä±O¸÷Áʃ$7eRÂ<y:‡²@ž¸,ʲŠŠ�]¯/Ræüž,†Z(IÒz+pÛ6&¾Œ µáJ>\jSó–�¨I·ÐGZ§æBŽGוsWš™B©EkJôÀx°SŽÃSÌ‚^ðÑÚ6õÄ,SWKõ�|¦æ˜e()L‡M Ÿvº¼ 1hš<[ˆ¬Ð¡Í„ôã¤?ÔÍQŒQ\æ “výf{µÈ”°ad]b‡ö ðM´Å -„ŸŠY¥±¥ç>eúϾZ÷žY—#0õr¦c¡£Žô݃Nÿ»¤qœE‚·,Ê[~ÐÊ-軈–=Ø–>„vB6SêëØãz4C¨Â™.ÕS›zw‚‘Q¯b&Ø1‰e@`à’)в¸2‹´©ßE%Ï°1é˜2-–9A—JÅ"#ëj,”‡3ë¶J6o8Üå¨Ad¯u¤ŒLu‘dF2÷ªS‘ì\&QJ·ÌY²Žºt£h0æ^µ‹–4n b‡VÃί¼¨¹²:ƒãS€§«(YgP²£Á®ª¤–Ut”6mW^3XѦ1µ0¤Ö†èz¥Ç46¡’²™Zwv0=?¡áynuƆάA…Fòçm\‘’\ eÃs–Æ…Cf©VbÖ’aÝ0§Ò`c’³BÒ¡Ùù K×¾3ÖŸLNLœ›³þ¬ À&íȤŠÄAʺñ2سšB”9:Aì"‘&›…rrâkÎY"í¢�“óMdj%ØSÕ¨àÛñ&QWpöGK£†Ä03ƒM¸®òæÊÁ�µ‰RâÛAºjF<k¦4s[\¯I¤4*"ƒ!Wy3Çâ@ 96¡]ÍOŠ wœ£§Ï$ƒ•K¬ëU’DT:5!F»oøéÕfI3Ù¡¹š ;“Hœ¦Ã�{ÊÉÛ4p’I‘•(E*£ñdè°9̉s\;˜ˆMž`=™49ÍèmCãµ@ -‰6*]ÚÔe’+EY/Fc¾iFIiDtΞbi—¡k«Y‡‰¨|Çf‚(ê]‚¹íÖb’aÐA1é“‚è•RݤR_g7¶Ûâ0Jis› -‡øGÍD3ÄÂå%€RK¶ÉÑSMQ n3¢&²¾! ¼4i¢¾só×æDüÃwñj[½2ÑétA“ç"ȨԬM©r%qÈAœ @¢Ö18´‡æˆä…Vàm5x4�k§XÃX\õ²ØÎNȦ¤8¼è«ÎX�HÇ´ô„)‹4LÔ…`LÊ«Jç–VíÓ2¶ð#äJÎbªEðIiàÓŽÖ{™ âÐë$ÓPyª„ÁÒ¦¶T£J|+.,š4]Hô¿¸¹+ÎØÆQUìZãÜÜVŒ›ûtøÞUg¿‡97 -gdOëj*¸4“HŒ;ÚQ÷fh3‚àšŠþÎÀ5Ô¨ìÌ4ô_LC,1éÑáÞV´LVAn©êp£™,.×.ît -ÓÉé¡ÍB#ŽÉ° EÓ¿ÛŠšç=%%‚œî¥Ö@Xìáp›‰ŠX%Wä‡j¢© -‰Ò6•.|*ã1$Q0¨Tbã}¦‘„Œ ”Yî…G?žz0:ßv: σÞ)ÃT½àüxiÚ„ód´93„j:d nαdõEÐf(£#NgŽÌ»ÐÝ}Úá ç Ó|©ˆCΛŒ¨‚²z7Ä1æo4£LYóF[Õ£R·z ÙTŒ&n™¦|÷ñ!ZÁ]¤¯÷ƒ½u9ÎIž©—tDØz¯#Eã})ªiÙL!ùjkr¯<ÛÌP%³§¼õÇ’j[ãMâ§ÁɺŽ*uš�äI®T»©oÔQG‚õž~OÒ ã; iõÝ5†ôÍI@pâõª#*/&à—D¨�7¶òþÅuy[=–a4‚É ü{Z“>³˜C“ææÏ{«0Xzx–%>!Êà4SÖÖ¦4s9eÏ¢2?^T·ÛRf‹ì†ç|œ%þ®ÛSí!ÖÃq•vüÿ3<·¼þõŸ_+É«|$º,Qî¿_C5iÿß¿�ptzâÚì¤b~P¬eEÿ‘¡õ]dtOÚOÒ§d¦[¸Ä)tGôà’bFó–ä/®•j¢Q á8AâAŽÎè-Ä;툂œ¡v¸e·_g·˜úLgèÀÔ<vY‹DýþåÐÒït3ÖI!22b»'7dCi•Ò©…ÎÒ ÐŸtÌy²Å,&ÚsÚ�Uͪj%ù]Z - ðºnµf>ûŠÛîÐ×TÉe%Ó&f°œ}㉳`Ë, -uEÈ·±ãì™W‰Úõà°šÈ8½%œ +îB†aAË¿*S§Íß[^´é+^¬4-¦9WtJ=z¤%ñïj©€%§<)d ›j®wÏkFpðxäòÈì»#¡rN ¸Qª+Š!¨-#¶EEX ÕŠÝ8R‰Qr‘Œ% *˜£6+vªu²ÖWÿ¬ ):(ï§Ò÷Sù¼‰UUÔ•P¤z£Ž0åá7["<+Á+§ýi-W5Ãx‚—˪N+«©±~*ýwJ*suˆËøµëLªV¸ ÿ<^»ëi‚À;FˆARÃü+†f‹ÝŽÌvREYR¨”ô •¼Ãë¡jè„’`§(Ü'·Ú»ü÷‰üïç(ÍŸrIÝ/Õc[F@ÄŸ+ -þà¡ë¬Î ÌícשÉÝWc„'îhBõ;ìÑG -œŸ&ºìÔÁü¶Œeb-ŸG&ÛʽåMÎÓ*-ŒFpäS'*_BpgFCÝuW>Oùn†0‡@t¼Ìæ(cãZú£D‚›Å&Gȹ|- W}ØmUåù¬ºdl´“}^˺ú˜Ÿº³³½d{€§ -"7ñqìš;õRÒØ]Õ‰sº²$•ì½zê°>-Y¦üÈqsYUN«õÇ9vm/eÒ¦ºkç@Ul8ÇÍÜhæiŒ¥¨>*|÷^·?9®ýë8Jü´ó¶keFRiúâ1؃ºí>¢yç£0MŠvÉe;u›™}Ö04á/„ÓgZ¼TT¼¥¦1ª©ó"QË:£ë®ç¶ðS<üÆÈ#»á›º¬h¥ ¹²ÝØ}Dœ1d·&”ˆÊ²OŽ•ø³Ÿã„jM”#GkæqxШmš7vVJõqkº4[u3b™;¦½TøÄSÈÔt¹–dÝ|Ê0m«Ð -ûjƒ}Y È¡®{òÙMõÅ™Î:[> SجT…»ûL2<S7¾Ï£Än™ùºª¤!` vBÕ‰Koyù‘•^ûóº§È£%{„àSSÖÆ×Ea=Èí æ-"«b¢ÛŒœ!êPöKõƒ2>Ä FÊ+c]×íLþ:Æ/IÃ’^¶’xª°È>_Q¤±më¥(:Zc:R3¾±¡ÿ¾&%}ÛKñ’³¨UNAqÜc±2'ŽáÁµ'1þ ØòêDºê¡ì {zÒTÐùfžtZºCºª_•|WC]LD:¨š®þÕxµ¦£uå>,„ª -.¡û}f…ÎúÀÏ<©ä‚CK''#õzMú¥}Rm(§ ÃÁÒt 퀬…Ç¢/³°{Š¤ïEjen휀ʦJ0‚ø,“ɱ%BMŽòaÇR¯ŠOi‹×“5°g8–H'bq×|ÜÃz¤ëŽ† AÌ(4ÓdÕ‘âð‰|#¯Ô?Àx‚ á¬ù -ú0%C ŠÈ©XÄPQÕê £yŠ§;°Ú½‚k"EYOø¢ÎÕ®¡´e{àˆƒWІuL=Ódí$‹‹ñ †|³Àñ•¢vbÄm;öÜg®GTœêÕÆ[Û–„=ÿ°0DDÛ-”–K|) ðŸja*V´¶l?»lqG6�F€>X*¥©ÑëM>úÚ»ŸÃPqí¯°¾•XûË3§×ÔæKÌ1ÆóÑÝòl*Pw½Bù¤¹ÃPOñqÿ‘;ÞÈ´§#,1笽¹šì¡.«=–(Ç›éŠT5Ým—r"”M4$,7z*t'cG† -©§nÀÀû×Ðuy_ -4`BM[žë™GèJÅvô5Vl-‚IQè*¨pÕ.V‹éq‰ £ÞÔ7Öš€ð¥Ø/«s¶<‰ww�bHÈkÇIÍ“p€xÁ¨@4 ß(È&+b6D—„h¤žÁñö)y߸8¬>7b§*‡ÀK¨©¢’}‡ªéŠ!ª’æ}¹¸'C;4 ™m'¾oJ*„Z?\tЯ¯Õm…›°ºI1s¢½¢Ñà{É£’�…¿.TØa‹Ó¤0âv˜~Í0}ršdLà×Ò=dë®äÒÃ~‚¦ëd!Ì}À‘ *µŒâd«hÊ(ùy¹çV/fr€Ï®-c—ÀÎæ‡÷ïwK1^.9Hñ®¡Nð%\}ƒ`0žáB0¶p‘ÈÏw‰"š,43”àŒ\á´×;·|Ÿñ Á5_§¤òâëå”Gt•VRŒéÛCpß}R—iã¨îCZG ô¥î«ß!O„A$ø¦Å—ÿobçrláíäŠïV²8#T³ˆõ¹¥. -9_Ô´ËGžìJ¿Á¿YõBÒòkbdO¤AºxÁåÊ*¦²âJÍÀ?óÿìב4‰ù-µ;v$èå¾î&Ü1Ÿv–2·€Ê?›F—œÈïù (ÅÌ|E2°d–I™¸<,×£%˜¥6Õu昈Rá¦jâ6+º’í—VUm¸ì„°º O€*#DZjzþo•góÝ5‚l‡éóB:ÉCN‘)XÞqõ܆³s? -Jy£uQ8Ú-7fþ´ºº¹ÄvÁMÌ·:ù‡KÖå—úôûq>û««{Þ|™?3F ‰'f+±[q‡ˆÌ“(Ñ;³"˜ª¡rw¾±‹ó… h-N˜)·qJ!– ì¡`Á]ÍÅ¥õ•GTäñ6øý+lîàLr¢L‹`+Õ?ðïÙÞP˜€ØÍÒç{±ÓˆðœO¢‡f3Ãd¿»`ê·L´º?B!të¼ùØ(ªµ—Ì0@!GÜßæƒÏŽèëÚˆ€1øq£( ŸxGaVý'Ÿê0ù 4|X÷œ¨ìÔ<u¯ nÐe*/Â3D¥S£|ï™Gô<sfé(‡n¾µ±^Ûç·<©2ꌖVÔo oø¿*½ÊÈ|®X1SÐn�.½Aœœ0ö[øøçHZíh2„îj°íÒÏj=^ÎU]d9Òÿ@fˆ.Œ@D¡ƒåâÈ^åY¡6ò[¼àkÝÔ-Qǵøì+Ó0=‘{{H›Žõb(øçvѵ1v+²ÑLV%™IUƒ… b„í\¡þì‰VÊÉ„õáÑä…†¯+ŒŒw¢ü…ÿ™L¡,T!š‚¬$ÒWWh=©¬VgjHM¯Yà;ˆ›`j‚¤øú‹&ÂvM°[èrÙbª§Vœßz}ˆ†2¢>ºU¼&Â+Ô›ßÑàõ¡ÈßBÀ:¤ æSu"ЩYâ2%Ù…õœAÖšPY)i^m…LfàÖõ9èËx -g¾Y0úÏÀ¥ÓCöí´EÃÈü±eÜg”:s©?†º?>OÀ�û‡¨ªãp€Ì[ôiñ=ÑŸ~†{#ù%®°Ž÷”U$s'”ßHï’ -ž›hxæ#µ‡üD¬IJm=Äö\Ú*ê]çëTßÕÔôÕ4°h¼U=¨|a¿öÿدÖÞ¶m(úôøe€=ÔE‰z,Ÿâ$íº®uÇlÙ¢c%ŠdÈršüûKʯÄvâÎn±u°ãHä%y_<÷\—Ð=| -B äôô€v„ß(ݺ{ÄS¨9!mDÀ"b~š#S Cq\“+-º±‚Ø!’8"ocÀGÍÔ”Õ-—ÒÊ¡ÖtÊ2]Y—b¦’Ú¬ˆê¼®ÝnjÝ|êP¾ÅÙ(UHœj -jwV@}×°‡Þ$DWJu˜ wŒÐÁhãtÔeÆHá»Z@ó™§ÛÓ±Ô’…ˆÚä‚ÝY‚ˆ&À#á ½‡DBb ‚$<„ó¹Ô5YP3¡ÉŒt¡++‰]Rèÿä:öŠX£É.·Ø=kK´).´ ÄâA +È…H$¥îS2±�n]”¸¬û3Ý&*é,"˜!8p5¡ìÙI¤%(‘WÝ0ÀSt<å,j`È1IŒä1‘(šSD! ¼#Þ”E=ÖC7©…RäÓ€¦'Ï¢Ó¼°~¸²Êê(íUi‘Çå#û CœÙïóŠ5Þ;œõŠ»a1Î6ÄCÅîŠD5ÙHíãÏZ±ƒœíàžÄU¥ÊüT]§£ªŒIìüqXo‚£ÚE‘iIy’>¨ìD•}Õ«ÎïºEvœÇÝLݪG#M5Iˆ…8B€ì©Ì8H,Î9è¾ïáZJB�—ÇÇ>Uqö1®Êô{,(eiOõâ,ͯߕiòar”óÜ‚ã‡aQVËuŸÊh…ßÓDæÜ4I¹È¥WÇybÌ£wI¯WŸŠü¤Ló -j´Zf¸ ‡åóÖ§!Í„fæ$ã·Ó½³¬ÆARtk—ãÑ€}ŒóøZ•¬S&ªl®Ÿcfò0βôºŒ‡ƒ´WKžÃ4›I6¬XY䉽L²ÉZVc^ÜY/?/ê’dq¯·ˆãìEyiä—ˆê-–˳¸zqçób¬·è –ÈLV'fÅüº?>ÇÝ®*k ½ÃUèäÈ…EÉŸ‹q5º¥\i±{5]òTÚlQ+¥nGÕ¨7Pi‚ÐOÔY¶äˆ#•§wv“í™AN-$È–í™7Jµ;ðęǀ;ŒŠ?~Ð…ê'°æ³ƒ÷WíH)½ú״и:<ƒ¤¼:Òh/$WoãükY³,h0ãiÔ0$˜Í.ò<¾S óm6ù�eè˜ÁðC®ÿ¸þ?yâ&¾Î:³6×r1Qžèh$±ˆ9O´¥À„’£Ú"@hz@¥u¤Ú®MáKLÁ–ô]kÇ6ó*éa«Îú•6á,–‹ÃÚæÉ\Ví¹.óCýüµ¼°¾`üté…0˜¾œë?>ÓýónõÁî’õÁp¼Z…Úa[?V.+YË"ÎZ`I®œh7çRE™KÎôwzÃwqæ4´ÆÔY`wu**âÒb¨•àLxZˆ—µØø"Df˜wV=fjdÙòâs®_À0}°¸E±A~˜C‰aÕdö'\jÐ.û�tô^MÄíÚľM3@ mp8ˆÓœ3Ú4d±yƒöÀþ-¥ s´a;¥½ÙrãÁSMŒ‹2W%PÄY½¾¡E÷ât%w ¨juŸ™¡ó´2'ÏSkXT§ªW€¾%˜†Ü²F'éX3Î}¦W°}ÅeE[<7ÿ¬Š{·_nþYU·êõë…žÈ:e½ð³l#V‡ÛžZ`^D=%wCô\£Vx‚s‰Ž@péÓˆ"éy¡Ë]!PÃPâÐIy^ ÐëÊ0$ÇqÑ5yw¦UÏLÀ1/\)hg´P!w#á W¥Zxy`ÍÐÿò/¿àáCŸ z>²?ÿâ,Áðå©Eb— ìS}¶Ï,Ö˜³eU|žx÷™0N«×8vÍ.äð "¼.ÓNçb¤ŽïUÞI2EÇt¤Ž5-Šús¿Þk$¸àµéÖ+|¶Æðv¦p+·c¹7›ÙøJsfvÌÖ¯4IJToL:è ½öàåE¾K|Û:Dl'‰¿Ð�RByÀ îG>¡ˆç» !”!÷}4€ -(…@ €¸Vq't - †C¸L¼¸>p<w@¨›{@)ONÑf5ÒJ²4;ªƒµ³;ýþHUëë 5’«Ë!"«T¿þÀºé ËÒ›üE¶7§÷ÔçÌ -ä†!o¼ÏGiQì±k¥#°ºGóÚ\‘‹È¶ªì…›ÇÉ™€ë¼k&J¾ª^ìð´;€¼fä7){›U¹vIÛ˜t ×ÄÝT^±ÐhÚŠfæä·}µíöõñëåÁX°ÓùÏDØáÍIϸýÿ{Ýâ‰-ºå{$†Ì‰ä÷@ÿ§/V£3®¾„¿ìR+B/rú[€¶ŒÀA];©ãjëz^(Ý0ò‚Pêêï.pXÂzÏpU?ô‰»:ÄYí2väà>€íJ\ ¹=âÛ¦G0�ÅJ endstream endobj 32 0 obj <</Filter[/FlateDecode]/Length 15535>>stream -H‰ìWkOÉýþýåJ¶t÷û‘|Â@nönfYv£ žÆÌbÏXã1$üúî6¯Ø€ìŽ,]]Ý]}ªúÔéÜf-„áÓþs›¡ÿ6jÆ“ødháG{;îçqš„ÙwôµwÓ|ßöÓ,²‘ìmõòïàúÖ ðqk}o`ôøò.Áè3úò£ÌGû°¦=EïQ5¯ç·`¹÷Èï†Þ7P»f¹3]mo¥£q:M¢2ÐwæÖY'¨Ø¿°>|–N8‰û×ÓáÛp…Ù!³:i:DÍß&vçÂ&{QäNä–^ã³×À%B?ÄÈ9EÎIƒÂ¢IŽ`ŸAF±MrDdꆹ}ö·3€ÉÎÊU÷€|Ÿ•gf±D(ÂZ€ºHV)\NèœÝ]/¦U:,VÄ«¯±$,˜7™î»rLIêZ(áíÂòœ¨¼ÈX‡•.@£½óÍö§.?àç6Ú¿&éeRîÜhn&0J…jA„€ªÆC;óðy -ŒaÚH&‘Bˆ6Д3¬$Å‚ -&ÁÀ©TQ®µ0{‹ÔD)ªµRX*gÁ†jÌ%ÁŠJ4Xˆ$BH¹„q>Ta¤4ÆØÀ fws÷`ow).Úê¶<\Gç+W 'ù¡ÐC1G²°j¸®(Ì‚9WšÊ¨á.!JB1ƒaÁ™£UÎÑ‚p*ˆÂÆ'Ä0@ûTRæ¢ …uÑ„`ê¢ÀEÀÊÂ0æ}¨âŒ@]Æ%S7òñà󧵥äödF6Ëíñfo‘M¸Y"Ï n¯ÐËÃþùã5E/ÏÒs»ü|ê†{Y9ñGüQ¸L Þ%šã‘¹u–ì[iMã|™C½®nS5Žn˜ÃpËZz©ø|Á^Àn*vƒrÊ`0Dã"�”_ÑxõBSm9À®;n!‚&-ÇþÔh |ŽšÀGኌ…Т¨Á@n01Ã|F¸£˜êSTˆGqfݾï!È.ðV¥6«ùñóãk~Õ’G2ìü:§Ð.“®�ÈZàg´„e3‹þ å1ãÀç\yåÎáeI„2žé13RA›”†R¢¼lÔ%æLi§î% ÷%hJÓ›²øS݈S©ºjÐJhÝ/ž³_ôúgvd³8ÔÝ¢î/,3W¼Õ“Ƭ‰tÎ ÅU·da[xGò–×›þK óš4€÷AsMþv°R§ó„^²¥'da29M³QË/}XÍÊ-ã1Ü»îp:ˆp¶å ¼ö°™…®Ù>ˆó¥pþÝL¦£tÛI«0îÛÀ¥öãq7÷V‚+û¤Ý€Íú�Yk>_~èSœ+‘…‡ÇÂ~žf2{:´ýüèÖƇ³+k–æan÷!SpT7ÄËðÇqÒMã"”›qÎÇIna! …]¶í ³e¬a¥£øÊÞu‚?Œù,¥Œ™ÔEQÅÓŠâÃôêê;úNή -ï·sz -Ûß[Û©½²Ã0Ì– ZAáž.ù:_«d®ä ’´ÐFÙ"á?ZùdH#êY³aÝ"ë¢ø—¶ÈWÖ!Ù²Ô_·ÇUÛ#Q:К(#¸&XJ×ìîî–¢h–’ðŸjE‹¥®YwËš×NŒë㨮€‹šb~º'ºTàJ -œO*ÄhV“JM*ožTTM*?ŸTø‚RaŠ2O*Lðç'•õÕ¬ºÖúy ÙÇe*Üç(\¹–ÏÜ%q/—F{ç›íO]~ÀÏm´MÒˤܹÑì ÃÁ¤FÓKèNe×joBävæôr{…^öÏÏA½<KÏíòó©îeåÄå§p[9AÞe¾ÞæÖY’+¶Ò$šÆù2‡zM·ô±�=áBRm;KǨœ^>,Öœcáw¯Z[¼ KiµÛd(n¨d -3M6@Ð’SN1ŒkŠ…tªŒà\3Ì(¥Ðÿ•ä\Q®¹ÐÚùMIpƒ‰‘Xio…aœ2AÝÊ™¡DH k>'ýaVÊ1¯ßú“¬ß*îN!ÂÎÒìªt(*b:±ÝÞ§ÎpZˆµ@‰™k:ûók_5¢RtQ˜/¬~a3¯ÙÌpR®[m7ã ËU‹ -Ø9=¥‡v¾A ¢ŽgÑ¡Í&³WÐ _ŒÛèèF.-€ïˆúGHMó5Í¿5š?˜=Ý&ùÊí^Ž¯<læ/ÃR,?£±d:ÚJá&M§£ô^Ý|r×K÷ãüK·Ù}Š“b%²0ãðø\Üt‘ûÊ÷ìÑgWÖ,ÍÃÜïÃK',ž¸¬'Ý4.B¹çá|œäÆ®º¹Ë¶d¶Â£Œx8ÅWvÑZœàc>ËF7Ì!ŸE¸ÿVÂþ3ìŸå™Be óÐ%£fë·ÅÖᮞžÈ—n -{+‹ÎÎ $¿ù[’@mGhUó A Ô�S*]v™0ÆÔH¡AKDª„*wšýí`ÍNg…Vswù0½ºúŽ>‡“ó‡Œ÷+ç½-f;µWv†ÙÒí¥bUGÚÓûHpUSÀ°wz:±96>{‡ÂÑùÝC7ŒˆzOgË÷ZU½!N'yùBðÝë¯$»ß¼jÃx´d’ßðàE¨¼¸àüÔ°œîúG¶Ø/Ðâ’®fôu®µöâÑxXµÖ"y¸„×}ŽB0ì».7T2…™¦à*É)§Æ5ÅB:UFp®f”R•ä\Q®¹ÐÚùÂÜ`Ħ´·€Â0N™ ne‚ÆÌP"¤†5ÑÑæòEŠŠl@ìÍñŸÍ_ÌñNmf¹?ìÄY„³ï¦I7ï8ll掅ÝýÊÌÒ=¡\q3,Ýñ”VÎf„PTJê F3)µÆœHí|ŒâRc¨¡L1gR–BPF3D2o!€£–¡* ðÉQóË>„4ÍÏÚ¯-Ÿž£«Æ s£Û¿¾æïq^Œ¼h!?/¡`ËP$7¼–3à Ô`}î€*`�¬8™ò{s,5£L*¢‰ò{ - 1¥°4\1'$E)Á!p›2Ôìnîìíî -³ÐV·„ï¼qk v1°—Ú+¹4rH<ý›ûjmŽÛ¶¢ýþ˜é´£ÌÄA|Ä“+)–•ÊòV«ªi›ŽKB+z¹$õȯïøXîƒÚmœTvíq&\\�÷qîÁ¹¡ï ÔÀŒw¡ç#!ǨZV`òé1+ €slOGe!užNcþîJäp«+Íïu–lKßiQ7dêó<ßaŽƒ¼1êR¿.ö!<²‘ÏBB}¦ó„B�(ŠECã¬kùº¤®`¡Ÿk»'íBãŠódþ¸ú@Åwõðˆúü–¿©§ZËÔî3+ô`dÃê:Œ¹žqÍq|2�Óg(ôškWgǾé•M贡˼Ð7`²Ð>®ç8{LŠšËm€Õ€‰ÚÀ:„Ìà “M^qE°¦w×ï/àd–:@9ZΡÿœC†Ð_»>´FÜ =Ï ØéN‡"ßAÍÂЩ» - -‘¡Ö�ÚfM[Õ.Ôy -CG›c‡.5V³"³˜ëØÆÕ�—!§/E‘4¡à›mø*�ºHH@©eðaÂp2C1 œv(ÐØ®ÎYºŠ¶rò¶\ªÝOÁ)½ä"wÚ]t`Bµ} šþ¸ÄÆš×é |ÔŠŒ€ˆô/؇ÿÕ˜ ºÞ+uí'8¨ £Å¸!BFCSÑñjˆýmdS;Îê°ÐÅ°Ñ…¤ë_@s@«v‹v¡h—‚i�ü»æÜ�cù+Œå£Ó5}¢Cj B³;Hè©ÁÚÃñÐ,¤x]4àu>ÑÅ:¡¡y°PPŽ-`}_,J·ûÒ,´sR€lŸ;þ eY1ir5Eè%@É]h;;4›Ü‚Ѩr‚—“Œ¡lxMPAü¥žÁðf^W†Â5Œmsµ]ЮRrp¦’OŃÖDZ¤S2ž½ü+yò=$ þýÿþò=:Þ8;>îK«K–J¥/a^]æµØ1+ܹ€HX•€¯&)ŸaBáqõ€¯ÑíL(™Å‚ÜI1±IŽÇúà'Â!n¡¡š<3AŠ…òè®ÄÌ8™ sžióIt'¾Ìðq&¦)…*ÅÇÑßcLn<–B™ÏuIf|ܩʶÄJziò´˜ÊTóÜ¥d$ŠBdJÀO¸Áì*Õ·DI¡=i‚E"Ï> í}–|*uôùù`i0$…˜-0Œˆìço`p‘˜(Ï„š -Å¿in‡¿ý»‡chªr*£JzÊKþêOÚo(pýÕ›&ô÷Oï/.e,¶.¾!‹4Ãòk^–*™V¥(ôœ�Ó‘RüsÄop~Ï*ºKÒXé†Ô669:GfºUýŸò)õêÁŸ³âã=WÅÌ4“RãnÕôž§Uk«/ìôèY›5ž+__iv2™‰=“Êh.â}2ÓZ~û²qM“,†£tØ�Ž‰(/M»ãë[ÿFåÿÌLÐg3±Wü Ÿ¦bàï¬ê×ÔèßÝïÝêÚô…˪¢”‹—e²ß‡ß|‘§B¿yh±}áø»÷|ù‚\ùèÒâöá~_¸ -(ί‹mÏ;´ÛÇ,F€2rt%x:óC—wûTº1|Y*0̹u]æP{glw"™Ýíà åËFG=÷ÙŽG1ÝÚ»â{Ü«C_:ª×¶ãúÖ>{Ú' §—4s,å3aLe p!nË*ÁH¹OT›{¾�]`q"+‰cYeñ‹<_/íÂB”<†Nú\?ÂÏô㱌ª…Èöâ·žñ -‚GçÔ"·)°%2¡H®D!Ô½ ò^¨g–Åó¢4ÉI$µv|$JÌЂ͟5ñíP¼(…z}/¢R*2å)Ï¢6¤]Jµà©ÀI…L«2ÿFpË’ñ´1â<JN›pdY•“·ÝñcAI–C"eVË:£ó¼Å¹2>$¿pM䪹L6…q¬•ª2¯Ê{h/Ú ï.x6«øL±Ì«¼Þàv\8ªÈ‘ä^œ©$þ¨)à-Ä(›¥Mn` Yß$âi9MŠr™È€†”®Kë]c‰BjLmìž”&cPoí.:N…ˆµ/7KÌYM'Jæ#%øÈœ´)ñÖÈøàZÌE6ÓDÄ„nVtY,?â‡Á†ãWU*TŸ[Wxžò§÷\Í;¤6™]Õ¿°ÚÕþ¡äµKÃCæô~YÞv%ÒkyUßT§LI—#»½ÜÚ{]k ób¤Ê©ä*>·¼JËËMÂh-LJtø -[´ëÜýµâiR>‘q/Ò.3]«z½ÆãY™Xó--«2M2AŠRÉyûØX;ŒKñت§µâ;^[œÇñÚi^Ì×¼)rY®YÁé¢×š&qž®f&’©êøntNFU)»®›aPÒr"™g2š#2S²mÐÓ}ÏKA0f1*°a’œçÈL‘,ª”/Âî°T<+rŽ§ zÂIë_–⢳ã À°©l‚c¶kƒ6Ćgm»î4)ѾF;m•hŠç1æ°aKÚs`§i϶Ôs§³l¹ö„g÷¼˜ôóث߸}Ø®TòCœ”|šèÎYO:µ?N€À}é{pT[ß×̲v±)ˆ€ë·©”ê†gIq„¬’«¹fc£>Æx ÅMR$µcššûté|yεÌ{÷îý,86r´†çã}Ð>gl‹ÞNp¨·ëýê'NDšþðXŠù[¾çY,'"’Yƒ–Àuö»uû¯½öm¢Š[4†+=´ËÈçá£;æW£ۿߧû¡£V›àplßóŸKÚqÇ*;M¯ÄòÙ®šŒÙ‡Û[HÅ¥~ÛnªÁp‚Ù§\¥ñu³ëN¹ÛlðÚwO‘ÌÞ µöE{îâ%iz|]È,0êiÐp™Æa7Íšó¨£Ç!XBÇ•íµƒ§™¾ê·“Ëß}®~g½giø\íeÿØáxêj÷¢d·4Žx+¿mϦCk/zþ®«Ÿž*†*™ˆô/ñbá(¡ÎO‹žÀ°¼ðCKľmßàšCŠè[›Šº‡Ö¡Õ› ç£ó·Uš¶ïä €ƒXÝãMÚ¯éŒéÙö§|«m‡Öá)ÈØAÃ6Ö+î>K%†Ì+‘Wiщ±Õ)l¸:äô֚׬[íË -ŸLª<‡²(ÈßïˆÂ÷Båj`–ª9³wÔ½Ic*ÚÀ9º”åÊòÊ Km‰{¦xœhUʳ¸™lŸ›eëMZ¯cÂ0›ŒÚfû›(ùa<ù¯¯ªwís×RzQÒ‚”LDYåä‚g³ŠÏ˼Õ廲Ôw„ E%ÓªÅÑ'9=4eáiÚÊÊf X¶ÉÆÜ™>[“åCç®6ÓºU1Oò)Îùófºé†X7RõT!tÈM ÛAÅäêP4mؽˆÞtÒåô<»•dÉ$ÿa½j·ÒVºðxÓ£(§("T´–/±X´VžS«í0’dÒ™D«WÿîÉ ˜LèYïºXÍ3{Ïìg?;|ñ�V¨p!íw_uÁ²baá#j`7m&høŽüí)Ñ©kÆR£§°,{³ÒÓê’¤—´ÑÊÕN®²-¹ÊÎ6°x_zö:µQ®bßàzn_ú9Xb/Ó6Þ9ÔÕlÕÇj׃øÛfé˜ V–6†Œk¯ÖºÀZ1±l”üŽZ:Lœ'ßârò±™‘š‡%‡ÊÇ,«ÀÞB°âw#Ò8§¿‰£aDÂÎ ‹´RÇÄ’Øç¨jFoq¸=6§Å¡äw6‡ÇS0nb>‹ð$‚™7î -Oõfɬh`°ty§æ�É,ÄET/I…cu2®áx_’bä±�oÍì/sÆÖMølXK_ÊÖ—6®¹¢;;‘”l˜ÞL‘ÀÞi±·›˜ZÀ=QÝ™„{g% 5‰éÿò»45a ЗË!LÈÝz]ä‘ûwÛe56^¢ùc %„ëHQ„ãºÐšḻibuN¤Q+ÎV¯ýjALÅc¨0Åb;žÂØìU x(†§HÇHâЉ cGœQQɆ!¬•z†EÈFÔÈP¾>s--æÒñúÕ/ÊöT#4f=;ÂfŽâ-9S …´@ -Õ+‰h®—zÏño"plÂøËLø'¢<I¢ærß븨,¾�ó4åv*JÈ2´•‰{T¿Qh¶¡=§“”Ñ,¡*bÀ8Ô˜Iô÷AžlgÇ!À)îîM0bÉUEÃ%œgc¹ÉáÁ}ÚŽc™3PòufT¬$¹„ÑI 3ÏEŠÑxÈΩ¹pPà0 -M�©ûÂwÊƇ˜Eç%F4m–�;±'eac#g ]]c ðìK`c×HꢑåuCMy>Ææ#f©øN„;ûq')GúH…ô E¥xU$Z-2†jxTÜ@r)A+ÔU#q0n,µ-£,áðiÉÔ81Á°£E”$ˆ8#Øi,¸Û,‰ÖæQõ$žÿm‡ñE»ZŠ/jûòn -rœ°$á‚)èÌ6ž¤|F8á-Pj$Œ5¥KÛž[îR€ÌÖ¬â„"ã@wÓ �„k{åõ4¡ 2{Ƹ Ó …A$k -XRK®s‘=O<Ôȵ4EEù¨)‡DU•1D¼3زXcTJEemš“VyqqÜFý£N¼W«mUŠåŒmν…IIŒÜÇàŸò2k„?Í|ž*¤CdÎ$\ -÷Q¾Õ/—ѹÔt¨ÂQ—j2äœpaËýó‘sªÿhy?Ï¡U£\·3^#/'ìé#Õ£VIY¡ê ßÙêï¡.Ó\D$º$Žk#Ül[’w„žnE T:cÎÑ׉T-c®?É?ÄB}Ãp½¹ËxFÃØ5ˆgýlVˉtÁÛFa rıpß‚\€4GdIÉ“¡?ïö~œ‰‰]ðH©k;ØÆC|ÐwBi§"í|vÛuà3ìܯ.yÿsfÐPy&óix‘Sf1m™IºìÉØ´ rñš=_·bh -Õ³•wJ$$¶V]³è€ªêÇUU†ûµB±ŸÃU&hà.uÐ}°NK‡‚'†ÜP?’:!²50†ÿ€d¾°¶†Ä;Œ°!¼o- ‡[zPÊEtL†Ü¥SðôBÐœyÊõìÚP;h(+_z2Û¢Ä}BТCòDøÎйl6ä)ê_ÏaÄÆBÎôÂä×¾Õõ¶\ôD GzÂŽ�g-6FàÇAOþL ì…·p©d%ôaŠÆpý«¨n¬°RÁ¿Æ©žÉa¦zÐU7dxMÉS6ø‚ŒO¥VÌFv¤¶nÏ´µª±|*áêbõWÛv¬ª3juWë©7½âÔœT†Ù6s”£+ -/)[|‰†ñ/L©B«Ïšk4UØ&ÓOŒO£‡V*)Dê<æø9âž¾ ½ß²G5‰V|õ¯oiÐPWqÖK9§n©ÕÅùä†Æ¬åÅ<ùv˜%™›Y}˜8ÑpÒª®Ý�dïíƒKÜ:*Þ(PŸ ³Í7:SÙe¹º‚Ð^ÒòG!¹ðÝçhˆ&-Qñb„xã.\—Š²XÒË,lŒq¾’IütC“ZÂÆœXa¨Uï—QëD»W6|ÄÓT·™¶W¦F!vÈÕÄ5‡¦FÈJÊy} ë)´,|²z–˜¥òN„˘]=Ûd™ôËçÏg?ÅA¼›˜ëÀ» Š–©ÿÖEt6ÖFQÅykaRí¡S"&è“lôÅ;†ÅNòR™Ò„‹‡=•ìÚf–óå‹ò‹‹£®ÉlæÄjþ3>O˜êRŠòÿà4¦ìÔSd!1‹cäjñ•œþ/7ϒĉ¹™Kªê`’lÏœ•˜K´ð«™©,ýùQ²X¹UåYyÝ?žñs‹RKãlˆ~&ò-‰”`$±i¸OåoÏ7±A`èû ËáÂ0ïÞµœ¨6R_‹Ýƒ8�µMqp}”›¾¡Îlûœ™k3¥Öê_âGrê…ÀAi ˆÒÀB©K½3˜?£*1ç‚h_=õN åá5æ†[оtR.Æ0E˜ÝH ì·ih»uÙé÷ßív‰‘üXýðyý¶ppó~cÿ³y²³þy«ÝäÇæ¤1¶ÞœôÞlæ7:ÅZíëÇ£Új£ùõøð´ú¡1ø¾qÚä®VïUNßåÊÕêêö¶è>tÇ›ÛkÍýûâÛæÁ¦-šâS¥´’kîÞðtâ´Ç¿šUrÙ¡ïµn±¸1~åj ÿþêÝ^®QÿvìtîÚÕo[›-“ „Ó™k«n¯[]»i?7+¹îhûd˜hl¾7ª_¹ýÞºê¯ÓÆq»æÁ´w×lˆ¢YènæÜ^þXä¼`õ~ÇtGw7õ¶Ñ4þiŒÚ§3©+Ï…ãçzW+~5>lÜøvàÊ¢s?¾gðkýW·¯÷ß´·Þ=¬µ.·V-ÿÿ`Ý]Éí=äÚ‘¶û%ß™Tì´r;ë…öÙæÏB³³ñµ×!îÛÃë“Õɾ¦á©üEG£ÁÄ÷\Þ.á:§k?ôþDo¹[¼ðÝm .×ÉûÿÝÜ?™ì¬äjû×wÍ–¥m˜…÷§û¥ºùý=×Kb´ÓâZ¿\˜6Ê3‹Z÷D\CØê¤~³³7h§„!¿åÓ÷ùMÒ6êç¦ÿ‚¹f§°zs´¹·+ /ýÛÚêa½Ãî×úm£2\½óÌZ9xÐaííªLÉmí¦öÅ’q:lOÿ®m¥y¶Ëw«§Ý>Xï½)|ãÒKM~¸÷¬x•Üöð¯~Õû]8ì¿nŽ>ýõê\OUi£WàEƒ ¢ˆÐˆ]Œ-vÁKôþÏ0TKöÙ_ùãÌð¶µÞ¦_/„„©.Œè€º=Íå„ÁçWYCN7›¡—ÛÚ"iäÕ¹„¡\âÊ–#Û�ÜŸmi—”8|—psü†Ì6ù89 ·Væ·(¯F¥³0›ùÞ9rÞifJü$ÇÊëÅ•m¼/ª¬LÄ�úlrÔ÷€o–¡7Í߬鬽£éxgKí#—’ XÿÈ«ma ã ÄÎhÎCwu„4É.D˜àè'ï•EærYwâéj7J%6€¡Ü‘?†òÞqgÜÍ8éÀj¢\fo~‘ßãVN¤Á£ˆmt99r~dhùúÆÊåëí9”H:ânß»¸µw2¨cçȆ}ŒÓE)¢ß{ -Ödk ̱LW.—¦4²´eˆ+•";)ãm™ðTÔ2UŠðÛäLÏ}ÐTû|Øú˜«ŠµœÂpi¾ËCϹ=™íÚ²Ék%;àJ²'û`ƒV(u¾¸C ª™Ñ*LSÓÝã³µ÷àWèZ<½Í) -¥ãµ‡ˆÐ?Gµ°ùÙZµDÀóQ²½¢•´÷�2¹ÐèUE³åAÙTºúu,N‘J°x,l{Z棛¬_Ô¨¾ÉÊÕãŠù”?f¢jö\HÅ„/+'!t¬¢—L÷�æ7JXìÎ^SLýL/ÌÞ¡¯ÊcÖǶö§ ó^sVåÏO¶ÖÁ+õÛß.ÄQÂÍó #'½õBå,ãw-#èåUÖ7¾ë-QœÜkè¨¹ß -H©ÄüáÔ@_;ßÝuÇ×AÐD‹G!$/² ŠÍ.HìÞ;šË’1xʶCÌwa³i.5×ÜÚ™—¤RX̉�<Õ|Y¿õër•A¸}‹hX íüLGß[œùT°d¢¹–1É1 _äêg)L"¨ºñ.«G¾eøg,x,9P-õø’Õ?”ü½œ~Ó¸¤ý…|Ƙï DíŠã³%x¨†ñ°¯ø·<Ðbœ[àüåÚÆC“mXvŒË¶ú•aÎЧ+°ì2…jZ Ø»·†°{õåÝ’wZ‹oN_tO¡ÏÚ_ÛÂÁ{ú2Ì›6þ6C3|,Ù?YSÉ‘…ª€x3búùµž—:yð²ÐŠ»ëcÆð i:dëøj¦–±©Ú‚Ó>ÔÑ"ëì0 dòor̉Ƌ˜h68hñ€ÞÆÜ!Ê‚¼ƒ¾XŒyÅ¢¿EÍf›~ 9¤¶-@-'Á´ÌôÿIÁÉR¯QI‹ìcXqzAH—¿¡¤»òW‘}ŽäدÈéЧ=´ê4nÉ>bî(=à3¨åÙ2ÃaM‹Fl.z¼·ü 0žP”bajrÃÒb‡Hvï‹îƪðWƒé_^™LvrÂ6ÅÂü‘wZä�þ%.ÉU;{í\t aå±#5a# ëVå×Óô.vÎg½x¬ŽðjeF:žš _mcF›§XÐÅØ–º’À-:$+Jß"ƒã»"Rœ€),á'£Ø‰dÄÉU24Öp£Âg¯dvîð»czº›`×BçM¸éÓ˜8PÇ&ŠS`?“8Ò&ÝÀð×åÑ…$éAEdc»÷2\|îBáF”:–±¤©q^ÊŸãN-ÜDa[ßíÛ¾~´õߟîE†BN.ÄÜ¢Z{ÛÔ|å3[/p k˜<Ü{‡C罧ŽÙ*I/:-6ùUÕ’/_‚ÓW"ØDiôÁJÝæÀ°¬ƒìŠ?uåbLº’SÊWÄZ•"¿®JÚ¤ô4²ÿ¾*iÂ’ÉÎH‘xµùÓŽnCÀEá\Ð׋ñ6|µû¹×;ȯ»ŸÍP͵+¿š‹ü¶;)l¶d”VÈ -ŒóAD$7M&[Ë£>õ…íИÛÛûѳ°ÿz‘2"öçUê^¤^âò¸J™‹d2;q×G~äuÍXn -æÒº¯°Fû…è&—MX™Q{^¾v€ø1MÌ=/ÂÖ(Áð¥1Ø1´Á_c¼AM‡!Ž -hqnQÞœÎt;¥ý§½îÜ/;8©"€CKTœNr_ì'UnŒ(ÆÁÔ÷(¶é|½ÚÊL¥Ó&¯vÐ"¦ÌEž,=SûÈ¥„‡üJßÞÆïÎÎ+rŸYIq< -zDáû6%ê‚ègBïÑa*¹¨”¹fƒ¾ô54Ä°ÍZûSäKóÀ&ûÑ‹%w·¹Ö++ÒüdÕp“ÇóuïÐ3Øy -ë/wÍ'“Y£À/"q»* -6™†jçl¬‚ù1·#²nûÀ…$Ü?Ñαôò°Ç�MñšïÙ%›ßÿÍ.ä•îß4›‰{Š4Ñüçìl*“-õߊ§·µûÞ«:Û..·—ì…`:nÊÆ ë¿ŠF9U?ȯndª J*Ð2žò09ás†îø"¢@TS:DbÿF«·Æ–•;³>ŸÞ\Ä/&ì)…êœceb@sº«ËÞ‹Gõ·JŒ[÷¬ìuŠ‚ÙëBþ=cvü—ì%HÖËÏãJû!{–§üu˜¢åïj({ZäÍõGÁg‰J/îÅJ³øº˜æ…Òñ¨cwb+Žüå*“µÏò´–a&]Ûî¬%“oâw´½gH¾ðé|ÜðÑ͘ñô)ѵ2žê¹ÿc˜Wä³FkéfZ£'¸C=—¸;jq®~‹ @ [?$UGDzy§‰|÷œSLº{Þ¸Z-ÍWLº'"azÍ&ƒ^^e©9ì×™PŸ,AÙŽÎmÜÃüÂ"q]�ü4¯œê8LžJÜ£½#@µ”äê›m@òs_‘A«Ë¿ì{Ä«2¯ -¡cõÆ&v(,ûÀø¤g*¾Bv RoÉŸhí“•+Œ–„Tš¦>§Q?s S7¶ÑŠŽÒ›qJ˜wƒÎáFoFÙ(àK%”¯Ž8¡×ÑG¥Dî|�¯ÜÌ9¿Pœ}_CëƦæ§U/}†Œw�ä”ü~‹þ#x8Àç•Â`uWÍàZ˜Û0ðefK2—®÷úDáϸ8o&SÍcðÏWÒËåüü|e¸`ÔÀ'rÇÊüçö)O -#Bç “®7÷wŒ -óÄ"Ošé³‹Þ$ _e[2s~æ†àRØd«?ÿ0^¥ËÉ"Qô òAƒâ‚ (‚¢²¹o$.q5®Å©©ù1Ï>WLüªæGª}ûv÷]Î9—O(èˆÎÐ-5[Î~dnúðRÜbò)å&õªmF¬_‰ï» ²¦`ùL‘ÕºŠu‘À—$†à-3²@'oÂLš»{ÑxbÊ‚ Zø9›MM»ä>9ß:°«›“ÇDg÷¨¼Ï÷btÏ[C¸= x_ š¿¿´&PºyæwDUK‹~,Q -PŸ‚®{‡RÉännÁ8ES·²(ž!ãúo×Yc%¢¹•¬Ð‘ÈçZŠÔcT¾sSŸìJu!ÎÖçlt(nà‘"ùG»÷Õ‘=*ùðmP¿éÖSRfÅsé]S\oIÏSqåµòb´íz×Rݨ÷/µÑòþÖ‹Ì{ðƒ…ºâz•+Ãð!›Î¾£yÓfü4ój(t/冡ÃÞ$ÂRV|íª½_h‡ G€S…²!6øp3P¾²šßñ÷Âæð+æèÔ³`¿#&ÊæRš±yàJiì_ lq¸ça½uÁ¡íŠIÌ·H>QÎ]©Pàˆ³P‹Ô¸"‡g˜’ê®k:› ¿NÐ)EH‹4º‹I¹Ñµ¹ò«>ˆN¯n£iH*ä\ÙíÃն“Ö�r¾+ˆ?†öÝÞÁF s¨!4a†¹;Þ§ü˜ï<\Æõx02o@¼yô F&,·Ø¯nÙHÕRCAwQ�—ætÎSb'zïÅ‹‚_'u×ü)¯o¸³üi<‡‡|ON±M<*\4Ý™úÝaî•ÅÄw;Œ{6Œ„O¡z˜ÅÈC°sÊ´.ÞþÃ)¢ñÍô»'<xó†Pß6 -‚ùUñß'§ë”ôØ«ÿ«ÅÊ4ørp»þa‘‰Ú¹ŠH£†ÚUQµÇØÚ’_æVQéAöù·“¦a Šø’ª|qŽªMÓASñû‚4ˆ ( -£¿¶ï&9e'üþØ"mQòþ0ñ…Ù¡G*ˆ´¦D_&¢$ƒ®³ÌöeB´ƒ´wÆLÁ -*{WÑ—JuÝöÂZhŒw3P°§y1B»æâÆÅ,J‰×v—¼óËé”&ÅâÉZ¥*4Žï‘ß„ÛK¹Íâ�¤%nà†kN–Pöw±\@%ÁÕ³%£è~žî«¦`X“˜ÈcSßÙA¿Ü-uO³'†9—¸ xžôM{dÊ-Èô"~×à?utýÒÆ&”Ù�Ò¨ù¿AtçÊð\î½-ÅsÜMÅèQ„i#à`ä “ Æ�‚†äµ¸\Vy)gÔ,)aÊÊiÒ Çè¹àØhs’F²åÉ!דŸŠ×â3{‘±{·a×]P¨ùÀ“Mø¬`¯pœ?ZdîSåžu”‰ž(÷ÇGeØl죮ÉtN¥t)¤ÔTü´/è9(¹úzhaÒ̳sÓVÁJ)ƒuˆp˜/úÁ9dãà'ú´T-ð3/”oK ˆŽ„¨×k²áfõ�ü"âÌ$]nÔâ¾–K*ä{ßÒ”ë»6ŒAÏv�]‚NŒ+žÓîÿ¹—…ìWŠš¦¬®ðÞ©.Ô×;¿£ ¯rª@Í<þÅÀyAUí0zWëBSšÇ<‹èuƒ»º¸ÁÕ©.)‘OÙ�šw³_ŸÜ·"Tù]¢t8šN,m¦hú;ÌÖ¥Iv´’übç(y*wf9ùÄ6Â\ŒÐñ Åf§‘Àà!—4Ã?Õ3p¥éj'®5B‘Ž‚l#c ‡—”PþÔ}â*ÉáyòÃßœF”Ð(FÉ·5—ó)„l$¤¹-/«ºûãKìÞ…ºYÒéoßê^§¿ )ÑËå`OD`wds£üs°€}»ØèÏKãÖ´Ý–ÖÔö`7<aä}ºÏã~MDì,<à™@Š›Þ×´ˆŸ@tá[t^ª†Yv=qô{Õ S߃ -Ææô±VJydFþ6Þ…éï™�³IAA‹ñÄŸ|Og¾•ff/À¬C{íF Žì -õ"#T²¢®C»¾Pèøgöå1ÉyåÉÑÕg*¥³T0ŸTÁÄÃy7?ºlþ"m§—avþ¥xDLæäàRÉN;ZÌï!Tß&©·h»¹º@"?ú(Ý_ï�ð4]õ[R¼*ªh›ÓPd32ÂCo¾…¤|Às^~m½É“qа§–ÌåÛÆå±?°Õç °4Ý‹óÉ>~ôl|�S§á‘f>La -˜|¿ÞÙ… I>Ù{ãÛœ–zó^Dh¬yâêlÈ -UúoÁÁs„¨¬xÔâî† Þâa?h:¿�ÍOëx»‘\$¾¶Æè7÷p[ ×S1œ] Ÿ^9àŸ|Kä¾=Ñ{ÉúÃ0l\ ÷ßÇ*ºR-4Lý›~AÉWLÈ…#¯ysüZÙYs{x•FÖÈ÷„Õ8g^‰ÜÖzbÕXü3=[a‚aŽ§¯UIÁÿ2Íýb{°¦ëõb;-ͱy6÷½ –æO<•G›‹§ä+Q6útbî©qþd3*;·†dNŽ›éÖ²¯g‡ât¾ØêÓ¿ëÚaw~yM¼B#›Ë11 üSÛk Æ™1A°lQö¯H”«%¨ÛBíöë´¤2º% ¡®4w=5‚òh§o«‘@ªN!>JK!8á¿ �5+ñ•;,üZÀÒpBÇD –Z‚“¥I¤ÚØéxH’¯=D%¸œ´‚Ä Ó”ÈP`ê¦ÃáCÅeE÷URL³/è~ŸmÕõÇr,K5A� ›YW‹Ð„NAÐèLVÑ3ÑOXÜvç7¤6¬fo‡VΗ?½”ô½1d˜lï³3µ‹•¾þª%º„ˆ]"Q<ì÷‘à t°<P¿Óf!od>œÁIxéR‡ÚlG=-¬“D´Q¿ÕsZMï|Üît¯—ÿX/ÓÅÒ™0�_‹"v‰ –¢'±„¢¨])]hk¿ÿofÙÌX¾sþäè™džw_hU¯ICP½–²Há`hÝ€_Ïë“W€vñüo3ìNtìÌÅý´‚.Ùvñ /ǾŒD¹�E³2¸6.ñ/)Ç;øSú_wš¦v½í0U{‚r+º¡7ˆt>e? -ü2ü -:Ö…!ŠnG!ßZ<ŽÖú[FPmÁ@‚2õ»ß6ñt|©·§ - -t9¼&Ý^úžzÅéÊæÙì=s8ã©÷Ú°ù¦PGPcf]íùu’~úª4°Pɱ’‰P¦$G*8(Ì—Ô®µ¼…Kë9õªý…§£{|YYCi˜tfTha,>4ï¤oµÑœ÷ÏT4{u¸¶§ 49Ž¶f!,thVqP°w¡÷gaO úlwIßÝŽñ{Ý1™.‡ °ZZu~za.á¡ÏÐwŸúÁkjÏO¢ŽMìP±@E ¥r] 8æ £ñh–�íŽÙüªÙÄC%gÚ%Ï?[`ÄèÊJõx›äÕ‚+@?¨8XæMæµ{ṽ™×«CEÁÆ?ÑwÍèÝÚ -•‹Õ¡ -íÜMï¢Á`ôVþ©ßŠ«B‹öC\î¾Å±Ð§ïy-7k¿ -) -¶ïcŸåÍ-ó#9ŸÏRXh³øU$BŸ+±æ+êÈ8]ûl›%ðP9àhÎÆÞÚ¥w(¢¨Ø¶{>^“ ö%PÑ÷òßæ°Ðž¿9YIÒuaoÊ:ˆ±ÃÉ«¶¾–Iºêס ‹éØѨ3&BWó¬ûƒ°¯¢üˆ‡æ[`r¶wöõ"N×í¶p¨Ð)ï±$/áy:±ï%sMJn|Ž…P?‚j}aŸÒîÍHì<�hzkú’«®_….^”~ïÛ•Fº\Ñ\À<ÆŠÕ¾±Ó®Z 8ùT @s{«WEqT Y·è·BfæSkïLæÊæI)â™ûÒñjBC§ÐmOw�-Q(ž>Uh²´hj£«´¸T°Ù–,› zÜâs…ºª:놷ýNþN §ÅÏ~ÖjG>9x@Òd¢sü×ÏCå‹pÚ±âý“¨œjmY¯0½4+?ðat~Zà{YVnd#¤Ó?¬<+ÇH§`†a+ÔKœt.²OoÅétÌ>ç–{ÂißÏ>·”j1Ìym>Tܤ¯£l‹Úñ§÷»=Pwê)®&Øv‹J+çÖD‹ôKlû#%Êì‹3ñ‡tZ”—˜˜#×ØžãnH:]°ÃNÏK8ܱÃÅ»ÿh±Óó;j¥xÒ×ì86NNÇ[.è-G-§ºÅ&n.ñ®¾ž:8Á5Ê“NŸ¹rÝ^"œ¾€.Õeø‹p>ópÝEÙ…?Ž~›©û}ÞÕ(ÆSªª3wÁ|þ‡ -2èü¤ö…÷ßÔ}¤´0œæÞFdÇ;ëêæž5}ÂjWUêO&½¦á–6X•ysŸL¢à\X6Ðí6ËÑ`¹dàšy×}ìå»ÍÇžxÿÇæsBð-—BeŸq{{¥¿¡4ü±‹ØžAË ªspÓéëµ/T‰ÿ2`¯ì`nôAy|¿×¶IGè+=õ€²‹»x=Y³Ìc[{˜I×J›Ž¡à¡ÑO¸ç¬ðÐH·C„ÚhÐ2gæ*o„¢M‡�£-Øs&$è«E‘lÒÕ.èÌårèP4ýkPÞb^8ý§ŽPé[‡Â-éÞî6êyvêP°rA"Mÿḩÿ>±P×> -Ìû&BÑôƒ¢-)æ€óÿ§+„ÎÉÐxµÞ!CáDa˜Ç¬†3ŘŸ„’#éWñè—çIŒ÷ño¦®º12Ï¿)Ê›žšò¦R/ÂrLû&|’¸ùÃ7;cú95ö' MpJq9Z–×>{�ÕÒßâüÚ£L¤ÎÀÞЬkc6½ú~á M†:X×\+(œÆŸŒ… âKQÔ1ôtè‹qVOš<p÷Ë£WŽ¼RV-zR«þtÑêcÒ1LÌð–:¬–ÇÔ¯÷9q¸“ -DΈ´úðWVŠu”©ýXŽu @æT¼¯[^}Îiø�!™e‹¡,"i¯Dò‹~ô�Y©Z”ûUïA’~8otý¡êWc‹~°&+Ö(cˆàõCÆÿ9¹bñŸºñ=8>xÂ+; N¿•æäkü)d¦|7‹pš-Sþ+.»*Ø¥îgw Ë͑žsöî¥Ì1ÙÝF-)L¯Îœ«Gòÿ0–¹ôW'¥§ë_£ëA$«�Mÿ½!B5$ÚÀºÑ.æq¡¸ÄÛ®ëß›Ô=‘ÕvôPm'Q.BVŠƒ6E*Üø¬TVŒjY®,[TÃdåÕŽóª)y-èʬ=÷Šë”3YYªý\ÖÊ¥h…ö‘ÈÎwË]Ýû7)ä_›;s©ìB½öL‹ƒÇÐí†95Ëx{¬c˜>ÍÎ÷;Z$+ -ö²éŽØòÑU6úìeæ¼ãÖ'y7 o®ÐÙvEÞn¿LÏäÝøÀ€Y¯â×j’Ûz$OòááA(_r(|¨ÂGVøØ�ú™k ¯ùû·*”Q2!`'yö=ì”|ªë3˜2õ/º$²9qÉ2¾=_iõÒc£‰Å½´êìHÁÃå‰ñÉÐÅ$k]µ6¦‹þ=¾<“¸‰“)XÚ’2Yç§KÓÓ2A]2VzêÖE‚Þ'z‰¾WjÒ\'’ãL¯Ôw¾yý·t:›2S\áAŘ‘î -ÿiÓ…ÉXì|2ný›``ç‹y[Ý^ÿÁe¦†b¹ÊFßvÙ;³éü3‹]˜ën’+éîý3‹Y*Ú‹ø†@Ëì3Ëâ:#bR&Û•ÓñGáúUð´A+u¬�š_¸rÀn`³Rè,íÿ(+¾¬[,_’=ÔÊCŒ±ïL•åÿiUS@sòíÖ¯^Ⱥ ²ð—n³º êtq^¬ ª€Iül E ßd¼ í‘ €rÕn˜Üà[Ô>³;Ó펡b3í†SÞ£«¦úM� •Iœ‹£4‹"¨ñŠXÔf˜Ã`m7ÜýRçˇ¹xxp(nðÀ'È‘öœHJ…n)�ÅÛ�q†Y¯/�çõÛû˜£_þÂèJœlôiÔfù¬ûqÏy…EþvýT‹™<øy}B¢!Þûg*bý—‘óÆ÷ÆÒRœ¶«uEŠƒzߘâÁÓÿ)™Sœ°¤é€nÀm‰6¨°7ïLÚí¤=W7 >Ûý”,{ž.¾m©Ère—)64o˜b=tÛá+?PcþZ5>ÛnVз€B6µ¤È톼3±a¯Ñj^º4{ PÚ«¿VõTÓ«¥¡©ìy\¨ìÜT:˜ë9Ö,¶+½Â0†R0±ï%ìl 3Ý]¶Ž^ -|äQ:›¬í-£´æ³-šº@¥×eó(Ë—ËA•mqô¬WÝNÂ0~‚>„Ó¹MPõBšhtš‰Ñ¨Œ’¨1!ÔøþöGXÛõ´§Ûn¸ØÅGOûýëià¯`V¦¡™¥&lˆÁêz9º$Xžƒ‰<Ïôø«ÀóþÍ -Ï=ê–¯uî"xN„@yWÝ�æý-êŒãî²ìvÔ ™Œê²ýçÕˆÍrµœê„~‹?Á™ÅƇÔÝè–aêÏ©]Ð7O¯?Á¼óK;õô{œ¹õÂ~쵃©´’'3Ñt±a1õ„wË$®ÃP6@úà´*žF¼KÓndªM e¹Wz$ßl¢ÿ¹¯‚Íe -¼$I¹oŽ¨p§ûå<ÿF½h0lse·Œ!Þ57|¯d'KŸ¿Ý¦ -S´_åëz¯ƒz¹€Ú®.{‰æhô[_¯qÇ|šÄèÞËÑDîœ#Ÿ5æhùŒ„…§Õt´|:¾)m¿ýLwÐ>}·Ø‹°Úg(ºƒ�sâèbG‘š’†ƒ±÷i„r¨ö—,p:³Ö`Á"sP¬¥‹žL‹öqL9&Üf0ì[Š ÃB*lçÙÐ -=ûæ°rR2áÓñôÌ8ÿéøaBÆfÆ=YÈ9÷²Y«ÉæšÉÊïâÛêX7»DØ á2}˜>ÎwŽò»a*Í_G®…ë=ˆBð8Ð:‡8 Ÿe3Y‹ÎkO¥Z¹PKd Ç-CË°ÅnÌš†“ méi8 .;”…àÆ7z¨Øï’Ž¿¤S7 )˜5‰OŽ¿ýÞD%_Þ»Á^}¿ŸÃFRŒâø¥bGonÕN³¥XUu‡2g!ÁÉ°lÚÓО…$,¥a?n—Ò°c·ˆ?�1Ï/Œ endstream endobj 33 0 obj <</Filter[/FlateDecode]/Length 15232>>stream -H‰¬WÙVâJý‚|C˜$!ˆŠÝ@2´€€ÐÚ"\°iQÿ+IUH¥ -á%Ëâ>ó>û<rùåC”Ÿ®0ßJ¾RôžaÓ·ílŠ+.ÕR*œ{ÚæW‘i—+ô'¼À§$ë×ÂlÛãùl\ßå'R4JÁ¶Ž˜.Ü¿æ…ê¸SÞ²‘+%b%azøÁ°ºmûw~¾är\>.LJùev9Õ6u¸f›Ë+£M*\î,—$ø×¼Ìê(‹€‰_x°?»bÝÌz˜Pé¥ ¬ `Rð¦Þ Å›KrÆ2j,«?ø¹É£Q˱«ØµD*ÙOØ`X(ÆÛC€Sj|^^䯕Á�Ä×_Ru„—K –½S"Ö)¤#Ü“•_EoWVzéâ`˜Ð!VŠƒç2°2+³Ú#`õSýË -ä¦Uý÷û¶ï‰qëñD(Iq0÷ÑÃ’š¥””¼ë{0©Š/ä€bXì‚¢Yô‡ Ö -‡q~eP€a¾ÙÄÅ¡?D[Iøó¨¥Òú¤ÃðÆDVfêâÑÑnaµ—§KÏk7—ŒN¦¯<à/¯Œ\ÛÙ¬ÀhVÚlò÷så£?1l90ÝÉ•ëà—J7ß’ðÛp©Ò-\Ë¿+Ãnù·|›ï„J©˜ü¯T*òu€=¬L°WöÍ¢1†\> …ÁwµÏ$¯^U6Ð[}<Ù®ðÍ«¯°Àç»ÍæÖ÷””o·V–Z¤Q1öÓ/«Wíln¯ÑƤ•àrÌœ»ùノ0löbco}Kw£éá�oÔ_™òX£ ú•n± µ)l4`ïÿ5Ç8£¯F•Ä52•ÓP(`›Ý¨YNµŒJŽ§óÆÍÞ¨ò¤×¦‚¶Q†Ýì^Å$+j”»½ùì`Œfuf÷ìn4=„jjLeIðg -kT¨,»]¬ÑPc6Ÿº±�³3l¬êÕ¯ö�oTþõ¤`Óü’nFºQs#£±¶ª -ÆÕ4¯ÿeöy–ò»†¥ú2ýÜ û.Ú2¾œÜa42V]¸fê`t+»a~*AŒ= å6صå¶ÁËz¶Ö&©=ip_DæÕVh‰¬‹®ìU–›D°ûÚÞÈOe1V|¯@>’tÝåÊê[¡µÃ¥ƒ-æíäÒ8®z¸´ŽMïëçVªË\~q}ïæ×Zao¥×LµƒžnÚ‹'‚u‰aQýKά‘<…}ØÒ1ìQy’ -ýn“6Ov–ŒCòäXôpŸÍŸkòäX‚Q˺Kû+éûý´$µ&ˆaÝ"<Œo¸:%>cöM§ŽiN/—F‡KÐ]y\ÒSÅß×µïÎÊ5Éå×ã+’l>lW£ÇІ}‘EùªÎ>¥2©÷P,×ï·vÚŒ]é¥,¹¢5¹BD®ct©F¯!VèšPÖLE1³ø"S]´^¡éuyõvH{t°Ž³ñ¨‡Ša÷qECzTîMjŽßq™W¨œ¤¹’fdÈ–äÎ2yk~úļe#¿?CÜ;Y»Úž¾}Ó¤ãXORKMÁ""\- ר¤‡IjgWÀÔcÇŸ½{—F~r‚y1 -¡`ìçDv©jå€�‘ßq¶_)jû«àY3…m4~¾är€å¸ñ0¿Ë®¡Œ™ZÏ,±¦tãºÈƒ8YÑ#ŸCNLÇfuJf9 -{+~¹×wqµ%)Á}Ö»¾Àù—÷š¤ Vc*²öŠé‹‰èÒÌïæ’a… ¦Ñ–Sœ|»tß1K‡ÔO«¦‚(ß»ì\Úú]ƒy¡ 1YýY[Òƒ%÷ÌŒ?_Â93&ž3c©sfL:%Hsš7™?] ¾ï›øoÕVë'hÙ* ÅÔ–¤awßñUÛ«Tl� ©D H„£O·Hdç¿UýÔC´åw½mЩ¤žq!R�ò*¤`I•ÆåD˜½ÏúÞbXR‘•þ’òs•È©â`$’gŸ˜ŠnWbÓá“„õ†(˜a´Ò´td!RÞ8Tdêúw»ßûĤ{t2X>úNö:•Þï(Ò±* !=vGžxJ=ö~§O<N3ñ OÔãj0>OR¡ßm~3Ov–´©TZŸçhòÖ¡[í_ö(§€KÃÕñ.Y»uê„~B\2¨úßÍSªøûºFÇ0‡N`–xÍm5œl@¬í°ÇŽkÅ0=öYå?ªb9*¹·½Ra9Y -f#A”a/UJ…^s*tk†ô‰Ö¶Økhÿ0÷n|>k¨B§ ¾+Apéùâ ÷.Îa6õQézÌb*#ªhHʽ©@ÍÑᣠÈTJp@×kÉ»wŒÇ¬•áy Xy^ÛiA”ÒQ‰q,Q´ÜfZ´Mª9¬LCÙ56;èÈa²ƒÙȶXÖbáÀˆˆåUˇ¨Är]˦÷ˆÚ»²m–D�à,`XŠ«E*ô.ÃägJzoä:(D½qjhQ·ÐtKÝ¡õƒ•GןÚ~:Ô|¦.O Èç Yœºð¤ÙB½8jp]¯¤º½å<p×›hnÞJÉ'r'ïç×9½F¤{D#Ãñª½‹Ú³OZu^‹nð`©X_R-µ¦²LáX@Ž3fñËe0Œ †ÈNgQœ™�ʱí¾ÓcZ¾ÅÓ{¬¤e1rê’ÑQb¤êSâpÞ08ñ“£2z,Aí’±«à\JR±%•šÑèáÞtg–59@õyh0O…ç¦ï ;�£#3xwáR©÷XŠ§©¯öðÚÔ…Áš¼ˆjØ¿`+àmvé-–‘ãr…™øþ+Ý–~âÕ!f]B¸éˆm©QÑ”ÀV8Œó+u†ÙÙ~ðSÈ�†õªƒÞ7å„E«¨ÛÉ8�e¸Â¢0ì8°Œ?Êû~ÑqðcøC˜m{¼ÙEDF»ì2Ø…ççK.·_²$-oŒ¡üœ9Ƽ+÷åWØ1t!ÃâÇð-¼¾9†(�Ki”ëµxœ×òý8Yúgþc¿y½ê8cè@Áo±þ)cˆ Œ6{i¯ƒMTŠk¦\–Žw ÐâÓ>é “ÞMÃc;9Ú샇HC~^T\Ûkì﨧óØ#Vè-s2ÇÞbBÇL¬7(ŽP†õ:]ž×R¡ßmR0•O‰þc»|Ž+¾W<«O‰CÉ¿n({ÓqÆÁpõä¨ÜÎCëâ‹#fA«%»ÆLx+%Ÿ`ö…¿o‹ñž×ºQƒÇ<Çp´9CðÎsC,nATO[*`o1ds£[,Á‹IDÈqb*GϺa:ÀÄ/<ØŸ]±Njía)Øô&oê Fë83–9Ï] *Ùw=Q1w%†¸žr/¡]épŠ²#¨„!抃aÂ! Á»ï]B)'ªNLº@JSAœ¼‘‡Z,U̸JÉ&íñD¨oq°ð>‹(`oXÆÔ¥8XÉÛ×¼°t¿b?'2jËžIùB¶ÝÄnMf¿}G»‘>&ª0z¤lBAË(Xh=”’¼ÇÒ;n9�—ÀºšœìÖŽõ€[¶`/f¿Û¸Ø3¤¨~®“™û"à¥/>ð½Ôð%®#_¬~#úâåΣ/ÞyðÅGÓ®/Öý™Ñþjiß•|‰úèBà‹Kså–Øájð]ÿhËæÕWXàsƒÝfsë‹$¥ÆÛåJ@£Š(h ¿¬^µxfÁÑÆr×Jènªáàr/¿€jŸI^½˜3ldì,쎦£Ïx£þÊKkT¨3÷¶QMÃ@f3à—t3¾xU|X£ “åÖ«t+&ˆ>Á<3 "{Œ`ƒÀ ¸ ”ˆAøÄx *ëûÝ=[wÓ5Óüé“CÆZn-÷Ö¼ë¸Í2NkêìhÕ³ÿXxŸi§¹û ïÝy‹QJ¯º®ºnNþµo�§ßÞ÷Ïö§b§¹ntªhà¿tUY§©ês8=RµI²3„œ\§æNŽ0�§ - Óùâo]†zêQ[äTÑ0ÀqàpõR窊Çõ¸'ÿ² -q³z¿37¿ýå:’±¾= I|7_õ'šµÇLòÄY¯IQ{tÑ_ÇczT·-ŽÍºÄ<lSÿ@jõéÂݪ(ÐÂx©ŠøZÑÄ+µ©OuQžˆÔy,uÑ=Œ‰¤ -é|Ʋ˜oPPHsï"Àb΂ßØð©Ìêß̺È÷P¿˜÷é VqjF£�NÍ‹’©Æ7Ã)öÉEÉì1'žèé“=æxJ`-€¦rÿçÉÁÎúé$.2E«qÙ>H½EgòCê*!º_H…ØoÌ•[‚ŽCJíj^RoW¹žTH䨰¬LYÕ÷’øÂ^Zt¯vãSï#M.Â?ˆ+Éáw9 ¥b•ÞíÒû .êˆw$èc•†ŸD&Ïౌ]í¹©ác’ËFNW[¦ÖS¹Ô—õSB7ïe)áÿ²§“¬œ\¸ý„jî!ü¥*SÇλRFÍ„Îö%]¦3£7ó¿°LX¨‹o <µàAêw|pŒo£§q"a˜ùâE |5ó¹+å˜f˜YyO/Þ0j!Nk]!]XÐA¸ö/„fö'v…Ü°bm¶ªUä¥?‡Œ§FËvr-®avˆë:C’$š-Íäû×Áéº``.U³‰í"c)g…¡a©0×ëú†ºÒpMR ôj°Ãň;LEå ýùäxéGj^ÕurAŸ£àÿ¬¼E äj58yß›!–C!ÂPHç¬ Åí{:¤5iÖM%® »ïƒÉS¦~yÍ_)ÉÍ' -¾s¨0bÆ|å’\\Š†%wc›j¦MKï±Ì.ËncÌ¢S«Ñâ¤íÝ˵ðßÞ–ÑAÅ«‰¯¿°¸{0—y¥7© -檆õ*O\±ödL³µÀâ•2€ë¬ 2Ýißíü·–y^•"X?ø±*”ûO÷²(œn‘v†®×eQn‚1p¶p,•y½®UÂ$5:Á+D)XT_£óåÍ/Ž¤*ÊLé±/Wñ] ‘D¢5™¶gÁ übÃÁ‰Iz”N(Ç%D3²à¼‚D))ÀHéä)ÔKaÁ€ÅXÙWbÐÂWÒø’=�ýŽ£Ùa¿ä¶…¿ºhF£BøŸKUVðø¨‹K/uáwMrêb|é«.äp*î®E!/pz÷¥ïõ05ÿשÑbò ?9!ñš_¾/ùÞÒá®wHŠ&?ÎBr7Š½07ÇéH~ÀQ6’Ÿ$Ù‹¨î^D¦=Ç€÷IŒÝØ(Æl¤–¸+uó®„û¨;°’¿În*É‹é˸ÔÅg#æ>Þð£ÔÒQÙÔ¨ÌvèG=[ìüºöH<†·:Qýf)n^œÎb³5:¤³êk$¤h¢j¹ ¥Þ¢³G°wìm¹§“m ”©¾R4–Ê7æWnEs¦ÄZ¸ƒðÒ�Ð.üÑQElŽ¹2oQ‹…æ)ô§*Úb[y:p%Nèû”ÃÎV}ˆTï¬ý›¡ÁKnjÃ8K*Šã‰ûŠîiƒÝ@%Éíð×…»Øö©9ÔiÏþZ¸±ÊîOEƒ;Õ<»ƒZ]¤ú6\³n™x®À¢È�ã·¬m™ -hKóct¾K M/«~÷b䓳|-2v;ùñÞ›êd‰.5ôD±Ò÷‹-/P ¹™÷pu««Z)~a$v–µÏ½ô&6uºÜºÇÚœnݤÇÎŒæÆ»½ É`uAì°’5ø* V Ês¶¥¬ß YÁÕçì°'¬Ðnl«a3lê¹-!c¬ÔLÆ£Ç{ø·„;9Ö-¶&cÕBœ<Ö!]<†ãQJbe(2 -Û—ZfwÑÙsu¹ÿä…¿¸¾Ô!y@+!°Zß´8/è××è â%–™³Ò›TEVÁ9µ‰°ºØdâÛ ’éÓ¤$±b¬Ò ð247ŸW[Î~çÔïŠ&+Tñ:•œæ~ÁvÒû¥quÙlZ©</× -ÛcAìñX'vØ1ÌÐv⥘Õ@”:7ZiK~k/õ¢]øÛ;‡_ã"-¿>†Ý)CÆÖc;ÃJïrÒ®¢IŽa'ÐrCˆëÂÛÉZ¦ì!Ü\c¼Á1”Wã˜ÅãŽ!g]¯[!¶Ã!gE‘·dÅjœØñC9iO™*ýÎ×]SІŒYÚú‹(þÆžˆjrá+^J£cÅ4³4¾Oöêͼ!·Ç¸K{ki™ƒLeMær”9ÈX4¥h²§Â{Ùð@ ªÏÜDvn{h<UïS}I;Ýi h °Óó>ì$£é›l@ÍKƱsž-ÛI«‹j„—P°ëSøòÄ-|òýëà×%^‰ËŽ!š¦fœCô[&02„Š&7†ý¹ÇÒ2@ÈÜ<‹=â\j�‹Ñ2�?OÞP"§Ã[—õ49cÈ_·{W½[…âý–ÙþÏa06‘˜JU±báîzwež úmé»`¶B,áÁ³Œ0T„Z…]‰Ž�…¡9ûŽ4.Ö¥!úm[aˆr!¥-=¾® Ò2«À%‘/ŽèË‚,{ ÇÊá‚U -‚$-Sn]ÒŸ°±çU©áǾø±Lå¾8Sø®´e#'+?cæ"ñÝ1—5%61ªd?!ÁæÄÞ0bzèŠHoCr@;Å÷Ð^äàNïÙ·ëOΟÍÈV ®óyf ¡cå"tXÏwCñ÷ñ/üœ‡þKÔCñrë?‰ìU>â”N炳þÕŸ‡1#"ÄN[GïóEZ›Óó©f£èë‰ä⸖g -yÏäõñg4•<}\Íç?Â:ò÷öÃñ§b�÷ÐÎ Wæ«—Ä¡Åûœ[âôàGæïàôHUÛÓOb§¹îo‘S|Y ·‹puœ¦[’qšª¾Ý܃Nõt½ÿäô•8¥X,âæº8¾)ÝSN_u]u.Ô÷QËqšåà=›E>œLÄ)žJÓí^—ΕqŠ�>Í€NSÕ|êpz¤FZ™?.‹Yn\ŸA§ÞEvjÄ_:œS¢`-·ÑQìû»ØéPÂËéUt:_´ÏB¿ð¹†ÎŸ1Uåm÷ä_V!ö.~¿~x§hæ—VŸ¾ÔÙŸÊãïwßÞ¾C4‰“(‘Nîýäd§õ¯—ØÇuVWsx9DÇOô-ƪÕ1q–¯EÆö}*³Ü¼~àÜÌð>ZŸe|mUé_êÅ5qCžÁcûÛ–úSÙռܶ”VH¬ÜåCÂR›Rì{±{1ªZuA“}H+]Sà _c•Fœö@œX^Ï°¼'NäB8¹(Ñ=Æàt²žWŸÇ¥·@j4uȆÙA?¥F‹ÉhJÑDBùn˜wY 8åí:RÒ ‰ ¶9èHá=íf^NÒ NV4èBáîvYíYÕgÖÕŸÊÖ§îø -Ýð¿Å^ötÒ^b™Þ/½¬»ÄÐ~"VéuBþ7+yZfjû?‡á†A¿¦W~7«Oj‡*˜š¢¹ò<5j&t«n"”æ‡Vº™Û•V'›5çæw£ZM]Vq;‡Ý–ä1:×—L™ÊI‰«…ƒ…çJL¾“«¥B<bŠR°ŒMé$_ÒÓ52Ì̸ #èt™ 3¨:Ÿ@ÓKŽ« -šÛcúS\Ða6,SüX£×ŒF¹šâÍ«:_§åÎ>ôXßf@\™Y¦ô;_w“têBþ?^"»/n=4b–\´/™Éñ-½§7$ô·í9§Gl¥D‘à /ÝvÛâbÅó’»õ}5Øè6EquqMŽW~L».}E3‹‚†DâÍÜ–&XyµÜ$ö 5 5Îõ®BŠòÜ)Týð¶÷TJýU”í6¸~Ùbç×5X?Eº‚¸~sG™k1֘ߙ"Wz¿4®š¼cž±ô í -1v×n•$Ùh»B,óü?ëUº–:CŸ€‡(kKPe“]D@@dSDEeÿ;3ÝK‡V¹úuLr’œœì3kSóŒõ!w¨çE§Ë¬Ü/$}XÔô¡8·–>E¼zÚt¥‰E¼tÔ�&fÁå³mìyñèšôA9Ñ¥)ªRÚ¥}NW ëØ¥ýD²¶´5‘ÚÚ’‹²X Õ8.´cž–¡ÛÎ’Äâ0ãh±T”b¦;"¯JÀ@5á°eŽ#pH`¼%è>¤”Lé4Š: È$}™œªF$mÒ¶ŽÊ¨žÒtncRO°_ž·ó1o‡‚à $dÓtžr^É(V†�ÿgÉqþŒ»Ÿy³(Ù“†C-ðYÒ(CÑ–¿& 'rÇk(éxŒŒÓqBÄICIR}¥ƒÕô¯%Ûa9arɸWÚ:¥¸Ô[ýÊ%)ûÖNýž]m\¾ÿƒ“q-²TJNš»÷Zòæ¶Wr¿(mqµ3ï¹i¡¼?¾R:Ûr¿¡R2ªÂÃ=_n+~â\ˆx´W¤ -›Š;<ÅÙŠPFXѤ¶¡L -c¿O¾È3•!ròw9âMVª'†¥M¡™·W<:ýèÒ$¢f“QÛ6*Æ£"èd”scÿþ) ø:¢UŽQõ)µ#]f°Ÿ$'Êð”ÁúhÎu°ÀSˆÀ˜F¹%0hšË.'ÖÖ=±œlèZ:U`ìü¡`_U°`×m‡I Ø+fÁn³Ë\'î}vàIpø"‡{KùMNA5‘nŸìsé“JüßU`"*USh¸ÆŽTºEhÌñЬêÓ¬.*SóX…êæ|¶]<j>@Äì[×" êW$«ö¾±uÓm_ì÷ÀÂ2Ú`XPWÆc¥zÍè¼eÃOö•Lê_‰¤‹ˆ#&ý‹ÞÙƒY‘F]÷ÁAßÏ$ªdXTêQ$ÈsÒEö[ø±Þ‘)ê±Ðcu+2ö«ig]coáÔË"ilEë—¿Ú :ðÆåÀ{rT'sÿÑŠ¼‹©¥-Ï’‰{wK2và’É”n"¯ô%0f˜ÃÉ×m™75sç65UóëÛ°uŠÂ3›:Ôüö³‹å«_äå_ìED�ŽÉƒl×µSà»Ä’è°Ëw¸¦œ¯ßYþQº«›îø킵S%¡šœiK€@€dLü½ñ~pŸ(ºm™ùO¶ƒ³f“}‡vz«?z£é1lǹŒ?æ¬)´-W·%]ƒÙ®ÍËUdËh0aI`H|n¡%ž_²Wʈ-]ŽÚ0?HÍm˜d¨kB<ňmØ[ý± uåüX×é‚^5Fî‘Ú‹œ®ÆÞÏ©…Ö15¡nûµ#mèt{Åvþ܆+ƒµ“)foç MV\¥=66Ý7F4…´e”kêJ�Eˆ~Ô4t|÷˜äIéÚRGùÁ¢ Q†Ža²MšÛS|´’9Æí• t,ýFæH•L:ИP©ž²ºÈ5IwZµÓ˜Jp‡TefiÅåØŽÌ|þè RãªÓùY™xEû]ÌÖŽq=õÞpZ.¾K¬U|˜2ð– ?éYw\N+‰¿»¸¶Àá‹uGšk˜Ñæ° á»ÚPkBÕÓŽÌc M1ÃäÖC™ É›(â1Ès˜(Gc^,‚4™~ˆyÆž÷™Š]É¡‹l,º$š‚]éMVªvÆ`ì;û_{%Ìe‡¼¤šM˜_O\Ý£“öw¹$hzìÀ)“4t ÅL·2 Cøn(M4÷m¥á1a8Ý!&… -\>ã@!N䊥H˜z*@—'”z†¹8¾yLÆày½œe^2ݵ×1m±iJžo¦y‚±r¬azl:q_³›š£}Њ<ÔX”\‚ÙdÔvhŒ0²aÞ4òŒ§Æ±¼Ð¸é9¨Tc¶ãZœí‡|Gò\ ±y[J (Ù�oíí<eõp´d‚—ÍÊ8èðDó5±ö6«ýëi…¥âEï§t|qÜÈjm¯Ï˘ýÑCÐÑ)–l Ÿ¬Œ¨bLþãh–ÝlRÍk~wY¾.Ä@ÊÃ? óÛX‘m5&Ê7`ýT�ºG†Åw*|õyÃ&Së8{™lö`ö[‹%Èç?yÿ%@¡rŸ…åGÜÞÇC Zª@õûmî¾fïࡉƒVé£ÚÛ÷7л/Ð^íÁc¨Cƒ>×fÀóÔ}†Ãî5#;0Žt-Ç5ú~³ÙäùÍv°LnöÂOg³]ÐÛÀ¹ ‚æn³wÐÇkñ®X¿]wžûs*è÷uÞ‹äWÆ×x¸-ûß>·;Î×iÏ׋¯û烈ÝÜeFçλ|›ý˜Ús«h}ŒSA8óP7…V˼³Wø®±´ä9/Õ-ôa»¥¸÷Ï*Êô¢€ï.Î¥Ÿ\5ÏÞÙäWM1k°QÇ~ Æ—Cf³©‡Ø#‘F™.{ \ƒB¦’…·—2¸½«o=ói8RS0/Ò‰©už½º¨?¾0¢à{÷ ß9m¶ó²ðw3ÎÔMÆöñ -þ–J½Ã¡éö—ú!;?Å\Ö£Tˆt(¸˜ä(ö%tO…n" ŠË5o)nôÚE-ŠKVkTpíñMÖr%öˆ±EVbK¯Ì -ÉìÇ„P,£ëd•Úà”òbíÞ=¬n>OÁ»ÎÌa?àî0þoÄÿÞ@‡yüˆˆ–ï>gAø"ƒ´åÕöy`Í¢¬ü˜ Cè1$?V£² Øû»üËb|¬n¾—ÕíMåññ§¥naÄ<UüŒ7+A6Çùö._.–J—õMÕOþ$h¯ê‡°þÃüJ9/UÕ÷¡UF†å6ÁÀ4y¤.h:¡¼½fÕŸ…ü0q©|(„´©ÚþÛ*/I#þöÀ¶ˆ±»uzS1Âtè›`ñ^yqjø¿…éJ@8݇ÔÚñB6¡Ñ´¿K?y9ËŠèÀ½2·^ŠwøQ6ûÒä¬õ -,_{XDà×'çEdÎ*0°t -`¼@üzðå¹83¼N‚ŽWOp°`¥rÆÏ¡ªUÙ·Å+Sì¿Y:{ïÙ^²í$Dì,ÕŽÖoΟ_iÌÎ"Ó ä¬öžD5ãˆ÷òrŒ«Hdö¯%ðG]©ˆ¹âU½K�åú%—&œ•¹—»¾s_mQ¾Û? ñ°óÌd$߉s”ÚǘdbÔ¿Fûð2—âèJzüßѾ)ÙÇL÷]Ë~_Ôù3N¾~*Žö£l¾Ó-¢X¦ºXÆTuw2’níš™¯ð<xÓxy«æ*%êAÛaÛs4SRïûÕ‹,ÀÎÊD|ûÒL9ô™ÇaDüb;*µ½?ù“ïr“õwùwïì Ü_4î²çBîËýrÓl ùièúÊ€ê¥ø¼}Wzc·:“XÇž<¥Y8 ²¥*”z’Æã6uæËîsý¬›ó¼îóÙ粧ÈÆcó¼ã«¹4+ÃQ®â^w+ëÿð×RkïwUÚ¨÷.¥$cåoÙ[ˆ½Ä w«ü%„:ŒÊ™†ƒ-úÊ«©ÀÇsH -1FTÀÀËÕ ->ž!à à Ň¨Ì‡ zðáu‰±eJ¬ÎFjìYãëUº•:³DŸ€w8 ™Aæ@�A@Q'dZëûuŸýV!¥‡ó'+éîTWïªÚ½+š$r ȳÿn›ù0È^Óâ‚:zGSš|R)ònRŒoYW÷XM@LT%ŒxS)œ$*ð¦%»xÓŸÎò3ïÜò°šä¯<ÙÙQçq‰z*Õ¼²^ú¦QµS”Qx]`Å„äÙZòŒŒª(¦u•l_>ª¹êÅÅ¡Ò7rçzMw&ä²S™vú8Jââ¶CI$Al‹ˆ,,—rÁc^3çµ%Ôº‹’ûx·ñ¹¸×‹aaú3EìÎd‹÷G;ã1¯7)©cv^XR‹[X€]{-‹u¨o8ùÀD·ÛÌíL<s{Awà¼Åëc Õ¾ùYµÒ@& ƒþ¬#“±›õãr½¶EÄífOtû‚ä|IýñLURÝ-Ò^7Hby©Àºoœ"åE½=ì@¦Ûzò°¡ìehˆu&¨Ì”nÌÈÏeú7àh¸š| íí¸l¬ëHÂë~Àt|MøðœåxÖ®ïµâœ"–竘0”7²÷¥ 8 l*KXGí¼™9¸ƒ_%BPXŸc@'ö×n¶ýÆ„î>‚B¨¿2F6Ð99˜Wã ,Ñ.É!ºú+!¿‚1—·8±A ›žp@ öÿ¢ -…ljDSšúVûb(Wjw™…R$ ¬ò½¾7ò·®?È>äB‘M2wï%’‡ýÔ„;?ÉE^Ä<ìç^|êƒô…c`—LÈ¿=†êÄÂÃþ(â÷r÷•4«w&ÄL|JQ>H)@ìcÙ3Ž£&†™Æ¾ í>@‰t²Û„n›8ò9ÑX{KUsorÖùçÆq“®³^õýàp¿Ï1þ÷9¦|ÕÄG´ßçÿû}ËÄ;¤vŽ¤ˆÛÄá1~�åaŽ©¿Œ†òn¹bÄÜH|jBü¡Î-¦‚ùÝh(‡ï¤¾_¾rŒ_%6ÖüŠúÛch µÿé1ôßú`|åF.‡S§¦@L¬ÒcÏ„þ•;ÀÃ~æ….þÖi-‚„.5#>dK]ùû1>½‡tWJNþI‰ëÚþçþ¢À>`˜ˆ¸ÿ¹Qd«ˆ²ÿ©îjõÙwå ‚‘0mb¸ñ…:dתI‰N[1o=[™ÄUq5¯rå£zÙ>ž¼ &4¢ç¯Úk> ~4e°Ø4±Âµ7à^Q?ÈiÂ4ÝÚØ]îé<÷º¨sÕËË[¡Øé–ÑÛnΤf©€u½•:iÊÔWn87HêI„…ψ´ß4œ9ˆZ–H4„;'ˆUå BßÕ_7éo–bw]eU(ˆ,tW®T41øôZ¼Ÿ.㪒Žò;Go´©Óã¦S‚kbè7Sö„)9"{¢Böõ_%;’ý$åɦΓ²Tówc‚k1tŽ÷» É=ñ–@™\‡zHY¼KšW|T3 mÊF¦ÍlU¥™ 9ðváŒY§4$“<î;”çÔ(†"(€]³¡�Æ \úá³áó… CyÝÀ@ßPNϧü}üäKúЬ�ȽšÌ½ËÀt%”a2xœÛV²~9ha=l:^êž±�ë~»Ôh!ãàãÜüªÅ÷ìy-êÁ´·`[äObgñXÉÊ'…Ê8ÅàÊSu5;‹.t':?»õÑê ûƒñ.›8͉QCÂéNSwÔVpºÃ[WÕFµ -o}&ìh §ãb5öÛ8Œ ÐÀN[Øž»Œ‰%tú÷´¯ÚomçÏHfjiêÍtl¸&ŒqkÝòýª~wºdéY¦¯G¸¶|Ì€L>žøóéÈjäg1_¬“¶7mmgê8Ø7Éœò!ýÆ'ß(€›®¼Ûôž¦Êf j%-ËÁÛrÌ~ëÎJHçœoóvü¡ÞD6+ħ£É{jݲqÓ¼¸]GÕ“’XÝQÖéª>zïÛœÅÎg•§IÁq‰¢<.*XÙ\P»S/b�oN½²òìmH)¨œ¼¦ˆOÁ’ž„ËñX$Ì£*⡲ÁHBÐÊþ—4¢!qG…×ðO•sYò‹uÌ.3òD�WhBAyä»{´0™AíÔ‰»šªB³I/5QßÙR ÂMv´éX[Cœ[J‰vÊæÝ47v %]SÕȨšA‹47å—G DB°Aoiü:G_2E2FxºT!KX/ù™wnieÉÒ¹m—3-Ä0g`¶†×†ÿìiO47þDã1íÒÚÎ&«ÆêùñyþGô{”\EÓÚóñÂZM&“ÿ6…Åýöu2ßüIüQrçf¥‹&÷‹ñ–£íî¢;º¨³4¯ÝÄÙî O™‹M¾ð/M˾VjXxP{iW9¤ZGOLðíbɈO/Д1½Ì2âí¸ÏˆºuÎp嵈>{²Q‹3€þ‹O¶w]Ÿdl6 -ù -“U~[Nk—…j…9·gS,„âw¥”‡-^æ'¬²~L*åÜUµpeuγÊF]àKš\×hTv=v§Qâ2¤P¼Ñ“ÖÖ«•¾ 0|²f$%Ø?§8‹¿S‘ÏfÑè #œyëè|u4‘a¤œ1fÄÓn™ -}p‹—17Et–šs¹Z··v*6Î¥yþ¦‰¨R:KÊ“¨ìÐß»²Sð§:Þrôíe‚Ñ2¹WÕ‡àIç²@?R±e BJ?ÔÂÔÄC;±±k¸¢:wº›¿$<ì‡Á™0üÇ9{¢áö€2T)å\á÷ÎPVxvÁS®½Q‰P -A‰]¤ØnÖ/pm”Zþü¾<�ÚüT üyàa¿_ Bû†ÅÊ*2?ÿF Éô™@ø7ò�Îò©@ø7òÀU/ï -„#<ìÇÁáH’p_ã jJ¡ÊˆÄG—¥ÿÐÑG@—;ƒ"âe—áëWåÍm¢‰(µ\š¹`øçYš‘æg׈Kãè^ðïÌ°#4`©¡:(š‡±%‘+çotÑp)ÙíT˜sš©]ÄÊ�±¥@Ù7[Ò+<¨³Ì ;bKSQc!ê7ÛdEyînd"8žÅ„€ÛJà±â ña÷ ™N½z}4ц]¢+‡Z ÝÐ8àU¬€R‘gÙhJ”ƒ8ˆNvbFuÔlú–·Ù0Á£Ü8E¡‹bÁÓŽ¥6Û©*…Ja„X]&ŸeV)œ$*Øi¨„<]Œ]jë8ðæ”2à6‡¸@²˜8ñ¹éܾ8Á‘ó,N¯ÿ³^]‰óZøô?Çb¹´MÒ¤i‘«ÜGEQG‘q•ËzÏ|9¿ýì¤:#*ïò,–µIvŸì<yöÎÎç¾Tۗб,Eµ]î2¨W[38›§Ç ’i˜%|bO èuç¾ytàî‹Yš!ˆÈLŸ.!Ž$D€Æ«&Ñ6.M&™§¸ôuY0÷†ÅÉ$mHIÊêƒèÞ¹ ´N‰ó%¢ím—ƒh¸®‘�{V�W:UL§4ÙR´'"ìAé²X·î³í²,„вR狾o/‹¾ó‰uß'ìítúZ -VJî2_¬™Æ¾+š_v :éÝÇ–(A"b¨#¾ø»íÃw~ -š_gˆ¬¨„ó?ãù³xb1QY?=ÉE‹é¹Ë‡1òàïÍ›#X_g{0ÇbÒ`ÒAó�YÍá–ðæüÍ9ˆëDž¬2àm• È<¿”<Éiõ›íÖwZõý W”øyIB7L¹;^Rp¦�¼‘Àîû$ŒÜç y;D‚–Ž\/H ÖŠáÍhE¼½I(YN›KÆâÚŸ$K‚I ‹-Ù€‚ÌLœû¾úç‘ :½Œn¢ƒ\êh{/¶¿¤ venýj/(0 E[‘ð—Ðp:Š-XLá7¤do@žŽK�Øý Õø -o%6õâe-DJO~nEÓX…”dì_/£²6Ø÷¢2éÍâŸÑ4NµÄ_�c›2“ml|´Œ~úp`_>`¿_B<ÑÚelH%6¶ëXL·ªµ½€óEÑâ—û%dYÝ{‰–•_xe©ÑÃÒuXçýÞÎ'5Šþ95¨¹xScïBtóè³Ûù©Nch{CcC4É‹øSc]n~f7pò.c�m -Qml}®ëä¾qî[ïC×\O¥ðAÑ6Ù (0?Œø÷|€YªÏ©Ï톨jߧRž/ï-£fTþ]l¼òÁi`Q"6j¹ùÀ‡IÖ¡¹Fgf;‚¸éjŸ;nî‰Å‰ü®ïøðŒßÕ_>±ÿ·ƒmn|J#c®¨eËN¢0„S\âoúð:[rõ\¸YkæÃÍãv!ܼ¸Ü˜±m3nt7û$æ¤Òáñ\>nÖ*Ùpó¸‘7/ZùpsÐ)„›Ý=‘-áƒ,†uYë’ìV)\‹XÍ5"ZÊ%zÒ¼_m¯¾B•)ÊSø"o,¯ºßán{;•W!¨o¿üsè6š„ûPõL‡x»¡ž(%µyE¯Õë¸ÜM¥ƒ»hs8.F/²:#ƒôj·Idõ_yÕØŸ†øÖ¿ÖÚ¹ö–)¯™ðˆjþÛmCñÍhÌŸe¶,ÿ©„l’LëEzë7¯¦Ã¤|[Ý»Äy—ßmD&à÷~ØM8Å®—q9 hÁPQ»Y%Ãß´ñírÀÜe~,Ph� -™Ÿ‹Ã˜\©È–þ²72‡d>Xáç}rÙ²Ï!4¢"g‰’ûHl‘<|d©±ã„oá,D~l,¯.Û ½&úLßBEà£DN/M„Îe3€ac4<2áVr^IX'#‘N“bJ^sjú³ ض‹ÈÉVNz±n~}Û–ÚYÜ~ôG¸ûœ´@EûÑ`UËGш·èÔÞ>xÌòÿED!<l}™¦í]`Ìɶéa_ÝêRîc'‘@¿ç—d×+y‘Øüv´XøYH*¤TˈúöÌW7)]Ô±”½¢‘Ò Éü(=´Ið6¿ì -‹¤ë÷‚7rÇó!zyxòDz äÛ›·|lrëü\íþ ùs½{ûkáèM”¿ujb-7¡µ\ŸEŠâ^¹kçNg½ó.^8üh”öë‘ ÷k.û{OÓ¢¢‰i£Ë‡l¶d‘ÚÚ¼>\Lzeùq%m*½µ£»—,x+õï—vv`÷í± ½Q´?ÍâéU¥ô°5(´N¿ï”oŒü¤½FZd}eš†¬Ù³S)“7Hf•8¾’Áy+êg¬ Æò3È0®â>;™“¸0J&²•ùƒÌTû -2ÕY¹ï'¸Tˆ-©é2†Ðp:JŠfÜŸ -®µ)— HQ™¤tIîK b1y òXÑÌzÕf'lu?†ËWÓ*T,h-R¡xô;%¨#èC_,<ä@–ʦ®§-È¿Ù”\†ÎÉټ̑z<³u±›ýÜ«ŒW¸Ò×ô“&^j¿ëë@0+«fâP¹ýÊúyL•P@3ü&Ód/+È^ü[x=*å©�6œ‘9²Žòq`û¦³Lÿ›U@�…:ƽòøötøŸYéi0ŽgŠ¦AÏÉp6¬·7¼»7ú¿‡«þÁO<¹§b⪄1h0ÑÛ¸QôF¿§â˜Ú+H-”g&³Òý`vÿ4îO~«)ÑÕ9h´ë%5¥JûØïª:8„z`#1²`œì øëü#^†ÊÜÿÿKð×TI&G˜zsä¨ÈD·™mcæ0L1—.#Ó%ðÃÜA3Î<Ñã!„w9Æ6žC'„pÊ!)rU?*ž6Ë*ራţ˜\{g¤ €ðì74¾ÂË/èúGÅH=P/¯z+¼n)Øc¦ã`䊉8pf`NL1».ò0§êã:#—˜À,¬ÀsˆÍ‰Ú�#l:Øó8³æ˜ $Ϥˆ8˜P까«ØuLF=Âl�&®œŒ›ÜvX8CÐ!pÈq\ÇAžG^[Ñãy6�{Ìsù:ÎLʸã8ÄOß>8”C¿K×™¸¶‰‰ûb3±z9Ó+#Œ\—!jSÇ宊=nÚ„!‡Ú`C73!™ŽçÚ@õ€X1Õ#OPL(·=Žm`σ¯ÄgˆäQ ˜j‚Bm‚>dRêz˜¹|X5™Ë˜ë0—ÚŒ¬Cq<Óf°hêÙÔÅÂÂ6‰ç€5&6È,“Â6bX,å\X€ZÁOæyØQ«Eåµ Æ&Ř2[ˆ¶ 43qFç„Ç–«¦¦-˜ó˜6°jð—=Ä7qL› ^1j»@0wMסÁÎÙ˜°5&°nØ^Çã¶Ø£.%ëp@ž”#ê2 -û?âË]G®ÃO°ï0u -ºKm 2iŒä²@º¼›ï×ì®C³]Ã>æHÉÿÂÑÙdJ2¯†˜Æ¾7&¶äÚÏU× ¼WÔ|åZ6¡€t×äÞ™ä3ç{óežZ€—…ðã`> þCWù õTZ¯°Õɉ -¶áÚ•ªžì²ƒr^t+¤2з„èU3YitE,`;:g‹è_Š‹lŒü633&ÅäUÏùæËËß/?ýùA¤¥¶Äcäh•G¨0!¤È|òGÍ0TD=™ Dæ¦i#4ñ‹Ýè×€´…+F·D³·RV¢o³Nh`´Ãtk,3—¥Þ—Åq—õòú¢Ù‚ -É„ ƒ¼£sraüºÄº+å9l£ ‹¤zB!)@]’“vnr1WvñÉèpiŒ\³ƒ7]#¸H¥1˜°C`"8ÅÕ%K´}Á*ä—›ï“ ôÉonƒÚhTJºs½å÷^òº^`ò.’0„µÆèKùg® -rÛËÓé7ˆ,cÂE£Ed¨ -çÄUÐô’èÚBc3/Ï’ÅÇË“”y³¿¢ßK£©Aå ¸z»ùd$m¾Â,°Yð(¢nÎÔaw´B²™£s\‰¼ù!¨éÚé°yEsà_´Ë±ˆÎ@@8B/šÛFM¬o[Ø[APébiäJ`®‡ -* ¬…À s-ðRM]ù(È_Pì5:Š¶¯º†pU«Ô“{@¢ô.<‡êÉ¤ð„³†Ù¸àUAе:>Wãç½z¥»T/uê,:»HüÇǸQÒ=kn»Üôë“Aî¶û'2º¿O%~©"EbGT¢Êcam.nH¡=l750(�cɈcF –‰“iXQ}ÉœR:@@ ¹ù°æ²nß~ýùkþí¸÷·—"«€™¼Ë$QXl÷›|jW—®!X{ ¨þNU‘@7Æq>ýßëñ÷çÜ_þú¾?%ä—JtÚŸ™ª˜Ô|QˆÐêY›ª7;DªåŠ ÉÀÁÄ‘œJ$ÛÊŠ`uaP¸ÆÒ¤Žˆ¥ö¬Sìö(Œÿ×?~¿´Ì°9àÈÊÁöð4ø¸Þ†M.u£hƉãðö%‹‘´ áqbìjgg±¢mˆþ‘l‚…16!¤‚]Àæc$B$UDz*I2ÓTÙ-¥z6‘"m>¼‹zÓ“ØEY˜TH™‚cF¨w‘g -ºGAe[‹xÄz}ÙO]KxÿD+ë|û…H(‘aaƒ°¹ßíuc ÁY± áèšõ¤Br#ä>V„¥N•8-8©sþµu(}†L£ß¶ Cו1žj ’a«ÙšÇE=ØOnÁ£®!QÛ\PÔ6÷òûgjxÿ¯¶•¯2“•¾zýÃæ,É+†ƒ$#ž³Ø¦kl¥TNÔ€ªÚ«zàOjC=Á:NsØ1¤ÏÁK'D‡‚¥Ÿ#<gHæ2 ¹¨G”q¯â*”ÕTl-Åâ+àtÙ8+é_XR_Žo„Ëæy¯^ß�UûÕC(ìTýì½A[]BÛÃÒ “ñ±šæ×½(h«ß¯j… -�5dkš-:o -¿Aô`¶åeãB¢¶ú yðÜ;r;6•»ùl®«QÐU·`ùÚ¸S|\*Ïõ dCȨ¸<´§$^Ã:JÚ�_íõA;§ãQ2—?î`–Ï¿1_»z:ä·zT‚›Â£u$™[,R_…?&¹MÓöB(×j)Ã#ŒÝÃsxzÏu|îjdláäî�Å„È endstream endobj 34 0 obj <</Filter[/FlateDecode]/Length 624>>stream -H‰Œ”ÛŠW…Ÿ Þ¡nT˜Í>\š Ä‹½“F;!™‘žÑ·ÏÚ Þ8[˜›¦ºê«ÿ°ÖÚå¶kñhs1òÒ,Û¯¸y˜y:{Vì·Tƒ‰ºÜ"¸r7â›Nm¡,>‘.)ž)‚‚DXЊ3U$„Ð -j÷ÈÎܵ}ˆ{RáJë‚ØÈYÂ41gc+e^˜Â²¶ÊVÎÍ¡«:i£X+[I¬c"2ª;:\\)€ÈH¨�¼<£'ÂC4Œ•rÿu[@X=ˆˆÕšUs¿äƒ :þCkºèc#¼Û§Ò¬²Ï‘S’B“¡:O$FeæbÆæ6 ¦S]6ÿ˜vEáâô\TiNl¡™{Jà ’v0›,‘Gn. ²áAµä”j|ª$Ÿ+‘Ž"ÇÁ,¾ V}•Ž(ŒÚX3dvÊÁmXÂÚ9aQÁ&,õbd¬nqü,¹”L±©ˆ’ZAÚ9”¡óeÄzŽÐÌ ŽG4æFAšÓ"áÌ]¹EnþÜ^ü±Ñþò´½øº™BpØ(%ðF#Ä*JME÷6Cø8f„….ü]/ ¨2§Q2S&© 1Ú!êÈ>Îæ¡U»é¹¢•áCâýtˆà—§áÈ$|ýI»§@G%ŽRLÅK8QHázP¾;KfÑlaÊ“ G\¼žnÓþþÓû³çûûwÛõ/ÛáåÿðêöÓõñ¿Óùêj;ÞoN¿ŸŸÿ>·›ûã·Ó~¼½½{8>œ¾àÉ~s>Ý?ÜOûý_wÿÎ;xå;~8¼úíõö¿��=Ô: endstream endobj 35 0 obj <</Filter[/FlateDecode]/Length 28495>>stream -H‰ä—{k$×Å?A‡þgÁqû¾Ž ô388¶±0˜ ÄJY”xgƒ"ÇøÛçWÕ=£Íx½–! I4š¹·nÝWSÕ˼ü4ïhöÛæãfYø6-ÃÒ/u)K^Ò—°¸Å.£yžæqæ~®s™óœæ8‡ÙÏn¶³™–‰îišÆi˜ú©NeÊÍ”@œÂä'7Y`ÆeÄÇ8ã8Œ=¨cyLcaôÀ˜•ó€¿ãaúfè‡ -ÊAà,0ƒéíYŠÌÒ3°—§* -È‚¦O *ð -§° -#¨‹bVLFÅ°aóÜÔýS6ä é€x@8ÀÁÁ6Õ`NQ–'˜Ï0£ácü?þšËÍ >Í[:Ÿõ4ÏöàpO{!}…ðqñ‹…ê4¯P<Boµ…Ö=Á“”˃{enTÆ -['áèP¸)¬„ÊÂQ¹'Œ‹J1«„š”<½2D8!qo5¨gÄ^o;—TbSBñÅ[L^òœ§<ÂÿV•œsÊ1‡ì³Ë6›lÒ’fdgu€Ü5•„IJ)¦�|rÉ6É&Ùmœ#ú„òˆôJÊrÄ:Ê¢X`¢ b@ö'Ð+ŸÐ7ˆ‡ð¸(XNÐÉãÃúxàVa~QÌŠiƒJ`㇠›&ä¡7¤âÂx¿Ü ì˜s¸å7¿Ó;b|Dsü㞢9oúeøŸqíCûâj¸oÌ«øÙß4¦3Ö»�A1|©éb$Ìà¦3®øhi)%šTu)ÀñL‹áñ&Bé€i¢¥Bá0ªÉäÄ?yh±°ÙåM-Áh¶µ©¦e~YÔWÍ‹«ÿ®E ÿh˜¤Öú6Úú_ê…ž½}—"Év–§õ¡K6†“q—-NÇg¼F—Zg:ïj¾0þ©Åa|Îë&Ìé Çf,‡©yѯæÝÍïî¯oînwkÃpûên·oú¨}ïO»ÝõëÛ›öÕÖÔÿ~s±µµápCp}ÜÊ·þP¶¥Cæ¶T²lÕ˜¤“zH(Q˪ǤBZÑtG%E¦°¤�$ݣŎOk Wµ€ÙŒ†:•2r¤ò£˜4…Z+ó™‘ÿ„j“Œ#N,ŸfŸAŸûÌg¿&uiì~ñ£.ã’»vdŠ@~KdÅB~ìÉ“#sNùÓ’Q5‘Y¶'ÓŽdÜ9/Å!).–¤.¹ -) ¥–.ZÿÊ3è•Iå=KNE.u¹èŽ×Z]’mÒ -^ŠÊ*¥ù Ïz=ÇYhË5§IåTí×b}_/EÞÀV•N¤*å q ÉZEÁB¬(EE0Z«*àsôÙ’kc¶ÂðS–ˆ†RµA%‚„ñÕÙø¨„°]i-3!÷¨MÿÑU@YÑBôÑ"À1~eueæDX—*5FÒ¶x2¡¬*Ÿé¡=¶ðùqÆœ:Cqò¸ïë¬o“&®>{³ûâþn÷p·{õÁGŠuÜÑ|öwéñkÏ×·÷»#)ÛZŽdlßÒ:[¸‹ÈMXd[[<9mŠR¨úÚr««q©Zì£Y-¬¾¦ GÖöúùõ÷ë[þ}§_׬AÏúó÷|ý+ß“oÚ?´ßüÙ´7ëÈ/ù÷t-Ogj_cô“ëi?½du¶¯O/LøNFçÛñ÷aÿ0ݽ|¸{³»¾ÿ¡ýHóЇÛ7߶ïõŸl'~5ßÜ=¼¹¿®_þ›»úãÝ··W_Þ¾|x¿ý5~ÃßÓ3Ô¯¿Z¿®Jµ}€rÄ£‘¸‹©¢"&ÔŠ†Æ(‘ˆüe‹HŠ*½ Ž‘d¤È:ê´æž0•‡Ç6ß~}Í -P…Ѳd0ËQض&†’Ù_o27¦PÞ:¥#T—¤ƒEUé€SU;"IJ;xñ^nÚ—êvµ)œtt¥µÖu±’3³å¥§Æ–’ˆë™’Ü¿\ì*»â…Š¥ÛÐB¼Ž8@Èð¢)a|W‹åòȬr:‘wHYrb•’ñX…ÎpçbEªaýbÁÄ"F$J,,)H,(ÄÂjÁ·Õµ›X°ÁÕ?«àPú²(ˆô‘Ÿ£ wétúÂT^Òj‘Šø—,³ZødTf³A}x™Pgr¶C¬8K°2“ë¼—jƒlZ¬œká¯èë¬ìÄɉ[ÙɊ˜ÉÄÎÑNìË; ÃŽLiG½ôˆ[V#KA( |iYRg¼—R5$œ0Ñ¥%ª:*Â5d -ÜŽ6 {<™Þ8uëîxjn¶ÈðJÝWPOGra>W ;üHès¼‘À©…«6–‚9bÁFÃùá×e¶‹Ü=Y^oBŒPÞ,FhC]œžF‰²’ê8‰“~H¤NR^g¡ðHÒïÑ5ÈÌ(χið&Ó°_ ;¬¸�qS)È6?D’ú¿j=”'ru!Á]5„´¹RE³ˆHQdHž•X üá‚Ñ„'ûÀ"dd€Ípëá`dÚr@?¶võƒRÆ¡Ûî"PO!z„j’ÙD$6É‘RÌ_°’!¹d#÷¼º?7ÊsI†´¢¨+üh¯Ý‡x¬]ŽQ.‡+Û‘}ÊíˆbäÏ-ÖTüHö%¾•ôg~8“”QÄT•‡ðF.}eÔY\8öLœÈÛKÞG“XÑ-VkÄ9~£§eeu#r*NŽ”÷§U~¬F©Z8'×LuÁ³Z@øªUðaªí¢p4Ò… F¨Èd0 nµ *ÕTZTù#V‹Bè`AVˆÛ6G±b±IŽÕ£-°6Y”?È2CçcÒsŠ(¸T5œª=ê À)È%|‰Àí"öI8O� ìÅoå†<qȹ8®S,zd…àüH^^4—h‘¢óÜ` )Λ˜QpÁ9²\a‹Cœ±pÚ(Ká˜ús‹K±{fÄÌYÞfƒ¦@$e(CÔUŽ·“V8%NÙŒÚQì ¤¤ÜäO7¤¬°hõªí¶Í®²Ê$nkB;%‡fÀ€öŸztZ²—•œÚ ÁIl¨Ø×±(¾ts2Q |5dïÐ ,X5§-„Óê a’ÔÎn§U1: –Õ -’¨•H¼ú!ÊÄ•"º$¢Xd®Y$ÖÅ 9²¦NdPZqÁ•mü¥c1Z–zL“¯LV’°?Y)4’Ö¡€¤cdO6Á{Þ¡ªö�)…¼†ã‰ÜÌÞŠ'b³hŠÖ+fWl‘rKë³e_é$[Ig—*'¦u”ìH:B®ZþÈ‘µ?ZM‰»¿h9‰cŠS$±‰rág(’/Y¯ÿ"¼Ìr\É‘ x@à¾|ÏæücÌLÕ+0h »KN2ÉXÜ=Ôc¾ -¢G™FÉüt?ÅÓd]Ævø¢®økøûEjXf®ð¢&n‰ŸÚ°PiMÉë”ð¦_©íz6*S+ý¬´¿+’æÔ“׆âìbVÌhwLe|}iD]¹*uɘU«šz‚Gk½\ÁÈè—Ðx5V”•\1ãC„È» AãçCÜ›r=Úº0ŠXŸNN§ƒyéx3»V m¬#SA\Ø&V,~t -ŸžÜG=º°‚“¥ùv\YÌJvÓÀR¬dXoÄöõNÝ{ÒÝ9YÆNºbV}86þL³ÔzÙSãR‹&ÚKïXª*»6¬Y¬hò.CA?»ñqÆ\¸» ´Wâ‚ce8(éón‹ˆ(k”¶˜U5[®¬(ƒ+p‹ù¬ˆc¿Å -îAŒUð`J¾”õi|i®v}‰ûacQÏÎ }dtQlÄÿÍ„…NÞ£Ðç2Ñÿ§þsõ 6"†k’9ÞRðyXÕÓ)€8Ù%È¿§ îŽè»Ë’ cE€ò… Ì6�Fáj@h{ -êF õÙEE'$©�9…S Ûö¸Ž -Äôqã ®¬v‡…#è]Þe!05M!±qüiýXy‚Ý©<@œ‚}§Èu9ŸŸ]Xx&ÿïHñ02ÐU°7ÅYbÂØÍŒ½*½ú8ZÀ¼™ gÅÎJàñ»=ÅïìÄò¨O%3Ç{oýÞ¶G‹@‡Ï¯Ó&ÔáœHº:KÉg—ƒÀÒó0Ý>€‰àÉ7“-zŽëѕâ¼0.C»’.Œ²f‹À30&[Ÿâx"‰…37¥kZKJ‡º6Ä0Þþ·1¢7úHOt*Äñ™/�=Ç^ôöÒ¼Ë;df©žÔÏ‚o/òoÍ# -¦¢P°TpnGèn¹yÒØýØ•e"ß=W¿ƒ<®?€äˆsö£Ÿ´ë:×P±Ô¤D’ÊÛ9�'JÅRƒ?ôWÔéz@Ø1Àfö ”è*€<À‰œê8À“Çsü&X¡Îs Ú0þæîñ7ìãw1¼^_Oå*Ž5@å0,Ñ>>eêÍ`ijŽ]{.§ãb½¼ñSk¿@% -qž²öxJ¯AG/¥)Ó^ÈÉëÒ ^Xd'´]aH’øì*è‚üé´X¡üÁ4Hùød4ÿ¸ß ÙLÐ"»p)Ù»a·«üZÑÏF ¬y¦ -ôKQE82Æqì,§~»ëÄ_×ÍÈáò÷“˜šŽ>K§¾!€¹8®‰¬ñfþ@†¼:ÖÊœ£¡Å*èd³ª²oŒ/·ãÕÚëåX·âÚº¤8ÐQ° Ÿ´ÁãNø]ò@uNöÒ€Û@d6mµòFÌIë>·>¤Ë[ç…ë좦¸4k‹ßWûð½&Ð\)p ‚Ë¡°Þø®,v-i�‹P’J� `ŽÚ8Ý딆Ú)QÅ¡3*{…ÐÝZÓø¼.Ï)SíΟªwÛÉÎ<8”*âܽOí¼ŽÖRù“�óA¤’ONS†œYN´UYÌÅËjøík©;,îêA;NpÍ—IÒeqƒ2Ä�M`û¼˜rÈ�ów¬ñºNG2Å@†˜ë´2ýϱKç�þ$Å÷é‡P_]è9Îäo?E…ÃD1ñ Oˆ¦¬ dƒ>ÍÕŠ°!ëÈëIšÂ‡X“%+E©ÍšÏ*;~×·G0àÈC{TÖeSûÄRCp• t€2>ž?EXGô,U£×>‡dÀéh'ë%¬ÕÙ…]TnÐa¿NçþI`öd1½Kú¤r9járÊ,ÄðE¾œ‚0Z>tªF…x3Ťq‡ë³WC�aŸåÔ…—¤¨^Ùy -Dˆq±^º -³!„õ{EœŸákꪘc:P|“t-Ì}ÉvÀxO& KØ“û“z^Ç@6_ŒQš2Ž»(Åg.‡5¨Œãr»lq²ç±×Êj"Õ\³ÖæÅ¢CÏ\‹Wi™ÂaâÖËç¤t²'ô3ßÜcÄvXO1ü’€£ayës—cãüª7ÙªŠ:ì])\åìâ8¼Ã»¦Ÿ»'}íB”è´&ï?�ê_t÷$̸{uÏíò.7EyÆô85•¦$Þ3}€;ûö›Ùo’ãgâ:œl()êÝ0&�z£01cÉž¯Îûú]¬‚Ѫ\ƒ´6Œ×ÙýsÙ¨9ªa+ÉC€DfâEîãªÎpó†�¡›ØUÈÂ’Ô›·ˆËä}�E·Ù<Ç+“Šµ¬:ûgÿ³Lù&¦;¬Íѯæ(Ïïç4_'®Ëœ?6)ÄÇ1‡#b¬�ºÓ|_î7¨Û\ª † Ùò²´uÖ—òü‡ý•éœØÎV?›ŠœéœÅ®b$ꤿ/�ÍÛéØo>Éð_ÜI¶ë/°Hù5¯!ŽîCì|¦‰»¿K~k›ºF©I<ÄÜâôþý«~²ìk<ø ÊQFœ©e¸[j.=KÞ¸(…+XÚðZöœçq´½Dj1½ý³«:ò6©§5òÑÜHØ/]¡.ªº6G’:ÓÐ)÷3IèÇ—6¹–p'x�aüšÖʺ÷q¸ÛØ…y)ÒÅÅ>4 þB Ñ ü¾¢$ÝÀȺÀì÷ݬ<,Ñh§ë˜^O¸ÝÍð€é`zµ;'··FçïCˆZ‘¢÷÷ÏÅûª6ŠXgK 3Õ?€¦Æ´ÇLü¢©õ² 1FÌ?”`¾Ì£—š8(¹no+™èðÎqíVb&]øUŒÇ.’§â7ìo�+gLkñ»&’ß÷cN”Ž�Í83ÓÔ¹CŸª Ÿa·@Ìx'b>‡ËÁÌ»ÂðA1cÐÀ@‘€]·6{÷H,yîÇþ(:·4ý©nåhra¨¨ýâÖ ’®áiÃÃ=`ÿy -„"AŽìÃÊÕpiHFo^#~ÇÊð‰<=óETÓ™2Ø×z0Çåvæ-i±¾N¬qX_í¹�w‡“×D·/ûQ/aKô ¶YÞ$Î'(ñ’S¿ŸûÏ@Ä®þ®0"³én™À{L„ÌZ„ÔiZÖ?Ðn×D5Û;;,¢Ëy/ÖÖN"T-RH}q:©EÍ`E€VQ–s Vü^?Ä–é ¾NC¨ÊyÿþßÓaÀ¬]¼÷è0È5õ1AéáD'Qd' ·¬k|݇@Åf½0¨ï�ε”Ö¸é�í�<3~‡ïÓêŠÑ–š@úWÉC�†Zݘ”@dN€ÞÀˆTœv»Ž[~“ªÏÚü.ØÈäK`¬xäK�2ã÷jø}±ÒP§ußÍ‘WçYN¸ùÚÊsChÃ;lhŽ°‘·S©Ú´KOòšÌ6’iÔØÂkŠaGßÇ&4 pbmN£�Ñ@�Ø´%0¥îãbšäÌ&¸Ð»×Òv�ƒ~€!+zfæe‘3y]ÇÁÜs tzéõÃ<•šðÿnÄuYð)u.G7 -žZñ¬|ej>qc>£Œ©ó…ýàŒ Z®ÄDÀ‹^kžqö`,¦2®ôÌÞ!ð5Y×nî‚‚É]G!¡–™”GLˆ_a$0üX ñ\SÁ´¼·SÓvÕ>`Jö§dAeóÈÍ|Æùî°ïðõT0Q¨û°)g@(?$“Œžëªâ!üVhkÁ„+eÂæ"<ÛŒc ´ä -8¨žÝ)µÁ±bé¡»I -³Öù×bÅ ÑÏ—:ÉwU_rq\'ÿí2וìF‚诔-£À—æ�cÊ@²É“)ó÷sN’U©[hµðú1.—\"#âs•!Rë©â E"”ž§‘ÐYÎvÐê×$înWa9*aà$ÕH”l ¦´¬!m†¶4„Ì8�*˜0•¸�¬”ª�ÚúêB舂!^¨ÛÔÉÀ%4Ris‚ø¢O„~C§ìeiUZy_šqÙqR)Ý•š vÉ°‰C?Nš´›'…˵Êú~Ê%ízÉQ÷ˆ¢ø”àþHv(+˜†ÈM¬!Ç/%{™È…(Öû}ª+Šõ‘ŠFWç€Ô¢ËìزϹ&„öƒ)‘Ñ/Ș#!më{!¶ƒòéþYq~ý_1ƒÌÍ4Œ½2ò¶@ÐU$ _˜Éú¹æ •“®3q³¬ e´Z͇Du‡EGh´O¦Š±e»?;“pí¥jÆâ?¾ícEØUäºGÄQ 0�齜_ŠŒ—ä=×úQ3ÿ‚¦ ŒÞªî3¶²¤5¹ ±ÒªRµ¢‹àjUÍh–ÑÉèÒ¾Sp!¼@5}š¨Rh4PSMÒb.×,s[7‚*Á0kh‘|ùíœT¨Ðؽÿ>ië�>«Êcï3V .DìC;tˆ`^UŽvô >ˆÌ ¨c8¡U•ôK\¡ÑÈvrD겡5˜‡@ðè(ÒËY‹bNÁ×Âæ‡móþ -þ¡Òì6¦Ñ¨E>vfÛÉì«Yo(Æò10”÷ÞךçZK‚cv¡EizØܱ:ød1>ìÖó'bT‘³|»àïÛ>†È‰ŠKSåGsc©¦‹Çù¯éM™Ðm°‡ÙÂuØäè_Jœ¤ œÓFd9¾CÞ¬¡è·ß;\tD|FY̨ÈæèVqɨ`>qpâlÊ’ƒË–áq±ÎÀPe5(Ò©Dùì~‚±¢šûÈŒŠB‹bÓû@5îƒ@‰yÂzwŸî�ÉÁ€ž`{; -ï}Òž‡ük¨5-�6V5âºâ$&õ^qA¹9â¡×±áÚ¼KZy#”CÀQyG¬tÅŠÓHQk„$›,…@MJxë$UÚŒNG64&Xܸ@òµ}AŒLyR }Á6¯7ÝPØzÊCX þ¬*Môl¦qqŒRewÈtÉ—î€z¡òÛÂoG•éÕ1ùÛ×”îÐ6,«Å²˜“ N¥LÌù‚öö·5æ�zK#åj²*Ò1‚á‡ÞÍwF`»B,&Sv! ê;âͲ¬A‡æ/ûÀìP×¾^&¥Ô -M5”_—(›¸¿1n;ÆÿÙ_Ùß„$(¢j»(¼dŽmZ÷—j’/%*݃BµÀMmì“V§@Ìë}Ò&]›É~Àq$ð p¼çÂœw¡ü6"1ÜXÄ.áoÉ{‹Iù¹äúuû |htüÔµ„A+U{W»ráž -ãô!1“Aedw¥Ú‘OXÐÐ6ï>é…¼ÊhVÚ¡"HMÝêþR•2+3.– §(n[5'znRwÙ¶¿n€]nä$)òËÜÒús—L®]J<µÁPà,8…!_-ÏåÏÔ‰^p1cƒw³ä%hy7«˜`¼ƒqfŠ1‹UfˆHGRLÃ}úU.F—”Aà5ÒbúT5ŸêRKBê±?=ׄçk*Hsa)OBÜW_x|Lr¨¦55î#U™ R꼬8éU™)˜„¢_š¦ZÞçhç©-Õ¿!ô-jG™µ3Vî(ŠaNż.*N‚cA#·Ôˆpv‹Oia¿à?¦n ò«áYÊeɬ³˜5xV*4>ßÕ@ó5“ÝeWqÁûAý¹€ ½[õò>iFm0Œ'B$2¦ºUW.±ÏP€`àoÄðZ àô±³ÂÄ÷)\ºoÂLÄDŒŸX!†™…øMä\Ý÷!AÞ§V½-Ýy^M-›ÍP#ÁNí+‚’œõp[$;,VI‰’°nÙÐ{篿ßqi[ÞÑ–µŸ®þø©eŒÑ¸‚De¡ïv_¸©PZ<ô$wBÑ xS Tr¶}¢~>×€1ÔN´ä™«Mº?U¥‚¸‚UИÉeTöéN!\ |yG(òeÔ)áE}C1-Uí:Äæ.eûÒU-ÞE\«”ÊÛ[Ñ÷ÑEþ¢3NýŽxªÌª†J:þ²ÏÅIƆ‚¬Ú›ì/ú«SkCñ~C|ÎÞU?QCÆ‚‚Ñ®-�›:H9 ÷r²“CõèüT‘·+XuQ[«Ö§¶„÷BÊ}³ZÍðV…§ aŸ´}hž Ò®x 0žÉ¡@¿¬/èK’~&VßÛ3‘·6dï¬Ìû„Y“7{{Y*ßÖ“Åç ÝýøÕ}ryòö¡®8‚}4EäÒ(ÍŽ@Wi—M¸Y(Æ¥Ì œ-…4l× ¼M1õ0Þ´¯W3$ûÝv6ôÇðŠ!Ö¹EWz±›níF?.ç¶èäç´ëÖ¾<1ƒ÷cîsùngðÌêÜÛ㈮c|âê:ÅêC‹qc7Æ5€Ýþ46´‰_ĘæeÏ NmÊþƒ¿?ý‡ÿ¥Ç¿~÷ç¿âçóÿüHÏòHñç—ÿžº,ÌpêÒIkõ&¨¹ÛÕÍzüy@Y�©· Î΂py-šÀÒ1GP.Ø/Lóº i’D4$ÒF¤åjÅ9·ÍÌáÉÊŒ.A¶ ‡ø,\wŸëh€)ßõàõ¥D™g;Í-v£nwYj¡œ#\[g*¬]rïú®…iuçëh‚]…0b -o‰ÆDQ¤Pɾã>Ë„ÞòuNU ˆõ’?D);E »ˆjÅÄMp_.¨ãb!ïgð³Dwγ=B&ÜžÕ s „BýË×b’Ü´®pFØ>EA†`|┈@‘5Æ‚5X¿–Wßg¥� •·zडTJpϦTp ®5ùYHº¼(yá±däx“eõ6ÄPoCÆ> Ye}tO" tjæ'•”TÏLOù‹ßs¼Ú;ب -¡¯.¥Á¥#…JyS¥ÙFã0B¶ãd˜gljcŽê‹Ïã,ðïX`*Tªs±(-÷M/á¨4›(“¿Q¬/ˇgÆ>Ä“þ§„“D‹u>Ÿ®_ežu”oœ“άê:/EÔ°Aì (‡0pCÈz Î*åI2èMŠä¾;' -ýKW`a™rôxu게uögb*U–…Bgòå@\ó5T7- -vx”DÅ"· `ø¹Áúô‡K6`6니ÇÓ‰F‚*}ÞXDm"ÀÙ¿åbWæ‘JIS (ÄTbÁÇ°ÀøCGâ&™\p?å€.¿Î–[£ró9¯+9Í\Õ‘_UN{Q9Ì(Pg©°Í£`8ñ¸p±È맋Ãyä÷‰+Pãu#ˆl lUÙaÊl(©ŸFKq�ÿ½p.ŠÂÂí“(ã.ŠLì“¥ #û¤×€à‚ˆ= ª@ w³®[ß'(°\Ñ3"±ù»0\.[HÝlé¤E]«qÞ„”aÊFŽC�ãÖôSWÇãé@+¼øÎ6!Î.2£Qj,CkRÓ,Á`Ôˆ)Ò”È<eðÈDå)Éls@ñ’)ŽØÌ´ç•{£('eiVÁRã$ò'©¾ -2}€2j1Š!ì_ò€À³Ü[%qBÅ/Ô †AÇ=QE{·Ca=u#º•Z×)ÊÖ¨Â@;¬ -Ð&€¼uN²ÐÞAr•±_È<MØí‹…J5XĹBÜÂËŽ¨>0Ë‹”&Ž?åñw쓘FYÒEDÌ(ê+‹¢fÐò‚µDT6ÿëe’£Çq„Ñ«ÔRäVåP9Ø+ '°O papA ¨…n¯÷"òo®do$Š º#+‡¾!W4êfаvÑ°,œÇÄ;irh"³Áª¬Zbe^†9õ2#·ady5ùºó,Õ2Ž¦r+ÝLäŠ{û`ŸSç4’ÈÒrN€H F6؇ÏÕƒK?¸7ßÂŒä6(·àæ…‚73ÃQÃ݃mµI¼c²{`¿NĆ¢û8c G—ep7x!ËדÇ<–QÀï�*|½ËûÂÈ}EV‚åÈž`G…‘ ‰Ï'WÀ«éþ§{Iºïøüåç¾|üí×_>ÿqý“_}ó¨Yë·×÷ÿùòùã¯ÿ½¾ùñÇ>|øýÓ¿ûò‹k¿½¾cå¿øúïç#J‚P¥`Ž0Å^ût£IBâØ—-œ‹c&-E—?yˆ> -p“¸±>w¹t}ã…qE ‰Xkpµ1~ŽÐ?ËÀÇ«ˆF@Å„šØr,û}ú ؈êŸÅßç@7P»Òh;öQ62Dâ®’ˆ -×´yã�…áÌ-ŒÑ£hœTL顧µŽ2ºTúD’+JߎDÕ¥M+^<!¸€ç¥à¢s" UËË©Æ¢$•ü*c·$¶£1ÑRÅ�=> 4kÆ€~ªGLÍ0Š³)í¦Å Ü߬P£u"`âøuæf«ÇÝ q·ùΰ8#J-É<ŽHì!2Wü(“ú„«¹¯¿l°ŸþÆ^F ¢,Øu+¤ÉŒ†sãK÷ôtȧ³jè(X…(ÊUÖÌUÖ‰ñ<V�"=÷ADïÛ-˜,ì0{-NÙRAd)VÔ®ÚÖÛU¤°¹ª�6¹LûI–UZb%¯2ò$(ªÅ - Û=h±™J8•A3¬*šg@'N{8Ót-ÅÒñˆ¥IªHÈ¥³]·gäÔGW€dr¤ž³´cÂj}Cß ?Õ=OUÁ#¤Kqw$†V°oe™Za›HžótLúýn©×îÔkÛqD®"¼\Ôî\5ÔËâ-€ç -v®®Ø¡iº€â¥•œ%Hêb!zùuÕ¯™éÜ¿QOUã®-¯i‰X0* [ÈJ.+¨¤ Ôzf®°Ž®xö©rÊsIÕvè•(Ãe$ï‘(¸ž<BÒ)l;½X}ÈB–ì‹Z¤8ÄÒÛ¬öÖÔÊ€ÕªõUÁé殊l.<¸Ô8„�¶Ø‡Q`¤{u36”ì°GÀdeo6O-I=rÿ~§Çã?òÆ-€üGî¡}0r”¼„¥Û0Cî³EQ(Í9`*^oz±ti «-9›t‘'‘X5ÞBÃV¹nö7r§¤¿é¥®UÁÅr^£NÄ+Ò‹ºõ9£e"ö k<0}ÖT·ô¼²6g�10Ò)èô\ävGnŠŒOn ܳ¢+h±µ¡ß›o‚ØèEó•¾rÅ -dðlç$šP©Á*d檧…KdõŠ}Ê”l‘pžfOSw®`t\Ñlä° :"¥ñ>á*ìÝtùÞé<}b‹]„»ìó"„nžï<§dÌ—R _ ->Ÿ~&¸^0Ð9”¥Ùpz»öƒ.£OTPd~TÑ¢»e}¼e¥!ŸøtõÛdïë? ×BÆÁgµÅ5t¬b†Y’€6°À›+øD@{¨„“#X5˜•ùºmÑ.àiÆ *©æ³i+[½Ù2MN%5€Œï"1´µ¡<"1˜š×Mƒ¦mv’îIÆm ÕcHºb@_¹ì]FH Žîœƒ¾Øaz¨JæÎ)šúÀŸb¼ÉÞfHÑÃp鈗„D¡Çpyî?Sz134ÒÌ{"JãžÔÿòŽÁÄ0Í!Ê[ ÖVp½NBŠ4ß[Ô -äÑɧ™¬¸…¹¼(±IBŸÔ B=5*£pÃ6EWØ‚._>ÌzÔµ[ -¡‹™I9 -ßÇ}ÐáÖ¯éÂèC ë&m7pa3ññ‘KVº\•Žx¬ò£½0ÑUCRàüÀ‰5?6§ÅØ'Ý.ãszgÄŠ®_dà”+Úû4ßÙ4ñB;‚º·ì©¹(¿zìì‹h0w:·^ᦎÉ}ñ…®`Úêóv†ÑÆ;P2€„’£ï4n–Ž¬³`ÅËþ¿Þù;Bs¶wbÆž´*LÞ)ªÀƒ{V ¼_—â{®Z+È -“v¹AÆŒkò!™ŠÚ÷ŸbqÚâ+š«(Ñ,*ºÈ�3@[‘b/r1¸¼-Aè³Gðu U¯æpÆ9]Á"�åíh¾'.@㥈nK£Ê‹1rô¥ÍAÝ\h~ßm”å Êok´Ø‹É¨¦ K¹¹�1AÚ»Ò\…ü<yoÐ’—R¿ûf´„yèæk-µÌ·¶êKiÒ>¾Š:5їż?COB(‚Ňãë. eA£'‚˜¼øŠä*dk×xö^y)]`\�™tçÆþHËL¹ˆGrÓÀ¨VKÜnFÑ.tK‹vºñN`îd^¢©{ço’%É?“”)ZÏ°òý‚u ï€*[`ÒV'±å¡,ž³Ù艟 sˆYÒÀ@]oÖ$Ú�Ò/B¸Ôú)ÌF -®ÈÄk¨1Žó“¦h$žÄŽð®Õ«Ië4Ç£ñGT½úRyHœÜd©§XÈþ²(W^NÞJ’G‹Úǘݨ.£< ¸6ÓìÞŽW£õ‚¬(5ºÓBU׎ˡؙ¬Ã›Ù·t ÏWlC8?¬ÚÍhŸ¡v”„Šo%Ø¥$°å:vu„¤Á” ×ó¦«ä´Æ˜¹Æ ËŠÈRú„B@"lÙ•ÝZ4ž2^QF—vŸÊû¢¬¨ÃÐpUi~!kÙd¿ï–ÙæÑ-×Ðn¡Jd(ZMffúI(åÁHàaHu ´XíMóåvEñ4ŠAòýóE;Ä7ùÌ»»M›ß@¸9ê¦I¡Žü4º› Tc0�2·£¡CUeï@…3.—cwÍ'ÎNh%gø6@,ž-ç -Ä¿CO;ãÇñ9#pð -ù÷‘’¹[™›>‘Mt¸BîÖ—ˆ9×4³ç²¨ ŸHDŽÝ¶fnS -7Ûæ£8wöÆ<åñĶã˜HPÁ~¼=íÊÅãèôlÚÉ%m{ã`Ôšz‡Éd„–šÖ'>Oœ“Û#Æög•/áBx^+N ¢ èYÛ]®ØŸØN}¦¦kÌ,Mnàr¸ÞönŒb˜ø yMçþé±M¶"®5Uu+üâih:˜ïzmæ…œž·0ÄlNÄÕ=/}(¶“ÑœAì°Ãëâ+™gË¢ä€S`¶Ó-ív(¥„Ž…àŽeûsË!@èVA¥í :Š@>€'|†,{608UÂô¼f°{—`b# sÀEô€i5¶[=÷ó¾mØ¢,#Ãé[éðÇÀî&ˆXy)�÷%¨5ƒ?ÓÝ#›`â1,Ôum˜‚¿—‘Hý Ò¢;/`DIÀÀxJpOHBç*³úÃy+7V¥œPN©jCKAx:]6¾26LŒú`€›CDÇÊo-m>Ưœ:Žàwø@h@º:oõcð暟hR$0›nR “pq Gdµ×v=À´Xü8·ÃqÇ.8ŒuÕŸ›Ôôõc{‹‘jÆ„ÀÊw7!Õ$ªc‚„ÁS¸Šþ#|áÙáy¿„N�»rb»Õxíº§AË‘¨G% 伉nüÓ¨×Ùä1Yˆ$±œ‹Sj’w¢Ä-ÜÈ=ùS-zß6h׃]p=Ø؃Â9\MñQà¹,fª]ãOºË\7“ã -£¯Ò¡XTí‹i Y‘Ba�Xc~{Ÿs«~2± 1ì¾]Ë]¾E,S³Tõ,”À8t)×nš¦32tl¡‘`pqtUI1DŒ<[2VÚ«=$;è¡%HZµpˆ§!‹ãv�¾ãvŠO.ÖÖ}•…ÅÓ|@óZ -ã„Õ\Â$yÇ# eÕ"í¬x..½µƒ4çÑ/ùPÍJe÷äÜxÚÔ<2¨!ÌI7ª•Tº]Jq "¦^'tª°‰u¬˜”ÄAZuYëº@̓¥™Ú}Žð:I%11Ny«+‘´¸J¯aˆ¶>øw¬"mtï>—f#ƒÙ¬ÀØ©ä©–ŽkåÀägä,ÂwPTŸ5W„. -Þ‰áGýbÅ9ïÿŒZùFջ̸ϰ>lx^ RüRâ={#P’ë÷8fAëDÐÊê.ÜÇÞwý-³3_€Þ‰PÀÁDFDi¬HÄXãl´Æ9b›/…Ú”„ÒÝD6€Ð0#ë0ÿ˔ͫaé«4gDpôa|^#¢©»˜‡!\Ñ3’yÀˆ…,ütÕkC¬«^étRÃÐÂöJ)} 44YœQŠÊÍÀ’`+…`c2ÉRð%£ ¦ÝjÏ•ç• -FóãC¨vDM”—QŠ‡X§f‡ÝJµ€óã9Ý,Ô¢Éò}1çû²±*/¹\¼ÛEˆ¾Íçpã>3âó=Žw:Ç;.{"’2™|a„Ö#tÌÒ’x¨é¦¤âhJg#PGUsBבg ôÙrN²¹†‚_ËSq·ž…&áÔ,N%$+¶bÎ3j{tÞ2ʜƋÐÝÓ)qÎ95¼ÀP|\)µý?I›8— -|’hÍM+’¤ÈÜÀ8¥¦å9ÛvzY_d‡áWzòt"^�}Ð#Hz‹ÓV%–”‡ý'A:9¾ÚÙ‰”dPHN¯<`uè⤠Ȍ «+I ¦œÁˆ¼iøm¦Œâ2áoð{\hÔʶš¼n×!BÓkÄIˆ8pœH�;¡PÝ ¬8;1¼ÝˆºK¹;)ÈCë]ò‰Âyê¶X'\ŠÜÕa#ⱌècRwžŽû7ÄÆYŽ�ÉG.“D> 3t÷ ÛÑ›L”€‘s /x)òfKD1…SÀ"ÞT’÷YL¨w'(x¢Zq۬ʓÀ¿à¦Ê "௖#‚V# 1Y¾Ðù"]âËä |‰,òe£w`ÑèâÙ¹ËAgÛ' )Š {þ;Ôhsúl{(](ã$K>u»0z¸´ík¦%ìH)X°P>¯Æ§LÜlôZÕk™P£M='\ì¤ÂL4,4€à(*0&µ�iL*©&;tHBAu1J#ÍΚMŸƒÔ"/(u./*´è(.WõT¦§rþ³S`݉:p+UeqsQÝ‘Á§ä¥ºóÞ¨,ð4”€&ÉÏžÇm¶Å�Ì&Pp«„6è(‹}þ6MãMº„1'"X“‚s>Zl ÎöS™Ú(’OÉÏ47¬S‹R13{Œ7ýKþT¥ÉÏ%™äZEVÐæÕFº²ì%•/óŒzÁ(m'%UAÓH–-•èDz¹šµ) &Ø©e¥hat¹ÏCðmhGãeó0Ã]FD‹#šö.óÿ¬Ë••Iär·÷ ‚IˆbœsDqnTc¬cNCA1Ö‰8r‹a±±§òô'bå»J¬AËÞ˜*N&Pai†ÚÌ0²è…Ú8>EÐhJ:/¤G)ÄY–ªýB[žÚÚ„I¯ªH†Ð úf(hsªÕéȇ“™Ž2vLZ@ú8«hj„A©´ƒ„#ÿD4 -ä1B²šªHn®Óf’~Ñå‰)üÏôƒ9®JòBX71žâSp”vßȽg‹ýõý€bYÒ5 5™ ¶í²|ž•ÆÜ8Waî—¨†Ö³Ô߬öI^Q$gsjÃO®pÌ9WäÌM;ìÛbóü`dŽ [åì,@ ž¥é�¹–f”fÚL>ÊšýÎFF5bÀÇ©QˆÜë´œTðDD'ªOVÎQe7ºv:?ÑÍ©y¾oÔvlDmƒÔ Ê Ý¤ˆóˆÈÞ,"r‰eðýDœÃRÏž#"¤3_0ãc¨…IW�ª˜w.r5"W72„rR¶öq¥½ìÓåˆ�$á|Öõ{±n÷h 8�yX>½Â4n -y–Ô¦ìtŸt¸Þ*2ZM¦S½ï² -IÑã€n‡JÁ>Qhš”uúZ¹Á‡ˆSTa -R'Ut49«ù>«õιa��Ô¡×Ã*’护*ÃwéJ¹7° 1ý,¶n`ÝT¬½rnG„C·Â¯†*WÊ3$g#IM H§ã´Ž%pÄ>MyJÆPŠr̃a¨q$Z”1Ý‚L©È">”‡^÷�^…k¢°�-¢Z..O6˜¹žQM>¶22ÖÙÂX�ÊÍXÛ1éóZ&Ý’ÖÝi9:Õéøˆ*UЬæ›2B5"e�’X×0ÏF»Äãž5NL,ÜÝø¨bsDƒBzæ{4±þS!ˆdXªrÀ_ò»üLžn¿—t¸yŽ•8½ârl’íH©ÔkJÛËÙ£Ž ƒÚ+7¦«SMspЃ¿HG|ÔH}ìg'#ô=¦žé�;ÑdSùg9ºPP9)"�–:þH ‚ÑmêBHîkbÛO·•Â†¥ñvØ,T«öæUhZVµié©cê`3ícoé Ѩ¢VV«6Œà®©Þ,mžË®½ž¨Üm¨/y•rlÖ˜›¡íÇñ€Ó:TÇ—°)6 u†Á 1õívmÁµQ:ö]Ö£'Tm®}Ü¢¦AœDW²…ócK0IhļƒÕ@DIqp$ˆ ð¥þ¶3ØôuÚ,ìNp(Q»X$ÛÍ![Ç‹cSsð›lŒàáÜLå{~_¾ÛT¼L -[^VT\|> ø*^(">$¯»ÁÝMbŽàFÀHdðÀ(TÑ8Q-¾NâÓP={<èį™þ€BŠ€¾Îaz– üÒþÀà¦tF©ž‰âAà? -¦Ù³M]ikŠÉcJê$|–:Î\Nu<sIOõ“ÁjP%ø–ÏéfÀ1^Rvú$I¼;`´n¥@SJØ€’òâe›eßq6c’öS…Û#PüÖ½ - çî°#îV4J²ÇC;ÇpU;®vˆÒ›#ÔIFéÌBDw‚™ï*ì÷×xGSrÒåJD-äQ2@Èëq<…ðëÀ;àºI”Œ–ÚñT•(NN´;Iæô\sp }…vˆó N³ÝÒ*RBœóÐ?#>ByCˆDësçn¨½Ž Ž5ø½»TƒêEÓÝ (Z³ñfIâ$"9Ï€¤î16xa¿haZ¸2¾¥Pw;¿øÈd1awª÷LæÁ1‚®©Lkl‘wü‘C¡«ºòOQHW]@BÊ„çpÜ¿>*Kt:š‰nÊ, AÖôM/vˆ¹c;Ì4ÊÒ¼ ¥Ëx”"ò—@Ja‡@}PtÅ|~½îkȱ¨aåЛL ÔRGsKúXA¡P3>&–xòYžâbŽšY q›è˜Ðh0âÀ’ÄAv>}²�ð£5;mÙ†q£}çXM^Z±Q–y\!àlé-µÇ/²ÚR߳Ɨ*p&î2"-óÞ×ÞÀç¥Þ¾#\d<8‰¡¹Q�íl_ƒÝ¨vêÿ~±¿óóý_¾þüùÓ×ÏüþÛ—ÿ<æÑ7ß¡n*X¾}¾ÿåë—Ï¿ÿãùæÇøôé_ÿüÛ_3öÛçODþ…Ÿÿ²^îÊ–Ü6ý•+˜â³I†.û\¥ÔC…v•ÿÞk<Gc±å@š)ͽ 4ÉýàïOýƒ*_ú;ÿüã×ÊŸÿÿÏ?5þüü·xTïßÿ°‚hòÛÄjíºÌŠýr³|Q£f)žw ›€fTâ\ÍÂ7´ë -r¾î7O2$ê‚ÅÃÞÄ[(†HÍRnÇ©¡¯ÑÚ²5Þ†F;_Œ5X}¥ÁŽ;4>uƒpÓ‰·ú(%žÃ·5Ÿ3ùò@™/hw«n£7xéÏLáÄ�òß·äïf`¯šË=aºZ›®o@¨JÄÀV¸Å -í€EáåE^×è!ewˆ‚ª+@�¡©`z˜¦«Yž46 -ç„ÒyT¸‡€½E=l$FÀé/@§aŠq"<˜ÒÁÈÕø…[!® -l4Ÿº!^Æ�« -Û}z¯äQ·ŠÐá×µÿ×P¨ÄpN;‚.ÆóE‡m -.ž¯‘ÍZ n`ŠÆ¯Õ�$Wã2V¬–g3�4G@(‚YÔ±Mb{Yd^“‹42ÑLÁ¾ä´oõ„P C”„;ùÆóÄ* ¡ðIwöåõÖŠŠz—ÏiÔ‰BVâg`øÉ·`ÁzéV ÑP´úìK ¬d8“J6Þ£‚÷y,3²P‘y«¿ßáƒ`~6ÜR17^ 1|W%μދÑrËäú#uæKêQËÉ˾qO€a“!èŒ9ßËÚt¾s+Ô,ºðŸS; y–1ДEx«Ì—J„VÐS_jp¸Ä[Àô+êUÁª‘çEÍðZä7Aýí -Ý�{<Adˆ5:ÒRSXœ¦Œ@¿.èˆ)@–òIª‰à¶¸À«,¥ó -ÔõÏÀ÷ð„³‘¡ÜÑ!�üࣸY¤ê¿)§hngÙˆŸ/»x\EWႨŽcžÐ7C| EàŸñ!Îâö([3+`rçbA‰ç”«ø|¼ 2¨¼:ÏXG\nnX#«ÐùüøQÇwTfE¾Î�0yg¤„|Ñ@2l‘Ì'ßÔÐ× €í~4y¼>£©ø‹‰zb9ô&êo¨7ùïÞRIw/–ShW‘Pêú’åP¦M.¤|5¹Š~®¯/2ÍŽ¬³“ÑöÆlU`ÃX§Ñ[fŒç$ª©‚-£Æ¿ËºÿSk OBçÿ•5´�º‰AR+ÇÁ?êÃÏ xž�7”Xšnˆ¹ÑR!©ÕB³{†¢âè)ä(g¹0fßË?‚3qý€Í =:ã-Ú¢EàXâ“¢+–SEÍXÎAx/Ç,ƒ‡AÁ2¬*PÄKÜñ¼"åA}Óðh†\ g‚cò“Ú<+„èë<6ð? ÈÖÙr"“Š*d¦Æ>vf»j[ß´%·ªdz~‰E´î!N©.Ç¡p–£Æt€ÃÁ¥Ì[:ƒú†³ûÑ(E\4î먞"€làôøQ¿±e„Ï$H~^¹2gìø[¦›;íUm@Tí²ï[’®ß´¥¶BØ -ÅX‘ `×*ü·ÎúóØÄ0£F|~ƒ.ãÊðwNr&.pË>®‡,îþDÖpôÈêAJ®H¸( \*6â¨MȨ:2¦b02˜_3Ön y‘…4«‹Ÿf±bdѹ5ÖéŠl¶?mÜŒY#ã‘•ÈeIÆb”2£<%v^®—¢Á|Ljó«ªZ×±Újìƒ:ìeiÄà8.½¢tÀ6üΩOwˆÃ…Æ´K‡Ðý‘‘ˆ’s±‹ë3KéIWo¥§}Íy·”¿3†[Q=HxeÛ‘øXæxqò"ÜÌ:‚õ{Vd±Ì0ëv3bFÉx”Äf0|Ý%2˜E…Úb•‘ºG2H«ïf—Î9¢²Y¨ëX'0_ˆ;¹"ÅÊ“VÅø‘qZ«2UŸí -CÀ#0âi‚]³l²Žjf#mfÒñA>¹LÜ}I�&²x¬[¢¼4ë|¸�ÊË'‚\Ñ÷+ÿ@kÒ–"²ŠR‘u@'ô*mÞÔ©LÖ°¡Ã°¼@T‡áÎÐÈíéÁ^A½‹w -„bk•?:B(Ú*NJ~|Ü/©ü 3úúÌȃw¯Ï› öƒ,û«B!4NüÎÕÂNü⼃sßó¾‚S½‚Í{`ã¤_ËÈüZFǬ¢ÑUà”Š´UCP.îœa •ÉèIôɳ^ÕѪväi™E4³l¼\G»c†@nƒÀÕ’ŠbÜÒ1‚œœz�WhÄÿ¼7¢eÌÚ§:ždqèÈš’®«f†Œ›O¶LÑ‚ànNðq±ž(7Ø·ó(4º++Â/V„àŽÃZÖaà*K^´?”œ:þ(ƒj40‰± [îddqKt.ŸBÖ=?vKÂÑ]mnÍ%Ÿè76¦›ø€Ý?¬´#\= ®Ÿ,S$\ߪ` •`Èù¤óƒ�Ämqû:«™,ø™¥iwËw3w¸Y”Jæä¼ÑÚÔ¾¬Úƒ8ÑîR6BF,#c;À£ -~ÖdHw¢<ÍÏÞÎs¯bGNˆ@«ÒèýG R(ó’µ[ éâˆCÞ‚ -©r¨ìjq¹ÜÑôƒKx» ¥@è›Ámöxý‘cx]уâÁa+‘¨ˆ’8ÂLbe¤ÄÝ€,9„¬‚9f AM�Ó,2�‡uÐЦgAõ/dÈÚ0Ábø h“ÚÝO]¦c7šW£˜TUŸÈuʼnIvIô4XgÆÚ]©ÐÙûÉŒ)$qäM2�b3Ür£ºÅ#`£®÷NÇhÄ -³v ™ºCš1jdp«#2zy"cÊ1¹F™¹Æɳ(¶ÍðB’æ* -¿,Œ{ICHƒ.Š8t;\1«TØaðó±Ð -œ¾~_#ý‘¶fEi¶öÁ ñE‰`Fé– -ÿY´<ªX.ª–Ìí_TÊæu$S€§:‡nã°Ð-Ûu‘`€*ƒ×Èè65e¶‚Y¬YEÇYÒžYôG¬CKÖ”á'7‚Hb#œ`$h>"™µåNå{#ÕšY -¸¨®ìë+x�ÏYv¦f+ã„ŒÈ …†gd$R -î>#ƒ5³¸Z€¯zŒã„‘ƒP¥PÏ7+zœ˜RR,P—R2¬‹‹eã犋x¾6—wɗΛè']ç"’¢¢6^sL@†oà“÷•%åÃ(~E6Cý3Ž+id†T¨LÌyn™à¯‘¬zsk€YtE¬âÜ·mc2héyXÌPI›a™Ñ5Œv{¹ôY‡;2X‰,†IZÉãE†÷$Û©.åº3?„Ž#p“ÐÕÔ@/³s+¦t,ÞhŒÈ ›Œ¨<VåŠfú1匤ÎP×´&´—ŒY11w“V&Ù;°JéÍ«ÁM¿‚ëï]sÂѸ¹Ãg‚:µ¥öPb{îã@’†Ñ|@�D y¿ÑNÕ£‚X„¯À 2ùÔ -2œ^wè˜@Q@;‡çŒì‡î(ê®ÂµÑ¼g¡ »Œ&€L—%XÂ<3ˆqÍÉ;g,ô#jzŽñöC=¦B{De -‚䧂�ÏÍÈr·î3”cWCQ»iZ!F”€˜-Ü·ÎlÐÛc@9ë”…"÷ZoF¹WB äEh´Ãø`x3kìÌb=ª¸ØzÝÁd_Èf~ô›ç´Ôi!<hË7ŸIÅÛ”•Fµ{Á$® ‡Dzh¬&x[© *Îä4Ê ùmÆ«MÀi›ïç:•†mŠ¤Ü¬iºd6”—Š[AV ¶Un¨”¸ØÀ °Âï#€™$Ñ…$›yäÛÇ©ÞYjJШ›ÁˆÍÈØŠD[ØkX=^ÑÜñº#YR£Yòz|@íÿf»L®Èq(èŠ,ÐãNæy®ãÀ8ÒöORõ“t¨C H. ð—î‰xý52£–Ø�’Ý‘‘M:PjW®‘Úˆ“—[mš¥"0¿µ.4(Š.¦†jEùðzT¨ù:ÆycÀÄGF¾�(ãÅ „{™}OÊ3a*_^„ôªúF5ô ’‚ ‡;@yÜÛ|&] £ïÙ:zÆ£'†Æ›kRQ½¡1àŒË!† ž×p@A0.ô‘Ãø” ¸fåƒx¹½ í‹�ÛŠ¥W�ÓÂÛr 쌻g_A±¬yðlì;Ž…t%P¸�áu©¤¬?¼¼rU7ýÈxM]óÞƒ´¬3àÔá›Ðå ©èC“˜Ïö+AT¥£®%I´Ï$È(’® JÄ\_ì¼Ó½Ò hh»®s#´ü‚Ö·£p—ô -ùUýÌÈJÑwâ+Ïh©¯u€àÐÙh§1N¿uÑ(©‹äû®ó¶²}ÉQÅ<ÿÅ“d… º¬””¬HÎtÓq&h42�yò9Ê g/_ÍÉ2ã(y÷Sþ6˜ú§Kª£Iãú5ÑZ®3â&W¸¤ÈsBH !][ Sd²4õòRŸªS(éF£½ï·ÁÕu•ØE“ñ=Ë”c+!Rð6U‘ÔÔ¢í!/jªBŠŒvgÌõVü©G¡) -ý•¥Û¡›”l¬01ºøÁEý‘‚Tå Ú÷¥X¿“P<,ûAJ*YÙ—9z#„ܼÌ9q6B• d‚7Ÿ,1îIƒ™/Ó^: -\ÍB‹E&Ö9h`3Æ¥¶Øš%ÄçÆ™qõÈêÈ k¶ÛyíÄ»œÈšª1²dg§äÛ´—ìÜÀmž¥bf íêý8VCnoy'¡Dð|×< -³€¥bp£ÝÑô'ÆÑœPlC9ÅN·À¬² -áê¿2Tö0Ǥý‘á¹ÓW"fŸ/rÎ -‰.S<*b5pH!YG¡ÁØôïŒwg·¥À¤ê<ofIÌdu: {êMÀ¥ÑŽÜ‹'¦Ýá—¢;d×Þ¹u9ñWªøÏÏÊ4Àè$Ú–\ʶÄjµ \vJn&Öh VWLÍÃV]åùΈ+ÍþdoŽ95~¬ƒ@ëª`d ÒÓž¢¿Åtìø‘ñ“3¿²8`Ÿ;3Ûì+U€V}ÛÁ\ñè�‘Ýé+Þ\¦CeCóE™N¡ÒhZDGÍÚq> -Ðõe•+XÂôØØ:ÛDŽn€HºQRü`±;9æzÔ'T.ÁM±ü,ϼµcÙ¡1�ÇÒ*ëPÂjw|þñslHÀüj¿ë;kµ…bjKHÔbXzΦ!B>¯¹Êñ"9p² u¨ÃsfRϤ¢Ó$;’ ®Ì€"#ñè7!˜¯Þ;3äºÌPÕ™±^;©[ì´â¼$ÕbÙ - âyI §L€("ºGÂ)qØÀª×3)e†ÿ¿¶éjX^ëíU e¬$yi?˜s\–µø½M+L9åj(+Ý%Èé-mP-TyOŽµ´fJZ~Ø=ÄJ¦±a€ £ˆq‚P—œ¨„kððŠ% XÖ´ïͳðG#²(K1¿ubß‘ pÎ{ë˜A“ìÈÐ cÉfàÆÞˆØDzx!‰8 -ª>~fôðBÛi¹·pÅ `Q7aìþ¦!¡zˆy@“Aš ÆÿU4¤.\†ìÌÞeßÙÜàûr¤œN\Sa:'¯Éjd,çk]´¼ˆTÛˆ#ƒ£õ9~d ·Å£+‘-³vfn ¾ƒ‡Ñ7r }ƒlè‹ë <Aó¯˜-ª?Nº†3»¯)£»x{šKƒÆGÁáS(¦Þ¬r‚lp¬�?,.½t7A$\3ˆ»"ˆí¯°`ÂFbuÕÑŠGö5q”v¯e0Ê$7lKÏ-ôiJE>70�¤d :À€¨N€×½Å4÷öš÷Æ"°œïG›‰´ù“$!sù´“çœ<$¯UQ¾åribRÜœùÕ(N¹„’ F@?€À®¹™ïåð¢þ¶C¹Š -Â&b‚�õ'ôq,ÏFàÒY½JÆÎQ2+ô@ÅÃ|ÌM8m›yÑ¥´èv"@SŒËkDs}~Um<Тh$F}GÅ}‚ž O8Žq¢½ßæp÷ïq6@ -·\>Æûø¥Y䣶µBôyÈq™þ«ß—ÓÕoµòDGŽ%žKϵÔ#^Kä[”e.5LÏÀ÷;ôûõ >æôý‘ï³{¼ß=Ôʻίß?êÒþÞôß1¾‘1ñYÏ0Ð?}Ût&*Ä#‹Gì¼U¢Ó5™›•¯\žvƒð‰1->â-ºP!P⚞ƼÛ|ùS²2#- -Ã)E.-ûÙlñkDÁÔ t'íu’�H6¬ Äãøàz{Íà7©S�Ç°™vaW0NÐ%x|ÇßÙÅ·²øúÜæl² ý¨QñÚÃfú̈÷x¯ûÄßT05îcµ´ -š2ù9þ=/À'*ïH"°ù;ˆ0yro “(¨óÁ²Ì F+–¸œŒžå€ý¼c‰“c× ‹ßóÈÅFÓèu.×GÏÁ7b5ØÃåQˆ<ÎW—g‹ûí#¨^$Hí8<òÁ„Ï6gV¾ƒøtψ&)™QUôXªìx-F -(xNv"¸ºx@�Âõ«©0Ž¯b|ø\‡?ª¿#1×{µzÊQ¦1¸¡ÇGGñïïœÛ�÷Z@-;¤“ÆX*¼þnÏ¥0æNÂÌʉ·`§hl9ïÿ}µýú2j®®ßW*e†ïÂËÍù-Õžsj'_MSè…-ûªÓö¢6S#)(_¿_És¹ÚG°ó>syèkÈÌ Á�Ä#Ÿ‰ÁïXZŠÓ}º÷ïïÉ‚ŽCþ}p_úÈm]9”"¨92@݉œuÝÅy9E‚W )Ò™ÁƒJ G2[æÿ'¨onˆ¹ áö{0aÅ؃jñø -½d™Õg-ôI¦#EG±hìÓ„øì¦u/‡æEY>ÃÍÓ‰P©�aÊÂ[k0¿~ßy…\ªÝ"Gra¤iæ˪ˆLÛÞâ\;#ì%½ÏËw %ÝÂs¾“1|TEqеs%/ÐÁÀ1î 9ÚÃ1$mB™5{£´@»`ž+±ZýP&€ÉŒÔàÔT<WúÈ…,‡Z0¦â^n$m"ûémg -•¿ã# oø’˜CÙÎM§¬ìsPbHÍšÝZÕžŸõï« ¥ã‚?Â�Ü¿\ç¨(r¹Ï (²¸Áä -ÌôÔŸìH(À5OwÅ1÷èðÖ`lj]H°» -¥6Æô¶"Ý©™}›f00”¥M·ç{¹¯CiŒrNßÓ}€4þGÞ´<KWœÑ9Zasêܛ˃ªzP9(ÇC‹òŒ`ß%”¢Ð¢]¾ð -ã}/÷dyƒS\ãI8ÀÃôDQxºù -ào®ùär-|«Š‡¿¯,²Þš0¨\O›�°jÚ^;¨“ûD‘£É2ì8ƒˆºÇï½àGÝg¯T¡1ÂJ -\lÁÿýß(óêv“ßÀÖK™‚l`/æz p¨³VûþbõÅÙå-èB9ýԇɯŠ0á?×(õ ½ñýg©›:„ç‰@ 4›UOÂrR¡µEÅ;ýŽý°’þ!Љ2e>Q„¼:�Y¤:JXÐSl…ØÑÒ4•÷óPF$´×©_5b±\;I· ó¡Q¼À%gè%ìô½Yä‘˵Àp’Ó02Aœšê(7Óq ½¥"IX²€#¯€õ ÓÓ¿Ü¿aPx̪kªÙÿÏz¹õˆQaô¯Ì£AÉÒ·éKòd Šxˆ¡øͲÀD–‚9K$þ}ΩžÝD`{wª¦»§ºê»À»È£§œ3HTÑ{¹Êû4ËÏ=Á>z3kE*ºK<Z ê™~YΦŸS@ÌôH£ØCƒÒÉLèè>• ¶TØ”¦x,U¢‹–¢Fth‘¸^ˆOG«žC9Â)s\©¢‡ÒðUl\1S.η'þ{þ|öòÃÝ—ï¾½{wûþ͇Ÿ?ðèÅï{J¼Ê'Çg¿ûðîý?ŸþòÛoúáëÛ»7æ~rüŽÌ?ò‡ÿ?ý†¿¾ù?-–ªšâ¿W?ï'Ç«ïø¡/>9^ýã·7ËÇgŸßÞþëxñò«¿½¹»{ûáýë¯þýúë·?¾}s÷ö»×¼°·z>ï/oÞ½ýÅí?¿¾ýþõŸ¾{w÷ç·?ýø«Ã‡¤ãå[þùéñÇO÷Ï_Æßõoá“¢Ó=©r=|Ø©uì4Ï¢…°²º-'<3-âžèPÌJ£à”Zmg¼{†à¢€<r^è–„d(k<>«Ç«7qŽüËB8© ÈV]lB?¯ÎJàÛWУcô'WÐ�PÕ 4H�€^Àh”Øç¤h¢iXˆM¹Æ/¥©A¡å,Ñ´€{9KH -ÄX‘ ™£@Lü’¦Ó³¥cŠ’X^™i¾;@?l‚ª×x—H$Ö jaJ*ªÉnVÅ€‘Á˜AiKdd”›ð¶3ø)Öh�½e]ës -´¡±Ö‘SWx¬š!«š¹\;•gFMugtàȸ2 ëÈÀí@VýÛªçqÈ‚1QdÑ+6‘×$”î—KN™1pÅOCÁ@T²Å@bäÐQi#9è}ƒB`YXìaÙ‘äq@V;fŽ¸›ì•#Üq¢Á«)¡ø”4ˆLsBêIEëf8…J²©^SçOô‘½†X)\~4L3&¶VÀ÷N›À—¥&Ò-g:¥Ïéå3 ¤ë*H‚g‡IcAõ‘mG’BB§H$Ð2gÄé¿X5q”|7ž×ܾĄU/Yâ.Y¤í, -ã2«0·{ŸôqTC6ã´u= -.RÓN¸<%4¥Žç4Ä -ô†³Í& -—‘£f6H™BRÐA,:œüc'Ž~ÿÜU)ãFŽCæ‡w LéDIÞþ)XØœÚ|>›á÷{ÉÉ{¾–’4à „7˜&€“'f†û%#£€Í@�b‘¨ ¥°)ç¼aÈþ‚~?Ÿ&ÄFˆ"*K’LÅÿx™µUU¡Â¬Ÿ—ÅQ¼k4+Ã%Š¤Hí‡c82W3EVVgæ’mZñ™bM6÷2«Ëü —6üdvŠ“T”Õ>™7ý\d0ðf”þ°Ò]+@�zʪ?_®Z©¼åX,ßÀÁÈ@€žf$åNdL:‡ ì¼6àë'*‚±iQvÖmš“4O9BÿX&r,l‡<¦Þbؼôßý=\ÁîÄWŠ9.'(%OղбGÉSªg;#á8D#pð~>͈õCRØåIO<³N[ha޲žš¢òìŸI•R}&ã¹Î}’5á:ò›tJÕ!×08¡Òú°]ÇâDô#dÜ•ÀìÔ ~\ Ô®€©—$´ÓêAÅ€(Ë—‘‡*pÃ8þU †ø[˜š¶D,²�ÛnÖ²º&ˆø&`Œ×æ€ãSœœá'š eìmŠãÒU—Ћ$ï—¤4½D²Ðß‘%¾Ç2à€ŽÕ7ƒ64CcžL§÷FÝX‚»6êÌ26c”VTÁâ˜fÏö¢SµÎ BH³Kƽœ6<ûQ À3SŸ*°6ŠùÜë…[‚@ç‚£9®\8D”+iËÆ»nµ’.ê5SE £‹3a[âQ¨"*vü¦–ºÖ9” kÒ³L9_U›cßô?\.E–B{Á‘^¤çºæ6ëÀNŸÇ ã0#ÂK?ÒTKŒ‹TaúéWŽuO0ñ¨Í$oŸe÷Ð9¤à™ÛÚïÀ\&´º;´/o±|mÂÒ’§öŒÑg4Ðì—Ó…oè& Ä"Ø#dMÞ¬.?›¸ºÅk{'Öµ‹ó U«DBÕöÅFœÂìfÙá°Ð8~|Vl xÄŒU\%S¦á«-4“~‡Ç§oš™\ëܤ09 À–Ë®O[ÁLÏÌ +ŒŽªÙ==(%œNu“o‡£*Ê+ÕF"Ñ*ûà>SfH:#Xª¶6tYdHwYm±vƦ!+zšA+Pe˜Ö¡Á€VHzÜ©*c²‚ÒÏkÌ…L–ÇŽuF‘!ÖïŒè12êÜg¡=§k#%;eU;Ù®Ë@œœê/Psw4L1Ó´}ÂJµ”›n‹Òê'Ão«+ðÿ÷,|qÍŠisL)¾†ëEÊŽ=,WI“õbuÇ ø–mÍ[ú0�ÖöpñÍ€]b ·‹ BvÃ`Ãk?÷[‰¹10ÁÒà_Fá–Ë [¼CÎ$Kܤ\#ÍsÐZ7:9Ô€é$XeêÆÜȮٸïŸo'Á0PŽëe:ÊãK¢ÝÉìÓ;k*3Nü¦©˜4$*…$ÂþÌëƒ %ˆÜíBlÀY´=>w®˜ùÀ C •5ݬÅi 4ÔÖõ…çìBƒ$Ôn£H`û�¦d`¡`w€5�a¸Ü€9®ÃQ½„’[ HUùCx~®D¨U'¼O‘:ì{=6`F( -¶ÈoO—E¨’ïW7ãSðC~x}ªW1WòE;Óýôþ|@c:ëÅ™ßéšEä*wK1ä0Ø56/¨ Dú =öéúÂ]nB¦<ý¤2?M�²ø=Ÿ $`ÿê’cŒ“Â"êc»[ŸŽ’e@9Ѓ79À¸/œ¿ @‚è—j°ÕÁ¶o@Ýo5Û�zp¢Xv ËûÃr§*àÚ/AnûØÌø}œ3~}Ü^£².By®EÊÕˆ.¾dø‰à4ä%kqK”ÅvàöQ°Tu ÷˜=,櫉žWј -qÍÜ&ºà>°§N>ŌЇåñžè&)f»çè™Ó¡†ž˜sad/÷qëL:`îF±M€3;w<WÁrÏ?(bÑzRBÀ¨«qE¤ÍŽ.oí࣋Ãá¢å/¦3•›ˆ¥pnlíÊÅjCVô*×3 P´9ÐÇu B€¶§o!|9Üj[^‰~Å¡ÕM±±ð±åˆèf^ -x/Š¨”}‰j{wIÖ¬‰ckà2C\êÚgÞø͇aº1tÙ:s¿ÔC0ÀQl0lÖÐÇñüÞ}›ª\±h9nìĨÄKSD`Ç@‚0w�ð;Eó|Þ‰º» -ƒsFwJz‡ä0íg®¯ajE§¡…ýM»W“|>£¶‘a<œ=ôúfÄEÉ -€ªx~ˆÐIâCŽãÄx‹ A0—ʼnŠ ó‚‹BŠÝöÚ5&Y(‚ùÁX6¼š¨ = L.T9†ÚË”. fÕ%AZüZ®ŒØÇãs•_<§Éç±Ø\×á)ÐA|È`ñ;ò'FlÚT =^NŒÓ…ð£°ÚI8šEGPqk¹.fòIT¾+Kå¸G}&læ8\|QGߨ—t}<h6ºWªÏÁ,亲ÁéœD į˳ù«^„¼É®<§~íq «1ÉÐÈÛ~I5J@3hx^‹Óâ)võ^”ôx™¤Å¤”3zq‹¢ÿ²]f׎Ü0LEøp_âqŽßU`wkF’<O@s»psF-Û3&Ñ|ó;0S8»\Å–ú]±4©¾®‹žô¿˜ƒîÙœŸiÓ³þŒ–S–‚_±AhÆʉA›®§øZ§)Z°$Î7`µ'fCg lqA -Y”SÝž¯(´ÈI±7Úµ?±Ü¼d1°†ëª&xê©7j\ªZb20Ø~dÄÁ‡/¸ë£‘¬Ã+¥x>^—×[̾mÿùûT^•õôŸ1g«f*öcBÿ¬xŽWHU>õC®R„’JÒ`\c¶?á„õçWÈJæZ‚`Àï5á}ýÐ=PнÜgž¢°ÆºÔdw@- ±§ãØÌ$¯€™ÀïÀýô#\^˜Áúþ -²áÔì“Ñ©ÉwS®bᆬD{îÚ™~wª1Ç4[˜›`sË8,~ĬÀ™´(Ó `[º¨w=ˤ6½ˆJ5¨Z5Pº¾’wèÔtö é ›Ëq¸`̳ÝXl)ºA³—AZ˜œÊñÞ9ž& LŒ¹èg.NàœÊ©ã -âôRÜû+IËi 5Ô¸ì�ô‚2º–û‚Ç}Pï&Îáå°–ÝÐP†°ò /ŸÀ¹c׳ø�´Až|… -ô�Jc)+£©ø a�š»dÁ)IIç’+ˆÃÏ9w›·k<@‰k AjwïÚJOráÈ47CUbùþý«jIu–ø6•€ÄÚçuáŸãÚÐÝY„«¶Ãˆawà\£8MI'Töû«¡ßm"Ê ŽÃºJ€YBJ#Rºù§À+<}¢UZTçø¨qñyýpÊG d?ª¶ò]î½Üê;¾Jy `ü!°Q˜†@e„Í<Ëñ_ôø`öëlÈã¦*JãÞõÔk*5<#B�ˆnk®¥ë]Ï߇€²—•–'ôÿÎ]åt›¢LŒÎª-ûù{“^Ú#%þŠA§õÒáŸÿª�@¾•ã´…™ÀdÓº‘Sªys0O¶äã£îÍ�ŒÀ2Äïm¯¿Û‚ü¾YÁ2"8y•‚Tª×ú”fØfÂ%owŠåe°vhôÌ»·@a-@GSžJgªÃZ$AÏSƒÜbßw�Ö7+}yünÏ( ؽööR/X5"üiyŠâyZ+`k@µ~ ÔÐgkEÖsŽ#ïð"qŽª¿áJPÊ12°×VÛ -×xöðY‚2¿ZwPé‡î¥/Ï p‡ôb}q¼Œ<»Õð\q¾¿J‹jg‰2¿}úø_?ƒCõ¼ü -eÜ5X6(úµ´6¾FÆeñn°‚ºB;ôz¹)nÿOÖxÂŽ¢«—® MFð,\ZaR²ì&2€ƒ3¼�døåFT~jÁ¦—¨n‹ŽÝut4\¹ÿ/Üa=¨ãs´ôÄÊ€Ö&e¼–šg µ¨åí‚çéW‚¸².ãZzcpNläóQ8Z4׸ÀèÚ è#À1î唓iH…âW^"›�flGÀ·‹�ö3Di€>o×rÙM;ÁEŒÑÐt¿7xÙ›Àlç÷ê(T3W¤Ö´òYKI`Ò•(•%çlÙ–<Ò¡NÊÆðpѼ—së$æw²«!\'A ¼œb¯Aw|VÏmk`hG ÄÀSS/u/V† ´.èîu鸓Ôù Êb€ W† ãu–CRòÔøXÁ@ÕÁ¼*¤ì ?káÏÚ+L¦È֛Œwè#/„ˆÏ§vØ3Z™^_€1ÉE¸X”áyíW�ì¾fê3ˆæâ3ô÷ÉŠvß/€Øò àzÑ6ä@ð´ËÌ¡$ 04Wê·4¯vA‰1L�'2v56eìúL2ÝMí$;H±èž}ÑÄ”*¦Vv Äd°°±ásÁ¹IÉb+ÕHBó“:ŸÇ25¦lí—×"ƒ\‘!j›ÁDœ5ÒF^“1ð£ÏNç7Ø×qr|®8̈G$Ú&&ZÞ�M q6Ÿ´\Ë!šè²Àœír<ìØm¡òþ1KùA-&%¤a:¸E 7½ÏÚjÐl¹_‹p¿š�"\Ù)ô‘YDî¬ËT/bÆÆx™A©sdPŸÈèA©G’…áÕA }Ž_˜±Ð³S•«AJÈ}ç“uZ†E¤þØiòî&—ŒèbÉ ´–Î]µñ)Å}?vÈ*›¼‘>.ÀpI¼D€1š5ô~ß3-¹áGF‚¤½õñ•µ9ÜoJïÐÎЧN«vT%×2d«ósð;Ëm´v±ô}÷PÜAyIÐä¡n˜Í£"?Ù¬çl°Òmg¿²²î‰¡¡:Uõǵþ™0¢u�“ø\q½(ô³InwõGÆyIàv1iô`R,¯ÁTـȀç]<mÿ‘]c®xï³ö»gþΦŠfM¾ªëì£/AŒ&‡î 0ѵ—âBXñ¢7_t+èŸ'@A™åÖ‘U -ƒFÖT˜˜`Èf¤^×É@5˜1 -ce†;kJæºv*th¬á¡ïBÅÿÏqp¥&-ìR,£70¡ö³ -ò˜šr’Ÿqø&âkºF¨1ˆ$àƒÞ=•tKÅ榔#ŒœuZ²7ЋÖ}m&�wº$[ZºKwà”ÿCÜ<_ɼCõ@w;[+ ùœgm׳>“ú™¥ÇØÞxB]Çš×±†qál˜xµ²-;¬tüÎ8f’ÊóZ¼¿Ö©à1| -iéfPWŽ/ƒøD�ÕÂ<ñkð@à -gk0ÂQ™¬×p¸A(zm´)è²\…ÅðöýˆBíß¹•“q÷2úã0¿² È©âE.ä’}š%ÎF³m1¸-Žbze)•VS'r4ÐyÐNYífHv²ôd奊!¨qUkð!ö»ët ÌŒ…’ÁËæÈ�ž@ûŽíKï‚ÉBLŸ¬=íoîëôµb§¨;2IJ4f; aÝHПŒ%Â"¬ru¼ZEaN3,ùEÅs©h-QÒ$2õha{œ³/íG†òfÐ"´WNו¾³fC'‚»”‡ªÖ€ÏªÔ,î°3øµ%VôƒØË|€¼¿ÿ^ªa9�ddûñ9NÐaFšíÊëè{Ž€šéåW§¾JõÃÀLø!wɃh˦ì¢é“(Ô×…�í -xËr³êìLù3ã\ÒkFß~¯ÃÕ�¯s<¤1/±6¹UÐ$Ð":?ªÜN•AþA�°Y¨’Y´m7G™cÖ•6T‰e… %:ÝBµÐ)z3vgÈà5׳Ñ]ºe9`W‚UÉšs^–{Èè°âŒt€ž£I·dL„ ¿Ÿ5&ev -ôpÝÙ ¡Üâåð©0&!‰ÕªØ[ƈO)çCb&‹*�†TûLÈWQvnÎîÙç#©!x™@¶0ãÒö’;Š=7ÄèIÜB3ÊÈMú”*5úþ3áx:=)ñ›‚ýÇ*UC×a2¼¯a’åjŒAQJ£K=5gG:Ó%ƒj߆…hN’‡€ýB`w:iTïŸùÀØŪj¬@b“1qNc¸N<M(xU6Æ¢‰0º_6”ÏCFé6mY7X<0¶„Y±Ü|žÏ -TJj~ÞÂ+^6¦JêC‹‰ä2>3¢TpH@Xsî-Sª3²M¶ÏΪÕelÛ`G—µ‹U¾³:à>íméˆh{¸/"ÈÃÛÁPq·—D"ò=íĆZ‹[®ëc4'v‚ù¥;ããI§šày"]×ÍX€þÉÈ5 -Åð×x‰t3ØUšûÙhÚf1;ç½T¶dÁÏ%Öª‚¦Ú'ƒ f�èã< „Oò?ëe®cW„á'àNˆŒ{ï>Ù8$!AhY€Ø–¬1’ßžï«>w‚C„¼hæVÝ^ª«þåì;)g}rÛ rÛ–RÞÇÙP2hkñÜ¡ð.¥Ôà’.µ/f ,æ5ìOƒ4Á¢)ñ|Ái¹XÐÕÚ?ß‹ÍíŽRÎ/}ôm=N´¬ƒR#N ¬kÔϹe÷¼ž.¼Ìž²¸R5?WžfýtMba±µ¹ãlSXD]«Qào°×ÇA-9²C‘ÞåŸ)|)c ïÅÒÉü\çiЩ^‡'Q 6Ž¿Ip/jK›`¯ãƒ8ýåT*´§ñ›‘ÊØ?Ô¿ô8«j|¬LAKVi½P`æ½S„èz’ð˜qcŸÇIàÌb+dk«¾â.×MB€_×pIç8̸ä=–˜,)âgkÔq§A£"Mk@µü‰÷ AjÞ¬ÃN*,X•AÆÊŸ:”àOÎÍök}W(B`ks’îìÊÛ5n±¾""Æ*™ö™¨+&úø=–a‚ -“ÈÎ =ÇD¼#ÿ‡¯äì•Â`æX†j Y¿øŠp™Ú‚jrIÕw£lˆc¡ôQB”{1ËU¡ÓëëIÚãƒztq“â•èó¤ôâ =ÉSûånže{zŒŠ„à…atÆhg9ÏòÞP °L)_ß,ÄÐÁšØ k‡ÚÃÆj°ôÔЂ¹ðÆÁ#t§Ìo;óÿQ5GhCõŸüûæWþKÇ‹?üùSüüŠÿóf;RüùíóÕ–%ç.ÔD’»ó\™ÙãÝ•“'¤nŽOd-›MZB}¬ÂÍ`0VdPu3@׺‡¨ª»È ³Æ΀UÍ(²ÛvDø=ðGĢ5ZÓî�G‹:A¥èUhdŠ©ö%rÇa-Ñæö}r üeKûå™8jÉ™ÑZ{'³Âҡļ¨YSd«°ù4žÐ–ÛSV¡Ÿ¢ÏR"£¨Mˆ aÎËu‚³fè)oûTÑvK<LÒN˜€&î&&‚L1ÐS‘ñtm}ßcMOÀÅúå!0>Iµ½A”rWàÕìê`,éhˆ0´’sƒt¯Hb^1^=_üWñk¹Í= -Žå|H -Ft“öP!%@ƒNfHñ?ý¬>t©‰–w`Ñ' cy‡¼ 5ÔÐðco„®>`�ÄQñ©?crxàÎ0ÎHËŸ³;v`“ OQýxHìÍãú¨õ„JìÍ1ºœYLœˆ�ò´Hš´G|[©ç·=>Ÿók|Ž®©~(îUO‹UÓMmEVßæ•Eœ,Úmîu¨„û®s]Rf“•Œó�ÓøTSD¼äû¤Mi¶ÔNô`O©„½ S„ cY�RÚ#á}Ðod ™Åj&§#âYùéŽéæˆÌZ[ŸV¹Òy:m“¡&^çÂùD°¬`kI7€ñ.˜âÒjVBán�âRÚ’2z;øI4|FMÚÛ”î4ŠnfVÈM†4èÄjN³D )¬\Æò(%?Sˆ©kËÕx?˜OséõŠ@Î0#ë÷4å,™kØv¥h¢µÂŸž´Xe˜å¨íu³üA®? .ß‚Ž9o`ÇÚ=2P‘çõ±¦#°7 -Z6àïÃò¢Y´ß>mÜÍâ)öNè›ÈÀ0o^vkT¹„L6ƒãÖ‡Îh±Ú埨Äp4êR|èK»Í£ÖÓíñ¦ûN(^%9ø_„(Ú¨Õ±vúNžõ¼½6Û/-%G¤TuúÈŒ¤*Y´\–Q¬OÿòHh)'+ä¸Éô±Y¿xÆ;\´[ƒ®ÈB´ë#“oK½O¡±t#ž+6šÈ࣠C€”.ÆB¡=Új€Î™ß:h‰kNa•}Ð0ÜwGýèö6‡Q¸Ó†ˆ9d(º-ðYBTs”wÆ”ðœ°"uƒRl£YaõŠbÐGœ\\fW.'ýÎâpÞ0£³x4Zøã+Ç:ˆüšÅ\ÖbÌ¢¿²Y2*áͳÒÛ΀{##Âá ƒ>{}Ošœ[ìjµeÆ¢×í0° ‡{™Ñ¼4’géQ³8Eõ›�mµÍ 52àÀÈÀ•yÞ£^³0ôº˜˜T÷ ´…¯u¸(ëøuÑIBƒ’tyîõsü™M®ãÏd:köÚ…n}H\äÜí,‰PfÀHnÞU<ôöd–fp6øKvÎWß"§Ù˜ƒ™>T?tÉz÷@jsx‚ù>ÁŽ!úþ6ðd´ºÝÃ)°›¢{þâãý«·oîß~xÿúãçã{>úú;¦ Ü/åÙñü—ûoßÿu|ýòå‹7o>½ûùÃýksŸß’ùÿBþ½º4I0RF¬œ¼›é-õ`û9¯Ì‰Zk‡Ö,š›!Âtø+p݀כ͓µ«trؾ㪠1P&bÜðŒ¿Ç—P?+®‰è‰@ÎÔ3Ël Ýf?‚ µËô]ÉÃß!ô¿ÓÌÍí�µ{h7dÊhå¯[bN3tf(»ÄD}‰Ê5\¾Ò*5šyyýÚ冪bŠ ‚f âÙë¥O›z‚£‰Ý¡¶�ç¥ÚÊ×è�ªK÷Âxñ"饥Ò#Ñ•§l�ýXTlÚÐ1@öØ)•¯å’YCÙûÆz´šŸ‡ÕDæØfP½Új˜J*ó`5MÛöÑn‚+¶˜KÅ–1rŒË Ò¿4Øÿc'#è‘\±e‹SÂm²ë_ñÝWÿ0�aÀç~ endstream endobj 36 0 obj <</Filter[/FlateDecode]/Length 29342>>stream -H‰L—QÎmµ …GÐ9ì$ÚM;ŽO@GÐ B¿Ôê>�ÒÕí³ç[Î>$®Äìí8öòòÊWÿ6îXslïcô‘Wï~çêm¯¶³÷qÉcº›<¦›—ÇsÉ#–•ƒçZrˆ9̻٪¶{^ûªrë]^ÉqåÕ=M^½·uâÄ9hùœå1rv<rÅì'•X)Oïåas+Fεâ9iß±mñ³{âŒvûJß±gøä$Ÿd<RN9¹óÈ{lâ{Þ>šñûpãjPmÆÜÁ»ÍÎ;²õmÓ¹#ñƒfŒ=³Ï®ð~ÛrȱV?ã^›Rêœiä5ÌR¥Ü~·îsOŠMO|¼ºï”W¸ïãÍåµ¢ïŠÓvòX{ž8=2åᙽ<z›e‰'†ÑbýyÀè³>ïq>7ZŠWîa'ÏFÁp jYžT‡ Óò0#"ã¡VÊc>1p°<¶· 0:gžFL~ ôU©£«R4õkè"9(ÂE¹(ÿg338¹§ÝæI®9Æ«%›Ów÷·âž‹ç¤›§Ük¦F©iûV‹ùH- …Ѽóe¬§™+@ã©e§bÖ[3$ˆo@“1LÁ5t`§ÐF°£âpYS£€Çº5Bøï^E]ËwrÙŒ×IVÅQT0€—ß‹æˆSıæ½75¶FH“ǺãÒi€Šš-fz k¨‚ò© ’s¤?'µ›0dÜç¦µï¾ -P‹;î*M2¦4Íòñp÷ Cwryðwå’ÌFyd4Ê['áÅ¥‡¼–>+¯i£¼Ò²âôtgLºp<VSõȘü#ž~<²eÄìÎ÷Imµ%/ÃËk3ÿòjVQe2áªs£æÏùiç¢ôGpÖ|ßÉ(emd¿u!¼úT“ŒL0 -«$}©©SiÑÔ±z}˜ÞTéöÊ=ŽÝbã Åe%Ê•;~j'Ä ü©htñYÒƆOi_ÜLã_âvîHŠ7PÄÞèú85Ð'ȦÁ[}¶{ÂLŽÑµ( Î`‚FLg)’<¬µöª‹Ý°�lj’Ö„€"^ Q^§è—ñœKŒ6C|…bMÍì¹.ÏR÷êÜð§nª·5¡ÜÑ**¥Ña\]íktQ�sƒ(ÇÉ3A‹ò¤û—r„ð¹+Iö±ë®‡î - ž“ ‰4Ý×0P3oÜDèT-•0ã õrÑ@1jîA“L·¨F,¶%Ù…›Cÿ×â†ö´Cè¥ÖŽÚ íÀ–b¨ºS¨m}A\Àb5ÈB`â*bG’t0ŽÓ®»R0³!Ê)B=q¤œfŽó±&•ßáp+ƒd|-Z*zïòÐL—‡½'ÙȨãÄ%“ë` Wa ©¾2¤VDè:ËšOfh¸Ó”7|ÇÌ<u9ƒO‘@]Ÿ%¤ o")öò½�a¦»Âä¹Ú€_ÙYÌkAH¦hôKˆ<Úà¿üûö‡Ï_þùéã˧ß~ýùóï×wüôõ?H–þß\ßþûËçO¿þïúúÇøøøÿ/ÿúíËÏòýæú;žßóOyvòDÚl*””¼3Ú/e7½`9†7¤ÓEj¦m<:M¶¸ŒõÍZ¼äHI¨65j²<¥ÑuD˜Ô„Œ;i™Ê‘¡9µvÉX]†XK@4dx/Œ2º–¾Œ¯$ 3 ”^縌¤G¤C¼f¨?á&åÆЂpvy‡Ò]Ùés$^´µœîw‘»Ž¹ ʬ°H°v†~IÊŠ“n(>ðÏdB®¢—Å-Ù4â é(X–)»œk´Žêè°ØÐo^×àoˆB¢zÝÇê†{”A‰•»¼£ Ý$j¹Ì:Æi½¾B“6Ð,»ÎÞy’B¢ô2´¨sXœÏà”8ÕLd•4©-)AªOº²C[±À¼µç¸¡XæP5î¡Õæã½»óÆ*Z†á¡£±Û]ÊÀ04Ä'üV$¬¤æX‹ªö#ûO´½}2—“áº`OKý·¨«Ncu¯+T:Æ ÁЩ¼Iòt,$0hPqk - -XÒch=»4ùÊqSR®Àï&qy1ëÈÇ<{ Ŧ½†â¥rDƒežõ%@$@ kF¨…ë¥r¸3K¥KV�µ~ë±Hà#¥0Åþ&Ј‚ž>[¸ž[°mð „>Z@pKášë�2t’ڌҀÏL¿„´“`0*5é94dÉ™]/Ž‹œ)Ùì\™ÈƒÏ€?AKêá>Äð€Š-JV8y<µD¥\j…v¯¥…Þi6z-^ -ÂKáB É~G;€‘jÜ4ôÜòYjÑ]€Ò¦j„‹Á9§KR½$>ÝÞ ù„s)'Ðq À/£®´Kz³È•Ñ¤ë÷’—ôE[(€ŸŸhÅm2®Q9YÑ„š#d`øW%wæ„ó%eXù`ÀôUï6«5q׺v¤¿‰UƬÝÌDéw½^3¥ÅÐâ¶UµDò×›¸5½ ‘‚v¡Úg<©†Â‚yÇ&`žŒ¸P«‡ ïXã!UÅH•Kï��F¸.."6,EýzÈ"ìëè½yuTÍÁã'j‰z`ò@ï0I¹5°\p/€`›‚ý¦Y´K=@Ð.]ÌÃp#Êy0]1Hëš’Ö¥gy¡hb{²•{ÅÞo¢3J hƒäduNP%#@V¥N5KS»;dž2(PAø¹,›¢ÐÇ BoEØEÔ^EMüÇb€û¶” -;˜w¥¨ÉL8½”öå_:®ñúS«¥·iž¥©yNM)MÙxîÊÎå)3PJ°ò:ÆE]16x\FGGž¯¢V›ÍÁ´]eè*†QœF{¡Òw8Š¦›RX -.˜ÖlJò®”ÒZ@j@REi/ÔÈPKÍ!.PV(ÐDtñzÑóí˺-.kH%J*%Áï¼p-“c¾à -Zp,í–«:ïW5 Q”‘¼ŒÅËa Uß©Â-àúZ¬ZÛ¯Š5Fú€·Ù¬u‚)XCD¸¶dž—ÅÐc³ñ5ÙaÍÙ -ÌKîœhõ(€—¶0æzxœê«® 2°ùz¤>eà½eÐN{…{Ž`EX9#Ji//J8¶Â£nC-$C˜ýù1»L‘‘_C+ĴɃ-UBG&Cõym¨oj£!G];ž°gÈĦ*�óVŠ‰íXoDZÓðR¡¦„4ïš[ÜÆôš^'H‹ -1ü•˜‚Ôɉ‡¸gkßÁ„g{v%ÛIúðÝ5‹ýlð†X`ÇAÈI`I3Úݬ»¨QçY$+« ÀsöÖËœW“£ -Ã¥CÁu]ÕEH" ´FM€-Æ–ø÷<Ï9õÝ!€é.R÷éZÎò.r—®¸ÈOg l„ƒ8¸[2Àt]€ wäÙ²;ò’ ŠQ¨#(O ‚»_€ÁÄ“:>Ì[ëÚÕRVt6pp«¥_JrÁ¬J<Q²^C["3–åÓ{sìG/Hs¦zI4`†åÌ´NÉ^;u9^ ÉvÇ~Ô}?ÔæÐê<ÊTOÄ?¯lп«9䬗ٔ"fÕK‘ V‡{³Mâ7à–ó¤ŒðÀd1Jè¡ë×XGâæŒý+‡5d�ÊT«ÓJ—Ý^ÉiÄ>ðWglˆ8*TE[5LÿZ^¼Xhþ8ñÚõDõ³Ì}žsfŸ#2ΚÜ/%ÞŒ@Ò’üº¾ôÜDXË(‡Ì(Æýl`;Û·Ô'#ÈyDXc#`æiwÍPåqƱ^•(]Qpô3u±™DV´]ŽˆoölA2o#,XDŒw‚„v®1ëPÆ‹a÷i'’œraQÈsá«¥æ -ŒyBÎØGˆ¤âÌìjÂ] V@†“&vÂk©MÐ:4,wr_a0U|ËY$jhÚjÅ?±ŽLnÔ6#bk-}èV™×¦Nk½¯š‚—¥µüêi�붚ÇSäÆG<ç†/‚Ò±z(´ó& +%Eb€Ó'Ú F˜œìV3?ÊÒÚ•�P:ËÌ 7$oé!»õ6;L·ü hb©*Nƒ“E!d+6b™Ù1Eå0\í ã+áøBÝÝ'cÒd‡‡áE/“Â{Óq©ã.Iø¼‡›vÚ¦½ÐÕH@ˆÉ1`.™:þ†sB<xduŠD°(~—2Oâ°Aq0aØJH„ÚÜÙ ÑSAá.ñŠåo`0cZ§©aK#@<ù¡†"ãòŒ€À%HÚV=:ШÍâ¯ë¡ä0b™"‘SúÉØ ;ñ""˜Ýijg'†¸|”¾\%£hJ£ÂF.…ˆÙÅ,#âñ ù˜iùïã‡ÃîÈåi<´éC¶]Ÿ„TFªz¦ÉÛ1…Ïœ&•>·í�_�Sðž–ˆiIÙl=ò¼²ËJab^®µî¸nUçÉaO)�§!„¸©›¡ê3‚»Íˆ¨ã¼˜TÍåH_––»Õ—(€•ÍÓ4ò9Ì;Oi(ˆ:Pñ0ÏúýuïvÚã© 5¹‰W¿·Hô]‡z¢)‚é€�JÞUÐÐý#G1ÆDè¶rÙÐiì ?CǤ£‡;„ 8X³Ú�5ê�eÌ;8 N$™*g\ÁA)¸3úAî)×Ú¡xLp•cÈ9µ¿É×\œm¹ÓbA…½½IQ1Iåvp£ÇŠÀ(œ—Ÿ«T¢Ûæ `5_ÀPNH;"›ªý2W„i“,®Å¼®yŠQÎ!@¹D“¬®Š># Ôþ‚¤Ñ!b$—²U�q¶ô7|TŽŠðZhQíø^X¸‹²Û\R¦ŠÐ4Û© ‚RàÔΑ³†`0Êñ£¢ŠhîO>q‘*³Eáæ"ž¤Þ5Âërw‚ð%,µ¬¬(îaé/3 _ÜÑÃpg[ÿcYÈA¡D"Ÿñ¾~ÒW…Éb)hI¢€ëL{®iÐБ‚‹Y±‹Yôo -£Ü‰-Ö µÏN ô¶l‚³â]nM3ÔË1‚bÝ5Ú.¤mw¯‘t’gA·ïm•]L7äUԽ≂\g49Åæz4ÎØ™š9DÌ‚pr@ï\Å -ŸŽ˜Cg‰€¿s2(t°Ç½Ê«8|Vtý (Å#(;<'wÝ3ÅõŒl4DèÔ¡òÐÏ÷èïô‡Ö‹´-ãZãmÁ0ÁÖ ãdŠ�8<G|ìöÒÕPÃ+O,÷RI�h¨¤p¤hleL€Á #é9b¿¨šL³î¶¹ëúÊÉœAa Ë^Ò�îïRÊu‘§F -Ënc.‡ ;x¾’ @Ë$4fNoT†( kÄ2 ßB„sšÑŠDteDzBEHš x–Œ¢ûp1…¡AŠi‚š~ÒĹZ¸žµÅ28„™yV™>oÒ€ˆU_H†Ú×µÁ™�>Ž21® -$⪊eÕk?éK;ö1º#º)åµß‹å(uh‰"æéöîâQ¤Cäƒç˜÷-5ƒè,Dg=bˬ±2E˜MÆ3ôYW !mΑT -µŠBö.ÇbA à¶d¡=XVÙ%™f]aKhqF»Éö ýѦ>9vzXEÎÁ¢ö”‘,ãÒ€ãÂXÅô³N;<lØZ²L[ìbHj”gׯwfãžTh½J«iHÉÄý° dËfáÅð¥ø…¹‘z,¤y²±8"²è±\7—'j‰ÖöÚ -¿‹ÚSnù”bÆ:[IMB6–4×y„1¿Û'eã‰V3µLù/wup" -øËZ4» §ƒŒA‰è[#‚Ä:àÚʘ^#–Q@'#Ö.â™w$J�Òç -±.E3ï'”bþÄ Òa±f¢InpˆôL¦NÇÏžÔÏ<ìÖPôŽë±Iµ%²75«\¨F%ÁtÅW0Úƒ›üÂËÀb0ÚÑ *Âû×<¸;Ñn!g8›rf`ì4Zõ‹pP4@¿klçí¨V‰O˜Ø~Äÿ=Ó†’1˜ÌõÑÀÐÛе›ÜÛµÜøŽˆ{iÓ #žh„ŒbÙI£v1l¶³ÓKZ؉™÷ F©‰Bdy“™6«ª¡z:PZÇs+#&9UîÇ@°<ìÂÏPà(i(Š-|žÐu¹•ŽQÑ N*:ºÃ…ÄfbÃñÓÐÆ`Ý ‚œNmªC÷%þ -vB4Š+Ò;Õщz¨¦óÇG£“f$~˜ðCÄG -üô‘I¹0=mþ¾ülù²¨jyÙ•©¾Ÿ&3%Æ|Áõêgƒ³±fõDÀ¶FŒýÀªÅ(ú£fÔˆ¯øäs2ÏÓåׄgÀf5ºÌE�LBSTõüzÇA\Ç€©QííaÀ‰B رKYigNbÁ¦›‚¢WîœÊ5b Ô›À`_¨A•`Û¡ÏwÍôÒmô 2…íPˆ0ÚGÜd¼iX+ma¡}øg#1&y„ÝËVZäiD6¶€F|ÞÀ·€Î®¢CÂÔj9Œaªž¸ZC[ÔÂDÜ*|"n($G!¢òXæ;$Ëõ§x· ¹Ç*Ãgýˆ2Šç>ñf°•g\f XF^!�í·$:ˆ>¼ƒ´šç‡eîcpFQ8éƒpsX—À„ÂP’÷ÅÓ`¬Mu·¶ƒ´ëëöém.çL]¢AóRÿC·LSµéñZG±kŽGÑRaÔÒÀÀME,fÊɳBÚ…óL „s‡6·ª&PpYiç1”J8Ö_jþUC¥K"dÐçBv<hˆ…o´ðuGO¢IélçJaÇEç�*=¼Øqq:~å" -oÒ0ªÅoɇªŠk°6q];ƯP¾ª·¥wÈIüvH»…L¥²\ ‡Pã‹A¾è©ZYîGÒ¶êM„iúæ}9@ÀWÜ»Š¿ có®rSgGÎq©ówòM“•_d4›”.a¹«Ã³À3‰vÙÊ{¶éèž'ÎDÝ)·Û~{&‰+2VñõeCñЂ¬F˶¼~Sã£S;cØ9ô×›ýÈïw>ùã§_>ýüÓŸÿuýžGßüŽN�!Zûöúî/_>úé×7ßÿáãÇ_þù矿ü`ì·×o‰ü¿üüæ¯ÿ§…Êõáïÿf½Üu%»(ú++¸àûK¡Ôp¬Ðü÷^«Èî+M·-Â�3Ó§ê<ŪýàŸ}ÿ÷§óÿ_âïó'ÇŸ_ÿò}øëWÐ.eÛߣª`”hyÐ~üv“ø¨ê‡,Åó -tCãµ0£<ÉRÌ[À¤Ât/¢ìì@t…šCU/!H¸q'+ -¼K루z[g²‰Ùí‘ÖWYäꊟ ‚°íŽ·`¿| 7Ÿ�zÞ(>‡*ÖkµìYø¤QhÕ-¢èH+Ï V4Àgµžl9Þ�°.ܬô=¨r -yGŠ‘ž”9lš¦ôpsØÄ;ሟ°6¢¿5t+׺= å·Z¬—Š*¾@ºŒÐÎrŒ¡«KÚÚýàxcé‡p¡§3×òÞ+ÙÊÖ -‚é�«B%(ÆÕÆb�àÉçCYàs>"XÎe€oXºˆù\m Eƒ÷lèJàhœa¥q÷9�_0#/TÚâ&Ô‘À¦Œœií �ìqpl*[Z†š pÿõ<(*A<lèª~¿T¸#ΰ€©É’;ÌÍO>{æC!-úMgFkTY`Ä÷,yÞ“Ôú|~ÎÆ×2G’cv(žïð=µ¸ -‡“*ß™Óé -Ó«x´É‰çk)nëݯ@TZ4]Þç%÷ Pebj{4R1€�í¯å@fi») všŽ£á?9ê±ÐùXgùÖ¯JlÐ -zê!»nÿ…ÒÐs]0áºãËVmž‡hx.òC°:*‡¬¸Í’Л€Ži"n€ƒ¯¨åÞÛ -I]ãçd“䮾tt4¦4B!ƒï?´ÁAX @90`’ÞÒ$ ¾àiñiƒ÷K+=€hŸÿ|{ -íϽօþªXâ@+5Ô:ÅIÄÇ[çôTÒˆ î.Ÿ·†–€@͸²½â¹rÅç”c+Ò³Ñ5<B´œ‘û±82-žokÀså;Ïaðz�ñmz®G_vîˆ@¡Ï>G¾3Ü6 mÆ¥ _$è¦S• ˆÌï·B[W`m=¥‰ÔAfy¯âå½T´«’䥔þçeGMEdM-ˆÜ·Ðkd%ø1ÖñC̨ŠÔàO”Ið§5þSþ¿Úƒwé‡ýW%Cm€ø’ìà&Hî² ÆGžú Ó¨»VŽX„5¹9p±ÐQ}„ÂâàGØyO -»¤‘ý4ر%ƒ˜ÔouE y8Ìå€`.–ë´}.G%ƒ´ Ðés$º«»Šžg¥)FKûY˜Ñ Îjs3ÉÖ¤¥›ÔR{ÐZ_ÁLUs+šJ@hA[Ô¢TA›,1*õrعè£,ŽF2 4ïHÄ"r;=Cfšà—@rÐlq¬—;§Ôoéê$z!sší¼Õ̼å±åtÚ�dâoþüF Âó*ŸxËø)!ø»4u´ŽÖ6PžÕžZ!)Ï°OPã}G'£!G.Û‡KôNÿG_ýü7¶0IÉm°ü{d¾Ú æ>#ß.†×7Da²µEVsîÈ¢5¬ Œ2~‘µ‚û»ÈÈ2š}m³k¹NLBšTÔkfM‘ƒ,ú6Ç2µê£è¨±÷Íè92°\‘2“ì]#iUØi¤+‰°·Eñ7Ñ6+'‡ï’.H’A#[¯$WgÖp°£# ûÎ\hDƒ‹ç2ªàCÆñ¶8BdÊ;Á’åÃ:ð�ž@&Ì®^*�X±Qu2-ŸaY:€¼oÜ$ƒv‰9;™%ðlŽV"‹ešYC±`FŒ(½ŠŸ[ö«ÕpeEF•[È(ôäÉX;v"-¿vêác‚ýgdS˜Õ3ŽîÜ’åu|Š–q2’ÁDž†U!cÂ’w§~ "u®Qcºe’¹Õ6 $ËÐxE- -æt¦#+Þù^5ÊŽò"¥S”2©8dY½Ï^ìù'ùÀiêT0%²˜ÃÖO³€¼¡¯Ðõ™¡^5§ Õ°/Ï�UµQCœÙ÷^AýÆ;1æ-ÝGrÔP·Þ)ÔÀ¦Ye·f½\†”Ë„‡÷Œsðáòyž?dÙ_ô^Ais~s% PqÞƹŸòA›ê4Sºà^ËÈüZF¬¶½3¨ÈôO¹¸s¼›€L!Ë$*ijY-CV‘‰ÌÂ#³ªÍxŸÈ(ö _DÕCNÌ[º™é$ÀKSa¤ã_^+f%¾qF‡Ž,¬ÑÑ+»wÝ!½;NÂ8“ô£<§cÛ À5±¾öè´f¾‡xJ„¡è„úsų2œ›‹G)ÝŠ# -£âœìSÅ€44Ës°ÌBåÒ¸| eš·ôü·Zà˜&¨*uK6´v#Ú›PÏ*ý=ãt+¦„Å�+ -5Û‡uBÀp}˜R4sR¹ôÉ{ i¼'ƒ!£œgƒ·,Xðônùé:T`‚|Œ*PÞbÞ:1o3×8R^Ɔ%¹7×X_;ÜÃ^€ÃaHw¢>Åx×~÷úA vdØ[B(gíÐ{ƒàû�x -N©áˆ/o>fï}vB»éӼݔW÷ƒFšÅq7Ç…¯x}È1¼¾´J�-®$©ñhiÆDZ²Jân@ƒQõȾ|f -A¥„i¾˜LÖá¥" cŠ�¡r\'XTÂ�1|¨e; Ú;Äf»·cRV|¢®õ3&1ïÌ8uîbÂ}¥öƒ!$tZÙ„-m’�f%‚ bŸ¼„#Ø9Ï×Fð¬§á0B…YË k}© #£åÈà÷Žqdô ˜XCžr™#;²Ìð>ÎFÔS¯‚ó«ÚK/© i()Ù”e�~½Q(Úv€Ÿ…Žv+üóøsôwš -†u8@Š!¸AÜÌH¨LB‘eÄ£TQç¬+k,x=z˜×;D`ÝÔ¤t‡…ÞhÙ¢…^ª˜‰ŒjS“á`%F«˜E„{³¤=³Pd±Nu”ÉØŒ`’Ø a>Ì(¥DdkÌ|{!²ÔkMb<rMöŒõGÌzËÎÔ,uœZóK¨ÕÑ‚«öÈ`Ér×çX уêGÇõÈ‚R)îűjöË:Â@M1A_D-ó;-¾£µ¸ -tpá@‡K¿HyЉŽjNÚ."-ªk™G€†S²Ý6ƒ;Ü‚HˆtDSÓ–qø¬Ñ¶©jí!2C³ÇýŽ1à"ÉJªÂÈ -¼j“Ò‡²f€kÁ3E7‹r2”Óf T"ƒ—;¿wÚ\“YEiFGkfÑ)õ¬ÓÏëY…©¨Q?‰CFS˜QÖ௖õl ~L^ÉãL%g,â¤*=Ú˜wƒíDÈè)1¶œ–öì-£<åVÖ›8×cÖ¼Y@:*9^¼!ŒY÷Sè‚Z-~âÜù±ùV–G,…±‡û8Ö„&¿ÅþÌåÚÕÊUb>7_„¿ �íðʦp3 3-M¢'àX9nS@¿°jwªA7Z»Â€¹puÒWë®›Uê4>sëSP_8"¡+{àµÖ÷[…zнB09¢Hd|I@ȸ#Ê ÜûºÏ(Šô«”%¸@|<¶»×7…‹RªV8,Zpä© Ö%2Ò͸Z -:ZBÖ@õÉjëd±Þ£ˆ¹û§—p5H?å,S2Ìç{Ú%%½÷ž”¼Lé©åè`} B0lbKœÜÞ–€\”R™ª«·u²?&<›dŠŸÔ-PûÃ2tÛ«šQ©µµ^ÜĸZ:|ë<‚~.E -€›»ë~5'²`dÑA2þ’èÏëŽ"XhK ©šÁŒõÈX -WK9QQ!×·z¼¤Ç«Cî‘õ_¶Ëäʵ#‡‚®<êä<¬µmÚÙ¯d’_*rWEàåà¹Fñáwd¸ˆ«beÚ'#§Ø�3#ãô( ºÆYãH$Žž®è4K[D¥Æu0Å°CO@ÃêAá •dø² úçŒb¿£ØógÆÙ�%Š<¢`ÁW'k®›5NI+ @C—Ï[iÕáè‡ú-C[„>d^_¯>²°SË¢–Š–î1ÆHKç!þWÿ†Ú´òš^‰:²%—ÆÜÀ±QSu‹ÜòþÊ_Öáãº> Ú¢�Þ<â;Pðê:ÀÓnÛ¾‚jÚ⹡Þ^g«)`³)ƒ�˜‹‡~D®2Z8ÁoøÌxÍ]‰k38é[Ø÷|€ˆ]´i�xÞË×B––ªöä"~dåu²æ -³-û2¯(…ã(\Ê:ЉHÀ°±‚øõ“[”`´€ÊÏŒóV4_`É‚¦Á¨Ïu˜yF‘™M¹–¾®DjéH$F{´eaAõÐPY[Ü£^tYÓ±DdÁ0-²ŠhN@Ð& JÙ'�uñ9íUOµÏf0#÷Ó¥`¤ò¼Ï{ün¬ƒ™=ëT½›ÇÍhqlZôÈ£Bh !£]‚/#)¿L@$Ý}ÚJ•÷¸4ç ¯ªÉ*m6½L.º½‡B^õ[HI~ê§óQ+¬Nd”›ÑÇ[apÅ)Cìq~g)Ëæ‘…-¿$9MB3…2øÈ àYƒ~«×$„€š”’ªvjù]§–vX£ -Ÿ\„ªÙÁŒtîªcº‰6¿ë÷— ‚édX³x»ÈBÄÄ:AlFiEÊe™tÙ'c×ílD×L ±õÞhíµ"© -]dÉÐdqÊu7:Ô8GÉñ_›UvjãcXÝ–Ò›ì}5ƒ@ÌÂ.h)EØcîf…jã¦ÝK/¨†bP ß2C ±ÜiùÝéwÖ¦k—äÁo®>dÚÕ‡j úzï3€Mrˆ.p`4ƒU!½>3Þ´³éŸ×: --²ª£ŽÐHyŽçŠ'œŒ'†±Ù©‚éÚ€ôì4å-+Àq„ý×Eh¥¨Óé·rº’KY\W ÖeÇàe„UØüIn²!«qZÔpZ?3âNkü°yVC©à¿¬ƒ¬¬*aŠõãUázU,Uû’ñ•6?² „`“~€^o«Y˜b!öÛDC±÷¬tVYJ\>Ĩàór([ð}ªl“į·QÑjziò:dÑ^†VDÄ�dNÖÅ[2]¨œùð¢Ì/ÀÉDÑ·ò'ZÛCÙÄܹ~M“õ}T¡fA>Îè•’Y‡…)ýgào?çÞô8MUÛ—Ï¡°‡²°e¸Idcš¸áJ–zãgP¸Qy -æÜyÐ/x8g$Õ›ÔnÕŽ¨ë$@’&4£^J0#ñÃɘ7£½2wfŒ×FÊÈAtýdáƒÌW</vMCe†œfÆJq2@Q3h“u2ÐSflüµQUÌR'>š9žÎò) °‰Ï@ñ—Ëb)KüŽBôw·ô»ÚüÑfnú€ö™ÇåÄ3OÆä`rŽ¶MÐK²ÒvaŒì`èA“ühvø*µ).Š»Äì”,Zß,˜Ÿk�Sì3‹wIfÑi+ÖáÒÙ¡ï,C* üŒ„À h鸱÷úÚÅ£q -§àùšQÃM–ÑŠ éØ YC2À£jÀZïNP.„Ë‚Ì,Ä£TµB…›e!ÑÊбSdÖG=Z°œùdýÛÞÈù²j̧zùD9�d',£´†¨”Ù©·'fŒ½¾d0”* 8ï>èv²æÍBâlúGä¶q‚iœÂ•8l -J`ëÑ°;‚¤˜ —²n›×®˜~´—âˆmóBÔ£¨ºTÝË×|Ç›“8¸ú¾âÛX¦YŒÑé-‚ÉÀŠ U´øv˜Áó?ür+®Zd–I†,ó rŸHž„BìÍáN :À/в<ú]®Ð à*T²ýH38¸�D:#¥‰Š»‡d`ŽæDs Îpg9‚€ÌàÂj'ØÏWB¾IHÆa@™ªS �Æ}È|/‡®õ·©U`§X¥·H^‹êƾµÆòeœJAóýdc¬x2X~òœÐ—a6’,ƒ|òÙ\dêKˆ¯a±½ÆYî×W9ÑÄž Þ;f¼x¸¶¬º{ª“Ñe©Màp÷÷X+â"ç´ßßÀGhÍ$ šôxèqŠÑ5X¿â{* î¤þ7„2Nòvôg@Üp‡fÔ–HÍñ»<ª,lÀh÷|ãÔ ˜È?_YšY£<.ûLµAÿ0y<JùSÐÿùJ¾îÔ´ìÃ,s\xb€š‚YV·©ÀÝþ<žÎˆ˜#ax)ñ•¨p^H:á )Œy×}ùSp2Z1«qÓÈ]9rÙ¿žÿy;!äe€ Æû$ŽÅ9ÚÃãê5îÕg¼Ã© HðÈL³°«ø‰ÔÎ}åÇþÌ8wuÅÇçÌiÈŽŒ©I'¢0¢ašô;# -ò^÷W#bÞcµs,Àã™Àã¶ñªäÿ®"ESÔP#hÊû|‹óɲR—}3jŒšñ0| Óɨ\<°á¢«æ˜ÓåÜ°g–â“Î]Ľ4^,¯oèÃåÑ\*úX„BCR›ŒíÆNåAJ>І‘çð3ÕŽÁ¼®<.G3ç½’&r(:^0“åå%4bqQLaÊ_Í_Q5ñ¼ú´ç÷ÙÅ™Y*oÎïX¿ñ^íà<o²Ð-+Ä_€ %2¦P²#ÈeËP"^7èeÌ]$Зœåa»pÌ“¾þãÖ|áÉù §44y¨ð+•a諒è—ü´¼Y©‡t¡àïÀAM”m¢Ú(Û@´×GÈ43K@ÈŠi_ü¾ÏÅb¿ƒðsê¾r¹Énò)rŠÿy£ì>ºüƒ€E«¾ïáÂÆÁ ¡Œþ|r#x¢â«í Ø‘~-FѾŠÇyI%þ‘kZôæ˜Ui$^9wþ_Á}Ô…Æ6PךïU€…[ÈãáTgŽ¯K!vðÐ)èNU¦9Ñù@RÜØw9 ¸ÃGþð -”¡t„—Âøñ€àX-_~Ÿç -g©~DÁ‘R³y˜1_‰H§·ÀžÕê|΂yßSCº…z¾“ñµ¼ŠÚ2…}\jà^“ûâ4:“ГÂ6GQÚs>tòÅÄçAkô;¨<gR€Ò¨Ahª¾‘„™½G&¼ÅæaNEÿò#ÎÖg|C‘šßдõáÿ9|c± ÇFÒU˜w‚¯ªÉŽŒÞ_!9;õGoe݃ðBëg€Û,ÅYîwAªòen¼eíŠÁ¹!(Ú9‹+2ñwrø 2žxa‹"X]…À“¾¬ÅÃTˆá¦ZYí¨�|û{¹amâPã9»ÕtŸÉ¬WÎY¸c¼îÇ@øÃs5–,Í-2?Ö‡ñ°¼Z‘F‡š±Ü;ïh–�Ä‚ ¸ËýRFƒU:¢$ì£G¾¯êÓW` \¯ßÏûap<*nèß!Yd=ìa™Ú ÷Ĝюŀò¡Îåuâ£Ç2ÆQ-‚ˆºçw/N¡×ëh¶@©Ðá#‡nŽäö¯ÿ¹)çøã5ùéܲHåÚGYç½?º�…Ùk�5ã»j®=ŸôŽ’àg?åPdgÖ‚ý'°OÀFï‘¿‚M<¹`Ýà%X@£¾‘e«Ž:Ïá$ 6Syè�Ù(Εõ†MXøä Igi̘"kºlÕÂüu«¶a9…>‚é<<\~Øó¥Jy梎0a‘vkÈÞ?ÿ7YzÄŽÀwAŠÛ+øWxÔ…¥cëný€tEhâAÿa½Üzô(Ž0üW¾Kƒèés'W¢ˆ‹(Åw–&²¼ÈY"ñïó<Õ3»Øë(7‘íõN×ôaª«ÞÃo‘ÄsØ—ëe2Wˇœ;UCïó ˜£fÈWn?xGho}¬>;°èm#ç½K”Ê¢`W‡ ×W©c?©âœ!·£Z�n·Íod •KÿB9ƒ^PNî5ÉzZ¯:(ˆ…Lm¡CØ ¶IkK¦fôaƒ½!R|äÝë?òïóçïî¿zóýý›»·¯ÞýzûCÏ~/CÎù“ÛçßÞ¿{óö·g_|ñüûïùé›»ûW¾ûÉíw¼ùGþñ÷ÓïøñÝÿi±Do@,)þ¼øuÜ^üÀ/ýöì“Û‹¿ÿ÷ÍŽÛç_ÜÝýóöìù×{uÿúÝÛ—_ÿëå7¯~ýêþõ/™°·úø{yõæíË/ï~þõåÝ/ÿôÛû?¿»ûåç÷·NnÏ_óß/¿~ºÿ*~þÕŸ'I` -×Ç5]c§t„‡MŸéD¤‰šÈ$ô*È�”U„S‹Y³žMþ‚|GüR‘|-C/¤Œ5ÇÊíÅ«8ÇñÛDÔ)¨~£ÓùãöÓ+ÒÚ5Ƴeís…h|v_Ÿi(�èLsd0eÙ”1ä6µkJÿ°‡º›Š¶ÆY–p)z¾=œ¹hoDA ¤ÒáQüÁÜJßÀ1 oèä¼í§;¨r© à„èÈ{vçIì@Ÿ®‘Ñy›Ý¾¯µÆ 7Æz(>LG89«ÉFBÏ4ÁÒÕôénYXÉ9ß0m´jÚè pµ$¬�{¤ŽåFÊؤÄc³‚œ–:‡äQx–$e»JÕ¡VÐÛl¾RØ¥.ßƵŠˆµ& -Ì‘[‡ -¿ èòœFÇ:‰y³UÄ ½ˆ›1Ä0õSúˆ¥šVÀñÁ™V8É9$NíµºJ•ªÈ)íYŒ´’õ#8Ø›ÔcìôXŠ“#6 ˆï*¯€©9€D>)ëÙ ãzÜx¼Kô[ñ5Ð2^9€|´ß`—lv“ Ž5cÜ0úÕBú|'sck扴h?`†ÜžŽÇ‰€wûàÉœ`² 6SêÉC{|£iBÜ™�Ú÷E;ÂÙe~¡ì rs3&A‰Ž³©–s…‰BÁ�µn ÷k±s†ÐcÉPUÇv�Æ‹À¨h%” ~àNR¥f\¨Ç"øÔÖ¥µý¡ LâC ˆé10U²ÃŠ±ºEÏTTtL#ˆÓjú£‚ò ÆGæµA&,Sn¿õ4]ŒàÀ= ‹È”‰;¨ƒ‹C© -Fu·lœ.(bCÍÍÙQì”`U‚áÏqªì†Eqäz"æ)0)/èh®q°è5v„&«ýÛIÀÐEk Ô.!"_ȃî„jMŒRJÆx¶ÖºŒs¼1ìX»ªýœdSì�÷l@Êx·öjH½˜@Òöjºµ93‚YT¤ˆ¯‡j^Þ)'ºgÍb0ÊíÀËQÏUøzäºp\*·k ¿ð¢ ´¿Ì±‚Ü”¦Ú<s7›ÆøÂÛ‡TwÉ#øY]È@!4g±eŠ!#Uú -fŒ‚¨âG¢rºàf@ÜB¥Ç�ºÐ’i5�PvvÉ®Ñy¬K®è"Æüè°$^i&‘i«Uê.`ÔVCØÙjJ¼ÑéßH7mù|¶|ÚëôƒU³Ÿ&DÄHJP|Ø;Á†Ó·HR9Ga*àà�ã<“oŒØDAúBn;NDœrÌç>ƒN[¦pQ§ªõÍKã£âÑû¸ ñ-Óá0ªr´æ.Ì•) ñ`–«Y ¥AšvGɶedÚ—\$<Ô¼ÈRú^85©èè›çá…QÔN‡’oæ…2lÁµ¥l<‹à>ŠlE,/ëPaóxÁî$°Á˜½ñˆÚ #Röƒ¤ðÒ±tx\ŸSÆ[äÃÍ©ý.âÃŇʹÖxƒn.û(:Þ(sAbôïN‡´ÏN8·s'h³åSš^5‰@„NÑçÉATL•ƒ%š Ñ×6ÁþW“|yõTYÂ3G¬ª¡.Í¡Æî"‚Uµ¸mVWØNŠ"g#d`è°d-QOÚrìXn͇cI‰‘œý.–Wz¥JÛÕAá:%‘#÷"Rœ!OÀ•²²ûa0™[•ÌÐp‡X;еCc÷R¡Zq¡í49ä�BÿFýáîæ »Õ/}ÄØA»2Ö›lå3.•gàŸj›åîyìÃ2ÛÇ¿´oŠ?ž× Kaç²K`úÜF[JÍsmðÀ¼ÑR©^Vb¾u$8pC…â7Œ -ÐH#Ò…›6§ê'ßê©ú¯g¤TàbÎ5Æ—JþuÛhPQ€œô*?®ç8�F2Æ8JžÀ6k@›óñ>Í;Ñ×U'7zxª‚*>ì·ÎÅb’Ô¾œÀØ€¿«‘#žáxŸ‹2Ø94ôòèל¦"c©ëV4H<®‘ç¢pÆbÏi;¯žex4% õð^ùÃ3g{¸›sŒÿÁ—8ˬ%ÖÇXtÅNÌù¥»4,á5¶¼¾{î%χgÈ ,[ø sŒ¬…öYX4ˆÑ Îm)dEµ°-Ì húJ¤`ñ©–Ö•(t _nÀA|N�qâ¼ØZ{ˆ¨ž¡dU*zh£H€LhV‚¡²â\6`÷Ø'’©c9‚ˆJÅάLtV H¨xABãs -ámEœÓù¨QˆÅbÓîN/V€A¹lD§ìY(Qý'1[l¤ýâ%â0]ì9b07Þ -ǧ^Iê -g�‡ØáÖêXçj 4•©:ØR¢Z`ôjjv‰èu°npû(¬^Z†1š€P{qÑÅûSQÜת€ V²?"˜U€„$³ªN"0óÈ@LVÜãpQ ì¶#(FP„È¡?Ë4°ð…XJc«Å€j‰@¶ŽörùÂç¢ñUòˆåG±·2#hpIÂêá-ð½Š% -C!gÊôPj`g#½§õ„¬,r„¥m˜œ�eF?üªÜÞË€š"Ƙoüåk£öæñ€Š §H§„œ¢Èi‘yª!ƒmÀ¼›BpÚ8<-—˜"–Ÿd€œE جÝÌÕÇ儽îW·Ã«]Á.µkñEJÝÕk ÓãÝÍ•ˆY}=J/¨Ö憻¥@î—ðªùI`¤ÐµW–ދ͵=CN|Ö”#ŒZ(dAÁ1¢D=="Saí˜öÏÓ7¢Sæ<¸™R>¶Î@õ‡=À®Ãùè®…cí:’ƒ£+?}M¦ÝÖ±«2Іéuzä¨ödyðκ3â‹oëÊÝ$Uz7•“Tߘb>ÔC‡æò‘7¶QRE£è9!Õž¾åu¥}ÇÒ·°. ·žø¼À|¨…÷‚Má ]”AALµ”p©´AT —p]ˆÀ¤ç¼qLØ?ü§Úø8Q“¸À*¨ÏÇgꦗµ¼ÆhÔpŽãp2¹£*&R¡ë=ÔÖØœœë®»Ö¡¹p?g¡³z Ã×Rl“pš’Åz±à‰ÔíGƒ‰zШµ=è -ˆpÇqœ5Æ«ÐÌx¥ç€1óaµ‚‰2íÌ&«�ð2,ò’ö6‡×× -kîÃî娶lÉ”*–G“Z“ ÞbvX¤!˜ôš·Ý�m7�o<ö¥€3?¾<äU¥(Ù¨G¨ŽZ´nOpY8Wù0¨]èe[ÍpXÔ7˜&Žl6â´8õ´ÿ¡»ÌyàXª0úW&&°j_B$BR$ˆd„ ñï9çV÷Œ=md¿'O×íªê»|[Þç•(Ñîlú,fô�™•È[ÝÃ%šÐöXÀ¯ìt§ì{‘!`ŒJ\"Ì€Œ)¬êÓctœtÃýûîÐcü„>zÛM7A¸}>U¾i^ÅýZD@è$9Õ¥-Pv/¼ÄVMå…ÝŸßç»(lû)fëZ ¥’îDõÓnÊP¨=Q(ÌžÒÍ/ÊJ U ½ÆšÚý‘mégúÉšãµCGäó†.éÞ#j3(Zv0Å]³a—¹Åcæx£ö�›ÙïË¡EU9mÓj|>y*‰oÎ�X[ˆ@ζÍf“‘nž€ìsZ{ápM‹ïþ÷ÓgÓE«S’ŸçBûVë– ¿.Š–—¸ÐTäKz— y—á%Y*ü³Kº»ÒYÜ©«€úÂÞþ¡¶ôyÛV™/KŒt€ÇØ(ͱf±ÇLÁoQÂçœôì+=uÄÂì·ŠšŠ!J²¾f[,})þýCñ·ªwU•¯ß-d‰ãÚî{‘‚÷¸ŸÀó üPKÜ:‰[!ò 7“‚Œ£ï•w7Ú„n@ýô(ùCãø#Ì7�2o/öQš„ñ=|½u&t“rvÒ7¸Â�ÜmhÚ$Š5ãAãàŽš¡ß1…š”(3—ÑíóÊ;)< þŠvN(J}.ü¥ß‹x]7oIŸ ˜_6ÿB]4ÕbÆœñ©Feikд¿>dÉ*\)äÀ7ŒŽ¢§¢Rô\™Îî¯)#š ®‰jTJ‚úQhiÎz9+J,k †o¨T³b?1“KÛ÷óÿ„¹a&ëù½¤ÈÂh(²`f8Èá‡aä9WäXÇSúh^ õøM׎\âw½~3à×;uañE$×ß�cü¶ -þÖåð›,´óε߸öã7Ó{Ì?i¢lFÀÊxãV«S;MÂwÙ7ÈfÇê9BÈ™ØÉól1è>ª°;?'yßÌï¡_à÷Ô}\¯`ªÏ–n7~§øMqã÷yWöíØVdij”ž¢«©¼û#·–c–®yÔ‹W¾âsÆ ºd5°X%$(=}ÿÞ¡³ÞÏRU-ä̪Ò}ÏóiÒj4iv\S;T:ëD`ñjA -ñ>îˆ÷Ó¥«i3£|…eóÅ€i²…ÁƒäSìøK6È[[—>@ÍÀ-4“û$uBÝ&…ƒ¤kâ’‡[œŒÀ0‚ œ±»»2n×Ál?X§KFŒ¤Š÷”£º`øý>FËi&u\wÉñú8Ù@ï)V�8ÞÅ}#@YIeØ$Êrm‹«º™ -É(G*£8Ô�ƒ×ÊŽº€ �[Aú†]0zqˆÛÞ¢fÆõùNè^žS˜k—Ú7k¼¤çŠ·¶ŠAû kDY‰œ*ßáMQÌ% r¼·š–ô¯~0$lÔš©EÔi6‘ùâ$÷ð¤ZO„ÝwÓ"jtó>´œãUȧ¾AÓÛ3+^*NóùÔ-5IK¹ÏhÎæ‡ÂõC´<GDâGFTe'>”í¨:³QQa‹ïÏ3êyÿŽ³¢‰ðŽ\Ånæ'ÄÏýY&£Ò Ê¿ Õ½i‡š(Y‘qÅø&K¼CWðH1Þf&qKñ‰DÓÄK²hψ“y©¥Qoâ@©ßìcmБ}ˆŽŒÜ°ßhÔÞúo"Òù`×éç¬ý©ñ¯Q�ïè"l¯räãÏÉ€ZÖj˜ÀÌäŽ|°£JÓGY|ÒÌ…Œ·{D•R¬9Òô7'á—âË~7kÒ"¢YW"†Sb@.Àßü>(¸Œ 5î¹~˨Õ|`Dt/ê¸ÆƒÃ£ØeÇÞ�f3†š_-Û¢¡ÀµöiœÔlÈËd2Ьx؃ò°>Ñu(wSË,2>÷ÂÉû-¿ßІŒ¦>5†‹ô~-œz¶«žï‘úŽRo¿´Ôh8¯5®kuÌtôxMné‚Sy ßÈE8Ïï€c”H¯Bn "”N] æ^é�y©<Íf]Ѩ¦É¾/Û¯5¹òk5ç%gÐ]ý€”‚ݬ ‹Ù¨Ü…¡díÏP@‡¬ßÞça Éžôm´%2:úHG:t ¸j2�)_¾3‹úv.j(ì…Q©DT^¡zUþI®ãñ‰°·Ý§ÛƒFäÀXýÁ9)L×èô9é0ú ¥µ§eï0Ùn±O¹hÅ«ãÙdÜÁ8a0ˆ ùDø€<ÁÕíên5ƒ2’L!Ô¶�®´\¹pæ�ê£9`”"wÒÇ$xDÝ}ÑIiº?é…*BÉ££ûb„k@eìDïeñHP–ÎtoÌ %æKLówÄß/‘R¨u¨Ø©¬ýŽÂmuΓº®ª€mßÏ‘c'+÷TlÁúÑ)-”ÿF¨Ýuýc|!†á¬�8ȱ•zˆ7´!à -¤Ç>Às[É¢uF½ŸKá*éʤW<¸ßE`689òØNÁñë¤|aYØ–‘(dk7 -‡“cð. ¥šfê -sD”ÓÌœ¢=hûˆ U’l½O -ö‰‚º°?DÍ9¯]Þ̨"fö#:‰Í41OYÒàÄÓå'°ù¦®sRê]Ï«Á…€<E|M/ÈaBéÔ8 H$Ý•Jψ|å6t@ÏP|Gá,ñ¤ŒDRl€$)Qßä<âîÖ)ÚÔªà•”÷xÝ•ô¥å±®0„Ð~U{�q’ÀÆðgñ÷t±åLx@§A†~ŠÂh1HRv°G zb(h%Ú^Ž`a†Èt‚C×°ÉZ~p¦Íu@Hº”qE׎Òrª�ý½Þ(‰%õ¹ØA¦Ý(²—ßZا™‚Ö./ÂÓÉFHÂu\¢@E¼ögê8 ½’ o×t¥.äkèx6Bwø,«©ÁT:Â`a:Õua¡± 4Qh ÏåÅ^îífÅ,*YdŠo‘îÃÖa ‘².š¸ baÎqmÇHqŠ‚¿ð,@Ì@PVƒóñ:1I³§öóô:Ïh|žQGžIÅO¤)ÒM«¤ûóÿ,„MM -›ß,âe‡JÇ#“6j€æh1Mïñ•ÜþÊ-—ïÇ5Ná£îçâŸÏY-œˆz£AùC_L,ðC ù¦,QÕ»Ÿ…qLED75ø^óÕ™t!DAÓ¯¥ñ!¿Èª*VpyTL Ráì_öwÄ-üó†G~äßíÓ<¡B˜pbö‹V!IÀTo@3ôˆø¦•8éÅüNÉb8×눗¥öƒ´jjàªZl"æîHS¨\Å/’ˆþ¡°È´FJ®!á%`å02µÌ~ -uÞšâ@Ó©`èzrOÀN7‡ÎBñÿV»š ®c¤£¨t´dÂ’è&xhX=c¨42pÂvæK‡žŸLÊßbŸõ£*3¬4XнRW}…DóùƒÔR$·¤»©eØ´–t‰É¯ç¦»p«ðº «Ï—©|AKèå BI¹TÚe0 z-÷K—?e4 «`C|è.q@äåuBT5*Ü@0& È? ÍÂÀr£È$ã¥Ã<ñ¨©¹lZ$â;D¾ýøøÈ]¹ 3s�ñŸü÷‡¿ð¿ôúã?ü÷¿ãß2é/(ç•âÏ_ÿ{u%ήìýð%c#•2dïõ¯+HD3ˆÙDÇfƒVу¸ ÿŒmò:Œ”¤¿ž1:mMv+ä4›Eª8ºP˜¢7eùCb#éJfÉGÈ¢‚kw&šþv)hK9]î uåx´Oå=’ʯŽž8'Õr,±¸V¼Ì™Å®´uŽ ªÂ36(¦Šˆ2gD0Xó2Jº"´A÷öHA⬗IªeÇE§òšØ©¨#®Ý’¬Ø#Ù0jH‚$mðì½Ö9ñ>îÈ-ÁO’w£>Å.0iûÎ -/ʬPÃÌ@ðg”°\DÞáû´9½õÙŒ~›×÷ÈçºC´¼v«ÀÂ�Ì. ïaÒ:϶Iv¹$Ô©{{74²„Þã"}›^V\j€u(4°²XþCi1ú‘ÉÈR¡¨mDûk±.Hø'%8ÑR‚“ÿ•e^Üô(÷™¥xÑÔ -Aæ•{]¹ˆÄýÐ=Z\é# O=Cxƒq°Q’Þœ2J¬:pî.—ŸÂ}Æ@ÅÀöÒ xsà)b¨"ýÊ”˜šAµ;Á?¼.–ÄíÃ’ÅŒ¨-04Ç)¼;.»}¹Ô4 µq *zê@ ¯§ ð»k²OÁBÜ¢«²JU§<¬¸)ÞcIÝÛQ÷z[À&žpÈRõçcmÐ|ìoÝ\0œ¹(–nHh8<ÂKYBtH¤æè´i†'ßXÛcM<Fé²o§¹xÃ5éFb›Wp2Hq;PhFð¡(’æ“^ vユçi¸:¤dÏð¼&DÓ¯„*3Àúa„wÑÞ‚ÑDœÐ&̉â -Ã5ÈüvÆ^€ìíyC„5¥´œÕ9`Ö®ˆObŸ&‡1c‡ˆrF´"3f¯1?rœ¡€Ê“,WOâïã$q„Y´ÊΓPíÓYÏ©yR(Efôºò¤Ag0 ÛwŽ+ö¨;ß&VgpÝþqÒ“ÕG+ù&b“¨ tWöQ¹ZWà=í�pß'¡^Ψ‘õàz²Þ¬WT4F7=éÇ×TCÜ)H»D¡…0°€;‘Ø&I3Ú jWŠs5n";Vo!Ê ×Ú:§yÙg]Ò]ÉV2d=ÇI½Ú¤´õ8‰ôÄI€íU¾ñi#˜¸'tè¨G+ï‹¢¹¡kŸdÜ'öxžD§~„ÖÂsk?4¾´x.Wô¶X2m*GŸ3"EÉEOÈEd2I‘9Äžìð#"ël%ø#µáðÏÖ¢‡‰.Û ÅHêë߱͂›“‚-E�«³@“ŒâS¤³‚ƹt1cFIA¦rò˜x'EÏû“t˜bƒY(Ñ{—§Ä]Vî¢Vvœ7·˜p7 èÎX¹}y|&oôs·×‹ŠY†xŒaϾHòR[ã‘Û #k™IDsߢìZ[â_éË–{žv]+x›I “ƒü’ÁÅCnc/–.�Ñkņk)ÀJK‚S)pÄô ÓX¯T~z±¤ß18Bä„ ^õ¾YõÊ àÒJýî#°2N7ñÙ[â}÷ý—¯?þüùëÏ¿ýúÓ—ÿ¼þ§oþŒ„î KûöõÝ?¾~ùù×¾¾ùá‡ï?þ×/ÿíëOÎýöõ'fþ•¡¼b%xL6…x^h¬ŠHñG3ïmô´—v×\”Yª€ÓÈu¢m$}û¦o놆¶®‹~Œ1†ëÉ1²‹ÔE -ŽòŠ*Ö9 £8€ßr |àƒî{è.TÛþ¾«f®Òl1°—tÀ€LìoK+wA½:¡^x¹oÙ<ÅhÊ6h6^8Ð݃~ç>ÆkAlq'ÜõG+…ÀÖ ä¨€~…ëP¥ÆË8ÆzR˜!ž¨»éûˆ‰çÃ=WðQБš fñÑAÂ%›"Þ£Öè!z€á ¸ãÀ°^}Í¡»ûmF±ù;dêö”Ø~õ³s°Í)´h.ß¼¬œc¨°KÓ÷ó´âó¨ðæÔÍJAÇô»ö·?°˜Q¥[¹/ïaJŸíÙù%Ç~,J‡A„ôLžb<]%$‡âî~F -o�¢ÄV”aÍ�8ê›ÁjN¬Qf¬Ø ÉlV ±Æ1K-ÒRÉ2€òJáºøª<Ä$&ÈP$J~-ÂÑ^508€ Õÿ$©-{ÏRÝl;Ô9AoJ]*÷…ïm]v¢ A§'$WIÉç\ßbµÒ59¸ÔºÂ`î“NÐÍÇrY³¾C!N‘%6kl5Æ`Ð"òEw(¹Ù8–>ªKø=-›FÕy¯f÷…Æ%ìx|àíW|úÅEÐþóŠsø韨5åÈÂf´îv ´9”’ÅÌ®»oQÀè�è�tC€øËÇc²¨yè^G¦°–•&ʲ³ØW¼¦¤°J,+ôã)ü;c-ªiyQd?ê–}öLšâaÃFÝ܃ªR¼Ýäs«ýhÆJ-f¸*Mæ}pZAtJÕO°Ì+„×�ëÐqÚžPM´çü Mh8| ÐØWK×8‰»!’O„¦J››ªâcÆP‚»HFfø¦áŒ}¤»E :ã,(øž„^P÷0wíâ¬#K2£RÎÎxÚ5v3àdF-;~Ÿ„í�ÉšÛãx®&¤æò@mXÅô¯Ç„ûŒ2rS|h:îóÈŠÏ›õR±A8!žUé¶0m¶, RtK´ ã’¤pÆ}X3Ì<KÏP†²úûÖ•æŠRB+N‚X°`š(D«–`Z¢,ENGtoQ:ÊöE;ýϾUýÿ2j*,¢d,Š¬TêÝÒˆY0H�€À¾¯aŸ¼è‰Þxå""uAk‚ƒ˜0Å–fo®È2üÔ ±5,4)|&'„)2ñ\nØ%Þ‡MºªãäÑ(³8šT¾ž ž—•aŸ°Cçn‡Îí^x”|<}Ë¥ÎKãTnƒ[`¿*»½ÈAä°„Ë¿–ÛqóæÖ:,ÖÒÈR‡OxSŒÎQÍ’æeιUþ!g^›—Òó±BšÁ‰ò·®Àß!%˜¥/¿ßûí>‘«ß´ýÓó÷ŒvE£øR‚Nyåb5*ÔrJ cg¥”÷î@À•æn'nö{ûGjÒñ(‡0´²nRúð,ñzuîz½FWÞÍW‡hÎãƒFô;-—oòØsá7¿_Cf㆒€2a×{ H™ßî¾^îaéíÔ“çXl±fiØý‹”xñOÇ])o@Cã@¬¼êðÊ.™ä•¸½úÌ£•c“ÆÅÞ†8¥[¦Ákϵ|›ø¿Eñ›–ñûRñ{5{ûò(£êœiƾ¾ÊßpFüÆtåÌØ$j}§ÎRªçô’ yÐê;‰øMEh€‚¶þ’é!øœ»£m(B˜½™U›ŸÕ`¼ÞóîÁÞá$–ðK-O夥Úl[p…Æ«m…jO=D™N m½u7GÛ¹ô"8¨0m½ 'k@g4EÔÄA8ôùc‚4zÍD[‚>š†(Ô Ì*éoºŠ|õúI5x V|‰³ËRÍÕh•¡`*<†–A¨¼æŽrPõ›S0¾ðª¤ð'ä¹Eó¯S±f®b|$IÀZv,ù¬YÓ¹�V¥ÉB›k—ò(A3Úe*–Ì,E+oc»=hXù:ì¡Äç:8°{ŒÔ8÷Ç79HÙ䚨ô÷rMA -¿Ùx|‹f51e4ú䔬(ãótâBØ.%`uˆˆqµB]BʦnQv+Ï`4Ø¢¼"Z?ÿòÔH \Ì`Ü°´½ùíLŠÐ5!SùLm˨W›—t”KÔäÖ¸/]ÕÊï\ jÄ´D¤ÏI^q%Ú™ ¡V“®À@ˆ“•©J ‰€fÖ6(ÑÛ[¨îZÚ±´VútyÆ’†üˆÍ²§!ÞN"\Ú£ý¨ÝNRò?fþ�ZW¥ë”ŒO®;‘Ÿ¢8öžèÛ©OÊ520ó†Ã¾(Yà~¢ ü6&Èæï•s:’Âß5–ìe¾×à„žØÞÚãbôq€:¡C×ü—î29–·¢¨+iA5ˆ™ËÞË9 -Ù¯s.ð³z¡^Ô¯HòÃîP.)Kh©dÚ‰%ÕˆƒÄnÐCl͸ã`K€ŽK!^:ùÌ |ÍÐ -:]ؽ—iò'¬†’°aj—EòNÄ\AŠ¦•ßUAÆoæëñw\Œ¿Å±ûMwP}öÈd|[{Ïø¯óûÉ{\Èú~ƒèJZgCÄI@@¥Øêíök-�tˆ ä#£Œp_T“êÛªÒÍíúªúœ›Ñáã=»Ì÷0L ¯»+± W†P°eGÔp âäCÃÙ4í£þ {T[ð?¨À2}¨Z±9¥i`*œCæéÙQýˆ -°Ua‚ÃÞÓàêÑ£™4`ÏsÇd¤ ü?6MI¢(WÃõÝY‚ÿÅeÄû0d2! ˆ0Rï0ðÏ1%. ãô=b2•þé‘Ò쇜ß^hŽþ¿¶«Ë„UX»ºSÀéGW‹Qú± ì3·z‹�)SÀPiF„Ïϯ·¨ì*µÎ&#Ò¬1ÅÜ×Ù-š†ßÉ9U¸4r׶ òæsÄâ¹"ŽóÕ+1+¦›» Ê“ˆÿµŸÕî2©úΰ¥Sב=â{#¬Òõw#ëM*¬%j3×F1Mw§÷r°]Èt€ï#m»´éõl´ç9+ºêýn4› ‹a!¢¶ä:Q§HoG1�™]ùíì¡Ç€9Z,oÔzÏ™Ò >±ƒÈû»‘ô¬ z78ÈFLðϽ™Ngí"q«cJï%-HŸ�꽈† -.Ǻ눵I¹ÑÀv1iy£FÍK¬Ùð¥Î Ÿ[~?ï‚–ñ¤U]¼Ïïµ¾«3·ë›Väå‹q9È�òêj•=Úùš× xçÑeälA«Qh:"ÆÏÀ+ëÚThÑ°–.ôTgãè#ÈÓVø0fn‰ñœ¨VÔ⎌T¢9îC*µF©KÄuý×Ô½Ù2CuÆUÚ¸³ð™çë–ÎähÀ1cDoÈИFºíœûÚÓGñßݪ©ü<?£0y~^RG`¯=ºIÊþÚby|ÑXc›eðÓÂ.èõ€òT·‚ä"Ícœ2ÑdÓ|Òj–‹¹dŠI‘I\‡V©Š#D[çI9šŠœÇ¡13dêÍùÎUEE9;®ð0ŠƒÙ«/]‡ˆ~>?[¨£grƒLuHnø¢©üκöÓµ…A±Rf±³y¦äj -ú‘ÇZó1S?äö~Ø5yYmµÐ„z3 PšÄÓ2²– ±gN8XrZp•"Š«‡$bŸD¡Õ†•~~Ôj|;Ôl[^¢PÄ´·Ð&ù50üúÕÁЋVŒòΈÇá`ñJíOéMD¹doTAKÅ»4‹†i0«iªE�FãeH+bO@™5ÔÎ6íg‚•Ác{Ê·Ê Zšjh.p¯�5\¥YÛ©‚zŒá=‡—?šŠûΫ²f:,TN¦F!|@å÷Ì4¢YÀ1ZnXnHËîc}Yý‰8^ZùݧmIRÚ=qxºõ�-öÅü`xëÙéÌÍZkz“¢b‘™qúÜGg"p8®®B$”+‚]T%åï:^C�À{p`³àÉÃNí|€7ƒÇº,R-U™—9Ÿæ`iË<Ò¦Q“zR`Š²³ðïFŒ½2áUc ËÚò»¤5S$š¦’ã)×v=h_çÞfôÛÜ£ŠN¥F `g9IØåÐoß®óÀµž Ù¸L*kp3ïº~³�/)\6 ƒ+/SJtóŠiI„àF–ˆ™&&³uýÍ0€HêèßYö×Ù/ƒÚÕ_Gˆˆ¡8ši<õ£¤˜ûº+QÅwØ~ÝòÀ%èíÛ¿¨Í ÈpŸ77ÒkLe#éƒãÒ„k6{ÓvÑJ´Ý\ýðÅ9 �0çÁ)àz›v”Å-Ž¦&ª_‰Yo±‰Î+;Ì&æeUê.3QT�eæpŠ“ñ¢£38t¯D]þ‰yFMÓv´fÔêÌáf†‚¹㮎¤¹¤Ôö¢>(šêKo_‚\–…ü ŠØAÝ|<ÍÌ´ga~hõß4ï•ÉÌ-€¶»íß¾ú‡ªêÀA/ˆzîÔÅÀ`ªƒà½=Dšaßnš·X/öÜ—~·/Q› w3-’â�z }]zØ„ÏÖHjKÃS¤“ŒlíTÚéË…FaÇUû‘ΩQˆƒžuêyžÖäyÛØ ŸÇbø"Í‹ŸÓò®¿®Jß 5Nº™ ÍH jÄÞéf#žšezÀÈœllð·'"z€ˆõü`Úb@U½òßBl¼0„’ýjk ôM±ƒôÍé÷Áý€¥Ï¾îìøÄuD—(¹ýŽ\Þò— ùÒX¥Yk©šƒXè±·arÖ)cyt„º“¦æ9몿´Nu`®å)Ö³&ìÏ:PåfþØvì¨)Œc@(ñ D2åv–dzí*>«M’’/CƒD#âbéœO…+^=[G£ÔyÖ‰gÃƲ=•&%àÏQ ý—°eï·Ü1!Á€t¼=Ö/uâ6Åm€S ÜŠ»2ÐV4xÂ�@ìftLá„‚í⪢܃¨%€òÏDuÅ#OAþ'ëlt+O�àÕàºIWHÂu¿c"8qÙw£îœ$ŠN_‰ªÊe¢8oý$B.%B˜J˜u9ëì¤ éz" -8e½×ïN�yÇ™v½LM‹Ró=° õÈ_FL$ÁÁþn*!O“§Ûð{ 0hLji¸zçv}pËñm:È[wø¸HH‘©éiQŠáf6˜„>ƒÄHÉX1«þÞÉs»S¨]“›:P¡™Z†ø‹äPùaÞ~Í‚B±Ê§XÅv…þ»Á¤wWS6 ¨dâ¶oK«=hžiÄ£5d¿>]6}ÁÍÊ…^Z®ª´ ¯=dâĨºìY¦7jÔª5;®¦ªòH¡:âeˆeIòªò`à™×âï -ÞY !âX[{q:ûM© Õ(áÞ}¨³‹¸Q°Ô‚q„£Ú»¶;O[ÁÕÂQ»(ƧüŒ·LFWÁ¯0ÚÙééí@Âc+2»”�ÉóÉ+Ó‡ðôˆÆF‚Ò¥O˜°ïòC0!ŠüÔ£¸*BJœuâκ`� &"èAåÚÝéœ�_f݈׈¾ÿ²£Ž}4ªçkFKØÀæõó5,¬â>Þ°Ïɪ‡ ¹øú¢ßkow˜¾©ÉÑ«o¸F‰KJ"L ŽN©g·y†pÙ<aíö°‰û ‘£êÓe´æƒ‰T6½"8S#nX·?6æõ€CÝ™"±X€—É™‰"xšJxÙôJºÁ-ì|¬Ìàräb¥ÞÜ#ì…Vl[ LD˜E!ëd5³ À‡C”ÐeTƒìþ`*pŒAyžÝ¶·š>fqnäÀ\ÜùÍ:==Ø@ŸØ¦Ø¦d’€åá$íy bý—"^<hŠC:Âz½òh›±V*›æÒÜÚЂ-‹Wqý³œ=°UhPüsš¨¶ù‘Vt µm¡Ø,µR¹é.¼ÁnäD¸ŒþY YFxìë;z¢ä÷⎑Z1Aš:Þ«÷8õd\t6?ûi¸IC�)*GIh¢ÅéTÉWƇÆvüÎj(o4ÁM@ë3×b9HHºÑKÌýhn¡ÃÏ?¯Á9¶%æì|”D$v`°Á?µÓwãL!P…v•‹5¢e‰ríHTáÁrèQ´¨'¤2Ðc·œÙ~"âCoŒ}ÈC†Ù±5Œ5¯V˜RY¦D§D[ÒnL·Ì\H#µ”“ô™[ˆé -‡ùaX@6»ö_üûãÏÿ笗ˮ]ņ_e%'}ï^aÄå EbjYò�Aâíó}Õ½·ál‡d`æœUµº{UWý—oß½}ÿî§ßüüÛíï<úì¯Yá?¿ýíŸï~÷ã÷·Ï¾þú«·oùá?½cîç·¿ù%ÿñïÿúD¥ÛWÿæ¿|øñ‹ýó·ñ÷þ“ãÏwoâQ>¿û-(5Zd¦Dg…,ɘO%”uÝ~8Y$dAý9K•£ŒöU[™°BZôÃ|ª«¸ rä;}�3=ˆ+ŒyXB.Gß‹9ê^&:@‹¡EX „mnµ£èî— SÍ´`Ý”EPη¾hÁj�ZÌ; ™Ç4;f`=–C¦v÷ÂÇ6çë -À!Ð¥N�a˜Ö½ÜØ 60`Ïíé/ð'@D/Ðèf©!}8Ÿƒ!§2*hZõ,žC½_V\‹ÅæÚ² ˆ:w0Z쬛²áM€¹ÃQP3JF¥QL‚ˆ†¤íååÌ…j é7mú¼ã¶ÇSP·#¢ônLí�rHP†1æ<žŠPw@$žÏ¶‹r¨Ò.²ÞÉc±cÛ'òyU¹ðÿ�ÉÎ6-VÌi)ø4úŒF,ó°µ=äàè†ALº;‹YU¤+|`€¢[[@,×p„ªbc~–Ðhìªjg×«Ë 4?ùÔë)˜7”Î7�u`7-A›(UUmìO-xŽ”¢WîÏ÷Ù0(=Éiô7õx‡öVcòAìÃ&U}} 0ì®´ãc`¾ê±XŒq¢ˆ•šú~IÝh€Ðn-jï&aöþXØõHèňõ¬B¼2vÔ`D (cš®¶6|JÕú]ÃÙ©¤Ÿaé›â™òqñh4,ݲ¾µÊˆ§çIÖ¿·×«`ud~n(A;4H¯ MñŽ„IÃJ¨›o¨«Z8©ðÌ|Ĩ*D£kËŠ.ƒáK\äSàýð:ýBÞ\t[å~h•Znˆu•ˆý@ßLû‘²B5žsš‹Öa1Š¦K¹XMÍ™±!Ê»Nà×x‹àDçL«Eu‘÷[ÃŽèBR6p)yŒgŸ£)›b'Ý[ÒCÀ#PqïªÇ⫈è.oŠ�*›«í5-Œá¬‚^dq>s{Ô¥>¶ŠëŠwðž2¢3é´QÕWÒw�UÕíܱÒñ‘<’UÇÕŠSóI3âc'"â&Ûyr£Dg …W‰À;œ5$ŸYÌÕ¦¼Eƒ’…g™±N‘¶$KTG¥%ýߤû§RÃë…˜þ_…C -(t›£‡¡c —!ÜüžÕ¦T³Ú+ÜBåå¬ãä’'*ÚxÊA¤hh3ʬ6ËúÓü{EG°7õð‹z7’{š3’)—PX± -÷n�þ‰U:??V©SÁ ò€çHãXíZûžÅódõt”YB&à…ïÅŒÕŤ7;Zò‡ê-åVÕËÙC'º ° ‹)j›ÝWŽ^Öð`™.m€~Ó<0\H P51Y.6P&òq·vÌrÔ�Dù-ƒlÐö[H†xÍÌ-`dšVGjjçS8†01ÈØÇ^U)–üäásN²Wc€V�àl@Ir¿…_R¾´…Hêªæ+:#ƒ„Ø=Ì••†ÿѾù”=]™]¸óBp¡ª(0Àág!¾€õ|ÚºUôY#‡£R€„v}ô^®cg* §~ŒÐC|Ò.ìd˜Õïªa -ìˆÏ€VÍÊÖÖ¬i¿‘EGçX—tÐá,Ô´…æ°œeR¯Œ”Ï4œ²> ñ˜U,ç¾p@Ó·p”†Ë±`£¡&›.ZÞYîÂù©à^?’±…*YélöéÏS’´UAsQÛ¿Š��Í«i -¬ 4iȶecºÜÒ%ŸtÐݬ¡jV+ÛB°L3‹.±NÌ,4ÇŠ+LF4rÞ®â1èǶíã;‘–;uÝKÔ¡ömJ˜ÂÈò#ÍØ*x%š÷:Ž(—±3:HÕ|±î†Ué¾QŽLL3�xˆ/ø[NPå,¼mÑ ué@YgÍ}ÁK!L“գఆq0HÔN”Ž&¶£`Ô—¬-G–ÊÑuÔŽ—hi¯[Î+yÆíH¥QÃÉ<e€cUY>ÏrüÞé)K›FñÐ$Xgᘗ0}pÎÈÀÌzo¬çÀÞàÚ·ª9*×õœeËe`ÓŽ¬GºMŠPéAl|ÉýV^gIˆ)ÌNK¦¶æÝ!§æ@…åÌ3U+3‡X ¶Ê’�‘’@°QCïH²ú$QËV†,npìeÂ(‘!˜±!*K½‘µlèfÆŸÐV04=‘5¦£LgŽ,ŒÔ7¾ÐôáÜc·WÒ¾`DzIüaíÔÞ 6¥§˜ó]îÂp5Ý„Dk¡|£ô‰5-=Ýý±y‘` µ³Óë,4]ΧtÒ÷S3Úö -ÄÑími@6~l@C#ái®™“íúôú쪮W;Ä(¶Óõžh€ÕÐ4ƒA;öOYý/8g2û¬3p=&°ó(™¸³ò^¡`64 ñr0<ZàÆ&M7`¦´Ù]gœÛ؈u¼þ%©$ ú#ýg¡ÌÀQsŽY©¼.Æ;i/˜¶O8‡—š²<[8sŒN~‰áõ¸6^_óÌ<ó2Z3>6¸–‹ø3y‘q‡œ)(±Íá×FÄ:áåêd^| -hür;=ˆ™YÄÁ=wa,Û¦ø„´ÈryçrÝ;¨2ªßÝVÙË$ëoÆå+UBÚÞ*6ÊK<‚°ó|ìÔƒËñaPB7h{çMÈÙ`Òx#y¶ÙBB‘Ñ�U3àð³ìB=íÂ7Ñ åi®¼BB•ŠBÕÚóîþ?×DŸÒUp‘j(ŽVAè" -/®ì -†º`XΙz¤î•©‡g~±q8ÚT’Þ¢£ÛTÛ’€ê ÎL8AÌ n1,¨ÒÆå�üXOg�î(Èe¿1ó¹:ƒ5¨ä*pYüN/;#Ëù5CésøÜç–}QXsØ^ŽR^¬}|òàødPn*—6¸Ï‚kév_,Ñ4.J‰!Ù¨(/0Ã' �îŒ6cC -·~I%иçЄûDtVøŒ™® jߢ3s¸Iù1г+k?¥Cf¯´©îl¹™oõ~(A½&Grÿqºko“«Úœböjô~45{)Bqk;è–<d·€$؇@¹óùÔ£íºEp†AKUÛ‚œÅÓÝ(c¯0ˆlÐo¨ÒaGíß|oÞ�ôyr).¡—‹¼1¢B¾ á¶�€€‹~Na㨠=p¡¼øyÜwÌZw‘¬ ]¶5½ÿî¶ãxÚû3æ¶vUq–×¥³`öX,¶ˆÛ>ž¡xªò5±¼·éGÌ> u&ÒÀµìø|鯣ÃÐ Û=¤¶v·ÃQV™mr ’7¥œ…oÚÛ«xÊà6¯dÈuܽçSR²èbgË6‰UHxVœ«¹Ç„F|8W7^Wc¼ôm¹m´ªÖŸÇ´Ö\òF ±—³Ö&-.VnÁí1;la”JÈž™›ç@qß%]Õgìæ²nyïh>ËÃa*ÖPšè2 D›Är1ª•#ÁB’Œ¿\@c²_臩àË‚7nÑϽ<⦩{ -©œ¥QgàzêJ²Z…fý]�†,Îuåhë,÷ÒñAŽ¥B8Ý @_”AGƒžY4&>òjLåS ¾Q‹«1xüëåÖc×QDῲìÞ}ox² B‘@ ó4²lYeÆHþ÷|kÕ>{’s†7’Ø™éêî]Ý]µ.(%‰'1Ñ*JdQv-exÔÛÁ¼žç¬ìð_è=%Q‹|PV²Ë¶¢;èèlw¸Tqžd5 -~@^êzÌé¤w�๻eysãTËOMöÝ…¢òŤý˜ÔÝsæxy‘"© -ÞXù‘Èœ!H«ä à?Å.”�ŽkÜ|+«OA$Š½´YSÐæ¾AåÌtÔÐrm‚v‚´†%&Ríלãwàœ¹Yq@Õ]"› iÏMu_Nè9{UuJ¬ �^çFb}55LÄfƒtu¼qÜÚº@Å]ÂS”«Ú´4ÁdˆÊÚ<ªÎ|Z¿0T™Êû:(§g¦ç²¡¤žKâÿ1Py[Q âä¢1Θ`mý-Ò”FëüܽEJª;.ª ¢¬•¯ÐH±*ÍH´Ó¢iéJ�G0¨dì�ŽÐe(€®˜—ݦ0Φ°!ÈmÌØn?(÷¬�ü½Ç}Yã¬0 -Hôy»]®'®¿ -ÿ¸~smˆ¿©ªƒq½Ú “vŸã,ÚŸkDï±Ù%F[Ö©›ºØ]:@0L`EEVá˜î~P\º›ëÀ¥0r›GpL>·%r°+ €¿lˆ¸a¥GËøjH °_€¯Lrzå$™Áïh3}!®žÕùÅ(‹ãóWèyžNJì(ng¡Ð£¢L€£È»usY•ÄÎCu3ã)Ⱦ:–&¢¾óZIVe§ºøi4ê¶ÌÛ1 -¢pn2u€VIua3—U/Ò“H]zzGáê0²Bœ,!ªË‡¥²vÉEl AN`R:¶ÔÃ{QôÕüÎ! c.7L#®§²Å*öˆûsÀaøɳ -Tö=+(ª‘ogüçp·†°›å�"+›’‡˜1aeÙ‘HC€Há°·D3/ÕU„_ôiGšï‡·õ¤|LÊ—I>“Ü*%à\3Î #&¤• ý˜ àšÑ/’àˆÛà é²RàšÅ†/áŠgpÝž1“3`Æè2J)Kõzˆ¬‹—ý Þ°–Å÷AZÒRÆ®k «>H -I}lê>ƒj’žy†ìžNÕŒ£EGgžH ÖP¼ÈB*‰ÄÄ„4Eö—ØlêÉ)6Ì*Ö¹µPWܪ �õ£ñxÑ̲ORïWà$Í*«Dðs”%„½Ïšš´Ï06hóq_ ³hlT¤~ýuz?péfFtã@«Ç´¯„ F][Æ…Üo©‹ÕÜ‘¹ ¹Ó·Š›Ü„'¥4 *‘…€1ÿ³fÉG£ÎrÔ7¯)(£S+J§rf³¤Cj-y)J˜4Miõ‰‰D ¼×nž5ŽYÐô‚²„•ùˆ$&݆;ÓáWØ—C%@8)&î²Î»Kë‰ø�ê�ÓÅÀÂS7”µŒÛ$'Z9Ô "@j$µ5ä©ò:T¢‚t˜d ÎÝ(˜½“°ŠükuîòwS¼–æÕt<½tÏççpže78#€‹#à - °Cþ -´‹…Õ±[˜³Õmëý¹z˜UZ.a´A(WŽlBHW 5•Ì¸”MìFŒ*%(JÖ±kjÂK0^¡tÕ„cÀòæaþƒßû¹««ƒ‚9vµ†¶Ã^ð{È}¶¨èù,Pª�†pœ÷ñl„%#¨·[¼‰Ššª“¥Z»PL¸Þa)`){ïr½jO”.µ�OB4+Çä‡Û9ÛRþMŽeéNPZù÷®ˆñÜ›mWšnˆXR�B[2ÓãRäV£´\Kû~;c ‰œ£i¯ƒ(É$“géÍtOC-»ÖbÅ…îQ›ø÷^äÖñh9£Ë6YïÂ[ ìlßé1."?¾Æ˜³ë�µS0ûÓm,Õî§Ê¾pT¢%§Ÿ]O²Ž5òazÛ´é-¸TÉÙãNtõŒÍ½àpŠ©l5Ôg˜Ùi®*+£Ÿü=089gRòŠ" {ÉÄ0ˆUCü¥+>—z_çµÉˆô¥åË�F -®oqM×záfyW-ãzw¸ð¤Ü¥€(ˆªb¹žáw¸|à::ïj°H‹žÂH¾Ä¥P”jœ’Ÿ§=äŽjLÓpÜ%èlÙYÙêa8›¸�¸¸”¬8kìÒ/p&\s°A’We>ø’ä½< 4à`"|(d2e˜P2Š=ãƒ%(ƒq=ƒÃÛˆ:oáj‡ý&Õ# -åmFé²EI˜¹£óCï`j˜ÈvnGÐÖO²…°ÁTç3N‘{(æ@sŸ0nBݘåqÜS?73|SX(O¦v½ ²uW�…Ú@ÜÖÁ)íúÊ¥.»•/'ä9%ˆž3 ³5¸Vö¥Ùo\lƸ€Æ/C¹jçjIÒvï¼y;NŽq—Æ[fkg Ê!Ë‘-d—>|Y%ËG–ø9añq3¾‚Ö|¯‚E)én(ÄTE¿Ýj¸È»ÊGÀj½Q‘`rŽŸ-I¨å`¾þ¸ ^IàÈMÁ#J¡dQ!:‰¹è"Æ€©±Ý]>DjdêR‹Ô•"àš&�"@©qî‚ÜØ, n ˜§š¼I¶¤€$´Hxš:‹ÀœÕ d@éØ.Û¡£Q¹e.—ÏmBÍÜ(¿}+PYÉOŒ8KÖýâ Mqsº€ÛšœPɪ8€hø-úâÃÌB%Í3/8¥X%Lž«¦ïIŠ”ܼNœQ^9c iQš‡N>t¤jÛG æUˆ#×1 Yr} æàµn%µrÉbü†¬-Û|ÙìGÖÆák^$TãȃrÚ2è3“|ÂGŸs`DCgÀËÂTçZ{y\…„å–‘‰*Hc ²¬ÜŒs†)!áÍ®c -õJhôÊ`ÖÈ°n8R®‘š�–Ô*úUç£ç‘Z~.; PÁâíx3–) þV d°ÅÉzHC�¹Ûu= ˆ™òðvgð*KqVé™À -åÈŽU Q¶ -Ø(ÆvUBUß*"JxI¥äš8VY§]Ûs ùOšÌêå¬×AÞRÁ,®êKYW@Ä÷ÍÉ•Ü~VJdpÂÿÌàw¢Ï M†ãî¡.‚‚‚@:ãp)¥Hq_vTšÐ wiS‘tÛo‰=$›Æ®ë”t¼ñ xø‰€î½_ÛUè]b*<´v«¨.€VqãÊ«"o]y‚tÊÈ,‹ÇB`,°û+Ê_¤C+ÑõœZ,áÀŒ@¥Ä.í®ƒt% &Fb›náôDÝ!J¦%&زj?#¶3O²ÀnÂÄÚç¨Ü´´fâé·n!‡F“3êKÊŸìãÐô<²‡«®äÏ+º®!¨ªl×$D—j—{›â®Á)Dt˜Á…J>×)ÈóqW²¤ôœg߬(¢{ÏÇøÖä»ÎRxÐçj)ó4 K�ù°p”¡rsUbã,ô¡("›'«—( ;±KÚÍ|ÛÅ”.«Xª¡¨ÎéüÄŸ/??|÷áíÇûo>Ý~Ãг_#7*ؘ¿Ù^üõáó‡ÿØž½zõòíÛ/ÿúáþáæ~³ýŠ™¿åÿ}û#ýøÚ,Q¤Ðbò¿¯¿ÆÈöú?ôíÙ7Ûë¿ýïíÛ‹W÷÷ÿÜž½üþ/oÞþx÷ý¿ï~xÿéý›‡÷ïîXŸzzÞŸÞ|øx÷»ûO_ïîºûý»ø|ÿåÓ/’[gi{ùžÿ}yüñÛøù;ÿýgý-Pÿ`�È— endstream endobj 37 0 obj <</Filter[/FlateDecode]/Length 28848>>stream -H‰„—MŽm· „W=ÜI¦ERÔØYDfA ³Ld÷ùŠ:ý¸‰ ?ø]Õ!%þ‹Ë÷<cÕ˜ŸñDžm9üœ1F¿ìZµçÜ«¢Ò¿¬ávbQîË£¿ª´í1NuL˜¾GTÙ -;Î/†ß[Ÿ¿þýOþÛøà´ÿýëø«ýXÚ¬ƒÇ<óc¹05ÇYË'Ÿ½(Ý Ô¨Xþ%„K!¸õi„§•¾r7"æ°F¸]QñùG;8O9꤇ÕÇöyâœ8vøÖ>>Ï39ªãsŽi;öÞ,NÕ:_ó9Ãv¤Ã{>kŒçÔ$8ëdìëfÙ3†n5*s,@óî%ŸäBð!"ænÄܱ…˜ç"†¯k#f#ì¼ö¹Dl×YÌ>óaÜ–džU}MÒ«¯;›‘%ûå±çÖ îmÃkçõd8õ$ +Êgó¬u°ÃÕ†OBÆ]̱ƒãÃK%ñ&gxYA„|Äcü^ñø$ -^õù2âÍGõ(¦XŠyÂ>\ékåÓ“Â[J¼Â½ó97ÞI>ÿ#)Z›œãGfWñ8þ¡ú#¼ø|æÃ+æ1U?×^d^‰õ?˜S -DoîCE� ‚1_’I±,”y{Ì[PBmJG¨C\” P鯴psêï�h·kæìÀ¬Y«§ (á³~9 -Ó‹rzTFÊÎ^¶®J©ÍÐé ˆÅäÊ÷&¾Fß$ÆEx¾æ±6áˆsN×;ìá0/ -¼Ó´áÛ0!õGe“oÈoùv¨æý½†w/Òq4§ªüýÆÏãÙ9¦ÑÅœA#Tç<•¤æ„éý¤ÔþjçPþàLo&Ó›K†=ܗϾªÜòÙʇ«Ð"ž©üˆ3¶òñGÄ} DAõR¡ôL‡ÿvˆÃÈnI˜kÏŽà>º\9yÁp"X²1H‘"H NÕ -ì3¾b&ÇBuÙ‰’&äH½}͈{°j]š°VõU eS¢ë蟋˄XeñËÍÓ‡ôÍÐaì{M_§ Ž‡ÙP˜ 8»AÁ4R P¡®„?ök×Cm€¸«ªÏ0K”oënÝÒŸÙqŠ¡Hr÷‚b~? &Õ$°‘ß×î{¸ÔöÀ¤¶6Q†…(!BäS0Ã!k“=n£Xè—óíüU?LЇ7²(`RÅ_RÈ%Ï7ê4#åÄO•û ÅdRѸ÷\àÔQ‰•ù¡Ëy‰˜ôÔá꩹‡˜q}!˜ñ`P´¥5ÕPb÷YÕB¬Ì@UÕÀ¼É”Oø3¬½>ÿî8p8Éö4ÙX¦›©öû±‰˜ø'¢Ëu‰àn*[ß<PÃÌum˜D«D¨ífÞ¢GUSsE&„﹘¦YÑÕºi ò4 [Pc½ ¼žn‘ - qzYA„_3¹h·ú‘@èÈd§4’w‘¤Ô1<hEŒxM©æýás'Q”Sœi,+©´dW²Ì’6»’e´ìab¾¢B(æ˜P;æ6Ù(iz£N±\ù”çʧ½®8úß2LžþÉóóù¬Eu£|Ôjâš«¼ êÜ®j«âh™Í„…u©x]ÍÈ<F4á–aNä1“3·"H[1V>Ž&(QŠç×$ꟼ61k-¶†ˆIAÕý¨–Øš‚Š‹È£ÜÅG¾AЧ;«ëŒ×Ôë)»ø„ÑÍG~!f¡àSy¢’fÈ&oÓ`w4‚FjÔÚ0„_¡Â‡éÁƒ¸ -#.‚ÍH.@3ÝŒÚY»ï0kzC{KâiA—|oú/rÝáQMÛ Â°å”šC“¹#ÉÆ¡8Ûù¼žº'$0çÞ´G4ƒçTŽ˜pÍö}å²~ãREí ÙfBD[±å÷+j‘¼_÷´B¡`úœû†Îï ‡„ab£%~y¡JC<õ4:GêKt -AòQÃæE¨Â„€ Á-ˆ°¦¼øTŽ˜(BЉ_žÐ0¨(‚(ºî pïc5TŽçQ¨ÌÉz—¹æùçÿöÁooÛ 5z -qMÒÉ[|,„" u†×íP(ߊ?w£ŠÎ�%º&ݲ£—Æ^ËAC„} @K¸�Kë�©˜ /) …½-TŽF‘F 8!ø`œ^/³„+5TJ0Ûäõë¶'Qr{JÑ2Ô¥=&¡AW÷«´CO碂ñÐ S·H‚ð¸ÞÜñÑôŽD чT¾Ûá†Rk-?@8ìT]°Â´à¢¬wžã*Žô‘8>Úsç—Eßd£”B@Ô* -«›97’�=B%(Føþ9GºTŠ -áÒ€»\æu³¡1]èÇF-:Z¨ÐBÒâut´÷@êt_T$GO´ëhkô©k÷—Ð#_¢ŽÃ<FéR*Ú¡h¾u4dK#yŠÕdjHe%T\‡4XÄTeD𫛆ơb² ‡tÑC:Ƚè[ošä8C¿€ oéZ:&5)â'åbt{àö¯}÷Jki…ô&‰H.:•£¡üXZØØ#Iµ°ž!$zô1 4úQùqß´PW[’¸?Ù‘k„~¥7ú.¿ *‡X~@ð¦|“ñÃ!¿÷ µšÂA|ë�ÏÎ #IåÙ¼ ë̲ye‚³ju¹Þ‚bP\”à Z÷6€·�'¬ ¤€Ðªë¨ƒÉ¼ÑF*1k„6Õ_Ž‚…Pª”ŒPlµÈéìØ}@ßôÁÒ�åÓ<¾!JŠóÖíéò¤ºÙIÅŠâ’ˆÐ÷Úw´:vàLˆøF™‚1ž#´mHû8„P_Úí;Jƒ€ùébÏ7öØTHX6P½œKÇ«³+Ú+8åädWñïˆ;Ðd^åÐ=ßíئA”=ä0"€›/ÒŒ¡©¡ï�xñ¥VÐÌY¯£o(8€†ÀÐyp6Ó‰8èAlKKÄMq¢lZETÔ«d/ K>.Gáüöz–†õÖj;oP¶ÄÒš¤Øu4u¿×É‚µ¤Éó‘8±™o’ ";^‰þ#f+šK…&‚‰zXtö$6Ai)öØRš°“©²bÝ\Ž ÷zUZJ¹Ï}µ2¯f#¨ë 3œñšëÐäá®ß —j¢dvAVTU#±Ì.Ž@¨dS(T¾o¶â‹7K |ïF!΢QÖBÒ~ðœ4OæcërÈ—ø@Hû -±«BtÁB°‹ù/O¨Vyb(‹:tŸ¨¶“LÀ¶S¯ PÖ•NÏ8êë"T¦qM²H¬ý—ð2±qäH¢¨+mA#ï̲G>È~½Qä`È„Åš®Ï¼"⻿®20Hš™FïœDÜ'(ÚA,fx_ŽQ+vÓ›bè£ÿwN¯hBä‘ÅéØò6Öà™‹/8OäÉÈ ñ±žoŠlÔo˜k -÷¤ÇªtŠÒÖÏ4|J•H=·QlLý¶¯‚ä'Ag_yð¢È ¢Sc™â42â•?&"t¼lgÄÊÀ" à€ðÄ.! {£•FLÐiùðþš -{lÔ¶G1£ä:¿#Bþ„†85¤ÝÃÕ‰¨è½nªÅh_Þ›¦šÛFã²¼s㈰8èx\l§V+éãVF¢^%¬W5T½ -ˆä>T�íãaŠM–.rMsØi`þ8ߥKBM¹¢3ß±,ö-Ûoâ57ÆM¿u‚;hÆŽDË¿_)ºšèøse¤ùaH¬�5 bÕ“DíRZJ·…Ä ì\Ë0¨)e3÷Çòž¼Gáñ–B[V ¸á»ÅŽw!µätE`º.Ç×—¤…‡ïµÃ·´:‰í'Dוìw!þþ8͵'âj4åÆy·Üâ¯N -ŠÃ౟i*ôHEêýDÄ6‘«Èp¼åÚ8ÜïuŠÞš÷‘ø®‡rLZ†Þ‡nãÚ '<9C&2_0·?§Ì!2Ë“²õdtYª´êgú¬%‹|ˆÁ[:Zz -)A½Šn\¸XÍÎ"®Òm º–ìEÀmëPÑ’5—Si å+ú$t¶ý€èFÄëC¶úÓ]£pWØlfáÿ™e$$r|Œa°v„0|ûïÞâ:4{ø—@ìƒG ‰$8§ò´ -ù -' -“D-`˜îÞžã@›âÝ‹vL»÷ùD!(cÇ<•èr¥O%»Ñ&žšujÐâƛٖ¨< ^í&qØn#Dç{ÜÕ"©Q¤,Uë0—4ê'¨ë P)O 婾:gÜ;]7qæ©ý5ì\P -S®óÍ:[ë¢W:Äaþ5Y"hª¸p‹Àšô÷NÝԊбeßá´+v9Öá`t4âNê\˜¼Dˬ‚`ZóNé¤8VôÞ‰Y²å"k––”ÂèI)Äg y<v¦c‰PnF'‰fßùH9ïíë{ncˆi´rYàk=Õ¢ÖÈvZx¾Ù/zšù„À!T*e</îùqz/’&ƒÄ*2po:&pÅ%áÛØÚççXšKrþµM…[™² ébÅùFˆ-OÆ{B`ŸŠAµ÷«"_¨®õÐ Bf×ÊÃ^S#‹5øát«<óÐÑ̵o>C5i}^#ZËÃÇqqpüŠ(Ž<Á|ø³)”ÅÿÓ#~¡ŠŽÒ@ñ õ h9ÌÕ CÓá;.î}9øŸûÍÝÛõÈwâØ2=ÇḊu`oú\önŸÛ‘ÍÛ‘ùNýÊ슷DÓoο0´&Ž¦,[ÕL!~Elñ«…涴¦Y!+±§^KÉÀ5°v"æz«Ë…l]±Î©'çCT¹ÏU¨ßË©ñ™Û² nbP¹X�cpï@ìùº„«Y_#¹ˆT“…@œu®ü\÷Îäb3 d¼à^hýŽv zþ|HÉ:>š†×{üùuL…´–ˆƒ¯LUFxïOÄ©šÖà!û;P«®ã¥þc¥ã…)uÍüÏpîEƒÊuÞåÏdÜ�Õ¥ÚA½^*<^þlÀP#Q:P}·ëh³E aðø>˜ üpé…'Ž”9}oôŠî…™ïqÎÈ ¶–ƒ#°^ hÖ!¢ANwQ| ®å&bÛøMGtWk>#ŽÐĸ(?–ÃuеCùñV’¢Ù‰lé“ È¼¯ÚL>êW;Ö…Š\®ñÏÁ>Pô©‚8±*se«}‡ñdèµcÞ;°„ï]$É÷‡w3ºÑÀ4ìŸ_!ð=¦`Ž87žŠ¹ä ;Tùgʽ#îN·[ŽÁ€„„}i$½”ïúôÅ©ö‚UCBÑžÙµ|鹃ÄèpjOõ!’<#—C?Ï7"8ñ'š)t[äöÂŒü:J¤*´d÷ Ú ™v‰Oˆùûu#çq*BÛX†4i|ÃN×%=39#ìOÛb¹‘,l$—¦kusZˆ†Þä1ùx;œÜ/i¬Ph.ƒc1dõ¥F±Ì&LðÖçT)˜£ŠBk\Š3Ví6üíÈIc,ÌÖ–!KWi`íy¦íŽ6߀»ýAb0D‹qýýþð¯?"È…óµš~޿ꘇFE`ê - h|é-fî×N$ˆ±‚¤Ûå䓇ñ£ÊåÇÝ_—V³cVþ¼A Ó1¿¿#>K�J €YóµQ!ˆÎV)l·Ø -ú•ËDµ�Z‡@DÃ0iðy"`D˜”ˆZ¤�HtÀ‘¹Óñ|Œ.µÎQ» -×Á=ŸxôÐÇA¯Ä§ÉÇõ¬_9wÝ4›‘½zY½öð—~Ž.AÛyiœXøShÂ|cd#Ò%ñ“” a“#Và XþÆ…Ç=Z€¡OБ…Hˆ’uà‚xMörß�,Á28¨@[€ ‡œ@@§4Rîïæ†ÊA)óâ«-N—ßK~¿F~GÅã;”ˆ¥ø¸O‹¢B/̶ˆ°ì¹ªÊœ.Š£I{V¼>ø˜†g!Ûp9ô\ -ÿì>,öF5t3èZœD–õ~Ø´e} -“ÐbnIƒSdn0"}Ÿ¥ÍãWßÆb§+”ˆc£¿»oø…‚y¨�+رíRHûÌî1LüÈ=º À†A½`¤ÊùÛ‚¢ûÝ`Œòåˆ2;´¨•ë7® :Óï¼øɹ®‰ÿtí•D¢Ð ®Ô%+Ö°™š}QĈ& -99ª<(ZÅ:ÁÂ=˜[Sw ‚¢BWT_ç;y.tÕxï4i"Q(ç¸ÏSã禞OqâßÑlI¤ñþÞ&†¡ÙËåpÞd:.GÑñ WCshX´‘Âz†]É#Ò[¼Ø•':Y%eu^î -ö³ûÌ,tïdaxEÁj/To:±^–Aî@ø@"Ž?cêçiáx Ï‚Jy–rçÈ�õ9Ä”MƒÛ‡Es#Êm†WÄ°ß<£BâWÏõ!Êø©Õ}— |â ¾cº®úÛd;É8ú$‰¡àœ; Ò·pý4|h¿òê¦OÔä\\¦‡ù©Ylˆ“yä¨æ�ÂIÅf>Ë*ešråvþµ{ÿFÄN‹|×, -ÄÀ+?¬ƒ7Ó -¼â˜äHœ¤à9þAˆz*®÷NŸ¨:s)ÊKÖâiYë7óhPlÚÅUdIȉF½Yà‘eG -Ž‘‹¶ì{?c÷8‚4ÆŒÇÇò-´^à8O�¬8.WB€ÆŸþúµà¶¦l‘[çÊ„À;"�4FßùÚ•>ðµ uQýdÝJ`˜ûOM†÷h·ŒŽ š†\©fcŽ‰ PõDLé½bÞâûˆî€êʽOC«c²Ü{Ÿt@HaWÖ=M¨>yiEdë&}·²Î{î„~“ÁQ~)r-éïðîÑeX¬ÂqyWþ‹¸OvlVtúe§ÅäÄ:8'Û~>šÏý‰H’ù´|_ëh!M¶âMi;ÏÂxZ=zlìDtÁÈ.¨/øB™7/éŠÚÍyxßÖ[]ˆ$a�.a(¦ÏK¸X>/¿›vþ'"ƒ -§õؼ³²ð½ÎÓ+æ¸Ö²EP�EXØFô0|Œkp’0ìÐÎ ÷ZX3fÈ%O)ƒ�ÂT8êøþyÅHóq=HÃpGxë[5�èxƒøØËa¿/ò BŒmV†Pyþõré•ó¨¢è_éa‚ S戴<dB‚adäAÉr"åß³Ö©ê‹änÁY¶|oí¯ç±ÏÞpŸ0¤é.kÆËvDµXg4)*ÑÉ¥öâÈÛÝXî+z›ÄPÚ(‡¨jIŠ šÝg@u#ìy¶º&Љ¢ÔW(Z¢øvÒž¼Ø¦Ö6êR– å+ö±YDŒA Ф4|SMl'1Þã.éÊ¡J¡0<'©‹œCD*§ j™?5ôÑ¢rRUŽz5fLJ¤Ï…'¤ñ®¥¦Ë‰EPÏ“žP-£sg»¶HZÁ½&™Æ„Ü Š»Õz)bªÛ mRü´ðá(°2½9®#¿ús5´[Ìðɽ¸Eˆ¯¼42 -Åg’%*~^£v(œ -e”¸è\²‚)ˆq¨†ˆƒ=}S�M©‰$(ž�o´™K+tl~Þ…wi„ânø4¤äÒÈ´G—¶(™xžn;Àölʘ=@(*¶‹šáEt5 82(ý@´¨r -iÄ}Ø%}"‚Ú®o'm¾¶‘ìh,u‰Ò¼Î…9!îBémD"rY˜’‰ŒUˆ-&µç(ö·!¹"3ž0aX”¬mQ÷®BæÂ=Q<©"d“1ÅÁLõà‚Þa±;ÚyÒ*#¬Ñ“ôBF•šº]ƒË ¼ Ñ;Bz¤•E›Ð×3bW•ž´e ÿå>mtíZâÕªi:™×êŒp¸ãBà{s\*=Ù°$ Dp¶•¼F‡ïèQD.ó¶û¥l–s½W‰I?g"õDE2ˆÈÉ‘<e€© çZ½t?~ˆ¯Cƒ]p¥EÄö46ÇHvg_SCɯ›ãSszô…Ý Õ’Š�µÀ#%Ž'€qªÌ„ é=çP½’N¤h˸۔Ϲ$ ¾�ëRÇÅŽ3PžQbgŒ(4¹¥ÀH¯¥+-¡”'ÄïhfZ¯§Ì¡q<³8”i—sEøƒÏÕ;»ÖœÍ<+‚Ưt8)�¯H( ê¿ÖÛA3ª‚Á<©ÔH–šTGÄÆ>C‰�‚á¿Ã[ À'#Õ—Ø6¢ág'THhâ†ÍEÖ}²c¨‘“yM%•Ì<Ž-¯ÈŒ#ñž-éCqR"UC‘YÞ;¿üýŽKÛj–dD÷W_ÿVWÀ¦Ø ÚEƒ`r£×¯ÙCuùл…<X§Ñ@ui ’SíKÔŸÏ5 ÒƒjÍg4\mšD.MB¨,™ë!³T~wþDÖ^!*æ@:íÄÃ=¡ Ϫ�A=D†`ÙÆ—™ÁdäY¨Ö*&é^gÉÜdîHrH*ù ñpa™U]%6^ì£k24Ôcí1i.B<Ù‹¾Ê/_Ý-[¿DÁT/ëiSˆîkÊ;è‡÷ÓC°_¿FxЖ ê1p_i‡ë¥¶X´4]CçOæ`0*”ÉP†øŒ"öNχÄBçQ•6åd:ëžœö3ÕÅväó®X¤lsïÏ4ÞšÍi`í䤑Fè ÄÆûKç ôì³xáð =Åý÷áZºë“3@1# 1öAÃ2æàzä;Âx,ÆŸ)ð/Åy¡L´Eu#)åAÝ=!Œ8}G�ÐxO†s{±Ù'I©Üöêt.EU9Þñát¥ÿ/6F@*�DÓnýÙ!îY@¯¶æŽÓ}ã¯5ÙµCŽMd¶Lú ªnEU« ECÄñÏA±)’DLI&ìÎæ7·ˆAκe·e”ç‰Ô?ùû»¿ñOº½ûÁÿÿÿÏ¿ù–îå–âÏß;uLEYÇŽdëxÂä]ÈH¯~ûñ ²þ^&U·È¢®°Hîã. ¦’@HD)j =µøRõa àY¿ýVft -bÑF -$„‹€BM…u�®u Ƕ…}’Ü! º}i©…òg²¦±%i Â&ýÀ.¦`6L!s½Ç>YÊ�Áá»l“ÉЗï@å¥ïœ<εŒí\ÓNªj&Püºo”„#J"‚v5ÊÊ»`Ó\PôÅBÞáÿ>„Æg{4Op‡Í@©ñÃP"–™øzQ²›àX=þPáÏÆ’‹Àað•<3ÎЬ1%°D»h‘|¸Wº‚ÜZƒƒ†¢ -RÔ:¥‚yHcñ&'_jlá>uI#S.¸›‘†ºÛMÕBaæVo]X„D&ØGKwcÜRHI¥Í°•ðø=1KwQ#½ë±#ii\ÕøIYI.꣫AÑ’ÒD56 -m²?_œìçqø9"•’9÷¼ÙküPibºˆâ¸ƒZÎl43*&öé+NȶrÎÙâ,`ƒ)b…QtuœôS]—¦èvˆÍ/=‡4M*ê÷ò(Yð.èJrßEÂß‹¾0³hì;”m¢cçé½îˆUÚ…ÎLª6îš³¨„iÓÁm`Pl”Rg9v‘êÃHuW‡î�»3qaú©v's´’M,{Â%艥¦š‡aa–Xð-, x²_I…¿i†°çm³®ì‡®}\‘õQ>AµÃ«(IŠÌÌ=K”Vˆ¹N‰Õ®lG£¹TUN,ñtžzUB;ãnà r» á ¬"˜®»`³³—ñÁ¬?Û–D°K}; ¡ŽE5æw ¨bƒ€3û$4l HÇ>©A4"š².@ìKÉ“EðšõvÒÕ•Ñ Ö qØä³ÈLEÍl·lTæÚCÒOÂcÑÙ3òjüÂö>©àµª¤Ê8™`ôg‰7ÃÆ(2t…¨7C×"ãÕy ›ð5Å`&h“9ë`ÿÂÓ²hŽ˜iÏ*¶îÅ2ž&–! E®'‘8i™$Z�Õ¢Ÿ´¤bÿmNnò4ï ÔÀ?À -‰µ$ºâ”R©Zù‘°t™‘L‚!µD‚KZ*�â.Rä„C7á©d˜¦#6µŸ“WâV™·+Q‘ìi§I îQeù+5knÝ~}pxPhfM( -"‹ê«•àd~˜"*\½°D Šã\a.E8„÷IñV:›÷숀 -½j™¨}ÊÔ4•h¾œ ¥}lyzZF\€,aY¶k#Òå£Q5ÌŒ};Ë,3VŠMÀ[á(>W@.#‹jNQÝIêþ9ÉþPž³EÒ¨²$ÜO3—êpäÂÓz1BˆsÕU±b—×8Б¨ž^ˆÓfò°¹ND²ÐstºÊ'¨77PC¹¯îÇ©{DOGeQûjSwËI*ßvã¿°‡¤ûæݧÏï?~øüñ矾ÿôÛíüê«?0»¨¢R¾¾}ó×ÏŸ>þô¯ÛWß}÷îÇ_~üËÏŸ¿ûõí÷ ¿åoè¿÷G“ÄDBXУhfo -ELénÑçèÇ .DM WõvQítFÁœ4G)–z .0<¨)‰5›Fg9o -Š…=m–¥ŸX¬Lº½¸±üÚÄ•ù5'ýb BjÒzôÓF(«Ðᄾ@ÄÅ]ÞNr¢©Ó©H,ú®Ís@±0©4`·½/×<¹PV‘²'ãŠÆ)VôŒ|Æ»‡À½+ x?þEB$áàÉÏC§Ðe{"sV˜´®ŽŸ<XUã >ÀÐõ•Ôlz0tZŸé¬´i4Ç@Ú„ ÖCNë+ÇU`BžªuF ò²ò™Û#7"¨Ë2ƒO‡¨£"ÔêTu ¢>©*Ãè5zm‚ Å>%¨@ü)"<Ú#ÓʬC`Gc€Y³ª9§£#Pï‹”®{—zYÙöMÐ�w¶QÎ9«Å‹PKûE<hŠà££ËôNÄNƒ[a“0‘ªm’C!¯)På¡ßañ¡l¤ -þ½ýï>ùÓÿ±7Q·%bsQûÕ/%+#ô߬—;’,»±·Ò+h+üQ2×C•ë§{�=¤=å)¤B;w²Q@~"= þݨÔ?oÔÔ!ã(ûÃ(nÅV!"/å3”<çà6Œ�hG"ÌŸ[KDÍ•3�¬#þ‰bù…rÏD3HZPÏ9ì“œ£Ç3¢JU±½Ë<_bï¶D°†<cj´Ž|>”MÝŽØCš7ÛjÑÆ,·E?]‹´µy¼‚ã…Æ…ä°ª=÷ì•.‡£²ñiŠÝμ¢J_¶'ÂШFüIÊ8`Ç–ÚDæ\r¦üóú>¾2:S‚!aê ÏÐuºy8EÒDËã=Q¼öÕë¢9‡“«¯˜F�j¸ ˜Y{°.ßL@NëίROॉÒ>õôqίÖHˆPf�l›eÙ¬ãD4÷¬Éu"^*.Jï»eúC0dÌ£ÔÞ`X -ñ @PRÁDcŸÃê(ýrß#™mõÕ8¸¾»]6é_àë÷CjƒPO™p \¸+‡ìpË Cvu—a>.�4Wâïü?@Ï@å·ÙÕìêä9ß9Õµò?§gäü&ò´ç§ûAè‰.E,e1Îy•sä÷gDG¿¼ÞòbÇwFåi�$à÷%+¹n¸¼º¾ÝnT‡—°3Éa×{½Ó»ðé—ƒéFN¨ö3)ö1EœAÒx౦ -öo^†_Ðßá@7óx;)U pô¤¦È0¤¦»]HÇÖN¼B®$ª…hÅøcbE|÷ýRg¶^kê®5Z|ïVJ([eCuV^ø1y\ò?Üˈ¦ƒ0bkñˆà -Â.ƒÈö{l¯‚§íÅOæD©æ˜÷>éé÷NôáàóT"y¿óÙ… £@Úij*¨ß[ÝV|§´O„B2?Ù.#ͪÐ[ÖáÕ(+Z?òÓÍ^à§Hä=Ähˆ¥4Em¹«Äûc*ø76 ˜È›=„b2~tÊÉÜĆñrêÇz[ô(È;Oòkþcz–¡²#ág0ïò…mI]â6/t5ƒ¸Cñæ…i¤w`µ_^ðQÍNÒj,«ô½56Ìr<Q|Çü÷*-øuÀK´ýž“¹œ4Lk>g!v`gÄÈýÈ-HTfʃý9g‚ddh¤uî)zOªûñŽYÎü{yk“·†ÐÏ—�»æ{‘„nÁ¡ð ª˜|¼KSåÐKx‹õÒÕU7õB)Šæ AGœFhv{(ÿf&xR¿_Â0*Þº¼!,°£0³ˆôò•=oÒZÂK(¾|4¾„íÀ©ÀR‡¤êbÜ}keÚÇø+ ߶$@""aÐpóù‡,s{ -æº=&¦tÐZºïôþ:JåïÜ´„Þü‘ï~N¸˜éõüâ¹}•ANUà&Æœs‡¹´ØÖWÉÛD®44 <ŸFsÁ3d¾ÌŠee0uœ³GžöÿóÎÿÒù êá`ã]° -þ$C´X=tÅ‹ênj:R¸¤&D�½¶Ø×X‡‡îª„Kèž¿ä©ÚZ¤‹çÕmÁ9ÌxI”“AVíÖ8¬ì!?P"PsZ¤ ¹i}mû‡MhaŒyœy¶óß—¶o% -ÃÒOT?^›u¾$iÁ÷×¹‹#ÈŸW³JÄ{ÞôTQ=ÈüÑŸ+'mc½ 22ûºùI v}âLº^]ߺÁ˜ö6Œ¶:)Û5 ¸c§jrʾ"Ù›Õ<Û=‰Y(6üÌšùzŸKíô@4)“ež¡@Ñtqü½Kè0$ý¢·¾|•I�˜Ç¯&D%µñùKë¹óóéàçdòü¼o›ˆÇÍhDÀÕv7…FX'#zí@Æ5Ìk¢œa£î1TRÒF¶ú½çk͹'*u" #š%NDMÝ�û¡þ イJÕ¯‹cw•Ô—<i¥yèoV/` -X�S¢~¿¢Fc¶ˆpKkZé‰ú§+8ú!‘ëÅ>ÜŒOÓ¯dÒSmDè%‚Uªkcö™¿×c‚$Ÿ.9¢{S })ýÉ9ÇÏ~öµâ}šIÍM¯F»X™k-ª©C c$em7lAe:ÇãÛ¦ UäÙsdMÅt -d‰U=AwP3žÍP$V`Eè;*uºj]íEtà²[õŠ,\*ÎÍŸ"Øšôz_£ -Td4 dÂZ -ü•#ý<-”Z“€�}E ™°Ž³}§æ“u3þ2õDL‰"Ô>pøhN{«g½Pý¼gƒ¬PaVã?Æf礡Š»u*t·ŒÓ¾Í+fv=K·T…(ÇõEW¨Oš¡ÁE:Hü"P¡’A~ZŠÔÑôÊà=|Êꚦ>þ¹4¬éç½Z7jLcäf’FàZؽvI®çúopR -ÐhW]B_×¥ [>õwþÉ3{´™©¦å)Ü`,”H’`±h[?,^0œP€†I}lZÚîå+‰Ø÷!EhÅ W7ûbLÇóCŦzèg0‚¬õ‹˜ù-Ǧ+Õ0"èòßwˆŠŠÖžÞ=»ªìbKž/íž/ÛÝp -]Z¤î•=@%÷DèøˆXŒçýt=tÒ@‡Ux¢ÐSZ±pͤŽ.‘®šM{þ=G -¬†&ªdªŠÈ’Ú9ôBÍö™™qê&X·%@óe°4[Z!'±&õôèJ{ûF0Ã\òú%Ì £s‹‹ï|‰Ô¨á I?òž]G¯ïKÈñt»&Ì—VÏÙ’a´³Ê/qQ·ôþÎýÐ)UÍbS±èÐx3ü-†pD©;gñäç;¹j)¹âÑže 6ýà¯}DZ£ä vŸ - Í:\é(ÉÈ<ëÿп¤çrQ"Ë™TlD †ËÆç)À¹( éÖŸ¥}Ž¤8Ãø†F¥ñ¬ùPs_0¦|džûq¼¼ˆ <æc‡2ÜÐ'WANÉŸÄ˯´˜Ð•iZÀ9ÝH+Pô><�›Ó“ADvÿÓFñö—r†y¼AùÑO‚ýï—zñ'JàTî� vFžG9Šõªù9x‹â艈#ShîãNÎO(@P¶\Ü–âJmë~‰¨¥ïÒu¬™¨î´°PôvÎV&óÚŒ`øv"X(5_Á¤¹QÐÁ±ÿ¾ô¨{DQŽudl8%Icœ‡\pŸˆ&õà¾àªDìûvc. ‚Þ,Þ‡.�}[ 8 h¢a+mÄP}™pŽÜžˆîŠá•v¢â°Œé—yRúfÏãuXÒÏ8 ¢š B´�L[#W£ûÈÀ›Y°*/êÍ$‡¬*j#,ì(ãˆ'U™S{ÉnšsÉt²àTZƒŸJ¸h^¾ørW¾4Å9g:B|ÉMÓD@*’ÔCì¸ÅöÛ’FmIy²MGKÔ°Q‰¢gΑCœ|å!sºX˪µì¯u´aÏè£þ˜ùÞyË-ZùñPâ9ÇKlqµ¾ýDÔüÓÍ6ø´úë¤ b30ÌòínŠåÃÒ“ÉÝÈxµnÁpÈNXÇtkÂ’/ÞYgX‡bêmüv ºÆÆAâà¢*@¿|˜hŽy(n5¥�,)Í`±�‹é’AùZv·}Þ{nÊÿó -˜4JLªÝu«óû©ð€rY¬°ªŽµ{)ÜêŒRg‰©å°WýG2¶F:P/ßð{ñc³ƒIûaÍ‚Gb–Gæ/kzˆF -VRh‹ ¿JÂ%n©¢:½Þª)Ši}JölÒ~|É<¶©ên©Ðpå·’M2ÇÊ'sDPb›ù2ü{׎Ql@W!àŦ'Õ®,9³‡„""ÇFpó|€¶m6d.J5¥m—ËaÖ]ì1æ—–l¼Ü–¤~€!Ü@y�Á’<rïõW¬š©“scMÚ€š¬ñU›y‰ø|¿$ø ¨ ›ÎÌn…¹«•sÀn²·u‘œòº;Ùÿ‰¾+Ÿå÷û0ˆNÃÀÖ•g³^æºrWý•%Á~ºuk¸u툲BG6È!AÈI�Aú{¯µ«ºiÀ -'’O]§k8ÃÌ‹Çp*÷%›L¬pÒ<¦ *$ضíÕ¤4Õ™Ú°~§#‰(뺿%ï…Ä{Ÿ±h`³½ÀpúUuÕŠ¸ŽqÜ_è¹'{ÎM…¡A§Þ¢ÅŒ ¦$úX"†%7Ì!@бšcÝQú}„,;µ¦Ü”.XÚìƒ6`›kû+:íÐêŠ>4À‹þ‡ˆ¦lgf†l`D/M׺ÁgÙ>Š)»ôQô¾™¹—:“+«†mÄSèCžt:î$�¦/Ša,#î¼nX‘AÓò¢BóOñcTÔ²b' -©�Ð@i5Æô)N “i1€äóÈó©L/{aOµ‹Ù•Å"…²vkPصÆä0ö‚jÜ…æH¸‘4í²#à]#¤µ?”•‰9 ABCª¬q|Éõ†Ö¥T™œ®#Ï*Ð�ÈâõÓªÝcªª’€Ï7i›Cü×*„ÄËIlÃX⽺¹ŽiC‚=fò²‹«eʹ4ìÄÂ…(XZ�•Áï$ ûõ( - ?[úƒötèÕƒJÓð\ ÷„‘†›r÷óË à>, ÐÊt#`Qx,(ø\9 <œtë"ïsñÃIO�‰]Á÷éÔ±×lƒ@'nѹ+ShdUñqÊ€|@ÜÝ@ô%Àù¢î@ÉDmNÔ割퀾JÀ¹# à|^¨ŠçA˜%'ÖAD°xíƒÈ+nFÛ[VTé‰RMeŸøYY¯ÀFäciÖíŒ|:ZÎvFvǶ€…dƒæh -t'à3˜d„ÄÈ-{ÏY°B@÷Ö�)HóFÄi/±ŠðÒKQá;¨íSoEzk¢¦¯%*²—d” - -¡Œ#6k%$°¡)4À©ÊçÝŠñ9ìþÚÿð.ŸYDX®¾†Ò7M=àÁÝ&õ™¹q'ê²}ÿ=ÑøšìöRˆUì9ع|ZDÛí«o{ÚÀk¼i:&–‹†Àè€ìuoR–/Žœ0³Sj–A -ÚøÔñdJOˆ“)%Õ³„Ël¶‡`iKÖ6@á¡ÒéÜÌä]´Ü1ž@GóžÎPÃëiâæùªæÇé_'!Llƒê.œ òa´€ªÍ°• -¤~`ôŽ'ö]|&“J±|@]A¢“Ë7Ñ<WØî楀æÅ œÎ,H‡Ž9cb´âJH(‚t¤ñI¿KÉé´Ä/‚‰£†[dûÉ@R¢MéÙ~+(%ª|°Õ””L:¯¢•øAø¬šµøêårÙC;8:j¬Ü§µ¬ãq¦7¡‡é>7¼ÁU2œÁU¬ ’ ù….XDye”OÏbŠwRŽó±"Zƈ7•~wWÞ«^¼”ûµ}8…(º¦$JEf|1³ › -1WÄÒ]ØëJe¹Œ`ßu¨Saá»î“�kÊNàá㊕ÚÔoõ¶$z´Kfd°J.Q¥€»B,¹ÊÔlœƒÓ…Ý@â>÷ Dç ÓóQ¤�&og¦£ššx¯{›®„ÈTŽn÷ ÅH>…"‡FXƒ›aUÔ¸¨×i1è_\t¨ÅàŒ_òš¼”ÜùRL¡%»imI@U3뾈`f`£ûPÞ¸ª|‡;lL X¤ø±Œ8¸¤”ËÚýܨ$jÖ…/àWÅÏùRRÁPIÑöt"œi” \üh‘ÿ\§{OŒÂÒíðWÆ‘’Ä„VÇ€¯6Þ5ÿë%ÅáS”öÍA¤ox„) U¤‚5á}Z*ƒkdB3ÜìbOë7¯…BJÔ#ˆZž#‚óÎ>'âÐ:aEP`+€O©ë¤*eÒüã:éñ‰`4ûë$l'Ñ/ö’Q3Ì^ªÙgà2(y«à`NL±nKcô’ˆ¨<ÝÔ„¸ÙLPM-PWM´Çm‚lœ„V¢¢H™âÖ3"cªÛw"°¹™´édÂúÓwúnl’¥›–v‘ú$kz?EM³3\Ç×wN:$/¶QÍ)¥vÝvfÁ=]Áàòà~Ꚏ®Š=K÷Âôÿâr°VÔÃãÂE†7Ä -zäl§æ•}‘‰LÞbcjª„Ï`±Ë©àÀîÚ4Ä€-ÎL÷§Ùtj44&ûÓ’vÜö�ÛÄR²ØîP Je¦v ~,4F ×9õ¤1ƒLRiÅ™Fn#A�ïË× 2Zd¿pßÔ³tÑ™¡VÐÄ€H$U»µêÄûEø‰‚(’ÔÅK<I1=²ÏTÛ“,Ò\ûÜb(£z'u4‡Ã±Šµ+teû éÜ%ª3&‰b‚í4ØP3B:7âXÛà°² ˜Z×A"ªº¯ -ý^ÀÎ÷>‡Æe(ªw¬¦–nIŽs„&’J£+=Æ–â\Š£ë¹°˜¿Ô‘Ѷ�b{§î<–@Á@€LK6̼sBÉ£µÇÁPä;RlF¾‡|Nû2@ r ×.Zè5žk~9)oâ¤Û!CtчŠ.�Eð9A�5ª…ê@ö éÉÂ\‡§^~Èè|(8`ËTEêíƒI¬‰òàiA>…ÆÆV›¶+‰—þ¿:¬Þ±ÀmTÁÓ-´’Ã�Ž¢±×AŒ9AÄK{]QEå‚dL¹ð¹là ¦4ò²d0„–ìûIVq!è¡7”2®�¦8^EÁÝ!8xZa¢Ä �f½ÈXŠB—¥À¾xU Òaĵ§¯°Õ=à •èüiQB»3ü´üqß-'AíD]úZg”YçÎÂH£ÑsãLU]3Lb¶Ë\Z ØGO…oÔyfIS]lêib%Á8ð©1†5±æÉfÙ.‘$ìë€d…Z+ªåÛ‡ FÔ¼ëzÎß&Y}E ÝKK„öÂTÔùË_d”"Ÿ¨û-<‚| qî€ØHs -‡‰æƒi -õ5i;Ü…vƒY¥úJáñDÉCà5šÓ²òKá‹XkAÛz«Hšú~ä€æêÓ½Âƈ„Ü ò7˧®tíßÈ+ýÏ0v>`¼)/iEäøªl²Bì.|ÚÔËù²E‹X‘…n„êÅk_Ó¨µ&й†Þøk–Ú› Aò`px yÏŒoаçvõ5Ö6…Ù!JQ�p*ƒ[jFÉÃ%øk¿r¨ã0lüÂl\A"›¡æ}t|LÔ3>bôCãÒn@ñ=œk ¦ËcYj•eŸÄ<€ƒLÍy0y? óé‡BMÌÑ}5î«©âê" '\4ÏðX¼zØiK†ÆdQgÚswýÈ9Bsd:'Áj'ôŹ(ûUh|T? Ñ¡þ zìÁ¸L_[UèYZQ=‹§„°RB`0ƒ'‘>�¼¦§‘ÛtØ(lÙÑ4'ÙD‹Ð](=îßâõ˜ß؃û!ˆéƒù\:Yåb&¸vŠ¯SØîVê[DniB«‡áp›¦c<þ™mÐÎ4¡õ’šióUÜNÑŽíS/¡Jæ^]ñb7Ö 0ÓéÝ%ØÚFœcHô2êÓþ0)Qõ´¦z–„ª‡�©ÑÌÝ¥Xåh¶z}—¾–±9bOÌ›\I+0©-4Dx»ÎE-Àš|9s—"#æ š9’g8'íØ"ÁbõXLgtH¸¼§u â@]’iàŠ<ezc/°ç¦J¾¼IÙ°#É7ù,p_D<º1&'òàhyü7&ªK-yÀ¿øóí»OŸ¿ÿøáóÇ_~~ÿé·ÇŸøè«?ªóóëÇ·ÿüéãÏÿ~|õÝwï>|øõ§¿ýòù½±_?þ@äŸùÃßüãÿ´Ññx÷#ÿüúå×oÖïßçïõSòóÃû|Tö‡?üŒD¤Òõp’™4ÌÙmÇ Çhþ´£’ ÀüŸ(}ÄRSm#*ÌBôÀ(*l?_ž‰Â¶múd}ÛhŠ{çv!ÿa½Ìrå8v(¸•^óðí=½õ¿²º¸/,X0d¨ëTf“<‹$ãMž4ZŒ»V¬¨FÁa¡d1û[Bh-² ½Ì(`"nþ«oÍEi¢\b¦mHìŽuú( ˜ jÝL;=—Ø5— ûˆ(ÓÑ®’ÏølÄüQŠÄê WKð±±Éu43-¬ëNhÐèXmµq#×8Úþ�TÆ1Fx+!ëy¼'õWKHPþpŠð:÷ÁIó¼1÷íqy+ƒ%rT´àéŒÄ¦á„C»zx'lOèû’%¨¢KÂæè—)ÿ5Õs@`åÙˆ8G¿Pù¨‚®7¾ãÉ@$4ðdBåe¨]¨[tÆ`öáã—ª4Cÿ6„H!®Á‡£¬éŠD0õvÔ!P¦#Ó½L{z¯x@¢õõà‡åE@Ü=SÕa³6€§ÝÀVÈ òKèv}` :T.‚Áp4#�ŠA'Ž’òJ©oM„4âç·+C“ãð¦§d5n®N~õG—‚P¾æªˆ{¦˜Ptb}#bEMbH6Á¥ÿ°Î¡eŠA…²YãÖªæhà0¼ƒÕ"r)4oïþŽânCå‡AAváa¡Á°Ü –r÷ò|3×ÖX!®-ĺh -kýïõßoQ�üR+%‰3Ó;?W…¸…U¢k}µúˆÁ§íϺˆäö!îiÅCÀ|ÕôžZ¾nò�±ƒƒ@0(]Ä:yÄw‚Ðk´y¨ŠZó)>Ç Ê,QxPºÐ¹ê§àô0‹à¯@ì^ÁÓÜ€é ±gƒZû\6¾œpÍñÑ 3uè1®®G‰ŽÌòõ „«Œ1 ïÞÿB9ö;ÖfãPÚ£ªÞÜ•wÃ9psظSDóÙàšÉPŠq—‰ðµJÿ¥Ë>œkc^8yâæ«Ò? ~êÎoŽ”C³ 0ÆmA)Ѐ©¼Ð=L9º“6َІZ!Ðþzº¾j÷Ôƒ L¸\&º0f…™éjNâK°p0fÁ°`•ÿßJzá¡ZèÃUH@à¾N!V ÎxÀUÐf-wyŠkþf£±(¯›5^)Ø€‡Ir À§=d^„bòŒ8ÂõP ¼–l&›²U(c˜¦Õé/#õ–mÔ¸f„ÁÆ0ðß•áÿŽˆK˜ÑaXB®ZÇ»-Æ‘«#3’«9!kžˆ›TãÔ¦âŠjš#’f¥íw¬,úŠ¨{ÒÒœSñQ‹u b¬›fHÿÂâןm×?šMœ*þùþ[XÃb·!æ”ÊAéW“2Š .¬ \îCÃÖF‹D‘±„q;—a+(Yz<x5íbÄqy™‚¹YŒþ9xÁî‰,�j’†Dõ‚ÿeru¨ÂŠuhÁî1iÚísX$v2&†ƒ˜¹ ÓD¢Îg§N‹"GõD•|½nøš®ÑÌå¦Ñ×WÞë"P·›2MlPÍ$ŒýâÌ–¤á¶2]ÐS¤½5£ùƒzé*CQÇåk3*ZG¢£ù82ÑoOâ¦,rþÅdÌ•µ?ê? ɸ…ör#°ÛÔmV‚rÝ=ñ-5vÂ:Ó— ”}ƒ+“Êœ² H'„7+˜Ñ¶2›ùM¢°Ü¢Hµ+PµìpptËÌu°í±Î݉H=Ô¯DÜžº£ ù«õ¹ÿŽ8Î>Dýwµ-ý7ý)XÿèDª{¡~Í›”E³ûdØíÁ*Cìј5ùûËÅç—ÅY£ï™ò!9à)ý'ã¯ÿpîÕnÄvïN•º\Î×c|r1qæDëÝ�iyñí21ͱÀ6•¶D-%6š•@ÀC Øn<÷, - -Õ•Q¬¨…›uz§2‡íoíÁ aÞùY‘á¹Ó¦wXr jc÷*œ¨¾ÆYâÏ'/ÒËiÀ¶»ò¹)æjmœ€¡˜}!2]˜È²ÊþF™phöcÂqT^}L}Ù¹ð˜f„!B"š–þ*dZxeK"ðO+¨+UZ>TR‹0Òô¥¾MDë"D]•Æ-‚q×—“>Æ@8`¡ã{}v"|vQEuœ¨ZO¥–1Άqì£~«‰°&üË°“§…¢D@ÍOíFKZ m³iæR ¶÷âƒ\æ™Æ꺌aM§tmuOBÖ*Q[o.î™ÚjœªNàÔŠBjªñ%‹‚j[¯Ï2LôU¯M(p ¤‹Ê•¯ß?C|]ÓÖð=~æó°¥ÍÀÚ-œoi™'ZºCA/ô€GÀµ`ðyJ²ÎI& ìoD»{|f“ûiÂâåÂÆ¿¹×J¼c49oôyÈt£CCQàõ§ˆÌ®EÄŠ‚¸iÀøk´38N èbêTÒ¬p¥÷Î @Á‘¢ºÁAÐD^Ó-a TP.+Y;Æ’ƒ@ws õ3dµæ…?£ªÎDíòìt'DBoˆ5ãc*I7×› -œÊ«¤¢wÇœ§ïP|,g–Ä"}iA±ŒŸn™Uબya¬9êó‚r43UuŒžOùB‘‚p5 ÷)>5ë–€b\Óm�‰AtÑplL;Áƒøó/@y‘iD™ Ø{X&Ü÷¥Ã^´Uá2ïïشƆ„ÜàuNŽL`‚ɨˆØ“pÊa±u1nô¶µŸØŽP‰9Ê<Ó/“˜¿hSšN+éK܈9n'¤†å‚Þ·O¿òFŽ Ÿ]iôþSÜÝVÃéþŒ8ªä_>éq@¸M¸wËM¿†Ü)œ½61b¯¯Ð—ëdjCw°54q„öˆ*¡‡!È @IÇ ¶¦%™fW»¨ll ëÀ€Ú6föó,(“Mñ±!Î×ð…dÒ?Ø@® ÓŒnÈT¾{¤TÕ'‡{N”Ý"*d•øAùxÎIãòy>ù™çÜ÷ -œUD„Ä>õT.ÿìC&õ4T!êèYZ¿~€Q€Œ�àå°\7—(3—¸yS‚,áóA›zÂpïã¹#.P1Q³7Ì2iØÁú«j%œà1^tGÿe0B”áPZèÕe6D€M4 -&Ç^QÅÅžÐ1¨Š³ò Ÿ•²ƒy¼Ô©SeؼÔIš}¡ó }"dQÑ£¥1µ§Å*ÂþôD…ä*n}M¦VXú›Ñ±Q› 0�LjÚr Hµ6Ò§‰Z'¤yÛ§¹¾^‡psVA:¸áøƇֆ -SšDôˆÉ'æ‡s•ê1®ó¦Ø•†&Fê:/¥¤%ØøJYÙ„Þm]`xHÇå1ÀðˆÅ‘ç³|‡›è(Ú©®*©Š:Ú¥ãâ³;Jd$˜è<î¡<î¡ù!=ÔŒ,À<©W`h6¤ôTª“¸IPõÁH6`‹«p4*<xmdDÐghéAh£El–Ñ ²–¦—þ{ŸË5‰v(èmˆ¢O®ãU©vzK Àjù?NhKøásõYþè‹·¶ôn䪣)ˆ¶ha-®lf„ÓΔzèÐ~=§Ñ3ÛõrA;A|zÛ\•¤ˆ¸—�gãœÚÉXóV›|%†Þõ÷ïÁ%ÈâÉ;}Pßï4-õ¶ñh}•uñMC÷Ò$S'4ÐHÃb°§ùÑãë`y"çµÃ—b.‚݇Ó&z¢‚Al®/»"ÑZ3¸"Ò\zæjVùFÄùñŸ}B*ÇøFA›4„^µÃ´GÝ&<„Á|Yõ1ßd‘¿é/»~Ù!—|èiês¼'BÂl‘¯è :b1-È‘JN tÿg»L²¹u(º•ZAödŒ½'¯ß÷TºŽ¤É÷¯Œ'v�^C-ô~‰(q}Öè%îoÁ?‰'QD -JÆ _`É>M-vKÉô~"x3ÆKw>ùîôŽBT¨¹@ï܈ãߎ±#F¬ÉˆŽ À•¸4ÚqšWÞ¯^B¹÷‰™RÒ?ÖÁ¡@ìÄ#éIQ?s™ -HnƒÞ^m«iEQÞNȦs}¿A=üzë†` 1Õ0�†U�%Kß Õ¡ô0WïÔ-ÿ|´ìÆYÏVüر -”ò)J‰Ó×nÿó¤Ho"j‰åç3[ ²g^îÉ5Ò>q€vý¨¨gù$¾äM7d«A&¨ô2¨›ôP(*Çó”‚þ“ã:︓¼!²˜T£íƒ-w™}.H'Ò´hœƒ¿<÷"ÀW=Ü€˜Kåi,È¥Ž»Í;ˆ˜u,fzŒö>H4“ÆigØâ´!t"ïÆ{QÁápÂ×MayGä{iÆAÁ.ëÛ:D‰›añî1éô¿>F»{~¸ìÙ·_ïǦ×mž›ùØ„*Óù€ÌmÅÅ‚=¼õ]Þ¸j¾ ^×¼7î&¦ÏuÆú±‰NtøæÁ_ßSÄO@(ZÄv!A†7AOÄÔ(VZgÄd¯Ìˆ?\b`«aŽ D]¢¡Êcõźû‘/EÛI!Øçõ±£N…“é×;’Þ©sBWäR¬°yDÅ~=xIé³3(Bן@5Í4`EÅmÊ ù¡ÁוŒ1 "¦:î.B±KıM árCÔ4a=ª!:Ç0ÑyŒ b#®òD -Dæœ ¥ -Døk×Ø¥bžP9©î¶W©\›Î»$qËÃ}Waá‡>cÖ)?Múb*BP™Zt>Úųê¢Ñ.â´_û!¿j?°õ¥_Ûa›b-By£vÉ1Æ~APr²òTYéåßQ›À8Á*EÇË0[œa„Òí!KkÇMWá&§„(Ò¼kéœ1 «Œ[œör[ˆ€â* -è'Ú€ '׊À‹ô@D¹A`nF"0!À~‚-¶ˆÃûÿîDaN ¦ž ”Î,Åi/oÊ0<K…ÈDŒgQ_ƒêÌ–wB̽Ӝõå$ðÜ'B…¯lìy´Á&œäsÂØ -—;!4Ì+BZ=_sTt{íWÀù@-÷p;"|UÃgÆá‰R¬Î%×ÊôFxHg†1Çh09ýñÛÚÌ‚½˜”‹ÒdmÇ„Ç0ÃÀX£¹ãÄe™ÿŠÆ‰)°ºsöì; U+*Àhã.G·â‘›šÃ8ƒŠ¦}‰5Ý¡¹dPåf¯Ï n óV6[MŸçWšýǽϙÚ_ÖÁYv2¶ŸÖ3ÆRÀˆ±Eÿñø*›ï(õ§OÉ4$V£Òè(úA™,Ht…¦&—;ŸYÚÐéãiOᥑ¦0ÅÛ-¬õ£ˆðW†éC/\†‘/êU£M&N ¿á'ñ¿c…è`Èc¥è›‚á’›á{{.¿Ë3ïGïèÄ`3°¹[›Š±W»ãýÿþœ[ÓoÜÜq.ÞQMÁ -CÁœ0R&n1OSp?ÀT6Æk!°ê¼dN”‚ñ3š¨ž¨®SÔXÂ~ÞuÐÉ@8åŠB 꾈ˆµ^]÷|ãl±ÓŠ‚b6]�M%�! ��j×Àx¾žÜç#C+¿ût,uÑWûï]ãhšxËòÈðäýó4q¶ø;çðï ïbØ+êÇ™ -œÓ[æ ZxæÙ·\Mo¦]{â`VtÌAkìĘô†7õöXòçp'7·óEÑaE i -QÐâÐn´¨+i.C}æ]G‹Á:Å‹€Ú�%<˜W ý(gûq00ñqDÖä×ÃŽù†è†ðVnà-Ü�Ë$�óÚÌçà„S`{ιøÆ!n‡QšF æ¿åCÞK2´Öši[½ï¾³½I ‹ -Æ|’›xÓOw�@,'Ì«3ælÛŽn€Áå¿ xQtä°-'Q;QðÛìºLŠ`JpH9´ø=€”q± }, -#Å«„©%Q*3êô(/ÐÆm̦ÏþÓÌœ^a6àa°ÃG_b¹š¶K”R{8í9¡MÎ-Á‘ Oõæ8.6%ÉÒbº‹//ªÐÞº|]¬CŒ“W#øB6S ÈdC#êý%JæúÏ+9i?¡~ܺq*�Äÿ<ñëͺ"ÛÀ[+춘†=Š° ÅÝéax@Þ³xN« ̘mfÃèÝæJÓÔÖãQÝ—ÇH«7ç:Þ¼?ù쨻Maî«7 ´4¢F‡§5Åê±<±DìBJAMb'ÒRD?žÄ®÷,ƒ€XFÊ×NxÏø¸ÆˆT`ä•¡µÛ÷ΟÈ[D™÷L^KzçtÀ¨¿åá˜Q‹@¢”òüÊkK°Œ3N¦ix£6¥HªŒE©Cªa€„#‰Kz|êËFø\g3œH½Î5Ï2Ã[=+PÄq·>Ïöù÷86êܖУŒñût{^ÔÙ¶ÍLo$ H–$±¾ ÖHkØ»¯·¯£xG�˜ �FÊÅ¢?Ë4ÃuR T&ìÔS!R‡aæôß|¸ˆ•ˆöò.RTt -².cì•f%�#=}ѵŸ�˜Gþ…NËX5Òß n½‚ÿßU°,G…Θ¸‰áæbËùæ›c:˜.¢ø« Ì£ £#>ÂÅœ¢ï èTÁ"‰(ÇuA·æ/Ú}ÿý²2´OõYü¸äÆN¼Ó¤Š¨ù+Neùöèº`?@þßÙ¡Öˆ¨ØïyCn8MmÆu‘IÖÓ`Õx¾K²Üi#ѱNxŽ€‰„x‡ ¿ODNXZ¶ÏŸÃFø.é]q –¯Æ‹÷ô|"¢´3KKº¼£ˆ5˜OZc’<è¸UÓ:Ò#qs&d#ÿMÔ€ ÁqKjÅZwÄA}¢†œ3¹',[<õ£›&nÑ\{᡽ü!c<ÚÝ`ñ릡šã€Ûøké¹ vŬãÊƶuÇ¡Ê,1zFåbºµ,‡t¨ßq•@éÛAñþ\ŸŽá…°ñg]ÿÒãr<H3/»È¦Ð9/Âv—&åª]?È>ñäOwÊtNG¿FcxP˜ @õe8Î]¬?+k“ø•ä˜ø€—˜þ”þþƒTSU™êÚFÞš®ÍeŽÙM�× ã2\íä #bŽÐt¶XB¿ó±L:v£üÚ¦ :&©ªg‹áêhÿ€æQà»Hþûº˜/;ñï“qÆ #צwAÕ{°Å½Vé/ƒŠ|"RSÈ3…4Ït¤è¥Kßð6Œšr.ºQ3úåé)| M»Ï»ÁªaÇŠ¶… ×ç!CÖ0·ðQEÅsŽ^+|ÞšI·y>¿,—€Ÿ«úeä_¨ž?&«8pç<˜Ú«ŸY—Ðê¾;ÎÚw§Vw'Ä9d‰¿áMU!PÙ-=ιü@àpØÜ <e,½¢@ VówXqÅ1ÆJ¿)¢ôU±$nq‚ÝAÊÁ†y„hY&‚ýò,IqÚ«¿Îº;í4gÂÎI 8tÄ~cÑ} ÷6k\.Zð\µ]Û¬øËjÆ -~F¯×èÞ‡ÄCVt&Â[P·QNö‚A·<4åúDdv µåÄŸ×ã{_ ͦUî)Òšï®ç甎)ESwð$Ñð²^lgdhÎN%œl"ŠlGf -¤O±*+â§Ö8gz =5x^úç‡ÃÓ.ÿc½ìzô8Š(üWæÒŽ`ÝÓÓŸpe'E‚"ÌÕʲd‰x-³Fò¿çyªç]ƒßnHâwæLwuuÕ9§†LÃ<£9 áæÜÎʲIŒ±ô±ëp&ÔÙϘâçXD‹¼¶êÈ€ï…Ü1@8ˆ³òˆ¾—bÅŠœÓ˜ ^÷GÖa¬ÂŸ(%«ug}'7ȇãéàvä.äòr+×(ˆEJ.¨°%XL>F1q‚#UCNçÔu¦¹r…¿Óè0ÔEݾ¤•{˜e¡,É( ½>oÎŒ eLA6•23Ô-D§€Eà- -Ç<j;µ¨’b–ÖNµZit< ët5†¸hê¿g3eü‡Ó¹;òzßÑbßSI—åÙ“1<Ì‘½[HR[jgÈ€[1 -4åE¹Me\Î(uêá°Ô¯8lˆœRºìt…¢¼U‘üê:8 -„ˆ!hç,îv:T»:K½ ÐßY¯k§¼Ì^CÃŒ^¯ƒ?Ö ÁýøE.g?hªÉå þZTDûÆÛÑ–Ë"/çïZ–Õ2¢ ˆ@1«-TÅ?ÛïÎx¦"ÓìØ}‰F˜X¦Š¦kf´£<}A¹¶IÁ—PОƒShèûyÎó%75UM²ßÉlŒ£Ú<”CÍhÊ!ĬB<9¹/F$ÙÑß¹¾æPƒ5UëBrT|ÍŠN.óD¤ýZHcÍ+Ô®–EÕ~±Î N‘B\\æ�¬M¡F9Þ±®rèUƒ˜°r•E+?Oëy ÉäreØ‘ËQ²d8H.þc¹ß$¬?Ñì)á9«s…6iêw ¾<;Ñâm©ªÚ™“<dì“ÇruSÙâ<¥RVû¡³BÆ™2tyLŽ}Uµ9hZúyûK|éB©ÙC/D”yèÿ‰¤²^áÚ†“=i - #îCEÉ¢áô/-Š›™×óM—/Óöõ˃˥ Q#úµ’òý“Cô_#w¹ºƒN§sÖW(u¼ÒÁ\LÙà‹Ðl6‘Òxn¸x/Bb'jµÀ’3d‰œ¥6=™—g¦‘µ› -Iaù±(ITGŠX¯³õÈ•¬°c‹Ü§FvÙüT¯ë§¢µöºv•ÿã(?ñçÙó÷ß½{}ÿîîý«Ÿ·_ñèÉ/‘d®aæ§Û³?Ý|÷þ¯Û“/ž¿~ýéçîî_‰}ºýä¯ùÃßüÈÿO‹¥ w_·ÿ¾ü¼žl/ßð—¶=yº½üóÞlßž½¸»ûÛöäù÷|uÿöãûÛïÿ~ûÃÛo_Ý¿}sËk«Çq¿õîýí·w>ßÞýtû›7ïîûñîÓ‡n>D¶çoùߧ/ýfýý»øù*!$ë„BÐúª¯šAñLJ}äRp6G*O ׬ه‹ìWð Ô–$²™ÅPÒØMDÈIk|yvl/_Eû¿&2p“–kC“@,GgÜ8hw6Ù~>QÆ -¾Kó%‚ži"ŠA‹@‹†ˆr¨j ꎑaˆ¨§•V`ÖãÄfͧ}ÆLj{Íá §\ßÝpžÜŽZHE,W˜øŽºîp8-†ÃZ´ÆcÑ9#"Ê€ú'A€· &UÏï8AÒs v,¼üÿ\ˆ¤Ô±†nDDžçúÁØà;…*ÞÑ,ÄmN)°•p"&|·-z”0 :žÄžá…(%Ö` YŠwǧÏQñ,QF ‘"Öiî‚Fù…uP<h„ 'É콎 ÄÌÍüÆŽ"dÕc)8zqÓœÐ&Ü+±’ÃS¡£4ôˆ;Vƒtóù2HŠTB -DPtˆ½j|yŸƒñw´¢kn:Ç%{xCõoÜ_”$×&I*ã’«T6Ãx’šðk³„¡d^=¬‹Ê§s@…3ý( -¬L ð ¢Z9×iYîc.ê5�”ßZfö`ºkv2ˆÞàdæ°Dê6 -Nl¡š“¨ÃG@-1QÇ-�xŸ]�¦ïŒ7‘i!NF÷º%1ƒÙi…Ý0¥€4¡ïͱ†ƒ‘JRÊà㜈ÏHÞšµØÛ幫2on$ -qø*C·ÛÐ!0ÙéŒpó¦Ñ£;†& žë_¡¨Æ=yfnšÎÛ©:½ ˆcˆÀ®Wm]Â^¡µÔùtX«õÁäÐŽ*Gö¿^f.A°¥E½-õ²b A8pv×ÈJ&‡Æî– -|“.)µë®qÂQ¸“ßa_ŠÅ�É×e‚pmÁ@\=ÇÍ “U"Y >l¤ö%µ›ÂŸ÷¦&Õ¯ù¤/€®P�¿ÀIWIÀQ£)’ÎÕ©áÅ uJ¤æv@’JïÙÃ.™&0¦©fÄ—ÕùLkÑcòZËž/u” ÿ´SÙxÿÍ’) -KHR¿ô ÜÙÎj¢L4µ|ì VïÛIVñ¶8Úy½Jyˆ»2JåèvØè¨ÆѸñⱺ½BÁjL\uÉf?ì1Z6E1Ò’çèô)RUóÞÃâˆBÊýq[жÆÿèpNYä¾k~)"I™(x§G!ëgÛ?" ¼Ûh(í`(PÐ-ìN3óp}-é‹`Àpƒ ?`ÂLÐ~¡7úÚ'Û.�d³{õû¤‘z ðöp±LNVF]=½¦Ö@¼$B²^;¥}/Žs'>³€iªi„Œe=22¦"Gýti„[œ5ä]'x¹Cî1ŽÐÚ¯^}Ò¥¤j-¤ó±Ï3¥„ˆŽ‰N®zXnBˆp,i9þq–¦¹<… 4,@0Æ2>µªT ˆ !E-óÔæ2OýXÖè¿›°‹5ßÃK*™S"àä"JŸWE•3¡‚P[˜¶¨oK–ÊdÞU&Ë9c™z< ïíp:e´è*4eñ†SÚE†âQ‹ŒrŽWµ“œ=kŸÆÉ5‹ÊŠ£SqÞW°{ˆÛɆAªÅ" -Doê:W1Æ9¬q_”\‘ ÙÁQpé8ɹºé,k'ÖM ‹q8m`òZˆ^š(ïô‚*)öô;ÞÏœm§ÕÈf+R¤4kVîQ, rÃykÙJûˆØ¤4Â2pè3¸œM‘à -cjƒ‹ö´¬Î0hî&.‹,«B–CñB…é\-ÝŒfƒ€„óòRTÏ -Üg:Fv´Tã%4¤Ñb -pÜ<NQ1ãh B«°_Ø—�P -DÒà‚¶�Ì®»�õÃ>Ôi€Ž‡£u,r@¥8S‚àúAoÕ…°ÄD4éÄά*bŸºŠ"âÖUà`ª6 n]]8Ò0òZdXèˆQ:ÓPÝþw+|{¶¶jéPÎGø‚ÙÉF…Øv6 ¨’ܘ,´¶ÜÃh]Evbb`ëœu`‡&¸ÔZ�du €Õ€fV ^‹—D±^Uz¸Ž†‰šá @ðA1O„îÄèîÄ ¨#øÀ}Áý÷Ø ‘Y=¢ØDj É„€†}B]L”Œm}6Ô2ãÕ@ô±ÔÄéS±ø°&J³².΃¦Ë,Ã,}caI,±œ{êìZ,L#d‚ƒ"Õ£§½ñtÐÝ/V”6T”/ˆ|fA©ˆ÷v4µ‰/@ˆ¨ˆü`½næä¨2£ÔT¥�ÁœÛ$˜¬IS,ÂÃ@¡×¸kˆáU²JDÌn¸Ø¹²�Ї�omÔ?·ŸFaö V´ä ‹x¡ÌXÔ˜ÓUÁxÕÌd2Ú³Ò3Ú,<..RJªÃÃÂUg;A§"‰<Ü_%£P8´óE‚¶¸¢Ruã¸ÖN8Ø‚LãÒ¶œ¨ì0ô” ‚*—y÷ -…è0Oª\„RV˜#1xd2ÞˆEÚíÓù‘éÌ Sõû'áevãÊ DÑT&‚As'¿Šspü>§ª%Ûjþ0ð<}Å¥XuM1|OŸö'"ï„œPUÓöeIêfé2H¬ÅY€ÁUˆòÁæë1ž™||\”Úy¶Ô¨ñ––ìr8žÔ;½‰â²ã§5BŸÚš×ðÄÐÕ‡°„Â< ƒnÕ(h¹Lwœà¤�WïÜÈb‚`æ7„¿óÞhx@{Ú¶¢^-–émæ‡å†|`0ã*æñ0U¬ßIm 6þæ^¿Þ݉ÀyÂ,ßfÄìQyMs±ý`Ø«f¡É ¨:öD˜6Š M+í—y{¢Ô¢ìËwéi¬â]éÛû-¶ü@‰J´:‡Û—!öÚç‰Hà - ‰xf -z®3®))¶üÓËÃQ=Z‘&z0<«³°/;*6z¢ˆ§DJÃèYÍq~ÍJ ¸XÑäƒoÀ,ã¬Èd² ªÈÅyƒn*ªî÷F¨OU‘©ëÜm@Ûâ-øˆm€¤0IÃzô 6t¥‹Ò€ÙIó~$xÈQ†™ð®™ÜĽìê½û‚› &\W`«)¬3çVr®Ë˜Ò3^q7–Ï;k‘¹3=¶s#@M®CÖ±L(8”DÌ͈A rž:zêâ=é)n¼Ãúk±‘´‚¨Á³yc&ÿº_H- -N*"æˆu2gÌ0„0ôŸˆ =x€@`»ˆÖ“Ï9Lð99¬¿÷Ù$Éÿ_qš±c™‰øÅ2[eŽ§AA»‰i±Ë£}¨B ªÕ«ÝvÞ¨»´2r -yMPjsfí Ó¿äXUkºñWãüü¿iz%ê -"‰Y‡ÄXËÆ¿Ý©¸xØ«CÚÕ …*5ë-Šæ‰5t(ÞšëØt=…~�ÉÁN5£'”ÐÊì%—] ¢½¼+ ¶Ðb°¤À -3kÆu/ÊÌ&"4üâµµÿëd`±ëEv Iè,¢4a Šä'ŠáÔ s§ºâ,ÌU�RG�tÃæZyX¼T Š#•Wr<y=ZÊ#‚¢Tc¹#^ܨQLúðb:q¤Q],§æõÚÛ¤@´3t‹ ç×0Ëù‰4ëµÓTùš:gô…ŠWí¬ÇN´ˆ†³ føð¬•Ruñ'óc±wÉ$í¦]QcA 螨ÜÞ5#’ˆš?©¹Zèøs1Ð^žï¼U‹\õÊIbxâÀ,L˜:åË bV®‚}±Âx©d#·§‘w^ã¢q< ]"‚¾›óå»ñj;,¢�vb‚õmt¯ÝÌä×p-ŒR¸–®E}"šžd½â¿‡Õµì¬EUpúÇäásÊÅÔ|C-?L"žÂa1¸…¥ÿ@Ä>}SdúM'a|Y§kшÉéЃƒcߌ€‹î°X˜¸sŒÌ!”-¨ÛŸS@lGnféÉѤ¥3èl°î(I˜ÙÓ4´ôR‚4zˆ�ÏKÁ9^ÿ‚ˆ«Lz—:Œ9ás}Yg‰òè4‡oκøHômð u=\‘×¥Üg¬šë? j´p}^ìrüE©ñ„‘¿$ó×PF(:‡£rPååÓ|�b¬< †—aÄ÷·UÈV°˜ÿ‡9-TåR}YÒ_žã Iñ—^™»YìBQúŠi‚ØP|¡ó@ÿ¥ë ã ‚¬S$fE§µpÅhfˆOīצ!è+Vû²’+sH½ÜúÊuÌIü½Ú -h‹–ƒÙ«V®6bœúê\ì[_É@Åkü@u»”º”Ë8Ü.34} Z¡+AÀ*-¨ø1Ðî@ÀƒK„šüÞ É²3˜’({—]°Ê±£4…f¸V"ZX¬Dͦ‚ˆñ(A„zoÄUG€)‘À‚NH©Ò ƒÞˆ#Nô—î¿G±é2uv5ŠQ'[<�ùFèf´põÈUôkð?O½gKûÎ7ÛEO3¾!pME“Ê+îï|‚èMô.B&sÄ*ÒïÖMcÂü͸%\غÏïY+ ¼}†,²žk-xdF‰’Ç£±hH-Ϻßø§Ë7Ñ›¼ßä]Xý£;3OÒX¿b<²¼C‡wL”Xt<NÔÿk<úD¼f4ÆáñsËzÈ)Zû8Âøòg3ú‹ÿrÕŠ4±cÖÐVƒd×á%`�Lb`hõ%qþókÐà†¸ -ó@d¥h=9択/ë@ÞôºäÝÍ›·'·'óª«ftÅ]“ŠŽÓ¶Û&Šüxp`Ä=º«Æ¯&&@¸4§ùFÖ^Aj"ZD×@ -E@Àç½uu®5W°q²>b™ûœk* -\j÷øŽìí!4:¡¹F.°Æ}”ªë×±×AG„š| ´Yïʯ)X0Ž´ÖO wBßÀUŒ©@žqöé&Š5Ó´ñ²ë˯q˜3fC‹lL[N¿„õþ�°"gcŠØîØñ)„Ú]¸§Ï´»´%á_Í°ïüDsJuÞ ¥=œñßñÅS -F¹^¼^ÎŒ–Cè¥5E™w,£Åz%ýìèˆøptÁïQF{oÜ/Ê.Bžü8æÒOäK¯ÁðI M»ˆŠÃ¾ßÃZô±äˆew)G=Lç R±Rùð¸ ב€yxr“ŒHnâqY¢Õ ¨ÕÔóÁã,\ãÏ;} hPÕpLefþ*,çhƒçÃñ9i朗õ®ºÂ÷‡wëâËm]6þׯðy-¢¦}ˆcqõî±IŠ8áé?æËðÃå±>ç`6Â@N"Òv6¤³³õxEŒ9†¶P>†ÄŽn©¾î -G‹¡ÁÒ0ZyÈ‚‘+hîW)ôê{Š1e®/ë\’nY%è}WÐÕ¨[gÿ†ø&~PcgV` -2Kñ´rØKňóÓ’”æï}Qh:Ž%Ìì Ú˜Y²,ŒN\qÑ\çü6óF a;N±OEÐ:,Ú�_óx%<œ‚Ъ)ÆÀ,=Y‘®bŸJ ¥Lì¡Sé° [2eâ=!Òƒ -Ïúþð—¿"Ä}Ûýúç£YƒsÒO„Lô7ÒO7öŠœªÁF’ Ó“ÊÇ;OãGeËãz}œM®¡ƒ z==½=ó7‚E4_;žDÑÙê/½Ø|îbÉrxI<âID´Ã†)HDAFôÄŒS Ò&b2r÷Nq@¤27§5ÏÇhB‹»OÌAÙ,ˆesñÁq’ yÖÈPæ²+£k*Žy‡8Ú9º]gŒXØÓ¦S÷iilÅM[w÷ -§{¡2K…ч¾ù#ÓsºD!°]Ô -…î‹’y`š‡gènÀô,3£¸3 Daz¥šÏH «¼7BC—¨6£žˆi7—Òñõ'¿_ùÝœäw4<¾cÌ1)³Žb±ÏïÅx‹Ïûl/' ¸¦/€;Cì8ͦU}YϬÚ5,–]ÖåF¼ -ò -C7º±Ãº¤³¬¶’Iµ™ýû¸³» ²4 ‰™bô‚dÙ,§qc¹Ý”Ë/ˆÈ`ºSÚ•ÚðDA|0»h‹-‚Ø¢))ZŸ¸H³P“¸Ð!î?øÉF„îÞ¥§†ÇB?xìé"ÖgçzÙS¨È8»&K@“M{%#úD˜g6¨©NÞ‹Á'Ô6÷¼¿(’DÅR-PØê)Šf«±NR×ѦDÄÐ#ˆP�E0²¹~~ˆ ¯ú{§A‰‚×Î}ž?7¸Hò'jY³Ý†3àó$'/á~ü"çÁ9Äq9ˆzh³Å›ÐŸ¼^aXr2šF‰†w¡ˆ['[e87ì@4›ef¡{'P’.Šv~¡Z Ôv'g×-‚b—@X 4 ¯¼a¢øì}ž<ÒêY®;JI9š•S”M3šÔñ¼±Ñßl—¹Ž$EE¥mŒV싉„‰‹6ƒ¿çœÑ=Re 1š©ºù–»tI DsÞ¼#ïè¥ó®peüƒ·¾[f‘×O -ôý³ãÑ -\7Ó´R±éëfTæz‡`~›E€‰q-wš(Ÿ€íaòi6CÄdc=¦o@âëm¹JW6–A7[nøÁWyEÄ“6¯Ø”Nà)ó‰R…±`MîQ+697Á…¶7ˆ±S¬°þÌãzWF•^SZF<`ãÁµ - þóæ³3QÞ=Ù`JqYàqÚ®—q/ ‘½¼9'¦‡tz ®ÀöÆ\ç !9®$«\»öDA"|›‚D䢵ONà†hD×Ũvv©6¢{Ø+X7cúüѼ«(=U´åª5*çàŸœz†¢Ä‡yNÃ'û½æû5×}NA¯ããÇ×sÂꊗ Ùcj†¼/€Ì( ös -áƾ²íë<‡¤º°ÜOÓbÓ�åNܨßÏ!jÄŒÁ[;ÊÁey;þFØŒ‚-<G9¨]åZ;ÌK·À>ôèWÄiÌ«ç{œ—µ¡mJšÈWaplÖæDŒ@;#¿àeâÜrëý^xÞë6ëØ“g#z ž¥ø]žåÑý‰ˆ)ôDçÁ“Cžçà¶àa.ÓÙ#ô@#°ýp˜m›ÇþpÝ”®:œÓH%¸<ÂÚ<Ž§Ûå´§°8(Öð¾˜M>M^”€®VlU{‡ <\6Ê3pìçU(Ęa…DY'b=#ƒäø 躜‘XM8¾Ñàü(*¦QÉ;MWÕÜlbJ‡Ž¦©ìXâÆÙsØžP^õŠ›€ 5ԃȊ5öoˆà¸RõÇ?žÊjè‘Dm i RÞqN_+žÔCÀÝ÷¦™8!,´¶…Îq+X±‘D÷]m‘¡†ùXë¤2:¨å`ø[ÌNªÚ˜V܇eä@î‹AUŸˆ²˜XÌ1˜šæËɯ(¬%3Á„GZA½v™«`ˆèÃVÀ1Gü²Ïw_üy †xš§ð½íÍÏ1•ÝCM`šÓÚ§¬µÍ2Å'‚¤.?¿cvà Π-.F·iðX¸’Bà±gµŽu™§Ëà �¾™…x¹#ö:´¯§ †¡¸þ}Ãf†Ù#1=T¯žF‰Û)1¥½|Bw-Q(Õ#ÛE͈…"º¦Ô&@ó" Å”û °FÛ춱ÙÌvý~Ðalo¹„ªÔå2¬û¾V¶@tät“á…ûê4ˆ)Ÿ€@.ú9cRcÏÀj~«äy‘¡Ecqš$*Pë䡵´ÈÜx*žÔN×cM¥øðƒ/�føÅíh÷^AÙب£TÚ²0ãf]Aâ…Òd¹Ãx…8ÍL"¡Vëq -ƒžË~{¼Êr3JÃWv1¤6㦕áµ:Þœ”€GOî+-i¥¹I^câ"tò™a§¡ÚcBZÕžê –Êà ÑAí3òËÃNÀì$˜&¿”¦5¿çãÀÈMp@ó-æ| -ªjñó,uVˆR5[ô)¹â.´fUG0cèx–0^�Q(”$諹ôo)ÕÂyF•±³N£†}’%Ÿ€áð3“lиzòD¡sTÊ"¬²qœ³OUºÆÒ™SÚ‰×Àât2%ipÀÔÇòÝУñŠëþ&ñÇê<5ÀMÈ@~°‹Ø&F¹F‘¸G&l*¾OöZßϙ΄(då´J?ª“8㜡C�ÁØë1DÌn;(i´c÷¨#�ⵓP¢vŽ—mx sà‰ŒçªÑUX4ã)p"¬oŽJÂNº¸F'øD`2¾üÝãKçJש5)ѽjx¡{8Ÿ×Þ~~›Ç -ÖMö»³SÇ Ø—ƒœº½ãº{¾gX.ßótneâÈ]2P7*Š˜Sž¨_ï-šáÖŠíuTc·iÙM (d…„Û“ËJ2Ì9©Úû‚~‘v¬ÜEO -YµÙ*Ûú‰¼$ÚéôIv�žf¦DÙj[3òüþ+}åKñ¼aÈz ´ÉÂà¬ht½©ïP©•Ÿ€W©ç¼‚ (â©“ÄÛo×ÂÓåzô';î>•iaòÆÍña¥dפbë‘Ýî®I¤8Í#.Ú×`<j>Ös糟>öcÙ¸nÑèõ°6ZD %¼Pu‚ÙÄ"5?•Ë˜$ ¼±í-]ìâ ‡ZHcýGÓ? 7<lR#e$&Ƶk„xoä�h•c¿5å… 1Bðšúoþ1³Nô‰ˆ‚s?"O—_Êèë‰Â·ñ4ˆ9Æ«Œpç“Ôˆ ¢wHþÁÌQ„˜¹VÎb>Aª¾ó¶g˜^D‘Ü Y@»á‘¸Ú²( -F"°²¡zéÇö©8éEa‰5y€ÒËš_˜KÆó!VŸó—ŠòQpôf2ÈK³»¯~sDCA”³ižÌ[©¿ùÿ§ßø#}üü—ÿ7þþæìÝGŠÿ~ÿïŽ1UÃí…ó`ÅRwý¹"ÃøÏAù9@»Æ?‹ÚŒ<†2ˆàUV h’ˆÓ-†Ìâ8XD½y ¨eÒßNÁ}D&Í©p骱V”PFQd`J„¿s‰8×µhî¥GL[:c‚ò†jdž*2 DØ 4»RÃü¤¤ehN†–íňž<j3Ì£Ô;E“]ª¶ob-ã$ÖôãIU«ª}dAô¯(1U^EGÃ=qq¾€Túy“e,ë\hÕ{>^Ç–$·Y+Úb£T#p¹ËtV¤ì@ë5: â³àÿ0�Õ›‘5 endstream endobj 38 0 obj <</Filter[/FlateDecode]/Length 29240>>stream -H‰¬—K®&· …W=ü“�6ÈE‘R2òcÉ£=hhtd÷ùUg–L»qï:EñqHeë½û¾#ÖxMóÖmÎ3öp߯÷û¿Í5Ú°±ÎvŽYNxž‘§Ç9¯ÖÌùµo?}¾æ´vìÄkßÀiãð GN›œãÞVšL®™vÊÙ¦íuúŠ},°³›óc«oL¯;ëy0ø8Œ¿·7>`™a2¿ZôI\gòàƒÌƒ:£/¡bz²ïûõžV_Ë{žóg=O¼ÓócëZ%9#púm5{·‘²|P[9µuò\ïÖ®s·GæƒH+D(N …È®ˆ…°±ë$ËýœÔ› jÓçY½ã “fòqx¸øñ"‘m÷ì$pÛèò%šBLÙÛƒ}ÚZ¯¹²¹ðú¬Ì}îÉÃÍW±š¯ÀLFn´Í„¤´{!…‘Ãá›\îhË–*0×Rrc·9çãø!‘ƒÃÆš}ŠÙ¨‘äÈÀ›Ó[†¤h� u0/ú~_XçÅh‹ßaLÊ·ýMtNuPúˆÎÇö“dê–Àuð¢´!Úuþ+jU@k·˜‚ïoºŒ6U>^;±* òñÂbã-Aòö"LÔ?¤p]¨‚©À2Þ…ÀÊüz@O¸ -ö]'`ñ’ƒ‡e§Û)„ϼ'yŠlDZö DÙ˜Ç -1#†êǯ'â×\Ý”Wò{ åÁ'ïÙÖq& BÙæš7¤Ñq;² -C b:X($¸…@`h=Ѷì12<WŒ.þâO·ÍüØ;–'óp/½w -3`â&Ž¼#eÓt„�ÍáˆÌ{ŸtÀ °´ŽÀkΙ"& ‰·uŪƒ2ºßX• TK@©û[)RÎAFÿó4#I§»õU‰‰† u&±åª!îÐp¸ÎƒÝ†ò§©šflÍ(ÀhMÈ\ã¥0• ÒsÒ:v;v¼Ýa$ŸÍ6:y€79*DìR3\‚sÌÒ•Ùð[Ö‹](1„ZÛòÇ©ü™-¿ˆY¡ÅâÉÍ0å¯3VïI+®Œ€"€²C–Þþ@/P¹ãÚ Wà›FÔF#ëø¾•r! !,¯/ý(jORò´=ÛxÙŸ^ >T,SJŸSÉ›"æ«‚gzÝPG×ôßrÞá¯Ôm|ñtó"óôžiÆÔ!єҵT ΄áÁD†Ô‹s-ð2Ùbì”.Næ¢~Únju^ŒA¦î¼œÊ³É.“U/k:ð¢–#Ä -y§¯™Nàĸ�°Ð‚�Ã}™�áãRÿïüûîûÏ_~úøáËÇ_ùùó¿_âÑ7¤á ‘Ù·¯ïþúåóÇ_þñú懾ÿð៟þòë—Ÿ…ýöõæÿ×Or–ýR+Iûñ¼pR†·ëõéYû™ôÚÀ7w‘[•ñg?"NŸ“TÅ€næ)ò¥«„b5V2ø”âÝc®ÙS/ ûÜ—›Œ1ùO«>?]ûž$ù‹ BDj1O!¶±ß…è¬!¾|=IûŒyßå%k"ŸfÔ¤@è’ãÚ¥\¾Ñk~}èä“òKTÄLjÝ°‚W€¢I?ÌÒ‚€PQs¢3&@,z24‡ÎªÅ¼ÈpúzW�]°rã>YÄš±ˆ¦˜V™Ò5ŒžGèÐ,(,l*'_„ÄJeMb&ÒKR‚=·G\o5øðV‹õƪ!Øæaû¢´BÓÔN¥=¤è„H¯˜¸/„U߇…P™ -A>º°Gd€"i%9ÙIbÈá„n×oÊai BƒX|{Ú^äÒ=ˆˆRËþ3G*¸úŒ™MTŠÉÕTŠ‘&JƒDzs¨*KL„·‹ñì«ï+ÿWŸüøv¦!š±¬6P’I°¶¶ö'¢pO -õéA‘[\¦![¨£Px¥0¸]a2÷ãeÇ0 г«®ßA„Ö1l5{@ ®îä/Ô,êóþ\ÔPþ@I\;qOJ—a&YØq}aMᚺBÀgÙ`ï?•bµ²c¦Ò -‡MvØU ›“¨o¶@›™Ê¥¡I1a´¹(G¢]rz×=”Øóö+z·±:‡ô®a]OªÌÔmÉyÜF$jŽÖSê¾"ùsn¿ÑSýF?{éÏ~õçÖÅé ®DfîW¥vD(¬Aµ1ºUßžuí0µ³2´õng¯zQÝÂ&ªý÷�ÝÀôùˆû99”j€{€éö–y”°ÊÜn(“!&¦ò"Ž4¥ØÏšAÑ0¨Ø,¬j¹V)0>%¹”+ÌP®ÎÕêÜÎRë¡Î�}Y%„°ýîumõ†ÄÄÁç Å âèvÆj‘P3®ÄCfgS[NV7«ÕL´UÛ«Æ|¤àu.<÷w9Yåy̹)CÐJ§ƒÂþ”äEJÕ65xÈ4å)-†ÎAE1÷M ¡îhÌ®QIE3Ô ‡L÷IRÜÈ&.¼°“ê3xÐø3E)Ɔn_RNÝ0§.é…Ò¶”²#¹ -ÐoV‚\wSM4:4Öû ΦõÕLZ"Œ2¤7¼23$aÈL/i!„kкzšn^â癩«\Qs‚"ž»¢…"fŠÆ¶‹Zº¤èâ³ìŒÍlâ6I."»’‡Ã)F -!¿@ŒR¤ °u.|=ˆûj -DÆý^|5ótñ]vÍ0—äʲxBêþ8 ¦–q#•Dà̘ïF>¨$>°�\ZLó‚ˆ`¢ŠÉ ô§L°¢êбuÉ1ŠÊ²¬7[‘õÍP’¼¬‹KùpøÀí¨f3ƒ-XxND XOïÕ€S¾5àNíNšñ݃غ¡ °Ó¤/T1ñ!Ï ±F6I^؉—\á~šereòÀo#žS˜5ßiáê35M wèZiL#ö'íY¡ædŒ¨9%¼ÌÒoäÁ¤žY[\׊ñ”Ä¢¬huUƒã,/"ÕY[#˜Žˆ~%$]Ï ´ë§4 ü¬¥Ïn¦o—”ŠµD&±†Ú¾NÒfFc¸@Îz^™4J^òEwN¢îbîA^h¬À&µ ä.µÉ ÎKÎn±†ÙÇÉŸ˜ÐCX$rj&@ Ñ/*![hyŤ‹%z‰¹%Zì.=£H–îiÌ—;U …BUôk}WUqâ…YÚ{z®>å9„šõÂE1i—ð IÄãB¨£¡)ù6{ £Jص˱¯Ë€‹-|î8%»žã"˜±š¾‹Êkw)³löí3ÅãéBª¯®SðÐLûSôŒõº‡2R7¦_bw…öåÎoyí±W“¢ÍB!Â+œñË QÒºÄÕ@á,:JSøÿ°]f·¶7LåEðÐóðíPœƒãwÙû0ü!Hº›§6¹VqÅ¥éEòËøjâjÉÉ¡à“€û…J¨?þ’lñˆO±Ã DX¨IZ@ú÷[8¡%oärG#Å)îٱΜßñ+¦ŠB+²zeµ*�Æ¢õd„ÈCÄ¡!~;A5jü¬¾5Kî˜MDÝV’g±9q`’N0!ÖĨj#FùĤv:þX`RÃ489û -âg”ÀÎçµ@A´=L™òéÔ„55/BNñ*’}°åõJ¸Rð[ -5LÅ.í]—·sŠb®*ü{r"ºC†¦.á e§µùÀkÒûœŒ§úÞ„¨»‡æ±Ì.bKü|•`WTþ¾ˆc1Q4S#n‹¯‘¾“£ß@¥´Mö‹²‡zË�ÍÅ€ óœ×7çœhTF¯HDYy$Ó9¿Õku±y`to†ÃºªºŽýT¯ôâk‹úÆ@„jTà¨Ô˜ì_¹–ïºC ¤]¨‰öé -$²î±€B6ek1 zñÀâ“ç)rÄಌýw]&p„ MVÅϲ@ñ\Ÿc…=4'Y5µ9ºÙ^C.à×ê~kQÈaómš ^´ã¢‰à(D%œ¾KTÅì�oèM¨:ç&‹[…q{̈Uʽœ†{ó¡‹Õl€Î -ïz\½1g(_”3ÿ+àò«o28Ö¦²*å+< rÎ[Ã%WáØJŽœXe-…é ƒZ-Œ¸å'j»—e½>q›ùËDŠšuí¶ì>ªÓâ='t¶ ^ÎG×'n#û¾9ž‚”’¨Ómátû<$±8’Qy Ê6A}¹·Ã$¾$xéGÿ@ ,³‚÷ù Œ�GðòH:î]EÇ÷7¥Q¬¤ß½i—;uÛen‰õ(R”‡¤¬ˆöÿzg¼<Cj—.ĤÀy}ëæU¿õÓb‘‘`î8;4 ž´' k|‘àÅ U8æ\„ˆ9J•Ày˜SW”Ýe—ˆ8ï"Cb]fhîhÃÿ 27FP*NË6;º9øôù+È“UyCÉììo¢\ҨݲvÓ¬ê©'åFÖu2[D¨’D šÀØO¶%u3ÂqˆmgçNŒŸ»PXCkD1)iÓÔ ªä¤f†¤ñÿkS!"ñÁéN_#õüë=‰ÇA5¨ñÕ�_m‹ÏVÀ•A63„Pbµ¯ÕžÅÍ ¡ŒÈtBáŠýe©SŸïü`P‰‘u:’ETX]K))ýv|g=›ƒPV×9l4ã'Š,·~Í·±ÐºÌ˜ùÒ”o¨ÐC TÙ‘uÉ -G!ó|„–Š‘©RºDK - -ìÒñW¼''Qú¿¦§ò³ªy"7Ë‹¯“ÝŒ-Ðù*¢ã–>Ù^_îú×o(Í8[Çã*�„$ æ¶oÈìOPpÁÝàJAÏ*Kïa'[‘x«²B©bàêdæ2Ÿ -0ÏÄ4Âi,Òø”…Œîh&U=`·ñUPF'$sTë|§²ZHõ3•n/CðþÈ'¹FõÝiT©ò¡ÃH8eòS¢ãÍrÒ0-~^»ÈXRêm¤ M>ï)¶—4°y÷ÆO˜d„©ía°Q[£Ï°‰SjQüåv#V`ºsëxEŸˆpˆ2¢¥¡0qtÛqrxüv*ÊQXÈÎ+„ŠM›¢FÒÀ,’K=qI©ÇK¶gæ‡Vò\ím�YL‰8YSÒµbš¨ØFÉUO…*· 4ÄD¤–jù°˜´Ü€&ÂX9Ê9 [l Pxg¢Î^ä™0/ßp9í+pï`{+@FË©šP$Udë4«Ba p§¼_{s.™Þ:g¯*à¢!Ò· 8^ˆxÔ\fµdb&´DÒÒ=g3´°ƒœý«d£È‡à -ÏŒˆšÖ)Q=ššæשî Q1"µšJEw¯½jFòL°õÛè;ò§èâ'HÐÓûߊ«¡]{}I)4r@7ý=þY¶‰¾°Ò¦Å‡’ºÕKÖ+XTр䊀|æ”ek’Œ3|æE¶ºV¤Ã[˜÷9 ˆßPc´+sRð�)³SÂTT÷¡oçñX•¹1¼åc&µ¨¦ÚûÖ=>oÐôJ<o8sUÞ€K@£ÔÃþë#±J%ædWÔ(Qž…‚ð0ÅA¥õ¹ÕRð3†°¶>œs)¶0/¸´R7+C’¦sr.’Æ-Zi|†lòÒ[tøSN1f 3#mò!’×Ej•F$D+›s§æÔÿ°¿>õÕkY{A²pž¶vK¾í´rè'd9ÞбFÇb¹…”•¦±ì"xÃXŸŸ¬SÐa*@ðE|“¬G’ʽ¹±$;’Ü’¤dë\Ûq;{ÄT7[Åë:ÈyHþ%®ìùWiæ*ÂóÛiéînß-µè_x·îÍvak®¤cQ"åÕ=-›\ò?±Ž¯U¢°(ÂÄ[4n®^n7’-¨ßÅ•º‚2ܨ²uX웯ãê0iÜ2x=Õ•þ¿QQTÞzë¬÷3ûáh‘ñ$ûS¹*#˜z#¢Ü6¾š‚�¼ekGTÓ7°,w(#ºgBgË# ;Ó.›;1‚Æ!5àßNKmz=dEÃÓϹÄÅ[”7`!Œg¶°¡ @a€ˆ ½¼F~r‰YÙ#æ[Òü¯7HÑgÛA -³2g7Mªë1±u‡Šû,wj”%ÆB%àt;fFŠ™V ÞìN.T4o°kûøÇ(»”¨m‰, 5¶¤s "”ÀŒˆ#MðA@÷o“œ¯±ùœÇGº)uQX·ÇœC„œ¿:76äék|PbØE±2 Pvh!oý¹9"šØGGÞ..vñÚÓ9»ð߈vµRº¬ƒ"ðÕ%‰Sp|*‘’§’Zäx—}Xe’àA<ÍÒž*tKµÇ¯ÕÖ0I4M½âx8þûx¢¾ -©¢õ±ä(ŒiúÚ{ðz\¡íU©š8:ðƒl\…TÍöÍJàÂâàˆSÌ*zõÊ!‚¬²ùæ‰ÔÞ4?±ˆnÚ—ò̽þ^=¦öR8¹áIX)é¼3KúêÇáDež(äOXlË&ŒM‡`ï·ÃRltfn8A±ßFW7 -„Û+£j¸ç§b˜g‰˜] 6"þwzB§À™^#°èÊ·<EÇ pIµëuh'ëß -äŸ/®ãDŒèîu ¥ej£O3HÆPï®äsbEeýˆÓ(òÛÂFDø’Ú•A"丩Këèju¼¿OŸŒ¿cð¿õKËÍuÐøˆçeá4`šŽ›O{Ùßµ=1ߟUwGÚy=Õ¦²U2$ÿÿ¢©[`.µõ¬ ÅÓ*É¡�v§pÑcÌÔ岓K×ÑœÉ"”JsnT’™"ú´I?8ýÚÚvfe°>V'jÜúI¶i±s4„Ý?\†Â'u¼¨]é‹Rj+¤X¯¾Á‚3w‚‹ŠpNÌ~—³N s8#tŠ!7p$ãt_ùREWwÊì*Øt2QÀ!Άgƒ„µ†ZÐ/j 4wz¶e£g+²¼·x²�¶Å+ª¦×Rœ1SNHcÜqÿô”-zÂT¥™.„GÈ£ë=$ Í!3Z%jr!SÚŒ,!^Üî=ùTEyØ+›x0—Î0;à…¢ä²zÃPk‘â$0öFx\B&`üܸe¬¿¥×=ò…Yj2 ?,‹šô‡ -ÿŸEqU‰‰ç©÷·zJŒ+¢d2£°‹ëL+°9öÈéF$yQšŠT‘¸5*ç¾øƒ º„¨·Œ{|3žiÀ8®.a´ û!ç¼åQÎu¢ÿ²^.=zeþ+³L"˜Tuݺaå%+RXZV@^$‘,)ÿžç9Õß1#`{&ݧëú¾ç’"ܦJ·",{)$ƒóæ9$]Ú %Þ‘44 2;Rñ1¥G[å>šáùŽð{»ÇZˆ4%ôÃÄEXé"<·:×”ã.1‹¥bDx^LOC„/eˆ²qlõñÝe†0É$I¤hy¢m½½(!Ün„0q³½>¯K=VÃû‡íòuÅ/ãJ7õq‹Ë´J1ßžZ:ój?°ÓéŸãÅJ ňâó¸K¯üÚNØÕ«dã=�ákugŽíÝañt#—’ Š09q…ÿ²•*¶²ÙSTôªH -á–ùŒ44´gÁ„¼¨Þ$L‰Æ{jåRÔ$¼a4Í|€<pQ;vÄp^æ Pƒ6‚öN‚Üž¨E3áåØ`�>�*c¼LD®s"6¯‡u&‚YJ-Ã̪CkFÊ°ghYƒØ‹%³Þ[ŠÛ�qšÒöLtµ›±Kzh"˜á¹ß™ö™Æ¿*œu¬î˜@n‹ƒ †Ò?ì€þ¦Æ#wNÊnÞKsÆ»)UîwÉŠ%-]'UÁ™I±(¬Ì2tÓxÊM ŒK25E1¡RŽ•ÅV\ÚžG‹Û¸J!öåh»¬GÊey˜¶gXgæz-YšD—H×G‹©£e&²`“Cq"ÞWCþkÐ5Û¨\<…§®a`p¹lçÙzCµ™^Âaœ„Jéf-VããCX+ž„À?Z14×qŸ±”Ô“s%›Æl³sN™ËÖ(‚'J꨾ÓÈa‹Žl WlF8Ë‘ÅïŽda‹g&PK�E\Au|„ÁçÔÙ§ÅVÛã\r¨-Z÷Ù}°ÄºÕ««Te»»’}ÒuAáæ÷Dô¯•†Y’ÁD¨å ÄëÏ8³«YΤ‡ÆZÝäw‰Pœï[B<ˆ0OÃÀ])kýGCTmÞ±©5:<™p·G›\:¦‡OBÆ\�5Ôâân!Ž¥$f¦Ñ¶?©E›q gvNi†IÜö„Ïi J=´ªË ->òsØb%cb¥yÇÖ…qVM‡PÏ_grOÎ4m3<‹”9-Ù‡Î\šT<;¤³Q±"ëŽ8°isFˆ!QµÁv<™šÔËýÒKW-“.ÏPÙäÏfe³ãÄ\Ç26¹Á˜²{’®M�S±¤=}Ω0|‘uzd:—XA72v¬R~Û‘}0’1<ΆzÆ(㥨ïò¸’IÍ`8†¢å�%MÐ(ëâ¼rµt®¶+JFÕ£¬d$“)Uµ»oÂåŒr"!*'÷üH(ÑW˜_÷Ì;‡Û”fceF¯³f½D²b†/1E¬‘äòHº±˜!Œûzû%gÞbM/Ï•‰’JD‰Ï™S7(âžøÒ8nuû~™�µ/¢(Û÷|] 1Ÿ_šõ,ÏãëfÛq2œˆ–@ÁN»pa5Ve™O!œ,§rÆCËöf¿¥ò·¸Gks 4˃F·Nð4Ó\éÔÕ3¶r]ûËCUà™æ2 ßY÷ùRpš[¿‡mÂ#ÛR:5˜àÚ¼Ó+Yrò3këgN™R¹7�¨@"€Ð WƒEÓ^jÑ®nóÊ?S¥=®ƒ]tùƒmY¤k‹WBï"bAH»‚Úïä9ßa7þ˜WëYŠ¸ŒMç=Åyº7d8²:è{Ž=Jï&âí@³²GÅ»d@´“œÛNºŒSn²ý°]t$F®–míAvùRŸx3qRœÃ0 ãÐ4pÅk¤´Ù›M y´h^Ü‹Öe~×óeà.]=¤p\nÎw¿3-7ŽÃÁµ-ö÷%2£ÝlJãíö XŒ~Ùî›,‘Ô~Jºú&š†LzÄSwÞ°œ'ÆMc1uý<X4#åÉز[?î¼VáÖ˲,½,ýNÍç1¦é;u6M}ÓxYÈÔ×´eV¥.84 -OV¼¸0ê¢'èê-Óe±îŠ±Õ·‚ö$àÍ1uC‡ù‚C€Hf«›} ®Ò&4—$„m»‰c>ýõν…âa˜:‘|&ƒÈb‰m˜&¹@†gŠ†ÛÔÑ,YìêŒÞƒ86KX ìè‰g" uáðîøC§ÄÓ#G'ö¤|á.-Vü숣»ª>ÈXKÛÓ‰5¥”aX2CPÏá5Xi¹X…F’<ѹÀLD5ÇòL]¾w@+côŽ'DÌ`T”[ÎتÂÅ]{#i‡aƒÌO$ÎXœÐQ]>('(Žã2pq“Ë¥ÓoÅäB«vzðîVlKœÔP[²ƒ¿ñ÷ëwŸ>ûñÃç?ýøþÓ/O¿ãÑ¿Õ.Dð˧¯ÿüùÓÇÿþôÅ7ß¼ûðáçþôÓç÷b¿|ú Èßó—ÿ¾úËÿi òôî{~üüë¯_íß¿Í¿ûOÍŸïÞçQ½~÷KH¿ØÈ´öE¬¸¡ ¥Pù?Ü Í¤§ºôÊq†©1µ¤¹ N¤0/VÆob^ìÐÄÍöGæ›’aÑåÐcWMY]“oA›ñY‡ò^«~~¥Pâ $²s²„F'Z[µ«Hm;0̼ï`}ˆ(®÷PÙ´AÑÖ²§Nveä>ˆã$Š¨šwÃZßc¬ºÇ8@$—�]ÁËD4`„Q˜á–È'l-Åg˜vÁzê Ö‰!ŽFÄL²¥áºAè#@pò·ÎƘ„—=æŠdc ä‹,Þã¾¼ƒßÿT“±03I¯šç…Þ·Í»v´T-\Æfn§†õ‹|µØ'VÑ8°‡ícè¢}P X›ù1r$˜¬éBô÷L¬™cƒ¥ŒtáÄPÒ…˜Fí}ºTúaô-•Ñiþ¥¥¸Ì5ÂD¦•×–¯ÎÆQßù2€RÚFÉļà6Š/hòº_iý<Ä âd|#b¨| Xû|™àT@ÉAíPîq‚"h%ˆÒ^虆D›%ìZ¶Æ²7J$)¨çñC‰;ZD_8»20Ô¾9®“.½<ԸŠ5ˆì°ø©?£(§qá^b)êvðÌÊuÛ˯†9 éb®Àc±ŠÍÚ#öU°qo!ª‡ÈˆT¯9&3½B±¾(}7*`!zå�(ýÓrn¶«Áýu‘hN•¯¡DÝ/öÈ¼ð‰–§† -_iŽ'Ķ28¾ep.ªr³~HÉúasU :[/£"’Ë—cÔš—€ÙÓð’Žý9É#Ÿg^tIÑ¥Cƹ¸ˆ,BGÆ8Ü! -ÍÓ²u3@PƒJUL°:WÝHJ}#ø'ˆÕj罄NëfÞ®‘Ú,Ô—á²ä�¸ä|E4`wxAŒÈÚGt¶þƇ+RÞ¬â÷Êž_!Ø¢‘îÔ¡Dõ¦-ªê=È[¼ È(z.ƒŸD»ãž�}WF0m''3^£¨’gÃ'íJhš -<m³„Y±+o Þ¬ÍW(<œ&ú¾ ÆAÀp§iTžá‡9µ¹R($³ØVòâwÍcE§áá½[u!Ä §W›«%(ûjYÉ -o‘³Ô§dPk9L¡º7êœò~©³¢˜ALc)ˆñ˜X«3/t½¾à<¯¸ðòh_ZÛ<Ãüz6ëùŠ\– ¹ó ¸²*˜É`ªTÙ9óÁ&E(.wiŒÆ!¹-@”¥ÉB"1¤E›úÝ -Í4ŠÞaª¡‰kij`Eþš$?aO»ù‰„ôÆ8 ˆ®" Bn ø÷’ûHŸglGœ•Ã3TMºû÷Ãm0gPKo¢ù9kìÇ]‹Àžo{t-mnõðæÓõaÿÑ|ò-Ewý¯ž±Æ50Š?6M>C×æ!‡C]¼Ž?븕ˆ±“ -Gz&X„—q(ã1·1¯v)'?ë¼oÓC™zúG9ÔË}_¢ùH”^ (“(’l%BÊÿ£|3ˆíáè^'æLœŽ{ÏôOÖË$ɱ#‡‚WɤÅ<¬ûþwjwà“%+Òº7ÒBR’1xÃܘ9äªóÞ‰&–HÉÌe JþœXêp¤_0”þüD·‚€ºˆÞÛƒ ãÄõQPº –òei7-„aƒŽ".1StÎý–Bù¨¡PLùgÄÚ 6×›~ß{‚Ȧ(’¾Î¼³‘ \ -ëèS‰Ù³™bPSŠºézŠ©¬ú+]GkŽ=«ËŽãÄZŸ0jÅñÂñW&ó¹Sñg6¤‰³ª–vîµ1uÖ‰D¥á}ÄÝ“¤>¾èŽ®N°Ö§þeÐÍø%RéßU¢ñï3¶à¦…/ÚˆÙÁÏiåD0Ÿ"˜Üý,‡êƒÝm4¼Ñ®»êP8,FµëÇõ!þÿ\üç_œEeµitÔÓOá%rn‡Ê!¼R7´ˆü5¤Ä9´ËÄl 9ÐH 0§ÆZn×@ÔRb£¡±�`·ñTù«oAÍt jË€ |‘X¦wÞ -²¤k5o""’ˆ%£Éq ·$ÍBç1ЦQâJôÓæðqEcz…VmkªÎòØÚ¦‡7p¬¬Q3$N3€û‚ˆ&íÜù“‘Æ“´/ë@¶ôúÑ‹Â+|0¦6 ‘¤[øs{4,…‚¶V¤ZzA´ÜG”² -j/s"(1ÕÒа‡ˆà)KEÒbÎ;u¶8ätk œ/pÓ{'B%?§µZjÄAd¬šÉ×uÉ+FX ü;¦˜ùy;x*X¨°9ÙçRY÷Þ]l3hª4ÃD7U#Nv§3O±,]âm‘D,fï¼þ2ê½—„Âi^ÀA5¿Ë0ÐW±žv<2ìP1Í?Ã{]×ìð6žÊ¿¾lé1`u:€÷šæÛS/°¢FßÕ0bw>z¼¢vÖ¡}"òØa͸“:ë”EÛÅ´€ù7õÐ#2šœ·—9úó%ç6FTÚÕþ<"7óɘ nº/þ…iÝáeàp -ôcUy§’N¥FØ{m� -Š'Š<èÁž5=Ñš#Ö�n žhì7‘o·«Ä½›kð¯a�……=ŒÑ„Îg¢vyvº“·s$`͸+3å¹ûùÒå/!¸§aB-ì;\bñ|óˆô…õ¤3ñ뇃SyàóäE^*l|C¨q&,•¥½Æúoö¢†j!’û¼=OÖ}jÑ‚WtÁ`*w~cã!ͳÊüDd»XŒwæ¡PøÏuͨ_…Sñ±?²(×ÿònÑ„²y\\Vnð‰:('¾…ü“q·Ñ±xj‰q#WùøLwASåkƒ‚$’65âL*¤š¶Äˆ>Í&6PUŸ~uà†í�ýªQô³?úý…Ûiq̧ÆÅ?[³ÙÔÍ\<¹Å%Mï‹ Ë«Õe Œ1ˆŸ¯Ð—ë?'fµ¢k=s”wMQ%ñ0¹((ÇçHD2 /Óìm(𺮤ÉÆäIŒ’sYg±4“äKèˆý WŠŸ”5磈 ªî®§òÇÂK³ÉÂ'VÁïPR” <_O:™¯)÷ -�”U('¹M=U&³½·™G}‡ÌkœÔѲðØq�„Q»JEJ_H%”(—°)@džðuŸ‰Ú TéΨÅUF=&)²`x鑬¿ª^Â9ÿÓý›±Èd³4?šX2[‡C{¸`cãJ/Fu¯ý„ŽñÌö&ϲÒHòÿü|ÖÔÙÏ/½µ-ê<ÎsLAXÙ…8®@ôhiìzíÅ*¢&G9‰ -ÉUú‰uºsbm9Óh‚Ø)-|Ï $¤.Ö ý½S85Ps¥Qs2býÕã»?¯~6>„6ŽoœqýâÒâP1¹â³>ƒPð;äÜ‚ÊS]ˆ¡Ã˜¦@·ÍcV¶YáÖ·/CJaG7è¿æ‹3g‹™v¦üsm uQG¸ô\¦‡ÂpŠ ŒºšôåñÍ«¬Ô³”‘Ú:uÌ͆–ž«@>Ös?%áT³ AK„óB4¡Ø5ì 5=½´lz ¨q JýÏN—J‰j³'“é»O®3óçU© X-orÍœ1ÚB�fB�ãúZ_ó©lß\ÆRjêâÊÉŒœÌ;0á¦,;tÑÙý´ûr3pþªë)Ž¨ý "þQ}”ç@Î^T·çÓŽÍ©“�±ßaBlÁfÃçç±êDØhú+õÌ÷/–ÎZ3m`±ÍzÕè¦âbÕ,?À‹cï4Fz22.Û£…¿P9;%±ŽÍh@!lˆ<"ëŒÔî ˜¸Æigˆ±h_ÿDÄñ;«%Bx4b_Ö;ü[!ñlsÈ’—Äå±âÕ‘‹§ªù™>S‘¹Î:ÿÓy |ÖžÿìÈYºyjÆxáo¥Þ7é&åA<†¾JCÇ "Ó'Qã$ŠhÁ9[Ó%tᤇ3(±·aL¿ h=†L—~9wú@¡.”ÜÐâ-ŸL#ç“a\BGäSuÄ\‘]†\]¹Y÷oÀ«“¶<Ë»Q³úm™ - Ñý]cé,Ó™BH„ä°@,‘¶Ÿ\á€0ùO¥ý–v6Ë�Ñ[Ú¼5¦-Î+i.ü'¦V¯±ä¾?amùøè8¬×“j=[1âTèڣòK1‰Óã¿š8ÿ&¢–Xž�Ú‘-Ë/ÎÊ5ÒEq€öØRQwuQ”E®7ä±8)u ¶h�ëé7ªS´œhx‡u>Ã:ë'"7 ¾8(ª¢–¨}ÔQO¸/ðŒš/eVÔ©£ ç·Ôô\DÕSdzӊi>V´@=¦{Ÿé,Qg¸È4$4p•ú&&Í-û"ýÌö‰ˆ}©HíÆ8õË:íõäB¸¼{LÚä_èžúI÷¤væºù%ó‹slÚ{;)þ9?ƒr•Ò%!J¼FdÅK°øD¼F®Åµšò %þ†bð™tùà5ƒò×ø†ˆ4U5šu`œQT=‰ÚIS×X7’uv0ndÞ¬øT† j…bã"ùatU¹sM~"òL@¢¨>.õË:p1cÓˆwžÇF’6ªsI`dÔÁÄDúé+v%½$ùäô’¡ 4EÙãç4�\u27¿@Ýø9â¸D,õ3òüôØ(‹÷{‹FA'k¬CòÉuºéÎcŒ™ëŒ¸ -Ï8d<™eð8Ô*áµ]ƒŸ‚÷>"¸øÓ`}pa<;†()‰WÌòpßEH"ô²°×©„æÀ‘Ñ$S’ƒÛ@žf6?–âD -D{§½mˆ,KË0Æžço”Öm§{Dw êN²Á( ;-üâÒrh$›—ž| †êðã V)ºßmPäsÆÆK.”›,®âMn(ã C.]4Îa•‡T¼oÚ®‹Þ‰âñuíçtŒPN ð7G n$'ˆ‘±Ãpxÿ÷F‡Ç P—½@é^@ÁGDºT¼nÏ£TÿÒút}uÇÇ°8†2ʈY_nº:ÁÅD¡1² F)Ñw+å¤ æŽ›Î¸4ƒ1ÔóÏhe±>s¿ÂÎ -ÂâÊÝ÷>U*ÂFÆá‘rÎMkãäbË>"wÌÌ¥áð&—$öx·¶³@kOmD¢(‚¨iªŸ\ »o:Ù‚'Öœ9ÐТ±2Í$™¬�(5M$,ÝXæ™ô[˶fþGBxÉ!ͼ9U@áPrù4mœ·¥öODÜéÐ&+‚ÊÒçYç"¥ÚeZ_Ó’™vë¶ð¢ù@|UοQJFp(A}–t£~åƒAq͸´;$•ŽqDQ¡ìÚýð×ÿ²^n=vEþ+çщÀé{ï O6A(Š0O–•²D<‘#ùßó}Õ=ãxÎá$žxv¯¾UWµJÉ@ ¯ˆÞiʪ#˜Ô®;èüšëPô†“|®{9¹ †0SS'a‰HbÂu’·j(Ê594ƒF¹¾nf}âXž·ëÀ Í-}ÕõÀœNÏd¯Ý˜Ž¬àˆíe1:¶œØÆè{8ìTG¢Ñ&‘W¸®nÛšäsï\mû:h êFµ j#@¤è^¥Ð¬Œ´e!!y"æF´„¥°7ÒJ–رëÉŠ:ŠÆN„i¢Ùv‰P×D(åŠ OŽ…À†ú¸þ¸SÕÑò0lŸ9AnE0Q©ÓŒP€ò’öTâ;ñ;fâa1èúH‹®“ìg?”qî•ë稆𷉨'5)s ½¦¼Òƒl䀽ÕÙ`øX£¯nò‹"Å°¨Äë(t!‰"K[¬Ã³úZF—Á2)/² æ�@R·@ô…m3(#Å`‹–“Ù!Ö·5z"l9´6è› ¨‚@ÐãVýÜ$X‡íáàœ¼#ó¢&‹6Öf¨X£’b$&¼g>´"áËâ7Öß ™=+ªe By}K�Ä°Æ2~sX1|äJ“Ðn!8�b†rÚ²Xg¡æFm>4„6#’Ô‰M…&’A¼.IÐŒƒ]ÙX%NKx[²OYž¶ˆkŸJ¼±®TÃmÁÇ9¡ÆÖå�Tcž:ŠÞp„úŸ¼Le*×,Ǧ>&s¬¨S+Æa1*ë"€È“"ˆµ…J]Á‡"ó²c´sòJÅW`½9B/º¿SªºŠ·—'¯áIûmÐF€‡ó„,©LXuLnˆ6`×0Å\CÚ¡‹ðûÞ©P -p8;SxÜJ¢$nŒåÊîS -Y+¦ã˜!šƒØ¦—6�7Q¡ÀuýëÚ ”®•¦T_¨ÃâAZ¨©³U x’؉–©¢ÚÆ€íØgidˆagù°îs©û€T÷¡µuƒLѺAok:Œ8ELë8B;Tcd@ËÏ3Æσ}$ø²š4¿¶°ÈæÝ©±¤ÚçaÇ+CòÊÔ5ßúBè—Eà%£³; ¥ÛÛ;=]gRš^@²Jû™íHÓçÖa¦0{2Êt$^`}Åhà -dH7è -ÏÇ9P;=Iíê3•:G+1®ÆG[Îܱ,×ÚO0˜ªaûœ¬fb½û”aô‚°Lù¨a™¨NŽQÌêžk÷c#ÆB”í[ø°r…@|Ûu|ýYã‘y¤íe8$rX¾…ÀK¾PijãYôŠ{O‡Òæﬓ+5ˆŠb4N,«7oM)'ΈOeŽ H‚Ú@‚ôé9l#´ÖcæÕÒ®1Û\EŒp\ `z¢yÒéæ5£<¼À62!ng¬Á!1Vú;U_D^³8•8±[<ŒSkøbe¡S÷Çó†Ö¹ÂÞC‰²aðd®>ãq¸€G˜pP¬“û“#Ј ’U_w^#Vè—a»ž^¬FSlr•jØâåˆ84Øn âmûz[íçÚà) -yÌÁ#øÌ0Þqж*Y†µvU´~§×€ Á¶» - -Á"#Èô£ß@Å•ØÒ+ÍžêjÂL£.S5>H9|˜°í6ÓnysŒÜ¤;Ñd«ÕÊêh¹>ŽÏÇ>á‡VÃ}t… B*5X X7 r(-.¸ãvakìYÕ3‘#2'ÄU¥ïRHΦFÕ3”Ǻº™|‰a Ý ;5´säm–@¡ÌêiÚJ ð2ÂÌXgæXgR‘ÇZÇ2p`vYtòmÄ�F¢;•ÿ´ÁÓs¢;=PU׈p¬µÎ‘BV&•Ö¹wv¬#r^D[Ïgê%Ö€ÖÚc…Œhuòb,® ˆ¤ Eò®8›³aérø÷=è;çæüýûº™Cª4Ý?Üê‡ º+á.ï‚¬× ö£@uܶó±D…†&‘e44’õõ2Èö`Ç4£fôÆ�Í]ø’;§¹«ë)ª$n8aËQô>¸Ñ¦Ó!é¯i©<×—7º^ S²ïSÄ#Q4è+ažo¬ƒâ#‘æ'†Ú‹'æñ¹S!ôUJ2·©‡wÚ0ãÎ[íÚså^”‰¸P<³¨3º7u=m4=¯ ´p$j5…!Íê@Œ#ŽA(J?‰Â!¬uàñh§¦&#´™g4<yÁœåª y\WÁÆÄNØœýüùÜ;ÁÓè(< ‘êø^LwIµŸ‘xôtÀd«·ƒÐêЗm50Û‘ëÙiôc‘½q¤W´&Â^ðnÍ&ÎdzG`îè±’ŠÔV®¦÷ˆ·Ý×9EÔ¥Óä*„,aFx:—è\%�}`¡šòG¦ì.ÈÚñy“ïÌùÇRIò?¢ûÔÚÃæG2‹)CŽ¤£§ûlD—ð<§‰¡oÁ2ê`’"‚E`cï3—S’sX†)Ï=¦9›r¤(ˆØT÷É[bcOÈËqnK`Qb.Äcª¢ ÑŠÙŽàTn¬C÷†A᜔um'=SŸ†ì -A4HY™‹£?¼É5 -bÆB‘³â%K#ô$›;©rˆ†rúºÓÙ#VP&“&ý@ßÔÍ …<½0›eWIDO®Ó‡Š‰úáŒVÌk‘˜Õ -Ý«ˆi3©UGÁEÐ3Å=0‰(sD"¶Þ®›gS \ë̺¦³ÙO?t¬óÓÆ›$]ã5vÛ¹—GNi<DfPÂçç¸H¦Ç ÊfÑL [ŸòË3}0ÃD¿F`ðE Šõ¾wºB‘^ê}èIª„á,ž`ÄÛžÊc³¦gÇâPE®�+b}™½×Ï~s -Q7D™’3¼ þP—y*þ”+HÖ°U=",û}³žeUŒ¨z«´…¢ ÿ\þ¸ÏÑ)2+mÅÛH¼pÍøÕ.¿háŠ.AºÉýq Ÿ>±”uv8x›Ñ‡ATòÔ[`4©9UòØÍ(ó²b¨õÞR”ý"*L§M™¿“;ÌæRÖäT˜Je*÷d塕ĹdðµŒ.Ëù+éce%I£Fcl?J(Ÿ>€”ml̵@ŒíÛiÙŽàºÌÒ¥ÐÎÏm=‘ÖNr‹ìã•‚Œ%ƒÞÖ²$æÛ5pª,E_¡I:]æ+X¸Ó5Ë|…LŸtVý©ûŒ¼L]a¢Añ°-3ÍhJðäU««Aì¸<T—›@Ùÿpºnv!ž‡¶Œ]¢Xm�8J]¹~×ä9 vÅx©£²Qµ%K¼Þ-Dœ4Ëv5×¥›]©q[H˃ ûQòŸÏ€ô‹j~î×|‚Q¿;µKhùÝÌïK¸úÑÂ@žÔ’ØOPîÝûSî°\ ׈Vò¸p4ýÜ -2Ô¡'jƒ?êòê}(’ŠR=—{IÊ"`x%Š/L.SÔ‹~'ª†„G6eþ¸ÈüùêÅûû¯ß~wÿöîÝ›÷/¿áÓ³_kØÌòÅå«¿Ý¿ûg/_¾øî»?ýõîþØ/.¿ù[þðß—ßòãÛÿÓbé‚ï—ÿ¾ú¸¾\^}Ï_ÆåÙ—Wÿß›åËW/ïîþuyö⛿¼¹¿ÿáý»×ßüûõŸÞ¼}÷úww?|}÷ãëßÿöþïï>üüÙ¦çãÊéòâþ÷áÓ_¿\ÿ:~þÙŸŠÁ”ì*a¿¨§ª�)q’(Á>$š£è<*_`Ì¢{‡åš¢ê,(¶Ò«@‚b¤iDÆoÛk|úV/¯ÞÄ9ò/4¡J$+j£Ð+b‚ÿ´©Ñƒ˜À«RG±–9H<RôímaO›·p§´\Ž®kËÑhñBåòÄ_Šé°«B!ár/°(ö¤úq©6Á£Ž5Dòâ@û/áe’ãX’CÁ«Ä >ë¾SŸ¿ÍÈ/%*¥FmÈÉï#ùùš@ÝÓ†¡`ÉŒ/z~ÑRA¹€‚ŒxŒõ» v\øPøXÇ9@˘>'‡âDD¶Âõ†´»�ï|xi46Ë_/ƒëc*€êülU»šˆ+u¨&aÉžlñè\g˜ |‹`Bå–ÐëH,”ôÏPxb˜æšØ-`°ãè ª�÷Ʀ�Ûxðô'Ü‚jøVÛõR¨]^æeË›é?yw™1•_A:1N©æGwÇøCI`/Åû¦oÍ65+áfu»ïÍ8äã8·ê8æ&W5÷öàÏwæPLueûó5 -UUQA²Pͳ_ƒ³FŸ!åmÙ´õže¼ð ®‚r:òVÞÈŸ ¾±Ô0#4ÿ;ZíBÅ«¨Ó~+àô1[âÀ£~ù&¸nÆ)…g‘Ë)ÿ*2´zЂò MYLF¬z+ôkÐúŽ`M'û -š©ÇepBí”ÞÀ¦ó5˜5#Hu•€;¶ 5ÍqÕ†ãú?´F_5ÇÏT˜Ð1û3”t¼M) JDÔ4œ;ó ³x¤ÉFS•/MÁ[õ‘¨¯`·àáJ¹,©xÒ‰E뉫QÂàº*‰<q‘fÿ6Fªàg?b…µ/ºa:ýšÜv}© †áΔ,/,¢Â¢2º]¦d¥j{Vƒ“eËêGǃ1õœ@%ÑB°ýXÇñTq Iÿù¯¬¢<ǺJ¼ª‹¯|x¿áR³*lÐ訳oÖãJè¬jbûf¼‹àA‚ûÒä ¨Åà6ô¢ïs:„£š9¥”ØõZ cCÚ‹Œ¢µïC9ßDx -]°ÞãXÔ’ÅöwÀé¦B'j⯠O}Û>ÚñÍB%x˜Í3ìŠW¹k®^Ò¯¼¡d;lO°&óçÿräKÕ`xêå÷ÆùhÉfL1˜m§7(µN·Ê°0’\œp�Ð ûáÀyÊã&)È¥@´à]•¿6ÍX/8ŒØ`>bC 0†_¥•›,yòkú×ãDr»šÁG-2î‘k+ˆ]rþ½¤ÏyÞ”W(Þ)ð†äJìû˜Å€+5@i¸v¢×Ìh§DF·hÈèˆK3ÚÌŒ¤ £Œ‡é1¦¿Þ5÷�þ(au^Lµémœ£*)Ö’·Á„‘ÄÏJ‚ñ¼T2¦ë¾æ £$Ú}O›Bãdyš¤‰¦áàWL£üu>SΦ%WRuκ|fi 4À*€;9¢£¤ÜûÃÝÁ!"H؈¶>òkñŸ@ 63Á™1µ154{R½^‡ÔÒ{ö(W’¸ —¦=e$ iÓŒ¦‰#ƒŽï™á¼f�H‘Ãu‡¼SÉNbíöZ nHƒy©ÌÚã:ÇkÀŒqÝ€4ÆŠ'C;Ä~½–-€xååÿGþój©®˜²ÌpBqˆ‹ôÀÌ܉TÆf7‘5TwÈÜ#è]uâ©×pš¨zŽ/Ir{šØˆš$Æ—wÊø^-dšæ&:2Ð$.0’0…#¾.“Ù–uÓç“1VdœíüP*/ó£ûc~„Ö3?…Ç¡_)¢qÃBR8Tá °´:úÂÁÍ2Ü!7ð@àb«nägFpï3ÃÓýDd^¨µíízЗÑC`лuãC`ӫѨÊDµ®(9bù:b<JÖ§>ÀË{s.ªmÇ0å\]u°3ØéHƒ6P®¸Û IFŒ£¶rg2 ‹S9Ùb AÁè\qÝô}÷!©l˜I-uØ}¡dºnO]oIgzÉ´Û¥O(9Уý죶Sº…d¤>Hwÿ ((($ú»xÑ(|åd„EÙJq5)šB^ˆ,Œì*Á¨¿>q´‹fØí3ÈQÚÑw°Nˆ š}làô¨ªóç‚Þct$ç=Hôt0¯;„¹B•ü¬)дgR'öŽR&A¾É”!qA_×v÷ïÂ(ã“úÙâÄÚÚÀ9Ü×lSqk—9^÷«Á÷ÐÊ€€t•yL7ÝN_Ù¬ƒ¡³½'êf n„?Ð]ÒÎë@à¨4ë; è¬Õ›$±ñ'ÈýÓýLÅ=ä ¡°ê‚Ú©€¡VËö}ög :RŸ£õ†ÚS\»ÅßãÈhä–U„©lé þ'0ÍU#dN@®'ADX±xC{¨8¯’”÷Æ;"Î)Ø Ë×tœÌ.מ‡ `50«Ùr/„Ø4üb=7GaY’NYƒö,'P?âûæÆƽ ?(xÝBaoJ[]êòA!Ù´m+¡)÷!$Ëq &¨ÄJd±.:H-j:æ ’ A`—×£ó6VŠòÖˆŽÒ9£¦C´Á(’ê;¬ç¬ôKyîÛ¬(øµÔ1;²°!‘ÅD5æYv'”ï™ÝO†&ÅŒ]žOù10P¯� Ìjî¹»�‡ãë£R'§;"£ x̸ÔGfÔ2b -vAŒÉÝ“qÑ‘¯“@ý\ÐGÏ®Ðòò8WÏ"'l 4¡[dLeDTö¯ÔüÒÅîqYêØj«—ö«¬u%:{‰l¼—ž³ÑåηÓÍŠÇò€¤¡ñ«ZQ]¹b¥$ÈØå°…¦A ®r¦Þ¤êbe’Ñ¥d¼IK2ˆ$qݤeO‡9êÇŒ -ÌŒ ¡Âk×"ÙŒ%ƒÚ$+DB®ÔÞ¬æ‹`(ÝX ƒg;÷‰ò=fØø‘âΣ"-RR¸'2ª5à‚Ð'ûŽ£hçTº€‡ŒV8ö-ÕÕbÞ*ÒFmTÎ)3ñpIw“ÞÑ�`ÓôI!ÏÀég¥„¡„È}ëiÄ(£cïOžó“%áW៻¢¥w¼#-p¬ÙyoѬ¹E$ãžù'àBÕ~GÌc#™PÈ; -'DF@¾ ±2 =à¯?¯Ä~IÁ>”.`ç·ÑGT0&$ùcæò¥¸3®¬Æ- -3Úã&s+eÆVÖÊ~ -I?];׌J ]AäøÉ r æ—Œ¾Ãñ½îÿŸAüa*zVTáçö’÷èöë愇Ë輀ɳ"˜ì 0Q�ùÌ`8x'#Âƾͳ•yò;H Áþ�Õ´7Ÿ �ÌÒŒ£O%Ûa³ìõdû¨|òDmæÇýø¢Z:fª>†N÷”Ç°pèå!—j'îÒ†}ºÕ¾D·â¥>3âL´Î‰ÒÁœÕù™åÛ&Šbºå€…ÙVuŸ8›¶¿dð8GK&±`ßÅõϬΆ–¤ýåÛ¯ÊïŠ"åá ?e 4ÞJü‘'B«> -‡XÖç,(û¨-çÂUc÷íò¯qÊãMœ9±{‚0ÆØÑ3epô™‡Ñ´3@ÉoÙNäí®àÞ©Ñ&/Q×—ŒWq-nÝâ7ê—y°*/e°g)ƒ¿Í—F0©&&®õht°D,fûÐ�çáO³„³ŠµIÖ°*U’CoBFt1µgBgÃ&œp‚g¦Ð"aÏJx·Í@qô÷B1oÖrã‘eI tU¯ÉH$¦®ðeFÉBh¹R(ùÙYî9R -$ö‚0|V¢Mš%Þ‡\›¸Á¢âÒÜ6abátvû-ýÕLF§³¤¸£ìi2?²¤Ðá§}~¼•`t—†L™LÌêàáèÛ/ø X^ï<=ø‘DBcá™è f¹© &¼Ý$𚂃îZqʉyÊ©+û+žwuÒߊ`½|äTtñVŒáyyÉ;A”ºööKº¨ø&°ò~½ÉGVWëJNè vËQ-W¶Œ’e”«p½%;Fí²?¯N¬qÊoíËçÀÿ°A±6Pla~þÝevåHŽCQWÒ‚:Áô¡˜ïöaìŸ{²[¡ù¨S)ÁÞ¢©¨ÃÔð/—D¡ÕwtÁ²LàDVO{ ùUÖôL¼ÿe"DÅõo_©-&¡-Ô¯©¬Æ¬ì|t¦ŠQ®*’ €7¾’†0:¨d-gL†éÝB\ϤÍÔeˆ|m`xŸ¡}Ý!dCê»ÆP"Q/Wj”é>2ÖÐÔ‚°‰äaîƒ4T®X'æÁ%õÉjΈÈVh#‘~×EÊûW¼. -SK7^@™Ö⢂¡7¨Û 3(µ‡5КiÇ‚i>#R8ôHß—ÏG6K”qµ7jIB¦(z¨éψOqðÒ Q„¦–mœ}¦N[Gº½)¼yUµix›¸"3é|Ã7§ª'Cwy‰w3õQ >ºçØ¡8‘拉®à÷QÑ‚=hŸö^7€Þ¯xîŽÓ-¥A.»” ”îˆãÑå} -/Õýzs¿@›4ˆ+„ÀïV*w¸Öº‹·¶²ˆª"v`.P.ãJqEȃH —/<Vêô¥kü}[¨(ŠRâÃAl]„2’€‘Ñ I”‡V¥\¢:ã[§yO¼«uRÇT+Zç÷+í†2ÇÓpcÁ[;hãƒÄaÎf¹wmùÒð`rpKGÛ·VKòí´¬n–D„ú$½¶„Mh‰ˆ19?o½ZžßYyF õa•&£Y§¡Qm„&Bv,äó#ófÿñçAÚÛšVÜUñŽ½üQ=“(pYðíh1:lóÐ¥ïT³KšAÔ(ôMQ¢„ù#“ׯ?d ïö§ ¸cÓ*Q�ë°õ^Õ@)¶Îë÷Ê•¦›—°Q2b ´ U‹–Xê®B_Þ¯T©{vjFJ„ Ö‚\hžÆJœ…Ýßÿõ+I@õ" üΡËØa²føE6ŒLW.QT0™ñ,"îŽ3ÄØzMc;Ì‹ ÝY{ÁsÑ@Üí5q•˜ÐÞ˵mã5 ¿ù‚¼oæWMñø…W¡ªœ(¦°Ù'v/Ùeƒ\®»w‰IÆè“Bór7&�܇Çõ7Õ_"ÍX|¼×O qÔU¼!F©þ ˆJ|Ì«e}�öüñ3ðáY¶Ëƒ…eÒ³Ò™ÜçœÎœˆÇð*Z1ǧ;ðÍ”™˜öL,õ*iØØ—×bC©ê$ƒ®6ô¾r˜ -Œa”mLÌ4Gø zƉк.¦‘ìVI¿{ý”]}p‰ãma-¡PÐyÍeúLF¡T¡ìLÛqFTýÖÄ5ª©QõZ€cû¡ehÚ2ùØéBìÄáÞ“àÂ%„¶É¼|1�‰šg?ÄØuEÇ Ž{J4ŒVƒ/…Â>ucíîª=Ñ›/ëÄŒõi$¨¶[‡hÁ¨Ó4…†€!PŽÄ.‰Ù«uûŒ}:úØó¥}‰ -[°¬ChîiePc‘æÒz›Ûe]oÄ,�\.#¸bÉm$^"¢ý½ i[s\”b¦Äç3óÙ~ŽB*;&GýâZ1¾/*›ÆïÖw.Û(Ûãé‘Ûe hê`'»ú‹ÌâKªâ¡£ Sðz(󪕣Py¡¯œ@ƒ5SÌ÷÷Lî5îÉVcr».G-¹è÷KÀ ´Aº ®Â /ÏvY"÷ÎPcçëeŸR=´õ eÁ® �ÆF.áFe¾$&öXq\\®æħè›ýN|ˆ¥åái1$vRh¨};2Š¡c0÷ž ™5âø ]pm\„«”|·sqaÖåùmd’“†â´ú»²â…q¬JÑ\ϯ –`7º-d0Ûa�ûï`‡;ÃRw¿&±‹¼5) �/R@ûÿIÀf;eÅ‘ï¼/¯ŠTø)úV±ô"Aý‘Ïv⃎q§/ëø¨ƒ„Gá -m£â(S -ú�F Ò€a¬ÿÖÿ¢&¨S¥BÀ¶¢1³»&ör‹Z.^(2ªª˜©0K<e¢_ ÆúÍ;ZÖ(`xDTUOò໩”ˆhW$ÄMïˆ!¼l^Ìwžùi?9 oÅÚ‰×6Áâé…ò0Á\j*gê ŒDÔ!D`Œ|×'‹P("¦p¾�EèÑ„r{ïtaMC:]þ* -QE&ºŠrI¹Çç"/ýgJ%äš>¶÷>#òE>ÕÊc O£Ó%ðwœ…ž2}ÖÞúoßóíË»U?£tDGPÙ¸ÂqxÞ¢\5.0u=5#„ ÑÛ~øˆ}`¸¢Èž¥tüXeª)%píµ#ó².™§.ÈðÇJ“¦§‚h�×BR¯$±io�U½*Ë“œ|ƒÅ¨Ä:[Ú9AŠF@«Œ"Oz¥ûü(ÈÑÊì7ssw€}ÿ€ïœÒ‡Þ·Š§qÀ9ÊY…è«mT!*ßÀ‰º×’QW¨Vt-EÝÄ2<;Ã3#ì"ð-#J 9 ^s§@1t´Ù{ï”\ˆj¹®Œ:*µØzb±WìÔ98¼k Zz†ØIIù(á�×z¹Š*ã(ÁÉÔ”Cq쇖0¼êÉÖ¢\„L2§ D0ÕöýQ-RôB!7õu£Gf…JÀ÷…dÙ³’WïÏæíh+ô‚) µ€2d=#þ¾õ¦µ†ú‡qžQXB`–{fNq®H{7É(Ùì5Bql<#`Á!`?T£¼ -€ðÌqC[ôG8jjŒc•~¼Q¦%š+>WØû¾|°Áï‘'Â^€ò[sEDI£ÄŠÊ*“Ø3‰&/7*‰D±Óˆ(¤ò0J ë°GÙùŠsDô,dv -e”|DP&—e¼rn”º’0ˆ‚óp–DQó÷‰a8Ï‚öj#"BÜ.ìˆXÀE“ÐrE¹F¯ûMz¹(W·ë\)ë°WáJ•Ëzš–m7Å•éE%/õØ#‚BͼÐ6g6ÄgT‘91Õ‡,Rð•;-ŒÙÂÑ3€îÁ[ÁÌñب¦žQ\T3+='ò ¨3×ÁÙl -žà�ô>bžð·1Üö„[(¡&β`Ey)½™e•ª÷á«‚�”=pã=´¬‹«$r c AáË~©À‡Ê‘p?(Õ÷Cw‰#í17&˜y%ÒÙQ‘øüŽÏ¬Å -ÔÍ¿ß“0ô²©©ÓfûXKÇÛ :è8 d ½Bâ iœP5Æ‘xº.ÇèQ‚Ð5î!@ÇÄÅÛ:¡Es\+kŽÐNl^b¿V[ñ&PÉä(mù‰®11&Ö¹2]CqB›Å/œ2k²ÅœùX¯ˆž6É€0îNW³Ï QýÇT{k›÷˜OȘ´¬c1«M1NV¬ºþÏ„«ÀÝlþerUáeÄ–«Œ8øT yõô™ZÄbÝY›Kìhç9ùWîÕì~È>sŒh-¤ûPuwèñ"C² -Šüc¢¥,§vËú÷$hߤQ8ÿì³"½<B'.±¯l"¤‚7ÂÖzF¼ÜB™R8?Ê·uº;>a =ähÊ7h"}ë#â“Ob§G»ä WÕŽðUiÒF‚lÀÂX”|nƒSa H,l®¶êHw 8 &–à›7á•ìg`ÃfCƒ¼a¾88R¥ÜQ÷€zDÏ©³ã[î}Ы!l (ÀDÿ[ÂÆXJþ£«Ü„�Ä&*£é´¸ét£ ‚Iÿ‰uöŸ¦¾à¡(D”ªk BLgaì«`ˆ(=ÔéQZV¾QS¾!'&¼Zˤ¢æãÞ¾|ÎãGôkpÍ5 F¸m¨]hu‹XÙUÏ ™ €¯Tx(NÒ°C� ;œ,¤Ug‰®?c Ÿ“Bï' 'ÀS+óÐuUE¦ô¦0§Æ“åº~µkJPBÿc½\v-9Š(ú+5´´³ò]0jÓ_�Bbjµ0êAÛR«ä¿gˆ<—0±,[¾'£ò±cí -ÓñZ…rkªÝåÓ7áùš…Ëeiu^b‹ú‘÷7þS®÷ÿðÿ‰ÿÿà#]ô¦«Ä?ÿõd1Ô,#{ëBB‡å}ƒãú|¢ìiµ:#jmk}ÝN1OÛ5æ¹wFPƒF°ë‘u—…P1µeéiD{Q-º(N€økáY£¨L<ŠŠä$‡VKI“RW†¹£Iª!j¼qT…u‰þЛt‘&.ø¸÷2k¥yzŠN†Î2âs’µšÆfZZ(AÅ=GÕ³Ya²êL“Uþ³�ÒŒâ¤'* š¨àf"x¸bD1›Ü -}ÊßG©¹oúžû椇rlý˜GKº†‹€#{fPÎ{l^dW·jÃán¯®œ¦ÕBÙ1º)�ZQr€ïÖH4Q½kÓEIÀdó€Ê¶šÚ„jÃäšÉ¼HC8Æ둶ždõe#æšÚJj©èf:o}óh8¨ÈÆ¢CÔ#~´d¥Ú$™R)øtÌOž¸õö*[¢NÑQ]uDÔBãó]ƒðGìŸm}1°Ü3)Îì¶çýbšˆŠ>Á ˜ÏÜv|>ÀöÍ^H¬Œ°5VÓ|FBQ»{‚¼�¥j0îÊ6Èiý$ÍñedPzQ÷… le—®¶›v(ú:mÈØ]Í—ÐÌ(Èøå«ÓÓfÀ&¶1Í Š^_Û\#YÚº= -ªnYÑŸÃ’²¤ep?4¯áŒÞlG“oíH3¸÷:Ð -OFµ` -¦Âˆ¿šLÙsA�ùçz”möðK[ÈÅ„=D*a½ +Ëé´f.¦a¸ qk€:yÁ^ÅSÛZLnjšxE®‘\aÎ:O¿"Á@:”ÕòÊ,™eLÛ>�1Z!¦íbñQíxD¬ .#¬Cûë™ÄØÅ1^]ÇlUâÚ)_£Šu!Œ••+A÷22þåJ•D€u¹R§.Œ`¶Ä¨rD ‰·k¿ôdêQHq¦q$sÛ}¤\s -±ofNËÝh¤Wé‹ðâ¼'ªmWÑsžuP‹}{¿°æ¶6‡.–7¿ï*ÈUàÉ'å|˜[l!ÙÉ·‘/Ö'|¸)µ]Iv,TYÚ Yžö-ŒNÕi|5Y•#EïàÂJ<N¬¤Î^ N)‘‹…;îH»ÐÎ.9Цðø‚q.®¾ÉŒ9¿¶‘V{•M—§æWª"¶“Ù3PnñE}SÉé±¢F¢+¢£K ½}€<š�Q=z'úˆ>ÁyE5¡»bç°\Ð×(¼±'…ÈÐاô /ìë_1ͤ/©¯¥g«$Š¼-P·ùÀ¬ç<´ŠÕf÷¨+ä!hÂÌ•â¬?ý {QADM;Kl‡l#hí™Ó@”Ã�Î]#"‘wFÌœ¿<¤¡žùµbc¡EÊx,Z=õòÄ}’)%’\ŠŒioë‹ê'ÝRþÈ*‹ôÌêFm³C’Å·ªl{‰ë¥7ÅqQ·¬W•L´ËgQj¿e*¼pË´pû¶…Ôh �Q¥íÍPF=§Æ<;OfT;40©y”U"ØWšÿ d/Äûîý—¯>}üúéçŸ~øòëõG~úæ7 }©ß^ßýõë—O?ýóúæûïßüøËç¿üüõc¿½~OäŸø7xðÃa•hdƒfNßx±rH¶ÊE„ÖòéÿÔZÔêûÐÁ÷ãÕÅT¤ïÒÖ<…±òA…6Hš¢Í‚+‡%4§rpµüW&3â)x�•eD '¨¹Di#šõDD)3"Âõ;åøµRöA¼à£€¸w>�Ø×YÉöé<š:#YhBš+ÙÉc ÜnÒ˜g~0(¤RH#A‚{ÀWJÉOñ}¤åÄ›§€ó¬–m,³ùé+‚©Ï ñ‚í4-Þo䙺FµÌz'&wéÓwX5¶"5j>Pµ% ‚l¤»Ü+´ÆfC6K?µCT‰ÌXLŒ²{$($j'X…úp¥DÔP#nZ«ÏÜ×QŒ(*l’?OAßwæâFÙ–Ÿï�i¥¤äfÈouº³�»1b¨„Fd#àè«ÔsæåÎD¼7wÄÍ2wó–OÇ0w½{ÁÔÊÑ‹®ÿ_(þ ‹H[úºØc/ÅìÆÃ|αiÇrpn>šà³'¿²Ë0Àãz\ðÆ̶_@\)ñê&¼½)ï_…7e Z¤<éÞä¥ë°ƒh²9:¨˜Ž†—;¸R6±«kbN´<»jª°t66IÚӱѩyºÝ²š6""fë6âôŽ<òígb¡ÍƒŽèíY’!y£ãÃøÍœÎAòœÁ…“~EUí@Š¶öq€n9b ”ò¡¾M'=9žA‚c:R$~ï[æžC×.àî#ãàAQž¸§rˆÂþ9ï_áCÜœV³_°H€ö€4ú²¤Ö˜ìaŽÇØÒ,nÚ){å®—rD†¾odªÜhKÛV课Íz)3maL% ÷£ c©—̃V©2FLC¦ „áÆwt3w1ÏÙyCy% f.tsEâßRÌåÙÇÉ^ì‘4B6u9ÏtÁe…½+˜¡*+x[’HÃfQÅ'\H�Fk¾@ ´4¶ŒYÓE…^ã×èÑ=næ< ý)"ºÈK7fsD”Ô.¤‡ÄœiEwDðPÏ>+Ò›Š$ -€9†UU! -o1ÏM!©†UõêØ.ðœãÇÂ|1=ë¾ÍŽÛá°šª;¿…ÐUŽš_ó—ës ç¥ç¬ë™¹j?糑²ýæ5?<ª#è‘@á_Ë”à‰hxÞZV¤¡»ô Gìˆ3uk–O7ª)+q¦½™ŽÆòØpæž±øc»+Ö‚÷€àÀéˆ0Ò˜|Á…Â}œ-Ý褡-HS8ÆÛ¼ÑühÇÓRlºÑêA,ü‰Ú4|$*Z‰`IK[`q· ùà’ùÔ®ðäá_à³6D«U•q¼÷Þ\»×}<\…ÉgâwÐc7Ï0H6…‡zøø*ŠÂ!U¯§ O;—–z\šÖz=ÑîØlЛ%ZNGZ47\VÒ²â/Öiˆ -ëçÊü(˜¸uáuº¢Hż—K¾²¹Óñ[åT!ØáiœÈKww&š¥ð's »2³ÃÜ|�¯Lw‡ôîÏ})äÉ2ˆ¾ësü;¨Å†Ú¡”GŠÉßÕ¥ó-/uÇoLyÅÝÓyãïñ-9”áÌeni ÏÖñ˜æ+vÍ+ÚœH*¶M‡‡0m‚#¶ößZìoÉØý´zš-j9ìؤ¾ìãT.j‰íMQ¨‡-!â¢ZQ6mL‰½Üt -ôBQ³ñ`€Ø²ƒª„ƒÏÞBÌD —_5\Èm”y¢šº“Îœ6`¶ÍõL‡ÊžÁ؃<»_Ñ:Ï:f,›('…ˆ[Ì݉Rôrꨇ©bÈù\l’‘ÄPº¯‚¾5êÏgïAã›#·8l•¢Š],vÌʼƒlÄ>;U(c[ý”Â#ÑsSŽ*Ï2ØãÐ%RàW³È5¤W�;ÙµO=ÞžÐ÷kºµLÓrRÜÁüˆ›¹!Ö=PŽ1°c³pÀ…35=|ÆÒl£¥èÑWÝnNÇ5tŸƒ” w^'G&È2u-¯(tôSÆ®ÛÊ°Ó£·n£ô�¨!ÕÌB]=³DÛ#õHÌä,gÕ\iø¦ÝÅj¢´>ªÛøHy‚“ƒfº%˜ósÖå:*°ÔìÓÚ(Š¯ÓÞ ‘\ †„*á÷Øô.ÞžmkuþÍv™åÈuÃPt+½‚@óð=eý9‡TUaÄq=QEÞÛ4]%ˆCäñC¼yeÙ¥šÊ‡€¬üüw•€æ?ÊkAwH¬‘ž hLé¢<è�`ñ„=•û`ãüdc×€«:¬”P8¥ôerFT5õIKžðÖ¡žAO“OÎÑÁ“õÂtÈë†í¤‚¨{h‡Y+4ß`J©1�7*ŽºhðÑÎèÇ0c,×98¾³Ié$ç/&¢aDö–ÛØŒŒVß¡yØ·Hâx×p*È'P*¡«[<lí�tRYmª®„ç¾W‡ÇÀyGR’XñÿÛþlo1¸ßé¥X.Ö'3@ åjÒ1˜¸‰ò�s¹œ„û[š;ÔóöhÑ:1 Ôf`[Øq6-�Ùp0Ì쨨IoÊÍãá»6+~¯)‰ª…m6)œÿå*å<™KÙÄ\R¿ºªL?‰}ԃؖˆäÙãŠOF!öÓ¯,W¸ªúö› K½yrw32vR¡w«Ùåðh¨ÈðÜ Wˆcï&OîèÀ©eئèí%"ø†þ£«½ãTú€R™bãѳ&®º°möR%iÔ ¬@ëTË[É }XQb@ŸA+¹Šf6/§C)Ðí×mD kzÕU<žëÂî -e’CÝ#ÕS]q›Š„ÑÑ»L´NY -ýÆù8ѹô¯˜]TC=ïØæ¦,Y¾ËÊd¶VCsÒ ˆk?9A#uä�¾øa0ÂìD‹S'¦ªÃl¬þ®Z¹„I¾åâ'Žmó[•?€]Îô˜´Þ¬ŽBp�ô?T›ÒJTT£©çù,ÕÜÌ.–Wõ†¨ëš]þCpB£]B,Wò�çc]�ˆ9jVE&UÑx=›PéÜ>°¨šê{]€Ç"pÆÈq„xOv�¸9a â»Øh‹E¶"7ØÅï%¶F¯«»yÙ+(ˆôª6h" -W{à,üœúa‰ÐE* ŒÐA¸·þJÂAÝŒƒÓ§g -[ÎBbå,p¯8˜Â�/Ôs hùŽ¢acL•îjP ÞÆÈ]`d¿Ï½Þ@Í ¹¹™‡Úù®† 2¡ŒÄ©Zõà G»¡z (%\âCñ¸s·à2R¦êóƒkZŠ"yÐ]Ež\º†ÈבýŽ„ZÈH&.ÁûôécÂý%a `³B -©jÊ8 Ù“FëDŽ(]KQ×s6ÐRÈ¡y9¼ÜÞ‘cÍ@нe²¢öÓé¦LÂÑô3dX¸ÌÒ Ð‘(Aš”ö±cúd›6î¶wá¾xúÞCÙ‡„Di²hÕ¤%Z�¯a\ÀØÒmÊÿQÜLi«õk‹¢nWÑ-z¶ ú)™Î”õTÔxI@@(…ÇM·¦Ú}èË.‹éH¼bUt®eUTjéN$§Ãõ¥ ý¸PÈÛñòÊÚp‹3\Íòì \1Òð`-A6ÄüÀ¬NOáh±_µºr6yóêÏ?qo™c†F¤$hÁa¼ -‰(np¦À2ä»n/7ª˜è^Û»" Œt#BMÌ¿¨LdÑz‰øS”¸Lrv½ux—ˆà™3‚= è_•NÊ|¾®åþîd µæ¨£R0 -ÔÊu”ºDÌU3�1l�ìŸG¡Í‹€`ntVVÆøn´„×]aBn@ŠÈ±NÞjí©f©v`-Æm;Æ»6!¢uñµ˜ÛèÿyÀ£?õ:|wÀšpŸ›ô_Õ¡ŽW*AÒüt¥;ð«ˆ&™¡ÊÛ¢0€Sè6#ç§íp&6Š~s’p~=D6çæ -N¤nD(*@~åïט~›À-5—» -L–ë¦kÄrmBT9/gÏ]#‚œm#TkQ(:"Äç¯ é‹]êÅ]ˆàÒi]i„‚@».‘9éš®GÙsíÓÃ䜰AÀ› ÑŸ-!è• Guô毕(Í7éóa�XºrrÜ¡pâüj¤ê�0ð(›Á¿9-åsFT÷´Õ売š82&Ò‹´ZNÐœ˜R©¾ù�$ ï!8ê…ÿËã ƒ>Q|ÉWDµÄoªÓøƒ0§É8môÆ2(@âÖ`+šùÊžPê>¸EÈ•ázàXx˜ Â]Õü?¢Ž@MÔUÁ0rv .‹µûY_ú>ˆc—ñ -ˆÁÇ �¦md—˜…ûà^Hš"#âó‚OýLÿ‰\݉‹NËUÏ=9d‰AC ^ÙÃÀ™Ó.‚Œp0Äk`èC„Tž%Hôdš0�SÒÜ'j‹bO‘a9t0$›í/²:�úOg‹�BíFt{ÔqLÞ=æ¡Íëw}À%¢T<ñEü–EÂ[€Û}'AèQ¶ek„zÙ2ê¹Ï‡WÁL*êxJêIío6J êbïôÔEö/‰ÚËcUQÀ0Îé‹ÊQSõzõ¤Ç[’*l‰ÔýqìÞÔßщÈ&zZ˜ê'øʲ`}ÒêÔ6>0Äñ¬kŽbs1ѾLü© 7¶ðÕ6èMé(®¯àÍ¢iż¼ÉRüÀÊ-nA_ïTï°Á¬¾4YY2Ê—ï/UXdõ @Bäqt˜�ÑÙÞiÒ�šÅe^ÆöŸ¶@"@gÔ�Û²•oÕ“&±¶e··‘‚Þº²uyû½0 -õØ'¤ÇRãŒZØU^¸™*¸žæBÙúšˆ/ ‰dòzƒô\I¯÷läPâ§U!k¼ý '×ѹrM“If PÝ3Ž_J`‡ŒõÉèŽÁxZªDJùɵ8COCIJªé+öOËÏ¥&,ô~½ß}’6B¨öˆRd%œXgª’Ö 7s›‘’ -±-2 5¯Píï·Q| ‚—ꯚ7 -Èá67î£[JÊÖe´ÚÃê‘šeÝ(ÂTM7¥Ì‘ �ÝH9À-¾}íT8QtFëQññлïòco›”®éo©8ˆ¦\bȢ׆*ûR“5(졳Âè¤Îº‰1„Ð1zzéh©²X#®jª·WÂ&ÅÃY˜Z$!jœ£¹nr‹«m«úBÏK‰r6X:Z ô6EËÊUþ’[¶Â‰�ºÛ ÐDOBÓ×"ÕíЗÚW$QZM‘„ì¤Ò‡š‡~èGé}>†è| •h’~Ÿ79%éÖ>ÊQ6òŒ<¸áùÏhoõŒ£S‡H<VAªA^©Fâ(z™v$#CÐû0t)œ6Ú~Ü(wÜׇ_RíÕD¢Òa„ʼ±NËï<¹or`ô\_Vôêü.æ"ŠsóPâDuqÌ Úü©ôon$6P–FDmP}DDH"Žn+wBH*£eÕÍ�O¶¦ñ„�;G -=³'XÀÛ®TÄ}F»Q’ÙI3:”òš—ˆ.ë<»»S°™yë%ojsjMƒ+J£êÔV‘*aé*GW4äû"»w‰ò€hÃÄvœNÏ>iJW•÷ üý(undzù�ý4j†}øKãxh) ºW1D‹,H¡pç»T¼´i -ÎÐn—°fI>àØ®~q ’ÚÊuÂ/²ÈPm¡iþÓ«¡RPa�¥2ÓžJ¼7NÃ�%®3^¼0(ÊÉ )µx‚¾¤·G¿Üˆ”ôâ«)ÜœUœGî’ã^Fm©ƒ(ˆ~EÔPÄvºòøˆ£Ž'3½\抦tÞ$27‚¼ï¤i2 út4„õöÙd#à~GTSµÕƒ[ÕõW$>"xËXg A¸>Q2ìÓ’ðð6ÕrßNH ”–ªeY+Ðnê�s7ÔØSÔ ë)ðŽDU*›ÿ€åqOõlH‡»Ü`[À©„W -•Éº!÷‘'.Þàp%Ñ©) 'ö2‚¨iÖÖ0D,‡áÄ¿‚ 0`)ÔK:wòJîü‹øú—õrÙµ¤8¢è¯Ü! ò]™ö¨¡G¶,áa«…�R«AâïY+¢Îõà´°óèS»2³"#ö#ú5€zÝ 7îµ9vDšÂ‰)ÅÊ8St¯´à\%+ëõ¯ãàN'ɱ([ ï’v†u¶íÛŒ@`Ì–ˆæ5òg¹¬G?.gÚ8×gªµ3Cý —Uu.9”œ{gÀ›ä=?7bÂ`슂8icÚúC×XS˜�±a½M<îB]¥= -‚!å Bd4)yâJCÒ¹Ò®‹4ŽbD±h2‘n£ô{èvx@ÖÀSC© Ðó;©p.ˆˆ¢£û(mîTGwm£«TÂÂÈU½Æ‰ÞS„!ÇÂg 3€èµv»±@ Æ|D!Ý]÷Ôb ŽÉ4Rºv"OÀ�^Ö]ŒþëNtè…݉ñ6c'µEG¾]1Þ¦j3;f¼ð“Ô^9òTçêâ’·¯“ÜÔmjAãœà®eOBÆËDÂ-ôÝƤ2Ì6ìb+W"Ò¿”ÓýF«Þ¿7µëz*ߘëŽ8fFUÀZAúáqÊ’5³Ðãò2hd-Oè í@ -¶>‰�“i+qü=ÚˆÏíÃÃâåF B~xSΘ@Ø&˜!QÒš(úçoÁY† $¸„!ÎͶߨ0µÁ}3ÎËxC.¹ŒqÂqªJ¦øÑ>èuŒ’Çp”R–ßÝù*dH>èº ¦´Ö¯ß -³Çˆ é¬Ë”Á–^Öoµ;GyŸÒ9µ»×¥éµJ£¦eèÇ漧^wŒw xßáE¨‚¡"&êB+îRÌ¥òçX(!DI6ZtJ?ÙUX^…9ì9È */óÒSÐÊ…•ÂùEœclGS㱪~,6Ve"ƒ´ÚH€8_À§Ù®uÑN#6µ¶%ÍÄef€áÐÐ1®éô˜&JæÇãÓå*È› ºrƒA¼²"zÆe•ÂëP¬/7il¸¤s+Ùu˜,ÖË¿î|9Y¢Î·ðP;ŒîÐÍÛ ¼Ý Sù`æäó*uTï\¿xmõG,dB²!ë;¹—“~Qû€ÿÏCTÃÚ 3I÷ŒI‘ºÎ¥üYxzU£¤ŠÛK©|{ç²%DÖÕ _¡òœrÏ;ܸ<H–ÇxÌ8m46ç༩5‹Ô1é/æ“;ðaUxöËD�wôYM?¤h›ñ ü6ÂÃÞ?Õ‚8Ý¿ùû«7>~ûþÝÇ÷?ýøöï/á§Ïþ¬[ƒØÚç/_ýãã‡÷?þç峯¿~óîÝÏ?üý§oÅ~þò'åoþÿÅ?ÿ …ÊË›ïù×ÏÿýÏ/ò¿¿æ_5þúîmüTï¿û5’XÔÚ2fW¸¬¼ŒzÄ¢B~¸QÁŠ ÁùŒŠbIL«ž�lè3~!·ˆ»Çƒ7T<™î&2Â5ŒStïÙé‚ò΀b ÷ÂßÈ>›\‹¶Bá'l ì+0¥‘è¨zK„(æQ^H§‰ã¹EÑ„W¬ÓuÛ tˆbÚ³¹ÆZ¹†ž DúÒ*‘Œ×"M-ìI„È æBŽuìhˆB"’ŸñaDÄʘI×DE(ò (w»‰Êóè•5¢—Gp [õ2†©Â€D‡Ý©…Ž—!W&çŒ}!Ý)M- -·ó�˜ÆøT|Õ%›#2=͆ÔAÂÂSPƒÞ^fùñ%H±ÝªÈM`Ês'•J‚š -~ú -±Zá=(Q]¾6²?Gï|:[#PÑ$Øç‰êÌPWÊÏàƒ‰(¯ò“†ÈðÂï—9€ß§m.Ä•,E§À"ºnAÄTÁ@pæõºþ^=ÖGÿÒ¤wš}J¾ìg—é=—Ùú ¥¯¼ÿ¨i8å²3¹í[>Û…”pÅ´Æ<šQeÓ‘@6!=*† mMƒQƒî{¨oȲ!½ -‚ÒÝ>#b§¡ã6Ué ¯O ÏSèë®K½/+{i¨¾} -ñ("Ý[ë½ÓŠ+ É:{ÄDQQô”6¶·Í*‡¤Ì<Àwiæ~_€\"08F"Zåñ£kv �ìé±Ê# -îJÔ“Cƒr${|¼mw½®KEš9f>l)¾Ûkùº AÄv@ä|L¯ò -„qËd‚xµ=HÇ!hÝ„• I‡ *ñà ÚH«Õ[‰ˆ0�âê58Ù!‚ÌÜhj¯Ø»7*XLv‡>M< xí»‰ëvø‚YªU‡¦‹RéaŸ„Y;O{®ûKžQ-kG±‘~›W·jhõ9ÅË1â^ÞzÍu#ú˜÷È9††&ݶ뤼`è©eÕï°ëXO° ˜ù Ä'›ô …ÃÝID³ÄS÷ÄøáyHC-'1¬.Åÿœ¤©!¢WâÁ7wóÓѬËEçW¢„Üe¦¹Lq|!ô1†Ž« â,• [_~‰e@]zØÉôŒDáM‹¨UÕYË®Žh ı{y™›¾º<fȇµÆoU ¥ØWñrÒP3'ŽG¸>†æš”©¶DÐ"”—{jÁÆ|¤Ð–2%´²¯&A2 SoŽNPð”b¶‘‰›±$¾d:/DK,îxFÄN°“Þýùu#ž=ã_N“vv\ØØ5moOçeÈ©šÓŽ¦ï{›–•VCÔÙ{{×0ElÔb>6ÝÒ%½TK•½ýû®ëw½¦-„Æü¿±†¬¦]Idd(€ gÏ<éôªyŠêÓ[[¯aHȈ¡ßží¯|Å¡Xøý¶»¶¨£}�.Ç�@Ï|Ü#FàÚì•(ŸÛkwxhááæãW¼ŽÙ¸âuÖD:ô¿3i±=&B+ˆy•&“¹_7 §¨%kªäëd¾Ø€(™¿3{¾ªì�ÐDBˆ£2ÀÅúõVÌ -yräF!Võq_UþŸŒò‚±È´*ÇDWL†ò6h3Üzí»qö'™½hÝ61‘áÚfbEõNêî’* ˆ2°ÏĽz^LÒÑÕ;ó -s¶aؤÌî -ÆŽ¡Ò 9Såk ˆ ;Pl¦í˜ya–t\|ÚºÐBÅk'â¨p F_‰�°ÂøYÌ܉ÏTÀ@5(óªDÌ`¢Ö÷ëzw^çSÜU:èD 4"˜à;¥Ò¶7(ÙH»NI8w´ïõmÎIÆwUÇ€Mµþÿ{P¾ù#‡qà°¬—v¾¿p‘_úíDPhÿÎ_HË9t: EsH,ˆsh—qhÌ/Ê("¬5ˆê+Àô‹èV$ÔÛ»@ƒªÖ_Ôe—ƒZ!¹ :çÊ(¸´[>ˆì³¬oËC^h¥2Ú=5üØ´=Ý@Ñcœ›6TÉè ¯êeÿCó‚ÃÄõ¾¡É×øÎ*ágž™&<ÏÔ°ÑDž@šÚŸ{ÝÔ&ëcêÒGB‹Ïù# Ê#~e±&Ð+rЪ©3¢!H>#P,ˆӎhh¬D¡¸ÂD„¤ƒàd¹žÌCПãJ„#'¢^ëu'ÎÏÌÂ¥¿ 0�ö•Ú endstream endobj 39 0 obj <</Filter[/FlateDecode]/Length 28877>>stream -H‰l—]ª]¹…G9ì—@7$»U’J*%OÝÉ’„Æà‡îã2û|«¤sî¾Æ6ÚR©~V-yó«zGéc•h}F½jñ{X««Gñ9--f¯&‹Ñ†m“Em¦ÅhËeËÛõéw¿ÿG-q·¨sõÙ<J\Í6WYk–¶®jå.ÕÛâôÞ¬^8p·âcY£É»GY¬Â"[4¿•XæEXdkÜ>»-/›¬ê¼£k›ÉiÕ.\¿¹[_n|$W*—nVس÷ñn¸j½¯ZʪµŸsVõÆ[ç3&û(ROprÍvñÿmƒ…j±–ë¤ÁB<}Àºçlº®ÿõ´ª¥ÞV¼y"#]¨=Ð6Л�¿§u®_joó•’‡Õ¼û¨ÄsE©Ö2âÎQŠø´!\XøÄ£¯‰E¹ÇrÊcµR¨ŽZî92=‹"z„QCFÖ׶ -R*+Rm{ï¹QEi±wŬŒ´È`’…ˆ)»Ë¬Ú#8¨¾µ§Õ˜ÞÓÊ|[ÍrNZîE÷¹-†ç]‹W9YË¢ò(æú4ØàÐO‘RR¾#2zQDfmŠÈ¸Çäò}ÎüÊØöTìYþÈB^¦ž{]å½UiÄhTü&E'öÞG(hm:´æ=²@ÔŠÓ²9ø d}E»+½JuM"\?ø|úAÞÜ}̪:í\e}�X§ÇæàŽÐŒ}ÀÓ -¨ƒ¤.^:ûŒ;¦gº¹BíÕóäuS˜¾¸ŸÜÁÂoŠ’â™Ãùò/gÿ5(jöïÓµM{%›ê¤lv &Šù lÂU“"s˜kuË^‡¦”ÏÅMÎI0Z¥ÄieÌ™9-8«ûÒÄì㪢‘ŸgÖøœ?qY¯7ýÂR—iÏ»öYÕ!Þ¨ù}�V%œžé¤âE9¤E”3qŒ}`ÇÈ}†šÃ§E9—í2ØP'¶2¹#ÍS•AX2ÙcQAÃ!AY•MV¤Fø„…Sü{—’ч0L¬ˆöŽÅTçìsŒàbaôîÛ9®æ4OmÉ}÷}l+#ׇæËþ ȱ©ø¦EWOcAÊ^îÇÝ}Ç(Š)/ ÛË‹šÕ•l?È…B7vLàœT‘æÍ15pn"Ðë&óò|ýëçO_?ÿöëÏ_þ{ý‰¥ïþHAuÝâû뇿ýòù×]ßýôÓŸ>ýû—¿ýöõgÙ~ýË?ó¿¤q,%‡CÙžŒ ¢÷‹À~ÞcË›\Äóý{QQʳ¸áö‰gîAí1"‰ìZe÷fÌJùHþ˜Ó°´¸r°Ž¹·#y¹]õzQr�¬î/óíµ¶#ã2Ò.£íp„1w¡©t®:RëŒr«ÿö&¾ÑèÔIN_‡’ªòbpec+6±›Ðií^´<Àè4yîÒl !Q5m&ÝJáMÚÎÛÍü ìrve»¥áP“]3˜ªœ4ûvjÝáÕ´€”¸é«˜f P9Õèê @Ç Pñ Ôv¦™@H‚uÖ.$G~å~FBD^•skŸbŒX-£¥Îf”BVõ€4!¤vT0åÄ/3ƒ*þmÎ>ãœÉ;lë…™ -“ÐsõœÇÃ]È#è?ðMÚöú©/ƒLBЯ%6¯Ä媷HúÒ¼Aå]¯ðníyB‡ëf2Ø¢¸5ÌnfccŽÓÁnWðQ§µ›!é˜UÒõ -øË4œÞr‰]Uø·„)òš\Ç3†s úŠM÷Ý"¯5é¢& ¨ñî‚õ«bC\ åd Ú¨ÇÈΰ”œá¿4zÝ` ¢…/™ýSÙW%?$]nýrNjb¦šÛ4÷°*™… \¯’$#µ@U?A}’¿—ýV’ߙLñÆy4ZƒŒ‰•}1Ç/¤Zß³�‘²*@$õN°[Í’r iR²ÎŽ—C¦UÞ÷rh¢)Ðk—?h0'È$P‚†Nž‘íØ�aI�) «&·Ë Ì)õH@†öQÊèô€?ËÔ¨Òã£h¦0h(þ¬x¯O ÓŒ+RÓg!¶TEm;ÅãFBœ¡DçPü5RA®°=[¾x£*†¤ýC¡•¨¢=±¨®z••?¼"ƒ…Ù÷‘R£œZÔŒ|àYö�ï4üÀ¹ÊØŸ»4^ 4r3pqÎy¼Pi!c*ž`²Â§¤ª]4zÕ+ï¼ -¸^ÍÆ‹žX1¤¹sƒòP»¢“ÊHÀÓ Å1ÉT°£®ÛFvŒFö[Ê�›èC½½xÛ¤6Ä‘“2™»ôd"ù -àM6Ÿ@FE/Æ@h‰þèg´ö²Gkók4½*Ķ咑ðï¨�¦ÊÓää'¤Q÷ï -WO!2&`´˜Pìõ´ÌÎÈÄ:AeзOv„%‘° -À· “€ã;ñƒ)/A…(ÙÃÝQæß²9ȩ‚á-ŒËã^õ�Q_c¬…<2±g -”As¢Èë.ô@øé…-Œœ¶Ãƒo J€!®!‰ç§4©¦{Õ3¢É'¨DÙ¥Œ‡ ô<Êî;9,:ÖÑ–Â }©pÐ-!�¡ÛàÙ˜�ÛL!]vv‹%¨¹H§0v�ô}@ØÆX^bœb¥BÎdÒS£ÿ. -$þ*æ‹ß‘•ÓÀ¬=‹ÞÖ‰/C6C*Ì£_Ø �xT@M4CE »(áBÝøòI})6ïWeH-nø¤9¯‰úJY†ùt 6‹¦Ô„“¤åÇ C¯Xꦖ¹ÓÜ¥½øãT !ð¾@V<¬h@êcÿØ}º¡ôËâÃÊÔš˜kS±§×ÛMR¼èñú°øˆµVbÈæâ!´©£ÿ¸%*�ƒ*chD¡’yÃðdxà$oŸ9R«D1=ÖB¯µýäKq«—ËDg³Òµ‹^ŸC#tµô^«Ú…¹Ä´fF¢·'SRÚO4JŸNÑDf&êÁÁƒâkçiÉ]Ò‰ûcåXs=*k0.ûè™Ásc1 ø]ŸÿÑ>èÈd±Çç"2ˆ3p*‡íØ_C×7 -‡½© hR]EÖضãyµýL«z¬êËJ/P¬P'g8]oóØ<㤅D4ÿ9H¢£n:¨Á+QŸ7R‘Ä;-È]Ýs˜,j—¨‘…^d¢<Úûí�ÒÊkÖdô×0Mð t–�-A :±4 ݸôé”ZZà›,gÿ’¢”½K¡ö-yÑ…”f#v¥Ró öŠ±²vدªvk¸‚–ïÕ—AWXt(4÷ð¡hd¬óœÂ!f¤S È -ÙÜsŸ²]&{ K>ýÉBì ÀϸФÙôÕÿX/»=Ž" -ÿ•¹t"ØtÏô'\9!$((Â\YVâ KÄ™ÍEþ=ÏSÝ^‡}—;âxmÏœ©î®®:ç’~ÅË#kæ9Dô£JÙì2ãbŸ|ÁDrù¢ÎÍaÜÐ2ü4*œk{!Ø ³~Ä^¯œïÆYŽ„<=ÅHR]=ùœy'üÚÎm¦½ZhVz#lð ÙcUšÏàx:¸Q.ó‚L"$Qìúܤ¨¾QxˆðN©cÂdoTŒ%„]–-¡.óBµQ^Ú±.ó@²!uÐçŸ -=ºŽÔƵIÓ”Ìyõµc_Ç ™¢z@0åà/NQ §c¹|ÎÔŠúbTq@SwJ,*X‚} hÌ. -_’ŠÙj*՘∓œHy‘ññuÊšªØãà×\Ûã´±vt¼g-0ðŽ3>îã2 (œRr"J‹®øª§êdî0¶ù&é¼Áž8'†%ÇJ‰À´�›êr€©lò)ìϧ j;ˆ:· XÚä:K™± JµBSûÕ’x@§€‚1D(ëàç¯@Ä4¢b¸×N -w¢9Á|\ /ÂÀŠ;µBŠÊZ ]÷ÔØ}‘êÞBÅNÆÉR bŠÅeÏRòã š-%»Á¯å,l‚ÙŽ [PÞ#7Š×ÈÅD`ŒÑìB<Í4WÛb-pâ·Œ§Ì”öÝJPÚ³8Æ ñÞ„ÃØ4ɨøùø<¢f—æ˜Ãhóõ 2e©Ã<$z0Œ6J‡£nÏ ¬yÝÛu™½M¦7(t7YZtUÖÎâ3î˜^46xA+²*Q”(Œ—eÁ¬]^ðE[/Ζ·¼ -ä$tîs¯ÞºÀ‡'º¥•Ç¸YYÓšJûEÁø²)_4ÀßùJîZ¯Ók&›XÆæHíLV’9íš9Ò.‚ú”ð4ãYЫnóŠSÒbô¼_A8-iŽ©Îkå…¸>=w~Ë2(ñ¬ÉwWïI]÷EŽ¯ÐétM¸+ÈðXˆó<‘ÒŠ¡¢ˆÀ@ÕÇý†¨4öÉNã¸1ÜBÑx– ‘.MHW±rÎÄÁd¡“$:‡ -Þ¼X‰~bÄn?‡k&ô@£V~s$Ê‘ñ«3ùÜ"âJëºRf·èSµ“ƒ)0Ÿ9:ÅJŒ`’ñ…‘W¯è¡ûŠ^¾ZÄóíÏÖ™=ÑÅÚŠ§(f†»!!! –M¤zªç`y''²À`d˜ºY’ÝËv͸OÕ‘¬ét8¦!çq±¶#Ø{UŒ 9Úb”+ì-ñ‚±åf.`º]õi÷p º„Ìåbh!äÓŸÉè³¥ €Q¦E’t1ðÛWòxbhø´KT$º¯‡œQTµ¬�áqt5>€h¼¦ý9Âˉz^d’/p -š‡NŠÉËK·S®ësÚ(â"ú9¸v?‡5ÆZ¹Í)á“à¼õÖ 4±Ñb”!U3”´†¢[4KjpÐ ÖÅ„q4Ý- 9Ên–òŽ#®U(bÌ}]÷üƒk9,\rp¯rшÕ[ÄêJ? -´/²¾CuÏÆFæ³8Â{Þ¾`HBçÔw³=E‰: [í´sêê,œøWHLV((³ÄœÕÂÔ5 ºªË~ -x¤½}^Poà ˜@¯zÉ%ö{±÷ëÔÉ÷ÏH¶~•'NkÔ^ÃæKˆ—3&3_¨Ò8þ´âfrÁ0aÏ7¬IÊ~ˆ¥ôYqª‡WPóT hÿ$ª·±âtÍ#ˆ -#‚aR®½Hc"ðk·g¤U8?W=÷J9.ÔyÇzÅ1AåÑ$*q[l>ž¾°R#e`:ÆG…ËJr£à³÷FwEÉVÆš Ù^S¬è”ðnMc•B›l -eÆš[Ä*©±,fuºUhn⌲o€ŽÁ{‚¸‰”‹-kðuouÐΌҗFvQ¤döìc¡qðž’ýä¶Ä³Tz#F5ÆÑK–¥Xv™òÏ°Yú¹å>G‹ÃÉ‹ñx‹aÙÔNœðGVSÜ“¢~óy(ʼnÜjÐpÛ9F4úh$«î:”@ô…øXµ.¥\ìï|='Ÿ›Ù[xLyüÔoüGש=jWÃÀì;¹AÒ¸(þ›Ä|ŸÉù%Ú±q®õ É<X_øfCH*o‘(ú‰¯<S=÷ð¥]FC–®¶Qj3é”-#N3âÈŽ¸48 ºåˆî¨bêÓA”²%PA ôîÙ×JµšñŽ%É+NŒ±Ä1šíæÖÃãz¢Ë›Æš±"t¤:n£çë”=›Aº£41®q |†Ju9-L=Û#¹3ê½mäçp¦ÉëH)}\èEªÖ6”@ýIsÄfŒkÝõt¶(6{r/y#fJl÷:Dz‚F©å™8ro×+adf—²fÙ{u¼ÊgϘN¨ µÈ˾謡Ù}ÓW1Š‚ÏêÅÇŸö~´YjB8ÛÒGO=ç.SÄ¥…ø°SAP™ùቼ¶}à§(dtêE4šy§µhXy y5ÕÚóCJ±Ç·O#Sœ„ŠÂàÄØ.Ãp^Í@Ul :x4Q¹CxnmQ¢Ažn¿AÁ[¡ð®=%da“¾+ã>µF…êÍnôœÛð÷í�™;OÛ -çBW-Ë:Ñnˆ?6G¸#Nî†ÎråS·†‰c¤„9‚ec¼9ô‰ÖAãÖBŽ¨Ó N†À§¸Ï9ÇAUÑÇ5†¿ê’0ì1øU¾KM¢aŽ¬—CëU¢×®ZFP§A‡¥ÆÑ(›ËFúÂ24pÎg¾ÒmªÃq—žÛö²Eúê4ôBñ¹íÈÊXI -ËA< çÀÔsðŽ;S˜[=�zÃ1ScˆI\ýÒ*òTøÕ¥îf‰g½¸FÚ½;£–ÁYŠë*˜Ù®w@¥éØÎ÷üþâ凇¯Þ}ûðîþý›?¿áÑ‹__˜+ÔéüìøâoÞ½ÿçñâË/_~ûíO?|}ÿðFìgǯ@þ–ßüÿù7üøæÿ,ÔB=Rüzõózr¼úŽ¿´ãÅgÇ«¿ÿïÅòñÅ—÷÷ÿ:^¼üã_ß<<¼ýðþõÿýúë·?¾}óðö»×|°–z÷ç7ïÞ¿þÝý?¿¾ÿþõï¿{÷ð‡÷?ýø_››;HÇË·üñÓ§¿~¾þþUüü‹?%v’Þ‘{È Š¤LsÀ§8WžtŠcà3ÆÅHOQżbNJ¯huèýMšJo8†N½%eÄøôì:^½‰}ä_&²¨ÊpÂpð´ë‹cRgÐœY¿p?l”{N¶ÎN7(TzÁ®g О!¢jyETüq ʹbÔm¡¸Þx”7sm)L›*eQÕ逴k4TÉ9¹ ^R~u°D—q÷ôY¢/ˆ¿âN §Á¹ºàBL—(h•mÑ⢜#@Ø´ ªÓ††˜.‚óÔ…`À[1`$çÜñÙîÆwÜc‹wèÂÞ’Ážý:îs!àYÚ…è®5uGi#°%"ZÞ[àÑ®†bê(öuCÛ nψ^’©» }Âúĉ“˜q²ÌÆ E濫ä:Égü^Nu7ŽëN®a‰»H*Eµ@(áx/ç t‚›è؉¦#ñ”;îÈ1aá;ˆžÂÀ´o†Å@ÝÜGrºED81®ôî4âÌ(IâØ%¤wªL4Š’†þº|Ü'ƈÎuy÷ÌJ†,›YA¡Ó]”#ÅBy °ðÆQ@ÆtÇ{.¢L|N�з&àÊވΚ *z>×x]ÃñÂË$9’‚_áhØ—óüIï—{ű™j“t‘ÔÄ’ÈŒÅÆe\…=çE(r¬Ã°‚¼™EL©Ú“0q³«€ËȨ™Q‹C3JÖL.Ùc]DÎ4APr,4OáQ`·]èüü«öÓÈÌ™wæÏß jx?f1c>cí]º˜ñ*™ûHk=ªö7ˆ7d/oŒ`1wÔw×±ç§É7 ;ñ8lòˆþ}IC‡øBœ‹àAh^f%Ïû×:”‚ˆy–y£€j!.cZ'¢&Çä}¬!/Û(Žáì@ñYTô ¨¨ -ÚöB�ä^%JÚÑl5ÅI åâ3c„øç Rõz¥§þ³OÍ9¾ßN¾]Ï<ø‰-‘W¬?m`ØÍH3ÄB+\¿ígšjÅiÉ£„è¯0É�xPÖi8›…êÊǵ1¿?Øáôƒý«÷ºë>ûjˆËÑŽ>oΆLÞò«›2`†Å¹‹/‹ûÆaÚ.µ0©/Àé)`q–;Ò>,ƒaFD¹ -Ó?s(‰V7O%ðøÔ¼/ÌFßà¯C8�Dx ™¾m;âáæj_•îP噤Æt˜iÉ.°Óæ+F=>ƒÞóZAïÒ2~ÜÆáCEè -‡Ó%_ÿDø˜‘?²!n_4<À°QœrëûôÑQ} -ÝÀÁ<ªúé¬Qvü-7¨•b"äc(lõŽuh3ÌŠÌ$ª ÄΰÛml”r@Ö;Áü‡¡jèL¯!dU3 4ÃÿhB‘vŠ±f²c£ßbƒe((Ž¥ãûáÏTUxªÎ8ê.²¬¦%Ó’—î옖ƧŒz¥X1AÔ4“…ù!†ù™šÞQ~þØ#%ô¨qԱǞçð“Ê&Ä)GÍC\ÔU¨„¥kÛlnŒÍ]¼çö\NÁF$wå -ï„kOrÌÔ(‡»8ÊWÏõ¢ø©CHèZ|ëSrNeÐ%—n.™ŒD˲ˆ²ÆC‰Á¬ð “BÚ¡¼ÝF´ž¨„% Ô‚™AÚ4QÁнCSøƒ(ÄÈ`]ÚЀB¥Øh¬ûp¨ú£V@…ÛoË¡Õ1‰p&³ŠGË‚ÜàSx§¬Dnh‡0 ½?G[ÁÛ™LÙ™‚ˆ²ºÎ«…a㩺“'Wv ä|¤ÓÙ5PŒ8ØŽÄLÕzM¬¿é'ý¼tH|,Õsû–}Ÿ¿BA,—€#VXcx-�œ·}Ö«AÃáÕVþ½M ®ÅÝ&ƒ£©E=§ƒÙAdÍbÕs’¬½žª|);e_\–ª÷Å7EáÀeàäË2@¸GŠˆ<Ñæ<»mžÃþÏüºCƒÓ â”<'WQI"Ž ?ï30 ð½K”›Š¾ÕBUDÊg[Dæ§@0¡¦cÊ ß&¢šDP«@xÎsaP¿ÒAS†{àbÄ!ÍZ -o�‚æO"pÓõ"š'n6-®Ð52<1o{v‚tÝi§yK5"|\ºD=æÞÍÞî¼Ñ§õ*:\(ÞBŠÁÑú <ÊÑßˆØ Ó™€ß+??¬C”Ø]~4צu¬q2k¥tƒÌA‰È³›ÍPOxæ#cÐåW˜AåÖ‰ò †Ð<%ÀyÀZ+*¨ˆâ0’¾÷Ö™"�XÓƒèiâq€VÄ]ŠÛ‰ªª3 BÐF,cŠÑ5Š±§çeìÇÙhÚ' (áÙˆSfo´+½H9F)TÌê“ò×´ÙÐôpšf¸Æ|*€¹ë éfEM;AÌ6ƒªÒM¡I9D«·öÕ´ -3ÆãÓ`ìH6,úq?6ÁÒV‡OöúNà±8*ÒMN½OÿBñŽËÈáIU±LŠ„´ùZ9(ÅÁ¿æÑ=´@ÝÃïàÜ!rÙT#0½VÉ’.YC«ÑyyÞå#¢™þîú¯Ìýý+[ƒPõö·AoÓ”QbäO�xutÆôªA0½æ»8Ñ¡> (Ä`)»:$c°‡È ‚´êne„úL¢"(W ÖÓN¢ eQh_OÈm¥o^±¬t>Åü‹Ž…bóOGd7àún Ü~ÝÑ–45b-eX’¡å cÑ�[«Œ‘#°oó”{Fß@›ã€‚iyRæîe{¡øa(‰þ€"Ä!¯lEê-“á;4NædVÀ ŽÚ+øb(O{¢Ï{â\øz˜àZ½açBX2房옜¦Îj‹xŽ»ÓE,ÍÆ0^ÓÌ:ƒBx#RR•±ÉUšO€W&Hµb�±CÿZ"÷c¬á;à×݉µŠ;i²bÛBÕ.¼mpT¥Ü¾ûó95†[ÂRžÐÙóJdÓq7j”Øæ0br¸8îYŽ »¹Q/̶mÛ™Zc•1l*‡KàÄsDªeÕ—ÄÙÅ;Úíl -‘¦Ñ 7FÑí®’ÙÉ5IÄx…Tz4U¬œ"lX~H•£äÍáf0ì¹r³< -(lY”Ý# -¢±óaV#vF;ÔËxôÿ\ R4JÁA÷ÏF„F7"èH§¯XO·c¥ª‚ÈZu6&££DlHØàÀšó¹IÃib -M:Ï’±@Í”µœe’AW*§F†\ 7Åôÿ-Ó“HH: jÈ#wm-ºM•º` áø€ãÌz},¦ËW’'F“Äá=çâ!žc 'ËD!´çNy- ãF Rtåêíq¢d'Q˜ÌsîÒ&Š‹ˆHÎâ ¶=›—TowMÄ89DÑø�(šcº×»Ñ8þKP¨Úr h†q6*Ó£ðÚù¬cA/¯@ #)›Òuy˜9:ñ»“ó¹=ƒÿ áI–îûQ ,ÅdD†—ÜQ\’'Ý"QU«‹)cx�’€ñ •$}"Œ÷á = -“ìñpr9¬ë€‡XÖmÊ€Ácým¹£SÈè(!¤É²kù¯qYWTÇm‰¢åG VL4J,ÓËùy±ÅÞ÷ó;žÑ?¤ßz �½Ïþ{yÞÔÄXÑNcŠ™8Çì”-ÖaNŽõs�hä^Drªl(?çgòtbˆ÷V²®ˆ N¯…¤…}Ë5ð¨ÅåhI?2ÞáÏE‚st*ÏW¬¥ÁvÐÎÄ—\¬‡’‹ ¯íÓy<9–+×7"6ÊBc–(ç °~X'i©¡ØÊñvµ1e>ŠóòÈ$=gì1DŒ7? ÑR·ÎC0ˆÈl×0UŽ\ +ødÞ:·!5M2_ÕÈv‡„ü³½ -<€ÞA"ã"®Ré]^N#î˜y_ë´`P_]RU¹¡¼M¦AK/\‚ÄPœõÓ]` ¬ïÞzmvi¥™È†œùn-¢rÑw ‚²—¸ S¤}y!b'\<úL!Ý¥ë¬à±¶â¥+c?U`•*hù‚VŶ'[•{ßÚ½Ph -žÄ°�#¢)h¨[wEûåÈ7›êšÇ$U פ(ÓGJOÃÉ6\Ùy¯³ *ÿ;©bÉÔ 8Þ1£.úŽÁy«ì¼N‰¥ìëf @qfZ"Pªø¸nÌÍY'fœuL"j&-‚PÎ;"h«èÐXa×ÏNÕ¸ŠÈ1ŠÎ:–¡ˆ4½ÔâJ�jØì];…[Á¸ž++ÅQ ü»Ãd×é|pª‡U˜½ˆA©:L(ä²97}î#ïœ$OžÖóEÏÄ—7àl„qTÞºóÓ27„€×&ßØQ_rýÀ9ɉºåG«ß¨ˆ™›³ŽD|ø÷Ø“Šg)#®Ê´ýËv¹Ø8’Ã@4£Aë/å°Ylÿ½G¶=X·qÀâƪ–(Š,VÑïÈÇZŸ€Ø¿*ç-·…IëíË6¨n„ËX03âì1R*J|"Rêòm.çõ6Ÿ(©ƒk2¶Wˆèø(d…,II®¹¤b<fçÃP�^½Š |.vë·Õwµgãùs®z,q˜Ò©(¬ÅŽ^ ÝÖs£øVDu6¸NÕBÒ‰—“¢L´$2‰¨‘–"óDýI5Vr|Ù"'t‰ï0ËÎÆÎÌS;éb‘™¼ÁMÿÚHJtêD-YbŒNDñnÌ‘9‰/Uª/ôP ÖP"ŸÂ$¸2OeÔß'acŸrN ZÎ0U²#öQúŠ Ö°¥D)-ØnéTf ÖxÝû¨tGB&-‘OQhs”šÑY”ê-Ô -ê¿0ÈVç®i€û\È ¶M›ò×Nûúù¹Û†Ã öÎÌ©&ü†Ø*‰f[äoÝú/j8/‡?2v¯Ð¿ô‡šÿÔjãöSð¯=â*è Hf‹Ë‚àé"ÌË°¼oÊ5]cOÐ1lLÛPMJÇŽŸL„îÀ…~œ7,„ŸbᨌqIG©ü: '(«©Žˆ8Q3NXêB8jJø´.¢é2òQÌ79‰ˆE郀2^Ú¯¨Eh9Õ|þç€BíÓy:)Z±÷/eq¸“Š3)Tˆœù�ð|TÑÀnñ÷6dÿ¢e:x3 ¤UT…Ò 44Ð~Óøi|VuÔßïò¥u£|¿_¡üZ˜ÔcÜ êÂU@yþ�Y‡"SLǸ9µîK”ͧ©(+ŽiÛðwu*§)VÞlVo±ó¯·sšçŽÎ»$aþoªiW†ÈÝ`œý�#nÊ jH1—mþB’üØE{S©0J°Pm}ny¾ ¾ÍÀ -¹N³!x_‚}Puð/òâ”)³£™!È÷øÄÆÀBPred²©TÙB24fé™CÐýuÍæxŽb›ùÓP 0›Œm⥾w‘€ E©Ešhz2Ì•¸#uB´É…Œ”Y«Z×üvŸ„=…8‰N˜'äBw<¡k´”Ô^ï…ÿüKÎjÑ ½¿¢€œŠ[Q`«9€uC:[ÂÖz8(&k™2î‘’w㢃ËÅÕ^‹ª™ƒJ£ã7ÂB?É艘/DOyI€`r¼ÎÑÖˆ¡®Õ Ôa£åx54\]â�ËA*D8Š@¤´@”ë4.¹OŠðè[ò4¥Äcxp1¥8�1w$„?#—Œ¶¾c¡ùÂ,0«Z¼´rï«ËŒªÁe– -‚Œíy Ѩ±Ð©Œcê!ê#‘QŽÍÚ%;Ö.þFïë±Îâefj%A»Á¶€(óÅ€U×±ÍRÌ£Ý1c_9w"È~db…BâãÞ'¥Û˜¸¨ÝæÌ9gu"®Dœžˆƒ§AQ¬<ÉÑãI5Žž?LÃOõž'1Tû bÓ¹õÑ-MFƼS*÷+›gÊ•imYÑ~hË°}=“Í MvSïäÙo5zw÷¡*AoÙ»ºçé§RZl]@Í0'¿�‹ÙBðÇMßO´§c¢-[S«XB1 -)!dq2'nÊE¦EÀ ‰:ð=ņ¦üÐyyºùØ¥´OuZIy@»”ÄúƒÈ(Ü›‹1©»úJ>Ü4V"N&ö€ÉÜb‹®¶ã åMš§/m.kmª(ûA-œlìÓ¤>cá º ÄUò$®Ç#ñúÄ‘'—îyŸdù‹B‘÷;žŸk^¤øc¶“Å&pÈÓ,PáRò€¾ï'@Þ1àn¯&�ÚœÔÌR'aÔÅÈ°(09ñ:¤°T»¥+d)¢´Í²%9FõÝç€Úè]Qú”Õj .xP„*¢vM ‚%à ôQŒÂ€2éŒPÊËOŠi(‡„¨,ØN½'-úØ“®Kî.¶“Ä iƒ\(%>E'¶÷„HÜÁx¤qSm2̺°[)ðjî§Oe?´Yë'‚êí‘lÉu½Šé…ß㺹²™í¢_ÍÁÖ':tát˜È0µ3ƒ- -Ó}aÚçLÜ]õMÚ‚+¾ìÂ�FõX”…‰¢‹5vq™ç ÍP‡Áɧß÷y §Ì!ÒŠ´îŸènY‰„Q™†:ÉÔBh ¡ÊèÿOD>¹"Æ–Ô?®õmKÇ‡ª-É”ižˆÂ¸‰vìb~‹ë2ƒwØ/Á>3Ý-L4%Þ¼G[íbû‘m,]2W‹Fn–ðï›Pí¢ Ê¨Z«L]åæØòò‹Å˜N¬#hMæ˜Ñ£:P‰×}J<GÛñ:)%PSBŽŒÇ±çHÞJAÛ©AæcR‚`ÂûºI…f°5>í2XÌb—Óœg¿BºG™!±zd„xµ$X. gÛbeÈpþH ÔoÅ壞·j¯fÌèOD’̇ä{î›QŽön•Â"Äûe{õ˜uDÔA¿ë Ü‚ýÒloŽá@Ä߯;âã»Ñ’C>nºLKþÀÇÂ}"Òð*jE¢c*<öAn g9¹¼–^¡íœ0'ùÝ4 mÄÍ·¥Ñ¡Îç‡Ùé1,QºCÎÀ‚Ðv;ÊßÈ(¥íK‡¹Ò»‘ÕB{'€ìÔÞ";ÐÀ}‘O£Øo5ÅpÆoð‰#šŠÖôD…ÝA6È$îÅø¬ó~òáPó(¤sIIK˪7õ:ˆ¹bŸ Q$«èlê1_"Š³zИs"höñ÷¤¼Ü¹÷Dõ(6w5犈½ã¤9í—eËwÅDm¡.<)ܱ\^RÄjÄ_¾Šk(‹œCdª\éÉx¿'#â¥s5e…ÞÓ튎YøŸˆ3¨Ø¹à;äðëNŸ(ê¥ÙÎ�jAÀMùŒ€/ýhxiqÊ•¹SlŠ s<Ùsáï-À(vª|ûºâR5\ÙÅkƒ($Ñ»RËÕ™ù@`®;SŸkpíl5!‰›Ýй´Æ¬zæ °—y ü£xé–%;ñ¶ïñ¦Ý¸hÚòeFT“á)ÕÑõ«{ÔŒ˜v½Güæ¸gŽY¸÷çyh<Aˆ(ª–TБaEëDDI FTº…>‚®Ø%L¥K„¾ä}R’¶ÍÔD1,Á‹"ð܇"Ê/åRSݱ$›¹–ÜbY~…ý=+ó #ÆÅÑšdTèWR6É<®Ê<¡ò1©•BW~",ãLñ¼<ÞµµŽ¼°^oé#h!Œ4¿:-ê¥ZƒÓPRKNãûÈr£Ô/íD]·†ÿØ^ö¦”¸²â5`]â¿j%’ƒÀ_:y”ˆÅùô“\l%ƒ”°¼©%æ÷ X|blZ“ôkY†Œ‡9ÝÂA#(èwŠ�WsM)æõù}@K%†’iÌþŽ5öw¢ÄÇEòäãtéX¥×‹¯±»Ôè…ãOòÊ'ÂD5F‰† ¨'úDµsiFªÆŒèNÐ>Gwç�âú‚Gí:4÷=U¾ `÷¥‚ì3 ŽÉªÆ„RÇP.ÅUºoß›¦z8ŸšÅ©Z;V̹á>Ÿ»Jÿ ²¨ûÖGóʸ_L‰13W„ÐüŠ§€«ˆF¿OZQ[:©ù`ªcP³ÍûL…$@"&a‰8¥f, àUz$]‚Pê+è€QˆT姖ñð@ÆC=a€hÎûÖÇù^"›ŠH•Ã’þ¿ «Ý<©/›¥Æ6}/¸GÄ]¾þžyé) -éJ,ãøö5ÍUÌ›Œ+al¦}Ý~x¬Ð^\ô~¼Câw6(Ⱥê’÷>Qî0 ñÿ¬—Ë®]G†_e;}¿ÀÈÁO�B‚aòÀ‰d9Hy{¾¯º·ƒìH™`ëÙkÕêú/šÀC»M‹Æ*E-|k×ò¬ÀÊ@KB�‚´ÿyD÷FP«®æ -ò/¢ ˪ˆ¶bƒ;ÌÙ®È õZEÔA=¦d ošz™žîˈ—!˼ÕM àWÖAO$kCCÖ.ÙäA‡Ä=jãˈ/¨÷¨×Ï£À+øˆ‚³êÑM™G'SŠµì �;óì8î ÕÔ*ØÙ¯hEEÖCÃ@ä`˜ÖoÔz<ÃcNýŽè†›I ²‘óIxÙ_HNT•:-¦VNíƒpØ-ˆ<¢ÿÒîgq!ˆ ³H#¿á.xüÃuryªXÙ©Ï^a¬¸¦¦zÐIHx¾Z–Èß -ôU¹zjHñ¶tUÍÿ,Àb3s¤´ Ù(Dàg«pï4NROô=sõiÆ¿AËQh¹Þ.¼%ÿ³!ªö(`ð -Ÿ¾äõðhË -àï¸ýྃÿ€ÃD!n½qŠpËdj£µKsFq‡Ó@?°3ýÃ>XœÊár×yŽp‰œ54à+fmÓµåZÒñó»¿ñ+=ÞüÓÿÿ~ËïüHÏòHñ÷ï?߆la9ÙFgÆ’Þ‹Awxßߨl?ôf‹(‘uS)ô¡ë¸ -34$ÙWDpgèjÈ5çRÉgDÚéå‹‹¢„|S0QôâÐ b^FÈ,Š¨›tÂû@¼ÚúHjl§Ò%Ò ¢Ç›–ªGBk”#ª"(ì`Òœn -X£°Ò¤d: àáiÚTºLQžgŸ¢ž™ÚízWe˜jí6ªŠ&¢ø~¢Ä£4!FP‹nDµâ(¦Ê%_¼È'¥¶DòsŽ»<š'PÃa€WâHI/‚÷Ò<¨åaýQÒQÿR®’Oé(yÊ{ù²AÀñã4-šÿÚµ4ù 6ÖEøJ%x‡4„„Tô…СFøç $ðÌ›ÐYÓœ…š*d5#vvj YʯŽ-õ€zº<B#%u6D›k<ŸA u¬{~:zK±Ú)àåvµÿÅìLŠÀÔ-¯ê9>_líç&à‹%Cñäßy¾Ø§³°½W£ET5‰*cߨeai°$uM_ìL¶©Üˆë0ì9"X`±Ê¼°MìôÒR]—¦âNá1±ÎÞñ$5*½A^’BÕzY�L¥ˆ®Ç4rx@œKcʼ¥‰K¹Ýõy¨Ç«v -,6Ä‘µˆÓ& ìo´ Ï‹sœi“� -XÊE¬+UûóÅ’½§ôÇÕVF;pX¸_Ÿ˜T4 ICh¡xa2¼`¬l¥² 9fe×{1C'9n¤+ül³+?ÈhÁDÜ,¥ãÅó¢¹ÂÖ@¤3È\¯Jö¥×—dO¶ò ÇâçádÇæAeXQB"²Ì¬£mîƒÛfºi}Ú ¡Žj°wD‘U7ª=®eGDp#‚’»–s–d¸HhãlÄÒ"¼vÚÑ`¹æfëP‰�p*ÁEyŠl['muéæ´ Ù]âŽC/pÇx:rÊt]´bö×ë¶1‰Ù—TvJ×z{sPé-Ñ0´VÈ"Ý {"æÓÞ†xI%ha"9¤É]<Eèaun»ØÊ•ªÍ Ì2‡±‘~Ò$ž¨£BÛ¡ «byRFV9¹›i~ ÙÀDšTI üŒ´QPÎfñ#¶ˆ8SháâXWÅSuh@ÕÝcÀnzM°¤©ä¢‡`à²X«›éa€Û¸Õå<Tóc*Qè|Ø)õþë$È([x F2" -â€#ÇŒÚmPˈŠl<5kúŠ(.¾Ò�iøl‰²pÊAT;*Ð2Žýx'߀fÞ,mð_œ¿ÐAVÛ�Ç•ï'"mS.]Ý{öaâs ˼s‚Ô š)tÄçöÙêñ�t%uÐbÞDrÚ¡I«ìRŠÂ*c¾D]Ñ×Tg˜ÕCGtëiE±K{kH6¯a…0NºLê–ÚaP*ÉÌó¢z«ºËýÉÔPF®«ùáe¿º'øQeÔýò¹ðDm>¿Á^ªî›7>¾}÷ýÇw?þð݇ŸäÑW`Šªpñõ㛿~üðî‡?¾úöÛ7ßÿÓû¿üøñ;c¿~üžÈ?ñðí•%ÁISíà5t•Â d‡ûý%ì)•]œt¹Î.š|6y.¥É¥•œè3ú½»m¿–½Gû:SðLëîeÁ'^ÖÊÆËEÑP áë`©e@Ò,F@\Y|K0F¨«Šˆ0{Ó¦õ—„c…:2»û²ÎûñˆÇ“Áó10uVeèšûzêD¤ì¾S7s{=#’‘_WZ1÷ðAf ¾ -A´ g�þ±‹mxº"Ò[Œ•êbîÊøI+¨j<¿Î‘ »}á׎COôuÎ(ÖÉGê(‡¢iså8ʢà Ãådš]µD©Ú‰õâ°¹\q¤Œv(\i¯'Š(v<6"Ð&mFUŠuDžt¡â=É'߃Ɨ‡ˆA*:§+¢:Üæy—âÉ€ËéÓÎA kKÃô³Wç(7cÒ™Pæ{ñx[Yõ^ŒS^ê¤;ãy?úx•¸�%ƒ›èØð‚ä_Eºß‘?ÿ§B$U'€.¦¼MÆÎÅèf¤QCwDúîDÙAþaD$¾u„°¬SúŒuòŠ�«gÀâæÀÝÖ1Í" -Ö1j«±ÊÖ¨Ú£‰=Ž"DDQQÈ€9&ž£Œ³t[#¢"‰�òÊ‘Ï #S-j!…õ‚Yj‹ŽÚ#n -’ÄáiøpIù[F -Ùo›NW¶YÑC»ßam¤k¡–J˜“¸ep€B²H†Î�¦P˜ÈÚXÙ2ô9ˆª:r4ßÑ éhP(»¼ -Æ`ÒuFÙûD‘¶Q)ÉeÀqŒ÷à¡×gùŽöˆeÉ÷ãˆÂOËcÃbîÉ8¢ªC”°§ôª>0�e[UÊ_Dp£Î ë!X‘Ú½ q -rećÞã:Àå¦Ü²`ê‰òÎ2JM—iÁoQAšˆ=†-Ï'dçë^°ªú]ô +’JdÛ™¹g¶k5+ÆäW¤×býi4'U¿öšÜÉH` ÎúØÉ0®ü¡nÚFÖ¯4’�œwv„ - …Ó>3ÖÙ :”°¥éÅìñ¦Žõè :»“‚Ý”Ÿ=´)©-sŒîkÛ˜x†ô¥ˆô$ -³6Yµ-q$UIð˜Ó¬rDýD×wgíDZwŠT¢8AÝQ›¬ˆÑ…Œt#šB„Þ³i¾ì^þÓ§n,; Á•zwBÅmRÐÿ9O†Ã(¯X'/BZ\‚”)N¼o€ -O¨ -EJ�ùÇFPhÿ´‘50Šrïˆ -Ü#ªLœSDÐ$±Î¾)©Æâ�öÂ'U5©âû®,£ «Ò¸Ô¶¶5PN/ŒîÚ(ªBG±„ž¤]î¹×îÑTï[‹Ä§àS:à•@ž8x;–Ç€QL€»‡JHOÑY¾æªì"ZŸ¨‹ÑÁIeu%™Y6‡æd:ú°š^„]ËMÚ“RºÚ“kƒêÐì*rÄêSiEam¶E16ÚÿÖïSí$ aR¦‚G -§‰ÐS“Å€ý(µRÙ¦Pp )=1C¼�or¡ÜÂå`‚¸Œ ÆV–)eKG?2i1]£ÒH|Væ‘ 4Ï9Už¶zxÈàèi1Å5¹*3ÍuÚtg'ŒL5_@¡YÇÙB$1m鉙PÀ—ºL… 2„VçÎ¥ÿ²^n9–å6ÜJ¯ ¡·t6æõ;"¥ªù°ÿ0î{XzPdfú8?Ž(ÐúhºŽÁøw' HõvΛ2/È,ë¢õŽíŽ–7Ú•ªàB?Wáî\dò£*¼¬ˆ²DÑ(Þ̨¦P5O»[§ÄX'†U†Qf+u1×¾}÷ßuS4|Ü<Z> -™·ôhÊ ™a?0„¸®V²ª -wæ®;{l 5OÍûkFòl†’ÑT¤•ã¡îG± žefËÍþ7øü?‡˜<4¬f|jéÀDT™Òov0k;S¤Õ÷DqgÚÑSïû<Ü bã—Ú%Ï_;øâŸrWŒšNnÞHä¥òݺoºeo5DɬG5…kµ¬C%úgÔ>rÀôΗÞÙŠ±µþ$‚&úÝéxY¢Ýq£rb¢v¿;IÜFÐÐûž…=<K»ß¿{£BWÞ³RÈÅï“"¹ûœ‚Jû#¤( Á½ <ãtü@ÝER»ÚIiþÝxl?- ºÓ‰-)Å°Èõ"Î[žrß•3a¼ªÍße•î±î \;p�Yœåø€ª®.ã¢Òæ1i{ÎÿÕÍq‹!»Gõ¼¼³ZÏŸ/M€?'÷χ„Y$œò"B°hYM‰`DJ„,ø³Áft5jRz7j*KÖþ7³)sÓXãôË“Ó|{ßô õž¦³l¸ÜÓ(¦ŠŸ3As™úF9J·ÛÒøOÍ•vJ‡db!ÜàÓ‡£Õ•ìFWiU¹´ 0ô/Žð2Ët$ûÓÍ -ˆQ.¥ -<7$ñc¦` ëئ÷`B¯¦šp2§SÊsÏ'*ëÒFã™ìãg)±]UJ¿ÖJcø8ÍÇÆ©k‹¡ÔŽ@½v_+•þ€ýèM„ƒ“ERBÓïLI2€ÞÍq¸8$«DìH/RThݽŠ—FOAc`#Ø3ÞxÀCSÊ*-qes±‚ºö¬Wû¹ - -!ýuP@‚ñ䨎å=Ë_&;Žà¸¶Æ¨©œE(“þcÀcƒ‰çÛg_nÂÁ‘•å¼QoÒ8äÏÁ·§sËT"v¥®û+_ž–þ´T+¼|§¯(Ñ,ŠÍ(Xsx¹ÊSB"ÇÆ?ue¸ˆ*°ÂàïS¯ç2vé¹Ý]#¡X¾pÙ€Ù'O݆Æ$Ž@¶/[H—¡Å@âð‰Ò8¸êA¬çSKcëwƒ›f|TÑ€a›°®;nƒÖ~XÝ‹"!UkeZ"’΢¼Ãy¸}MÙ}ß°u·S\—â¡ç™‘/#O¶ÔD7ÚþPj½+Qtöá÷PŽòą̊ÌCêí¸Õ«]Õ±»-êNóÕ7n´Œ ’[®t5¥Øóž%ƒß'k>ó1*xMZ¬ÊN$òÃGù/w¢NιR%®òï5V°5ÃàpÛz¶¿u=E)Ððó>àÓ}B´eð‰!Ö1 -~•[ðR)W„MÞ•ÃŒ,ÈñãRRHTœ¼Œ["+^g^)þ[f¸"ì>8²Ë¬¹¯xjãÊìø™�©ý“áSó»õÀsE†¶*GvÊ!pF§0'B«oÞ¦ZJž6HG¿‚A±AÚnÇq€lRrÔ¯©òg�‚¾È¯ÊÈL7[ôè¿;9ui”žtž:[$ ~×ï½IoXg¹×jËÕVùÒîø{\dYi;ÑA’SÁVjt*S�§ÖøAä‹0R é9}ñ•Y¨?a1Ÿ;½pÎÂÂà<-.)£°¹ª/!ªú}ªéÍÆ’f™MaÌ?RÝB<‘ÜèW:þÉC‡4•;Š/hÃs)k‹–°©„®vЫ‘FÆHs ìžÇhW<±ü9ò'žVŽ,ªÑ݉((Üa%jØ)D©Iw\8R°h_ÏËd“ܤe§3nz¨p¤Ów¢§ºQ«¬¥ˆy<I£o,0[ó¼KJ=^RŒ#⼫àŒ9$¯ô6�,Š@ÎÞël É1ahþMjo@Õ_Ô°‰ùe[ ûÐ@è(χ[=ÂõGNgy¨#<àÎ2Ãå$¦Ì€åuqgª|ˆ„8Ã(͈’7¡@ú×-3.—.Ì-ÜyhÅ€5=÷=NC´S^â®ãHçN4ý¾ßñZ!ß©3ÌZ‡YçCuli&.—($e5ÒÒDÈ öýîßHÄhŒ r/ûò€Ûút݈¤ów§ñŽAÍä£)ÙQu(öF¹L.ñåøßhùåM7züpî.k£ a+,L‹íyyh1{*ÃŒ7ß-ÖQ%Þbù&‹Óæ¢NV[ÁœÑ«I©ëÇEP5¼†:bFf›Nê8îÙé†Jû0©Þ)häÑ5RÈÔ¸´t¯«x¥ oÿÖ>qE1?‘aRËê5½ÁŠ¹ªîí3&!4Ø7Û;Ú\<BÝõ¯îX!·½ÕŠr˜—@åg®ÞtI½ë.ˆf-ζÜéE¢¸5+Š£Š&}ÝMiý=ÄV68¥zª· ¯#‰�ð¸bB`¶A%A{œMÇQÓ£€O|¡ñꃋœyóã=‚ÿÞZ/ÜκvÄzx<©Ö°Ü±#eE“ ¨z¸wÜ ð³µj0—G“.W×Kg9º7)NA4ºv;¤HµÅkPJf -ÆIjcôå§] hûhXv7¤ª÷w£^"ˆIû¦‰eg -lgç€ ;s!ýª¹ÊÒ8?»˜‘þ+«èíÓÍ7âR´ÌÇ%mižÝ‡{s`²I”ðŬ.Ýk¼Ùêð2”ÛH×¹¯ùtLmõ÷¿FizFUá8ë}õ~øÝ�3ñOT‰Ø%Û?Ì“]O‚ŽDhQ -w:Á�žïE ŽFì=ï ˜¦ë¬»„32üîŽY™p!’Æðõ×£TG*s¿ÑŠB+¡ÚC-.8ù1´GZfÙ%FÌÊèEäòvšŽpJß̬f[tóˆÏ°öü(I\…æ,raÆE¬)ι?z`:´T¯DWŽô1*,†:X`Fmùj7ç•/ëôj× 0t‹Ç¢âwžÊa¯ïÃÏ„ÆǬÊG.—oŸÓÉÎÎ~^ïg)ÜŸò!€tTìú"Š%×P‡§}(Å%Ì£‰beû´1œ†2!Ë¡¥v]¼['CÊ¡…H³ tÒü¼8(ÀYÆ&}*ò3H`Bße+Ö¡-íáã J4np¡Zª'2ºmΖ.çÔX0€õаÐè§Ê¹H"š–Yû‰^ƒ:ª7Añì]z®"«‚H!ÄbÆ?••œmðÌR`[)Þƒ3ð:ÅÌ¢Ïß}®Øƒú‹ký.#þ‹sYš¬Ü7×áFðh7XSD •ŸÔ¶æN“a¥�èD]7ê(ó$£ã €¯ñ©#16åy.À¹Ý”܉¾¿;Ícè;^ýv²À2Ëh`õFÎy6 ëdšÕ÷¦lD~Öhýù«÷„ìœý÷ϸ:€X\3n£5é(kHáD·pFN9Íé›XÑÝÏ)à8=¤yš)ÜÊ)Ø‘|`^]¿¼i¶×uö5±—@4½eAŽülÔDÀn¿acåÃôÑø ßÿlP¼Á¸|ìeßÚivùÃÄîÎÓ>ÝÄ (*ŠdöοVeJ’b·Þ«tMDSñ�×íééD»Ï’°"›¶ÊAäñ3”¯¯o6ùž‰’{i;|ц˜¤¢ ½—NE5”:ÚE»ÀÎöÁÿNÈ=ÈybÜb_TÜòÝèGêhÝÖòž0s·ÓM°ïNsn%ÚÉÜ'yñvow!œ{¸È°p†ñ>¦±«± 5ñù:dˆ³éóÔîŠZp]ņÆ4C:6ìñoÖË¥×®›ÃeÛ -Níåe/F)2!•a”A[)J‘úïyž×ëìˆ&CÚíoùò]Þ‹ŒM*{¿;vD2ÖfcfÃZM½Ë>I瓆—ýõ´GT£pm\Ò.²Oƒ‘ÕF`o,‘±Š©n i5\$Ô¶Fé!²‰�xV½ßDJ«Ï^¨—kuÌyƒs¯âoÒ!Üw¤7Á é>€ÐTP ±9„»¬ *Ɇõe°ˆúÊÈŸžÅ]fH¤«qfa¤©7óûå}y²¹’?Ïçá¢ðš(žÕÓ&MÒ'¢Ó"FPŒ¹#¶ü¢g‚ת -û$~8²GE ”žL Ê¢ct¬ÃU[Í ú‘Z².ªÛ‹‘VÀ5B0¹ËÔÜ`W/ê—ϸOÂD(!Ö±…)&ï\ûEξ÷E¡´è†½í\¬ÉTóÛAòŸaÂÏH'¨Ëã~#ŽˆíA™©fÖ~t¥Äò›«æ©$O,'&4‡€Z0Õ:w¶'!‚ÎÕnŒÂ2_¸« –9Ãä ¡ÃŽxQ4£J$2£½<€†¾u7j‰ÜÖéL@Xä“cŸŠª£õTTˆDöB,è8wý©ï>ãØ ·í;¶|—’º'Š#A~IÀ5Ÿ˜]¯¶® øzMë\«¶°A¾Q*1~Z Jƒy<çp¶‰? î7ç5”‡ZL‚¨]a:EWgÄÑU»@}¯;‚ÜÙlÐñØ'5y“¶÷I™\S6>…zýb+¤J(”ÕFŒºQk°†ˆpÒ5û²ôEdu¹E—Õ©mg®ÕÚLÆ!é ‡9úÐJ’iOªÈhFŸ`‹µ JVs>:=”ùá…–™ˆW÷Ùt7Ñ2œ[À@´‡„]Uð0ÕB¦-º—®P1ã›ä/vQ*)…Ñt3{t±)pÚõl‹d[ÖuåìÁõØè¸Æ&tðVäkŽ8ûÀ³Lû€ÓB'O`îÃÈÔT)ŸÁbU˜°w¿Á@‚ù}M·G©iTjH7¶‡§–šsp¿�»lgÉœIçÞ¯œÊ•]¼ù¢30…µõ;aTâ’˜¤zê q¨TToµÈ}˜R°ƒˆ¦!@¡QD1\y’mˆDG5n‹LSûUg|?ézQÌœ‰b&¥Zzç¬Ùg*òÉViî}– J„n+¹£=Œ¸†LfD%òªëx(ƒ—¨Î‡‰:š½3æÃI݈²·©ee{w´Žl1î»–"˜à0÷9e¥Hˆß±ÛZ΂·ëæR$Ô¹«?Ž[’c‘è -ä#_‹ùKÝ‹n áîe«5ï8¶v˜>ð裞ܣ°†)6‘óá»Ó Ó0C›:$¢Ÿ<¯sRžÄIË)Cyш‚1Ï|ÌK¡j¡z¹’Šþ˜ÛéðT §†‰ê©mi§íRšBuù`±¤x`ø…'Ûµ| - 7;›¶«‰—e¡¨ú\àt£î\q`v5„ÐÙû$&]5€LTEªîSŽmÇE¶£V@n("Þ¬£xÐæt6L¼®‰öG«=«BÓ =ØÃ{"E“ÄØà<SÝ0º4%/éZlVÜžCzÝãw2kRÜIråN¶{6´ëà2ÐKü\¦¶µªŽÐV$«¶âq2^¹q~o/ñš¡Ó8Œ@†¶~«×DÙVjT^à"»^ù<žãÝçŽe.%ᵸÆO˜e#¸D"Z©ÏªÚ(ôÚ†Ï|]„12 ðÝ×kUmÐÝh·ô¹¯x àå×-i¯¥)-‘P/¦È®€´9E‹â5!®iǶ6Ϊg:«tUß,óFI`¦y û¹íô -£6JimÛ -s*òG ¦,¼ZXn³úÊÝx…I–¾n¼' -$¨§@‘ÖŠ”IoçW²É&JªíP qåi›Ô¯L'B%bS¼‡!A{Iœ»bUúã¯Y;¡ÄeöºÆ'QHDUuŠhØs;Å’à>§ºÐ¶d@Ñ5�´ÊwŠF 1è)bÌ]'< @Ï–1rl}ߪÍØòœBwë %S,*nø<žJ7ùÚëí´¬õªj·»£‡mB½;F$ˆ‰PA`𛸹5ìÀŒuªñÊ抈Ž¯Á3|VSé@t[†Æh1óÅyßÒR=…CúìÒ´X •J”vÜd”¨~Ò;"Cý/©æ¨ÎhY·ï«gÈY:Q9{p•ÎЦq<ˆä5t§Ò‹‹/l82 ËE+’+¤Jh¤+véeŠqý°ŽL¾ˆ6ö±¯£ðŸ•‘>7þbtZðWkrn«–~ü3û ñÉŠB^IÞHÌòatg·÷�Ùž‘ò {Ù0c¨ˆÖ�vH(Ö°"ç(ìÆÕoe$Š—ÈzxXÅÙh_ßÅð´Œ&O½Ú—§=šJw»À§ƒBË„-}f•)±!Ã*«Õr„9s™*%æ †³T®f—[$ÐS²þ£aظ+W3/3_q ®/qxIº43Ö{â5�(ÏES b*ŽËB,PiT<Psœ.Õsƒ€0@ôík¦ Ÿ¾§í_üó훿ÿîãû_~~ûá·ÇŸøé«?¢çp~|ýøöï?¼ÿù߯¾ûîÍ»w¿þô·_>¾5öëLjü3ÿð¿oþñÚ¨<ÞüÈÿýúé_¿Ùÿþ}þÞjþüð6?ÕûÇ~F"øéz8ÉZ ,¹Q�}ÑOwÐÒ /¤˜jD0㞀©Šu!j�A¥©â÷m™–S9Ÿœ¯X%è:Û…à°¨Ec|)¹€@Ç«ÄŠd”.‰‚ø‰ˆÂÚXXA:Ù‰[ÈeNù«¾s»3 qD-QP°6„,Ääq–DàPPUîKM@›ï-®º·€iŒ(¸#ÜäyµU›�KÈ“Þ®Df|SIEM%‚}= ÈûI#Îö8:RfG¨Ü(¯4ƒ¥‚©Ê -GÈ~_8Kf{<Ô}ÑNU‡…PTOŠÌù¡v&—`é-òÆv–°QQÄh^8Õ—g¨«E:¡z¤‹¶Ð -qž1èõèè`LK“,1|Âdœ&8Xi°W4Ì&]DwfÝÇPŠZ¦4íÙÅEp¨An¶bBPà.C¿ ý]µÁIä8ÌEÀ f´'sÅtå³mTùú¢õ§v¯Ã,Y¸0=¥oX0)3”¼½qµQŸ€Ó^HÔ~ *„Tï}€¬D0 Ú@AÖ¾ÊfWx‚IDð‡)bîƒ*<„°ï¬°3Qó8Ø 2gŸvTÊ9˜<)‘Ô…LHC5>È3¨ç”\—ö…}&]4*¤Ëº‘mDÕè-ßúY—$‰åD'ž¯'}ÕÃòK'1•g“œ&�ÅMD“î^’7S6ùJÙöBöEî°gQîð]ûô•Â5ÀÂÐp²�ð@ž\Å©^åºÖOQ+•aùú:i.¢Ï]D<,Ì«\¥þ1BãAÄ"‚AiF�G"âç^§$6Z={œOô ª(Í»px_'3Œ:44W} -R™‘LÄQ³O]}$‚Õ}�Óë^SDwÓ&nK‚`]ÍWXƒÆÔu,é²ú&³_Z8•qøÞ÷÷Qñ¿¨Ò ƒµ6tÚ1ä퇒7ÛZÓf膩 -çÇ;¢Ý×}ÀÒ’AXº:nð?Q£ ñÈ‹¾è5. -•Ó+œœó…õ/ôæçQ8<ÉÂIMèj(…Vª&óHÓ"Eãum–!]YøËÝó5jo0…rQ’í¸e¥íijħ*u`‚ÝkM´ßò|¢„mÃ…,‚†sŽõs²:ÁwYàîźìˆà.¯“âbÝ¿Ùg3Tr¡æ“båvÀÊePäâ&⨴;¢)Ø/ûé&væ—KPZu†IþËz™äÆ–ÜPt+ZÝ‹f\KñØûŸú2”ßP&Ê”aÃÐ7£a·)JÂ<91Y•YÅk§ÞbÕ¸ -£Ù‘D³˜þ{$ø߈؉¨„õF%äúÓ:†Án‡qäÊÄ`@¿× +ŠÑ´I56†ràjšÆ$ÌŠÃú¯ë…ð;Pg§¥!Ž…¢!V¬Óècž4CÚ÷pKØ ¯ÿiºþÖiB¶œýü¿±†4ò cKxêoU 3Ô’FO.Ï¡_k¦Y$R A¢X¤ÿbbÅиáÂ)Z¸ðM#)œñDRÀGá´oâ¨ÖYFQÏèê*Ô©ýÅ´QÌauèÀˆ£ýŽÄtáØÉþáÉè—&mí¯º&ÝÙû¡.V¢iôrù¡V³ì<.ü®‹LO"`WZÕÜ`0øÛÒb†"IhZµ(‡Æ·fÍ¿ý7S¦aR²f - 3ƒÖãxf‚`²6U‘ð¿8™*z³ª^¤YH‘L}§ë»–§V¦ÓM˜à•™CÃS_2kÐ~4B³ÂxlÙ?{/PnQõ@U½(T>—Á³Ç2™žÎÕB´±ÕˆÓóCwøÀæ]p–ý¸ÌŽVlåßÛVƒÌ# ò>tt¸ƒÆMfA]Öî`yºãC~ÝÚm -<ÑØ-nËþÜ2ºž·ëAW»õÍÅ_ÿà,Ž X·ž{›xx‰œÖÙcNá”»å9?ESJ@1Tô‹ëÄl€ ÀI[TÞˆZJìôS‰àò÷gðúÕQK$0à^[¬Ó;¥A‚ЪqŠ4´?u@¬àtŒzìähÇN‹Þ5S`œ§Û\µä¼.»~±m‚ðsctš–jNÙjÇaÚ犡d¿‡hgŒ¤¬@>Xï(Ó s²M7;2Fmz2mreJÕ=Ü¥¡PM±(TƒûÂ\!�u¤Jë73벌1?4z¬Ä�bª‰"BÓAÌå?8¯ZÇé˜kQEÈ¥"°¯¯(jUd0Q¤µ¨RrRX<¬ôÉu (#V„Q'OkVãNõL<4Òf×´®&²0–¦Ùh0\Â…1º.C€„¿yÇb€²xÔ»Dy1ÅZÊBy¹"/]qåT¹VY”÷?aõY‡Î¨êu³çP~w,Lýèƒþ|àhè4”iö¹þðç#Æ6Œ†¡µÄši‹%ƒ_å'”âÑÇd«ŠŽ‡(Ïx>`ÈÔ"¶Œë‘QVÿ€²¿ª\ÌÂÆßø }!$·Uü—Cz}äÜ3øV^ú–‘·µŒØ3-¡nah rž†a’Þ2ìÊš1ÂwPo -C›¨ãõ°}®Cj„Š ú©",ˆ¬3HÉA@ßœAÍ°^;Ñ3¢zçó$Š¦¼;6¡=HÄÌžJ<$žRVöCÁ óScÎÝ`ßÖCô1Yÿ $°>%˜tž›û‘¥æÉš—V¢æêÂ|Óp'K÷*ï(þÁ`‡ÇA·²øÔ¬[òÖ -ÔÊ‚8ˆ Ç$rFhe÷w@²Ñ€Dž Ydþ}™BûoîGs*QB¤+4á÷,¦‹„òKšŸ¨ý„ 4L9\¾¡TÃÖ“Go[ûÿq„Ê ©õ(¿dƬ¶o¦jø³Ùx¿¿îNŒrs§E£‚*?ÏOÃVµÎ~€‚V¥’ýSƒ”ùmÏ¡%Œ’3Îm|á%1¤ 2hK¥œñfïÄݸ£Œ€¡ž=~>Cd;†aíÐ*¯«‰#œ«¬S/šë’‘hK2Í’‚¤fÛsA‚ì²É2dÈFñ¥éÜKübIú'\1?©OŸðºW}U²þù¹ëNE©˜P"kwBo-^_Á‰àLÐDŠà-7ªLÆzíyz„F®…ÀÇqÁ@Œ0¥QSHcòä'ÏbTA#_3¼~Š †ÿ÷‘h+zŸ…Õ5ÏñÄŽò°‚ùÑ]:;3gàïMÒ?L8LŸÂ;In%È¡DÌ ×úw 6nv‡˜ÁVÖËÐåÚEz˜Ÿ7"ƒ -^žo^šo¾O)G«€×øÞ£¥i>Ó‡‰b@a‚z¢Bõ@µÙcŽTÓןÜftmX—5` -�¾7µåD–ýÚH³&jîPça£æúú>0RYt^Ÿ÷8¾qFnè‰.é7YGö ‡‡…öªÇ8Ì—|*eš4~Ã)%]ÁÒ^Ç˾¨‹I…ý\¾|Ä…RDã®nB£Ÿ`¢ -A~É5\-Þ²7ZßAdtÕÖ¤(×?<Þ£‡š˜Ç•2ò„WàU˜[(˜GQU/&¸†BS± -ÏA›Ò´Ç6A }æ/‚É‘(,+¢?mÿÙ‡8(&*PMo êáér’j§½Ô�èèã"ÇɃ¸t¾8í::óÒS2—•žŠˆÃh*¢ƒ ¬Í•ÎrÁ~+qu<Þ;`^®lÔ» • ]#Ð’«sºz -HüÛ4[[¾œúï`¾Ã}àd¨}ÿù÷à’†¢M8�_BIþü¦é«±µ™jjkg‘¡ï`x†CíñïgwþÆÖ6Ýðö0ÈwÐ|c¤è¢âW¼àfJ¹&\Ê“6¹ä‰åƒ]¡ Þ±;ð3Î àMôïˆ8~¡YñÚ:PÞv¼£:ÔÇÿó7j7%ï¡×<¼ãEdÑÇsnËÜÃ`ö°ÌqoÞ¶Xží3oGlGhýÏÒšœ@åxŠ^ëE”Dœk´N8œÜaȆOÔØe³÷ÅÖ4‰`rÂм -7¶ÏÞ4ÞiaOŠOý!)¼¸âEbSz-™îØj>5òÑf("43²%*pâêcýü4)aÙH¼Ä|_¥nȇr¨PÈáê3ÕoY(%Nm…Ò“#¶ô“¥ú¹¾»ï�ñ–´ HúÉ_3ªžyÒvBtz\wKÄÖGúaÛU°Á¹¡Öã ?wª¥zŠš¬¨ -;ñ›#µÄ+xDö,*'×HûÄ`¨×Nß -¾8#ãM³Îè}²å¯>…òéP#d‡ bZŸ;Á$¿ù¼0lÇ{a[î2k'H‡îƒòJ�–.£�à‘š¼ÈkJq¹Í/ÂQ+Ú /‡‡Ù^—KCsÜ'ÌcÚh¯”*îl8Ø‚&üFdÁÈF……yi+ÿi²Ã̓ð¸m²ä×ÿúÀl÷–鹃ñóiöo|+mØ0;O}‡mµ(LgõyÞé…«Æêâgàš·æ¸œn}XgкÃQÂ6R…ßËšŸ�¨ª^YÉ+ ’oä -ÄåwàA¶6ùÉ2™(&†¡ÜÑOê¤þ“™\”©GÔsê}h8œ8:¥´N£¤uš:‚•¹ô0M&žq6î¾X#ù=iwePE§@qïø¹^‘T4ò®ÉŸ[¨@à}ªé?Û&AÿÚÕQ 먅åÉcD¢ã„ÄXgÄUNä¨@d|á‰èXBsíLK�H¼jêRåºXtªdÄÓßÇ)tfwS$çàšË-1b|”d ºá’_úE´Dp–—÷àzV²V©ï(ÝÚ -·ØTjmCPÃcˆ}GÀPÖÈƸ;½¡”…/O0KÑîj$1•Õl¡×+‘sâ&“«p“©Œ´;§ÏÙpˆû4íÇj!:P¨•(¨»Ç:̈n Šçác‹ ÞžDœ^÷m£š0Ýc¿vâav ž~e -Řô»S:SræYêÑÒñ"³µû:V£(@y'”Ü;!ûûfˆjG¢hTkfu—‡/Þ—¡g‡©sñ¸5‘ÂiÕœTÍ;ƒÑÊ”îÙû'ݼ£þÃz¹´Ú•Uaô¯ÜfJ4Ùë½—¶í6D)ŒÍQZpêß;ÆœûÜ„œcOb••³¾½žs~Êöô §w•¿¦}Ô†Ðë8¸è@(ÂçáL…Ž¡Éq¸Ývx)í:õ ÚÁóBñ -ÂýSu¯ 0°AárVìø˜§õ„o×<Y–]¶×Ê•¤˜|þ`C{1t=l"B§ÊºäPÖ%¦²†à¶£„$×ÓCwI�À -«667[žç="Ž4¨’ wM þ`ž‰„j“ñlTlËËû˜`i¹þ�ñP3ïP¨A¥«>4y 1ÀuñD=(Eb{¼aQN싆ö<Šm€«€€âî¦ë« òå éu§¡p¼Ë> ÜààvÔÏí4¸é³,‚”â5gw‡49êÓc"O‹žbcHmHèšf¢lQM¿øŸ“T‚çfŽJ¿GÁK´ÁŠìz„·Â-fÚÁK×CBQÐ5º„þö¦Tî‘áwÚÂ}&¨%hi:Ôg‚ÊyMC·B-›—"ˆý¶ÐJÄœ7eT*WÒ?ÖXI P9”1xØÚ`M-mx@¡sË�‘�ÀíµD4NÂÚ½-Óô°¼ -Ñ,>Z%n™¼IƶŠõ¢¯Jñ;*èï{"d9›TÍ…Uã¤2,+yÌè„°´töjÚ% -æDj,ÊÞæïûTup³Àí1C[žÛ²…)9D‘z ”C¶cŸæjŒkXÚy´Q"‚3@À;ã›<°ƒ}ÆÝA´”/Ÿ£êâ#D‹Ô,î<Êò. ©€kmV½ØoT!…3'c;º1ÄÊøSý»d8BCƒæf®‘.°–ëÖWÖ6B?‡.•æ$p“¦ -¹ÁÌØ^sWÄ£‡#äÎ5úp…u`ÍzÃJ’5r·Z‰¢˜áCø§N=;Ñ -—aý¨…¡5Å -(Þ‚9e¥C#˜†Ÿ%}ñ¼ŸH?в~o]u;˜=6Êã,62ûÚ¦°¦ÉV9Ï´›ÓÓÿiÔ¦°rÈ+®ŠÆ@[‘ÙuÉ(Œ_…qÛ‰‚@ñKOF€“Tˆ!³ÂbQ‹Q†„OÑ1ÈWÀÔ{Z -,‚gm×6 +?Ç»é+f{p (ùˆ(2r¾†›l²ÁµÒ¦¸Bnôð|8ŠåPR·]Ã<NìLœ*‰ku]s.åæ¼ìîRSw^<â.Êß—Ü€¢Q½IÓ’Ûç¦ãèn‰q-Æ-h†ØýÜI‡2ØÉ2LÞÖ±šBקöz±WÛÊ"Hµ¯•Ÿ£$KDÉéé»Ø�å•ã¼yÌÀÆæËÓ°Éx�œ&Éí9)SÉ•²Û:J2EËÐy¤®7·Å¸íˆ=Úqm¹âÇý,Æì;Bï—ÜOî©#î¶ØZ¯f¹ýü=6MhÕ2¦9±Î¯o`õ‚–Êêu™îèÜt.ŒQ ZIOÈÞØï•_ïP8úKÑØ‹„Þ©YâÄZ¨´KôFØ¥âŒIäN7b&¢ßLËÙ®*Q=êƒi|þÕâ•™)be˜£ÝÐëâ€/–{·æ›úá—½D÷èb™äx--ñíŽKïRz÷À´1í7¾ÂDàûzº¿z|ó£ƒhaAX˜=cퟣPMÄ -§âðÿ×$Ý–ü¢®kº›ƒÛŠ—â oÈt§^4%¿bW>ÞCóë@nS»ÙÑ u¶ò²ßvC~-qÚe'rÚµÆ}ŒðtÚt¥û8÷¾Â@?ØL7´"ýÈÚÝçÛ^TÖ){ïr}Ua Üñ°#vÝèî{ÚX‚Bìhµ+öÙ¯}úÃA´´Ö¡Ê¿³*¬@½ÍK?UµÁ£`œîQq¢¡ºQA¡ÎÆi©#Üëi†Š³weP0Ç&¶¤ÉíXo»Ûª—‹âE˜øŠ†jô î˜h˜ð?»‡¾!¸!˜ÕÛի8¥uÅKq“$¼{"Y[3²‰XôZ§6YÁ‡LÞ3 Ԩʣtv·«jAq_5ê‚݈šmŠW¨1yÕy.½å<6|å�ò]b�¾~ÊÕ}] E'uŒ�5Ýâ¦BÃ/Vj�8n ¸§ sˆÉ_DŒ>f hŒ˜ùµ§ù†;‘\éÅ?*F%2íŽB¤AU9àú:°Hš7OqûmœNÖ’izf·Aù�8jMÓ²aŒdÁzš58�#¥ù‘‚BŠ9ö)¦a!îPºó…á¿jÕ4åÒPÞ èÒŽ@—½Ç¸oJø0cví6´ë¾*ºà°H)ú ŒönY¤Y:÷€ŠÀ@ÀÍEþ|0 JÈÎòxÈØn#§¹]^^éäâ›d48ß¼Ý:†Ú[‡‚¯•ÊëŠDÜ(®$ªàIè×ÃÀˆ–Ÿ³¯pë¹@X•«´¯ˆÙúËü0âŒ]ô™ >9Á¹O™/‹à-A°1x²íÀr¹ˆ;âÏyµÂ¼V"~`‡@aû¸¨ŠÛ%,Sª‚×$1ÔTjž|†�ä¤õòʪ>ìaC/\bEˆ¶·€(î ¡«ÀyäŽ, ‚bÙTä¼Gdb ®ÏóÁç%®ÛÐcV‰á}毕æÆéã?x9mIÁŒ±7( A‰ Pm4d.- -»PidͤFää¿5Œ¼w·e)ðñh ¢É‘Nif) êÒ€˜©¾\©§A"ºÒÄrg¢ýué~NÆñ°H+9€Ã2Ö‚¼{HNåB¬DðöyWÈAf07?ʃyˆm#(J…Ò‚·)!ð…ÅËCï‡ÝaÆ£ÖÛ«Ü¡ ?;+™4ÓU»w߸i7¼`Q‹!c"hq¤WUwȶ+iÛAÜüŠó’IÕœè0ãëiNäTõi–A’ -äÆÏ1s~¬…éèE$ŠÑ–—\hëŒÊ#¸Å<Kya�÷\8ìm AÐðH"¨*9Uè·(ÓÚ%ý}Vß·¥§à¦ðû4]¢šÊ ³â.w”z7+ÍGlä`ñ™¥¶ÛJߣ,¯@5rÝrìÂŽiàUâmá‡âÛÓXÒÆ Á_÷¸GäJ5YghDÌC/j… ~¨‚çÁ2¡u‰®5ðžN®‹å½ä÷=äÕhQD !2Põ¼P8õ?\ûÁEÑ?¼I+©XÕÀ·#ѽ¡%ì¢vå¨Z_~Ÿ¾±]³ˆ`WžyD"7âˆDjE©½22‚Òúˆ(‡Ó†R¤j°õªoÎíÀK4 -rl'¿æH‘‘Îi|&ó×im'b_ˆ£Ü«hÌy‡‚•F8åN]QðT5Uˆ#¥[{’“h\$_iAã!Omªm‡båPî -2LÛ‰¶’j9×®¾ö -!v#㠩Ǽ@k4=T$ -¢f‚ú*“yR~’t‚i?)cüÌ…ê™–ŽÝŸ&¸Ÿ>â+üªÅç‚Ï|c9?›åmžþ_cdê0²[/ÈbÓûOžÉEy¸ÓÔqpušëþÑXsÀëVœû¾GxãV¹îìn°ñ¼ÇaéÒþÐqwœ -9lú;DhAó{º²ä“Þ£ÔqJ˜¬-„§†pël”vÐ0îéÓ”C’‰žSãÐ0nûçȵÊNx1•È.p-¥â—gºõ±£q(9rp)==vAó½×hÀ™UF!‹ÞÑðÐ…8ÉßùçÍÛ/Ï¿ûôñùÓçŸ>|ùùé×üôêW(2¯°ëOoþüüåÓOÿxzõîÝÛÿý¯?}~þ ö‡§_‚ü ÿð¿_üÈ¿~ü?Mv<Ñýãéˆ?ïÎ_žÞÿÿ˜O¯~xzÿ—ÿ½Xyzóîóç>½zûû?~x~þ/áå²#ÙQEÑ_É1ƒT¼Cd#Ä�!1bVjÉ…äÝ-c#ñ÷¬uâf5t¦`RÝÊ»oDÜçìÇû/?¿ýéo}ÿòþé×÷Þxálõ÷çO?þüöÝç/ÿzûü÷·?üðã¯üåóo_þëpûãéöûwþùíëwþÿ}üý‹UóœŒkÚJ\º’Aï õÎ$ük¬ÂØ0õ‘!x‰Ô”%¢mm=ÞZS|;mµ‹ü;nF ñ”Œ5¾þVoûçÈÿYÈÒÀáçÑw61™V—¢µ¶á]ýéBy&P^ÚÏ(°èÑ"ø8ñÃ`–ý\�—@Ä€`Ö¢íD%ŸÔÌ>e;fæ„~+½„'ܲ=ö"rìŽèC!¡>‰àÀqj… ¨IÈ1¬Å¤Ì9¯X@@¼+u¢`&ÈÙ…DiŠnà[DPöƒ‡>¨dkK*ûZŸS|6°§ñŒ‰äEŒZ†ÌEh?D`w÷AÄœgØzŸí P–y!ð9"5<;u¨©ÆŒ`·;aPȸKŠ1áãî›u½_bɹ¶EV˜Ü £–è_nüŽÁKЉ\ƒbܵžlq×ÛEëuƒÐ±Õh[Ãâ9 *Há/i‡n’(IeCnjèOºÜ4ž±˜Þ*Ì#-/e -}›fÏ|DS"ss¥qå¤Õ#'qìD {2i•ž"|/ßÈÆO—……;˜¢èÒzP^(‚B,3¨�z¦Çs0VÙ…ñ@¼ò^gøÔÔ‡>åõ±O°2(`5"ÁÆèýYk-‚NÀý˜üXŸ“`ˆã$5Àe7㇠%¶ÜŽ÷ÏÙcê²±&i†Fm”R‚@ØÛ 5…;~Ý^4Ùžß]•Ï<r1¼£ù\l!ß$ï‰ñ \ÏPJ^!Põâ5³÷Ê×òß‚¸C&Ü/Æ3‘ápûwÝ C]‹ÀI9¼º—@ºÃؤBºêÏ€ØÈJÒ¼»gÜSÿÛeöñTë¡ ~^çe¼,“ysº—î¼-Ìj¶OÃk²%ÝÊѶdG¬ m+@òu™ ¾0ˆ^£¿f ˜ž´ —Sÿ""Õ"‚>þØG/ì3ú6ùèñ¶.Õ·+$xyÅúœá Li"R&¸‡X¿íÇ4¤ÌŽÍºÓ Ì�'‹ -zÌyüuêÊǸN†êãýM7ؽ4àã"z"!Loyó†dJN…'$b&‚)´°85Sñé°Tt‹˜>8ðë“ÒèWŠ‡£ác^¬á‡ ƒ«s‰yØÃîQh4$ðñªuŸ@X'ü*r„˜IÜТ11›\)Rƒ#5ðߎT‚`Âå@†eÖá?.ÞÖüãÔ§—$»ÓëÁî²r6%®còǨaòé‘Û?£ -<ˈ ®Ù¢à[£�;Å1÷a}„Õ«�ÐM;™H—’ïϳOq`�Øï×üš;öI늸û@!Â;–)É6jHZB@¯'rõÙ(Ñú�è¿zmÄaH)Ú¦KWÈXAÂ@Ák%GÿLy„¹âNövή /jb3ùùAÐgÖHKj¾z½T„“ËÞè4ÇU³œž%ςů—eIa{`ÍK‡Õ<ÄMëÓG hÕËÀa²ä¨cŸÆ¾ìÓ8öéÛ°‡9Ïá&َƆ -øòÚÐí´|è%_® y¹«c1ÙðãàÁ¸NŒŽèVQrœƒaÔ)1RøÊ[%§‘’npêC…â§F§gkWâQŸ‰ñŒ�äM@«5�c»¹º<΢Û^€v¶@È9"2‚ví³ï4\ßQ6µª!–ÔZ‡mع»Õlg'ÖM9�Õ´€äu�äÈ‘HÏFd=§ÏmnYg[ n9dæ˜TÈ7Ó%KB‡Ú S#ªšDF)&)6àª+H;Ãfý¤¶ÂÂé&™ï…8fᎠeÏA{)]Hp‡ç¸EP†¶Š¸•c¤hsnƒÑ7z¿Fêñ°TÏͧ,Ã`½$„tˆ#U›Ë=tEÁ8¢k§¶ò×hÓ@Qx ÉÑÔƒ"¬žóÁl3v-ˆÜŒ#íC¦ì”½tIª^—^00ÝN‡XO?gž“Jð ƒJ#9ÚþeE–Îy×ÿg¾»SuTˆÉͤÞÃJ€HŽ!?3·?]¨æ€—Ò÷pD†–м†·Ã¥ÝbÛœuà†º‹ÚtDaû‚jBOq>’9E5BK `aQ =Ù±NbÄD,2ã…hž¸Ù¹ °Œ�Z.Ÿ5ÞéN;ÍS\ؘ+à\æ˜òÍŽè ²») fGF„' ˆÊ#GKŒŸHÅà.΃+)/–!JÀÞ8X*Gܘ"•ÄC`£¹@dfšXÖ2W±ìÐ 7Ð}´çdÁ³(¼ÖåàÌ iOÅ21Ó ;Ì{PCEç÷uß›$σÀⲂÖò‹ mB®™Úb™bà† R{z^&œx×£ÌÌEŸ/Býü¢õH£0LBävCÌ1µY)ò�Äé -—Ï`ð ×P*Æ9£ƒ‹‹š²œ3MNã®P©du{”¼óÍÜ=ýE£8];NzÔØ *“Ò:Èt}ñ<LGEþëÒ¾'\´8fò¤[ 5Üqí¼9rr�…&&ÉQ–>=1lO—¶'Àùžq7À¨Ð¸µgÕ@dºF2ªq—á^^"zÈØ_oÙQå1˜�ˆ‰¤·iJg¨ö»i@ƒÓyû¥G ŽùѵøíŽsÒj;,SR‰m±Ä‹´˜cƒ&b¸jlcA°Ý -cˆõÑN ºIÔ¾–Ò9¬Ñ’ˆ" ÕqÄ|€Åmñ�ýòŒ^Îúâ±>û=®¡\]‰Û†ÕàÞ‹ëFêhwÛn…~£Êu€(æx ^¸~.êð陋oQ8ù¡(’O 禣²ŸZd::D°GAžm,ô}é¥/ûqÈÔ%à°ìåÅ:Ó—šfÄžfÐÈO˜¿é ñf v5¥VkÄ}œžQ%D„Wo¾¡w3¾¬ÄH®Ò¼Ü2—Ž$е›{¼ÇÆ…p„ú®P;7BvŠzHAW¬sµ=‹lóÇ`ª¨4f{Ñ'8õyü“8a]Î-MÇ¿�LoÑÔ endstream endobj 40 0 obj <</Filter[/FlateDecode]/Length 29132>>stream -H‰l—1’,¹ DO ;´#—A@Ú:ˆŒ'Wç×K°¦wwº¿ñcº*‹D"¹_ÿúÇ?ÿ=r5³ãgötóxÍímŽ1Nág½¿Çð~Fž}˜-¢Ûé|rÆ~³Z_gœáiq^3³í8ýôåkŒu÷4» pÖ«eNöÐ2½o6:´Œ-msZÖí–æzo“0ÏXfkŽ?šíÑ#ŸüÁ>BL¡ú™V ‘V ·µLôÜ/b?VîdgY�sû~ŒÐû˜~ÞÛlN(ÿÍŒïZ%Ï>µÌö¡—çì™…ès -‘àF²M!Žv†m½˜Çï9ÆÉvæÒ9Ý9í^í+÷‘aäcœCš=@€q”£‘?Ý÷²Œ‘Q’~ˆžŒq´OÎ7÷=Êtb‹“I¾¦l²ä¤-bœýúo¬-§ÂÝÌúÑr‹$ÀÒ¹ÙÑÆܬBH¹³ö³¶+uˆ‚õyÖÒÙA°œ"òµÍorA±E¡ÒãÆMšó¢bÖ:½¯ ÅzûYçd3bÈÓλ[|A’µÆ"Éóî$,Ê–E¡æ²BÁ†¸;¬XŽÈ @m À\ŠMÁ.h 2o°Þg!Ȇ=G"[՛˩?(XåZw9gT?l5ý°h½Ê®Sj²KYDe¡ú¤‚G´ep¶N:òÙ)ÚNˆÔ©z-Œ�Ÿ#B³ô1F™Õ°^é]1õ3Z¸Ž¸HÕ¹GÌ-æò½ó¤.oè#š]'µK8ÈjŒZæ)ù>±ô8sù}n}èÃø�P)…‹Óÿ\½«ûåJÛƒ](ÚâFé$Nˆ¤†…0¿ûÛØÏ9ЖŠ°Hbü„_a‰š„µ÷í¯”ä‘Ý^ L"‘#›‘é ŸÇå?ͳ?«S¡‘ï:üýå˜èÛæKúrŠ‘IÅ%ê^ÿ^tD#í„Ãc›ëE'¶¬v!¡íý@ÔNk“h'w„åsX_/K›Oq“NPÇÎäHÑ<g)H¯>BÃÐâÒn}N -ó!O#Œ)m‹ÚRrά³ ¦ ?´S£‰º388Š7Kô‘ÊçZ_u½‡ÏF“L~®CQ{•zPuLƒn›¬j¶ŒO�5¡¾¤9Óö›\… YÓÃôuÛzÆþ4g•»IKè!*1AóÅF]Sñ7¢6š§yLúÏö×u&C²ˆ4áküj´¸¡âßu±ˆÊ©ŸÄ} *+%RD† -U×Ö”ˆ©Ü·æ^6„›Ô’¾#Q]œ:‘{c8Ç'â‡m¡mÐg~YÇ B:Ðp&Õ°g%é¤* F™úo(y§7fœ:‹0û3bRåMYVC‚ZSóÞè eS5¸–A‹ -1-¦§´ƒ<„ð¡‘)„`¦î÷Np@ÜäÛEA¡†ßÈ!™1øÐóf™“egݲ¡©HJ‰„”>ûÐGC=@›XæUS3íº,³î†™ô•õ:³µSã¦K#/ñTÏjvÙ'âÉñRξ}|[G¦!@±™¨£üÖša,†Ío€l¥ Ûò³Ñ -yuœ£³ŽT8J|¯;™Œt1ÎJ³¡*˜¡£Öþ¸9óœdó‘ßÖ9L'ç’¯êèª2Ų/̨æ#Ù�ö®Î/””Cu@9”m«ˆQXh‹¨Âí‚·’t&ùÖ$]2<•)¯"~šU}ñù9#bá^m%ð†àŸU+Ç(S+?´»ê -k¿«|*à’’Ë?—Â{ÍuGöÝkP¬dÄd2×'âf -Jl:#cóe9xQÎdÏxü™?þ¬<Y/°ùý9Ïð—Ò¾}–X«—Gn,Òl)ˆÀîúTÕ¨ìzM°Ëâñê– 5˜ŠBpèõÞiû©uzF–0ßò²×LËüüt!¶dBR<ˆZÃïéÏIø{ÍZîQ&h\µ€Æ†0ð5\²ëÊNµÉÔµḎ“+Ë”1Ö>_\sa¸+Ï$=úø¿×oNóK‚p¶´-£šä7 Lļ&⹄|€05º±ÏënWü5e‰ü¹L×Ér±§aº¦Î �›,EÿQ+õ5HWÂ>˧„Æý8T©Šê¾ˆ|¬ëbh×ßwý#OLŸ™û½A¡²tÙš&6ÆîÕ³—¶,ɧù¹1+ÅUåbùNePˆ”~q³‡nÆhغ˜æp¿…?è (œþã"]S£k&=SlŒ—œ=¾�¨œIMAÓ<—±¿£˜ï¨Ë°{^û*õ“ÿäó§NÓ¦l3Â4æŸoââèD\ìÚ_¾â¾2ëZ?›ò%D5Ò4bðõå€Pêºe°î®£ã#T -Û|{½dp]ÚêŒE—xÔFCó 꺤¢×°õ¥D#ªÙ¥Àüú¢ßì>?�u$‰±sHE~®ÒqºrÍŒüè.¡€::ÎVW½Ä× øÅå„VÓÕ¿:¥Q}7(„GHªTÝpp$ FlÉ5r [0CX7\+ׇ‹BÒF•ºžîÎ:’Î:Ñh:ö^²_¬ÃÖø?ƒa &&ÏDŒï¥çI±Î„ÕA‘AÀpd,—lmDo³ÌÜ×clÚ_Ú"“gÐãýâúŠëL©·(°úŸ/Gp9È©³§š–ñ«›®µ„ 4zJÚK= 9Þ7½ÔÔÒKï?/efÈ—›ÝÏùï"DõsÕü"â±."º?x)cãg#]i¯1:¦¼'IW-S•1–šL8#ö'.¨¬¬1ÍT:t -‘Èɳ“)>×UŒ<ˆfÄÐø v%„âV.1'K/¦*Œ8ÒÛ» -HKÞe>¨³h!Œó.ûÀ½Èu÷!$3V6•½¸SzäR1òϼ^iW ‰´µnXÑcé…b¼.¡RïP3 -5šŠ^îö"0£µÎÁ< QzÂÄ^!²œŸûÑ{'h -¥õµ—F9sN“ú"úEèZ ÄÉQh‘w'2-Á`¼:À YA”}¯¸åB>.+;ÛÊžA!âQU\]}bh®à±à™™$gòÅYá3å¡üŽ 1ù¿Yâ6¢iHb -Ô¿º“ìà2¿t¡aõ3Ãbq@-ÙÓ‚¤Ê¿\·1µ–÷ñOÚ§K=/)ªhTQBF_œ›#jvˆiף⊑-}ytª‡¿ø=Ø@GS?6cõÙ� BVH~ÃgÀ3éózÉ_I·á2˜¯œÿŽ'ú‹'l”ºÁâí6×*`÷$ ¸) ¡¦n%B™Œ?¨d×:³diG0/·ýŸírבí6¢è¯Lì`À÷#4àЩ+äÌ¡ÿ½×*²çZ}‚¤{»w“E²j?¡™¡Š`jÏió¨ Ýý³“ ªØN=9~n~iBî2€¶›ÀÂäù#5Y®Ãá÷ °w¨œ…ãۀ½¶dV—¡Iñ2°%~‰Ø”¸‹XœµÉµYãÉr»€`Lîxäk4EáFš(ÒÖUK ¨2ÖÙª‘¶¬k@PD hN¸|<ÕguèsŸRd4JɯH(DekUv>¨Ó2žî0vš9ÇN8î@àúâÏè¥sVTülýypŠlÊÃðNÄŒœÇ´&º‚S%–v>QuC³YÌP‹[@ÃRºÍô@æ/ÂFa1<L?Ú_±Ódla[Ó8‚‡á$ÆÝìuãª<É öÙt`ñMÈ, y{)Âø¯¦÷¸(¦Øláç±?�`0=¢ì‰päë<ÞQa¾9ÀÂ`ù¾ÊÆ|k¸0:“ŸT r¥H3”†%åÌÿ;â<9Z 6ЬɎ{®ÃôÙ:° <ßÀ’,‚ß–iž¨gbs,æWsý UáµàáCÖÙ'#@-´WB˜e°â¶™ì¸mD7Þ>(Ò´…½ Ý. -*˜*…Å8Üë@^Y–D·Nªš - ·Á[ÞðãØŸÂêjå¨{”£šÄ2&F¤•�m|ÛêÑã{•Ôï×tضÉhªÀ^?Û3¢É`÷AµÝ€¢ÙŠ[ZØš,B“15.³3DPF4óÒ.0=$úqžæÍó=×Ê0—ÑH£F)ôNr¶šB÷DD´Û¹]xG7·ðëì·ây+Ö cxB¸ËC×39Ä‹áå2tXó'"&YÍZ–>’ðX§jÀy7¬â^ãȸ>#s>T,:ó…YàΓt•áœÆÏ77䘇g/Ž¾n’ -)xó%p`.‘O“…ÖùO2ÃÕ? PqŠ¥æ…Ú÷(R쯳ÎÏÏ£Õ¬DOšuËöý#l?$ïÙµ–4öÂÂÀ‘÷Õa¤˜Œ"œyPæPêÙ—¾0ÖÁT©ƒˆy!¬â‚³ˆð•4>ùµS/(<öAm-)awÖÐúñhkh/�®ÿ�˜y -¡³ÕE¬[ ßm¯ª™j†–Máî¾ -@ÐÛ<‰¤yN°h -^‰qOâb۳漶{¤ŠŽÁêÁ¹‡´É¿UÿLMNAªíæÎìX02P÷§/~¿þ‹˜&*|oûðó‘àOº³6;xÈßÒÖÂKŒšùŽHjÛ]ÿí;X‡‰Æ¦óŒ¥VÑm<æ Ébðј^`ûê€x>I˜Î”Òß?ìBÄ”]RåÃç:HlsÊÓ¬ãì©Lç‡ÇìÒ>ÊÎ?·ÜÎ-ëc©0•ÈW¼0 (Ú–»€#Šèð›� Œ€îFá0X¥®@ JI_þÚèÐ6QB�…X"Ë¢(ü¬£x)8ÈêFÂÍ5SNQ’xϳƴéÑÛXžÖш‹4F'OÂØòõ—Ø©C•6�Ä"y©"L៶ñ¹’Õ~…¼wÐRC-—Æc#Ê7Eè2áçÞŸ -ïÃEc'Ç¢ -ÀI+tz2LÐ,ûÓ*ÈÀÚ¡~žWkNž+\WcŠžÜÍ9êÈÉytÂ>a¥9IQ3¹O -ÖÄ‘Æ8â·ñ]õ§Jl*î2蹎ƊÖ*:«¡‡ú›Ã�Ó¡wƒq|X•&0 -n °±š¿¦Œi½J¶èS&Çìtsâ½a)ÏòÊ;"n -1 kŽý§eJ5ŠP"ÛTY›†bgŽ -å£+ŽW§£'ô»®¨|@ÁíS- �¬CëÒÂ<¿ŸÒ»f)NÒhUL*p�3|–廡Uã”ëþ¯ï~zÄ'*�-hH -ìD!ú8EqQÌ~‡ØܺˆJŸÿl4mQˆËy.1(š¨Ä:CŸ�‚Æ?ˆ1‘-;—SKÇÄ“ì~�uà•óíÝÊî¨ §mÄŒSN$©ÙÏÎY™ †A²r\%Ò@)ƒ†ÜXù:ÉãKz‹/‹¥ÄóU#Ï·z”Ý>~~›ÇâÌKÙŸ~ŒÉn=*`Tøí¶²5®;é{ãÅ9ïÓá§á‚PÐt%O?Q¿U`I¼XhqéØmzg(LóqÈeˆ:l“KŽ¡{•\–ŠÿŽ ää&,õ¸é‰B&«DÊ*Îuïô—sݨ”W¯Réà>¦295ßP¢N¡=¿±<0âl8Ì[aæfJBATu¢èê5󟼂û¼ƒ )Rª„PÕcúZx»\CƒNºÁùÇØÎl²7”æ2Á¥˜ÜkVÃÌÐk<X>ÅÈȧŽÿ¡A–,.§‘sE¿à‰oÆ-3:>Z¨s�ÞdŽcu<ØA~ÁŒS~ÇCØ)ôszV'Ãu<L.ax9ßp®Š�ðõ[,Ó¿µ©ìdȥȮU…A°Œæ¶Ê²AV᪠«0÷[c®O-�pOœ¯¡5cyô wíTý…)±¯ßFõ$TZÅaϧæRÐíñAdàŠA#{Hñ‰Róõš4½¶Q$90M8€o-’¥-o€¦½Z| ìùq¯›©BQææ#ÔUfvÊ05<D¬‡„ðÉö‘=â!@ ô(áê7kP/¼¹c¶éÙr“è¿ø÷/ÿà?éë¯øçÿÄŸÿÆóîî+Å?ÿüïí`t¨†ÙßÑ`o##îØþû‚ò\9@»ÖŸ6캘ÓÙLˆæ -^à\µ@È¡ƒÀ_£»f$ðÄCñ-Ú˜^š\ïp.¼RéjFLs„^Ðа=vj¥kN[:ÂtZF3(þ~›6EijuæPP0še\äÞ”ž•°¡'‘òèý³OÑÆÐ÷Ø}3k'³þßFU¯ª½@ “‡�î¢(vUT'åñ“ -…_:qϱ4”7…Üõñ:>Étpu+Q¦Pøm^ã¢ä‹Ù ÿ9Â2ÃÍ@Á^7ãÜó•Ê›ӵx=R+åá> ©£ïC/%A%Œ4‰!YQ;�Ò0oN: -«=š7ŒM«ðùDŸ©EÀJw76Â;UµAæ@ÙP“SKõ˜Ùšñ¹¾�=“3E Àx¦ »X\Ÿ`™ô“L†ÿòGs&åhªHÏ¿^µÄ¯)ßÏùk|>·ÓG°ÃñÆÁªþkÌ•ûuQK¥¦½¸ÍXƒâ¾ô'œy3ÖIQ x‚)‚ÏÆA 5±ÓËBUƒ™F‹&dêJDo™kÂÎð>¼;e„*Y‹Öoà€ #Ca¿è¼oÖMY/ŸSVs]µO±ÑãXÁSLœî®¥H~È8ž5mmÊÈ&ªÖ}ÚËtýK$µª4Ñ}¦5¶QœM È -dÙ,‚NL%¾HºpjÄË’›ŠÉ)£ùäwÒ_i¼ 2¹½?ŽW$~¨‰XrÞ ¹3|¿ð±^¶9š+NT ‘JãaQê~×ÍÊa|Éñ9. _-‹/sêƒ1^Aé"–w(‚èçcÑc6³Þ{è{^³Š‰Ÿ¢hÀS§ê¢¹ë$"ˆFš wîNœ°œZ]k@ãÀõdËdðÚiG‹áúŠÍÃMƒÈ‚j˜îÚæ©ôwWß3fäŒG» G v´×&ÆTJh÷µ¡<_bPÉ K¼ÞÄÏ;9´"ꇵèúÙÙÄãd '™>6ëkdÛ¶¯8×Ð+o¹9^]#Œ¸Ø%4‹}L‘î3µH´ù·QeÅ*Z£5å‹ÎDM+ ýìëïÙ˜ìXUŸ¢.‚—(”öŒAøFz²Lдx]¡®11ÈsÒÄ,iª†$zVF´ÕCrsWЦô?ÖË%×’«ˆ¢SyM[‚ç<ÿ“вñ`V5P5°¥R‰Ù³Ö>yŸ%¸c$KÔ˸ç;Ö^R&y€°ddûŠ5âl^¯ÚHu—ƒzÿÎ:aTÔ\Öê;QpJ1 -é^Qe¾qĬŽ~"šÙÂØ1Y ˆ¥¼‹ó,q.ÊŒ€óDàØTà~‡z[߀ 7€ãÿ×!j?ÁD`á< ¹ÙO/Ìν)*¦Òi Ö<Â8òçdÑ�Ê•ÜÂz.RÌ bZ-e۟δ×(§‡êhnç#¹·"“1ÂC£ŒØÛ1…ªMMR%ÚÄaF5˜<œ¹/6Ÿø<ÜÍ´j,ï/€¤æc‰ñáãxÈ'ó1l4ί•§ˆ•“ú÷ìuß}ÿåëŸ?}ýüËÏ?}ùÏÛ_øÓ7¦‹šjñíÛwÿøúåóÏÿ|û懾ÿôé×ýý—¯?ûíÛŸˆü+ÿ…�|¨$C©`!ÙñÂλtHt Á¿x?ŸzO†ÀÈÔ` €ry„0XPémín嬲fÈY“z,ì˜Üú>7"LÉky}¾²ãûÄlª¬,~»œíNÄÊÜ¢õwßË*ûØ(ZUêǶžÏü˜þY4ÉZ¡{0«Ÿˆ«¸ïÒÊ<u -Ì,‡Í´vZ¼N[Ll -ÐÀ ‡T’aKßU™÷}0UfcœøúBÞ9¿¶QgÁÃ>ZÀõ˜/ iJ$©¬Æ/¦?,ÜeKXØÆbP_±Ãé@7Ê[Æ+»ÌsZ“ìiIþCÝ<_ª¡³¬ß(*4Q`^z€+F€±5Ô¬£îœ -؈K@€}?sˆ(-ÌÉ<JÐ(#Þ¢œßCË|‡€Žái‘‹Y2Î6$#Ñ À}âˆx蘼ζìvJˆ—Šuƒ$oi³àXAª[ÌÔ -âY›\øÿ[äo`ObN $^¥_Æfd±ï¥ Þ£®4¤Q<l%ª*°‰þŒÂ"•F ®Í$«Ÿu*¥æ:¼¦¼Û2`:„©ö÷ -ôÂQ²D5ŽBãåD•~ô½ùz‰˜g#$x$¢ŠD\¢gŽ!Ñ•[#¨e×ÀˆÔõì„{EHïÔ/½ßCÊfs-äýêŽH”Ap³Áó³è{·ÜxgTzÀ>dÊ3îñ4+¬û§Y%ñ&É2J°|±L3¬¥“‰g:ÔCK=hÃxm¨3mùÃu”‰ý¸<£(‹mÔÔæ% -È0êòþ2�Wq–AÍÝ�wJ"¤x?`9«:êùÛúº0^æùys¾èÜPÖSF�žh'€žo’²s/€’D°Ò:êefsÂlbìÞݦ-=–„LqÐðÅ�˜â‹Ýaõ*×9ï¹ø SxÃû°Æ1l2êR-x¤4œÔ°0(t;[ÀG¢.DQ«Jýlš]�P"=_o]ìgªù‘à�@4^D~4Ry1pVL'Šõ›ƒ†-Þ C´‡”4³\‡}." -)â®8"[ IFú²ÆˆÖËó*¯xX@CÏK‘’ûU‹dK“Uõ_7-Øô˜ˆRd/�»¶|3¬Û¤Ñ9Í}l¤²¦ÈÃp;T˜”@i* „c'`aŸ¦È0< óð‰èdÂêïÔè*dvŠ‹a'êìD—®FÑàõD1°âf;ë”]É•G:'¾|=©ó @†(»Ÿ€ £E·Ûå ZìLOT¤(Þdë®e ZçJ”ë9€½í湩”ÀM±}O_òð¯àLïêÔ‚pv/3ÝZ'‚"¹Ù%ͱßÌêð`d•™n†�?$ý¯ÓoV»E;RÀäÈ!nñn�€¨Õà ÎT:úæ®ÉT§ú¶#A8ä¤"M´cùmÝ™sïk L”çšëÔ,y´’¸EL¼K½[b—dz÷˜!dmô‰ðnÀŽÙŸ’…©QT;H¤ølƒìH®o{"$¶§ðÍñ® \b“]Ã]§PrÇðH;“aÂÈڢܱ嬗ÞIç¼E2‰ÊzÎ)zNzåÍCfDëOñ)¹«œé]YfŸ´1ÍûÚ‘«ÕCI‚Š]òÄô'ÚËN$¥éYØ¡Wõ#ôF°Kœx¸.Ñ&Âñ?…®|î4ÁôÛaBÎD†!`¢;›¤R)¹“Ʋ‹ÎõBÝQÀày•¡Uƒ—©r†!Vû"¤w|$ƒcR´> »žÛªüoùÐè«Re3´aS'¢ö±ì)sQϺ2æ)ì‹Epù¾~ ª\×ItVàîuÖ¾-¡3’ϧŸë3…õ<*ǃµbE™Ÿ»w–õÜìw¹çt>¼Õaa^HÆ‹q¤J4ŽÕx(ý)p<Ö¬ãâÀyŠÒ5›S$ª4[Jÿ_¥1¹ý)¯E"& d2?ЖÂåáþõ<—QÝcÌ&z$ -äF1±jÖqDâ–0¡£ %ùe"#(E9ßè'´ÐÇN4A¢ºs(Q91Qü.ë·½ÙÒ™xöð,õ|×Æä»X“A'~ɳ‚|óGäÆú% -ìz$æ«¥l„Ç£’VÍ]ÎWÅøÆ:±Ø¬¹†ä9´`ñÏò"ˆ8j˜VÃùŸË¢Ûú Zé”1‰P%/piå(°òî3S`TSwg’IÓsþ»ð€ôà²ûTó¼¼Våç4¶Ë_î'BÀdT"ÁOóЯq"æ\‰€«>6PÄê¶{¢†¢¤ë½GÖy/#ÀªûôNÊ51ëDlïHÄ5ÏY˜ò–ýùl„öIΔ§ÅÇÈ‘ÀfKCÜÅ+a&lTßd€H×þqØ4çu¹¨§íœE&äY˜q�ôŠ ¯¬Ãø˜PCSÈâ n)oì=dO㸒j"H!„pWºÑsqµê1÷©OÎÙ�Ç–ùPãgù¸µpÆU/F¦¨ü”¢É3; -‡xÙHG‡qg*§_RòroN5×ÑuFϸ„Qî×bWâ.Í’R›hÍæ„üN¿¯‹™é^2°˜AµÅt$W;{¦¹å SRåèÇbdyE‰Ä?i[ä-¥ bTk1VYšÉwµT6ê´këe£¶zJÔ ˆß§¯M _èvÜlvŒ�¯Dy5;ÎÙ¨C'ÑJÚ\dojs9Î3B0´±Q9·o£D׶6IMXZ{�»„ÓL1lA9,ÖÑ0‚YàÅ5.óiDn[+mÑŠÔZ6JªÇr2q &SŒcZÆeÐcð°8Ó[!v:„0×TKcócƒ3b’ˇºu¶Ý.,3†X˜ª_f®¬CºŽˆ”…I „“ð>ewÛqDç]vêR+íJÔJ'þo”OrÇ�SÎ7¢@àl¥œ€Ð>-6âý åófF9NŒZõT¯óʨËFVöá¶D¨”F\.ìa(pØáÀ1B×G>÷~©Ã¹�×D5Ù&QÂ0QËéN¼f>lªvåßs„«>t=Øò´Ì]å$Å®B9 ¯¶Nâd�ç´p_ê•«€%<ƒ,zÃ5RÝÒT;uûò÷Î9ù¹Åö:=tÅ·b>°Ý)b -4¾µ_™ Ñïõ}È.C-íÔ - -œðÉ3¥¿s8è[Scž)߈ÐRäz¿lm^„DD¶…$óJ#R:0~g -Òts>=8öñ¢4É„PUJÑÔaÞÂsûô2S ±tÿÎIêŠÃ 3L1\—ÊMÀچɲ^æ€é|Ô$„i¯ªõN‘Ù…Ãìd'²SUÄÞh´ãd@ÅšhÀaÛ°€ G@lX±‡çŸ;ñ +Älçé‰â…w!ª�@’y¥üƒ hD§¯¨J4äÖPÝD;ÑL˜;][¨|С4í#Ê~çT¡ -›8þKw™$×r#Að*<0£.Öço÷�ŠÚHÙ7±ò!b`8K2â!->ÁöÔ[4D†×ÂSŸŸ`v´~"‰²ëDK%Qè¹b ÙçœÃv®š ¯1A÷D÷ˆzØD…®Ü@”¯Ýþ2ÑKFmónÁ0¢èƘ)‹3Œ íD4UOCÑq9#ö8ês.‰Þ¾ ÀÖ¡âérœB׉hâÇÈ÷"I¨*J‘C”|�®!V>LŒ–ç³A°*3 -YE¤�j„ fPµ¸Ë/¼EW˜©16Ç°B»¸XЙs²U6b¡@ 8õ3%¡=a@Ú§ë+®.Í8E^°¢ê;Ö9Pô£èNªrŽÑÏ™ˆ¥g<€�ŠÆtAo8š|Xo€å7ÇFQ¢ y3¤£ººÚˆú<žSÌ—tÑcDóFЄeÝž'"z‡Ìâ_¦ïŒL®ÑÃb"HÉÏ%þ{…ÇòðkÑ-G¡�V›ÿÔœÇ"wLNk7Ÿ*ø•ÛBš©è6 Në:_1m 36ø†#fDNoE•^æÇ!4¦qLY–þ+€¶ú)Lâ–»™ÝJ+àW;Ê"Ò¬Â,…uÀ½&â!ú|ý=wÛ–åk -Ãã Çñ¤¼á$µª)£‘˜¡’0]aˆzUòœDD“¾ˆa, ¨ÅѪ‡å<µ@Ÿñ~‡í¸ËW$=¨Y(2¨ ê€,þ²fhU§# I§[ÔÌ|2OxŒ?CBÀùxÜ–ÂBLk4•rˆ—x¦ÓÌMPâ{y8Jæc~Rúùz´mc“E5DjBnã(šùŠó@öÈÌCOÄ:çsÆÜyH‚y;MåEWU÷£)¸4ÒÍsx¹ÝsÂ6 -P´ŠâÞÞ€Û®ßë•X;]œwäð€²›!TŸ—DSb -#àpu¡lÉVW)Kæ‚)§t¨°,*xÝãÂzΟÿåÙ]ž0ÍÊpI¥ã Y%F=ÄÌú$%kañ‰\s¥…CÙÿ°N‰¥ä=ð×¹ð¿FÉzF•]î9ó~èå|øKÀúøÓªD¬'Û? ”]U4Plåbg„º¤i„Ëà°o…€à£ÔstÕ0‚·žLˆ„\kð—hJžUžWS.ÞÅ Ò5û¹Þ -\Ü£&‚n©½åIç>gŒa!ÜiÒ?€ ÈV͖ͣ̚êM'òv'É<ÓLºKýЂ¦’ñ‹™�$•æp•‹Ob-û§~ŒrK‰¢®-QK‰µª†åÍ9 -(#Ð#[Íš¥_̾žŸGãcTÙ¦ó«Wƒ²’Ûï*âü†ëúç¡ÊôCD6¼:C‡lŸÿª¢jDm2“¸½2ver^]Kij)eVç°E”G °€^Vñ«¸±Sƒ‹Ø)ÊÓ©_ú ñ’ˆc‚¢'ŠÆý l/(@¨“|˜†’†aó\€a:kÒXpˆ g¢ÐeŽÇÚìÈÓ…ýB¶C›4—©=«‘b§àpåU—!&YŒ�ÆêèŽ .z›”¨ÌÞÇ{B�òmþ‹;BA<§CežÓ_u96é ŠFõòøÁ£Ñ"” Á¼êàjH@¤\nÔç)&TGIŒP`±, ¡²O`&ŒR2ñ!#f„—ßN&¼4JnÍÅL¦m]•ADÜ,ˆ•r"ògHÉ+2G´6ž=XŸcj -xHAÀ8Î' -æÿ(ÈI Q\sXT¦Ä±z_}ÀÖ@0eµ5”xÀW¸§w……áuŸâ4ªQ £°Z=Q -_¢~¡æœH9žAéF"”¿Fô™1ð÷ðk|Pá žz²ƒÔ%™Ì3<ÈÀˆx2Fè'�}“€qÏoë;V'ðz«Åp;2óW}büV—R�SJâÉ2“|qš¾@r9?…¤ÞA-r’œµJÏ”c!èƒxÖ/» -jvs"?Âhks2ukcèÚR0gæ}2tŒûîÒ;fì×q˜Ùšç³ëdc=¢„ÊKšòëÁ¼t,nD‘ß°yE0Pcì{u -k°¹±j¬ÈöÈCÈM²GÑÀÂV œh4VÃ`lTzÔ’LÅ•}Ô©5¬«°–ÍÚÚ—)Ô*“£ " Î’®ù4!…DqŒü¦ˆ„‚¥¥R¹âpK±î@롳‰(®ÛírE(œ_gû¸¦{¾zl‘¢ŸŠ¼O*Š‹mÏY´iX;àè󙘈òÇ~„2“` µ½Ücþ†ë—€óafªwG“ýDZ@‚•â-½ÿˆ%p& -J™‘FéŒNaÕü<íD¦!ª‰€Š}"(s3ñ‡š3 -s}2u<‡mkªIZúd¿£è‰VmÉŽÆí’AŒ´‚RœˆÌ¹a_°+ËDcùŒ› ¡¬MûhS|Bò”†Ý÷Â)÷î¹Ç0ÌŠ%7âItàæ0˜%|R™²û$6üѪ8˜‡…1”ŽÓ™·Òk±Œ¶Û¶ÊàŒ-PãðVÿÐÛ#¢~t:$šë…ñصL“ƒ„<‘;F7SÝGìŽÌÒ´¢ ®ôF«ÿ˜øW&{©(Åû“TÀm$UÑ!ö¢>âR 3`w0¤Ç -@9Í‹>óJx`µôD7Š£Bþ’=D0ÿÃíú5¥‰ˆÏeY~ÙG>d˜ŠÎ†mWaSY¯ØŠ&Å@öÙo¦s½X¡ôB(%È‚u:¼å¹žc*SND¤w"¨Ó6g'QqÎb¯ý=?ƒdjÞ®â4H•.NpnN™`Ëv"@•k"Î]§Œ™ˆ#:¸«^ídB`*µÁÐ';„æéÂý«€0øC?‰Ð¿-'±Û„XžÀŸ6ëÙ=`Ãêç> hädZý˜G6–¯utƒ3šÌ„‚…d…–ª0˜zTJ*oÚxÅ3t¥3µÎ¡mj$È$RÌ"9^x2>„]ˆ|üWÌ´).F±$9þ9|Ì‚¬x#Ö -8Q„‰z÷P0õÕZ¸(5Í‹J ³Âéx¹Wo‰èœ1®·dÇ'¸@Cv¸DØ:Â0eVí]iãÚ†^‰‚;ªŽŒ¤£&•úÃôK¹ÎJSRÜG û ²ênåIéÉ“vŒjÜ™¦Ê—†N¦-ÅØÆš†%Š”gǃäÉ9[‰/‰ÏçœW%B³•âáQŒàŽåD”io08Ÿ¬Ãȱv‰‚.N¦Ú„ì÷+2:m¢Dð€œãðžLÀ‚HÝñð\"(Ô¸³ :K%ÚÂzd°Ñ»Žét²ÊGùQ¯(GQ.xùÇŒi�cÚ""qY&î>i´#R0Œ;�é°}¸c:Käžà9„ÖÈ6o¹YÒWqºcJW*)R·‚‹î"6>x6“O2ÓtÏ^\RáU˜S2A8K¥Êý�´–)g9VËŠéäŽKÁŠ[Å™§cSÔ‰ ük-‡.lÉÈéM©__ÂhCäÍÑæÅ3sÙºª˜§iݘtágtA£}2±êâ#ª¨" ->4ø’qaóÛñfD¼Ù�…¼¿Ña`»(=‚ oOäUtuxÔ…N[Ùä0è=½ £Ó[Tei9¾3-ôzîúMü›dý¢«i¿ÇxÜL‹?Žµ£úØd*,„£Øl‘¢:ˆLÆÓsãü}*‹¸#þåó¼è6>éjT=)zó#§®ü<žR®‘ö!ÊÁêŸ71u¬7¢ÖžDÏ_èþ1Š )'ªç×0æß)Áù; »üu7�£•€&€,x(j—.™® LÝDaÛX~úÅ9³KÁël^½Œ ³Û -ºN›jN7µMAà ->—éiSk^é¶ùQu |xжÁ<¢mëÿg½\v,+Ž(ú+wÈ.òçØ#ClYÂC„l‹ ¡Æïµ"² -‰[ ¦©®{öÍ<±q|c•†O„-ô?ãÝ8…EV¾á/ÙîåŽ.È-Î]\ö—îËW(J0Ä4Inv(ÔxÇÑR§ÎwB"‚ç,(Is>âïã/ñÌDt{ÉÐÙ£(VÒëÖ+—!uÄ”ÀQ�7ÕÃ1‘I -º‰“×4 -GF6mZiA8!A´é¤×vŽmÓ@ -uí`8ÁC {ô#LŒ73|úÙ1&/®¦+HÅäÅ\!¼NŽK1Ørãø±‡¯ -áêÎ%3¦Í™4ã¦ÅÎÅ*%Yf¨”ZCèÄ(žÜ&=X†!Úá|Pm]?”î.êLÓté3òŽV–·ÒÊòáu¸UŽ|Ÿ’8õœ— Õ¦½Võ1¾ö1}''¢ûâ®#ëAA<À¾ÓƒìEwñbÝJâ²¼Ë\ÜÍÝ£s|¤§(㈉9Æ šN#v÷àZHOÏ;ÿˆuÚ‹UaJá³h>OFsš*\ˆ{Áû`Ç׌ÑîCµç³ˆ–$Á”_ãNEˇ1{µFT¸„©os£ æ}á0À.Ì“lÄ:ˆŠ @ó(¹ù¤‘Z‰7Ç+Q6RÈ%Põܨ)—ZI^“¸c£r‡.æþhãxVÆé¡€Ó*„¥ëA>{±ÿ<‰ãÀIj5¤E<id–IíG£fÊÚ„qÅ4Tô¨5›2$ ³ðà/(ü(×jNÁŸR¡?3çí_üýô³?|ùí7¾ýáû¯üùñ'>úè4-t×ÚÇOÿöáÇo¿ÿ÷ã£Ï?ÿì›o~úî¯?|øZìÇ?€ü3ùï“¿ÿN•ÇgÿäÇO¿üó“ü÷—ñÿüSãÏW_ÇGõ|øÕÏA’ä-œ>‡”Z˜}XÞ„ÉX‹¾;˜$ÒKYzE¥‚¨©±.�—.Ö;VïÒa<ÈÌD]¯™OÏdçSkŒ@²±¢¸e’‘óFßÐ.6AÛMÉ¢cÃ@Á ~~dÂí¬:$‡ŽéžÐ2VcgìŠËm -[QÕnÍ°9Ê'b”@´ËÜ ¢êÝo]žkìšk´�õï–JÚý¶¾µÂ&¬à–POš»zF“Ùñ…uÔ`Y7‚5WiE°EæDhÝE”W¼Š§s·§I6B¾QüÐrO`q&»‡{ª±ð~9F:ˆNzgŠYX']ÞÙ±¼\çe=#&÷Þ#Ô«‡{âõÔ³[†Oæ -JcÄ»>÷1"B[|@å¹ÆÜIËP»Ôx™*½u¥è)Q,SOÖš¦cFkhK`…E™!€D«;Œìõ²¨S/¥ã³ž¨SS¨3ªN¦ÍhÆ…èY’¢ê5Z„0ë+àèEĆTß6¸”#ïæš¹AždÂÈãÜo7]p#o„@+\Cö°ï’K£ub¢Ä2 g§ehŠÃá ŠCâ(묣N¨AèNC"/Jöå+,5øŽ¢¦‡o$¼¿³ãIkÐ3X¬bJ¹$‘«ô–Þþ ±£ˆzÎŽ”žQ3”þ6JPº%¦÷/û¹;¯›ÏÂK¢8Õkþ|{'@o!O .xýçïÍ ×öo¿˜]5im„U¢eýb÷"ÓÖ3hñîÃ9k‡€9ó¢ÄÔððõØS¢Ç£å5g Œs"è÷2C¬1^ÉCÍcF€@MtWÖZ‘`¶z"Zuê=W ®ó -ƒÑõ¢{LãF«í/@wD‘¢j_àöÙJZ;Kti°ŸhþG4|Öý5j9óÛ(F«npÕo¿¨x3vÖº^ò¼u]¯ˆ~ûl€¼«#úIÒ3J1{ê)§o®Ç§Š¾Âh×{ÏßëÌ'N uü#7ÐtZØ £è -¢ZúãèÌmB,Ó¾âUâÁ§ãɘ¬ÃP5oVY€6yyƒu{¤C%n–›a=´àÆУÑÿÄ: ôÌ ZY‰ºjPÐã•ë èuâ¾ó®×ä^^'LJµÆg˜_oîøV½Flx;àîx+*àò�•�Pì~Ýܵí°ët6µ˜MnAš1¾ -KÁ$#,ŒÅÌRsœ]Yêøí”rcäAfL-°4‚¿FKBIÄ•xoˆ‡Ý¡Ú(•öæî+o®Dþ´TL%+qH݃îeÜG€EqÀ@m½‰æçªáŽpÈéT=µ´ íŠëà]³ÙË…ý¦ó䫼úýÿÆΰAêúµ_R(P5h–'¡öt~¸ýà_l?bk|ØëÒ(u%ÐÑDdµÉ áÊI áÊ/ŠÉÁë69ýÒ< ¤–EU³ˆ¢æÀË4¿¦EŽ¢˜„ëL (˜d"<8wçNÈ›ª;š„¶¿íDQ{«¢àfJÝ€°¤îù€èå×ј(¡‹è½l+ÆKî ™à(+K·í™®ÿÀåÞ³Y2T.ü„ÚQåèe¼”¼™Ü"Ü-ŽY7Œë½‚Åñ� -À†åîÌ:P0çfŠÎ8e˜-éW’µföÂŒö˜Iuüz‘-¸dXÓ0;R1‡qb¬¯piÅáⶹôqŽTüÚe;ªjô@¡ù¹Ì4ü±LœY³ÚX!¡ZÌǃîÜò€WXg}Ž§“ñ!±Áß«–Éß/; rtȃ6L‡<–†ÁpŠ ËÚY*îz§6z{Bw4ë.8XGZyâBé&{žQ«þ×T|ñ;N"žî%(ëÃëATxéa͸ ->ÉDXnZC–xjÈ JÚÅub4 .H$¸ê&ÚY¨¥ÄNxÀ@8û¹eAdAÍl jSPÑŠezG+ù®¹šDä~_I"ô؉NÊäÃf¾@™†Ú3Y[ÆÓ›Ò%Nµ«[auˆ–áß—:¼)®®Ð7@7–=!b£ÙàxF¤:¡W{g -ÉöÒ‡Â*¼pmZ4¢$>e6m:l $½<ðâÐ -c íT ?v¥ª‚Ú8@±eXÚ×ë/€08"”ÄBxÑX^m"¤R„Ò·¨*³>kJ)T)¹N†ªÉ-Ù1®?‰ÀϬDø;-sgb¦Oõ ª !ì84 -(ôp_{ƒûw“h ÷´V³J®“{$/DÆÚV‰òRnhœvÃÀ¢ª€BÞ$¶ó«nŽkb0‡ëÐU±žô•öŽy¿:ÆÌôªúåÎyßêÒ¸ÏõŸ‡Pr¸l‘)§a¦äMÊbqë„Pì“”Š«ÈÆ3"_|y…owxã”ýEïÅ+èów:þjè$MHœ¯öè—‡67ô»÷Â.^§ŒÌ¯eı‚Xé¿Ð üu7sxöÅJ‚ØéUöŠ>€ê»Š‚‘uiÀAÍÙÓ9bHàôSE4ïFDÖnW3R%ï ‚nØo;aE‘OPÌ“¨…|æN÷äì 3€•-•øŽÐ÷=òòå7 =§7ëi=|b‘!¬CbE.9ÎЇì³Î¤tã”»%¿aûg„i‘àöš=}vzB‘ŒyXT+kOɺ£é‚e8¢ft(¿¢ß Å!׳Ê|Fd»’Y¶¢P°òó:£á¸?ôÏÊ PŽÿ΃pn[‰ß(é}ÞA1á¬Mщæ:˜3&~ÔW`àfßïø -¥¾Bèc9«íE+î×î5$Òˆ?Í&¼ª¼^? ‹! jñDH¨†Ñçép=ðƦ^füÒ™¯ÆqAгÅíR)gU‘ãªý„+¨œÌ!òë+DÆо̴j�›£ì8l*+ÆýÊÈ&ÆôIï&Ól)Hj¶ -,x»Ö¤Žˆ”˜%Nrc(‡ˆfö¢R° ¯9»®Úð÷_ÖËìȱݢ®´ÀÅn|ý:§ -ä< ¡E5‘K-™YWU23t ú· â–#¶ÁõàÚš@ÐÀ• …І£ˆçTt–f½‚;½ —‘*DÁ¼q›hA½bUI`ÉëSzK¤ruÊ=V cÖ1ü!OØ©¥ØxûI"™Ô Àtè0ç<†º'ó£»T$Õ…›ùùß&éÿ9ѤШÍSLÉãI††á‰‡†%«3»CÌ4—õ1ûÃ|K ó9J({"@†¡ùÇQu¬Ã®x3Ö[”4¯oó1Pì! -·v¢Bõ@ñ]ìÓldsƒ8§7»ìDÄ0$B’ÖÅr¿O -»jÌtkjî?[Ü`µt^£7l߸#:åKˆTZÁͨ#p‡¿Ž5gªØ¸(•@A+vUï„k§/ÐsóùQ“A0IíL4Ⱥ0A /[©™vì=ìDEõA%ËG]ÔØb/‹SÝShN8¦$¢ƒ(×A_2SÏ:4bMª$#Üy¡½îK|•uPz›DßpÇá°%ÂnéH+ÃDOÆæ^ÔnR¬êþse (ú@=lPi-÷ùyÕbj°Kù8$.iY¢±‚™æu€²˜:À3»VzFúrE³Fv*šH|ãj(Øļ~&ÜY¯7=¢ÖEmNꤿIyKõ)Ôc 7.Ü› ñ¨Ž*Kb >’wþ»*ª?RÏx1µ×X}dªck¨ë߉‚î0…WC³ú¡ßVÐ'õ芷w¡E¤{šü×qPoÅÕ‰~#‹ÀlKÌ?<N±?aøsDŽ…í׊ƒ§†§¥ö7"nÏ~CO¥ëľìó5꜇ÙÍ3QÞ€š={½3‚Ž`ܬÞß–¢¦uŽ‡C Ȩ^™d!ãÏŠaKGO#¡Qă+5:úÊ '%ç:.x']ã–z¢ú¾(Ä…¢ãè]GÄ[Xƒ‚¢^Ì`ú‰ ô(Lo[LAôZ‘pUŒÉ†ÄeࡆsÍ'ò©ÝEñ"Þ\Iƒ®|>ë¯2Z²,Q#cõË&x«ý‡Q‹>#HrÁÎä·à×ÖJÓOì<tU)‹t6_O•2PT–®`@Õ#?·[AHra?Ñy?²J±õ¶.l¹98w¶õzÅ9°Måq -™¢(¿À="Æn'µÄRF ²dý`æ颸Ú÷>é`ÿ@‘—yrÊyŒrF™°àPëEîŽS«˜ºq{uÔOD€ïÆB‘®µD(º mˆš±f¬µêHuû†`Æ{dGŠ8Ü“þFá檺µä™m˜Ìa3`QFXä4$0Ž �%‹òhæŸñ|"â Žo(’;Æ3þe¬ö¼“!lÞl$)öt7õN½á¤ï®w‰^D)Eìv*.Sýt‹ÚqeƒìX€Ïžéƒ‘?‹OÄ«åžx4MS¾¡`ÄßlîÖŒÊ=XM _©ù†pšªê?õ—$ªîDä ÏÇ°çÆ'GÜL!q?®¼:Ù!eµ®(ªr$–üDd¬(½ ‘]™SÖ—} b\9D[jó‘é¢zIÅlC÷çŒÚÑÉ¡Í='v–ï y)½äÐ -êâÝñ¹¾‘ÌÉ´ÍÏï@à‚ªZä~º-“ÎŒòÖŒ‚JÖ؇q7÷i1Ýq¹rŸOaºê2ˆeÈÕ[h´Ý‚/à°$À§æ9Ø?ý:n%‰äßäj³¹ u¦ãáv„>0üñd´idá÷çl§¡D<‰pÊzy.£Ýøµù‰Ò¸´ŽˆNQ8 ˆ¢áþF`cØCFzî›>Qømö ïrJäw§)mÕ°¥O^2yŠ/‘«@Ð}Ó¼C8\âî?^žëà„W¢ž(³ûÐ%Ú>Ø€1´JÎ8¢çA”šB÷ý>hÓëjµŠ¹ƒc©°¹MzTœnË«âG„SÀMŽÁ09d˜V|Ü÷UFãDŒ$b>¢ºÚËíé'.Ì;Œ/ñh™&Ú”Ê'Ÿâý”)çc~^“Î'Š²Ý¡EH`K£I¿k!1‡^o-;Š0;¼©Ó1‡‚Øåñ.m<¢¥Íϯ}HB œ:“‚³„:·Z—¹-'ü»²ÁéÎ<Pižäõ3ü=3$ýš¨ÁêÅ“'²,ñàO¨n+5t×Ex,�b…a 3·ÕÔíorÀ˜Gg?!îóeyÂŽ¢ô‘¾ã, rœ¥åúÄWÙü@!@¸À®�uƒE1ai’5§ì"íIÍ(+L'?h‰³¼ÙªZ} ºTû�sEôb€SEp¨C{"iìCíPÉœÄÈ�Ááóã?Qúw Še…Hâeà1îH›CïîX±¿A}T’!»¡£Aû„œª>þíçÌ+AõuN]Û—ÏÄ…´`¥càÄ6æ̃¥~I…v&¦šÁºq…)›[‹Xe:#î vAýbúL0Ȥ�Â~+£¿ÎYÑ_ -1¸ª<HùÄA(ÝH󑨃?ÿ ÁÑc⡨X‰àõ"šrˆÆ (¶÷AM3KZN|´j„Ê2”,pˆa°"|" øÄï(¡¿Ã°kÜݴĸΊ$•²rªxWPdþÐ9émúRÌ´.sÂQT•ëþu:`J‚kµ¦X¥9cLÛNÇ% -åÇœÂR‡–©QôÚ‰}xsÞm j·2´€ŠîÿØ?8›Eé(»Þg7]CýùŠh1ibw¾ölq@‰bú, -?×îIH.+HÝ;í,ÜŽ£×CÍúMsÝ’X*%ÐÒ>Ùžì«7èD{êhOÚjºŽÆƒ3±&lÛç/A×òÃ¥CÒfÅí6é_÷¤yÖE9n¢] ;‰2eá4, D -è9–�b¶$›ƒºÊŽÙ'mme>Ñó(ˆüoÈß¼òImh³YìyO6€ìdâBS¬¯M"eAÈQ!¨Xd8ÅÉ0QaÏ/|¸Z Íݸª”˜ Ú£' -.�Õk4*9I¥aªv Øoˆxª)чÞtªº€Ž{�ö“Ràs,N½¨cÅp X4>ǾM-j -o -¿Eæøå@{„lpO«(œ«òEÌÐLL -i86 ä¹~Ý€cÑ™QÕ„Õ…ªŠ¸Ž—Džã��B}7îpûÍ>(zÓÙÏ^{.jŠ’t(~epP¬Ci±NÃï@à-há½IÍM–3åëkÉÅ5«eÁ]ÇÉ*Më£çç(ÉQs{,D\à™·|b×¹Ø|§‡©Á9ÒJÌ EŽ;V_æ~ÁŠ•ß ne’¦‡a! ëÊu²ë:p¢K)ö¬wùÜî·"¨uXã&8ÆPš›–kõðîb|™|¼~þ›U†Aˆð<u2ž÷7lEKXU€ö‹ ƒ®‘ãïuë^K÷š—îþ µtáÀè¹£A¤™1‡j´\œ@èE«ŠÇÞªz"f"z{½af} ¤¤ÙÇ̯ &EÞ¥¦5‚CÓó-ñbƒÐ?ô_ ¦¬ážŽ“'uÐd%ý)¦°ì?êƒôÑ4ñ#€x[“Ä›¶á®˜Bô'’"‹öx,ÂÀ\Bë¡Ñ5PB"Š²@SîϺñ¿þåqfšX4‡l‡½zâ«]ó+neúp¸ßX -~ª §:ñºo¨Ì#Gœ¯E_‹p´ˆÇX‘š¥¹.»ÏÖ÷Ž¦1ÕÎODFþú´Ïá °w<¯ -Ã4';›®¨ç|ADfGfv]²û�QS5Dû¬Å={Þs+d…Ñò?¬—[]GFÿÊyt"8îËîˆ';A(ažF–í KØc™1’ÿ=kUï3æâ…$vfvUß«¾‚®¦ªüY¿³*˜�EórÉ`8Â/ÌR{"«À¸ ©¹ ®7M!¡!Š‹€Ë]ÂÿgB˜I:ím¶¡G@.øÅ…¡ ‡Ùºóíì�ÍŠ@¡-ØÂ6žÊà‚ÔQ\0VWY\zd©8·øÊîð]wæ î(Ü#L4©ÍMj²þd"à.<LfLB.#Q®´·6ëQ¶dñÀÒè*e’…ˆ‰,ðºÄ<#Ç<ƒ~œk»ÀÀ°HwÔ¶À�€ÕÊÝ=,°8tÇãb_̪ŠEj -Ýcž™‚O¶EþÃyáym¡ó‹›ÏosŒ4º‡ÁáÒJ0m‘ý£hBÖL™fV9âxpÝó"*.ßÚt¶ºÀÆYr9\P¦qŽª9E:ÊC|@lVÎCuYYó8c1 -Åžv{;-µþxª -ÙÎ…£ÃÔ99|‰«�^qÉàãØþuuÑ(ba—Ï9·¢øR!«yT¨þ$@q×› Ñ - ïUÆ=Jl`WÖ™@f×ó@…l-jpåêm1jî—§çCú«x4Pºtúu¼—· -+!�$¦<¢WL-šŒº 7Š,Z„V¡,èÔÈÐñšìßÏ(öØE©+©LIHεO™/KSÙ‘³$ëYך�BïAŒë$`w,Ä¿ÇÛçýX Œ†+ÈÚÏÜoÖ/ µqšmws-O¨ÔuòžK¹C[Z¹(9EOê<;Š›æ½ŒÎ>¢!HOŒ\ZµÐÕ‹ïîúqƪ)êÚ¼ÞtTIÏÂqv3RPôn;w•~£ØûÆÅ¥„#¦”±»=s‚ÀËûØ8¾nò™IªÁ° -Ä&–a0ùÙËœX>* tü¦Tœq‘™%”æw º…Vh@3ͳÖK#à: Œ±Y‡Œ¦F6GÓ‹b%Ü*烜¥kHh£É8-þÊžˆŒ±2xùuS¬L’U Wó܇¡Ú±‚%p›âCÊò“¨^G½^ÊåM®²¨Lßñméïnž:kcöø€ôä‰F‹#í-® -¸tÓ¾ÉÛNÃóÎÆÇȪÎßJšWºd‰8C¯¥o|¶¾æsŠ9KÞC?8œ‚ò¼ÀˆYVˆYð×z¹f•âc[󌺆³–¶!ªi€Û‰7IÖ9Ô”)lÇ´îÍmd‚â]?k¼¸)ä¾m1ŠBʱ!Ç]îQè›V©?•´õ>š¹\ÚU–åYøÓ$©?(öâz¼í¾-/Fa‘ó’1ƒB'¬;kKè1ç6Ú“ÓPwJ¡4å^g*…w[ -R«# †çÞ´§3®e=ðÒ�ªÑ1fMЬ¢~‹,èÊBªÿáØ[æãhÜü"¬TO×û9J‚ó—½…e½|çÿJ4&À€]Í%AÂû`HVŠJó0 y§iù µæ‹&µ*Þ—½ <æ¨(Où½LGs$Dh6Å -^Në–öÊØWF÷ÙsèR›³À¤Jy£¬rG£åsˆ–ÒË╉~Ì,ΟBF?»V-Ôf² ¨¿„:X²³Ÿõ´ÈÎÌ?ÖK'÷c3´Èrf<‹#«¦°Ë¼Hõ–bJ�nðöÈWÄ‚¼D´#véDvõ¼åª‚F˜ê -É[‡Ä€Ñ¸áe ÛpvËãœþæp(‡ÕæQíU‹™Ï*þ{¢ïÙ†ªº!œ1£UuÍö(/¥RAU;F}>™WŽOP›]ç}¡]‰Ö]n’ñ´XhCšñ*¡ñŽmÀÃñžräoªwò,Õ³f�gKžx£–wʘO</‹ÀÃÍãoº:ä$/ÆeÑÈ䀈‹ƒ8ã¹²èc"šØzÓ‚`VÔI¨ÊÍOù ‹›„)‡†Àehéºd0mD5óÆÈþ8ÇÏüyþâóÝ÷ïßܽ¿ýøúó×Óoøôì×Ê5³|szþ—»Ïï?þýôìåËoÞ|ùðãíÝks¿9ýŠÌßò‡ÿ¾ý‰¿~ú?M–N4~;¥ø÷Õ×õåôê-?ôÓ³oN¯þúß˧ç/ooÿqzöâ‡?¿¾»{÷ùãÍÿ¼ùñݧw¯ïÞ½½aÀZêé¼?¾~ÿñæ»ÛO_on¾ùÝÛ÷w¿ÿ|ûåÓln¿ßA:½xÇÿ¾<üøíúùûøûOþ-wèå[}VâÑ%*–·Ñ@S„ɸ¥ÞA< bªDv·5õ¤MIVš#šS®˜ðæ•1Ç÷zzõ:ö‘y‘@ÕtÝ"´ÉŸÓ‡¤•Ÿ°Î#�àNÈ”jÀ-E€Š’Òö‚}ô p¥¹ãpTa;g6Ф-ˆ¦žé,… ÈQÜ@$šdPókº˜@.äºØ`W à×è°µ.)e¹=W€ý²!‹HÅ„ôêÊxÛ•ºEëe°sF€„5ù¶m1¢Óº1ªYÎAà˜€QEØî'•€Ð½u¯ƒÄìàq¹'Hžæèp|Þ ©<•MÎ,<;1ªA}>¤ì<!‡“ž)Å´à«Ò:UÃjé«;âìŽ -ƒ¥‡7Å´íxrÙÎ%Ê…AAg�„”úî€þø‹<‘cë -zcÁOñ™b1X Ɉg+� î²åy^&ÅÖdxEG5`5¶Ð�Õ´Z²Tr¬²åµµƒA·ð2,€ÎÙ•¹4È|§¬2¯1dÛö—_XUº>¼ÀèXê’ÜT3€¯Š÷ËEÎu÷1iç!ÎÖŠ%‘ÛDäMñÞ‚%(4pÉgºäú{ìð·®Æ'¶8$=C —.eiŒ<z*û´T9jÛX¶{¦?�3woÞ�äJ ¶âýjrUY+PZj—Ù€¬1ti2b)TKG Ϙ…"€GÈ+�sÅlÛѽhÌx5œwÇPŠ- ¦µuÒ&dŽÈQÀ_Ö -cIð·–½zQÉÏüœŽGðœZÂþèBؼÙN/%_¢‘Q5˜‹ë`byÉ -[MÓ“eÁWôdšÓF´:nLH»Iíamk€õ=c´æêYJÙÉsÈ -)ñ•Aþ ¢x§Ó¿D0[<ª«. %lŽQ}Àqï…@Séæ - ®Åjã»õ³êšA�/‚;ÖA¨˜#�E€D¾×4ûš ‰é÷ÉÙèMî'±€ŠK(HÞ‡zÞă‚‚õˆÚ -ŽD½=8hY…ÇA$vmÊ*Ô¸4<á=¥`.Ôç:¢ÁŠÎ öÂõ{ŽB8|‡?Z|׃ïžfÉ‹dÊÁñY¯´dËÙE¦Ÿ&Noqjn¨KªQuqÂ]`|`1í¨CŸîžPß ¤Õ¨-Ë1Ìô™_y¯–ë #FéÛСÃײ6jO8ˆŒéy :ž)2únŠõ}Í¿Ã5f¤žÖüö§X‡íX©œ“*ôDÖJ&‹¡"Ì(”ˆ›.2ÊL‘2˜PÙ– ¥8?Å:X…cA7î^�4½†=îùPWW`8ÐÎ`Žd+kƒàŠ–J‹Q))öY|Ì(–ñíèºÂJBæ‹Ùƒ2é/ΟáEtHM¦°ûâ lqmÀføÍ‘wy -F®uJÙ•Á¡!Vªçàî¿5Ú&°�{çPØ7–#‹¦o½–H¢Ÿùa~«Õ,®ÃÅéUYXŠµ=@&2è÷º2¢æÈ`g‘‘·Ø#ï”Ö^ µf†æX jmðLÛ©L;ˆ‹@³M/bÇŽráíLÁP¢˜ÝäŽiúÔàd<ýÿh‘ï. Uwœ*Ã1Ѻ§ÚÅÀdW"q°/Ž¬íß„—Ù‘#1]‘¼{Ö‡µ3AJ3Ó¥ˆýëP<@àj;4iœMÂÂà.M¯ÕB›u3Làe†v”€|zÁЖ›ÅSðÒ‘DM¢š{Çש³Ü°qj¿Íc¶,ñΔzŸõþ®¿Óµ¤´ËÈÉ=“³™E¬Å¢Šü€ÕâÜЦ °�%*üÁ<Šî3§ùÌBkà"€ù‚Ç»`Ì�b9h© y¨¼ª‚oÐW°×DJ”)·KüŠÛ¶HPŠó)ì}V£ßfü~É–²÷ÄêLÆ*î7¡\#°§G`ZG,6k9»°oölë -°�ôd§V£ÞL~åˆ\°ÆÈpÁ%`½ z‘ÕŠt$Ó”tºU†`6O‹ÇS`eL%#¯ÍÕ??S_êVPË{aÎbŸ s¾Ø9¹9-†0¦¤:Ô|Ó#Èn¤ì¢üúý{\k#”Ù¿bÜÌα‰2ÂM¨ÕßiÜÚ|~ãž'GŠAè>ø$ñ¾ô½ÄQ™¹ƒ4¹l¾ïŽjCtE’'Á`ðÇ@ÂQî øY+îJ�Åõy+aÚq%–q€ÆK@IêžÚo�Am ƒ«ª¾,–kÜ•åÀª[£~ŸÚû ݽOÒX:ëTþÔ¢eU°äÏï\4g‹:R¾ãDð §uº�7Ï°šr*1Éö“�ÑL]^¼É#™wŠû"õ»®Ìåp@ ]ö?ôs“ $pðå×Om¹+ œh˜/Ñ©š6*„c·BT? ¶¢ˆ¤e5 oÅG÷!èƒ3•˜´ß/´·ÈÚ -EžÒ¡%ÆY -Â_Ä·¸A¥µ½APt:æˆázWÃçćlô,²JÙL£ûöó^Grã:oÏFdáéÐ ~r–YçCulÙ©Ð0?U§FÓpÐNoÃ~à,{ E²ïPïU¡®rËmV4ü€O“6…,lNdŸ#Ö ^'t¯'#Æ>I:‘ÂvǘÇ@ìÏúð§ëÃ3ù”ŠCìµãk‹„5|‘-žU3&’ì�nm±‡ Cݤ'ÕßIðnuX£ž™Ø€ù÷sDîì®Á¶`8}-è¶ òÿŸ“ßr˜ PB¨_s38¦Äâî@e7¯‰º¡aZå§år-\ôˆ¨Â#à9¬ÒÀšyÈ8 °22¨)¿n(É!èm‰y$³ ËÈ¢òçÜ)ÐÜ,k GD!õž©Ç¨åhc3†Ä9¹Ë5”}õîT>d¯ã2HŒ³DÁçË®0CÅkF…Å"#«?¼«dJÂ3‘¡Ø»@×ò8¾…éò*z¸éN<ku§A™ ìQUYUŒ÷bªe…¼1 d0;ͫ즬‡ªfïN;¸Båçš´c‡^VþÍà„ÐO¥&8¼òãÚ±ü5.,šÕ'Ð@O»"kVÔ°\‘½)Óv9 û°ÕœôTd¸¯Uè##ÞˆŒÞ¯Êˆ¬ †¤'T[:§ìŽc&Æ!~öÏ�äÉؼ¦'Œž £¼¯£Q%4'jœq:ºRœX;š7:‘æåÝw0¸@.ƒËÏŒ–Zø¼wùÿ "+݈/IÐ…×ç¡û´Î<›Ó¸ã‚¬TU3*;3ä™È ™° Miø\gªî¤wš~}±ã]íM&€IÍ3q7ب͞¶Çü@œÃÉ;°Í:ŒçÁ° 9 PZ6òÎê;Œ -/xŒ -׋ÈP¤uç„6‘BÐ;Áñ½´‹zfÄ6Í‹e¢}°e¹?³|ÝtÞÓJŸC.ˆ¢FáÇÒË—žgAÞ” -ü4×?9x7ô®£5šTÿɲ{Ojš¡ðËÚ¡ð¹�¶• - ~cDû3#n‡°F81DãË:Lq -Ø–t—¨ÉhÑ–õÅ[¾-Ý BÈe/ˆÇ<B“g}¼į̂—†âYͺ‡jvÞ`}f¼Ûk¤ítä/ë¨ÎTî0…dQ�p”‘z¢WÄ»‡†f3Gˆæ»Ú=²Ä³ÝiV«9•w‰ub’Éà§H¨ØÞrEB(-f52€<Uµ[ŸêJ䌬X'‹¦2‹ìX&°˜Ìa; 5D‚¬BÅ÷Ên÷FG!q&ãnÄC{¨ñtd%â?UçDQ=°w¬Ã:I"àé*ÞñLµpöÈ8]…_åËçS¦¹ê¨Õ|¤r« Rðû–�«8êôùÊù½þ#(é#‡C½Ì+:ã<='?ª¦^ -,îÊ$™?ú\å™qj¶ŽÁÊjú’ÅTCCP -²m/Û€· B‡ûÌØh¤äë$ÒÞ¯ó;K\àÂÐ2¦ -«'æÆöm—O^ô}+vÓŒ·¦@úGà=’9J²`ÌR¾|Þ!l'A;П?‡¿)Ûî -{–dË+ƾEµ`œþ£•‡oÒAµ¢‹39™ˆŸý%p -Dëµo_ÊœTT%´l¨¬~UÖ–s»ÒGÑ!ÝHñ/Ø2ÆZÐÁg;ÁÊ -øœñ9Ú´šÑÖj‘áÓD2'2økíP°ù®Aï™aÿ|vB“KÀ†ö°=°®ãòí?*"3èK´AePËñƒkPŠÈ˜ý}•Ì=QãŽÑ`zÏdF@àszH°n;Ôø¼]Ÿ¡Ðõ”Žæ¨ñÌ8:¢E¿|ÞÏÀ`sáJµq%Ù9kŠzþ–±ŽR Ë{¿Æâ™ÕR(•-pÀP¶LkŒð‰<wLdŒ7qG2†äžqõ-ÞÓ•a¢t“¶§À_1b±L×~�4hÛ:1MSÐ%¯ÇTÁÒë³n`¾_ñ,tT§C‘ä}–jˆ!ÍÈÀp53jOïØ÷Ä3dD2˜Ÿ÷Ì£ã‘Ûv^¼µ½E}Œ•ÐuˆI#„‘r'Æ«,›1¾$ðV¡*PªÙ%þsýÔ¿Y•ž¤}¹;<w$)ñД°/ROsh[²áïú¡wàÓ«˜˜8pŸ¾âd?¡y8L™XmNÈéÃjeöb¹7îuú�`#Ÿ„Ôê.š_8g‰öŠáÿQ)¸l©•-µ@d�½IŒå¯¡0çh}d±÷‘pÔ60:Ã[t]{®B™’mMÓ×â3Ž}^³ -áï/_ÉîwVs†QŒ^ÁxQóe4œ*‹ÛL' Ü@và““©AQ�%¼™²¢¤hþÉÐDéZú¡fŒWÃy¢E‘_? -\[®S13£P•<ggÑt”E¼½j†aà°6ä-b…wÀšàêÚÝ©Ð2nh$úQ -KÂPƒQh|SÚþþëWX“@êIBþ˱Âp°Ž¬¦Fcʱçkƒÿe«gÜgˆßæû7U -µ£iN²Öqt>qõ çЇwµº–«)Ý™ŸÍ ˆk�b:^ß�³0"`=PÑj`g¹æÖ9‚ìI=¡;,å‹�€uö™H?o:9´efìãcè™Ûíè:.0_ˆ¢ìǾÚéÌÊïEg*¥ t—}fÏúOà‚f#Ƙ+³w?šz° 㣇zlD`†¶€N°ïÕú,5‚«IŽ@´Üw¦ãh°ʌåŽQÂSŒÖ„ìu9DFjm‡˜ w¹½.åÕ0š1˜3N‡dÅS½˜1„6÷¡Õ$ÀB=ϸ†˜Ó£óWëÂ0z…Î× hnZÁÅæL $Å_¿÷ð#´[Ó"Æá>A A×À0Ô™W’C(Ã!8ÜàòYѧH›àZ‚tPšhôä—‡ïc|xìƒo\’~µQïÏ®]4‘ÍÚ©4ÄŒ•¡ZMEê´gmNÚ«zT’0Q`Yÿ£»Üylˉ0úWNLÐòû"’"1ñ2Bø÷¬Uöé¾ôîѼî׶Ëåªï¨!YÙK§ÎØ„íÝD@«'‚Áˆ”Ï1\2Áýò9Þ5&ÚŸÇô>lÒ¥ƒN29>§8›åçÎ]±Xêp’¿¯„ï€Sìn[éÜmö°¦1æ‚K>´DU†@Z8qP0}p$ð7�G=Ä•¿˜Pß‘¯ÚrqÍ~k‰Å!º ßa`§EGFÍÁ½h/<Ñt¤i{°ÈÀÁùÓF¥v jÍÔ"ê´ÈQZ;'¹‡'Õz"]¹õ)T¹>rŽOKõ³î¡”&M£oèЄ Â<µcÌÖéo0Q‹‹¢¿S:-âï…aÙJ%T›Ö%‡ŒåÆìËë;kˆ§jr&½ïûý÷HŠÝЊÏo`– ·r°“–ÇþúnR݈C‡<ïbkˆDrÂÕ"ÃÜ ‘XiuG�Qà}é¾ %oÆû†²j{Fœ'9,lúÃ>>"ê-ž)‹Tèí©ð`ðCÒhVj@óÕÿÅÕF@› €É¸I‹ë(Kì¨è9ÙŠÙŒT€È|È€>R¶å¾ê¾tth¿Ê~F•Si12ö©)J’Ô '¢›'½=KˆæÃ1œ' ÃØEóyPÐ8Az¡“ŽB:bxlcŸQBˆ¨†UE¡s@EEÀÌ+¦° <âò^Ÿ%£u8FTR*[)JÑö!.‚i~¾³ncDƒ.ƒLjψó&ßÔÊsìeБ_ôfäR–jX+³ü¯ßîëç«6QÚ!u0{elÂÍxÜŒ»°Sá'x_Ú€ý(³Êw&¾ÄAáF´j¨-Ùø±ËPtÓLÂ<X¥¯+š©ƒnTYn¯¡©¦F íOQøzS'9(l`ƒD�ƬÉGCµ$í,†pªËÐð1Iý‡Xµ4xaYöÍÿ5ú5� ocàOÚ“ÖÜBñº:~'4e ”GÀ9ãýÐXžè|Ô£¦3¢TéDá‹fl â8ãDÄl کƉÈæÉZFD�¸¤¯“"Z@úˆÚj5¦R®Ž}º°HjÄ› Ûy3#Ä'"$Ô#Ÿˆ¼W ŸÛR*–ÐàTjH¡>M-ù±G¿@*Ñ/üBÃ,ƦŒÌá©ÒJä×"M±÷Jߣh"!(-T@ ¬•½:=¼WWKd€›€Òz@X -2Ÿ¿_9D”ÐÿPÎ3 -O8Š_ç(d:G‘ÔîïIyèìü„0¦T— Ä{I“K¬Í�Õ²`E["2x—ªÈØ¡D¿G|"E"O–>÷ߛکÎô÷“”:šaó̾‹IÀôDm:¶SGðôžtàÃ(Žê…àæÞ¸@mLDôn.‹FŸ&ˆˆ~š™“Bž°m´J2‚—ÿ:)@xÚ -îëÂp˜oÆ0¹ ¿jå-à°4LÄñY§PÏÓË:ÞöÉ}ç$®)ÕH¡ìˆš""EPÜcÜy–”¬o±1ö3Â^=uQÁ^¯óŒZ€æ2c*ÎY¼÷V»s=úÁÜ4Æ84/ZÃ7>Tߣ»hç”Ëcmñ¿À:¿ó1æhÑÐb‰ w“‡5¼Þp9ÀW ëBj4@ {‡C`—E_¿ÂÞa§^ÙmpårÖ]aäÑ ›ˆò†rÞQàèG3¬£ótCJ¦Çaê’PRŸ‹e(Úf(p)%ç_¨¯ÍÈùË6ˆí¾ÁЩ¶`&y–"67 ‰`èè!Vbv°yŽÅc$E-™»ócJp@Á¢t,P%:�+æÆB8Zꄆ*.T:é½ÝŒ7±ˆJI!“âWT»Ä°™YØh(Y0a{ÁÀ™O+ä%?Å">Ƴ`m¾‚{[\¾Ïu¿,€Eó&õùÏÈo’3ôeJrʺº¹Ì?Xpè9ôÃ"®j„>âHä�ÿò>–¯%û[[Ü)O%zÔý\üë9«…c�Þ˜ÅkɆE‹ÔÒ!B/ʲz/@‡a¹gGä1ù¹äWÉ”Á…€û‹@@°O*ðu“œ72Àþ>yD¼C29]O2?ìÓ<PbFUè ÔRdð‡găUâ¤G©Ãd><h\vi!Q0ƒ- -ó£k2&àÊ5 â}-L¾× üCju¦ˆFÕPð¨"!+"ð8ï¬áEå#Jè - -s2?Sëàß™Qä@œQ¢…º É# "$)W³‘ßÅ!`DÒJ¤Uµ\Üsx -ECþ~‹}Ö²‹}È$bìÓɦ2ú‹¬ÑŸ“m -† ·P¨[y¹*/¿^…6QQ~ÿÝZ£~¸9Yš”«>?æÙ€ lr¿"szQjÑÕuÏÌêhMz»€øŒ’×@ø‚¬ õ†½mk¼ 9†¹¿ÌLmEfˆË/¦& B ŽSeHÞ@O6lõ! -I¶tð6õgèIÛÚ4&h!6§^;‘Œ–J”{�¡7 sµéÙrÓ?ùçOã_éõçøçÇŸÿâ½ §WŠ¿þþßÛÀúP¸÷ì`[Ò.0Ëê¿n<ŒbNGDÍåœw‰ºÇ¸`<Kìà GÄÐfQµ©Fœ(½0'‚Æ4qwõ& ¨šØcÖ^, í(Žw0¡)™ß˜sA˜" m*ÃÓ´=¶!e§Æ÷i$¦ÉùýöjÒÃŒ|‹i”|üUìa;í˜(ÞÀ�:ýl_挈Q…°Y<jج_öG…T£xÞ%™jà|±û8™Äñ²Y/%RmRÉÝê/Ì(Ã\Š§CPÙ6!%ø!ƒY⢻P„ ‘Æå8Óå« mŽ3ýÐÒ‰<”#ùèPUO@óŒþ¥›»šLÓ²Q6zdsB/2¶ŒÑÞ -ÞØßG¬OI=ˆ„<—²ÒÅÂg¼;ŽãÅÌÐ*ÔŽžëñ»\Œþ([ýRw drÈ-™/FÕzæ6ß©kÂoi”²/>×gºà\XÌ—Ó¤Y@õœFɼñdWÑDTp‹K"¥q(c|Ž*àBdßF»3>OŒGD€Åˆ¾ê€â€·:)ŒÌy<yU¡+¤-/Ï‘'š›¤T²©–‰"½¶€‰¸=dã–/zëÂæP|ÇÛ.iSà šH£ÚÐÔ°ùÄÎæq‰öM+1ŽDCÐW›ˆ ouß�¤„‰º0yyw¢0y…íÚnÜ -hÄa¡diQ2ä&ÌЇúÍJÄ‘ub@ -m¯ã²Øo̧‹æ¬Â`æõŠè ¶Ï45¦£y%R¡â³ÈŒö -sÖT?`cRù+8Ï#ŠíwD!Í)�SP͘ÔC7B³u"˜E# ãy@áD hë9‰†õ$$Øú<)ñZD1,óœÄ…»Q�|}”•FÔ<ÎI¼‚'qùrrI¸³ØCú5PÌF,Õöû¤}ºÆ‰;•ÛÔ†§ãy4gݾê˜" Ý+-)ñê! xuž+ñlI²2ÿz?? -6[âJCÆ|‚mè{äRÜ®êk2ãŸh8„#ŸdOÊ&CDåÝPðÌ7iy%å¡É’@Û—šÇ¡«=ò9íÄA5s`›f‹ƒx8ˆß¸’+®Ø=dç‰$Û}£%NAqîùžÈò!ïØcs¡Ž‚$S¢3ÆŽ—V,¢Ý«PÐ[ðVÀð¥_GŸ1%ã -DEµä€ÂrÍ¿¸[WBX\ƒ0Æiž„>OÌ=‘‘Ô–m�DÌÓë?± ¢ígP¥Q”/à tï$›A±Ò]DTŸ3E�¤Lp}ãešý°Q!;ˆÂÍÝld-²á¹c<s[—Ñ–dŸ¡FŒ³}Ú^ô¬—˪f5F_e´ÝIvn:òòúÒé -M;ðí]«*ÿq"ØÈù+©Tª¾KåaÖ!5]ƒ"Ú»ayÊ1Ïܨ´F–cG5QZ÷CïõÍkçùA-ëVÖÄ?ü«#7`ënÆ3HÝycF0Œå«¼Ç©£´pÊ·‡Å¹Q@€ÕÙ- ózç,ØCW«”@üýfÐ O¨œyzÜ-Võ£ƒ‚MC)µ“GLĆþŸšì¥ò¾úöã§>¼ÿôá÷ß~þøçõ5?}ö%sՒϯ¯~úôñÃo¿\Ÿ}÷Ý·ïßÿñë¿úÙµŸ__°òþ…$üáÈ• 2_…K£yy0›‘(Ü7e JaNËØ�¡†TÐÕ)Yx@yÑäÙ7ʘç.¶BlÓˆ�]¼(<Õ…YVD$(,Dëžàâ(ÉW{ì&p‡>@–å‚"ì’œšäŠæ4±I+tf¬@´¿?”<Hïp±Pðèïîª6O–žY´sÆ'3i(ËïÈ㸋˜š›“ ‡ž^´¢¥UR·£úŸ�£uªÉQùPi°ì\þ5¨~ÞC?ɇ€ú}ð÷„chÑ¢ÉèºvG§H~TŸ¾Â¬qU#+è}æ9ˆd£×»åŠš·ÀÁ8l©GŽ³êŽ¶˜¤Ç¢Ä*z5Vé&¥JèI:>V„e…X”+ -ØÊŠfW€Î·+ -óz„?úÄ%ÄA™€Ø½BGO’'B/t -éAatAÐÁ�, ¾/Ýü¼{ôê»uµBÖÍ“ºy©NzH=~CYá ñ®èèë?gäûÿq,‡X‹¾+ªˆ×)﯈"Eù"�ZíÜ¿Ä. Šß‹Õ�Ž3²ÑÕ YÃI,V„`³"FdÃs¨Üèëøˆ@C¢ÀmÔTËe¾™Tbàår'`}iwVÕPÁTkº�j}èÕ h³ŸQÂõ9Øa5â«É ç„xÆ*È'… -ãÙ/ÍŠ!dä2&=fLgÅPgf7é¹ ˜]ñ;`d;øV@—=ôD5ð0´oÙªÚ£®àzƒB™G¸3Ù³TªÉ_ ÑÈÀm?8ÐÙ¾³Zà#½¼(Ð1c“šÎM`Ö¾ÖH¥îÅÿ¨°LŸUM`²¡÷¹H±9ÊjãÚ*Ué÷f8õ° Õ]è�¾Í[ð™W³OàâÞgúï‘ÎT»(À{zƒ¼4ÔLàŠ8Ú�QÑ# „édcrNòп,�O{2¯˜(óÈ8?„]Tø0Gð¶r[3^…Y.Š>gó<Ã9Ða®›‘T/h!úwz9q@«5ß”�ÐÜ -÷mÔ4Rb6«8AÛQš¢˜t§Ï+Њ±ÔfÅøšA„#Ý芼HmçKèJÌ «p*dz‚-®âf+ò”Uº+ªáVçÝ'|\ìÒ*ñ»í-;ç¶Úª’»(4–ë+xZW …óêÓÎ=ò«Ï¹Ÿ\Êýx¡£c¨ÂÒ‡ãÏù\öDX¢Ù ×{F#zL߰lj¸m[ÉV^ûun¾tË:ȸø:zÂsóΆ¥ >bYC0÷[²£×y)Ї•XÌwrÒ+o0`¦Aw!ùfŸ¼+‚•žŠVõýlUÆBÍðXè.d®*¨~�¤Å¶” -Ý×&x-¿³Œ‰rýräxNs‡ž‰Ïîúñ ÍD¤9lJ´•|¬zbLð¡¦Ul’:?ðñÓ`÷µƒ”JV*÷°lZ™Ž7¹yyUFïPQ(lÀúU¼¯ü˜Yêöî¼à6bUv5‡ªÅCô´ 7`Ip‡a¢¦o…B'À`§CwKDƒg¡æýU²hE°¯‹õ:þxa1>únÿÎßÛñ_üÄ[•øMÑå_-ÿ^�{£’Ú¤]›»%� ß$‘m§Ï8w¥•�ÑÛ²Àôà/Ùz“ý×þŸ2[rÕh�:8=X‡&‚T“Ð5]é2¸½¹C(é1šzµ«j{Ð.ÅíSÐú`¬˜ã6< -½÷™îyüÖTî®j¯îBÝ Ñ¦<ˆ¨ºyØÙ�~ie k®Ð…¯tŒþ Æ!Âî‚=ÏwHäwjüÌ8³©¨ø¹×c%y'FÐ#×8SiQLð(B¼q#P”WÔä‰òÇÈÃ!óÉ‚øËóz|z©3ÃjDNèô -mÞ¼1œLœi¡†� ¨UNçùâÍ]4þ“e à Íf�LÈ€Xd�6¥oZUç‘—îr”ò;ÊŽò¦Vœ–�îÁ@;L5@‚XŽâ¦#�¥‹z”8œÇÇÒ,ÈZÚÔT4ЂÜßoœ0 x›¤v5†6‡÷ï»JŒ¥ª -°L¶¢4P¶ ¶%ÏWÔrmѳg—чiú†ü°ŠHjžéÆ%ñ¾ì ¨èXtßHׄTtÃ<.¼Ãòø·\ËYÈüb¸˜€šT�¿LA0\_•"¨t¸3¡Zª‰Iî€ÊädϾÈ;èÍQð5XŠMR‡È9z”«ÀƒòPãÐQ¡ j À(=ÍpC�=ºK{Æ5Ô¾%ÀÄÆË„Í -Ú\ÈËaKô5*‡y¸»ã4±0-qo„$(íÆhvK|ù=t¿»Ñ‹×Ŭí»øÈšˆ1ÆŸ¸ù«ŒìoN[•åfó=(W•Ô‘.´PÑ_©˜žk©¶d7:å‘ö’Ç+KàxÛú=²H-¾T1ˆg¯ >ÒñF5ž{ïç6PÞH§,±çÿä*[ñéæàî!JF¤;¼L�¿“w4XGPè4ØœáH—›�Æáï´Iõp9>TÜL(4˜'á1vU-!ñÑ.ú¨ÄËo-×ôoÌSi?PGxd«ØW–SB±œˆ-m¦µÔAyØixVÚÉ #+–ºü�¦Ð úÛѼ»F�œ„Õk$S¥À½>@ù=üës¶hè‡-zÃ8€“¹¦Wᜓ´DX†æ‹û¢¨±}‹:ö°³‰«¥—â°!~·sSln5'&MœÜjWñ™å‹¬x0I3×hNJ3Ìüæ7!˜ÁóÆ#ÕG^´J™`ähÒTWœMÔÔ VráËZ;S5ÃPª‘-öE×Õ4‘üþГ´²|(9!ëQº¥]¡‚¸fŠ Ç�Ië£ -ZÔw -³pzÄRÁ0Ô°çUÑ-À :ên 0�ò¡¨| endstream endobj 41 0 obj <</Filter[/FlateDecode]/Length 27277>>stream -H‰t—A–&¹ „Oà;äÆÛ|BÖ>È,|Ÿ¾@YÕ›ñ¢ûÕŸBAlDÍç¿ÿú÷_¾ßyÖ~V®w»YekŽ|´ãô²XZˆ°¥;;{a®±µ'×»‘§zÑöÖâåñøzË—Ý…5lºi!}úu7n�åóºÛóõͦo¦6±eÓxÍA—½‡g¾kÆć¿•5fQÈÅ<Ü«¶·ßÇòážÏ¬w…³Sïá5ö8»âY8õÙ߇}Ÿ{koKY9ØŽ'Ú½9÷ñæöë-f¦¼Õ åï媊m¾›Kpþ:¾îý´x´›E¯r-î3õdŒ»+W,¬Qú@5jÝ…=zÇŠôwDêw‘,·»ûáõ¹÷=‡¸´U÷»Ý +CÉÙcTýz›©+ùKT,º…°^BcsÔë1©±"Œxf¼æG™3â0b‹Ü_¨Ù0eŽí¹#aË;_¾;ûfJ…åÙ!Ç»–«–[׸NL9äöäëDV¥)^bâ>]ܸ°�ðÀÝV°ŽAaáƒ%Šï¾Ÿÿ膇†?Üù=Çv'sªleûÙ¦ ßÁ¿>°aM€~e-ÌÇí¤âoPOÅ œœ9ã9Êù*T.›qLÇd½DªÄ–Z d´ÝÙðÆö^àô¬ÇlÓAôÇ#“s¦ê¦#Åø³ŠÚ®¨À-0pˢʼn·ïL–¹ÓYø¹&?Ä&RA*ÍHò6,7HíÆX)P�~lLjGzhÏ"VÈÒ¨öOe âv{GÙá¶ôHp’ìæ”mÃ+ÜrE´RS ç}í !QÂCtkP@ÒG¬‘)ø¹ãG'$~cäU½¸9‰ì‰±ÌæwCðŠøK© Ü<ü“UÚµ²´ÏïkqÎg±íZüžÐ±Èh¯Åmpþœ$`E;¬¶"c»Bñ¯�&»PŒÎñÊ$m2 ë÷ Œ,ß~Ï Q+èÕ¤Ž®V(22‡º`AIv,º.±Vtç[{÷•¯m—ÅÏ{PE‡PèU›ÆYîF*€JAjR|*ûÒ^ÀÉtˆ0$ ú÷!¬êBSL·dE¿iñLÈàÌöÚÛU}m‡£ª-rÍ^ @÷7ñÿxAPWE±ë®¦¥Üq’Öc·³éˆÔÝL”ZG~®);²�hçZAnBŒ9²´híŠ#F¤³ £’€2Z¼`¡4a°š€¡d‹¼@%C‰;¯*†E”«ý‘´L•ˆÄl2×D˜qæhÀøup€�¿ÄÝ-þ·Mh(A -ÓW5 þ&\¨ h&˜ðE&$Ùpæ©|˜|„ò±8œ+…?žÐ]^÷ð×0ÖG9´0T -4H³‹?½.}‹B=ñCCÌüðÑò&?á•Ÿ]dÊr“|úž'i‰íð‚ñ)ó™Wži[4‘Ç*æÜm•bjRˆê Yì»ýr.AMȲðÓ’b-Ä:³Hï"ÖÔ½ël] 5‘‘,ús `úLϹ½6RÈ+‰Ð“Ì„ !dtµƒÄ2¢)R?Òü*'F÷u�L1ã%—ÞêJ¢DaAÎp±%Ö -ŸYægŒ’ÑR7³¨‘EzNíÂç¸v׫-(Û’ÅŽ®pÞAçPçg᪚x~pŒ¬X»F1¬–˜²Âd†ÁAeo(.é8Ò€k0b6’Ö=fý4°„ÂSQBßL_€ôÕìQ½9'›h3º€‚؆Ë4+À¯—òkàùÑ9»ôôjD}€@`¥¿º¡hȹxŒH„>üúŸ°‘؈¯¡àd£(ÎY„ Í—”Ç4·Có¤NRßpÒ9¡›,?¡Gyº…—,˜ƒÒ™*™ñѨ‰R~@UÚf1ÿª�.[ÚÍLÄIÒeĵByÙÞúOä¡IkN$¬r,ÀV-±GKeJèÕÇLôžX[‰eì¹ýx‚±:û M | KŒ`âCÆEé=ŒÊp«rÒDÐK}ÌpAÈȶ©ùO-¤É�èuæÕo2¹’‘!Ââ�T'åVL -[r¡àD(Hû#ú›fÖ"9=½x‹›ðµº¯-ˆH”³-¢a°Ðü?@ J·Úû÷¤+¤½Ä[ELAÉÒl¤mKXL Rmp'+Xì¤)ÆGýÏw>´Cñ.¢Ï«, -#Õ7Ò+)ºÃ5YýÜC -CHªbÏNl¢zÑ -r#!Ë`§Ï¢î?Å×sØa8æjØ÷¨™W÷BªU'6¥sÆç0®Ð üLú_öӎÖÒACÏïFt8c)¨cÔØâ(R¬#N aFMše¶’=DSþæN�´˜–õÑ`‹[Zsýj’̸rÊ _“”—ÎÙÕ¡…Ы1ÍbðÒ¸¨Ì&iš[¬ÇÛE-‘Ü;¿Ãèš–`^ЮYN#Bgν²EA!‘*… ÷Nä‡+¯® â½U“ìùp¬fÞ+Wäë3«„‹À®”rL‹Jop·ô†©œ+™ž*Ð:5@ŒG¿cŒ¡†Öç'Äž_õe¥G©¬¦(«[}`ÄígÞïdSø‹˜qýë1ÓÍþ¿ÖT¼‚?†˜k¤\„—önèZ-×¢ ð¯é´-:2ÒwÒÇGÇç¼z„´²ž~$2 4AÃŒK'% †S˜…Vb™w0æÅ7†ˆ¼äÌz%n˜?oE¦¹Yë{ôž;µl©óÑ‹2zFO}©ó€ýWD]`˜Íz³iP=-§ëI'ƒë(`¹Ñô’ˆ¼óöá¦fXŠŒOµuáò‰o¢AД³ÒûOÀÌßÒÌTæý¢Å`Í^"Âï"L!¥ÖÜÙ:¸Ž2ÏIÌI,Åcg#Ïš5㺹ÏF2¼>8P+(þŽ*ÉÌ^âZпÆdf†ßˆC دO•TÏO -`rJJ2ÙW¡HRB8Ͼ;¼Èéì¹J¼Õk¨§Mîô%«#ùÀ -vŒ¶¢9%¹>4#Ê"5ГéU»)Ñ)zOuê¸M§ô\Þ² 1~º]&+^´§æwÓwðûÓÒv,4·¶Ål?ï=©fû`”¾ƒÛê©0˜}¾“<r%—§6Õ�M°¿êKj.Dæ7‰ú„@?ÊÓ2“ö3?ôÄKÛ¸opÍ¸Ó -4}zìGWR÷†*\}§1[S4„º™¯XSl„OOD^ z¿ÐbôÏ0)Ò¿ÛžÖIº‘Nj †÷DÀš¨&ë==Âòê쎖dÖþž5i'„�‚¢ËÊ¥µtÍ¿Y/—]»Š+ŠþÊiJ.U»ÞI˘fZ‰"‘&²’È @²L$þ>c¬µïEòµBLœSs×sù8{ªqN\õF3¸Œ¨g´j[ÏjR pgS„±ÄL2[ÆÅé�#Ôq.@cãiX�~°ºDU9Ïjn|gÔ´KgþB"…½%NõÔÒ>:gEmHhS×{?ÆAä©Ï£„týH-.Œ?=Þ447Ŭž¦W¬cÃFk¶»ë¶é‰3žë°(Æs!6H -¡¼èª‘+UAÕAníZœ[¡¬×ر¿ó¥¶ˆž…MGÓ°b·y ”)Ô*’!(´»‰b¾óD’ÁZ"$´~®”;@–÷.‚(ˆVêËJ”è¥#MT¯i;¹OÔókìÁòkÈ6;wv± çäë…$)ú -lJ=ÕËl¬Í…«wMk’·ç:)z!ª º6iИW·Š½¸²ïyÛSp:¿É•>?&룶㵢ºWÏy{õ=ZuÄqjÓ3——¸³ãEwc!j1±(z‹r(®ÁΉu�hM׺<¦Ïꇋm[snàEDl�ooñ£˜z€Nì¬&ˆ?¿g•'©›’ñ6r1ŒM ˆ¢É²#öKãîsòF´ ¤‚j]ªåcX²•`lW‘QîçA'¤u ¡U+Få<Œeº†¦˜é›‘F€QÇî»Á¶óºÓ”zªí.[~ŒË/;LCļ²³ u›¡{0î=hõ=T_0”YñhCÎL‹ŠÌWö|¦@ˆƒ+„(ñÔ "÷Ô£Æi“®éHäJéRÝt˜TlQ<.²g¿Ht4-ã„Sõ¨ÜéÅVnÊZW¦@ìh` wTk…™‰f,@€4i‚Â\Àž4ˆéD’ƒÅ` ²çôSúƒö˜dÊ$‚X€ˆ¸¼Ùx½®CebTŒyHv< l„¡óý¸L-¸U+ _~üã¹róà·.÷Ãûw>¶™PêðÑíÝñ5åàÀÈÆçSt ÄtV$L("w`£C³C;x“G3Ü"´´¬0±ÒuåùvGõ€ø“ï¡øjüÀ|#€œ@oŒ®Ñ•ó+}È\L[TIÂÆj¬³Bå9¡+ÒMÅ·Cu¹u#¶ka³ÝZ ZÞë¬O¼,{ ,]1H]WÚ €5; %ŽÞIÜHFõô×óéÑ‹‘}ò/þ|ýæÃÇoß¿ûøþ§¿ÿðËãOüôÅ«‚H¡}ùøúo?¼ÿñß/¾ùæÍ»w?ÿðן>~/öËÇ@þ™?üûÕߧ‰ÊãÍ?ùŸŸýëWù÷oã¿ùO¾û>~ª÷ßýI0ºÒ´þZž¡½Ó´òà -R„ŽW ¿´@¡q3×Dî™mPþùΨãauÒ¢€Ñ<a‚âŨ˜¤èí°7†JÞ…Ö…qL„‰GÆXðÐì”â0f¢A Pç˜ÂܘèÛH^ Ú åßaˆ1-ØœcÎœþ¡+á,/+„ÜϹH4’Dh\ØÓScž¡‹�Aï'bGWèoæ™f¦L²Pi‰ÐX‹(·šÖ}a.´ÃûÜMZ"ÇÀmBÍüèm"`c´¡…Ù©‘„Žo—ʲu{Å)MW&@5Ä07›ö¬ôËáXŠNK¯ƒß@kÛ!ßDD¤U¡"ÚêΫÁŠ'E±TDšSÄJÄ.„·` " (ÄF*ö¼ÖþêYžäÄŸ{_#ªäpùÛ¤ÀÈŽÜr¨ˆUm/꓆æB„ïñ÷eà÷¡Å�1”¯“Dà=ºˆ¦[1L½ ˆyõe~¤(æ¿fPÅ>ä4MïÈ4¤T ד[鹃d›qàN®-’£{㢑³d1Ê'F°R\hŸƒå ºo!R§½ì5»‡%÷kD¬dÞ\`l>’ÓgæA÷q@`MêýXQL°<ž}}¡øz‰BÖ½ÒkÔÉ>ZÿÃ(º RÇÝKk¡Xn’kf�wL…¿ä +²)ÝOOD©<Eï¢T^€®’•¹ Á`ã²%{¾>ÕgãêàBïd›9H'rªÆzÛv�ýbZý"Œ[`éãÓþ̆žñù¹4*sâb_Ó]ò*oÂíÍD˜@@±38Ù.‚+¹=+‚žoH‹9tÇ—‡‹À3¥¯ªÑª‡ÕÚ𪪳ÅUia?3ÐÓRÇ2òÝŸ¢æÉ»#{š8Ø(¢Nó(Õ~¨TÓ?¾9þjbF8sŸ’t ÚX÷¨9¾Š¦KyŸW Þ/@Mòf”'¬Œ;è.ózüs%ú -…ÃÜqWäMcñN4.Ó£[›ás-QŠzÙG<ˆ¿bàí]úÔ3óò\Iê4)·Š°ócšá8 Áwhª Ÿð¦•ªžÿÄ< pÁ¢Êî‰Â›QKy -Ä´h‡ZÁ1ÀdÕbM[]ž[ÈÁZã7tH«Í¿\ãXp_!Å Nl‹ì&£‚ ûQ[ƒ{ªW"(G·Äyî°Fg{,.@*Mi)VBÅvÙKÉbsã)ÅðŸòW!=ktÒÖ´K/xJ}질X‰ÔƒÃÿÌç<KÊ$Å`÷*Šr:~™…îÕí4™˜\… Õ4-î0-ýÜ -,Š -6Iϳkx"¼îŠy8lš%|i˜¥ª‘ÿ-Ïõ?¦%„Âü¿þ°†„<àþ;)¢®`®†)Q…lnŸWMS\>¥…]2a ŸÆC\Õ“F…¢¢”-=w5£â¹å¾0ÿ¼æ¿šv)ˆ¶JhwòöªÜb¦ïòÚ5>Çj¬ø|”D„=A€Z¹�«‰Ð‚p‰@ZÛËâ5ƒ3Eq$ˆ|±ÀÙ÷×µšJqelI@±0z¤ÔšXVÄê·^VbäEs³åüX+ÙŸpxySåþÿ¼<\Ë]N™AÒ¦ÒñÑ,T¨³‹\Æ•¤õ¢9,Híž¹Ó˱¹O.9E·w•HD³ÎÀ»º]»Q#DºŒÄ[ ›¦¾ÉUÜgx1DB6cÒ»÷åg ˆ;PU; -…ÏiÌ‘Nƒ…OK:X§GÄQÝ@PÒ‰�0E°—y/á(^ 0ŹfX1º Úw®qçófÔUÚçDàWEhîÜ©`beon„}Gñ.ˆW{µFìz¯Ñô^ñ[mòö÷lÍa‚∗'’r>Ͼ×ÅÏ$ÚhJÞဢ&¬¨.Ÿ€ÂÁRHÎcϘ^²(B_-²‰Àò‹h^I ,)ŤòîÞ¤.ªú�¢ªãj¯˜§q9€î;€ˆH>Ó¾r“‹†(ê{µpjCcsnÎZR_“[<?ƒ½••I½aàÙfšâ¬ƒî'íAÕ×…—yÈx4 yš†u*ð -dÆéM Ø;îpÐÏ8´M§ÍjÄer¶FrröÇ™yüjÙV’2#Š´(\F ˜¦ƒ2ý´˜'ˆÅ±Š‚sì@àÈÜŠ„Œ*•{YÉ€‚ÖÚ™mª”œ'ÓO²,ç1…XcÏD -½ûaË•¦3Ñæ·HÃ\ÁK}AjËEÜSÙ&ÁÀ˜ƒ¥x’]PPŽˆØ„£¡ãÜ^Y£{{/þHw§ZJÜ/„ÌKWׯ:~~h½@ñpŒóPRI]-i7bPCÈ1¤üma…õCŸA°[úi/%«Ÿ{¥OQXß0¦ÚÂS,is©*=5_Ô}¥lÏýz ÈWåÀÔÜý -eÉUÝw·.x ·–1ZtÉf+VöVÆ‹uz‚PDÎ9ͨqçÃ&çΡ -3MÅ §‡÷Aä¨r‹Æf¯46kF›ßéu§¢Ì5žDrE ¥.f! -Š)JÄS".³7(b?e•³^V‚fÅÔ=P4Ÿ¨¹¯{¥cŒ™^ÿe½Ìr$Kn x•<A!öxñ;éü2##sZèG`ªó‘±qqw¦ÇÊú -ªÄ€Vii(ôKIáA5Ö©Úy¡¥ŒHÈöVÖ`B½eìK+{tÎ/ŽD¾Ø§©‹îI_^ÆÈô�¥íÆ~Ò«©a:&(‚F#?VT ù6$¢1c2Q]Ò~Y¾gjµéÛ¬ÓÊSÎ/t´ªà„ËLß^À{+¡¹bpÏhÁY§¡æ%q²Ã…ÇûŽMR~è*Ê‚/týëpEσB«¼³Myª˜)«ð4Á3’ö]è°N§½Q£Ùy„ ÝbFž´¤J‹Áɶ#©DÊfoˆRö™õ';¤GÚXNý3nÕÁŠfã¢ÅÂŒÇ&Ù"êŸãtƒa¬¡¦½³%a[1�È'¶Y6-¹x¸Í°a”jŸ1x3Í…Ü&——&±±4¹ó[8Ñ¥]'ø`Æê êAõç6ÅòÒƒ«„+`RshTá><]ø9iÚ=aø¸…ý†‘'KÈ*3×NƒÓûàðìªÇTžä¾:*O€T ©â7%ÆDfQT">„K•¡èŸ×ÿEÿÏéˆL®c~HÈÔñ´Y*¯1³¼ÜãrGßp¼’eé_¸Ï\͘OÀeŽüÜ£(‰|_)®0R�׆±1L§Íµs3ØTâ¢4€T-µåŠ£l½Ûá»":Ö‘»ÐŽñÛ2T™M›ÊsGJ9Ê!¾ÓÙó9-÷iŒ“x'‘Sï*LhX5’´åià1ðM$m›Ñ «±d%å@j¡Z›P�oÊ.—²'»)KJ4žÁÁÄŠâÍ;á\U~£g•q:|ê"X&IÃ#nb àÃÐçe3H06ÕêÜc•OJP°I’ÐDÜîä1µó‰ï§]i4)þ(j·I/§À‚òËfØèÎõa]Bå2²GÂHب2Æ«jÀ*ýµ,6¤qãù8–Euº2øx<Ž“ò{A¼—ѵ¿ÔÖ˜5îÐD‡6{? Œ®c¤aWúrY¸2ÜõrèDÁÍ£ÊÐÞie8ƒ<ßo´”Æ¥(â•Óc(‚CHÓ`øyî˜)Ò>ß‚OTñ”óõ-ºÊ4'èå‡$ÉNži(i8—ý©GÔErQ׎9•K2ÿ §[M¾*U™Ï+ðúŃœS^©Ãœ3ÿv -é Çõ:¡IVˆf?A2¥Ž—DŸJò¿¿ßänqâojýD½lN=v2…¤zÁ=ÖtTo´úPiã– -Æþ¤˜%áòÏdf¬²Ê3*$¾£KZ|‡×fTÊŽçŽUÜAb#-¶42Ê=^Îq3 ŽŽ®ržÀUãvÑÍÎ\g¿·aR¹ñDþ‹¥Ðg…ãÄ.ül߆H3"²„œžv[UnDYD³qW‰Êý?Z½ÙúÎ=‹ðc$UÄ4›f~ʼÄ3/cÑä>šßgÌþmˆ7"„K¯ßFÞ¼Ê-vh[ŸbÇGTn÷ßîfÓB6k ¡1ž¸IÅ�¢‡’dW†Mú¼9è}ÞÜø@Óg¹//þÏÛDcOn}FÈÊ^¿9(Ž«0K«‹téT¯ÓŠvSÐnÓãh·–Ò‹€Dà&¢«*ÓAàZ·ÀL¶¿ •šýÅ*é“Ì:J2ëª/ÂGO¨=(ËJϨ`•‹Mâä'š åo8U_ËLƒYKÃcfò ˆ¯=O©Tܱjx' ©+ 'éuAëù]êw¯›Q¿ìKNnØ -•C,²¾eåÖS¼,À¨Ë;O]Z8çÍaàðþ6Â×;Ô@«à0jÍ}>†ú\ú)†QäÒØÇqätå -UA*·Ä ýÄ.Èm%nËpÓŠ›<FaEµŠHỬ†)b`8a`h4(îÑ -ãyïöø0¢Øˆ1ûôÜ®^â¾i`Fk°xD¿óaAM=W¹U£ŒÿÙÁX„ ¸R‹ïè3áOf«æö~oÎsK ²»r³ô?†r9†TpP%Ö=K’ž_RêÜ?Au_†weاi$>a¤²!‰Ò„;Ää@sVÕ4¬b˜|Ë“¡á?ù¯„—f˜f.gš>MW¾±Z J0Bf¨<òø¿ Ùõ´£AXªÏÿò¢MÈ+RJ‘ÌTá„PÝðíñd{ÑM(À!>—LC„»8Î pŸE -‘~„’¨u&(„ž½B¨0ÉXjÈi0¾†*:N-›²`Tðp’KqM�‚:ŽkÍ]Èl y#°`\<r>ÃJ冷¬á¦æ{°d°Àh͇…ÁiÓnåétæSgÂsàæ¼öíño÷¦Å°¯å@"ÈÈ»í`Ú~Å'ê©!Éi:˜xLèJ®%€YZ’קvÚÛÉéS'ÄBz,=>;æxŸ³®ƒ <(ºð€½ó GKcEÃa<H±W -—÷¡ðÄ£i{êV!¦Ç^U&ž™@²TØg’Ê;!1ãaC¡¥4ìj¨Ö!}c˜Ç²¨†/œtØq)-IëúëA� ~�ýÜ“šAú¤ÜE: ÐþëU‘/-Nb³Ç”OÅQ¥tì�Äë [-®:UÁÏØ?WŠâå$å}€—^€DÑ‹ž;±sßÊ ÜºuÆ×ð4Ì?öåÅÝU(ÖFÊ×ÓèR_¿zôÁÝêÎÈpÚò0ìvŒü„ÔwÂGí-¸Ú†QÓèì:QåÆEˆ#5(qD"Ábþ„hi·OÕlQÞ]ZFEn…(w…`l°É 8–íÎÌØBReüæA$»µ‡ðá•yíðÚ×K…ßxG£ôÁÃ)[AP·‚(ZêjÙ‚ß“8×5S}lÞ€Gqšáœð¢…òI”¥IÇŽquÊȳ[ÛÓDŠÚÁc‰ñ¯®æ¿,Í*<†ä‚ǃbã®,t‰j¾í› -¼hËW“ÝÃ\8Æ9šK ! ¡Us¢ ŠKr%†¹X9hÈë¼û#¬ú¸‡INÅjôŒXbvxJR*}‡G›Lûá�ÚÙf„…ý(݇0 Çfaê|>$m7õ2ÁT‚Ì ¶ã1CÕÓÕFºN¸äÜìãD±Nœ€Î}f8I6˜yvÓeÊ¢½±#cŸðpŽÑcÿ¸Ç(Ó{lg—÷1ˆú^‡P/rlupeâ'9xb€H¶†šÛ£jÜÊ{L¯ØË¢¨ßùX¡Èæ"´É^„…Ò- "…b[‚”®¨ä èÛN;-öe®'ÞO…Ô+£¿wÜ,a'4.—YµçNŠD®9@ -_åv/z¬}¾Ç®ƒ‘ezãg‹ß5ý–¤Ò’Š¶ }MÛ"7Ú/¨†m<‹_ÀûòB%ÓD§Ó›GÈÎP4Ì3T €œ0A!(Z< aXioÂ}³8˜Öþm¹i·&&!†�Y…”aÂ[¬á˜?jEÂÂuQ¨ˆK.³~âGÖ-!c„;ôfÓˆn ̈N±ÓÊá.'¾ ¬ÄŠ„Æ Íî* f…Gí£œIÅ ñåÒ¶ïvW—øÍÔ°ªÅ*ôœ«Nëò¹—àVzÐ==ZkáQJîÑUŸx4»ì}ß f^‚Ðãµ1ÑòÚºU@ÄC 4Ð MÕ·£:"Ž+ùïËqþ[}-c°@ýÂsÖ}H?û©r:ߑЙ Ýo0ûÛ‰ùªDŒ˜ ï=Ed;BíüíÆpŠàO8•®gZ{ïË°*C²¢zâo/dõà¨ѷE‘>¢#¯Ü”B(…á %Ë£<øš„Uœð`ËX/ÛÞ¸Ž*Ž‚~‡ûÉA°žç¹S^ÙI€”TD†PW{“.$»ÑfC”oÏïfÜ´Þuµqœ{Ï9sæœÿCPº91,ÊÈËxrÏ4€È†Mà_•‡=A…HY†`¦±GÅУªpÜȪ±¨{X¹¡BÎÜ>Sƒ‰{ÔÌ’/RfR<R(Š{$ô´“˜;Ž¾%*k¨$#æhAh>ˆƒ-£±S€œK_Fã ˆ½�fú�)ëSj÷yýNí$H"¾ÀóÂ9[ׯÐçX ßw. ë[¢-‚‰°5¸ãÏs\ÌÀPªfŒÊÕ4c3N‹ç…ªüˆÇãx§î¿ËsßŰdž6׃rÃKÑÿ¦LÐ1*°Ž/¼t|c2Ð@G}€Ö4×Ò´ÑÑ:¨ñª³‘Hõ“–‰ÎãNW É8Æq]"5í -$æT-I¬b¦¤…:!N¢ìZ$= -SÒCîã(à{ì “…è”rb˜Ät™`Œ¯l#¾LÙ’&×!wÃ(52U¥’ÇâéÒ_j|ЫÎì˜^D]”ƒÕ´.©9‹ˆò¶®)Çà©O‰0’'¢ÄôýúhUù]È o!=½*ÉH„œYÀ?êŠ]ˆ=•,1“z²AÕ—¸NmÜxc'i(Eapè'b³X' T …"1œxA›ö Â9Ì][À¦f÷º5'!ßTÌŒùAÒ+•ÆD* Í¹Þ ¥‘T†aèˆãˆÞQ³ÉJC‡VÓ‰uØÚ.�¦a!b ˆóŽÌÎ,Ž¤9˜eo%[ƒwdŸÂ4ÝñèªùÐAI’Ï<èÜ!±Š4DpTb%Y×)9©wÈà$",¸OYP®ºpjÂàNz@ðf;±Ž)#9øƒ8“Z’ÏEœƒ1Êr2¶ƒ¾¼84€‹õŒ#¢ö$¸Õ*¸ÑÉIÃíã‰u|0X§uOâ´GÄú8*�CüPhÜÉQP¥;ÊPÈ”lAÖ$‹WÇâÎppE¨ã2EÝì<Ð0ŽÍêÄ4qg‚âZÇyˆ/4ƒ’èÏ%^& -´e`[FÀhQÒ†rÏ‚I‹éU[„™@'!8àÄ¢Ô ð¯µo”³š,“MêëȺjÙ|¥hì³w`; ¡p´¯Ao ’hˆt·Óðc tD¡r]”Ta]\¢©,£[¸ÍúXc”NE * -êC¼Ûè~”zÌ¢"ê´j®Ö°1Ç~×ÔÒ뮑ÕÊÅ™Ã<GØ„¶¹Ë@"}yö,ª„¸…mb*fÇd5M!é'Wꜹ*Õ¥ßt’1šÇÜÔÞŒŠj"AE…yD¡ßŸ|¤±D Rµ¢„*/ÙZïR¹¤bÔC!‰›’Ö£€BÞQ V9Ø9Š‚A&l¥—tfß-iF‚6V²Õ£hð[˜Èºý;6 ÀÎAG¡mì—–áTÒÙ˜ÆS5@*jÿ1÷‰´#¶µÅ¢@-ã P+‹ä|ÀÓšrC9:I®‘‘"#tk—úµ‹?úÄREŸ‡\m07¸ZÀYÊD¡³±cÎׇY¼3 ÄTâËÄjBcT§ÔI„�£IjÙ–$ûç c%Lp° -“œÍö!gXNŠ€éýV_ùת—Hû(C�‰Ò„—oð‚‰RÜMãÊW…¶‰òš÷_¨ˆ¦’ò‰¯¸¨Dù° Ü=Pá4&<C®y8`�ö›ÐsQ4ý@y½8×ÑÛô"lÉsTE’ÔçL–?ÃÍ¥p;ˆ~ÖJ‚ `¤±d¢>µ:ÈŒ0s¬cxt(ŽJ«]©<íQmäºeóŠ?çûÓÍÍa³Û®öŸ¦/ytö눴‚œÂ£éüO‡ýfûz:»¼¼¸¹ùðöjwX)öÑô+"ÃþÿåK~¼ü?-æ&Z!OÎþ»þÔŸL×·üR¦³GÓõ7oæ§óËÝîÍtvñìÅêpXï·Ëgï—WëwëÕa}»äƒ¾Õ鸯W›íòñîݧåîÕòéíæð»ýîû%×þ‡´Òn¿|²y«Å7ë÷Ë?¬?õUótþl{8üb¿þ×fý‘Þ¼)FÇ å„é0ûùÕzujŸ?oÞ¬—ßlnß=xÖù|ýê°äÈ¿Ýï¶ænÙÝ»û±šŸLâ÷ëÍëïÿáI¯vÇIÓC¡úkõw¶;z¾»ù\HïLEu±Þ߬·‡Ïñ÷®ó鿸x—O··ããþïËõëÍv<ùr:{¹Ý®Þ®o§ñd -¾8ñù\P3h£Jr!ûpyuqX˜3:‹ù4FR‹¼àþ×/ìçõÇþ5}°_ŸØOÿãÁøŠ_ÿÁÃøzúëßÜtÛ¿¿2~/“ûNou5?—–qêQÔÝ©žŸÚè'_ž\ûßÎÓåê柀Ioµ«õÍáŠü tÔÏEms�¡WL@À8Y´PZ…ƒŠ‹ºÏeÅBvp;QðF…å"q}<–ñeó,— Y`¡$Y àÚìÒt½RÉ‚˜¢$4P]$êMÒ«ÙK(«èT4®t¦KbÁ!°b@µ ›'M,2¡YÌLòàyÀîàl%t×ôuù -–Kú* 隆t¸êæ¹ÛvÎ}çˆd""³³SQ00ŠüPFÇöuçË)aþJhe©àBQV¨ N›$'ùzð"¨T4Óô[&âÝ8YÁc“Jä>+ -i’)΃Uûv06ªp¤ ¿ÛŒëåE*Ȳ„äDä³Û"ð/é/FD]˜8GŒè�;£*!ÈHŠ$’pŽ£=ÄüA,j)HÖ÷º dlfIìÙ 7<íéÑ2ZG©`GQÞò!–oÊB*PFMªCMÅ ç„%ÐppuKðxt“˜êÂ…j#æJ¦&I/TÃÕcCQŒ×S‘˜"•")ÂQ„â¹ÄÌ1"©°5Ÿr¤0#XïZˆÖÄë5ϧ—AZ¡öÀï:¹¡ûu»Ñ:“3Q\NÂü ˆšT>-4Öã†sÆFÛÀœTÂÿUë%Ħ«¬£†e(t9QÝŒ¾+Œ½*‰*^n$uÜ?hº 8ø†ÞLNŠÅ`.¼—ŸA’¢à&<.ƒÉt`-Ý[±ƒ¹¦Tf‹*ê‰1 “€äBÐáAæÊ·ýLŒ`ÍÁ7 GÊåó€¾D3Tô'¹jƒj ÓÃuýÔe¦Ã¢Ò8[ ÁkAɧ’±GDÅÿIÅû(èË¢™ÌY@›¡œ¿ÏÕÓ}Hjµ+3XÔ¥*âççñ&LLÈ"´‚Aeúd96Ù§…‚€õÙ-Št· ³O&É€…ê¨=£¹î˜½ñ@•¶SDÏ13ÛR7•9kÖáÃqxŽ¨€PÄ \B’JYÐdôxͪƒï¨PÌ´eÕM»Ê0h {nx0@c´\€T:<HÔc¸a–ÁèHÀ(CMùeÚ8 7£f èP™�I• üd‰ÕK…Ç]¶7t{õJ‡Î“!,™ÒÐï tÖ�Òâ¦W®ë®=ªèk¤¼Ì%³`«ê-¢C½&¥±ŸÑö:8Ô@®´5W&€®É|C HöËÑòDE‚*×› kô�#Ò¥ôõ¨[ lʨTÌc1‰ð¦\×ÆcŠŠÌ¬¼+I›T™È)©„A¦ÆC$Ì‘Ï4ì ±TãƒÄ['7™¬Ë’]T¥Sk‡ßÒÀ:W’4¨¤SÀ¯Kƒ8ZÅUQI>è'ÑU7¹«èjÄè -|5Áð$3H!(]<ãuƒ½ÐI¼“u+½TQUQ©þÍz½ôXn”a�þ+^RŸ¸ì*_–i(ØÀ"YE C¢,ÐH£€àßó¼e÷éî Ê",†ô±]õ]ßK˜¹œ™8KJ#"ˆP* -¬}ÔÖÅÛ†0†r®ó<¶èÚèšÝ~q!sÁó÷]']RôÇOß}ø‰Úæöûá éW{Cîh±‘™ˆm\»’‘�Ûx¨Ê§ÂFÖ1j¨háò[ÍãçÝñ4ÍVgÑÕ¾ÛÌáI!ô¾kèÞÙ|7ex±½á©u–-UMðî›9}1$ ÂFÐEY’S&h¾Î<Yp¿zó*vy*ê-€Dw«÷«®›‚¢7K;eŸCê$¬ÜJmÜs°ÆÙr+tT<ÓY48Aùi üÊÜÈdDjš¢÷ä·Y6th;—áù7Ìíia+Ã-ÝÍmÖ†®&4Gn?tüüüy…ýÅãßÃùø31ýñÓ“t8Âÿ;Ýuýù»Ÿ?ýô/¿ûã—_ý霿¿ýðñÓ?G§4§â?|üþß~ùÕþ@þúóI÷—ëßø2|ýá>ÞÓo0Þ÷û,ŸõXNx†?ü«ç|˜¼H ÍÄ‚MßÃß%» -¡Ù -ÒP¢ ük]ÕÆ’cy㘢/äFiA8`�¯tðR:¯t¡9kWá:j(jZ Eþ7€íy”ÒÞˆ*1´é’㦼ëivã7WøB›HŸ/Çqo¿‚¡F|w¤‘Àð–¥ümfk»«dléÿ""0n«×qóœ», |–ù¦2¾¢™P&/t� O–îÃ`- ƒœc…§g²>'ïÜ¥¸rMkb`€³1êÅ°Nºž’®}±UÂ/{‚ƪ‡xó-eæiV„4�Í(-¡Yæ`¨EÃl•ï‡Áô`ôÈ6ŠüêÇŠHDá/ÞÂ93ºDá(ßcmÒÿ.¬çÀ!k`»è¡B—šU&¸PÑV•IM÷þWâ6IÓh“=Ëë:ë}v#¼GÀ”㣂æÌàûäèLÌ+¬Ù[ÏØU‡xž2²ØºSëá32ŒšàØrNjY5Øi¬œ3Pkä3è-º”ü £¦@™ÓÓe¢íCJ„gWeÄ°Î^‚¯ñ^é’Bgíëý8(W‰êØ£ÝüoÁÇ,ÈL5b>I§¶K¶wçàÒ²5R°N¸°…T¥å„Ù@UQ€ÒCQeVrϪ‰C®Rö‡xY¢>×"¶Õfªƒ›Ì‘hêîåj\¬[Z¶!RšbÜò{»~îÍå ú2Gñ{ßlGAAÑ«]ÍÍûë%?îíÃBB‹;îöàåGañª~äN”r¿¥íWèÇaí>)«i3²'¦k‹É[æ÷–Y(ßÃyû0¬™š´¹Ž-óS#´ÁQ{ @Dq+ÚJ–’wœÎ6ÎG#e—é"ˆ jY9�.*j*]£ÌIÄ9Þ ä^YÕ³¶/ÿm÷£¼lÿ£õÍ‚Y)Áª¬Lߧ>=1]m+Æ6]çSñ©vák¦´ ÒÕ"q*¹&Vp4îËðÍÉ -pj¨3«×ã”tðÒž:“%±ãc_ƈٺӊʎ8ûÕf%:œ´y.Íʳƒx…š„xdƒsüüÑø)ð)$µÛ´,WÌ&&¦®L9DqŒýŽz°D_Cü ¾`ÁúªÊy°ž^(€N¶Ü¥êf-;#˜ÆYni®& YÁÕ¥±X‚ïÎtèf\]Èrê_¾Ó³Í=Âî*D!÷z™}0X>¦`Ôt.‡rãÜL#ZôºpÀ/áÝalHÇx¤9ã#” MçOÃÄä.I•;ÔbXccŠéæ§Ì‚plŒ(|0ÔîÕ³µóÙëtÝ9÷¬3Zr£¥UlSË"ÄGw 9A¦/cbJ°3}Ÿ`\?}¿ï?ë6å�l -ÃTïðuºjÀ؉4\ÍÉL™ãùþ6E„C®‰°2<”8’+£êX<¨I-l5½6…Z™B÷…Z(‰Íîf%9uƶöìÇ£…9£‘Ó€Ø}Š:ìâí¢�äXߘP‰‡¹ååkò¥´kê’ÔF·'5Š"Gû|¤lf,kdñ¶å«=·»®f¬*Íä!+]òî1¥ÈÎÞ><¢µ²–Ò”EÔuÃÓÇ)U7‘p,0]èÇ#¨rțƮ ôz怩^'Å\z?þíÏ!½{xODÙ©³Ù¢»)GæÄ-¤~AKYÌWå:÷ªQ!¡Û«ÈÀ@„Ü2íÍpz”ûÕà¡R;ÏŠÒ//nðãx¥p D®èªÅ–p}5;ý0–5‡ã—‰K-Ñ'?4ÚÇÜgœù5ñ–¯&[JxIÈ«víÅ~媂~îûcýª1zñÕÒµÀëX›G;Ó®UméԮ갔@X¯åvtpÄÄîɪ¾‚éj6,èÑ‚ý„¼8U7]xÓ°jÆp•P{…R=òô;‘c¯Ûý×" 0ÕŠº.4Ìýcø„ªkí†:ÿ6eOÀÅ>7éæB[ÕvGh -)ÀvÃBu·GT7öx-« -ðB &Ð89LUÐõ<rë:Å<bÇþàrð:ÍSÍ¥šï~¼~ËTxà£e¾¨Ítë4ŽwˆP{äÁ|5 ×Ñ}Yœƒ<[$iAô>C!õbÛÔkÙ„-§V_qt‹È(‰œüÅÅìí®Þ16_Z -´jSW³8´K8Ý\£Ç<´lªqW~Ò†0J˜Õù.QþÝc¨@!ÒOa¿KØdp[8ÁìfÌO)tD½Q[±Wº)s¸•\_ÐM½Ä–u¾E} Ü¡ùáTgYx™ÌYøÚÙƒ¦kð‡Æz«ñL—lq¡,è½íS¹´ã»ŠóÝûNef˜°=¨³v¤º+ÛàN÷^ -ÁYÔW28¡Ï‘Íy?žÒ9}–½ýóAŠß»ëöl©–‚PµÞ—¥ŸºM#EÒøŒ°Ê£?H�ÁjŒÆëÅ<xÇ©ß”üÁ…0?†;voùCè2‹áI[.$Ñc’Ú–-—Uj™š´W óìÍGƒ•äF;¢öË–¥ìK﮽w#—S'Ž%�Ù>ïS›³Ì¼¸Ìc‹±PÜ»Ë4›¯-,÷×Þ”Z‚/YкĘ]Ž6_)¼„ï†lÑ·©Ënn„ïOY…µÃÅ ¬§†ÂØ7óáZÜR©RF § S6žz·Ë¶°{ ŠæpÈéŒ@5ls@°{91W‰Œ…\؆èAwsƒv³;Tu˜S˜DD~ l,Œ:æ8:c]-"Çç8kjÅÒS9Ð[s`]iS+„O¤Ï×B[ÇUÖ˜ÕÀ%|p;ÏéÆH—‚ >e«¶[—ƒí»EØÏg#K@Q•1žÆ1¦A‘Õá“Æl?Ö5 q[’¨µ“ÑX××`Ö]s”¾žýYk¨"qo%jÀa%Á:lΖ¬Ýª£Ë!ý DkÞÒµ…0<{ó•©¢¦j'|‘T—I=†Íø!ªqël–Uóßg†N1ñ>f/‚~ë9’ Ò1E4è‰ œæé@¹ïFš®ËÅ‹äÉHÁn÷duuŽôÈê^Ú{iÑšñ1GÒ3 ÍóŒÑ‡áÙ}”—^«Ý’ñ6G{kT´þ;÷‡£ˆT6c…½;sFSÜóºŽÞLC{Ýȵ¯®H"uAè ì69@îvÉ[”¸"9fV¤µS;´C;”¾v½‹hMJæž*І”eªÆ È’Ù¹Ó4o”Þ„Së0GãO9~jÙnÞfm‘ øEpG0x03¨Š`ŽzX´”$™¨¹$S£¢’n€IºÕ¤Kï,˜ŒõFX¸šb™,ì ð³Óõþs;ßõû›§¨@d¬÷è¢÷A0o”Q碾„a×<>ÉkAîw–½0 £}ø¦«²7ÝpÍmÇÚ1~IÀo;š‹ÐR.2Óõ3“‘”f/&n?'ãí„Q²ÌjšolÆ»á0Ð\Ôiï?3Ûyc&GD;Öôàï÷Í~\R1ý'£ÿ1^.¹¶ìDÊÁ–ÿ.÷™m$hÑeü¬•®³á–‰'Þ;Ûeç'2"2ñâÏ1]PÿB…/7¶ü2¤îñù·ë;¤»&~÷2 ¾_zÀ_±Ö>/V©~¹„uŒÐ0”Àh¡ä_”ÿÁ@¹ë¯9¯Ãmó…òPzx”#Ú0];¹€ðl1Gr_}%Al8¾×d›¶ -D;ÿ0!O¦Æ«¸è± U^ù5OšG1Ð å-”–¡>wùquÅ€’zʧÀÐmå»ü¡J(WÐhäSÏØ”(ø:D0»k"5DæÆ»ôTÐŒ_r¦@#sÜ5ÜñÍb˜¬3VNí/Ü„Œdàw"Oé÷”S+oÍ.`þôYRÛé3Øùp-V»¹ëì<ž&Å"sëϯ›ÁÏã× >›ù´B¬d$Br -Õ¸7°§rµmŽëÍ}Z°ŒÍ‡Á øÖ ?×ñNoŠN~[¹íûbŠð÷NÑ`8žFÑ<È8âÎwøMê<n›ùp©Á}q¿ÿapÅ tA¬{øcS¬ƒØI1)$û¥‡½ÎnnQP=~sy8óŒ[«Núaì+9cÁéÃsÝzî2†‰ð�ô(ÞŸ+EvmYüÔù ºM>7’ãÄßnÏÿÇBsÞs¯@Ù-ª@8ìZ¥Ë)ߨ{MöØ•qþ±8e7CºÉü#“rþs;O<w9ÉPQ£K|óKªÏUPª³sÜÃŒ÷—3wE]að4_€ÖYé;`™âùuu$å G2·¨44{ÊíUàÑ>\¡\ew+!*[š6[zš*lg¨æ¯ù¤c¾]È$œ@÷´’ ¤@8!cr"ƒ3'°b '7Ô.ˆíñ%¨ñ~ˆÉ¶º—ƒWu3Zì¤,3ÙÁ³¨üc@¦ýò¡¡³äβÖU7§ÄŒ„„*}:!‰zcêò¼œ W£æÔRA©ý€‚â‡Ù¨ÌοTœ2È5ìŒCÍùé¯5ø˜Bßiö¦Ç4Å-eu¹¡Ý5ÈŠñ(¢ˆ2‡'Z*w|¸*¹›sÔ,ˆ8©FJ6£Cèãï<[èD»ÐR)Ùíˆ}ò‡Y‹™…âKÆ0|¥?AÓJ?â=<(A uBåý™3~`²»š¿ÔÅŽA…’xž¾¶¼?MŒªÂË·â#Ûf _êžÂ}¬áRæ–¤‡É‚îàSüž†´ ¡üGòZ$^ͬjã`¤®•ã AÞ„£¬ÛQŒ&2¬ðb-L¤Œ…âF\—Õ¤@¸hAªh2¤‚g)Þ… XXö{¾0ØpZ‰×bï(„Zç]LK$@àdR›8cÓ9л¤s‚èQ¡A4$³ÿšÙC ÕûÛ%w°d¦q -¡2² Zu‹1k6\�[å‘0ÍtæJtò6GeIcSg\C²�.‘‚êع”¨Žüµß`p§X±Q픇F–”˵ï`þ"$ò®Ø4†o ð/DŠqj%]Ù–™²Œ¦–SªêLÙþ”JÍŽG«�?Þö…!%ˆHìv]v´Ó8Ü4F´WÉ÷›Úêü±ÔýdcÉ›Aâ¨@¦º5¼Výd}#‘~b^•ÄmçßКJî~%~'Šê—6qÝÈ›>¨“3ü@ à–n3²fïn†Ò4„"Äy†Íihƈp‚8Èé~'a[]â({‚ÔQÄYGì…`7 -„Áϵþò66r5iu7KÍý �’qÒ™bœâ(¦´¸Ý‘,Ž,¿œ *¦)rÙ;N=¶u±P=G¹ƒm<$1ò;mXÔŒnºý€T¼#[n§^õž�E=©ìbìÑÒç5((k/mÌ™æâä<ñ–Ðyê(ŒÎXÝoèÎp39Š+/vÐÚ\ÜÜ"ß›Kõogü+ "ö•ë†¦ƒyÅ@ö¶'ëO9qìcΌ&¯ÃW’4Þ…z¤—‘B‚òtÑЮzN%¬ññ[*ôVïÓ½>EC£þkÑnnêB|ÝMµœ´2«šŒvåÿAOñSѺ«ÂYý¤9x6¬KªbœT‰®îBž<K‡ŠHD©é®ù⣶]Ž;Âs2>&'¶*ä…¿^ã]9"]÷Ó¥4õÖËÖŸ=ÚWºŒÑÏzwåó¦Ê7œÅ§‚bmñTÙûõ_T;Œ$'WóßÚƒßfЮŽù"ýLZ€“ -÷aÆpYÃñ0HeæþnCмFË=`†Á}Ú™1Sù SÓ—šÚ‚zÞý“_eD›øðÓ”‡nب«ë5~œ-p7&“‘y÷C'LqÀj_AÝO9 -ñ^åë<‡t€Ñº`Ç‹99kÄí^*Þè ë×÷"–tƒÏn†§mþW„•ÙÊà·:‡ói¿‡Xßûtî‘n/2rfÞ�'Äu…›\8^ö|?¸b†ó2î4ÿØEäºtÑØtt!o; C7 x¡õ=w#.ÿ½JuÎôøÏýê<ñ¶§§ëÞÀë#y碈çÃGš«N¤¿ï›¦›´©å|.6|¢þäIäâüÿ8A|ÌËÚëÞÜYœ§`g´“Sˆ0ÌaE -åÂòf}&4²ÂŠ¦ì]Û~‚t`Ÿ¿oµàÅoªãåH³ºø¶Y!Z"Áœj¤BÁh¯Éˆ"҈ʼnЇåZD>×=ÂËIMØl[àŸe¢C^Üê»™ñanr£¶¼ºxSŸZ)'Râ©W:³Îlù€íÏ6 ¢¶»WpØ*8rà LXQ=¨*�ÿÊ)+l»ïué˜CÜ3äÄ 58)™t€¬ÛتC× -ÎÚ¸ïeŒgÌ&9âÏÁ¼Š•²±Ó¤Qîºx‚êƒ!Ì‘§ŒežKTkéòw ÓðQˆ…CûvÙ•N^ÆBñZTs¤ÒÆü*&‡ˆ˜D:Ï›~¡i¢v˜W§‡f -ïŒ)ä~F…`¬(ä÷ó -át6¡á %p¼ÃÌ6¬‡» ¼*=b -c -ùá"=oW©aóÔjüPCøÉk¶[½@>Bp÷˜ÍÀØ!¦>}à6.¥.„½Šî�ã-›1"¬Pèê -j^:B[}ñ¸¡nPLa=+LGêP-4D_ x°Œö’ û¢äP¿tM«Ãל£–Ò�(À×R-Ì€7b鱦�¾è<È3º: D½]Õ"¸¹–{Aâ¯;±GÑû‚÷‰ÝÄ8õ‹üÃÂ/ïá%þ4‚ù’Òº"Q™0º}âÌá“”¸x~/6]Ü° ½…¦‡âCÿ Šh*';,„Úž0ŽøQFC[ÂEn�¤/·*Q$Æ=è¥u¤ &G -¬D¦’‘&ͱ¬Ì. Z�$œ:MIé Bƒ')/w0Ü} - qO«:oš„åJžrÚí wlÖ5†Ž:',0ÊšÀÔ®*ZŒøÁÐ9Æ’vkËÑ5ðr§œ4·Ý:§œc‡—�¸Ðk½®‚¥–ÁªüjJNIÃ]=`n *Fž[¦Óz3cÑàã«HSÜb¸Cö˶=$r™²<ˆ1—œ`ØnUZ¿z”®'Á£v7 DZǂRA„ñ’«ß‡µ¹¶Yg[›«æh‘Úb‹àµk;̺F˜ü&Ý9íFÂø4Fðƒõâ<ëPß i鉉MÕvb¢ù4C's/dçW®f¤¾±ÂJçË~2éá,©+G¸ùà$«Z•¿½–¥€B³¬¤å—rª“¬p°‰Í-?{m!<ú³›Iû[ ÆdA!²YTÄüÆÄZIFæ(D<YÕ~tJĨø n~ÐàÝLÿ˜etBù«ŒE–—SMx/ãIQÔ(‹‹nöü;ÿK?‰ÿÿG<Èd -8Ž·±”¿-ÿgü8o‡Ïè-Ù‹†{˜Kç\Ü"§+…ÝÓP;ÑÙ3@šÁ’AXÃ¥v•Åò¨T?ODÞ/¸�¯ôvϸô–„pi†Áåh!žâ¬þç0É¢Ž@3ëXÏw -œÑÔÚ•òtTxŸ'6FŸy÷ü›÷2Û+«Âð«œËáÊž¸Šƒ„rBM·È]ä¶ DŠcdŒD¿=߿Ω*{ïãN :j'®ÚÓšþaÊ´—tCue‰—R®“*”ÕHÈ®@".ºyX!>öACGßí¯‚pŠ”€Dw¯K&OêaVx1+D²óçü²î$zÏTXÀ/ïF2˜‹AÑ{÷N+†÷¯ç«<ö¾Æ*9òì�ªVݵ"3rºäÞN„¤édüU«¡ÐÇ�/�/äÜ;gÌåü–¯Õäúy Cz6X`‚%C£v1ÕÔ™G!q¥½9“|cƒq5ØÉhÐÙä•Òd€k•Ì�ü§UÂCÂ¥ðz'g7 h…¡DÝò¯‹žôéÎîa>猣=G²sF¦s¦¬Žpõ´ã”ý „¶á¾DGtðÜq±ˆøw†*¹uÇî,w mu¾gì·íu×»£/ŒƒÚv:]&ÉïŒ|=@ùm›iÎŽ»Æîy!wÇ!€òQ±MP\ÎÏI†ÕP¹x+ˆÁO_Ÿ`PE $‚ÊTɵÒ)NÚÒ²]‰°]’Öô+)b^,F0|•àÃ,x¹@{·ŠYÚ:8 ‹1f%Fü+2€aš‡‹<`'N¶\“KÛÕ‰\$ÛË9ˆµ«P´L5÷ÃÛÜ$*X“¤›êŠ=¼e¡«f‘à%ôU)*=RŠíÈâsà‘!KzVT>A+šœ!7e£GY\ø¢©Îö–X󪾋ÌW¢ÚPÙz<,5UlÇfµ.¦ª¥ŽVŒ/YÙ)]ŒÚ :uµ‚ؼøâ$‘³+ÈQÀ²y €H²ª9‚å=È¿¨Uœr$®œƒÚ˜Þ‘ û XÁ…»µòÊ&„£k'à§É*«ˆ?×s ÍR2>¡ñHÛn0¬XHO³ø½L {ç´<¹ÚËf§, w1²~¿*Z•³Ó9-®a(*Óaþsê=¡B_luê¦ý¾ÒÄuAµDŽý™Q¯Ô’stçÏU›Õ1íOJ–iu‚,œZ7ù4L\®Ý ›„&s7Ní)Ô½™Ï5�IíãagÀÐ21@Áå3ìäÄÛ@ñ´ŽñÕú…aí‹»¦ÑôŸÔw5·ó{%7èXH©¢ ·ÊNáJr”`\ÐúËœ2�nG0§€ê”ù=ß2ÕOÜË,Š!‹ƒ¦`E—Ϫ1÷Z £‘BTó3}›¶c¸˜7¤¯ˆQ/]æ&F ¸ OØ»^æaèòõ8mÃ,C ƒftC0¬%ÇäžN18½Ê Nx¿ž»Î~OÔѸx@‹"¶º££kbc:qç3¨:oPî|Í’»›ÀvŒmìcZŽ0ÿ4‡39Œ%˜ f,ãLT{]0ÞØM3iŽ9“ï^cÏ$>ÎǤƛƒÞÕY–Œ“þ²¢yI Z.41ºþ¹ü;¿øåÕ_¾\ÝÝÞ,{¸ºùtûåqiñõ¶„�ìï¿à"‰s™(üñõ¥”GD¦XR¡°¢ÄuóøáÝ„ìÇÓ$}ÈkƒDM -:qèåÝI1_^òׯ~àÇ›·¿ûtýøéþËÕÃOËoôÑÓß—7¼üîöúþá†0~mQýì«ß|w{õùWŸþÍâåÕ»·ï¿ÿý_ïîÖ¯^ÛQ¿]^½½¹ÿñöãÛ÷ý#ùóãOŸo?ž¯ßVñ¿½Ú/nv¾)ÑÇŸ–Õ-eyõzùðhTÑÄ’œ0x H~]í#ß®N‚{¹Ä(pÁ¢ÒþÌOr(žTi~Ò´8˜Š´-ÙÕë@+`T²±”E2ŸÅ öH|±jW^Fâô.Xgîpd2 ³`:8ÌÅ]c²zŒT’Vx:yϘuÆ©ñHTM^¥T¡¬—øH"X•�0¾)FcnÚED…€‡‚z ƒË -³œ+ˆ4ˆÌLào©°á{•«St©z\„m(mot¢1aëz(¸Æ²¢@.e$R(¢Å³£DjA+“NF�œN"):'’)Vé&ŽàòL}¸ÉoDÄ“E©ª©‰¦Ø@+—ŠRDã�€ Þ(NP:‚y.»©¤í¦*€CŠjÖx£nTS$Z1䟑ñ0§sþAßrQÅtÑ8ˆW€ŒµÆã5a« FÚZSI2%)$ƒÄô`Î ÃWÐ$Å£Þ¬Z´†WÛž3ydòŒòÒ€ù¨Ñ°îFvu:t€d8b òd4©™õ~òÔÖùút¼;NæêÅüz¹@¸7ÂqKgHƒŽRº8Š€•ñRKÌ0¨íÛ‚ûîür$©J#ƒäTšê"øú–<9d9ï -D`”„zPó©k÷Âv¶¡¦8”2/îžÜ ö] A§Ó2W_ÔöYn4:ù\æ@Úûòúy€(Tš»‘¤ í\€z‘ð ¤F€…®øEm½RÁÿ"B]Hs“Ðt€ËY ^|B=¿œu¾Ö%ÿ'ÚÙcšŸkîoa¶‚ÅAp -«°ZÏ!c™êÀpŠDCÕĤ®eÐoÕ¦$Aö�êj“vÕã¿}g»ž.!¶+ÓDh?ßNzæÎY5ÌEn~ÈÒHØ¡²¤5ÁO( ´‚]ð�Å‹×Lc> 4ü‘°‚{»<$…¦:iâ7ù„lÑCq<OFPL¢ú“&n0H1ˆš4ˆŽ•úFóø¢3ú:še`¶ª'iÏ®ÛqFA´·¦íeÝ̘“º à¸>gîèi>çûσ»ãiNyZ/+(³9ч,ªñ°FE3Û)†ª²Ràp\)}¡çs=|4[åÊv>i…ø2Ây»[+!€:Þy?@M’L´ùnn3dܦÎ:&·•¤u2b3ƶ“>h?ªpOzž|ì/Ëí•ŽÍúVBIÝwÊäñjì.Úy¿Y.ò,ÐZQ›Níˆ ‘�‘ ©Â[#KÆv’RÁùS÷¯âbÚ„ö÷J”ó3´Ìã6µÊmTùˆ9�_ñ\2>èôêÒI‘=O„¹–˜Ìµ“CC.å`kÈ7¬‘=e(Ö‰†à̸Ý3ÖS¾‡á–˜S#pL_Iòo;ýÄS¥?x*«B>7Ô³¶Äï¡P“yÆyïÔÚ` :O+º"ß™‡ Bæ‘ÍÇ›Æ ›Ï‡t~Ë8ëû1H1çfD›)½#VíVi¼©ØnNý2áï^ßÍ8>öï30òÆ»æ_p–~ysyÿú}ÿ§«ÇÇÛ‡/ßÿóãw·ÿ¸½z¼½?£Þ~¦Èåí-ýKŒès(m|¢#ÄÛ.0 §”™2‘—dü*Ðö¬ÎÈ€'ò«#eŒÄek&žèÄ°©Q�ŠøI)èñ¤$«¤^âÚ—&ÂE$µo#s Æî*¼´Hi¦Žmò¿Zc¶|`m¥+=œ9C¸ =YQ}%f˜¦åŒ K`©”Í ªlª§²Èã3(>´[ +–Ìáœ4ú(=Àù_‘\³§¤ ¨�xlqô€ÒB]ÛvS¢ÔH ®ÎX*Z˜„=/ -@‹ ¾.D{Ø«Xñ[<œ¯Í±êkÃ,[ÐÓvn;dA6aòïô!n¹?Rµ;²½ŠãÕ|ÜÇØë¾¾Ö9ÒŽèÒFi’ŒC»_ÏŬ$öÆË´Ù*z¹iUð²YŠ¶É∲¦.c™>42—‡Jg@&ɪ�í\^c6 -@@†EkŸÔ@)ab±sÉNç"ìé" x,,®L¥á¢Ú¼ä;ýTú¼b€væõœÓ¼HWp�Õδã›ÖsðnžDDØô#$�qË”Œ˜rIó7K´„¶ß.Ú�ü’¯õx¾”ì<5ÊT¦ÄVô„h‰÷‚Œr…_½o2�†ÒØWºž’B®JœBÉ@É·ZB$’)' žÙ3µ’cÈQÞ²ÿ‡ürK±%«¢hWâ[0Ùïǧh ¶@Ûïklj“™UŽJ}^(Š<±ë1çX -_gr’k›Ì344¾™sZF/ùh([\+ÑÎøÒþпÚäbHy„LFÕŸ¹ø¤>>Hnã”ù'wÓ=hQbŠS3ÊR'Ã$=Œ Ÿa o@›é©Í“å,Hu‚N¤IóO_ŽbÀiyrëÝHâtâƒHú= -þNwƒÌ¡5…™Œˆ$&³2´4\ìÿcüqÿÜXHi2’vî…|®²;%Â÷0pqÕA¬á49CF&"mU‹mÑŠÔ% -Ü¥ùÕ{t2lg,°Æ±?ù#4Ñ¡ÃR_í~ìª*D ÇÂ|ÂjŒ/z‰ÔTbaCí›Teq¬ÀP9‘ihî-LݪôqÛ :[ñÕ1¼�[»pŽãzzËôwîgçšýˆã‚lDÿVØåÏ©" ÍÁW©ÖŒ †fÌ9s¼r6Nlî ý7xý†Æuý5Ö¡EbH\}fn±|«—Ü÷7ã÷·»êUÐóØQÔnE×›(ºùf¦¸¬‡¶"¬¨Ì%xŽÌU!ÝhÅݪY¿ü$1�ø ½É°\£)8 äÒP†:Þdg,-åÛ>Á6ü¦‰]îà£.[S«±g©àDsöà€¸aÆøÊ=Aa"K´¼DBX›D"Ýx!Äb·r#&BÙ”F‘³UÀäÉ:Pë8Ga^ä‡,yñ4j ¿Ï…|ãÁ"ÊŸ_UjñP(¶Ä¯³>&“o0jŽ€>=Þü6‹ø×ã¨÷ºóÎœ]Fü\w�ǬÛÀe‹ˆ®Ò÷‹oº!6ßE)äÜÐ*„`{5&ݱ•væòP)Å®$ÐF-Á®¤”yjEMV2HŸ#¬#Ž®÷aÑêÁÔü$yV�7Šê@W4Ç® %.Bv? ÝˮΠÜ@_ ~C@é!#•vÜAÀsŸ}ؤ"È`<I›vL=9ãs»éçy`¢Õ*!4ͪe�JļYÕ{DMžª/â´Çk¾ð𧼙pÔ¢_äÌFB¨… ˜š^ù™pôÂt -ØœaSB6O±Ì–bg"jò:Å‘nAq(@ótC7�^÷6¡NÒã¦=KNtÂyÎ^¶'îòíÌp[5W¢©UVX¶÷¿I -±‚üˆ¥¦_Ôj®Š»´'ëÖÃòÄ7X~EUBu*.y‚*[p5ï“U/qJE½/‚€Å-�µâë‘U“³þ2¨]Š=ÝÏ”Ñãä2> Ewù'ÐI&HD‰™‘ö‡œó¾÷¹–êÁ[õfÍÕO6º›’Ûk‘‘P•Š¥Áê5OD!„Œ -‡*:pX¢7æ]ÝíÞ‰+Ejš32Çv›„òg¤àÞÛn„;Ø™¨EòÀn3˜S"bP.60Ëêk›»5à0Œcǵ— aäæ¹Þ†UhïÓœM~žÑ 1bPoZX,»,“Æ”8^;_G‡$ræ�¸9K£c -qRvÌ"“qkä‡ñSNܸNº6ˆ‚X1ÐÕë!/£‰~÷5~…Êùøþ—õ¯¨ÒÖÙ~C'÷ÞøU÷ž@”ˆÛû£§RíÀ$uFµ§Áµ–\À×|6¢ÆàT~HG×ZÑÁvý‘ŠáEÊyk þÏv뤎_�&œƒ·Ê×÷wi0ÄJå¨ôrÄkŒU�Ös5FCq‰¢Ùñh²Cå¿ÿÝÜŽ_d“€xaYú¿–ÿ 6þ¨ü·+ú~ýéïüïÿŒ[þ%~ùG4«ó‘&BRŠTŠ† MT€™èÀœ\Sq0Ò·:ž™qU'>*WéŽQ“ª€ŠPçâBÔÂÏ‘uÕ>yv¥+?<‚ŒKÐ hEÙ.Qå˜ÏX¥„§²Ÿ¨Ã¬…Tm ’y�ðËWpï{?Ya@®!žcâ)¾@î¹ûÕ3#XoÏrg�€¸Ì5*qcÏÇ[x.û cí&æ¬5 †å‚Ûg®û¾ã²åÞóàÁaMT/;Ì‚ÁíØ"ôÔJ#µƒ#ÒÝ–%Ʀ±ûÇ,‚!’ jIÄ#_ø� GØÙÄ=™ž˜«(hýæXÝ$ÁH¼àP{é‡x÷`DiÂ)(½ðonç$EQ°HÜgj…¡v:ÌçÜ´ƒ4>Øe†w|ä¨')ÐÕ 'g‹A{Ù7$QžjÂH½ 4å:nn{â0,kïþ0Å»Ëq¦¶×Êת¼²#Ôh»ðàÅìzó.-³b* -£ž !ÙiÆj°eÅo,íKQ.®ú!“RÕïo¿üæ©ìxVÃ/Ïà†g¥ÔÍâËà$°n±r«„=ö;©'™jMÜu‘†ÙÀˆÃ+À‡º6=:%2I§Ó^’ŽYÅë?(¾¹}ß¿‹uQÚ ÀØÕnºŠ§Až÷`\é“âg£Á†=fUº™&`“ü<¤çrQ—8 -½þþåˆØZÈ´‡Ç/Ì$B¿VûþðÌ–yÊ€[8Âë÷1oò#BÆEíÌù"?B¾LˆPz'ÞZ¨ÑSh×ço€ÌŒs’û7J¹8wá tŒÁ¥ î˶8š{³7CEÅÊ“Ä“áNEÐÍЮ£�[")µ¡Ð±èì`‚Áïì5õÊïvÍ©y¦ •‡¥¯¹®î85zA»l‡ ‰Ëv‰ -;ETP_z&¯¥ßÓš3÷Š`}ã‚i³Àdz\§c=4Ú \»3„é.ŒÔPÜÍ99�'ïÕ8\-i–-9• ƒKP¶gŽJ7ŒÃ"1<w|Ì®Vx¬faèD;´”žtVQ¬Êo¿@"øˆyPw²RCÙéÈ_²5y0rø’âMèؾchñ�»—3XE)ìXî>¼KËð³‚Ò“üF\]kâC`>jzˆ<3¯¸KBÏ4Ö“ž ¯N.ÀÙW,J¸fñæÓ`rx«ÜýA¢³/ÂôÎ֥樟j!ô¶¥ÖYþ’LòX,Fu8ó¬¶(ܘén9¨FsJ†fXZŒ�Ð"6\žëm„ÚóMØ~×L·GøÆÄÿ»QÖŽ4¤8c8-ýè6ûÕùÌp9Úh.^5r|9"HÅùP´ ‡«ÏÎû!ÚÇS™Úëº'&>1èQ¶T;ƒ&Ϭaì/ÄÎt6gèsbÂ@.¸¸ïWÔmñ˜„°*ˆù"§æ0V‹ßúˆ@"ÑœAMú4ÊèDƒâǯ1åJÃPåu…“ƒLgÆZH/z° N‹‡2è¼2Á—‘NÓŸ‹2;A&|=¬èÆíÉú h�nq˜RaáÞ~ù€`ï{~xŽm4˨ü\:ZÄÏE? šMæ.÷Þ�æ9T; „ì*~ï÷iV`„(ËðÁYÿûÏ_Îôýás‡ASÕ|⾺‚”Д“ãoñº»n0^Ì:ÞQ¶—˜-&!ãï¼°?þË”:eù)“4áYÊexg¿”û:W<ò].¨P€ÍXYƒøRb,=O“¯Þ…é[$ö©`i,® aÙD_ë>¹únD弌=BÊOSÁË”Y`lñ>w"$Õ*öêÚpÍýt÷„;¡‡/R�BD‚_º‘SÆ5åÿFé–ò(M¦ZŒ¶�qéû«>y*3穀ї–AzHwyD/( Ÿú,ŒÃîQ]oÅ6™'_b–,¾uY_— ^N+Ïý–ø™Ân>Û1zy‚ÕÊù;L&œšM>;ïéþv/„Rz\.àt}qD\tü—yæ%ã+¤°½í–»€HCßìý1éˆ$@^ãa^ñöËÙ@[¥qܶ=0ð/÷eÃEC¼ÈA7§ñĈsͯ8B–1µe–V†É´L5ûØæ 1è¡1ðóicL‹û*e‚Ar®Î~•ª(oûþà¶}ø0ž¤!ì¨nñ©€^U·/ɉmén×Ðõ)QÁY¿ùûg¦ýþð!aša×Úy€ñöOÀç’¹…IÈé¿/³#Ç‘$ -ªB hygâ{DYVþuXSÊlû£gš¸"#^¼ã—áÓŒÊ_ëÈiý<3Ö%…ÐáõocÏ¢4!óJ{y’Q´ÊOš ˆ•„VBŸüÁköxÉFHïïÔâ‚çXð‘ØÍOÔ±ýhŸíGþÖO8"Töà׃¿úø#[QŸ`¬8l”ð“Ìté¨Ò'¹Éƒ¿bÅ~’ NóæNŒ¦ËP~,p$ÆǸ¹]oû„T¾Ç}ý -³8iªü -¾dÆøœ´…¸Ò™"_@#]ú¨l!œµY –÷Áû&4 -0°ZLæ¨,2ÿÅç·M}¨må;K„Vý@0( KÐ6Χƒ˜8ãø -^œä¤"Tð5Û»m -L…à…èÖ” -•6™6)>L¤j>b.}‘Š~Ð×Ò×h?rÞB«ž|¹Í¢ÿ)¯}½pò¾öYš,Ç3‹™{ˆ§Ò�ªÁ\!dŠ'xqŠ'¶¼&Å5kUKP^òµ1µ´‘)*Y–Ø4Þ»¢ü$—4Rò!$pº»cWËë1¨"ÐA»EÿœÉÄ@‰eöÀ-¯V½Zm'©1{<Õ%¿Ä–Í -ÕÀÖ¡O=¶àpr@mÄ0¬É3Ƹh ¦!¢kw,W€L¢Îh€37Eo7ôÆätNµ«ÕUE4¡*ýÐ+ò“\IK*JmàŸðnTÇïá}ncoWm¯ÏûŠŠX4=M'ÿSE5É0’ÙñTå«vš4‰jfwGÔ“¬°’ù(æÙ^õ†+ø,c¨úôÒ—%H|X`ùLÀÚj×íôă{çØp ,¨mUGëëonŠmØøü/,xµ‚gAÈÛ;½q“›%tJ€H‹4w 6EòèÂ"è8n8Õvû„ T`§Ì«jÝýáµ:mb¨é� Ó|œËCë·Ûí¨l¹ŽØ´Üµ?Jmógk Њ±a’?Ûµ¾šMÖf ?½þÚc&¦½.*Èr_5±ñl}x؇îÆ<._o‘c`¤·÷ˆ¼©Rž\”9QŠ¸•Ò‹·ÌE©]›ÌFgø0Œ·H6ùb@3¤âbÉÁE:¢>eLðbÔŒÎ!w4Ž!PÊë¢Þ¬ó¡+¤W!Y><Ͳ¼‘7mÁ×»¦‹Ô½vŒ5œ]ìŸUèRRÚS†¶q:îSLì¿.±1,„ã…¿Iv•“Q²Ô7¶†\ú&€{fÖœVŸ:˜YY6”¥ƒZýÑLJ�.Š9ÊžÛ%°@\…³n“òK’¶ÅÿÃŒ¥Ò~‘í;¾Aì{|@> -SõÛJˆ–FÔàjƒŠ¿Œˆ'«ƒÚ9Yú¤Šo“™ôM‘B¿-Ñ`ÿ'’H÷CìÓ8}Û-·Íòy/´éëË©emáÁ%V7@¿ÞíŽÿœžê—O|xϗŸX{¹3‰.OÜïÀÐÛ–>W·-V•ÎÓ Êï82•ò2ľl´sL>™éæÂ%éŸ÷¬%ãÜ|fÅVk>Pb÷€-ëP…íÏ9À½k ɽc3ìÙÎÔ†ßgñT>o)EÙAªÌÓ©ÜBŽ¬Çpd½ÒáÁ×-ykËYk†|Ç•©$Òh -6ƒ~ìµ;ãWÖ`%µ©Á’º×3§xô%œ§WCée;¤ŒS,¯»þù3ß_¹0Ê㼧IkEß‹Î<K(ó-ŒÊ•(Ïë\yÄíPs#ÃηþHº¿·Tv-x�¹w$ êf9l4\zHóÖNœœ)nlB£ðFþ(9ý6–ŽùNÇùov°+qGÁl³1‰ÿø{š-ÜP݇ïÕ äo §.+œ€é®Ð5~âÂhèZÞ±Õ’@³vàŸËµxoÛé³7š -îüà¯PNÅ.ïÔK’u¡9€ -=oóÉ”='g¨‡¯(óTÆèø(5Q´0'WÁ•}•¬ßíê˜<5XDb.’ˆå¾möta*9 E¡•ŠàTkFÓÊ~ƒ‰cÊO Oƒ Rñ_`ʉ²nºÎ~gé7ÂïÓÏÓÔy~®ïÏ!.íº˜Ç6éXe«]h <²SÛýç›ï6sOЋæ©+3ü<²%Û»6°´NÏ0jä~(¤·!£ëPb‡’Î’²‰IZB½›¨Ò»µÚžUѯ}ªF+’br@-Ç7"¦Ò_Ù7`ôÄQtâB®á?ýje³C6;„ -¤ -vÕE«9\'‘ö÷JZ¨…&•iì+!Çû;°â”1hrKt-,ã0¸8ºÀ -:�ƒœü†î^bêµ¢îú<¢û,”:JP%À[£í*º|óæ‡;€©ÀÄYvÇnw}؉ñIî �̸¿ -ÃpÝ?ÂœP£Zs°¡À´¬ ô£ÐA=áßNë504JÔí5!5sK ¨ävÇã‰nwÝ:ƒ8†3åå(Syèn×ý„woŠØ_SrÍsAñÚÏ7¶ŠeœìÓz€F8è”+Ïþ3¸1Þ› 6øVˆuß�Þ“=ý†;>#<+>#oý°4~ò3ôàaóª©ûls®ö°¼Q\¹Þ¯?vŸ®vm]íRÓÅI< 1°õkÄeâE!‚Z)Ë'ÖÁË:îÔ§>Pý[Gä›oÖtÑÑÖ§”«šD‚¢;¸ß [eG¢Í7п4òÍõöxÄOR¡þëb=nËý®84ÈÈx)”!`ʲrð¨k¥œ¤Dêd5Æ]K…øÄaø:ÎoE-¸ñ4+‡vpõ—ã³ÂSÝ4›@‚#æïÆ*È7¹·6QÌD}éèžÌG|{(ÞÃ*ž¿¬¸eęƱSÍsâÑ2´‘nÏ–ÆÇiäÊ&Þ/GäyKm"«3,”½¬¼†Ž›ìžmWÄÛæˆðõߦ-ïøÉ2bð{.—§OÅ`ž>ÕÝþ6‰9„Øp³p53þñ˜8R_¨#MK3ömQÿõµ¢zš}/޷ѵœÄ²1ÆË»GŽ3âæãŒÄ«G‡mY`ª¸ lP»Ûs7æßÉBó<ïo‹/ûm0ŸÄ�Ÿ£õµd›Ú˜Ëðt‹pbr%o!åºð˜q®‹ß IkízjsY²gÈiùõ°Æé ¼,·so~}$ÁkÎ:1ÿ뎧Üy¿ë;¿BV «+KÒ¢¶#N0ر²‡…uÊ#j“ïwl¡99çoAy{ºÈv²Ì2JÈuržšq4ÖØqbß Sl¢bÜu*ç³117ù¥¡ªºX -ÝkÐqyƒuKÐ/ý{±q¬pˆ‘j -Õ'<Û¹gÚ8ä ê“ô_ál®JëzapP‚ª*§_·Ò•½ K@¬ájð ïé9føH69ë#†Äžö°@‹?Ã}íײÌ36ôL-C (ΚâËÉo †–Z 8æ8¬2=ÜËãÀµ•àÝ£z0úÛ†N–Ï%œ”ÛËà -j϶p¤Â’í]iP ’9N‚Uh:6áe%�QI›Š$õB]¬µâA™c/Ã9êØYHY>Î*›S걫¡„øÙ™}§ õ^Çäõ( n†‹å@¿@ÜPCiû¸ËçÔÈ�ZzüMj쪤Œ©²vž€BÀ'O³El ŒFE¡¥y/ ~,=…íìÌyf^BpÑÎŽS?O£t|‰ùÀòXÀ±IzÝFÓø /Uã^ª[h×ßÐSÖ‰ÖžõéõŽä‡³cÕÞþóCC•J5Û©Äf)/x—wâéPJî§îâj‚¦uJÆü!ÚÄ—z¼Ó;´ÐðàÖ]Ø®ùM|îŠ�Á™Ã+& ràûñ¦2«óΡ·ô’ÑzxutYÏBã±4a’pËÎ\n¼øÕΤsÒ�‹Ä\¤y]Œ.³Â¯V1]9oõ.o¶B±>t7;£b#£‚ƒó(b‰6ù]j($*ä‚»ðÁcO%Œ±‡Ì-ovø% -}…±ŠÁµ¦+�ŸFüÙepÄ0ÁV\Aˆ¡”ôßHv%ì‡ýg„@ÒÞ‰ÑÙL.•N®CŸ^ã”—³ËÆ@œŽìD¯*Nn»âÕ ÉN‚ŸJN´¸!þ%pE”³Vº5LŠH˜‰™Â&üÂüÏÑÒHžÚ9š"ý œôk—oLËJ"E§ÂßQ/¥2fì6|Ó1ðw8.ÐÎ`0Àöˆ’PïjIÀØã+ Lzš›™ÈÂÙPL!jÁcRõh“¶¹Ô£"èCæpvû‚øQ Þ·÷=e¦9¦ÜM©¸Ó¤çƒ0$¡5Z³¿Þ†¹Ø`ä6ÜòókèDV/âî–êØ~a¶_÷Ý_µaùd¬þ�|·æ endstream endobj 6 0 obj [5 0 R] endobj 42 0 obj <</Author(Charlot Luiting Ontwerp)/CreationDate(D:20160128152313+01'00')/Creator(Adobe Illustrator CC 2015 \(Macintosh\))/ModDate(D:20160128152313+01'00')/Producer(Adobe PDF library 15.00)/Title(logo_scipost_RGB_HTML)>> endobj xref 0 43 0000000000 65535 f -0000000016 00000 n -0000000144 00000 n -0000023833 00000 n -0000000000 00000 f -0000026350 00000 n -0000648677 00000 n -0000023884 00000 n -0000024255 00000 n -0000026648 00000 n -0000026535 00000 n -0000025433 00000 n -0000025789 00000 n -0000025837 00000 n -0000026419 00000 n -0000026450 00000 n -0000026721 00000 n -0000027445 00000 n -0000029759 00000 n -0000036607 00000 n -0000061364 00000 n -0000084920 00000 n -0000137710 00000 n -0000174693 00000 n -0000211298 00000 n -0000249225 00000 n -0000302736 00000 n -0000341772 00000 n -0000358842 00000 n -0000362528 00000 n -0000381817 00000 n -0000396802 00000 n -0000415347 00000 n -0000430955 00000 n -0000446260 00000 n -0000446955 00000 n -0000475523 00000 n -0000504938 00000 n -0000533859 00000 n -0000563172 00000 n -0000592122 00000 n -0000621327 00000 n -0000648700 00000 n -trailer <</Size 43/Root 1 0 R/Info 42 0 R/ID[<D24635DC01D44DE0ACB86A5B85AB6FAE><CCED94DB4CCE482E900372B47A21B212>]>> startxref 648936 %%EOF \ No newline at end of file diff --git a/static/scipost/images/logo_scipost_RGB_HTML.png b/static/scipost/images/logo_scipost_RGB_HTML.png deleted file mode 100644 index 6a103d019da8882444b1c66996dc0c276a64a8c7..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/logo_scipost_RGB_HTML.png and /dev/null differ diff --git a/static/scipost/images/logo_scipost_RGB_HTML_groot.png b/static/scipost/images/logo_scipost_RGB_HTML_groot.png deleted file mode 100644 index dc0f94c2508f93be3a8dc6e406dd81b2f54799f0..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/logo_scipost_RGB_HTML_groot.png and /dev/null differ diff --git a/static/scipost/images/logo_scipost_with_bgd.jpg b/static/scipost/images/logo_scipost_with_bgd.jpg deleted file mode 100644 index ba879cfa970adc1d3ff4ac59a8547b2761ef6216..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/logo_scipost_with_bgd.jpg and /dev/null differ diff --git a/static/scipost/images/logo_scipost_with_bgd_small.png b/static/scipost/images/logo_scipost_with_bgd_small.png deleted file mode 100644 index 15c5fe28aae9957e4a39ebffd2c4f96a754153e7..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/logo_scipost_with_bgd_small.png and /dev/null differ diff --git a/static/scipost/images/scipost_favicon.png b/static/scipost/images/scipost_favicon.png deleted file mode 100644 index c2d01c0d5ba4bd63a98528090830e9820e683a73..0000000000000000000000000000000000000000 Binary files a/static/scipost/images/scipost_favicon.png and /dev/null differ diff --git a/static/scipost/info/SciPost_Business_Plan_2016_08.pdf b/static/scipost/info/SciPost_Business_Plan_2016_08.pdf deleted file mode 100644 index 887753cd0dc51c5af519b96be0727d8516e0c39f..0000000000000000000000000000000000000000 Binary files a/static/scipost/info/SciPost_Business_Plan_2016_08.pdf and /dev/null differ diff --git a/static/scipost/info/SciPost_Description.pdf b/static/scipost/info/SciPost_Description.pdf deleted file mode 100644 index 734d0a1622b805af18661d127f209471f78c5528..0000000000000000000000000000000000000000 Binary files a/static/scipost/info/SciPost_Description.pdf and /dev/null differ diff --git a/static/scipost/info/afschrift_OPR_St_SciPost.pdf b/static/scipost/info/afschrift_OPR_St_SciPost.pdf deleted file mode 100644 index 2946d8535758abb0e8ac7b3a8c74bcfb56969d99..0000000000000000000000000000000000000000 Binary files a/static/scipost/info/afschrift_OPR_St_SciPost.pdf and /dev/null differ diff --git a/static/scipost/info/uittreksel_Stichting_SciPost.pdf b/static/scipost/info/uittreksel_Stichting_SciPost.pdf deleted file mode 100644 index 1989cd1366ed337765ef7031034252fd7833ae39..0000000000000000000000000000000000000000 Binary files a/static/scipost/info/uittreksel_Stichting_SciPost.pdf and /dev/null differ diff --git a/static/scipost/press/SciPost_in_FOM_expres_mei_2016.pdf b/static/scipost/press/SciPost_in_FOM_expres_mei_2016.pdf deleted file mode 100644 index e01c67ebd8d2bedcecc815289dd1bed55ea0add0..0000000000000000000000000000000000000000 Binary files a/static/scipost/press/SciPost_in_FOM_expres_mei_2016.pdf and /dev/null differ diff --git a/static/scipost/press/SciPost_in_FOM_expres_mei_2016_eng.pdf b/static/scipost/press/SciPost_in_FOM_expres_mei_2016_eng.pdf deleted file mode 100644 index c236b023af9e18c7ea69e6894e0dccd731bd1d16..0000000000000000000000000000000000000000 Binary files a/static/scipost/press/SciPost_in_FOM_expres_mei_2016_eng.pdf and /dev/null differ diff --git a/static/submissions/latex/SciPost.cls b/static/submissions/latex/SciPost.cls deleted file mode 100644 index 856575d8a60a67d0b6780b10a68bfad461b96f0a..0000000000000000000000000000000000000000 --- a/static/submissions/latex/SciPost.cls +++ /dev/null @@ -1,70 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesClass{SciPost} % SciPost Latex Template v1a (2016/06/14) - - -\LoadClass[11pt]{article} - - -% Layout -\RequirePackage[top=12mm,bottom=12mm,left=30mm,right=30mm,head=12mm,includeheadfoot]{geometry} -\bigskipamount 6mm - -% For table of contents: remove trailing dots -\RequirePackage{tocloft} -\renewcommand{\cftdot}{} -% Add References to TOC -\RequirePackage[nottoc,notlot,notlof]{tocbibind} - - -% Spacings between (sub)sections: -\RequirePackage{titlesec} -\titlespacing*{\section}{0pt}{1.8\baselineskip}{\baselineskip} - - -% Unicode characters -\RequirePackage[utf8]{inputenc} - -% doi links in references -\RequirePackage{doi} - -% Math formulas and symbols -\RequirePackage{amsmath,amssymb} - -% Hyperrefs -\RequirePackage{hyperref} - -% Include line numbers in submissions -\RequirePackage{lineno} - -% SciPost BiBTeX style -\bibliographystyle{SciPost_bibstyle} - -% SciPost header and footer -\RequirePackage{fancyhdr} -\pagestyle{fancy} - -\makeatletter - \let\ps@plain\ps@fancy -\makeatother - -\RequirePackage{xcolor} -\definecolor{scipostdeepblue}{HTML}{002B49} - - -\lhead{ -% \colorbox{scipostdeepblue}{\strut \bf \color{white} ~Submission } - \colorbox{scipostdeepblue}{\strut \bf \color{white} ~SciPost Physics } -} - -\DeclareOption{LectureNotes}{ - \lhead{ - \colorbox{scipostdeepblue}{\strut \bf \color{white} ~SciPost Physics Lecture Notes } - } -} -\ProcessOptions\relax - -\rhead{ - \colorbox{scipostdeepblue}{\strut \bf \color{white} ~Submission } -} - - diff --git a/static/submissions/latex/SciPost_LaTeX_Style_v1-1.tar.gz b/static/submissions/latex/SciPost_LaTeX_Style_v1-1.tar.gz deleted file mode 100644 index cc5979aa69cebeba1816e5b387ac3986a49e4582..0000000000000000000000000000000000000000 Binary files a/static/submissions/latex/SciPost_LaTeX_Style_v1-1.tar.gz and /dev/null differ diff --git a/static/submissions/latex/SciPost_LaTeX_Style_v1.1.tar.gz b/static/submissions/latex/SciPost_LaTeX_Style_v1.1.tar.gz deleted file mode 100644 index 4cc0983f2157ec443a77fe2fb733eda3e5a6b07b..0000000000000000000000000000000000000000 Binary files a/static/submissions/latex/SciPost_LaTeX_Style_v1.1.tar.gz and /dev/null differ diff --git a/static/submissions/latex/SciPost_LaTeX_Style_v1.tar.gz b/static/submissions/latex/SciPost_LaTeX_Style_v1.tar.gz deleted file mode 100644 index 94b86f6fe63459d6913464657d85ada0feae23ba..0000000000000000000000000000000000000000 Binary files a/static/submissions/latex/SciPost_LaTeX_Style_v1.tar.gz and /dev/null differ diff --git a/static/submissions/latex/SciPost_LaTeX_Style_v1a.tar.gz b/static/submissions/latex/SciPost_LaTeX_Style_v1a.tar.gz deleted file mode 100644 index 94164da9fa38b3b5c304ec2a7e348e83bc389501..0000000000000000000000000000000000000000 Binary files a/static/submissions/latex/SciPost_LaTeX_Style_v1a.tar.gz and /dev/null differ diff --git a/static/submissions/latex/SciPost_LaTeX_Template.pdf b/static/submissions/latex/SciPost_LaTeX_Template.pdf deleted file mode 100644 index 601660421b6e147195ce2a3c8d748ed9ca7daff5..0000000000000000000000000000000000000000 Binary files a/static/submissions/latex/SciPost_LaTeX_Template.pdf and /dev/null differ diff --git a/static/submissions/latex/SciPost_LaTeX_Template.tex b/static/submissions/latex/SciPost_LaTeX_Template.tex deleted file mode 100644 index 8e5713cc269b6390f234b87495745cd01a634954..0000000000000000000000000000000000000000 --- a/static/submissions/latex/SciPost_LaTeX_Template.tex +++ /dev/null @@ -1,153 +0,0 @@ -% ========================================================================= -% SciPost LaTeX template -% Version 1a (2016/06/14) -% -% Submissions to SciPost Journals should make use of this template. -% -% INSTRUCTIONS: simply look for the `TODO:' tokens and adapt your file. -% -% - please enable line numbers (package: lineno) -% - you should run LaTeX twice in order for the line numbers to appear -% ========================================================================= - - -% TODO: uncommente ONE of the class declarations below -% If you are submitting a paper to SciPost Physics: uncomment next line -\documentclass{SciPost} -% If you are submitting a paper to SciPost Physics Lecture Notes: uncomment next line -%\documentclass[LectureNotes]{SciPost} - - -\begin{document} - -% TODO: write your article's title here. -% The article title is centered, Large boldface, and should fit in two lines -\begin{center}{\Large \textbf{ -Article Title, as descriptive as possible, ideally fitting in two lines (approximately 150 characters) or less -}}\end{center} - -% TODO: write the author list here. Use initials + surname format. -% Separate subsequent authors by a comma, omit comma at the end of the list. -% Mark the corresponding author with a superscript *. -\begin{center} -Initials1 Surname1\textsuperscript{1}, -A.B. Cee\textsuperscript{2}, -Initials3 Surname3\textsuperscript{3*} -\end{center} - -% TODO: write all affiliations here. -% Format: institute, city, country -\begin{center} -{\bf 1} Affiliation1 -\\ -{\bf 2} Affiliation2 -\\ -% TODO: provide email address of corresponding author -* CorrespondingAuthor@email.address -\end{center} - -\begin{center} -\today -\end{center} - -% For convenience during refereeing: line numbers -%\linenumbers - -\section*{Abstract} -{\bf -% TODO: write your abstract here. -The abstract is in boldface, and should fit in 8 lines. -It should be written in a clear and accessible style, emphasizing the context, the problem(s) studied, the methods used, the results obtained, the conclusions reached, and the outlook. You can add a table contents, recommended if your paper is more than 6 pages long. -} - - -% TODO: include a table of contents (optional) -% Guideline: if your paper is longer that 6 pages, include a TOC -% To remove the TOC, simply cut the following block -\vspace{10pt} -\noindent\rule{\textwidth}{1pt} -\tableofcontents\thispagestyle{fancy} -\noindent\rule{\textwidth}{1pt} -\vspace{10pt} - - -\section{Introduction} -\label{sec:intro} -% TODO: write your article here. -The stage is yours. Write your article here. -The bulk of the paper should be clearly divided into sections with short descriptive titles, including an introduction and a conclusion. - - - -\section{A Section} -Use sections to structure your article's presentation. - -Equations should be centered; multi-line equations should be aligned. -\begin{equation} -H = \sum_{j=1}^N \left[J (S^x_j S^x_{j+1} + S^y_j S^y_{j+1} + \Delta S^z_j S^z_{j+1}) - h S^z_j \right]. -\end{equation} - -In the list of references, cited papers \cite{1931_Bethe_ZP_71} should include authors, title, journal reference (journal name, volume number (in bold), start page) and most importantly DOI link. For a preprint \cite{arXiv:1108.2700}, please include authors, title (please ensure proper capitalization) and arXiv link. If you use BiBTeX with our style file, the right format will be automatically implemented. - -All equations and references should be hyperlinked to ensure ease of navigation. This also holds for [sub]sections: readers should be able to easily jump to Section \ref{sec:another}. - -\section{Another Section} -\label{sec:another} -There is no strict length limitation, but the authors are strongly encouraged to keep contents to the strict minimum necessary for peers to reproduce the research described in the paper. - -\subsection{A first subsection} -You are free to use dividers as you see fit. -\subsection{A note about figures} -Figures should only occupy the stricly necessary space, in any case individually fitting on a single page. Each figure item should be appropriately labeled and accompanied by a descriptive caption. {\bf SciPost does not accept creative or promotional figures or artist's impressions}; on the other hand, technical drawings and scientifically accurate representations are encouraged. - - -\section{Conclusion} -You must include a conclusion. - -\section*{Acknowledgements} -Acknowledgements should follow immediately after the conclusion. - -% TODO: include author contributions -\paragraph{Author contributions} -This is optional. If desired, contributions should be succinctly described in a single short paragraph, using author initials. - -% TODO: include funding information -\paragraph{Funding information} -Authors are required to provide funding information, including relevant agencies and grant numbers with linked author's initials. - - -\begin{appendix} - -\section{First appendix} -Add material which is better left outside the main text in a series of Appendices labeled by capital letters. - -\section{About references} -Your references should start with the comma-separated author list (initials + last name), the publication title in italics, the journal reference with volume in bold, start page number, publication year in parenthesis, completed by the DOI link (linking must be implemented before publication). If using BiBTeX, please use the style files provided on \url{https://scipost.org/submissions/author_guidelines}. If you are using our \LaTeX template, simply add -\begin{verbatim} -\bibliography{your_bibtex_file} -\end{verbatim} -at the end of your document. If you are not using our \LaTeX template, please still use our bibstyle as -\begin{verbatim} -\bibliographystyle{SciPost_bibstyle} -\end{verbatim} -in order to simplify the production of your paper. -\end{appendix} - - -% TODO: -% Provide your bibliography here. You have two options: - -% FIRST OPTION - write your entries here directly, following the example below, including Author(s), Title, Journal Ref. with year in parentheses at the end, followed by the DOI number. -%\begin{thebibliography}{99} -%\bibitem{1931_Bethe_ZP_71} H. A. Bethe, {\it Zur Theorie der Metalle. i. Eigenwerte und Eigenfunktionen der linearen Atomkette}, Zeit. f{\"u}r Phys. {\bf 71}, 205 (1931), \doi{10.1007\%2FBF01341708}. -%\bibitem{arXiv:1108.2700} P. Ginsparg, {\it It was twenty years ago today... }, \url{http://arxiv.org/abs/1108.2700}. -%\end{thebibliography} - -% SECOND OPTION: -% Use your bibtex library -% \bibliographystyle{SciPost_bibstyle} % Include this style file here only if you are not using our template -\bibliography{SciPost_Example_BiBTeX_File.bib} - -\nolinenumbers - -\end{document} diff --git a/static/submissions/latex/SciPost_bibstyle.bst b/static/submissions/latex/SciPost_bibstyle.bst deleted file mode 100644 index eaee2bf486cd5692526dd962b353eb2a3515da4f..0000000000000000000000000000000000000000 --- a/static/submissions/latex/SciPost_bibstyle.bst +++ /dev/null @@ -1,1367 +0,0 @@ -%% -%% This is file `SciPost_bibstyle_v1.1', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% merlin.mbs (with options: `seq-no,vonx,nm-init,ed-au,nmlm,x10,x2,m10,m2,mcite,mct-6,mct-x6,dt-end,yr-com,xmth,tit-it,vol-bf,volp-com,jpg-1,num-xser,jnm-x,isbn,doi,pp,ed,abr,xedn,jabr,and-xcom,etal-xc,etal-it,eprint,url,url-blk,nfss,') -%% ---------------------------------------- -%% *** SciPost style version 1.1 *** -%% -%% Copyright 1994-2011 Patrick W Daly - % =============================================================== - % IMPORTANT NOTICE: - % This bibliographic style (bst) file has been generated from one or - % more master bibliographic style (mbs) files, listed above. - % - % This generated file can be redistributed and/or modified under the terms - % of the LaTeX Project Public License Distributed from CTAN - % archives in directory macros/latex/base/lppl.txt; either - % version 1 of the License, or any later version. - % =============================================================== - % Name and version information of the main mbs file: - % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)] - % For use with BibTeX version 0.99a or later - %------------------------------------------------------------------- - % This bibliography style file is intended for texts in ENGLISH - % This is a numerical citation style, and as such is standard LaTeX. - % It requires no extra package to interface to the main text. - % The form of the \bibitem entries is - % \bibitem{key}... - % Usage of \cite is as follows: - % \cite{key} ==>> [#] - % \cite[chap. 2]{key} ==>> [#, chap. 2] - % where # is a number determined by the ordering in the reference list. - % The order in the reference list is that by which the works were originally - % cited in the text, or that in the database. - %--------------------------------------------------------------------- - -ENTRY - { address - archive - author - booktitle - chapter - doi - edition - editor - eid - eprint - howpublished - institution - isbn - journal - key - month - note - number - organization - pages - publisher - school - series - title - type - url - volume - year - } - {} - { label } -INTEGERS { output.state before.all mid.sentence after.sentence after.block } -FUNCTION {init.state.consts} -{ #0 'before.all := - #1 'mid.sentence := - #2 'after.sentence := - #3 'after.block := -} -STRINGS { s t} -FUNCTION {output.nonnull} -{ 's := - output.state mid.sentence = - { ", " * write$ } - { output.state after.block = - { ", " * write$ - newline$ - "\newblock " write$ - } - { output.state before.all = - 'write$ - { add.period$ " " * write$ } - if$ - } - if$ - mid.sentence 'output.state := - } - if$ - s -} -FUNCTION {output} -{ duplicate$ empty$ - 'pop$ - 'output.nonnull - if$ -} -FUNCTION {output.check} -{ 't := - duplicate$ empty$ - { pop$ "empty " t * " in " * cite$ * warning$ } - 'output.nonnull - if$ -} -FUNCTION {fin.entry} -{ add.period$ - write$ - newline$ -} - -FUNCTION {new.block} -{ output.state before.all = - 'skip$ - { after.block 'output.state := } - if$ -} -FUNCTION {new.sentence} -{ output.state after.block = - 'skip$ - { output.state before.all = - 'skip$ - { after.sentence 'output.state := } - if$ - } - if$ -} -FUNCTION {add.blank} -{ " " * before.all 'output.state := -} - -FUNCTION {date.block} -{ - new.block -} - -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} -FUNCTION {new.block.checka} -{ empty$ - 'skip$ - 'new.block - if$ -} -FUNCTION {new.block.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.block - if$ -} -FUNCTION {new.sentence.checka} -{ empty$ - 'skip$ - 'new.sentence - if$ -} -FUNCTION {new.sentence.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.sentence - if$ -} -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} -FUNCTION {emphasize} -{ duplicate$ empty$ - { pop$ "" } - { "\emph{" swap$ * "}" * } - if$ -} -FUNCTION {bolden} -{ duplicate$ empty$ - { pop$ "" } - { "\textbf{" swap$ * "}" * } - if$ -} -FUNCTION {tie.or.space.prefix} -{ duplicate$ text.length$ #3 < - { "~" } - { " " } - if$ - swap$ -} - -FUNCTION {capitalize} -{ "u" change.case$ "t" change.case$ } - -FUNCTION {space.word} -{ " " swap$ * " " * } - % Here are the language-specific definitions for explicit words. - % Each function has a name bbl.xxx where xxx is the English word. - % The language selected here is ENGLISH -FUNCTION {bbl.and} -{ "and"} - -FUNCTION {bbl.etal} -{ "et~al." } - -FUNCTION {bbl.editors} -{ "eds." } - -FUNCTION {bbl.editor} -{ "ed." } - -FUNCTION {bbl.edby} -{ "edited by" } - -FUNCTION {bbl.edition} -{ "edn." } - -FUNCTION {bbl.volume} -{ "vol." } - -FUNCTION {bbl.of} -{ "of" } - -FUNCTION {bbl.number} -{ "no." } - -FUNCTION {bbl.nr} -{ "no." } - -FUNCTION {bbl.in} -{ "in" } - -FUNCTION {bbl.pages} -{ "pp." } - -FUNCTION {bbl.page} -{ "p." } - -FUNCTION {bbl.chapter} -{ "chap." } - -FUNCTION {bbl.techrep} -{ "Tech. Rep." } - -FUNCTION {bbl.mthesis} -{ "Master's thesis" } - -FUNCTION {bbl.phdthesis} -{ "Ph.D. thesis" } - -MACRO {jan} {"Jan."} - -MACRO {feb} {"Feb."} - -MACRO {mar} {"Mar."} - -MACRO {apr} {"Apr."} - -MACRO {may} {"May"} - -MACRO {jun} {"Jun."} - -MACRO {jul} {"Jul."} - -MACRO {aug} {"Aug."} - -MACRO {sep} {"Sep."} - -MACRO {oct} {"Oct."} - -MACRO {nov} {"Nov."} - -MACRO {dec} {"Dec."} - -MACRO {acmcs} {"ACM Comput. Surv."} - -MACRO {acta} {"Acta Inf."} - -MACRO {cacm} {"Commun. ACM"} - -MACRO {ibmjrd} {"IBM J. Res. Dev."} - -MACRO {ibmsj} {"IBM Syst.~J."} - -MACRO {ieeese} {"IEEE Trans. Software Eng."} - -MACRO {ieeetc} {"IEEE Trans. Comput."} - -MACRO {ieeetcad} - {"IEEE Trans. Comput. Aid. Des."} - -MACRO {ipl} {"Inf. Process. Lett."} - -MACRO {jacm} {"J.~ACM"} - -MACRO {jcss} {"J.~Comput. Syst. Sci."} - -MACRO {scp} {"Sci. Comput. Program."} - -MACRO {sicomp} {"SIAM J. Comput."} - -MACRO {tocs} {"ACM Trans. Comput. Syst."} - -MACRO {tods} {"ACM Trans. Database Syst."} - -MACRO {tog} {"ACM Trans. Graphic."} - -MACRO {toms} {"ACM Trans. Math. Software"} - -MACRO {toois} {"ACM Trans. Office Inf. Syst."} - -MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} - -MACRO {tcs} {"Theor. Comput. Sci."} - -FUNCTION {bibinfo.check} -{ swap$ - duplicate$ missing$ - { - pop$ pop$ - "" - } - { duplicate$ empty$ - { - swap$ pop$ - } - { swap$ - pop$ - } - if$ - } - if$ -} -FUNCTION {bibinfo.warn} -{ swap$ - duplicate$ missing$ - { - swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ - "" - } - { duplicate$ empty$ - { - swap$ "empty " swap$ * " in " * cite$ * warning$ - } - { swap$ - pop$ - } - if$ - } - if$ -} -FUNCTION {format.eprint} -{ eprint duplicate$ empty$ - 'skip$ - { "\eprint" - archive empty$ - 'skip$ - { "[" * archive * "]" * } - if$ - "{" * swap$ * "}" * - } - if$ -} -FUNCTION {format.url} -{ - url - duplicate$ empty$ - { pop$ "" } - { "\urlprefix\url{" swap$ * "}" * } - if$ -} - -INTEGERS { nameptr namesleft numnames } - - -STRINGS { bibinfo} - -FUNCTION {format.names} -{ 'bibinfo := - duplicate$ empty$ 'skip$ { - 's := - "" 't := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - "{f.~}{vv~}{ll}{, jj}" - format.name$ - bibinfo bibinfo.check - 't := - nameptr #1 > - { - nameptr #2 - #10 + - #1 + = - numnames #2 - #10 + - > and - { "others" 't := - #1 'namesleft := } - 'skip$ - if$ - namesleft #1 > - { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = - { 't := } - { pop$ } - if$ - t "others" = - { - " " * bbl.etal emphasize * - } - { - bbl.and - space.word * t * - } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - } if$ -} -FUNCTION {format.names.ed} -{ - format.names -} -FUNCTION {format.authors} -{ author "author" format.names -} -FUNCTION {get.bbl.editor} -{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } - -FUNCTION {format.editors} -{ editor "editor" format.names duplicate$ empty$ 'skip$ - { - "," * - " " * - get.bbl.editor - * - } - if$ -} -FUNCTION {format.isbn} -{ isbn "isbn" bibinfo.check - duplicate$ empty$ 'skip$ - { - new.block - "ISBN " swap$ * - } - if$ -} - -FUNCTION {format.doi} -{ doi empty$ - { "" } - { - new.block - "\doi{" doi * "}" * - } - if$ -} -FUNCTION {format.note} -{ - note empty$ - { "" } - { note #1 #1 substring$ - duplicate$ "{" = - 'skip$ - { output.state mid.sentence = - { "l" } - { "u" } - if$ - change.case$ - } - if$ - note #2 global.max$ substring$ * "note" bibinfo.check - } - if$ -} - -FUNCTION {format.title} -{ title - duplicate$ empty$ 'skip$ - { "t" change.case$ } - if$ - "title" bibinfo.check - duplicate$ empty$ 'skip$ - { - emphasize - } - if$ -} -FUNCTION {output.bibitem} -{ newline$ - "\bibitem{" write$ - cite$ write$ - "}" write$ - newline$ - "" - before.all 'output.state := -} - -FUNCTION {n.dashify} -{ - 't := - "" - { t empty$ not } - { t #1 #1 substring$ "-" = - { t #1 #2 substring$ "--" = not - { "--" * - t #2 global.max$ substring$ 't := - } - { { t #1 #1 substring$ "-" = } - { "-" * - t #2 global.max$ substring$ 't := - } - while$ - } - if$ - } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - if$ - } - while$ -} - -FUNCTION {word.in} -{ bbl.in capitalize - " " * } - -FUNCTION {format.date} -{ - "" - duplicate$ empty$ - year "year" bibinfo.check duplicate$ empty$ - { swap$ 'skip$ - { "there's a month but no year in " cite$ * warning$ } - if$ - * - } - { swap$ 'skip$ - { - swap$ - " " * swap$ - } - if$ - * - } - if$ - duplicate$ empty$ - 'skip$ - { - before.all 'output.state := - " (" swap$ * ")" * - } - if$ -} -FUNCTION {format.btitle} -{ title "title" bibinfo.check - duplicate$ empty$ 'skip$ - { - emphasize - } - if$ -} -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { bbl.volume volume tie.or.space.prefix - "volume" bibinfo.check * * - series "series" bibinfo.check - duplicate$ empty$ 'pop$ - { swap$ bbl.of space.word * swap$ - emphasize * } - if$ - "volume and number" number either.or.check - } - if$ -} -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { series empty$ - { number "number" bibinfo.check } - { output.state mid.sentence = - { bbl.number } - { bbl.number capitalize } - if$ - number tie.or.space.prefix "number" bibinfo.check * * - bbl.in space.word * - series "series" bibinfo.check * - } - if$ - } - if$ - } - { "" } - if$ -} - -FUNCTION {format.edition} -{ edition duplicate$ empty$ 'skip$ - { - output.state mid.sentence = - { "l" } - { "t" } - if$ change.case$ - "edition" bibinfo.check - " " * bbl.edition * - } - if$ -} -INTEGERS { multiresult } -FUNCTION {multi.page.check} -{ 't := - #0 'multiresult := - { multiresult not - t empty$ not - and - } - { t #1 #1 substring$ - duplicate$ "-" = - swap$ duplicate$ "," = - swap$ "+" = - or or - { #1 'multiresult := } - { t #2 global.max$ substring$ 't := } - if$ - } - while$ - multiresult -} -FUNCTION {format.pages} -{ pages duplicate$ empty$ 'skip$ - { duplicate$ multi.page.check - { - bbl.pages swap$ - n.dashify - } - { - bbl.page swap$ - } - if$ - tie.or.space.prefix - "pages" bibinfo.check - * * - } - if$ -} -FUNCTION {first.page} -{ 't := - "" - { t empty$ not t #1 #1 substring$ "-" = not and } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - while$ -} - -FUNCTION {format.journal.pages} -{ pages duplicate$ empty$ 'pop$ - { swap$ duplicate$ empty$ - { pop$ pop$ format.pages } - { - ", " * - swap$ - first.page - "pages" bibinfo.check - * - } - if$ - } - if$ -} -FUNCTION {format.journal.eid} -{ eid "eid" bibinfo.check - duplicate$ empty$ 'pop$ - { swap$ duplicate$ empty$ 'skip$ - { - ", " * - } - if$ - swap$ * - } - if$ -} -FUNCTION {format.vol.num.pages} -{ volume field.or.null - duplicate$ empty$ 'skip$ - { - "volume" bibinfo.check - } - if$ - bolden - number "number" bibinfo.check duplicate$ empty$ 'skip$ - { - swap$ duplicate$ empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ - if$ - swap$ - "(" swap$ * ")" * - } - if$ * - eid empty$ - { format.journal.pages } - { format.journal.eid } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - 'format.pages - { type empty$ - { bbl.chapter } - { type "l" change.case$ - "type" bibinfo.check - } - if$ - chapter tie.or.space.prefix - "chapter" bibinfo.check - * * - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {format.booktitle} -{ - booktitle "booktitle" bibinfo.check - emphasize -} -FUNCTION {format.in.ed.booktitle} -{ format.booktitle duplicate$ empty$ 'skip$ - { - editor "editor" format.names.ed duplicate$ empty$ 'pop$ - { - "," * - " " * - get.bbl.editor - ", " * - * swap$ - * } - if$ - word.in swap$ * - } - if$ -} -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and and and and and - { "all relevant fields are empty in " cite$ * warning$ } - 'skip$ - if$ -} -FUNCTION {format.thesis.type} -{ type duplicate$ empty$ - 'pop$ - { swap$ pop$ - "t" change.case$ "type" bibinfo.check - } - if$ -} -FUNCTION {format.tr.number} -{ number "number" bibinfo.check - type duplicate$ empty$ - { pop$ bbl.techrep } - 'skip$ - if$ - "type" bibinfo.check - swap$ duplicate$ empty$ - { pop$ "t" change.case$ } - { tie.or.space.prefix * * } - if$ -} -FUNCTION {format.article.crossref} -{ - key duplicate$ empty$ - { pop$ - journal duplicate$ empty$ - { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } - { "journal" bibinfo.check emphasize word.in swap$ * } - if$ - } - { word.in swap$ * " " *} - if$ - " \cite{" * crossref * "}" * -} -FUNCTION {format.crossref.editor} -{ editor #1 "{vv~}{ll}" format.name$ - "editor" bibinfo.check - editor num.names$ duplicate$ - #2 > - { pop$ - "editor" bibinfo.check - " " * bbl.etal - emphasize - * - } - { #2 < - 'skip$ - { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { - "editor" bibinfo.check - " " * bbl.etal - emphasize - * - } - { - bbl.and space.word - * editor #2 "{vv~}{ll}" format.name$ - "editor" bibinfo.check - * - } - if$ - } - if$ - } - if$ -} -FUNCTION {format.book.crossref} -{ volume duplicate$ empty$ - { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ - pop$ word.in - } - { bbl.volume - capitalize - swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * - } - if$ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { series empty$ - { "need editor, key, or series for " cite$ * " to crossref " * - crossref * warning$ - "" * - } - { series emphasize * } - if$ - } - { key * } - if$ - } - { format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} -FUNCTION {format.incoll.inproc.crossref} -{ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { format.booktitle duplicate$ empty$ - { "need editor, key, or booktitle for " cite$ * " to crossref " * - crossref * warning$ - } - { word.in swap$ * } - if$ - } - { word.in key * " " *} - if$ - } - { word.in format.crossref.editor * " " *} - if$ - " \cite{" * crossref * "}" * -} -FUNCTION {format.org.or.pub} -{ 't := - "" - address empty$ t empty$ and - 'skip$ - { - t empty$ - { address "address" bibinfo.check * - } - { t * - address empty$ - 'skip$ - { ", " * address "address" bibinfo.check * } - if$ - } - if$ - } - if$ -} -FUNCTION {format.publisher.address} -{ publisher "publisher" bibinfo.warn format.org.or.pub -} - -FUNCTION {format.organization.address} -{ organization "organization" bibinfo.check format.org.or.pub -} - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { - journal - "journal" bibinfo.check - "journal" output.check - add.blank - format.vol.num.pages output - } - { format.article.crossref output.nonnull - format.pages output - } - if$ - format.date "year" output.check - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.eprint output - fin.entry -} -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check - } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - format.number.series output - new.sentence - format.publisher.address output - } - { - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.isbn output - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} -FUNCTION {booklet} -{ output.bibitem - format.authors output - new.block - format.title "title" output.check - new.block - howpublished "howpublished" bibinfo.check output - address "address" bibinfo.check output - format.isbn output - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date output - format.eprint output - fin.entry -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check - } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { - format.bvolume output - format.chapter.pages "chapter and pages" output.check - new.block - format.number.series output - new.sentence - format.publisher.address output - } - { - format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - crossref missing$ - { format.isbn output } - 'skip$ - if$ - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.chapter.pages output - new.sentence - format.publisher.address output - format.edition output - format.isbn output - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.pages output - new.sentence - publisher empty$ - { format.organization.address output } - { organization "organization" bibinfo.check output - format.publisher.address output - } - if$ - format.isbn output - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} -FUNCTION {conference} { inproceedings } -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization "organization" bibinfo.check - duplicate$ empty$ 'pop$ - { output - address "address" bibinfo.check output - } - if$ - } - { format.authors output.nonnull } - if$ - new.block - format.btitle "title" output.check - author empty$ - { organization empty$ - { - address new.block.checka - address "address" bibinfo.check output - } - 'skip$ - if$ - } - { - organization address new.block.checkb - organization "organization" bibinfo.check output - address "address" bibinfo.check output - } - if$ - format.edition output - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date output - format.eprint output - fin.entry -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle - "title" output.check - new.block - bbl.mthesis format.thesis.type output.nonnull - school "school" bibinfo.warn output - address "address" bibinfo.check output - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished "howpublished" bibinfo.check output - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date output - format.eprint output - fin.entry - empty.misc.check -} -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle - "title" output.check - new.block - bbl.phdthesis format.thesis.type output.nonnull - school "school" bibinfo.warn output - address "address" bibinfo.check output - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization "organization" bibinfo.check output - } - { format.editors output.nonnull } - if$ - new.block - format.btitle "title" output.check - format.bvolume output - format.number.series output - editor empty$ - { publisher empty$ - 'skip$ - { - new.sentence - format.publisher.address output - } - if$ - } - { publisher empty$ - { - new.sentence - format.organization.address output } - { - new.sentence - organization "organization" bibinfo.check output - format.publisher.address output - } - if$ - } - if$ - format.isbn output - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - new.block - format.title - "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" bibinfo.warn output - address "address" bibinfo.check output - format.doi output - new.block -% format.url output -% new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - format.doi output - new.block - format.url output - new.block - format.note "note" output.check - new.block - format.date output - format.eprint output - fin.entry -} - -FUNCTION {default.type} { misc } -READ -STRINGS { longest.label } -INTEGERS { number.label longest.label.width } -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #1 'number.label := - #0 'longest.label.width := -} -FUNCTION {longest.label.pass} -{ number.label int.to.str$ 'label := - number.label #1 + 'number.label := - label width$ longest.label.width > - { label 'longest.label := - label width$ 'longest.label.width := - } - 'skip$ - if$ -} -EXECUTE {initialize.longest.label} -ITERATE {longest.label.pass} -FUNCTION {begin.bib} -{ preamble$ empty$ - 'skip$ - { preamble$ write$ newline$ } - if$ - "\begin{thebibliography}{" longest.label * "}" * - write$ newline$ - "\providecommand{\url}[1]{\texttt{#1}}" - write$ newline$ - "\providecommand{\urlprefix}{URL }" - write$ newline$ - "\expandafter\ifx\csname urlstyle\endcsname\relax" - write$ newline$ - " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" - write$ newline$ - " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi" - write$ newline$ - "\providecommand{\eprint}[2][]{\url{#2}}" - write$ newline$ -} -EXECUTE {begin.bib} -EXECUTE {init.state.consts} -ITERATE {call.type$} -FUNCTION {end.bib} -{ newline$ - "\end{thebibliography}" write$ newline$ -} -EXECUTE {end.bib} -%% End of customized bst file -%% -%% End of file `SciPost_bibstyle_v1.1'. diff --git a/static/submissions/latex/SciPost_bibstyle_v1-1.bst b/static/submissions/latex/SciPost_bibstyle_v1-1.bst deleted file mode 100644 index 429424c98b754f21270e946bb6f0f1c46ab99b52..0000000000000000000000000000000000000000 --- a/static/submissions/latex/SciPost_bibstyle_v1-1.bst +++ /dev/null @@ -1,1367 +0,0 @@ -%% -%% This is file `SciPost_bibstyle_v1.1', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% merlin.mbs (with options: `seq-no,vonx,nm-init,ed-au,nmlm,x10,x2,m10,m2,mcite,mct-6,mct-x6,dt-end,yr-com,xmth,tit-it,vol-bf,volp-com,jpg-1,num-xser,jnm-x,isbn,doi,pp,ed,abr,xedn,jabr,and-xcom,etal-xc,etal-it,eprint,url,url-blk,nfss,') -%% ---------------------------------------- -%% *** SciPost style version 1.1 *** -%% -%% Copyright 1994-2011 Patrick W Daly - % =============================================================== - % IMPORTANT NOTICE: - % This bibliographic style (bst) file has been generated from one or - % more master bibliographic style (mbs) files, listed above. - % - % This generated file can be redistributed and/or modified under the terms - % of the LaTeX Project Public License Distributed from CTAN - % archives in directory macros/latex/base/lppl.txt; either - % version 1 of the License, or any later version. - % =============================================================== - % Name and version information of the main mbs file: - % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)] - % For use with BibTeX version 0.99a or later - %------------------------------------------------------------------- - % This bibliography style file is intended for texts in ENGLISH - % This is a numerical citation style, and as such is standard LaTeX. - % It requires no extra package to interface to the main text. - % The form of the \bibitem entries is - % \bibitem{key}... - % Usage of \cite is as follows: - % \cite{key} ==>> [#] - % \cite[chap. 2]{key} ==>> [#, chap. 2] - % where # is a number determined by the ordering in the reference list. - % The order in the reference list is that by which the works were originally - % cited in the text, or that in the database. - %--------------------------------------------------------------------- - -ENTRY - { address - archive - author - booktitle - chapter - doi - edition - editor - eid - eprint - howpublished - institution - isbn - journal - key - month - note - number - organization - pages - publisher - school - series - title - type - url - volume - year - } - {} - { label } -INTEGERS { output.state before.all mid.sentence after.sentence after.block } -FUNCTION {init.state.consts} -{ #0 'before.all := - #1 'mid.sentence := - #2 'after.sentence := - #3 'after.block := -} -STRINGS { s t} -FUNCTION {output.nonnull} -{ 's := - output.state mid.sentence = - { ", " * write$ } - { output.state after.block = - { ", " * write$ - newline$ - "\newblock " write$ - } - { output.state before.all = - 'write$ - { add.period$ " " * write$ } - if$ - } - if$ - mid.sentence 'output.state := - } - if$ - s -} -FUNCTION {output} -{ duplicate$ empty$ - 'pop$ - 'output.nonnull - if$ -} -FUNCTION {output.check} -{ 't := - duplicate$ empty$ - { pop$ "empty " t * " in " * cite$ * warning$ } - 'output.nonnull - if$ -} -FUNCTION {fin.entry} -{ add.period$ - write$ - newline$ -} - -FUNCTION {new.block} -{ output.state before.all = - 'skip$ - { after.block 'output.state := } - if$ -} -FUNCTION {new.sentence} -{ output.state after.block = - 'skip$ - { output.state before.all = - 'skip$ - { after.sentence 'output.state := } - if$ - } - if$ -} -FUNCTION {add.blank} -{ " " * before.all 'output.state := -} - -FUNCTION {date.block} -{ - new.block -} - -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} -FUNCTION {new.block.checka} -{ empty$ - 'skip$ - 'new.block - if$ -} -FUNCTION {new.block.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.block - if$ -} -FUNCTION {new.sentence.checka} -{ empty$ - 'skip$ - 'new.sentence - if$ -} -FUNCTION {new.sentence.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.sentence - if$ -} -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} -FUNCTION {emphasize} -{ duplicate$ empty$ - { pop$ "" } - { "\emph{" swap$ * "}" * } - if$ -} -FUNCTION {bolden} -{ duplicate$ empty$ - { pop$ "" } - { "\textbf{" swap$ * "}" * } - if$ -} -FUNCTION {tie.or.space.prefix} -{ duplicate$ text.length$ #3 < - { "~" } - { " " } - if$ - swap$ -} - -FUNCTION {capitalize} -{ "u" change.case$ "t" change.case$ } - -FUNCTION {space.word} -{ " " swap$ * " " * } - % Here are the language-specific definitions for explicit words. - % Each function has a name bbl.xxx where xxx is the English word. - % The language selected here is ENGLISH -FUNCTION {bbl.and} -{ "and"} - -FUNCTION {bbl.etal} -{ "et~al." } - -FUNCTION {bbl.editors} -{ "eds." } - -FUNCTION {bbl.editor} -{ "ed." } - -FUNCTION {bbl.edby} -{ "edited by" } - -FUNCTION {bbl.edition} -{ "edn." } - -FUNCTION {bbl.volume} -{ "vol." } - -FUNCTION {bbl.of} -{ "of" } - -FUNCTION {bbl.number} -{ "no." } - -FUNCTION {bbl.nr} -{ "no." } - -FUNCTION {bbl.in} -{ "in" } - -FUNCTION {bbl.pages} -{ "pp." } - -FUNCTION {bbl.page} -{ "p." } - -FUNCTION {bbl.chapter} -{ "chap." } - -FUNCTION {bbl.techrep} -{ "Tech. Rep." } - -FUNCTION {bbl.mthesis} -{ "Master's thesis" } - -FUNCTION {bbl.phdthesis} -{ "Ph.D. thesis" } - -MACRO {jan} {"Jan."} - -MACRO {feb} {"Feb."} - -MACRO {mar} {"Mar."} - -MACRO {apr} {"Apr."} - -MACRO {may} {"May"} - -MACRO {jun} {"Jun."} - -MACRO {jul} {"Jul."} - -MACRO {aug} {"Aug."} - -MACRO {sep} {"Sep."} - -MACRO {oct} {"Oct."} - -MACRO {nov} {"Nov."} - -MACRO {dec} {"Dec."} - -MACRO {acmcs} {"ACM Comput. Surv."} - -MACRO {acta} {"Acta Inf."} - -MACRO {cacm} {"Commun. ACM"} - -MACRO {ibmjrd} {"IBM J. Res. Dev."} - -MACRO {ibmsj} {"IBM Syst.~J."} - -MACRO {ieeese} {"IEEE Trans. Software Eng."} - -MACRO {ieeetc} {"IEEE Trans. Comput."} - -MACRO {ieeetcad} - {"IEEE Trans. Comput. Aid. Des."} - -MACRO {ipl} {"Inf. Process. Lett."} - -MACRO {jacm} {"J.~ACM"} - -MACRO {jcss} {"J.~Comput. Syst. Sci."} - -MACRO {scp} {"Sci. Comput. Program."} - -MACRO {sicomp} {"SIAM J. Comput."} - -MACRO {tocs} {"ACM Trans. Comput. Syst."} - -MACRO {tods} {"ACM Trans. Database Syst."} - -MACRO {tog} {"ACM Trans. Graphic."} - -MACRO {toms} {"ACM Trans. Math. Software"} - -MACRO {toois} {"ACM Trans. Office Inf. Syst."} - -MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} - -MACRO {tcs} {"Theor. Comput. Sci."} - -FUNCTION {bibinfo.check} -{ swap$ - duplicate$ missing$ - { - pop$ pop$ - "" - } - { duplicate$ empty$ - { - swap$ pop$ - } - { swap$ - pop$ - } - if$ - } - if$ -} -FUNCTION {bibinfo.warn} -{ swap$ - duplicate$ missing$ - { - swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ - "" - } - { duplicate$ empty$ - { - swap$ "empty " swap$ * " in " * cite$ * warning$ - } - { swap$ - pop$ - } - if$ - } - if$ -} -FUNCTION {format.eprint} -{ eprint duplicate$ empty$ - 'skip$ - { "\eprint" - archive empty$ - 'skip$ - { "[" * archive * "]" * } - if$ - "{" * swap$ * "}" * - } - if$ -} -FUNCTION {format.url} -{ - url - duplicate$ empty$ - { pop$ "" } - { "\urlprefix\url{" swap$ * "}" * } - if$ -} - -INTEGERS { nameptr namesleft numnames } - - -STRINGS { bibinfo} - -FUNCTION {format.names} -{ 'bibinfo := - duplicate$ empty$ 'skip$ { - 's := - "" 't := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - "{f.~}{vv~}{ll}{, jj}" - format.name$ - bibinfo bibinfo.check - 't := - nameptr #1 > - { - nameptr #2 - #10 + - #1 + = - numnames #2 - #10 + - > and - { "others" 't := - #1 'namesleft := } - 'skip$ - if$ - namesleft #1 > - { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = - { 't := } - { pop$ } - if$ - t "others" = - { - " " * bbl.etal emphasize * - } - { - bbl.and - space.word * t * - } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - } if$ -} -FUNCTION {format.names.ed} -{ - format.names -} -FUNCTION {format.authors} -{ author "author" format.names -} -FUNCTION {get.bbl.editor} -{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } - -FUNCTION {format.editors} -{ editor "editor" format.names duplicate$ empty$ 'skip$ - { - "," * - " " * - get.bbl.editor - * - } - if$ -} -FUNCTION {format.isbn} -{ isbn "isbn" bibinfo.check - duplicate$ empty$ 'skip$ - { - new.block - "ISBN " swap$ * - } - if$ -} - -FUNCTION {format.doi} -{ doi empty$ - { "" } - { - new.block - "\doi{" doi * "}" * - } - if$ -} -FUNCTION {format.note} -{ - note empty$ - { "" } - { note #1 #1 substring$ - duplicate$ "{" = - 'skip$ - { output.state mid.sentence = - { "l" } - { "u" } - if$ - change.case$ - } - if$ - note #2 global.max$ substring$ * "note" bibinfo.check - } - if$ -} - -FUNCTION {format.title} -{ title - duplicate$ empty$ 'skip$ - { "t" change.case$ } - if$ - "title" bibinfo.check - duplicate$ empty$ 'skip$ - { - emphasize - } - if$ -} -FUNCTION {output.bibitem} -{ newline$ - "\bibitem{" write$ - cite$ write$ - "}" write$ - newline$ - "" - before.all 'output.state := -} - -FUNCTION {n.dashify} -{ - 't := - "" - { t empty$ not } - { t #1 #1 substring$ "-" = - { t #1 #2 substring$ "--" = not - { "--" * - t #2 global.max$ substring$ 't := - } - { { t #1 #1 substring$ "-" = } - { "-" * - t #2 global.max$ substring$ 't := - } - while$ - } - if$ - } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - if$ - } - while$ -} - -FUNCTION {word.in} -{ bbl.in capitalize - " " * } - -FUNCTION {format.date} -{ - "" - duplicate$ empty$ - year "year" bibinfo.check duplicate$ empty$ - { swap$ 'skip$ - { "there's a month but no year in " cite$ * warning$ } - if$ - * - } - { swap$ 'skip$ - { - swap$ - " " * swap$ - } - if$ - * - } - if$ - duplicate$ empty$ - 'skip$ - { - before.all 'output.state := - " (" swap$ * ")" * - } - if$ -} -FUNCTION {format.btitle} -{ title "title" bibinfo.check - duplicate$ empty$ 'skip$ - { - emphasize - } - if$ -} -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { bbl.volume volume tie.or.space.prefix - "volume" bibinfo.check * * - series "series" bibinfo.check - duplicate$ empty$ 'pop$ - { swap$ bbl.of space.word * swap$ - emphasize * } - if$ - "volume and number" number either.or.check - } - if$ -} -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { series empty$ - { number "number" bibinfo.check } - { output.state mid.sentence = - { bbl.number } - { bbl.number capitalize } - if$ - number tie.or.space.prefix "number" bibinfo.check * * - bbl.in space.word * - series "series" bibinfo.check * - } - if$ - } - if$ - } - { "" } - if$ -} - -FUNCTION {format.edition} -{ edition duplicate$ empty$ 'skip$ - { - output.state mid.sentence = - { "l" } - { "t" } - if$ change.case$ - "edition" bibinfo.check - " " * bbl.edition * - } - if$ -} -INTEGERS { multiresult } -FUNCTION {multi.page.check} -{ 't := - #0 'multiresult := - { multiresult not - t empty$ not - and - } - { t #1 #1 substring$ - duplicate$ "-" = - swap$ duplicate$ "," = - swap$ "+" = - or or - { #1 'multiresult := } - { t #2 global.max$ substring$ 't := } - if$ - } - while$ - multiresult -} -FUNCTION {format.pages} -{ pages duplicate$ empty$ 'skip$ - { duplicate$ multi.page.check - { - bbl.pages swap$ - n.dashify - } - { - bbl.page swap$ - } - if$ - tie.or.space.prefix - "pages" bibinfo.check - * * - } - if$ -} -FUNCTION {first.page} -{ 't := - "" - { t empty$ not t #1 #1 substring$ "-" = not and } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - while$ -} - -FUNCTION {format.journal.pages} -{ pages duplicate$ empty$ 'pop$ - { swap$ duplicate$ empty$ - { pop$ pop$ format.pages } - { - ", " * - swap$ - first.page - "pages" bibinfo.check - * - } - if$ - } - if$ -} -FUNCTION {format.journal.eid} -{ eid "eid" bibinfo.check - duplicate$ empty$ 'pop$ - { swap$ duplicate$ empty$ 'skip$ - { - ", " * - } - if$ - swap$ * - } - if$ -} -FUNCTION {format.vol.num.pages} -{ volume field.or.null - duplicate$ empty$ 'skip$ - { - "volume" bibinfo.check - } - if$ - bolden - number "number" bibinfo.check duplicate$ empty$ 'skip$ - { - swap$ duplicate$ empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ - if$ - swap$ - "(" swap$ * ")" * - } - if$ * - eid empty$ - { format.journal.pages } - { format.journal.eid } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - 'format.pages - { type empty$ - { bbl.chapter } - { type "l" change.case$ - "type" bibinfo.check - } - if$ - chapter tie.or.space.prefix - "chapter" bibinfo.check - * * - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {format.booktitle} -{ - booktitle "booktitle" bibinfo.check - emphasize -} -FUNCTION {format.in.ed.booktitle} -{ format.booktitle duplicate$ empty$ 'skip$ - { - editor "editor" format.names.ed duplicate$ empty$ 'pop$ - { - "," * - " " * - get.bbl.editor - ", " * - * swap$ - * } - if$ - word.in swap$ * - } - if$ -} -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and and and and and - { "all relevant fields are empty in " cite$ * warning$ } - 'skip$ - if$ -} -FUNCTION {format.thesis.type} -{ type duplicate$ empty$ - 'pop$ - { swap$ pop$ - "t" change.case$ "type" bibinfo.check - } - if$ -} -FUNCTION {format.tr.number} -{ number "number" bibinfo.check - type duplicate$ empty$ - { pop$ bbl.techrep } - 'skip$ - if$ - "type" bibinfo.check - swap$ duplicate$ empty$ - { pop$ "t" change.case$ } - { tie.or.space.prefix * * } - if$ -} -FUNCTION {format.article.crossref} -{ - key duplicate$ empty$ - { pop$ - journal duplicate$ empty$ - { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } - { "journal" bibinfo.check emphasize word.in swap$ * } - if$ - } - { word.in swap$ * " " *} - if$ - " \cite{" * crossref * "}" * -} -FUNCTION {format.crossref.editor} -{ editor #1 "{vv~}{ll}" format.name$ - "editor" bibinfo.check - editor num.names$ duplicate$ - #2 > - { pop$ - "editor" bibinfo.check - " " * bbl.etal - emphasize - * - } - { #2 < - 'skip$ - { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { - "editor" bibinfo.check - " " * bbl.etal - emphasize - * - } - { - bbl.and space.word - * editor #2 "{vv~}{ll}" format.name$ - "editor" bibinfo.check - * - } - if$ - } - if$ - } - if$ -} -FUNCTION {format.book.crossref} -{ volume duplicate$ empty$ - { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ - pop$ word.in - } - { bbl.volume - capitalize - swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * - } - if$ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { series empty$ - { "need editor, key, or series for " cite$ * " to crossref " * - crossref * warning$ - "" * - } - { series emphasize * } - if$ - } - { key * } - if$ - } - { format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} -FUNCTION {format.incoll.inproc.crossref} -{ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { format.booktitle duplicate$ empty$ - { "need editor, key, or booktitle for " cite$ * " to crossref " * - crossref * warning$ - } - { word.in swap$ * } - if$ - } - { word.in key * " " *} - if$ - } - { word.in format.crossref.editor * " " *} - if$ - " \cite{" * crossref * "}" * -} -FUNCTION {format.org.or.pub} -{ 't := - "" - address empty$ t empty$ and - 'skip$ - { - t empty$ - { address "address" bibinfo.check * - } - { t * - address empty$ - 'skip$ - { ", " * address "address" bibinfo.check * } - if$ - } - if$ - } - if$ -} -FUNCTION {format.publisher.address} -{ publisher "publisher" bibinfo.warn format.org.or.pub -} - -FUNCTION {format.organization.address} -{ organization "organization" bibinfo.check format.org.or.pub -} - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { - journal - "journal" bibinfo.check - "journal" output.check - add.blank - format.vol.num.pages output - } - { format.article.crossref output.nonnull - format.pages output - } - if$ - format.date "year" output.check - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.eprint output - fin.entry -} -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check - } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - format.number.series output - new.sentence - format.publisher.address output - } - { - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.isbn output - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} -FUNCTION {booklet} -{ output.bibitem - format.authors output - new.block - format.title "title" output.check - new.block - howpublished "howpublished" bibinfo.check output - address "address" bibinfo.check output - format.isbn output - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date output - format.eprint output - fin.entry -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check - } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { - format.bvolume output - format.chapter.pages "chapter and pages" output.check - new.block - format.number.series output - new.sentence - format.publisher.address output - } - { - format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - crossref missing$ - { format.isbn output } - 'skip$ - if$ - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.chapter.pages output - new.sentence - format.publisher.address output - format.edition output - format.isbn output - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.pages output - new.sentence - publisher empty$ - { format.organization.address output } - { organization "organization" bibinfo.check output - format.publisher.address output - } - if$ - format.isbn output - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} -FUNCTION {conference} { inproceedings } -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization "organization" bibinfo.check - duplicate$ empty$ 'pop$ - { output - address "address" bibinfo.check output - } - if$ - } - { format.authors output.nonnull } - if$ - new.block - format.btitle "title" output.check - author empty$ - { organization empty$ - { - address new.block.checka - address "address" bibinfo.check output - } - 'skip$ - if$ - } - { - organization address new.block.checkb - organization "organization" bibinfo.check output - address "address" bibinfo.check output - } - if$ - format.edition output - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date output - format.eprint output - fin.entry -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle - "title" output.check - new.block - bbl.mthesis format.thesis.type output.nonnull - school "school" bibinfo.warn output - address "address" bibinfo.check output - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished "howpublished" bibinfo.check output - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date output - format.eprint output - fin.entry - empty.misc.check -} -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle - "title" output.check - new.block - bbl.phdthesis format.thesis.type output.nonnull - school "school" bibinfo.warn output - address "address" bibinfo.check output - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization "organization" bibinfo.check output - } - { format.editors output.nonnull } - if$ - new.block - format.btitle "title" output.check - format.bvolume output - format.number.series output - editor empty$ - { publisher empty$ - 'skip$ - { - new.sentence - format.publisher.address output - } - if$ - } - { publisher empty$ - { - new.sentence - format.organization.address output } - { - new.sentence - organization "organization" bibinfo.check output - format.publisher.address output - } - if$ - } - if$ - format.isbn output - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - new.block - format.title - "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" bibinfo.warn output - address "address" bibinfo.check output - format.doi output - new.block - format.url output - new.block - format.note output - new.block - format.date "year" output.check - format.eprint output - fin.entry -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - format.doi output - new.block - format.url output - new.block - format.note "note" output.check - new.block - format.date output - format.eprint output - fin.entry -} - -FUNCTION {default.type} { misc } -READ -STRINGS { longest.label } -INTEGERS { number.label longest.label.width } -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #1 'number.label := - #0 'longest.label.width := -} -FUNCTION {longest.label.pass} -{ number.label int.to.str$ 'label := - number.label #1 + 'number.label := - label width$ longest.label.width > - { label 'longest.label := - label width$ 'longest.label.width := - } - 'skip$ - if$ -} -EXECUTE {initialize.longest.label} -ITERATE {longest.label.pass} -FUNCTION {begin.bib} -{ preamble$ empty$ - 'skip$ - { preamble$ write$ newline$ } - if$ - "\begin{thebibliography}{" longest.label * "}" * - write$ newline$ - "\providecommand{\url}[1]{\texttt{#1}}" - write$ newline$ - "\providecommand{\urlprefix}{URL }" - write$ newline$ - "\expandafter\ifx\csname urlstyle\endcsname\relax" - write$ newline$ - " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" - write$ newline$ - " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi" - write$ newline$ - "\providecommand{\eprint}[2][]{\url{#2}}" - write$ newline$ -} -EXECUTE {begin.bib} -EXECUTE {init.state.consts} -ITERATE {call.type$} -FUNCTION {end.bib} -{ newline$ - "\end{thebibliography}" write$ newline$ -} -EXECUTE {end.bib} -%% End of customized bst file -%% -%% End of file `SciPost_bibstyle_v1.1'. diff --git a/static/submissions/latex/SciPost_bibstyle_v1.bst b/static/submissions/latex/SciPost_bibstyle_v1.bst deleted file mode 100644 index 31e81850d8f2786a443774956a44afb2e575b008..0000000000000000000000000000000000000000 --- a/static/submissions/latex/SciPost_bibstyle_v1.bst +++ /dev/null @@ -1,1276 +0,0 @@ -%% -%% This is file `SciPost_bibstyle_v1.bst', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% merlin.mbs (with options: `seq-no,nm-init,ed-au,mcite,mct-6,mct-x6,yr-par,xmth,tit-it,jttl-rm,vnum-x,volp-com,jdt-pc,jpg-1,jwdpg,num-xser,isbn,url-doi,pp,ed,abr,xedn,jabr,and-xcom,etal-xc,eprint,url,url-blk,nfss,') -%% ---------------------------------------- -%% *** BiBTeX style for SciPost Journals *** -%% -%% Copyright 1994-2011 Patrick W Daly - % =============================================================== - % IMPORTANT NOTICE: - % This bibliographic style (bst) file has been generated from one or - % more master bibliographic style (mbs) files, listed above. - % - % This generated file can be redistributed and/or modified under the terms - % of the LaTeX Project Public License Distributed from CTAN - % archives in directory macros/latex/base/lppl.txt; either - % version 1 of the License, or any later version. - % =============================================================== - % Name and version information of the main mbs file: - % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)] - % For use with BibTeX version 0.99a or later - %------------------------------------------------------------------- - % This bibliography style file is intended for texts in ENGLISH - % This is a numerical citation style, and as such is standard LaTeX. - % It requires no extra package to interface to the main text. - % The form of the \bibitem entries is - % \bibitem{key}... - % Usage of \cite is as follows: - % \cite{key} ==>> [#] - % \cite[chap. 2]{key} ==>> [#, chap. 2] - % where # is a number determined by the ordering in the reference list. - % The order in the reference list is that by which the works were originally - % cited in the text, or that in the database. - %--------------------------------------------------------------------- - -ENTRY - { address - archive - author - booktitle - chapter - doi - edition - editor - eid - eprint - howpublished - institution - isbn - journal - key - month - note - number - organization - pages - publisher - school - series - title - type - url - volume - year - } - {} - { label } -INTEGERS { output.state before.all mid.sentence after.sentence after.block } -FUNCTION {init.state.consts} -{ #0 'before.all := - #1 'mid.sentence := - #2 'after.sentence := - #3 'after.block := -} -STRINGS { s t} -FUNCTION {output.nonnull} -{ 's := - output.state mid.sentence = - { ", " * write$ } - { output.state after.block = - { add.period$ write$ - newline$ - "\newblock " write$ - } - { output.state before.all = - 'write$ - { add.period$ " " * write$ } - if$ - } - if$ - mid.sentence 'output.state := - } - if$ - s -} -FUNCTION {output} -{ duplicate$ empty$ - 'pop$ - 'output.nonnull - if$ -} -FUNCTION {output.check} -{ 't := - duplicate$ empty$ - { pop$ "empty " t * " in " * cite$ * warning$ } - 'output.nonnull - if$ -} -FUNCTION {fin.entry} -{ add.period$ - write$ - newline$ -} - -FUNCTION {new.block} -{ output.state before.all = - 'skip$ - { after.block 'output.state := } - if$ -} -FUNCTION {new.sentence} -{ output.state after.block = - 'skip$ - { output.state before.all = - 'skip$ - { after.sentence 'output.state := } - if$ - } - if$ -} -FUNCTION {add.blank} -{ " " * before.all 'output.state := -} - -FUNCTION {date.block} -{ - new.block -} - -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} -FUNCTION {new.block.checka} -{ empty$ - 'skip$ - 'new.block - if$ -} -FUNCTION {new.block.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.block - if$ -} -FUNCTION {new.sentence.checka} -{ empty$ - 'skip$ - 'new.sentence - if$ -} -FUNCTION {new.sentence.checkb} -{ empty$ - swap$ empty$ - and - 'skip$ - 'new.sentence - if$ -} -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} -FUNCTION {emphasize} -{ duplicate$ empty$ - { pop$ "" } - { "\emph{" swap$ * "}" * } - if$ -} -FUNCTION {tie.or.space.prefix} -{ duplicate$ text.length$ #3 < - { "~" } - { " " } - if$ - swap$ -} - -FUNCTION {capitalize} -{ "u" change.case$ "t" change.case$ } - -FUNCTION {space.word} -{ " " swap$ * " " * } - % Here are the language-specific definitions for explicit words. - % Each function has a name bbl.xxx where xxx is the English word. - % The language selected here is ENGLISH -FUNCTION {bbl.and} -{ "and"} - -FUNCTION {bbl.etal} -{ "et~al." } - -FUNCTION {bbl.editors} -{ "eds." } - -FUNCTION {bbl.editor} -{ "ed." } - -FUNCTION {bbl.edby} -{ "edited by" } - -FUNCTION {bbl.edition} -{ "edn." } - -FUNCTION {bbl.volume} -{ "vol." } - -FUNCTION {bbl.of} -{ "of" } - -FUNCTION {bbl.number} -{ "no." } - -FUNCTION {bbl.nr} -{ "no." } - -FUNCTION {bbl.in} -{ "in" } - -FUNCTION {bbl.pages} -{ "pp." } - -FUNCTION {bbl.page} -{ "p." } - -FUNCTION {bbl.chapter} -{ "chap." } - -FUNCTION {bbl.techrep} -{ "Tech. Rep." } - -FUNCTION {bbl.mthesis} -{ "Master's thesis" } - -FUNCTION {bbl.phdthesis} -{ "Ph.D. thesis" } - -MACRO {jan} {"Jan."} - -MACRO {feb} {"Feb."} - -MACRO {mar} {"Mar."} - -MACRO {apr} {"Apr."} - -MACRO {may} {"May"} - -MACRO {jun} {"Jun."} - -MACRO {jul} {"Jul."} - -MACRO {aug} {"Aug."} - -MACRO {sep} {"Sep."} - -MACRO {oct} {"Oct."} - -MACRO {nov} {"Nov."} - -MACRO {dec} {"Dec."} - - - -FUNCTION {bibinfo.check} -{ swap$ - duplicate$ missing$ - { - pop$ pop$ - "" - } - { duplicate$ empty$ - { - swap$ pop$ - } - { swap$ - pop$ - } - if$ - } - if$ -} -FUNCTION {bibinfo.warn} -{ swap$ - duplicate$ missing$ - { - swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ - "" - } - { duplicate$ empty$ - { - swap$ "empty " swap$ * " in " * cite$ * warning$ - } - { swap$ - pop$ - } - if$ - } - if$ -} -FUNCTION {format.eprint} -{ eprint duplicate$ empty$ - 'skip$ - { "\eprint" - archive empty$ - 'skip$ - { "[" * archive * "]" * } - if$ - "{" * swap$ * "}" * - } - if$ -} -FUNCTION {format.url} -{ - doi empty$ - { url } - { "http://dx.doi.org/" doi * } - if$ - duplicate$ empty$ - { pop$ "" } - { "\urlprefix\url{" swap$ * "}" * } - if$ -} - -INTEGERS { nameptr namesleft numnames } - - -STRINGS { bibinfo} - -FUNCTION {format.names} -{ 'bibinfo := - duplicate$ empty$ 'skip$ { - 's := - "" 't := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - "{f.~}{vv~}{ll}{, jj}" - format.name$ - bibinfo bibinfo.check - 't := - nameptr #1 > - { - namesleft #1 > - { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = - { 't := } - { pop$ } - if$ - t "others" = - { - " " * bbl.etal * - } - { - bbl.and - space.word * t * - } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - } if$ -} -FUNCTION {format.names.ed} -{ - format.names -} -FUNCTION {format.authors} -{ author "author" format.names -} -FUNCTION {get.bbl.editor} -{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } - -FUNCTION {format.editors} -{ editor "editor" format.names duplicate$ empty$ 'skip$ - { - "," * - " " * - get.bbl.editor - * - } - if$ -} -FUNCTION {format.isbn} -{ isbn "isbn" bibinfo.check - duplicate$ empty$ 'skip$ - { - new.block - "ISBN " swap$ * - } - if$ -} - -FUNCTION {format.note} -{ - note empty$ - { "" } - { note #1 #1 substring$ - duplicate$ "{" = - 'skip$ - { output.state mid.sentence = - { "l" } - { "u" } - if$ - change.case$ - } - if$ - note #2 global.max$ substring$ * "note" bibinfo.check - } - if$ -} - -FUNCTION {format.title} -{ title - duplicate$ empty$ 'skip$ - { "t" change.case$ } - if$ - "title" bibinfo.check - duplicate$ empty$ 'skip$ - { - emphasize - } - if$ -} -FUNCTION {output.bibitem} -{ newline$ - "\bibitem{" write$ - cite$ write$ - "}" write$ - newline$ - "" - before.all 'output.state := -} - -FUNCTION {n.dashify} -{ - 't := - "" - { t empty$ not } - { t #1 #1 substring$ "-" = - { t #1 #2 substring$ "--" = not - { "--" * - t #2 global.max$ substring$ 't := - } - { { t #1 #1 substring$ "-" = } - { "-" * - t #2 global.max$ substring$ 't := - } - while$ - } - if$ - } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - if$ - } - while$ -} - -FUNCTION {word.in} -{ bbl.in capitalize - " " * } - -FUNCTION {format.date} -{ - "" - duplicate$ empty$ - year "year" bibinfo.check duplicate$ empty$ - { swap$ 'skip$ - { "there's a month but no year in " cite$ * warning$ } - if$ - * - } - { swap$ 'skip$ - { - swap$ - " " * swap$ - } - if$ - * - } - if$ - duplicate$ empty$ - 'skip$ - { - before.all 'output.state := - " (" swap$ * ")" * - } - if$ -} -FUNCTION{format.year} -{ year "year" bibinfo.check duplicate$ empty$ - { "empty year in " cite$ * - warning$ - } - { - "(" swap$ * ")" * - } - if$ -} -FUNCTION {format.btitle} -{ title "title" bibinfo.check - duplicate$ empty$ 'skip$ - { - emphasize - } - if$ -} -FUNCTION {either.or.check} -{ empty$ - 'pop$ - { "can't use both " swap$ * " fields in " * cite$ * warning$ } - if$ -} -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { bbl.volume volume tie.or.space.prefix - "volume" bibinfo.check * * - series "series" bibinfo.check - duplicate$ empty$ 'pop$ - { swap$ bbl.of space.word * swap$ - emphasize * } - if$ - "volume and number" number either.or.check - } - if$ -} -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - { series field.or.null } - { series empty$ - { number "number" bibinfo.check } - { output.state mid.sentence = - { bbl.number } - { bbl.number capitalize } - if$ - number tie.or.space.prefix "number" bibinfo.check * * - bbl.in space.word * - series "series" bibinfo.check * - } - if$ - } - if$ - } - { "" } - if$ -} - -FUNCTION {format.edition} -{ edition duplicate$ empty$ 'skip$ - { - output.state mid.sentence = - { "l" } - { "t" } - if$ change.case$ - "edition" bibinfo.check - " " * bbl.edition * - } - if$ -} -INTEGERS { multiresult } -FUNCTION {multi.page.check} -{ 't := - #0 'multiresult := - { multiresult not - t empty$ not - and - } - { t #1 #1 substring$ - duplicate$ "-" = - swap$ duplicate$ "," = - swap$ "+" = - or or - { #1 'multiresult := } - { t #2 global.max$ substring$ 't := } - if$ - } - while$ - multiresult -} -FUNCTION {format.pages} -{ pages duplicate$ empty$ 'skip$ - { duplicate$ multi.page.check - { - bbl.pages swap$ - n.dashify - } - { - bbl.page swap$ - } - if$ - tie.or.space.prefix - "pages" bibinfo.check - * * - } - if$ -} -FUNCTION {first.page} -{ 't := - "" - { t empty$ not t #1 #1 substring$ "-" = not and } - { t #1 #1 substring$ * - t #2 global.max$ substring$ 't := - } - while$ -} - -FUNCTION {format.journal.pages} -{ pages duplicate$ empty$ 'pop$ - { swap$ duplicate$ empty$ - { pop$ pop$ format.pages } - { - ", " * - format.year * ", " * - swap$ - first.page - pages multi.page.check - 'bbl.pages - 'bbl.page - if$ - swap$ tie.or.space.prefix - "pages" bibinfo.check - * * - * - } - if$ - } - if$ -} -FUNCTION {format.journal.eid} -{ eid "eid" bibinfo.check - duplicate$ empty$ 'pop$ - { swap$ duplicate$ empty$ 'skip$ - { - ", " * - } - if$ - swap$ * - } - if$ -} -FUNCTION {format.vol.num.pages} -{ volume field.or.null - duplicate$ empty$ 'skip$ - { - "volume" bibinfo.check - } - if$ - eid empty$ - { format.journal.pages } - { format.journal.eid } - if$ -} - -FUNCTION {format.chapter.pages} -{ chapter empty$ - 'format.pages - { type empty$ - { bbl.chapter } - { type "l" change.case$ - "type" bibinfo.check - } - if$ - chapter tie.or.space.prefix - "chapter" bibinfo.check - * * - pages empty$ - 'skip$ - { ", " * format.pages * } - if$ - } - if$ -} - -FUNCTION {format.booktitle} -{ - booktitle "booktitle" bibinfo.check - emphasize -} -FUNCTION {format.in.ed.booktitle} -{ format.booktitle duplicate$ empty$ 'skip$ - { - editor "editor" format.names.ed duplicate$ empty$ 'pop$ - { - "," * - " " * - get.bbl.editor - ", " * - * swap$ - * } - if$ - word.in swap$ * - } - if$ -} -FUNCTION {empty.misc.check} -{ author empty$ title empty$ howpublished empty$ - month empty$ year empty$ note empty$ - and and and and and - { "all relevant fields are empty in " cite$ * warning$ } - 'skip$ - if$ -} -FUNCTION {format.thesis.type} -{ type duplicate$ empty$ - 'pop$ - { swap$ pop$ - "t" change.case$ "type" bibinfo.check - } - if$ -} -FUNCTION {format.tr.number} -{ number "number" bibinfo.check - type duplicate$ empty$ - { pop$ bbl.techrep } - 'skip$ - if$ - "type" bibinfo.check - swap$ duplicate$ empty$ - { pop$ "t" change.case$ } - { tie.or.space.prefix * * } - if$ -} -FUNCTION {format.article.crossref} -{ - key duplicate$ empty$ - { pop$ - journal duplicate$ empty$ - { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } - { "journal" bibinfo.check emphasize word.in swap$ * } - if$ - } - { word.in swap$ * " " *} - if$ - " \cite{" * crossref * "}" * -} -FUNCTION {format.crossref.editor} -{ editor #1 "{vv~}{ll}" format.name$ - "editor" bibinfo.check - editor num.names$ duplicate$ - #2 > - { pop$ - "editor" bibinfo.check - " " * bbl.etal - * - } - { #2 < - 'skip$ - { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = - { - "editor" bibinfo.check - " " * bbl.etal - * - } - { - bbl.and space.word - * editor #2 "{vv~}{ll}" format.name$ - "editor" bibinfo.check - * - } - if$ - } - if$ - } - if$ -} -FUNCTION {format.book.crossref} -{ volume duplicate$ empty$ - { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ - pop$ word.in - } - { bbl.volume - capitalize - swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * - } - if$ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { series empty$ - { "need editor, key, or series for " cite$ * " to crossref " * - crossref * warning$ - "" * - } - { series emphasize * } - if$ - } - { key * } - if$ - } - { format.crossref.editor * } - if$ - " \cite{" * crossref * "}" * -} -FUNCTION {format.incoll.inproc.crossref} -{ - editor empty$ - editor field.or.null author field.or.null = - or - { key empty$ - { format.booktitle duplicate$ empty$ - { "need editor, key, or booktitle for " cite$ * " to crossref " * - crossref * warning$ - } - { word.in swap$ * } - if$ - } - { word.in key * " " *} - if$ - } - { word.in format.crossref.editor * " " *} - if$ - " \cite{" * crossref * "}" * -} -FUNCTION {format.org.or.pub} -{ 't := - "" - address empty$ t empty$ and - 'skip$ - { - t empty$ - { address "address" bibinfo.check * - } - { t * - address empty$ - 'skip$ - { ", " * address "address" bibinfo.check * } - if$ - } - if$ - } - if$ -} -FUNCTION {format.publisher.address} -{ publisher "publisher" bibinfo.warn format.org.or.pub -} - -FUNCTION {format.organization.address} -{ organization "organization" bibinfo.check format.org.or.pub -} - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { - journal - "journal" bibinfo.check - "journal" output.check - format.vol.num.pages output - } - { format.article.crossref output.nonnull - format.pages output - } - if$ - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check - } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { format.bvolume output - new.block - format.number.series output - new.sentence - format.publisher.address output - } - { - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - format.isbn output - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} -FUNCTION {booklet} -{ output.bibitem - format.authors output - new.block - format.title "title" output.check - new.block - howpublished "howpublished" bibinfo.check output - address "address" bibinfo.check output - format.date output - format.isbn output - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check - } - { format.authors output.nonnull - crossref missing$ - { "author and editor" editor either.or.check } - 'skip$ - if$ - } - if$ - new.block - format.btitle "title" output.check - crossref missing$ - { - format.bvolume output - format.chapter.pages "chapter and pages" output.check - new.block - format.number.series output - new.sentence - format.publisher.address output - } - { - format.chapter.pages "chapter and pages" output.check - new.block - format.book.crossref output.nonnull - } - if$ - format.edition output - format.date "year" output.check - crossref missing$ - { format.isbn output } - 'skip$ - if$ - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.chapter.pages output - new.sentence - format.publisher.address output - format.edition output - format.date "year" output.check - format.isbn output - } - { format.incoll.inproc.crossref output.nonnull - format.chapter.pages output - } - if$ - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - new.block - crossref missing$ - { format.in.ed.booktitle "booktitle" output.check - format.bvolume output - format.number.series output - format.pages output - new.sentence - publisher empty$ - { format.organization.address output } - { organization "organization" bibinfo.check output - format.publisher.address output - } - if$ - format.date "year" output.check - format.isbn output - } - { format.incoll.inproc.crossref output.nonnull - format.pages output - } - if$ - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} -FUNCTION {conference} { inproceedings } -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization "organization" bibinfo.check - duplicate$ empty$ 'pop$ - { output - address "address" bibinfo.check output - } - if$ - } - { format.authors output.nonnull } - if$ - new.block - format.btitle "title" output.check - author empty$ - { organization empty$ - { - address new.block.checka - address "address" bibinfo.check output - } - 'skip$ - if$ - } - { - organization address new.block.checkb - organization "organization" bibinfo.check output - address "address" bibinfo.check output - } - if$ - format.edition output - format.date output - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle - "title" output.check - new.block - bbl.mthesis format.thesis.type output.nonnull - school "school" bibinfo.warn output - address "address" bibinfo.check output - format.date "year" output.check - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} - -FUNCTION {misc} -{ output.bibitem - format.authors output - title howpublished new.block.checkb - format.title output - howpublished new.block.checka - howpublished "howpublished" bibinfo.check output - format.date output - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry - empty.misc.check -} -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check - new.block - format.btitle - "title" output.check - new.block - bbl.phdthesis format.thesis.type output.nonnull - school "school" bibinfo.warn output - address "address" bibinfo.check output - format.date "year" output.check - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization "organization" bibinfo.check output - } - { format.editors output.nonnull } - if$ - new.block - format.btitle "title" output.check - format.bvolume output - format.number.series output - editor empty$ - { publisher empty$ - 'skip$ - { - new.sentence - format.publisher.address output - } - if$ - } - { publisher empty$ - { - new.sentence - format.organization.address output } - { - new.sentence - organization "organization" bibinfo.check output - format.publisher.address output - } - if$ - } - if$ - format.date "year" output.check - format.isbn output - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check - new.block - format.title - "title" output.check - new.block - format.tr.number output.nonnull - institution "institution" bibinfo.warn output - address "address" bibinfo.check output - format.date "year" output.check - new.block - format.url output - new.block - format.note output - format.eprint output - fin.entry -} - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check - new.block - format.title "title" output.check - format.date output - new.block - format.url output - new.block - format.note "note" output.check - format.eprint output - fin.entry -} - -FUNCTION {default.type} { misc } -READ -STRINGS { longest.label } -INTEGERS { number.label longest.label.width } -FUNCTION {initialize.longest.label} -{ "" 'longest.label := - #1 'number.label := - #0 'longest.label.width := -} -FUNCTION {longest.label.pass} -{ number.label int.to.str$ 'label := - number.label #1 + 'number.label := - label width$ longest.label.width > - { label 'longest.label := - label width$ 'longest.label.width := - } - 'skip$ - if$ -} -EXECUTE {initialize.longest.label} -ITERATE {longest.label.pass} -FUNCTION {begin.bib} -{ preamble$ empty$ - 'skip$ - { preamble$ write$ newline$ } - if$ - "\begin{thebibliography}{" longest.label * "}" * - write$ newline$ - "\providecommand{\url}[1]{\texttt{#1}}" - write$ newline$ - "\providecommand{\urlprefix}{URL }" - write$ newline$ - "\providecommand{\eprint}[2][]{\url{#2}}" - write$ newline$ -} -EXECUTE {begin.bib} -EXECUTE {init.state.consts} -ITERATE {call.type$} -FUNCTION {end.bib} -{ newline$ - "\end{thebibliography}" write$ newline$ -} -EXECUTE {end.bib} -%% End of customized bst file -%% -%% End of file `SciPost_bibstyle_v1.bst'. diff --git a/strings/__init__.py b/strings/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..82d957c9dde2ab9c1606aa3568f778e408e13a84 --- /dev/null +++ b/strings/__init__.py @@ -0,0 +1 @@ +acknowledge_request_thesis_link = "Thank you for your request for a Thesis Link. Your request will soon be handled by an editor" diff --git a/submissions/migrations/0028_auto_20161212_1931.py b/submissions/migrations/0028_auto_20161212_1931.py new file mode 100644 index 0000000000000000000000000000000000000000..0bd683ef41ac6dcf29ab4cb8b93b860310523b8f --- /dev/null +++ b/submissions/migrations/0028_auto_20161212_1931.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.3 on 2016-12-12 18:31 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('submissions', '0027_auto_20161019_2109'), + ] + + operations = [ + migrations.AlterField( + model_name='submission', + name='status', + field=models.CharField(choices=[('unassigned', 'Unassigned, undergoing pre-screening'), ('assignment_failed', 'Failed to assign Editor-in-charge; manuscript rejected'), ('EICassigned', 'Editor-in-charge assigned, manuscript under review'), ('review_closed', 'Review period closed, editorial recommendation pending'), ('revision_requested', 'Editor-in-charge has requested revision'), ('resubmitted', 'Has been resubmitted'), ('resubmitted_and_rejected', 'Has been resubmitted and subsequently rejected'), ('resubmitted_and_rejected_visible', 'Has been resubmitted and subsequently rejected (still publicly visible)'), ('voting_in_preparation', 'Voting in preparation (eligible Fellows being selected)'), ('put_to_EC_voting', 'Undergoing voting at the Editorial College'), ('EC_vote_completed', 'Editorial College voting rounded up'), ('accepted', 'Publication decision taken: accept'), ('rejected', 'Publication decision taken: reject'), ('rejected_visible', 'Publication decision taken: reject (still publicly visible)'), ('published', 'Published'), ('withdrawn', 'Withdrawn by the Authors')], max_length=30), + ), + ] diff --git a/submissions/models.py b/submissions/models.py index b9b77f8a63cf7e0c1d445cc6c79c927a95bedf81..b98ade4c96f582b19f060a43126bc62df7224430 100644 --- a/submissions/models.py +++ b/submissions/models.py @@ -21,7 +21,6 @@ from journals.models import Publication ############### # Submissions: ############### - SUBMISSION_STATUS = ( ('unassigned', 'Unassigned, undergoing pre-screening'), ('assignment_failed', 'Failed to assign Editor-in-charge; manuscript rejected'), @@ -30,6 +29,9 @@ SUBMISSION_STATUS = ( # If revisions required: resubmission creates a new Submission object ('revision_requested', 'Editor-in-charge has requested revision'), ('resubmitted', 'Has been resubmitted'), + ('resubmitted_and_rejected', 'Has been resubmitted and subsequently rejected'), + ('resubmitted_and_rejected_visible', + 'Has been resubmitted and subsequently rejected (still publicly visible)'), # If acceptance/rejection: ('voting_in_preparation', 'Voting in preparation (eligible Fellows being selected)'), ('put_to_EC_voting', 'Undergoing voting at the Editorial College'), @@ -50,15 +52,48 @@ SUBMISSION_STATUS_OUT_OF_POOL = [ 'withdrawn', ] +# Submissions which should not appear in search lists SUBMISSION_STATUS_PUBLICLY_UNLISTED = [ 'unassigned', 'assignment_failed', 'resubmitted', + 'resubmitted_rejected', + 'resubmitted_rejected_visible', 'rejected', 'published', 'withdrawn', ] +# Submissions which should not be viewable (except by admins, Fellows and authors) +SUBMISSION_STATUS_PUBLICLY_INVISIBLE = [ + 'unassigned', + 'assignment_failed', + 'resubmitted_rejected', + 'rejected', + #'published', + 'withdrawn', +] + +# Submissions for which voting on a related recommendation is deprecated: +SUBMISSION_STATUS_VOTING_DEPRECATED = [ + 'rejected', + 'published', + 'withdrawn', +] + + +# SUBMISSION_ACTION_REQUIRED = ( +# ('assign_EIC', 'Editor-in-charge to be assigned'), +# # ('Fellow_accepts_or_refuse_assignment', 'Fellow must accept or refuse assignment'), +# ('EIC_runs_refereeing_round', 'Editor-in-charge to run refereeing round (inviting referees)'), +# ('EIC_closes_refereeing_round', 'Editor-in-charge to close refereeing round'), +# ('EIC_invites_author_response', 'Editor-in-charge invites authors to complete their replies'), +# ('EIC_formulates_editorial_recommendation', +# 'Editor-in-charge to formulate editorial recommendation'), +# ('EC_ratification', 'Editorial College ratifies editorial recommendation'), +# ('Decision_to_authors', 'Editor-in-charge forwards decision to authors'), +# ) + SUBMISSION_TYPE = ( ('Letter', 'Letter (broad-interest breakthrough results)'), ('Article', 'Article (in-depth reports on specialized research)'), @@ -414,6 +449,7 @@ class Submission(models.Model): # Editorial workflow # ###################### + ASSIGNMENT_BOOL = ((True, 'Accept'), (False, 'Decline')) ASSIGNMENT_NULLBOOL = ((None, 'Response pending'), (True, 'Accept'), (False, 'Decline')) diff --git a/submissions/services.py b/submissions/services.py index a634d62ef2e7bbc7f1d233cece2575096a747300..833180ce1d6f9819a7312cab4977320ca3ab19e4 100644 --- a/submissions/services.py +++ b/submissions/services.py @@ -57,6 +57,10 @@ class ArxivCaller(): if previous_submissions[0].status == 'revision_requested': self.resubmission = True self.previous_submissions = previous_submissions + else if previous_submissions[0].status in ['rejected', 'rejected_visible']: + self.errorcode = 'previous_submissions_rejected' + self.isvalid = False + return else: self.errorcode = 'previous_submission_undergoing_refereeing' self.isvalid = False diff --git a/submissions/templates/submissions/assignment_failed_ack.html b/submissions/templates/submissions/assignment_failed.html similarity index 50% rename from submissions/templates/submissions/assignment_failed_ack.html rename to submissions/templates/submissions/assignment_failed.html index 7b598e0b08c4fb0b672a04a32fbace0c383a1dce..0264daab97cf6f2add39a43c57c39e105060bf9f 100644 --- a/submissions/templates/submissions/assignment_failed_ack.html +++ b/submissions/templates/submissions/assignment_failed.html @@ -7,8 +7,12 @@ <section> <h1>Assignment has failed for Submission</h1> <p>{{ submission.title }} by {{ submission.author_list }}.</p> - <p>The Submission has been removed from the pool, and authors have been informed.</p> - <p>Return to the <a href="{% url 'submissions:pool' %}">Submissions Pool</a>.</p> + <p>Please add comments on the Submission in this box.</p> + <form action="{% url 'submissions:assignment_failed' arxiv_identifier_w_vn_nr=submission.arxiv_identifier_w_vn_nr %}" method="POST"> + {% csrf_token %} + {{ form }} + <input type="submit" name="Submit" /> + </form> </section> {% endblock bodysup %} diff --git a/submissions/templates/submissions/pool.html b/submissions/templates/submissions/pool.html index b2e9bb46b205ad88ae0be38d06387a630e3fce20..d388a60efb4da5ba4ab747547bc9f106b30f0e62 100644 --- a/submissions/templates/submissions/pool.html +++ b/submissions/templates/submissions/pool.html @@ -17,7 +17,14 @@ $(document).ready(function(){ $('#ref_reason').hide(); } }); + + $(".submitRemarkForm").hide(); + + $(".submitRemarkButton").click( function() { + $(this).next("div").toggle(); + }); }); + </script> {% load guardian_tags %} @@ -218,6 +225,22 @@ $(document).ready(function(){ {% if request.user|is_not_author_of_submission:sub.arxiv_identifier_w_vn_nr %} <br/> {{ sub.header_as_li_for_Fellows }} + {% if sub.remark_set.all %} + <h4>Remarks on this submission:</h4> + <ul> + {% for rem in sub.remark_set.all %} + {{ rem.as_li }} + {% endfor %} + </ul> + {% endif %} + <button class="submitRemarkButton" id="remarkButton{{ submission.id }}">Add a remark on this Submission</button> + <div class="submitRemarkForm" id="remarkForm{{ submission.id }}"> + <form action="{% url 'submissions:add_remark' arxiv_identifier_w_vn_nr=sub.arxiv_identifier_w_vn_nr %}" method="post"> + {% csrf_token %} + {{ remark_form.as_p }} + <input type="submit" value="Submit" /> + </form> + </div> {% get_obj_perms request.user for sub as "sub_perms" %} {% if "can_take_editorial_actions" in sub_perms or request.user|is_in_group:'Editorial Administrators' %} <h4><a href="{% url 'submissions:editorial_page' arxiv_identifier_w_vn_nr=sub.arxiv_identifier_w_vn_nr %}"> @@ -236,7 +259,7 @@ $(document).ready(function(){ <h4>Actions:</h4> <ul> <li><a href="{% url 'submissions:assign_submission' arxiv_identifier_w_vn_nr=sub.arxiv_identifier_w_vn_nr %}">Send a new assignment request</a></li> - <li><a href="{% url 'submissions:assignment_failed' arxiv_identifier_w_vn_nr=sub.arxiv_identifier_w_vn_nr %}">Close pre-screening: failure to find EIC (<span style="color: red;">careful: one-click termination</span>)</a></li> + <li><a href="{% url 'submissions:assignment_failed' arxiv_identifier_w_vn_nr=sub.arxiv_identifier_w_vn_nr %}">Close pre-screening: failure to find EIC</a></li> </ul> {% endif %} {% endif %} diff --git a/submissions/urls.py b/submissions/urls.py index 889e80791c8ae74cdbf20e395b2e69f6567ccd1c..58b102c967d8b6ea6c1278c0b162fa48d9387500 100644 --- a/submissions/urls.py +++ b/submissions/urls.py @@ -25,6 +25,8 @@ urlpatterns = [ # url(r'^submit_manuscript$', views.submit_manuscript, name='submit_manuscript'), url(r'^submit_manuscript$', views.SubmissionCreateView.as_view(), name='submit_manuscript'), url(r'^pool$', views.pool, name='pool'), + url(r'^add_remark/(?P<arxiv_identifier_w_vn_nr>[0-9]{4,}.[0-9]{5,}v[0-9]{1,2})$', + views.add_remark, name='add_remark'), # Assignment of Editor-in-charge url(r'^assign_submission/(?P<arxiv_identifier_w_vn_nr>[0-9]{4,}.[0-9]{5,}v[0-9]{1,2})$', views.assign_submission, name='assign_submission'), diff --git a/submissions/utils.py b/submissions/utils.py index dbd7d30309b73e9cbc0ccaf5e7e44e564a84e1c2..6d2e0c65d65a5cf5bf2b470d2210ecf6e9dc7492 100644 --- a/submissions/utils.py +++ b/submissions/utils.py @@ -59,7 +59,7 @@ class SubmissionUtils(object): '\n\nWith many thanks,' + '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ title }} {{ last_name }},<br/>' + '<p>Dear {{ title }} {{ last_name }},</p>' '<p>We have received your Submission to SciPost,</p>' '<p>{{ sub_title }}</p>' '\n<p>by {{ author_list }}.</p>' @@ -101,7 +101,7 @@ class SubmissionUtils(object): '\n\nWith many thanks,' + '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ title }} {{ last_name}},<br/>' + '<p>Dear {{ title }} {{ last_name}},</p>' '<p>We have received your Resubmission to SciPost,</p>' '<p>{{ sub_title }}</p>' '\n<p>by {{ author_list }}.</p>' @@ -150,7 +150,7 @@ class SubmissionUtils(object): '\n\nMany thanks in advance for your collaboration,' + '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ title }} {{ last_name }},' + '<p>Dear {{ title }} {{ last_name }},</p>' '<p>We have received a Submission to SciPost ' + 'for which we would like you to consider becoming Editor-in-charge:</p>' '<p>{{ sub_title }}</p>\n<p>by {{ author_list }}.</p>' @@ -206,7 +206,7 @@ class SubmissionUtils(object): '\n\nMany thanks in advance for your collaboration,' '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ title }} {{ last_name }},<br/>' + '<p>Dear {{ title }} {{ last_name }},</p>' '<p>Thank you for accepting to become Editor-in-charge ' 'of the SciPost Submission</p>' '<p>{{ sub_title }}</p>' @@ -268,7 +268,7 @@ class SubmissionUtils(object): '\n\nMany thanks in advance for your collaboration,' '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ title }} {{ last_name }},' + '<p>Dear {{ title }} {{ last_name }},</p>' '<p>The authors of the SciPost Submission</p>' '<p>{{ sub_title }}</p>' '\n<p>by {{ author_list }}</p>' @@ -330,11 +330,15 @@ class SubmissionUtils(object): 'to-the-point clarifications of any issue raised on your manuscript.\n\n ' 'Please wait for the Editor-in-charge\'s Editorial Recommendation ' 'before any resubmission of your manuscript.' + '\n\nTo facilitate metadata handling, we recommend that all authors ' + 'have an ORCID id (easily obtained from https://orcid.org), ' + 'and be registered as SciPost Contributors. Could we please ask you ' + '(and your eventual coathors) to ensure that this is the case?' '\n\nWe thank you very much for your contribution.' '\n\nSincerely,' + '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ title }} {{ last_name }},' + '<p>Dear {{ title }} {{ last_name }},</p>' '<p>We are pleased to inform you that your recent Submission to SciPost,</p>' '<p>{{ sub_title }}</p>' '\n<p>by {{ author_list }}</p>' @@ -352,6 +356,11 @@ class SubmissionUtils(object): 'to-the-point clarifications of any issue raised on your manuscript.</p>' '<p>Please wait for the Editor-in-charge\'s Editorial Recommendation ' 'before any resubmission of your manuscript.</p>' + '<h4>Author information</h4>' + '<p>To facilitate metadata handling, we recommend that all authors ' + 'have an ORCID id (easily obtained from <a href="https://orcid.org">orcid.org</a>), ' + 'and be registered as SciPost Contributors. Could we please ask you ' + '(and your eventual coathors) to ensure that this is the case?</p>' '<p>We thank you very much for your contribution.</p>' '<p>Sincerely,</p>' '<p>The SciPost Team.</p>') @@ -388,19 +397,24 @@ class SubmissionUtils(object): + '\n\nhas unfortunately not passed the pre-screening stage. ' 'We therefore regret to inform you that we will not ' 'process your paper further towards publication, and that you ' - 'are now free to send your manuscript to an alternative journal.' - '\n\nWe nonetheless thank you very much for your contribution.' + 'are now free to send your manuscript to an alternative journal.') + if len(cls.personal_message) > 3: + email_text += '\n\n' + cls.personal_message + email_text += ('\n\nWe nonetheless thank you very much for your contribution.' '\n\nSincerely,' + '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ title }} {{ last_name }},' + '<p>Dear {{ title }} {{ last_name }},</p>' '<p>Your recent Submission to SciPost,</p>' - '<p>{{ title }}</p>' + '<p>{{ sub_title }}</p>' '\n<p>by {{ author_list }}</p>' '\n<p>has unfortunately not passed the pre-screening stage. ' 'We therefore regret to inform you that we will not ' 'process your paper further towards publication, and that you ' - 'are now free to send your manuscript to an alternative journal.</p>' + 'are now free to send your manuscript to an alternative journal.</p>') + if len(cls.personal_message) > 3: + email_text_html += '{{ personal_message|linebreaks }}' + email_text_html += ( '<p>We nonetheless thank you very much for your contribution.</p>' '<p>Sincerely,</p>' '<p>The SciPost Team.</p>') @@ -409,6 +423,7 @@ class SubmissionUtils(object): 'last_name': cls.submission.submitted_by.user.last_name, 'sub_title': cls.submission.title, 'author_list': cls.submission.author_list, + 'personal_message': cls.personal_message, }) email_text_html += '<br/>' + EMAIL_FOOTER html_template = Template(email_text_html) @@ -460,7 +475,7 @@ class SubmissionUtils(object): 'and thank you in advance for your consideration.' '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ title }} {{ last_name }},' + '<p>Dear {{ title }} {{ last_name }},</p>' '<p>We have received a Submission to SciPost ' 'which, in view of your expertise and on behalf of the Editor-in-charge ' '{{ EIC_title }} {{ EIC_last_name }}, ' @@ -526,7 +541,7 @@ class SubmissionUtils(object): + cls.invitation.submission.title + ' by ' + cls.invitation.submission.author_list + '.') email_text_html = ( - 'Dear {{ title }} {{ last_name }},' + '<p>Dear {{ title }} {{ last_name }},</p>' '<p>On behalf of the Editor-in-charge {{ EIC_title }} {{ EIC_last_name }}, ' 'we would like to cordially remind you of our recent request to referee</p>' '<p>{{ sub_title }}</p>' @@ -631,7 +646,7 @@ class SubmissionUtils(object): 'at some other point in the future,' '\n\nMany thanks for your time,\n\nThe SciPost Team') email_text_html = ( - 'Dear {{ title }} {{ last_name }},' + '<p>Dear {{ title }} {{ last_name }},</p>' '<p>On behalf of the Editor-in-charge {{ EIC_title }} {{ EIC_last_name }}, ' 'we would like to inform you that your report on</p>' '<p>{{ sub_title }}</p>' @@ -690,7 +705,7 @@ class SubmissionUtils(object): '\n\nReferee ' + title_dict[cls.invitation.referee.title] + ' ' + cls.invitation.referee.user.last_name + ' has ') email_text_html = ( - 'Dear {{ EIC_title }} {{ EIC_last_name }},' + '<p>Dear {{ EIC_title }} {{ EIC_last_name }},</p>' '<p>Referee {{ ref_title }} {{ ref_last_name }} has ') email_subject = 'SciPost: referee declines to review' if cls.invitation.accepted: @@ -760,7 +775,7 @@ class SubmissionUtils(object): '\n\nMany thanks for your collaboration,' '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ EIC_title }} {{ EIC_last_name }},' + '<p>Dear {{ EIC_title }} {{ EIC_last_name }},</p>' '<p>Referee {{ ref_title }} {{ ref_last_name }} ' 'has delivered a Report for Submission</p>' '<p>{{ sub_title }}</p>\n<p>by {{ author_list }}.</p>' @@ -800,7 +815,7 @@ class SubmissionUtils(object): cls.report.submission.title + ' by ' + cls.report.submission.author_list + '.') email_text_html = ( - 'Dear {{ ref_title }} {{ ref_last_name }},' + '<p>Dear {{ ref_title }} {{ ref_last_name }},</p>' '<p>Many thanks for your Report on Submission</p>' '<p>{{ sub_title }}</p>\n<p>by {{ author_list }}.</p>') if cls.report.status == 1: @@ -894,7 +909,7 @@ class SubmissionUtils(object): '\n\nSincerely,' + '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ auth_title }} {{ auth_last_name }},' + '<p>Dear {{ auth_title }} {{ auth_last_name }},</p>' '<p>A Report has been posted on your recent Submission to SciPost,</p>' '<p>{{ sub_title }}</p>\n<p>by {{ author_list }}.</p>' '\n<p>You can view it at the ' @@ -943,7 +958,7 @@ class SubmissionUtils(object): '\n\nSincerely,' + '\n\nThe SciPost Team.') email_text_html = ( - 'Dear {{ auth_title }} {{ auth_last_name }},' + '<p>Dear {{ auth_title }} {{ auth_last_name }},</p>' '<p>A Comment has been posted on your recent Submission to SciPost,</p>' '<p>{{ sub_title }}</p>\n<p>by {{ author_list }}.</p>' '\n<p>You can view it at the ' @@ -1048,7 +1063,7 @@ class SubmissionUtils(object): cls.submission.title + ' by ' + cls.submission.author_list + ',' '\n\nhas formulated an Editorial Recommendation, asking for a ') email_text_html = ( - 'Dear {{ auth_title }} {{ auth_last_name }},' + '<p>Dear {{ auth_title }} {{ auth_last_name }},</p>' '<p>The Editor-in-charge of your recent Submission to SciPost,</p>' '<p>{{ sub_title }}</p>\n<p>by {{ author_list }},</p>' '\n<p>has formulated an Editorial Recommendation, asking for a ') @@ -1119,7 +1134,7 @@ class SubmissionUtils(object): 'regarding your recent Submission,\n\n' + cls.submission.title + ' by ' + cls.submission.author_list + '.\n\n') email_text_html = ( - 'Dear {{ auth_title }} {{ auth_last_name }},' + '<p>Dear {{ auth_title }} {{ auth_last_name }},</p>' '<p>The Editorial College of SciPost has taken a decision ' 'regarding your recent Submission,</p>' '<p>{{ sub_title }}</p>\n<p>by {{ author_list }}.</p>') diff --git a/submissions/views.py b/submissions/views.py index 71f4fd438a243c13252bcc9e6f842f69ee6892a6..7c863aff2a7a409dea3873654e01d6116d7288c0 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -28,6 +28,7 @@ from .utils import SubmissionUtils from comments.models import Comment from journals.models import journals_submit_dict +from scipost.forms import ModifyPersonalMessageForm, RemarkForm from scipost.models import Contributor, title_dict, Remark, RegistrationInvitation from scipost.utils import Utils @@ -210,7 +211,12 @@ class PrefillUsingIdentifierView(FormView): 'closing of the previous refereeing round and ' 'formulation of the Editorial Recommendation ' 'before proceeding with a resubmission.'), - 'preprint_already_submitted': 'This preprint version has already been submitted to SciPost.' + 'preprint_already_submitted': 'This preprint version has already been submitted to SciPost.', + 'previous_submissions_rejected': + ('This arXiv preprint has previously undergone refereeing ' + 'and has been rejected. Resubmission is only possible ' + 'if the manuscript has been substantially reworked into ' + 'a new arXiv submission with distinct identifier.') } identifierform.add_error(None, errormessages[caller.errorcode]) @@ -474,11 +480,24 @@ def submission_detail_wo_vn_nr(request, arxiv_identifier_wo_vn_nr): def submission_detail(request, arxiv_identifier_w_vn_nr): submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) +<<<<<<< HEAD if (submission.status in SUBMISSION_STATUS_PUBLICLY_UNLISTED and request.user.contributor not in submission.authors.all() and not request.user.groups.filter(name='SciPost Administrators').exists() and not request.user.groups.filter(name='Editorial Administrators').exists() and not request.user.groups.filter(name='Editorial College').exists()): +======= + try: + is_author = request.user.contributor in submission.authors.all() + except AttributeError: + is_author = False + if (submission.status in SUBMISSION_STATUS_PUBLICLY_INVISIBLE + and not request.user.groups.filter(name='SciPost Administrators').exists() + and not request.user.groups.filter(name='Editorial Administrators').exists() + and not request.user.groups.filter(name='Editorial College').exists() + and not is_author + ): +>>>>>>> development raise PermissionDenied other_versions = Submission.objects.filter( arxiv_identifier_wo_vn_nr=submission.arxiv_identifier_wo_vn_nr @@ -591,18 +610,48 @@ def pool(request): recommendation=-1).exclude(recommendation=-2).exclude( voted_for__in=[contributor]).exclude( voted_against__in=[contributor]).exclude( - voted_abstain__in=[contributor]) + voted_abstain__in=[contributor]).exclude( + submission__status__in=SUBMISSION_STATUS_VOTING_DEPRECATED) rec_vote_form = RecommendationVoteForm() + remark_form = RemarkForm() context = {'submissions_in_pool': submissions_in_pool, 'recommendations_undergoing_voting': recommendations_undergoing_voting, 'recommendations_to_prepare_for_voting': recommendations_to_prepare_for_voting, 'assignments_to_consider': assignments_to_consider, 'consider_assignment_form': consider_assignment_form, 'recs_to_vote_on': recs_to_vote_on, - 'rec_vote_form': rec_vote_form} + 'rec_vote_form': rec_vote_form, + 'remark_form': remark_form,} return render(request, 'submissions/pool.html', context) +@login_required +@permission_required('scipost.can_view_pool', raise_exception=True) +def add_remark(request, arxiv_identifier_w_vn_nr): + """ + With this method, an Editorial Fellow or Board Member + is adding a remark on a Submission. + """ + submission = get_object_or_404(Submission, + arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) + if request.method == 'POST': + remark_form = RemarkForm(request.POST) + if remark_form.is_valid(): + remark = Remark(contributor=request.user.contributor, + submission=submission, + date=timezone.now(), + remark=remark_form.cleaned_data['remark']) + remark.save() + return redirect(reverse('submissions:pool')) + else: + errormessage = 'The form was invalidly filled.' + return render(request, 'scipost/error.html', {'errormessage': errormessage}) + else: + errormessage = 'This view can only be posted to.' + return render(request, 'scipost/error.html', {'errormessage': errormessage}) + + + @login_required @permission_required('scipost.can_assign_submissions', raise_exception=True) def assign_submission(request, arxiv_identifier_w_vn_nr): @@ -754,15 +803,28 @@ def assignment_failed(request, arxiv_identifier_w_vn_nr): This method is called from pool.html by an Editorial Administrator. """ submission = get_object_or_404(Submission, arxiv_identifier_w_vn_nr=arxiv_identifier_w_vn_nr) - submission.status = 'assignment_failed' - submission.latest_activity = timezone.now() - submission.save() - SubmissionUtils.load({'submission': submission}) - SubmissionUtils.deprecate_all_assignments() - SubmissionUtils.assignment_failed_email_authors() - - context = {'submission': submission} - return render(request, 'submissions/assignment_failed_ack.html', context) + if request.method == 'POST': + form = ModifyPersonalMessageForm(request.POST) + if form.is_valid(): + submission.status = 'assignment_failed' + submission.latest_activity = timezone.now() + submission.save() + SubmissionUtils.load({'submission': submission, + 'personal_message': form.cleaned_data['personal_message']}) + SubmissionUtils.deprecate_all_assignments() + SubmissionUtils.assignment_failed_email_authors() + context = {'ack_header': ('Submission ' + submission.arxiv_identifier_w_vn_nr + + ' has failed pre-screening and been rejected. ' + 'Authors have been informed by email.'), + 'followup_message': 'Return to the ', + 'followup_link': reverse('submissions:pool'), + 'followup_link_label': 'Submissions pool'} + return render(request, 'scipost/acknowledgement.html', context) + else: + form = ModifyPersonalMessageForm() + context = {'submission': submission, + 'form': form} + return render(request, 'submissions/assignment_failed.html', context) @login_required @@ -1389,7 +1451,17 @@ def fix_College_decision(request, rec_id): recommendation.submission.status = 'accepted' elif recommendation.recommendation == -3: # Reject +<<<<<<< HEAD recommendation.submission.status = 'rejected' +======= + recommendation.submission.status='rejected' + previous_submissions = Submission.objects.filter( + arxiv_identifier_wo_vn_nr=recommendation.submission.arxiv_identifier_wo_vn_nr + ).exclude(pk=recommendation.submission.id) + for sub in previous_submissions: + sub.status = 'resubmitted_rejected' + sub.save() +>>>>>>> development recommendation.submission.save() SubmissionUtils.load({'submission': recommendation.submission, diff --git a/theses/factories.py b/theses/factories.py index 1a12cd026941ad06ef7e4ad82c798b6947813a93..bc57863b350e82579b8725bd27884bdeb1382c24 100644 --- a/theses/factories.py +++ b/theses/factories.py @@ -1,7 +1,11 @@ import factory -from .models import ThesisLink + +from common.helpers.factories import FormFactory from scipost.factories import ContributorFactory +from .models import ThesisLink +from .forms import VetThesisLinkForm + class ThesisLinkFactory(factory.django.DjangoModelFactory): class Meta: @@ -9,7 +13,7 @@ class ThesisLinkFactory(factory.django.DjangoModelFactory): requested_by = factory.SubFactory(ContributorFactory) type = ThesisLink.MASTER_THESIS - title = factory.Sequence(lambda n: "thesis {0}".format(n)) + title = factory.Faker('bs') pub_link = factory.Faker('uri') author = factory.Faker('name') supervisor = factory.Faker('name') @@ -17,3 +21,11 @@ class ThesisLinkFactory(factory.django.DjangoModelFactory): defense_date = factory.Faker('date_time_this_century') abstract = factory.Faker('text') domain = 'ET' + + +class VetThesisLinkFormFactory(FormFactory): + class Meta: + model = VetThesisLinkForm + + action_option = VetThesisLinkForm.ACCEPT + # justification = factory.Faker('lorem') diff --git a/theses/forms.py b/theses/forms.py index 13b4a1793a47b46f2e9c993e8c55c2d86ebf0834..05963cb3221ca5cadcc553f653090d316395470b 100644 --- a/theses/forms.py +++ b/theses/forms.py @@ -3,18 +3,6 @@ from django import forms from .models import * from .helpers import past_years -THESIS_ACTION_CHOICES = ( - (0, 'modify'), - (1, 'accept'), - (2, 'refuse (give reason below)'), - ) - -THESIS_REFUSAL_CHOICES = ( - (0, '-'), - (-1, 'a link to this thesis already exists'), - (-2, 'the external link to this thesis does not work'), - ) - class RequestThesisLinkForm(forms.ModelForm): class Meta: @@ -29,13 +17,35 @@ class RequestThesisLinkForm(forms.ModelForm): class VetThesisLinkForm(forms.Form): - action_option = forms.ChoiceField(widget=forms.RadioSelect, - choices=THESIS_ACTION_CHOICES, - required=True, label='Action') + MODIFY = 0 + ACCEPT = 1 + REFUSE = 2 + THESIS_ACTION_CHOICES = ( + (MODIFY, 'modify'), + (ACCEPT, 'accept'), + (REFUSE, 'refuse (give reason below)'), + ) + + EMPTY_CHOICE = 0 + ALREADY_EXISTS = 1 + LINK_DOES_NOT_WORK = 2 + THESIS_REFUSAL_CHOICES = ( + (EMPTY_CHOICE, '---'), + (ALREADY_EXISTS, 'a link to this thesis already exists'), + (LINK_DOES_NOT_WORK, 'the external link to this thesis does not work'), + ) + + action_option = forms.ChoiceField( + widget=forms.RadioSelect, choices=THESIS_ACTION_CHOICES, required=True, label='Action') refusal_reason = forms.ChoiceField(choices=THESIS_REFUSAL_CHOICES, required=False) - email_response_field = forms.CharField(widget=forms.Textarea( + justification = forms.CharField(widget=forms.Textarea( attrs={'rows': 5, 'cols': 40}), label='Justification (optional)', required=False) + def vet_request(self, thesis_link): + print(self.cleaned_data) + if self.cleaned_data['action_option'] == VetThesisLinkForm.ACCEPT: + print('hoi') + class ThesisLinkSearchForm(forms.Form): author = forms.CharField(max_length=100, required=False, label="Author") diff --git a/theses/templates/theses/vet_thesislink_requests.html b/theses/templates/theses/vet_thesislink_requests.html index 4fd2a7d9abc646c28443f658ae4cc156e24e6cb1..c49008776f23329e746b62c1e0d84c9da1f3a178 100644 --- a/theses/templates/theses/vet_thesislink_requests.html +++ b/theses/templates/theses/vet_thesislink_requests.html @@ -22,7 +22,7 @@ <p>{{ thesislink_to_vet.abstract }}</p> </div> <div class="col-4"> - <form action="{% url 'theses:vet_thesislink_request_ack' thesislink_id=thesislink_to_vet.id %}" method="post"> + <form method="post"> {% csrf_token %} {{ form.as_ul }} <input type="submit" value="Submit" /> diff --git a/theses/test_forms.py b/theses/test_forms.py index ce07aa6214b9811d4b0ca54e09c7b5b304b93901..1456184593dd64e0f63f12574fb5c59b87576e6a 100644 --- a/theses/test_forms.py +++ b/theses/test_forms.py @@ -2,8 +2,8 @@ import factory from django.test import TestCase -from .factories import ThesisLinkFactory -from .forms import RequestThesisLinkForm +from .factories import ThesisLinkFactory, VetThesisLinkFormFactory +from .forms import RequestThesisLinkForm, VetThesisLinkForm from common.helpers import model_form_data @@ -24,3 +24,21 @@ class TestRequestThesisLink(TestCase): form = RequestThesisLinkForm(form_data) form.is_valid() self.assertEqual(form.errors['domain'], ['This field is required.']) + + +class TestVetThesisLinkRequests(TestCase): + fixtures = ['permissions', 'groups'] + + def test_thesislink_gets_vetted_when_accepted(self): + thesis_link = ThesisLinkFactory() + form = VetThesisLinkFormFactory() + form.is_valid() + form.vet_request(thesis_link) + self.assertTrue(thesis_link.vetted) + + def test_thesislink_is_not_vetted_when_refused(self): + thesis_link = ThesisLinkFactory() + form = VetThesisLinkFormFactory(action_option=VetThesisLinkForm.REFUSE) + form.is_valid() + form.vet_request(thesis_link) + self.assertFalse(thesis_link.vetted) diff --git a/theses/test_views.py b/theses/test_views.py index 7e70a6dd41170d221dfd8a4d586a4a8b0ff0c38c..faa7f14d5d621096441faa542af7984e8e629573 100644 --- a/theses/test_views.py +++ b/theses/test_views.py @@ -1,11 +1,14 @@ +import re + +from django.core.exceptions import PermissionDenied from django.test import TestCase, RequestFactory from django.test.client import Client -from django.contrib.auth.models import AnonymousUser +from django.contrib.auth.models import Group from django.urls import reverse -from .views import RequestThesisLink -from scipost.factories import UserFactory -from .factories import ThesisLinkFactory +from .views import RequestThesisLink, VetThesisLinkRequests +from scipost.factories import UserFactory, ContributorFactory +from .factories import ThesisLinkFactory, VetThesisLinkFormFactory from .models import ThesisLink @@ -25,18 +28,63 @@ class TestRequestThesisLink(TestCase): def setUp(self): self.client = Client() + self.target = reverse('theses:request_thesislink') def test_response_when_not_logged_in(self): '''A visitor that is not logged in cannot view this page.''' - response = self.client.get(reverse('theses:request_thesislink')) + response = self.client.get(self.target) self.assertEqual(response.status_code, 403) def test_response_when_logged_in(self): - request = RequestFactory().get(reverse('theses:request_thesislink')) + request = RequestFactory().get(self.target) request.user = UserFactory() response = RequestThesisLink.as_view()(request) self.assertEqual(response.status_code, 200) - def test_redirects_to_acknowledgement_page(self): - response = self.client.post(reverse('theses:request_thesislink'), {}, follow=True) - self.assertRedirects(response, reverse('scipost:acknowledgement')) + +class TestVetThesisLinkRequests(TestCase): + fixtures = ['groups', 'permissions'] + + def setUp(self): + self.client = Client() + self.target = reverse('theses:vet_thesislink_requests') + + def test_response_when_not_logged_in(self): + response = self.client.get(self.target) + self.assertEqual(response.status_code, 403) + + def test_response_regular_contributor(self): + ''' + A Contributor needs to be in the Vetting Editors group to be able to + vet submitted thesis links. + ''' + # Create ThesisLink to vet. + ThesisLinkFactory() + request = RequestFactory().get(self.target) + user = UserFactory() + request.user = user + self.assertRaises( + PermissionDenied, VetThesisLinkRequests.as_view(), request) + + def test_response_vetting_editor(self): + # Create ThesisLink to vet. + ThesisLinkFactory() + request = RequestFactory().get(self.target) + user = UserFactory() + user.groups.add(Group.objects.get(name="Vetting Editors")) + request.user = user + response = VetThesisLinkRequests.as_view()(request) + self.assertEqual(response.status_code, 200) + + def test_thesislink_is_vetted_by_correct_contributor(self): + # TODO: how to make sure we are vetting the right thesis link? + contributor = ContributorFactory() + contributor.user.groups.add(Group.objects.get(name="Vetting Editors")) + post_data = VetThesisLinkFormFactory().data + + request = RequestFactory().post(self.target, post_data) + request.user = contributor.user + + response = VetThesisLinkRequests.as_view()(request) + + self.assertTrue(False) diff --git a/theses/urls.py b/theses/urls.py index 05839aa7550bedf319b58d82bb3e7aa59703cacf..3d3c530e497a0ca6794259b9626530d6a8e8fbc9 100644 --- a/theses/urls.py +++ b/theses/urls.py @@ -9,7 +9,7 @@ urlpatterns = [ url(r'^browse/(?P<discipline>[a-z]+)/(?P<nrweeksback>[0-9]+)/$', views.browse, name='browse'), url(r'^(?P<thesislink_id>[0-9]+)/$', views.thesis_detail, name='thesis'), url(r'^request_thesislink$', views.RequestThesisLink.as_view(), name='request_thesislink'), - url(r'^vet_thesislink_requests$', views.vet_thesislink_requests, + url(r'^vet_thesislink_requests$', views.VetThesisLinkRequests.as_view(), name='vet_thesislink_requests'), url(r'^vet_thesislink_request_ack/(?P<thesislink_id>[0-9]+)$', views.vet_thesislink_request_ack, name='vet_thesislink_request_ack'), diff --git a/theses/views.py b/theses/views.py index 7e738e39d719d57235c783350d1a1d2b4c6cb814..7e782a4b88b20052e4c52217c4544106c246ced6 100644 --- a/theses/views.py +++ b/theses/views.py @@ -5,12 +5,13 @@ from django.shortcuts import get_object_or_404, render from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required, permission_required from django.contrib.auth.models import User +from django.contrib import messages from django.core.mail import EmailMessage -from django.core.urlresolvers import reverse +from django.core.urlresolvers import reverse, reverse_lazy from django.http import HttpResponse, HttpResponseRedirect from django.views.decorators.csrf import csrf_protect from django.db.models import Avg -from django.views.generic.edit import CreateView +from django.views.generic.edit import CreateView, FormView from django.utils.decorators import method_decorator from .models import * @@ -33,25 +34,43 @@ title_dict = dict(TITLE_CHOICES) # Convert titles for use in emails class RequestThesisLink(CreateView): form_class = RequestThesisLinkForm template_name = 'theses/request_thesislink.html' - success_url = '' + success_url = reverse_lazy('scipost:personal_page') def form_valid(self, form): - context = {'ack_header': 'Thank you for your request for a Thesis Link', - 'ack_message': 'Your request will soon be handled by an Editor. ', - 'followup_message': 'Return to your ', - 'followup_link': reverse('scipost:personal_page'), - 'followup_link_label': 'personal page'} - return render(self.request, 'scipost/acknowledgement.html', context) + messages.add_message(self.request, messages.SUCCESS, + strings.acknowledge_request_thesis_link) + return super(RequestThesisLink, self).form_valid(form) -@permission_required('scipost.can_vet_thesislink_requests', raise_exception=True) -def vet_thesislink_requests(request): - contributor = Contributor.objects.get(user=request.user) - thesislink_to_vet = ThesisLink.objects.filter( - vetted=False).first() # only handle one at a time - form = VetThesisLinkForm() - context = {'contributor': contributor, 'thesislink_to_vet': thesislink_to_vet, 'form': form} - return render(request, 'theses/vet_thesislink_requests.html', context) +@method_decorator(permission_required( + 'scipost.can_vet_thesislink_requests', raise_exception=True), name='dispatch') +class VetThesisLinkRequests(FormView): + form_class = VetThesisLinkForm + template_name = 'theses/vet_thesislink_requests.html' + # TODO: not right yet + success_url = reverse_lazy('theses:vet_thesislink_requests') + + def get_context_data(self, **kwargs): + context = super(VetThesisLinkRequests, self).get_context_data(**kwargs) + context['thesislink_to_vet'] = self.thesislink_to_vet() + return context + + def thesislink_to_vet(self): + return ThesisLink.objects.filter(vetted=False).first() + + def form_valid(self, form): + form.vet_request(self.thesislink_to_vet()) + return super(VetThesisLinkRequests, self).form_valid(form) + + +# @permission_required('scipost.can_vet_thesislink_requests', raise_exception=True) +# def vet_thesislink_requests(request): +# contributor = Contributor.objects.get(user=request.user) +# thesislink_to_vet = ThesisLink.objects.filter( +# vetted=False).first() # only handle one at a time +# form = VetThesisLinkForm() +# context = {'contributor': contributor, 'thesislink_to_vet': thesislink_to_vet, 'form': form} +# return render(request, 'theses/vet_thesislink_requests.html', context) @permission_required('scipost.can_vet_thesislink_requests', raise_exception=True) @@ -111,9 +130,9 @@ def vet_thesislink_request_ack(request, thesislink_id): + ', has not been activated for the following reason: ' + form.cleaned_data['refusal_reason'] + '.\n\nThank you for your interest, \nThe SciPost Team.') - if form.cleaned_data['email_response_field']: + if form.cleaned_data['justification']: email_text += '\n\nFurther explanations: ' + \ - form.cleaned_data['email_response_field'] + form.cleaned_data['justification'] emailmessage = EmailMessage('SciPost Thesis Link', email_text, 'SciPost Theses <theses@scipost.org>', [thesislink.requested_by.user.email], @@ -208,8 +227,16 @@ def thesis_detail(request, thesislink_id): new_comment.save() author.nr_comments = Comment.objects.filter(author=author).count() author.save() - request.session['thesislink_id'] = thesislink_id - context = {} + context = { + 'ack_header': 'Thank you for contributing a Comment.', + 'ack_message': 'It will soon be vetted by an Editor.', + 'followup_message': 'Back to the ', + 'followup_link': reverse( + 'theses:thesis', + kwargs={'thesislink_id': new_comment.thesislink.id} + ), + 'followup_link_label': ' Thesis Link page you came from' + } return render(request, 'scipost/acknowledgement.html', context) else: form = CommentForm() diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000000000000000000000000000000000000..b41c163e9113774a6f928bbeaf4293722637c5ee --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,74 @@ +var webpack = require("webpack"); +var BundleTracker = require('webpack-bundle-tracker'); +var CleanWebpackPlugin = require('clean-webpack-plugin'); +var ExtractTextPlugin = require("extract-text-webpack-plugin"); +var glob = require("glob"); +var path_bundles = __dirname + '/static_bundles/bundles'; + +module.exports = { + context: __dirname, + entry: { + main: glob.sync("./scipost/static/scipost/assets/**/*.@(js|css|scss)"), + bootstrap: 'bootstrap-loader' + }, + output: { + path: path_bundles, + publicPath: '/static/bundles/', + filename: "js/[name]-[hash].js", + }, + module: { + loaders: [ + { + test: /\.css$/, + loader: ExtractTextPlugin.extract({ + fallbackLoader: "style-loader", + loader: "css-loader" + }) + }, + { + test: /\.less$/, + loader: ExtractTextPlugin.extract({ + fallbackLoader: "style-loader", + loader: "css-loader!less-loader" + }) + }, + { + test: /\.scss$/, + loader: ExtractTextPlugin.extract({ + fallbackLoader: "style-loader", + loader: "css-loader!sass-loader", + }) + } + ] + }, + plugins: [ + new webpack.ProvidePlugin({ + $: "jquery", + jQuery: "jquery", + "window.jQuery": "jquery", + Tether: "tether", + "window.Tether": "tether", + // Alert: "exports-loader?Alert!bootstrap/js/dist/alert", + // Button: "exports-loader?Button!bootstrap/js/dist/button", + // Carousel: "exports-loader?Carousel!bootstrap/js/dist/carousel", + Collapse: "exports-loader?Collapse!bootstrap/js/dist/collapse", + // Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown", + // Modal: "exports-loader?Modal!bootstrap/js/dist/modal", + // Popover: "exports-loader?Popover!bootstrap/js/dist/popover", + // Scrollspy: "exports-loader?Scrollspy!bootstrap/js/dist/scrollspy", + // Tab: "exports-loader?Tab!bootstrap/js/dist/tab", + // Tooltip: "exports-loader?Tooltip!bootstrap/js/dist/tooltip", + Util: "exports-loader?Util!bootstrap/js/dist/util", + }), + new BundleTracker({ + filename: './webpack-stats.json' + }), + new ExtractTextPlugin('css/[name]-[hash].css'), + new CleanWebpackPlugin(['css', 'js'], { + root: path_bundles, + verbose: true, + dry: false, + exclude: [] + }) + ], +}