From 2946251c918f31801cea756171cb5ea153704f6c Mon Sep 17 00:00:00 2001 From: koliber Date: Tue, 18 Aug 2015 14:47:04 +0200 Subject: [PATCH 001/131] Added explicit id field in multi update example If the id field is implicitly created, it is created as `read_only=True`. This causes the data validation step to remove the id values in the validated data. --- docs/api-guide/serializers.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/api-guide/serializers.md b/docs/api-guide/serializers.md index abdb67afac3..d0b6a3c5b65 100644 --- a/docs/api-guide/serializers.md +++ b/docs/api-guide/serializers.md @@ -774,6 +774,11 @@ Here's an example of how you might choose to implement multiple updates: class BookSerializer(serializers.Serializer): ... + id = serializers.IntegerField( + read_only=False, + required=False + ) + class Meta: list_serializer_class = BookListSerializer From dae5426e20eb8b6f215344d2a868c4ff31af3f99 Mon Sep 17 00:00:00 2001 From: koliber Date: Fri, 28 Aug 2015 15:35:32 +0200 Subject: [PATCH 002/131] Changed formatting and updated docs --- docs/api-guide/serializers.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/api-guide/serializers.md b/docs/api-guide/serializers.md index d0b6a3c5b65..66f3c4d4312 100644 --- a/docs/api-guide/serializers.md +++ b/docs/api-guide/serializers.md @@ -747,6 +747,8 @@ To support multiple updates you'll need to do so explicitly. When writing your m * How should insertions be handled? Are they invalid, or do they create new objects? * How should removals be handled? Do they imply object deletion, or removing a relationship? Should they be silently ignored, or are they invalid? * How should ordering be handled? Does changing the position of two items imply any state change or is it ignored? + +You will need to add an explicit `id` field to the instance serializer. The default implicitly-generated `id` field is marked as `read_only`. This causes it to be removed on updates. Once you declare it explicitly, it will be available in the list serializer's `update` method. Here's an example of how you might choose to implement multiple updates: @@ -774,10 +776,7 @@ Here's an example of how you might choose to implement multiple updates: class BookSerializer(serializers.Serializer): ... - id = serializers.IntegerField( - read_only=False, - required=False - ) + id = serializers.IntegerField(required=False) class Meta: list_serializer_class = BookListSerializer From 276bc3bc2bae2c793da534645a1bd7349426076a Mon Sep 17 00:00:00 2001 From: "Michael J. Schultz" Date: Thu, 5 Nov 2015 10:47:56 -0600 Subject: [PATCH 003/131] Remove safe_mode since it is not safe. --- rest_framework/compat.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 8b782a1c26b..55b6fde2320 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -160,8 +160,7 @@ def apply_markdown(text): """ extensions = ['headerid(level=2)'] - safe_mode = False - md = markdown.Markdown(extensions=extensions, safe_mode=safe_mode) + md = markdown.Markdown(extensions=extensions) return md.convert(text) except ImportError: apply_markdown = None From d9d34e4886c283653bc7d9e50a414ab07ee8bb93 Mon Sep 17 00:00:00 2001 From: "Michael J. Schultz" Date: Thu, 5 Nov 2015 10:48:19 -0600 Subject: [PATCH 004/131] Use full python dot path to extension --- rest_framework/compat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 55b6fde2320..a6596d19dfe 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -159,7 +159,7 @@ def apply_markdown(text): of '#' style headers to

. """ - extensions = ['headerid(level=2)'] + extensions = ['markdown.extensions.headerid(level=2)'] md = markdown.Markdown(extensions=extensions) return md.convert(text) except ImportError: From b2e74fb523ff2488106a5004e1e70d2fd0592929 Mon Sep 17 00:00:00 2001 From: "Michael J. Schultz" Date: Thu, 5 Nov 2015 10:52:31 -0600 Subject: [PATCH 005/131] Use markdown 2.6 extension_configs to configure extension --- rest_framework/compat.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index a6596d19dfe..70cb0485c41 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -159,8 +159,15 @@ def apply_markdown(text): of '#' style headers to

. """ - extensions = ['markdown.extensions.headerid(level=2)'] - md = markdown.Markdown(extensions=extensions) + extensions = ['markdown.extensions.headerid'] + extension_configs = { + 'markdown.extensions.headerid': { + 'level': '2' + } + } + md = markdown.Markdown( + extensions=extensions, extension_configs=extension_configs + ) return md.convert(text) except ImportError: apply_markdown = None From f2452936e9a33ce6eb95b11bd89b34fc6d2991a0 Mon Sep 17 00:00:00 2001 From: Ryan Hiebert Date: Thu, 5 Nov 2015 13:07:40 -0600 Subject: [PATCH 006/131] Allow no queryset when get_queryset overridden The user may wish to provide a dynamic queryset on a `RelatedField` based on the `context`. The way to do that is to create a subclass of `RelatedField` (or a child) and override the `get_queryset` method. However, this is undocumented, and instantiating that field without a `queryset` argument (because it's not needed) will raise an assertion error. Document `.get_queryset(self)` as an official part of the API of `RelatedField`, and don't enforce the use of `queryset` when `get_queryset` is overridden. --- docs/api-guide/relations.md | 2 ++ rest_framework/relations.py | 8 ++++---- tests/test_relations.py | 8 ++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/api-guide/relations.md b/docs/api-guide/relations.md index 51e5f78c437..d5a7bfc7fcf 100644 --- a/docs/api-guide/relations.md +++ b/docs/api-guide/relations.md @@ -330,6 +330,8 @@ To implement a custom relational field, you should override `RelatedField`, and If you want to implement a read-write relational field, you must also implement the `.to_internal_value(self, data)` method. +To provide a dynamic queryset based on the `context`, you can also override `.get_queryset(self)` instead of specifying `.queryset` on the class or when initializing the field. + ## Example For example, we could define a relational field to serialize a track to a custom string representation, using its ordering, title, and duration. diff --git a/rest_framework/relations.py b/rest_framework/relations.py index 40261f3f3e5..74e0f3e03f7 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -62,10 +62,6 @@ def __init__(self, **kwargs): self.queryset = kwargs.pop('queryset', self.queryset) self.html_cutoff = kwargs.pop('html_cutoff', self.html_cutoff) self.html_cutoff_text = kwargs.pop('html_cutoff_text', self.html_cutoff_text) - assert self.queryset is not None or kwargs.get('read_only', None), ( - 'Relational field must provide a `queryset` argument, ' - 'or set read_only=`True`.' - ) assert not (self.queryset is not None and kwargs.get('read_only', None)), ( 'Relational fields should not provide a `queryset` argument, ' 'when setting read_only=`True`.' @@ -112,6 +108,10 @@ def run_validation(self, data=empty): def get_queryset(self): queryset = self.queryset + assert queryset is not None, ( + 'Relational field must provide a `queryset` argument, ' + 'or set read_only=`True`.' + ) if isinstance(queryset, (QuerySet, Manager)): # Ensure queryset is re-evaluated whenever used. # Note that actually a `Manager` class may also be used as the diff --git a/tests/test_relations.py b/tests/test_relations.py index fd37e63e312..9703c3b9d2a 100644 --- a/tests/test_relations.py +++ b/tests/test_relations.py @@ -176,6 +176,14 @@ def test_representation(self): representation = self.field.to_representation(self.instance) assert representation == self.instance.name + def test_no_queryset_init(self): + class NoQuerySetSlugRelatedField(serializers.SlugRelatedField): + def get_queryset(this): + return self.queryset + + field = NoQuerySetSlugRelatedField(slug_field='name') + field.to_internal_value(self.instance.name) + class TestManyRelatedField(APISimpleTestCase): def setUp(self): From abc6fa05e685ea5fe4cf3b3ff4fe875463f07b1c Mon Sep 17 00:00:00 2001 From: "Michael J. Schultz" Date: Mon, 9 Nov 2015 11:47:00 -0600 Subject: [PATCH 007/131] Markdown 2.1 compatible --- rest_framework/compat.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 70cb0485c41..bb7cae05539 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -152,16 +152,19 @@ def __init__(self, *args, **kwargs): try: import markdown + if markdown.version <= '2.2': + HEADERID_EXT_PATH = 'headerid' + else: + HEADERID_EXT_PATH = 'markdown.extensions.headerid' def apply_markdown(text): """ Simple wrapper around :func:`markdown.markdown` to set the base level of '#' style headers to

. """ - - extensions = ['markdown.extensions.headerid'] + extensions = [HEADERID_EXT_PATH] extension_configs = { - 'markdown.extensions.headerid': { + HEADERID_EXT_PATH: { 'level': '2' } } From f308900a5fa3f37f5853180c5bde92b681749c04 Mon Sep 17 00:00:00 2001 From: "Michael J. Schultz" Date: Mon, 9 Nov 2015 11:48:17 -0600 Subject: [PATCH 008/131] Bump the markdown optional requirement as well --- requirements/requirements-optionals.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements-optionals.txt b/requirements/requirements-optionals.txt index 3ada43ebd5a..0221b211e13 100644 --- a/requirements/requirements-optionals.txt +++ b/requirements/requirements-optionals.txt @@ -1,4 +1,4 @@ # Optional packages which may be used with REST framework. -markdown==2.5.2 +markdown==2.6.4 django-guardian==1.3.0 django-filter==0.10.0 From 82eb4c8d71cfbd4b624a9fd8af9b489e9186b9a4 Mon Sep 17 00:00:00 2001 From: d6bels Date: Wed, 11 Nov 2015 10:42:20 +0100 Subject: [PATCH 009/131] Login form autofocus --- rest_framework/templates/rest_framework/login_base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/templates/rest_framework/login_base.html b/rest_framework/templates/rest_framework/login_base.html index 7f2bfb51b07..430a416b5ca 100644 --- a/rest_framework/templates/rest_framework/login_base.html +++ b/rest_framework/templates/rest_framework/login_base.html @@ -25,7 +25,7 @@ {% if form.username.errors %}

From fe12816b829a5b73648ab367a9c3ddbdf292abaa Mon Sep 17 00:00:00 2001 From: Ryan Hiebert Date: Fri, 13 Nov 2015 15:16:27 -0600 Subject: [PATCH 010/131] Move default validation back into init method --- rest_framework/relations.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/rest_framework/relations.py b/rest_framework/relations.py index 74e0f3e03f7..e2b46c121dd 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -62,6 +62,14 @@ def __init__(self, **kwargs): self.queryset = kwargs.pop('queryset', self.queryset) self.html_cutoff = kwargs.pop('html_cutoff', self.html_cutoff) self.html_cutoff_text = kwargs.pop('html_cutoff_text', self.html_cutoff_text) + + default_get_queryset = getattr(RelatedField.get_queryset, '__func__', + RelatedField.get_queryset) # Python 2/3 + if self.get_queryset.__func__ == default_get_queryset: + assert self.queryset is not None or kwargs.get('read_only', None), ( + 'Relational field must provide a `queryset` argument, ' + 'or set read_only=`True`.' + ) assert not (self.queryset is not None and kwargs.get('read_only', None)), ( 'Relational fields should not provide a `queryset` argument, ' 'when setting read_only=`True`.' @@ -108,10 +116,6 @@ def run_validation(self, data=empty): def get_queryset(self): queryset = self.queryset - assert queryset is not None, ( - 'Relational field must provide a `queryset` argument, ' - 'or set read_only=`True`.' - ) if isinstance(queryset, (QuerySet, Manager)): # Ensure queryset is re-evaluated whenever used. # Note that actually a `Manager` class may also be used as the From dca2de3a5ca3d4e4593628e2fdbe72ec7d6b6c8b Mon Sep 17 00:00:00 2001 From: Ryan Hiebert Date: Mon, 16 Nov 2015 12:21:58 -0600 Subject: [PATCH 011/131] Make the override check a utility function --- rest_framework/relations.py | 6 ++---- rest_framework/utils/overridden.py | 7 +++++++ 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 rest_framework/utils/overridden.py diff --git a/rest_framework/relations.py b/rest_framework/relations.py index e2b46c121dd..00ca8ecbf07 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -18,7 +18,7 @@ Field, empty, get_attribute, is_simple_callable, iter_options ) from rest_framework.reverse import reverse -from rest_framework.utils import html +from rest_framework.utils import html, overridden class Hyperlink(six.text_type): @@ -63,9 +63,7 @@ def __init__(self, **kwargs): self.html_cutoff = kwargs.pop('html_cutoff', self.html_cutoff) self.html_cutoff_text = kwargs.pop('html_cutoff_text', self.html_cutoff_text) - default_get_queryset = getattr(RelatedField.get_queryset, '__func__', - RelatedField.get_queryset) # Python 2/3 - if self.get_queryset.__func__ == default_get_queryset: + if not overridden.method_overridden('get_queryset', RelatedField, self): assert self.queryset is not None or kwargs.get('read_only', None), ( 'Relational field must provide a `queryset` argument, ' 'or set read_only=`True`.' diff --git a/rest_framework/utils/overridden.py b/rest_framework/utils/overridden.py new file mode 100644 index 00000000000..5402916c724 --- /dev/null +++ b/rest_framework/utils/overridden.py @@ -0,0 +1,7 @@ +def method_overridden(method_name, klass, instance): + """ + Determine if a method has been overridden. + """ + method = getattr(klass, method_name) + default_method = getattr(method, '__func__', method) # Python 3 compat + return default_method is not getattr(instance, method_name).__func__ From 389b48e3945b5e9b4f37593d57266f3226c5f87e Mon Sep 17 00:00:00 2001 From: Ryan Hiebert Date: Wed, 18 Nov 2015 08:19:27 -0600 Subject: [PATCH 012/131] Avoid making a new module for this function --- rest_framework/relations.py | 13 +++++++++++-- rest_framework/utils/overridden.py | 7 ------- 2 files changed, 11 insertions(+), 9 deletions(-) delete mode 100644 rest_framework/utils/overridden.py diff --git a/rest_framework/relations.py b/rest_framework/relations.py index 00ca8ecbf07..996fa93065e 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -18,7 +18,16 @@ Field, empty, get_attribute, is_simple_callable, iter_options ) from rest_framework.reverse import reverse -from rest_framework.utils import html, overridden +from rest_framework.utils import html + + +def method_overridden(method_name, klass, instance): + """ + Determine if a method has been overridden. + """ + method = getattr(klass, method_name) + default_method = getattr(method, '__func__', method) # Python 3 compat + return default_method is not getattr(instance, method_name).__func__ class Hyperlink(six.text_type): @@ -63,7 +72,7 @@ def __init__(self, **kwargs): self.html_cutoff = kwargs.pop('html_cutoff', self.html_cutoff) self.html_cutoff_text = kwargs.pop('html_cutoff_text', self.html_cutoff_text) - if not overridden.method_overridden('get_queryset', RelatedField, self): + if not method_overridden('get_queryset', RelatedField, self): assert self.queryset is not None or kwargs.get('read_only', None), ( 'Relational field must provide a `queryset` argument, ' 'or set read_only=`True`.' diff --git a/rest_framework/utils/overridden.py b/rest_framework/utils/overridden.py deleted file mode 100644 index 5402916c724..00000000000 --- a/rest_framework/utils/overridden.py +++ /dev/null @@ -1,7 +0,0 @@ -def method_overridden(method_name, klass, instance): - """ - Determine if a method has been overridden. - """ - method = getattr(klass, method_name) - default_method = getattr(method, '__func__', method) # Python 3 compat - return default_method is not getattr(instance, method_name).__func__ From a19f1520659299762200f43bcb63d66f18f6841a Mon Sep 17 00:00:00 2001 From: Ryan Hiebert Date: Wed, 18 Nov 2015 10:25:51 -0600 Subject: [PATCH 013/131] Note possibility of overriding get_queryset --- rest_framework/relations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/relations.py b/rest_framework/relations.py index 996fa93065e..feafd4930b1 100644 --- a/rest_framework/relations.py +++ b/rest_framework/relations.py @@ -75,7 +75,7 @@ def __init__(self, **kwargs): if not method_overridden('get_queryset', RelatedField, self): assert self.queryset is not None or kwargs.get('read_only', None), ( 'Relational field must provide a `queryset` argument, ' - 'or set read_only=`True`.' + 'override `get_queryset`, or set read_only=`True`.' ) assert not (self.queryset is not None and kwargs.get('read_only', None)), ( 'Relational fields should not provide a `queryset` argument, ' From 2faa7bc2884e4ff4a3888d0ddd4f27f55dea864a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20=C5=9Aniegowski?= Date: Fri, 4 Dec 2015 23:23:04 +0100 Subject: [PATCH 014/131] Add missing csrf_token in AdminRenderer post form. --- rest_framework/templates/rest_framework/admin.html | 1 + 1 file changed, 1 insertion(+) diff --git a/rest_framework/templates/rest_framework/admin.html b/rest_framework/templates/rest_framework/admin.html index 6ab02f4d549..f8f1724e6c0 100644 --- a/rest_framework/templates/rest_framework/admin.html +++ b/rest_framework/templates/rest_framework/admin.html @@ -166,6 +166,7 @@

From d86a901affd0ec7a0b229cf561838827808e6315 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 21:45:44 -0600 Subject: [PATCH 015/131] Removed Settings raise attribute error --- rest_framework/settings.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index adf737126d6..188c130c04c 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -177,7 +177,7 @@ class APISettings(object): """ def __init__(self, user_settings=None, defaults=None, import_strings=None): if user_settings: - self._user_settings = user_settings + self._user_settings = self.__check_user_settings(user_settings) self.defaults = defaults or DEFAULTS self.import_strings = import_strings or IMPORT_STRINGS @@ -206,6 +206,14 @@ def __getattr__(self, attr): setattr(self, attr, val) return val + def __check_user_settings(self, user_settings): + DEPRECEATED_SETTINGS = ( + "PAGINATE_BY", "PAGINATE_BY_PARAM", "MAX_PAGINATE_BY_SET",) + SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" + for setting in DEPRECEATED_SETTINGS: + if setting in user_settings: + raise AttributeError("The '%s' setting has been removed. Please refer to '%s' for available settings." % setting, SETTINGS_DOC) + api_settings = APISettings(None, DEFAULTS, IMPORT_STRINGS) From 13c66b9dfecf657ace26d6b46c005981ca6f23e0 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 21:53:33 -0600 Subject: [PATCH 016/131] Return error --- rest_framework/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 188c130c04c..bc579b15f8e 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -213,6 +213,7 @@ def __check_user_settings(self, user_settings): for setting in DEPRECEATED_SETTINGS: if setting in user_settings: raise AttributeError("The '%s' setting has been removed. Please refer to '%s' for available settings." % setting, SETTINGS_DOC) + return user_settings api_settings = APISettings(None, DEFAULTS, IMPORT_STRINGS) From 03c7f149ac0162a78892593d33b5866a1a9b72df Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 22:17:33 -0600 Subject: [PATCH 017/131] Test case for settings check --- tests/test_settings.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/test_settings.py b/tests/test_settings.py index cc8d0d51f18..5240a3f9b3b 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -18,6 +18,16 @@ def test_import_error_message_maintained(self): with self.assertRaises(ImportError): settings.DEFAULT_RENDERER_CLASSES + def test_loud_error_raised_on_removed_setting(self): + """ + Make sure user is alerted with an error when a removed setting + is set. + """ + with self.asserRaise(AttributeError): + APISettings({ + 'MAX_PAGINATE_BY': 100 + }) + class TestSettingTypes(TestCase): def test_settings_consistently_coerced_to_list(self): From 4e5c57ab469c94a588312046a8f115b00331eb6b Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 22:19:58 -0600 Subject: [PATCH 018/131] type on test case --- tests/test_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_settings.py b/tests/test_settings.py index 5240a3f9b3b..518ba042942 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -23,7 +23,7 @@ def test_loud_error_raised_on_removed_setting(self): Make sure user is alerted with an error when a removed setting is set. """ - with self.asserRaise(AttributeError): + with self.assertRaise(AttributeError): APISettings({ 'MAX_PAGINATE_BY': 100 }) From 1b3e4332e8765dae1b5dc41faa68cc392079fa00 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 22:24:22 -0600 Subject: [PATCH 019/131] --ammend --- tests/test_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_settings.py b/tests/test_settings.py index 518ba042942..97778016472 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -23,7 +23,7 @@ def test_loud_error_raised_on_removed_setting(self): Make sure user is alerted with an error when a removed setting is set. """ - with self.assertRaise(AttributeError): + with self.assertRaises(AttributeError): APISettings({ 'MAX_PAGINATE_BY': 100 }) From 9db4c2ae8aa48e0624facf5740c6741c1ce2f136 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 22:24:22 -0600 Subject: [PATCH 020/131] --ammend --- tests/test_settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_settings.py b/tests/test_settings.py index 518ba042942..97778016472 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -23,7 +23,7 @@ def test_loud_error_raised_on_removed_setting(self): Make sure user is alerted with an error when a removed setting is set. """ - with self.assertRaise(AttributeError): + with self.assertRaises(AttributeError): APISettings({ 'MAX_PAGINATE_BY': 100 }) From 5117dad2cafa2691dbdaf4da398775891e368155 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 22:32:23 -0600 Subject: [PATCH 021/131] removed setting typo --- rest_framework/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index bc579b15f8e..80c818d1153 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -208,7 +208,7 @@ def __getattr__(self, attr): def __check_user_settings(self, user_settings): DEPRECEATED_SETTINGS = ( - "PAGINATE_BY", "PAGINATE_BY_PARAM", "MAX_PAGINATE_BY_SET",) + "PAGINATE_BY", "PAGINATE_BY_PARAM", "MAX_PAGINATE_BY",) SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" for setting in DEPRECEATED_SETTINGS: if setting in user_settings: From 0f85165b69d8a6db67d3644771c08788a12f68d4 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 22:36:02 -0600 Subject: [PATCH 022/131] Fixed num args for % --- rest_framework/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 80c818d1153..49c654f6709 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -212,7 +212,7 @@ def __check_user_settings(self, user_settings): SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" for setting in DEPRECEATED_SETTINGS: if setting in user_settings: - raise AttributeError("The '%s' setting has been removed. Please refer to '%s' for available settings." % setting, SETTINGS_DOC) + raise AttributeError("The '%s' setting has been removed. Please refer to '%s' for available settings." % (setting, SETTINGS_DOC)) return user_settings From 60c4fe10b1af61fdc859ab8ec969ae5915efdb66 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 23:19:24 -0600 Subject: [PATCH 023/131] Refactor Constants --- rest_framework/settings.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 49c654f6709..4690850a67e 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -135,6 +135,19 @@ ) +SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" + + +# List of settings that have been depreceated +DEPRECEATED_SETTINGS = () + + +# List of settings that have been removed +REMOVED_SETTINGS = ( + "PAGINATE_BY", "PAGINATE_BY_PARAM", "MAX_PAGINATE_BY", +) + + def perform_import(val, setting_name): """ If the given setting is a string import notation, @@ -207,10 +220,7 @@ def __getattr__(self, attr): return val def __check_user_settings(self, user_settings): - DEPRECEATED_SETTINGS = ( - "PAGINATE_BY", "PAGINATE_BY_PARAM", "MAX_PAGINATE_BY",) - SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" - for setting in DEPRECEATED_SETTINGS: + for setting in REMOVED_SETTINGS: if setting in user_settings: raise AttributeError("The '%s' setting has been removed. Please refer to '%s' for available settings." % (setting, SETTINGS_DOC)) return user_settings From 5802dc0f982e17164abce4f6283c61fcf7fc04b2 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 23:19:24 -0600 Subject: [PATCH 024/131] Initial, fixes #3644 --- rest_framework/settings.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 49c654f6709..4690850a67e 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -135,6 +135,19 @@ ) +SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" + + +# List of settings that have been depreceated +DEPRECEATED_SETTINGS = () + + +# List of settings that have been removed +REMOVED_SETTINGS = ( + "PAGINATE_BY", "PAGINATE_BY_PARAM", "MAX_PAGINATE_BY", +) + + def perform_import(val, setting_name): """ If the given setting is a string import notation, @@ -207,10 +220,7 @@ def __getattr__(self, attr): return val def __check_user_settings(self, user_settings): - DEPRECEATED_SETTINGS = ( - "PAGINATE_BY", "PAGINATE_BY_PARAM", "MAX_PAGINATE_BY",) - SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" - for setting in DEPRECEATED_SETTINGS: + for setting in REMOVED_SETTINGS: if setting in user_settings: raise AttributeError("The '%s' setting has been removed. Please refer to '%s' for available settings." % (setting, SETTINGS_DOC)) return user_settings From a615e37277f783bb27392549813e597741a70461 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Mon, 7 Dec 2015 23:30:45 -0600 Subject: [PATCH 025/131] Removed depreceated constant --- rest_framework/settings.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 4690850a67e..ecaa4b527e2 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -138,10 +138,6 @@ SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" -# List of settings that have been depreceated -DEPRECEATED_SETTINGS = () - - # List of settings that have been removed REMOVED_SETTINGS = ( "PAGINATE_BY", "PAGINATE_BY_PARAM", "MAX_PAGINATE_BY", From fcc0a70f7c4ca1faf1a9801d369ff53029e450c6 Mon Sep 17 00:00:00 2001 From: Raphael Merx Date: Thu, 10 Dec 2015 15:13:47 -0800 Subject: [PATCH 026/131] Fixed suggestion for format in test renderer Rendered would suggest using format='JSON' when the right argument is format='json'. --- rest_framework/renderers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index dafaf7de62b..fa64f88ede5 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -780,7 +780,7 @@ def render(self, data, accepted_media_type=None, renderer_context=None): assert not isinstance(value, dict), ( "Test data contained a dictionary value for key '%s', " "but multipart uploads do not support nested data. " - "You may want to consider using format='JSON' in this " + "You may want to consider using format='json' in this " "test case." % key ) return encode_multipart(self.BOUNDARY, data) From 7a5d81c0b490bed5fb2144162a82ef51c0bf6135 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Fri, 11 Dec 2015 07:16:04 +0100 Subject: [PATCH 027/131] Add extra args/kwargs to authtoken's views (#3718) --- rest_framework/authtoken/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/authtoken/views.py b/rest_framework/authtoken/views.py index 743684057d1..0c6596a7e8d 100644 --- a/rest_framework/authtoken/views.py +++ b/rest_framework/authtoken/views.py @@ -12,7 +12,7 @@ class ObtainAuthToken(APIView): renderer_classes = (renderers.JSONRenderer,) serializer_class = AuthTokenSerializer - def post(self, request): + def post(self, request, *args, **kwargs): serializer = self.serializer_class(data=request.data) serializer.is_valid(raise_exception=True) user = serializer.validated_data['user'] From fbd89d6b7e03d1502e1a86202d2c34c7433716c4 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Sat, 12 Dec 2015 02:02:53 -0600 Subject: [PATCH 028/131] Moved SETTINGS_DOC --- rest_framework/settings.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index ecaa4b527e2..c7b5de9f022 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -135,9 +135,6 @@ ) -SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" - - # List of settings that have been removed REMOVED_SETTINGS = ( "PAGINATE_BY", "PAGINATE_BY_PARAM", "MAX_PAGINATE_BY", @@ -216,6 +213,7 @@ def __getattr__(self, attr): return val def __check_user_settings(self, user_settings): + SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" for setting in REMOVED_SETTINGS: if setting in user_settings: raise AttributeError("The '%s' setting has been removed. Please refer to '%s' for available settings." % (setting, SETTINGS_DOC)) From 82973cfa32ad7dfb5aca6d19cb03db6ff7c3911b Mon Sep 17 00:00:00 2001 From: Karthik Suresh Date: Sat, 12 Dec 2015 21:59:08 +0530 Subject: [PATCH 029/131] Import parser added to docs in API guide Added missing import statements in code snippet of API guide. Closes-Issue: #3727 --- docs/api-guide/parsers.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/api-guide/parsers.md b/docs/api-guide/parsers.md index d5975abd2cf..84fd6e5ac7d 100644 --- a/docs/api-guide/parsers.md +++ b/docs/api-guide/parsers.md @@ -51,6 +51,9 @@ using the `APIView` class based views. return Response({'received data': request.data}) Or, if you're using the `@api_view` decorator with function based views. + + from rest_framework.decorators import api_view + from rest_framework.decorators import parser_classes @api_view(['POST']) @parser_classes((JSONParser,)) From bf60c0801003021a951d10967dfa22113350cd8a Mon Sep 17 00:00:00 2001 From: mjparker777 Date: Sun, 13 Dec 2015 12:05:04 -0700 Subject: [PATCH 030/131] Issue 3726 DateTimeField not handling empty values --- rest_framework/fields.py | 3 +++ tests/test_fields.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 8541bc43a0d..fc917e213ec 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1061,6 +1061,9 @@ def to_internal_value(self, value): self.fail('invalid', format=humanized_format) def to_representation(self, value): + if not value: + return None + output_format = getattr(self, 'format', api_settings.DATETIME_FORMAT) if output_format is None: diff --git a/tests/test_fields.py b/tests/test_fields.py index 9cb59f7da0b..7f79050cab1 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -960,6 +960,8 @@ class TestDateTimeField(FieldValues): outputs = { datetime.datetime(2001, 1, 1, 13, 00): '2001-01-01T13:00:00', datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): '2001-01-01T13:00:00Z' + None: None, + '': None, } field = serializers.DateTimeField(default_timezone=timezone.UTC()) From 81775dfbae11270d7ebd3060146d0b6a25009475 Mon Sep 17 00:00:00 2001 From: mjparker777 Date: Sun, 13 Dec 2015 12:27:08 -0700 Subject: [PATCH 031/131] added missing comma --- tests/test_fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_fields.py b/tests/test_fields.py index 7f79050cab1..71bb70cd8e1 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -959,7 +959,7 @@ class TestDateTimeField(FieldValues): } outputs = { datetime.datetime(2001, 1, 1, 13, 00): '2001-01-01T13:00:00', - datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): '2001-01-01T13:00:00Z' + datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): '2001-01-01T13:00:00Z', None: None, '': None, } From fc08236ab84ce7c348216e9662ebec4ac0dea9a8 Mon Sep 17 00:00:00 2001 From: mjparker777 Date: Sun, 13 Dec 2015 16:09:56 -0700 Subject: [PATCH 032/131] updated timefield also --- rest_framework/fields.py | 3 +++ tests/test_fields.py | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index fc917e213ec..53a948c064f 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1186,6 +1186,9 @@ def to_internal_value(self, value): self.fail('invalid', format=humanized_format) def to_representation(self, value): + if not value: + return None + output_format = getattr(self, 'format', api_settings.TIME_FORMAT) if output_format is None: diff --git a/tests/test_fields.py b/tests/test_fields.py index 71bb70cd8e1..029a5bddccc 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -1030,7 +1030,9 @@ class TestTimeField(FieldValues): '99:99': ['Time has wrong format. Use one of these formats instead: hh:mm[:ss[.uuuuuu]].'], } outputs = { - datetime.time(13, 00): '13:00:00' + datetime.time(13, 00): '13:00:00', + None: None, + '': None, } field = serializers.TimeField() From bf18c9f6e37d8d88800647013994e924748a34da Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Mon, 14 Dec 2015 07:22:30 +0100 Subject: [PATCH 033/131] 3.3.2 release notes. --- docs/topics/release-notes.md | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/docs/topics/release-notes.md b/docs/topics/release-notes.md index f397e9a1fe3..767f26c6c99 100644 --- a/docs/topics/release-notes.md +++ b/docs/topics/release-notes.md @@ -40,6 +40,28 @@ You can determine your currently installed version using `pip freeze`: ## 3.3.x series +### 3.3.2 + +**Date**: [16th December 2015][3.3.2-milestone]. + +* `ListField` enforces input is a list. ([#3513][gh3513]) +* Fix regression hiding raw data form. ([#3600][gh3600], [#3578][gh3578]) +* Fix Python 3.5 compatibility. ([#3534][gh3534], [#3626][gh3626]) +* Allow setting a custom Django Paginator in `pagination.PageNumberPagination`. ([#3631][gh3631], [#3684][gh3684]) +* Fix relational fields without `to_fields` attribute. ([#3635][gh3635], [#3634][gh3634]) +* Fix `template.render` deprecation warnings for Django 1.9. ([#3654][gh3654]) +* Sort response headers in browsable API renderer. ([#3655][gh3655]) +* Use related_objects api for Django 1.9+. ([#3656][gh3656], [#3252][gh3252]) +* Add confirm modal when deleting. ([#3228][gh3228], [#3662][gh3662]) +* Reveal previously hidden AttributeErrors and TypeErrors while calling has_[object_]permissions. ([#3668][gh3668]) +* Make DRF compatible with multi template engine in Django 1.8. ([#3672][gh3672]) +* Update `NestedBoundField` to also handle empty string when rendering its form. ([#3677][gh3677]) +* Fix UUID validation to properly catch invalid input types. ([#3687][gh3687], [#3679][gh3679]) +* Fix caching issues. ([#3628][gh3628], [#3701][gh3701]) +* Fix Admin and API browser for views without a filter_class. ([#3705][gh3705], [#3596][gh3596], [#3597][gh3597]) +* Add app_name to rest_framework.urls. ([#3714][gh3714]) +* Improve authtoken's views to support url versioning. ([#3718][gh3718], [#3723][gh3723]) + ### 3.3.1 **Date**: [4th November 2015][3.3.1-milestone]. @@ -347,6 +369,7 @@ For older release notes, [please see the version 2.x documentation][old-release- [3.2.5-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.2.5+Release%22 [3.3.0-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.3.0+Release%22 [3.3.1-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.3.1+Release%22 +[3.3.2-milestone]: https://github.com/tomchristie/django-rest-framework/issues?q=milestone%3A%223.3.2+Release%22 [gh2013]: https://github.com/tomchristie/django-rest-framework/issues/2013 @@ -596,3 +619,33 @@ For older release notes, [please see the version 2.x documentation][old-release- [gh3568]: https://github.com/tomchristie/django-rest-framework/issues/3568 [gh3592]: https://github.com/tomchristie/django-rest-framework/issues/3592 [gh3593]: https://github.com/tomchristie/django-rest-framework/issues/3593 + + +[gh3228]: https://github.com/tomchristie/django-rest-framework/issues/3228 +[gh3252]: https://github.com/tomchristie/django-rest-framework/issues/3252 +[gh3513]: https://github.com/tomchristie/django-rest-framework/issues/3513 +[gh3534]: https://github.com/tomchristie/django-rest-framework/issues/3534 +[gh3578]: https://github.com/tomchristie/django-rest-framework/issues/3578 +[gh3596]: https://github.com/tomchristie/django-rest-framework/issues/3596 +[gh3597]: https://github.com/tomchristie/django-rest-framework/issues/3597 +[gh3600]: https://github.com/tomchristie/django-rest-framework/issues/3600 +[gh3626]: https://github.com/tomchristie/django-rest-framework/issues/3626 +[gh3628]: https://github.com/tomchristie/django-rest-framework/issues/3628 +[gh3631]: https://github.com/tomchristie/django-rest-framework/issues/3631 +[gh3634]: https://github.com/tomchristie/django-rest-framework/issues/3634 +[gh3635]: https://github.com/tomchristie/django-rest-framework/issues/3635 +[gh3654]: https://github.com/tomchristie/django-rest-framework/issues/3654 +[gh3655]: https://github.com/tomchristie/django-rest-framework/issues/3655 +[gh3656]: https://github.com/tomchristie/django-rest-framework/issues/3656 +[gh3662]: https://github.com/tomchristie/django-rest-framework/issues/3662 +[gh3668]: https://github.com/tomchristie/django-rest-framework/issues/3668 +[gh3672]: https://github.com/tomchristie/django-rest-framework/issues/3672 +[gh3677]: https://github.com/tomchristie/django-rest-framework/issues/3677 +[gh3679]: https://github.com/tomchristie/django-rest-framework/issues/3679 +[gh3684]: https://github.com/tomchristie/django-rest-framework/issues/3684 +[gh3687]: https://github.com/tomchristie/django-rest-framework/issues/3687 +[gh3701]: https://github.com/tomchristie/django-rest-framework/issues/3701 +[gh3705]: https://github.com/tomchristie/django-rest-framework/issues/3705 +[gh3714]: https://github.com/tomchristie/django-rest-framework/issues/3714 +[gh3718]: https://github.com/tomchristie/django-rest-framework/issues/3718 +[gh3723]: https://github.com/tomchristie/django-rest-framework/issues/3723 From 485c297a04d5b39c2231697914d620843a2edfc5 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Mon, 14 Dec 2015 07:31:38 +0100 Subject: [PATCH 034/131] Translations update. --- .../locale/ach/LC_MESSAGES/django.mo | Bin 0 -> 513 bytes .../locale/ach/LC_MESSAGES/django.po | 426 +++++++++++++++++ .../locale/ar/LC_MESSAGES/django.mo | Bin 4888 -> 4888 bytes .../locale/ar/LC_MESSAGES/django.po | 140 +++--- .../locale/be/LC_MESSAGES/django.mo | Bin 655 -> 655 bytes .../locale/be/LC_MESSAGES/django.po | 140 +++--- .../locale/ca/LC_MESSAGES/django.mo | Bin 9749 -> 9749 bytes .../locale/ca/LC_MESSAGES/django.po | 140 +++--- .../locale/ca_ES/LC_MESSAGES/django.mo | Bin 528 -> 528 bytes .../locale/ca_ES/LC_MESSAGES/django.po | 140 +++--- .../locale/cs/LC_MESSAGES/django.mo | Bin 9140 -> 9140 bytes .../locale/cs/LC_MESSAGES/django.po | 140 +++--- .../locale/da/LC_MESSAGES/django.mo | Bin 8905 -> 9682 bytes .../locale/da/LC_MESSAGES/django.po | 155 ++++--- .../locale/da_DK/LC_MESSAGES/django.mo | Bin 0 -> 529 bytes .../locale/da_DK/LC_MESSAGES/django.po | 426 +++++++++++++++++ .../locale/de/LC_MESSAGES/django.mo | Bin 9544 -> 10465 bytes .../locale/de/LC_MESSAGES/django.po | 156 ++++--- .../locale/en/LC_MESSAGES/django.mo | Bin 9476 -> 9770 bytes .../locale/en/LC_MESSAGES/django.po | 140 +++--- .../locale/en_AU/LC_MESSAGES/django.mo | Bin 0 -> 532 bytes .../locale/en_AU/LC_MESSAGES/django.po | 426 +++++++++++++++++ .../locale/en_CA/LC_MESSAGES/django.mo | Bin 529 -> 529 bytes .../locale/en_CA/LC_MESSAGES/django.po | 140 +++--- .../locale/en_US/LC_MESSAGES/django.mo | Bin 378 -> 378 bytes .../locale/es/LC_MESSAGES/django.mo | Bin 10127 -> 10509 bytes .../locale/es/LC_MESSAGES/django.po | 144 +++--- .../locale/et/LC_MESSAGES/django.mo | Bin 8836 -> 8836 bytes .../locale/et/LC_MESSAGES/django.po | 140 +++--- .../locale/fi/LC_MESSAGES/django.mo | Bin 0 -> 10068 bytes .../locale/fi/LC_MESSAGES/django.po | 428 +++++++++++++++++ .../locale/fr/LC_MESSAGES/django.mo | Bin 10193 -> 10501 bytes .../locale/fr/LC_MESSAGES/django.po | 142 +++--- .../locale/fr_CA/LC_MESSAGES/django.mo | Bin 527 -> 527 bytes .../locale/fr_CA/LC_MESSAGES/django.po | 140 +++--- .../locale/gl/LC_MESSAGES/django.mo | Bin 515 -> 515 bytes .../locale/gl/LC_MESSAGES/django.po | 140 +++--- .../locale/gl_ES/LC_MESSAGES/django.mo | Bin 669 -> 669 bytes .../locale/gl_ES/LC_MESSAGES/django.po | 140 +++--- .../locale/he_IL/LC_MESSAGES/django.mo | Bin 0 -> 528 bytes .../locale/he_IL/LC_MESSAGES/django.po | 426 +++++++++++++++++ .../locale/hu/LC_MESSAGES/django.mo | Bin 9228 -> 9228 bytes .../locale/hu/LC_MESSAGES/django.po | 140 +++--- .../locale/id/LC_MESSAGES/django.mo | Bin 510 -> 510 bytes .../locale/id/LC_MESSAGES/django.po | 140 +++--- .../locale/it/LC_MESSAGES/django.mo | Bin 9512 -> 9512 bytes .../locale/it/LC_MESSAGES/django.po | 140 +++--- .../locale/ja/LC_MESSAGES/django.mo | Bin 11341 -> 11341 bytes .../locale/ja/LC_MESSAGES/django.po | 140 +++--- .../locale/ko_KR/LC_MESSAGES/django.mo | Bin 10148 -> 10148 bytes .../locale/ko_KR/LC_MESSAGES/django.po | 140 +++--- .../locale/mk/LC_MESSAGES/django.mo | Bin 10744 -> 10744 bytes .../locale/mk/LC_MESSAGES/django.po | 140 +++--- .../locale/nb/LC_MESSAGES/django.mo | Bin 524 -> 9902 bytes .../locale/nb/LC_MESSAGES/django.po | 311 +++++++------ .../locale/nl/LC_MESSAGES/django.mo | Bin 9267 -> 9267 bytes .../locale/nl/LC_MESSAGES/django.po | 140 +++--- .../locale/nn/LC_MESSAGES/django.mo | Bin 0 -> 524 bytes .../locale/nn/LC_MESSAGES/django.po | 426 +++++++++++++++++ .../locale/no/LC_MESSAGES/django.mo | Bin 0 -> 516 bytes .../locale/no/LC_MESSAGES/django.po | 426 +++++++++++++++++ .../locale/pl/LC_MESSAGES/django.mo | Bin 9602 -> 10528 bytes .../locale/pl/LC_MESSAGES/django.po | 154 ++++--- .../locale/pt/LC_MESSAGES/django.mo | Bin 517 -> 517 bytes .../locale/pt/LC_MESSAGES/django.po | 140 +++--- .../locale/pt_BR/LC_MESSAGES/django.mo | Bin 9974 -> 10343 bytes .../locale/pt_BR/LC_MESSAGES/django.po | 144 +++--- .../locale/pt_PT/LC_MESSAGES/django.mo | Bin 534 -> 534 bytes .../locale/pt_PT/LC_MESSAGES/django.po | 140 +++--- .../locale/ro/LC_MESSAGES/django.mo | Bin 0 -> 556 bytes .../locale/ro/LC_MESSAGES/django.po | 426 +++++++++++++++++ .../locale/ru/LC_MESSAGES/django.mo | Bin 11487 -> 11487 bytes .../locale/ru/LC_MESSAGES/django.po | 140 +++--- .../locale/sk/LC_MESSAGES/django.mo | Bin 9524 -> 9524 bytes .../locale/sk/LC_MESSAGES/django.po | 140 +++--- .../locale/sv/LC_MESSAGES/django.mo | Bin 9519 -> 10151 bytes .../locale/sv/LC_MESSAGES/django.po | 150 +++--- .../locale/tr/LC_MESSAGES/django.mo | Bin 9211 -> 10269 bytes .../locale/tr/LC_MESSAGES/django.po | 157 ++++--- .../locale/tr_TR/LC_MESSAGES/django.mo | Bin 522 -> 1933 bytes .../locale/tr_TR/LC_MESSAGES/django.po | 173 ++++--- .../locale/uk/LC_MESSAGES/django.mo | Bin 590 -> 590 bytes .../locale/uk/LC_MESSAGES/django.po | 140 +++--- .../locale/vi/LC_MESSAGES/django.mo | Bin 510 -> 510 bytes .../locale/vi/LC_MESSAGES/django.po | 140 +++--- .../locale/zh-Hans/LC_MESSAGES/django.mo | Bin 0 -> 9894 bytes .../locale/zh-Hans/LC_MESSAGES/django.po | 429 ++++++++++++++++++ .../locale/zh-Hant/LC_MESSAGES/django.mo | Bin 0 -> 529 bytes .../locale/zh-Hant/LC_MESSAGES/django.po | 426 +++++++++++++++++ .../locale/zh_CN/LC_MESSAGES/django.mo | Bin 9261 -> 9895 bytes .../locale/zh_CN/LC_MESSAGES/django.po | 151 +++--- .../locale/zh_TW/LC_MESSAGES/django.mo | Bin 522 -> 522 bytes .../locale/zh_TW/LC_MESSAGES/django.po | 140 +++--- 93 files changed, 7405 insertions(+), 2197 deletions(-) create mode 100644 rest_framework/locale/ach/LC_MESSAGES/django.mo create mode 100644 rest_framework/locale/ach/LC_MESSAGES/django.po create mode 100644 rest_framework/locale/da_DK/LC_MESSAGES/django.mo create mode 100644 rest_framework/locale/da_DK/LC_MESSAGES/django.po create mode 100644 rest_framework/locale/en_AU/LC_MESSAGES/django.mo create mode 100644 rest_framework/locale/en_AU/LC_MESSAGES/django.po create mode 100644 rest_framework/locale/fi/LC_MESSAGES/django.mo create mode 100644 rest_framework/locale/fi/LC_MESSAGES/django.po create mode 100644 rest_framework/locale/he_IL/LC_MESSAGES/django.mo create mode 100644 rest_framework/locale/he_IL/LC_MESSAGES/django.po create mode 100644 rest_framework/locale/nn/LC_MESSAGES/django.mo create mode 100644 rest_framework/locale/nn/LC_MESSAGES/django.po create mode 100644 rest_framework/locale/no/LC_MESSAGES/django.mo create mode 100644 rest_framework/locale/no/LC_MESSAGES/django.po create mode 100644 rest_framework/locale/ro/LC_MESSAGES/django.mo create mode 100644 rest_framework/locale/ro/LC_MESSAGES/django.po create mode 100644 rest_framework/locale/zh-Hans/LC_MESSAGES/django.mo create mode 100644 rest_framework/locale/zh-Hans/LC_MESSAGES/django.po create mode 100644 rest_framework/locale/zh-Hant/LC_MESSAGES/django.mo create mode 100644 rest_framework/locale/zh-Hant/LC_MESSAGES/django.po diff --git a/rest_framework/locale/ach/LC_MESSAGES/django.mo b/rest_framework/locale/ach/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..a1e8e6bc3273c26f9056a9b7973654150c7fb481 GIT binary patch literal 513 zcmZutO-}+b5XI-h&dX>ANstbGuIq2HhL~Xi-QQ?gvq2<47zi! zVhxktO8`^D7hf> zbjUcnbjOd?!ca#6( zE)QpJ$r%oYz2mz4isy8+vO-bc+msey#m2g6!li0LIO8T0w)GnHv2oPp%}j;Co(gp& rRm`CAA?;xb2IS<7lcnJa_O)4L3{<+iX02)y_F=22pbdVh=@k9|4C|W$ literal 0 HcmV?d00001 diff --git a/rest_framework/locale/ach/LC_MESSAGES/django.po b/rest_framework/locale/ach/LC_MESSAGES/django.po new file mode 100644 index 00000000000..0a6f2cce5f9 --- /dev/null +++ b/rest_framework/locale/ach/LC_MESSAGES/django.po @@ -0,0 +1,426 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Django REST framework\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" +"Last-Translator: Xavier Ordoquy \n" +"Language-Team: Acoli (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/ach/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ach\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: authentication.py:72 +msgid "Invalid basic header. No credentials provided." +msgstr "" + +#: authentication.py:75 +msgid "Invalid basic header. Credentials string should not contain spaces." +msgstr "" + +#: authentication.py:81 +msgid "Invalid basic header. Credentials not correctly base64 encoded." +msgstr "" + +#: authentication.py:98 +msgid "Invalid username/password." +msgstr "" + +#: authentication.py:101 authentication.py:188 +msgid "User inactive or deleted." +msgstr "" + +#: authentication.py:167 +msgid "Invalid token header. No credentials provided." +msgstr "" + +#: authentication.py:170 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" + +#: authentication.py:176 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" + +#: authentication.py:185 +msgid "Invalid token." +msgstr "" + +#: authtoken/serializers.py:20 +msgid "User account is disabled." +msgstr "" + +#: authtoken/serializers.py:23 +msgid "Unable to log in with provided credentials." +msgstr "" + +#: authtoken/serializers.py:26 +msgid "Must include \"username\" and \"password\"." +msgstr "" + +#: exceptions.py:49 +msgid "A server error occurred." +msgstr "" + +#: exceptions.py:84 +msgid "Malformed request." +msgstr "" + +#: exceptions.py:89 +msgid "Incorrect authentication credentials." +msgstr "" + +#: exceptions.py:94 +msgid "Authentication credentials were not provided." +msgstr "" + +#: exceptions.py:99 +msgid "You do not have permission to perform this action." +msgstr "" + +#: exceptions.py:104 views.py:81 +msgid "Not found." +msgstr "" + +#: exceptions.py:109 +#, python-brace-format +msgid "Method \"{method}\" not allowed." +msgstr "" + +#: exceptions.py:120 +msgid "Could not satisfy the request Accept header." +msgstr "" + +#: exceptions.py:132 +#, python-brace-format +msgid "Unsupported media type \"{media_type}\" in request." +msgstr "" + +#: exceptions.py:145 +msgid "Request was throttled." +msgstr "" + +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 +#: validators.py:162 +msgid "This field is required." +msgstr "" + +#: fields.py:267 +msgid "This field may not be null." +msgstr "" + +#: fields.py:603 fields.py:634 +#, python-brace-format +msgid "\"{input}\" is not a valid boolean." +msgstr "" + +#: fields.py:669 +msgid "This field may not be blank." +msgstr "" + +#: fields.py:670 fields.py:1656 +#, python-brace-format +msgid "Ensure this field has no more than {max_length} characters." +msgstr "" + +#: fields.py:671 +#, python-brace-format +msgid "Ensure this field has at least {min_length} characters." +msgstr "" + +#: fields.py:708 +msgid "Enter a valid email address." +msgstr "" + +#: fields.py:719 +msgid "This value does not match the required pattern." +msgstr "" + +#: fields.py:730 +msgid "" +"Enter a valid \"slug\" consisting of letters, numbers, underscores or " +"hyphens." +msgstr "" + +#: fields.py:742 +msgid "Enter a valid URL." +msgstr "" + +#: fields.py:755 +#, python-brace-format +msgid "\"{value}\" is not a valid UUID." +msgstr "" + +#: fields.py:791 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "" + +#: fields.py:816 +msgid "A valid integer is required." +msgstr "" + +#: fields.py:817 fields.py:852 fields.py:885 +#, python-brace-format +msgid "Ensure this value is less than or equal to {max_value}." +msgstr "" + +#: fields.py:818 fields.py:853 fields.py:886 +#, python-brace-format +msgid "Ensure this value is greater than or equal to {min_value}." +msgstr "" + +#: fields.py:819 fields.py:854 fields.py:890 +msgid "String value too large." +msgstr "" + +#: fields.py:851 fields.py:884 +msgid "A valid number is required." +msgstr "" + +#: fields.py:887 +#, python-brace-format +msgid "Ensure that there are no more than {max_digits} digits in total." +msgstr "" + +#: fields.py:888 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_decimal_places} decimal places." +msgstr "" + +#: fields.py:889 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_whole_digits} digits before the " +"decimal point." +msgstr "" + +#: fields.py:1004 +#, python-brace-format +msgid "Datetime has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1005 +msgid "Expected a datetime but got a date." +msgstr "" + +#: fields.py:1079 +#, python-brace-format +msgid "Date has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1080 +msgid "Expected a date but got a datetime." +msgstr "" + +#: fields.py:1148 +#, python-brace-format +msgid "Time has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1207 +#, python-brace-format +msgid "Duration has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1232 fields.py:1281 +#, python-brace-format +msgid "\"{input}\" is not a valid choice." +msgstr "" + +#: fields.py:1235 relations.py:62 relations.py:431 +#, python-brace-format +msgid "More than {count} items..." +msgstr "" + +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 +#, python-brace-format +msgid "Expected a list of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1283 +msgid "This selection may not be empty." +msgstr "" + +#: fields.py:1320 +#, python-brace-format +msgid "\"{input}\" is not a valid path choice." +msgstr "" + +#: fields.py:1339 +msgid "No file was submitted." +msgstr "" + +#: fields.py:1340 +msgid "" +"The submitted data was not a file. Check the encoding type on the form." +msgstr "" + +#: fields.py:1341 +msgid "No filename could be determined." +msgstr "" + +#: fields.py:1342 +msgid "The submitted file is empty." +msgstr "" + +#: fields.py:1343 +#, python-brace-format +msgid "" +"Ensure this filename has at most {max_length} characters (it has {length})." +msgstr "" + +#: fields.py:1391 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: fields.py:1430 relations.py:428 serializers.py:521 +msgid "This list may not be empty." +msgstr "" + +#: fields.py:1483 +#, python-brace-format +msgid "Expected a dictionary of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 +#, python-brace-format +msgid "Invalid page \"{page_number}\": {message}." +msgstr "" + +#: pagination.py:407 +msgid "Invalid cursor" +msgstr "" + +#: relations.py:196 +#, python-brace-format +msgid "Invalid pk \"{pk_value}\" - object does not exist." +msgstr "" + +#: relations.py:197 +#, python-brace-format +msgid "Incorrect type. Expected pk value, received {data_type}." +msgstr "" + +#: relations.py:229 +msgid "Invalid hyperlink - No URL match." +msgstr "" + +#: relations.py:230 +msgid "Invalid hyperlink - Incorrect URL match." +msgstr "" + +#: relations.py:231 +msgid "Invalid hyperlink - Object does not exist." +msgstr "" + +#: relations.py:232 +#, python-brace-format +msgid "Incorrect type. Expected URL string, received {data_type}." +msgstr "" + +#: relations.py:391 +#, python-brace-format +msgid "Object with {slug_name}={value} does not exist." +msgstr "" + +#: relations.py:392 +msgid "Invalid value." +msgstr "" + +#: serializers.py:326 +#, python-brace-format +msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "" + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + +#: templates/rest_framework/horizontal/radio.html:2 +#: templates/rest_framework/inline/radio.html:2 +#: templates/rest_framework/vertical/radio.html:2 +msgid "None" +msgstr "" + +#: templates/rest_framework/horizontal/select_multiple.html:2 +#: templates/rest_framework/inline/select_multiple.html:2 +#: templates/rest_framework/vertical/select_multiple.html:2 +msgid "No items to select." +msgstr "" + +#: validators.py:24 +msgid "This field must be unique." +msgstr "" + +#: validators.py:78 +#, python-brace-format +msgid "The fields {field_names} must make a unique set." +msgstr "" + +#: validators.py:226 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" date." +msgstr "" + +#: validators.py:241 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" month." +msgstr "" + +#: validators.py:254 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" year." +msgstr "" + +#: versioning.py:42 +msgid "Invalid version in \"Accept\" header." +msgstr "" + +#: versioning.py:73 versioning.py:115 +msgid "Invalid version in URL path." +msgstr "" + +#: versioning.py:144 +msgid "Invalid version in hostname." +msgstr "" + +#: versioning.py:166 +msgid "Invalid version in query parameter." +msgstr "" + +#: views.py:88 +msgid "Permission denied." +msgstr "" diff --git a/rest_framework/locale/ar/LC_MESSAGES/django.mo b/rest_framework/locale/ar/LC_MESSAGES/django.mo index 1d1fa1cb92b0e65ea0edbd2bb53e0f2b0dbbc97e..6a32487ecfca6f79807a3851b1e2e62bcf32fc0e 100644 GIT binary patch delta 64 zcmbQCHbZU0ZVqEZBV7Y?1w#ufQ)6udLjwb@0Ds+})UwRt%=|oEm&B4(D+MD1LsMO- OI&&*i)6MTVw73955D`!S delta 64 zcmbQCHbZU0ZVqDuOI;&F1w#WXQ&VjNBLf4j0Ds+})UwRt%=|oEm&B4(D+MD1LsMOd PIs*$UQ?t$QIJCF`LAnu8 diff --git a/rest_framework/locale/ar/LC_MESSAGES/django.po b/rest_framework/locale/ar/LC_MESSAGES/django.po index 58197d9623d..4dbeed9be53 100644 --- a/rest_framework/locale/ar/LC_MESSAGES/django.po +++ b/rest_framework/locale/ar/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Arabic (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/ar/)\n" "MIME-Version: 1.0\n" @@ -34,24 +34,24 @@ msgstr "" msgid "Invalid username/password." msgstr "اسم المستخدم/كلمة السر غير صحيحين." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "المستخدم غير مفعل او تم حذفه." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -109,241 +109,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "هذا الحقل مطلوب." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "لا يمكن لهذا الحقل ان يكون فارغاً null." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" ليس قيمة منطقية." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "لا يمكن لهذا الحقل ان يكون فارغاً." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "تأكد ان الحقل لا يزيد عن {max_length} محرف." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "تأكد ان الحقل {min_length} محرف على الاقل." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "عليك ان تدخل بريد إلكتروني صالح." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "هذه القيمة لا تطابق النمط المطلوب." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "الرجاء إدخال رابط إلكتروني صالح." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "الرجاء إدخال رقم صحيح صالح." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "تأكد ان القيمة أقل أو تساوي {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "تأكد ان القيمة أكبر أو تساوي {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "الرجاء إدخال رقم صالح." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "تأكد ان القيمة لا تحوي أكثر من {max_digits} رقم." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "صيغة التاريخ و الوقت غير صحيحة. عليك أن تستخدم واحدة من هذه الصيغ التالية: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "صيغة التاريخ غير صحيحة. عليك أن تستخدم واحدة من هذه الصيغ التالية: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "صيغة الوقت غير صحيحة. عليك أن تستخدم واحدة من هذه الصيغ التالية: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" ليست واحدة من الخيارات الصالحة." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "لم يتم إرسال أي ملف." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "الملف الذي تم إرساله فارغ." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "تأكد ان اسم الملف لا يحوي أكثر من {max_length} محرف (الإسم المرسل يحوي {length} محرف)." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "رقم الصفحة \"{page_number}\" غير صالح : {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "معرف العنصر \"{pk_value}\" غير صالح - العنصر غير موجود." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "قيمة غير صالحة." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/be/LC_MESSAGES/django.mo b/rest_framework/locale/be/LC_MESSAGES/django.mo index 97fb40795c07fa3a3aafb02fc28e5ef648de5b8d..457e2947968bbc7dc1ebf857a6b8239a04ebc03f 100644 GIT binary patch delta 40 qcmeBY?Pr}ZiO\n" "Language-Team: Belarusian (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/be/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/ca/LC_MESSAGES/django.mo b/rest_framework/locale/ca/LC_MESSAGES/django.mo index a3fe77afbb163115a952e77ae972bd7cdbfdf38d..06136491b8455aeedb64d6da2b84718255d46f0f 100644 GIT binary patch delta 64 zcmbR0Gu3B9im0)nk*E`L8bpilEToGIV delta 64 zcmbR0Gu3B9im0)HrLK{of}w$xsj0Ssk%0kMfWK}~YFTD+W`3ToOJYf?m4cChp{XuJ Poq>gwsoCb~qICiQK?V_A diff --git a/rest_framework/locale/ca/LC_MESSAGES/django.po b/rest_framework/locale/ca/LC_MESSAGES/django.po index 4d7cf9c20f0..ce74a5f454b 100644 --- a/rest_framework/locale/ca/LC_MESSAGES/django.po +++ b/rest_framework/locale/ca/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Catalan (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/ca/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "Header Basic invàlid. Les credencials no estan codificades correctament msgid "Invalid username/password." msgstr "Usuari/Contrasenya incorrectes." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Usuari inactiu o esborrat." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Token header invàlid. No s'han indicat les credencials." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Token header invàlid. El token no ha de contenir espais." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "Token header invàlid. El token no pot contenir caràcters invàlids." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Token invàlid." @@ -108,241 +108,267 @@ msgstr "Media type \"{media_type}\" no suportat." msgid "Request was throttled." msgstr "La petició ha estat limitada pel número màxim de peticions definit." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Aquest camp és obligatori." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Aquest camp no pot ser nul." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" no és un booleà." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Aquest camp no pot estar en blanc." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Aquest camp no pot tenir més de {max_length} caràcters." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Aquest camp ha de tenir un mínim de {min_length} caràcters." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Introdueixi una adreça de correu vàlida." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Aquest valor no compleix el patró requerit." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Introdueix un \"slug\" vàlid consistent en lletres, números, guions o guions baixos." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Introdueixi una URL vàlida." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" no és un UUID vàlid." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "Introdueixi una adreça IPv4 o IPv6 vàlida." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Es requereix un nombre enter vàlid." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Aquest valor ha de ser menor o igual a {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Aquest valor ha de ser més gran o igual a {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Valor del text massa gran." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Es requereix un nombre vàlid." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "No pot haver-hi més de {max_digits} dígits en total." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "No pot haver-hi més de {max_decimal_places} decimals." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "No pot haver-hi més de {max_whole_digits} dígits abans del punt decimal." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "El Datetime té un format incorrecte. Utilitzi un d'aquests formats: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "S'espera un Datetime però s'ha rebut un Date." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "El Date té un format incorrecte. Utilitzi un d'aquests formats: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "S'espera un Date però s'ha rebut un Datetime." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "El Time té un format incorrecte. Utilitzi un d'aquests formats: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "La durada té un format incorrecte. Utilitzi un d'aquests formats: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" no és una opció vàlida." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "S'espera una llista d'ítems però s'ha rebut el tipus \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "Aquesta selecció no pot estar buida." -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "\"{input}\" no és un path vàlid." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "No s'ha enviat cap fitxer." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Les dades enviades no són un fitxer. Comproveu l'encoding type del formulari." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "No s'ha pogut determinar el nom del fitxer." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "El fitxer enviat està buit." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "El nom del fitxer ha de tenir com a màxim {max_length} caràcters (en té {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Envieu una imatge vàlida. El fitxer enviat no és una imatge o és una imatge corrompuda." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "Aquesta llista no pot estar buida." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "S'espera un diccionari però s'ha rebut el tipus \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Pàgina invàlida \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Cursor invàlid." -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "PK invàlida \"{pk_value}\" - l'objecte no existeix." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Tipus incorrecte. S'espera el valor d'una PK, s'ha rebut {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Hyperlink invàlid - Cap match d'URL." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Hyperlink invàlid - Match d'URL incorrecta." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Hyperlink invàlid - L'objecte no existeix." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Tipus incorrecte. S'espera una URL, s'ha rebut {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "L'objecte amb {slug_name}={value} no existeix." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Valor invàlid." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Dades invàlides. S'espera un diccionari però s'ha rebut {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/ca_ES/LC_MESSAGES/django.mo b/rest_framework/locale/ca_ES/LC_MESSAGES/django.mo index 2aa79c8fb909f5c7dbd84a7d88f041ea148eb4d9..5c2dd5baaa80fcaa53006459b11bf6172a69b04e 100644 GIT binary patch delta 40 rcmbQhGJ$2nBtAnUT?2CkLklZYV{HS&i3_B-p(5s1rluQ@dNTq5(N_vW delta 40 scmbQhGJ$2nBt8R6T_ZyULjx;QQ*8sIi3_B-AtDAAR;Fefk9so#0MSDVLI3~& diff --git a/rest_framework/locale/ca_ES/LC_MESSAGES/django.po b/rest_framework/locale/ca_ES/LC_MESSAGES/django.po index 711ba24f938..fad1d9024d7 100644 --- a/rest_framework/locale/ca_ES/LC_MESSAGES/django.po +++ b/rest_framework/locale/ca_ES/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Catalan (Spain) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/ca_ES/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/cs/LC_MESSAGES/django.mo b/rest_framework/locale/cs/LC_MESSAGES/django.mo index cc186d881f1e10c3a529ac73b7d8ca5af39b64af..f0dc3dfcf4d6a44d050affcc7d5be2e8bd3c53e5 100644 GIT binary patch delta 43 tcmdnuzQuh*f-s+8cxs|Eu=E=f}0ssOz3cLUS delta 43 ucmdnuzQuh*f-s+frLK{of}w$xsj0Ss(d0Z~DQ<|6frXW++2+Z@iUI%vA_}|! diff --git a/rest_framework/locale/cs/LC_MESSAGES/django.po b/rest_framework/locale/cs/LC_MESSAGES/django.po index 320c034a23f..15cb86c8081 100644 --- a/rest_framework/locale/cs/LC_MESSAGES/django.po +++ b/rest_framework/locale/cs/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Czech (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/cs/)\n" "MIME-Version: 1.0\n" @@ -35,24 +35,24 @@ msgstr "Chybná hlavička. Přihlašovací údaje nebyly správně zakódovány msgid "Invalid username/password." msgstr "Chybné uživatelské jméno nebo heslo." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Uživatelský účet je neaktivní nebo byl smazán." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Chybná hlavička tokenu. Nebyly zadány přihlašovací údaje." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Chybná hlavička tokenu. Přihlašovací údaje by neměly obsahovat mezery." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Chybný token." @@ -110,241 +110,267 @@ msgstr "Nepodporovaný media type \"{media_type}\" v požadavku." msgid "Request was throttled." msgstr "Požadavek byl limitován kvůli omezení počtu požadavků za časovou periodu." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Toto pole je vyžadováno." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Toto pole nesmí být prázdné (null)." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" nelze použít jako typ boolean." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Toto pole nesmí být prázdné." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Zkontrolujte, že toto pole není delší než {max_length} znaků." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Zkontrolujte, že toto pole obsahuje alespoň {min_length} znaků." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Vložte platnou e-mailovou adresu." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Hodnota v tomto poli neodpovídá požadovanému formátu." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Vložte platnou \"zkrácenou formu\" obsahující pouze malá písmena, čísla, spojovník nebo podtržítko." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Vložte platný odkaz." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" není platné UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Je vyžadováno celé číslo." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Zkontrolujte, že hodnota je menší nebo rovna {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Zkontrolujte, že hodnota je větší nebo rovna {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Řetězec je příliš dlouhý." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Je vyžadováno číslo." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Zkontrolujte, že číslo neobsahuje více než {max_digits} čislic." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Zkontrolujte, že číslo nemá více než {max_decimal_places} desetinných míst." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Zkontrolujte, že číslo neobsahuje více než {max_whole_digits} čislic před desetinnou čárkou." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Chybný formát data a času. Použijte jeden z těchto formátů: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Bylo zadáno pouze datum bez času." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Chybný formát data. Použijte jeden z těchto formátů: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Bylo zadáno datum a čas, místo samotného data." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Chybný formát času. Použijte jeden z těchto formátů: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" není platnou možností." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Byl očekáván seznam položek ale nalezen \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Nebyl zaslán žádný soubor." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Zaslaná data neobsahují soubor. Zkontrolujte typ kódování ve formuláři." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Nebylo možné zjistit jméno souboru." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Zaslaný soubor je prázdný." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Zajistěte, aby jméno souboru obsahovalo maximálně {max_length} znaků (teď má {length} znaků)." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Nahrajte platný obrázek. Nahraný soubor buď není obrázkem nebo je poškozen." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Byl očekáván slovník položek ale nalezen \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Chybné čislo stránky \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Chybný kurzor." -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Chybný primární klíč \"{pk_value}\" - objekt neexistuje." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Chybný typ. Byl přijat typ {data_type} místo hodnoty primárního klíče." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Chybný odkaz - nebyla nalezena žádní shoda." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Chybný odkaz - byla nalezena neplatná shoda." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Chybný odkaz - objekt neexistuje." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Chybný typ. Byl přijat typ {data_type} místo očekávaného odkazu." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Objekt s {slug_name}={value} neexistuje." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Chybná hodnota." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Chybná data. Byl přijat typ {datatype} místo očekávaného slovníku." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/da/LC_MESSAGES/django.mo b/rest_framework/locale/da/LC_MESSAGES/django.mo index a8eb68ece8ba1b373bc1a5056d552c1e11aedfa1..f6ac0f7d591fd6f98faae73be353464e85743a97 100644 GIT binary patch delta 2335 zcmZwHTWnNC9LMq5wv^HWl|s9KPzDs`(p|TdURZ>dQa~t31={G7F5T1Z+P%P@(B1}y;M>@a{%T`Z<96)DXEBVQp|01}7_$|( z;5~Q(>+k|wK!f2wwkOlX*ycbNz}maV+U4FGo}+eaXn@+h~qdNe?r~o z<6sGfQJEUVWq7D`{!I*V{5b}(y4IM@xC+F!10FyToJ8&YVQj-ws4e=kbX?EdHNmZ@`(iW6zom1K6Pmy)s3Q3Um!p3c zg@^0$F&xD?_)*F4a0SQZ^~SvC7zs6D)f_u(zn9yXBIE?kSNF^fy_0(RinxDFdxg(mt0K7_BMGWRR0ww5rso^MBu z>!ON2`vM)!-%@j|?p<7U+P0b~uv#U?z8 zB+pz#74N6W+_L5l9lhAUuvnd4$Q;Zrq;QRklkjQe%QS~kdwc>lk#S@$=3~?ge@4|r zEgP2i;a|uKO^iItLm0%D(TC-Pet-VA?cglW7gnr7sv|Usbp&7EL{pKfX<~hZwo3cH zlTg7b_0)8sCZMpj%C;t|mYvMM2Z<>hO_@*usg)7>oVo}#{dQ=pDv3@) z+0s^7LSK`65o)U7e>WAD z_EZI{RIBmRFws=tJ%qNahR_$M+E}d7AEBdfc>_^J^b;ziU4)uG8x^A37J}cVLaX3^ z?rP=S+&h&`xeqG+6?-DyaQ;T+?N}$d$J-Y)yN2Vgb)AGWs2Tj{hWs}(e(<$4uLy+N zZF5JswPkszITWhy+aB2AjKy6Z3G_rfCu~=Qnp*><``W{;t@+8bp7Z7Q)-R~Bks+4A z3S1|DtUl|TIuOakW5Z6=vWDEX27kTlIZ?;6{Bi5h__;*PNk#K_8upa=3yE+N31=b~ z#ew?gTrCe+*ULDmnB6^oE@R^(BaV%yqRwzS5q0cnY+oW8k2!XPM2(QBGxK|W^ENUN zOHV~7a+Kcvq@&A9Q{&mPl}ZzLWNdOY5s$IN;=o=y88khP$2B$}#;7SfHhxMOPbc%g I+3UW)0n>d#umAu6 delta 1822 zcmYk+U2Ke59LMqhOv|)8)mE!UYs*wiS#3?r^vz4(w8fMwDr9kIFVIa8ksu>+(-e^y zG}&!Z=lz$n(?j7+nIxE>RD0vquK>hHxrn04VA%)`^Dg%4mU-t+x{dQVZ< zERNkc6Az)@cM0p6-`>z@VqjL5SsQM~D!hQ%_!#T)70$+z3EqjUz@O-EMUD4k46mbp z{|*;pl$Yo|8+jDrHoxDCrOa>rG_->u-$(ib{r9LH7UpA1|V! zb`9CQ{fYDNZ`6Cfp?;T_YZk#dnAD0}XecJzQ41MF{fCEs|1B!ESrg4_aW*OxoBV!1 zYG-#*6aI^ec_FjT#hEV)-?=3~vR@_Mm>)RzN=Buf9i76AfS# z|G{E>hx0Lq?JdAIT#mc33x`n~%wbnr_*z_wM1Iy?i@W+$qXfTKUg%$W5 z*{o%=Jtbi|YN7-Z72ApYvtAygg`LH5cm=s2b`=%6QPcuH;&cr0&^+a+P`4o`khEPi zI4!&3`xN?{Ls1Q|`coXbLC82}A;0I)HwvmLAd$Ef7 z?Kc_$213**Rq<45_i*oYg0^1%ec^lLE=Y^jj#{WIsTov-ObHmK>NIq6E2v{-{8)qe z-PMovb$u36bySL{K1gGwfretIqN85yw!DXuOhvgsO1ZhzglyWq`{0ICD$Kei$~(>P zCYFv=rNhIGsluY7d{9vyC^?&{NE2_-RoAkLI*F=8(tS;*cBLvq%bk;<)d8n2vnS|`gwLd, 2015 # Mikkel Munch Mortensen <3xm@detfalskested.dk>, 2015 msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Danish (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/da/)\n" "MIME-Version: 1.0\n" @@ -34,24 +35,24 @@ msgstr "Ugyldig basic header. Legitimationen er ikke base64 encoded på korrekt msgid "Invalid username/password." msgstr "Ugyldigt brugernavn/kodeord." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Inaktiv eller slettet bruger." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Ugyldig token header." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Ugyldig token header. Token-strenge må ikke indeholde mellemrum." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." -msgstr "" +msgstr "Ugyldig token header. Token streng bør ikke indeholde ugyldige karakterer." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Ugyldigt token." @@ -109,241 +110,267 @@ msgstr "Forespørgslens media type, \"{media_type}\", er ikke understøttet." msgid "Request was throttled." msgstr "Forespørgslen blev neddroslet." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Dette felt er påkrævet." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Dette felt må ikke være null." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" er ikke en tilladt boolsk værdi." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Dette felt må ikke være tomt." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Tjek at dette felt ikke indeholder flere end {max_length} tegn." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Tjek at dette felt indeholder mindst {min_length} tegn." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Angiv en gyldig e-mailadresse." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Denne værdi passer ikke med det påkrævede mønster." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Indtast en gyldig \"slug\", bestående af bogstaver, tal, bund- og bindestreger." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Indtast en gyldig URL." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" er ikke et gyldigt UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." -msgstr "" +msgstr "Indtast en gyldig IPv4 eller IPv6 adresse." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Et gyldigt heltal er påkrævet." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Tjek at værdien er mindre end eller lig med {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Tjek at værdien er større end eller lig med {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Strengværdien er for stor." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Et gyldigt tal er påkrævet." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Tjek at der ikke er flere end {max_digits} cifre i alt." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Tjek at der ikke er flere end {max_decimal_places} cifre efter kommaet." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Tjek at der ikke er flere end {max_whole_digits} cifre før kommaet." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Datotid har et forkert format. Brug i stedet et af disse formater: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Forventede en datotid, men fik en dato." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Dato har et forkert format. Brug i stedet et af disse formater: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Forventede en dato men fik en datotid." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Klokkeslæt har forkert format. Brug i stedet et af disse formater: {format}. " -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." -msgstr "" +msgstr "Varighed har forkert format. Brug istedet et af følgende formater: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" er ikke et gyldigt valg." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." -msgstr "" +msgstr "Flere end {count} objekter..." -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Forventede en liste, men fik noget af typen \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." -msgstr "" +msgstr "Dette valg kan være tomt." -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." -msgstr "" +msgstr "\"{input}\" er ikke et gyldigt valg af adresse." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Ingen medsendt fil." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Det medsendte data var ikke en fil. Tjek typen af indkodning på formularen." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Filnavnet kunne ikke afgøres." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Den medsendte fil er tom." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Sørg for at filnavnet er højst {max_length} langt (det er {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Medsend et gyldigt billede. Den medsendte fil var enten ikke et billede eller billedfilen var ødelagt." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." -msgstr "" +msgstr "Denne liste er muligvis ikke tom." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Forventede en dictionary, men fik noget af typen \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Ugyldig side \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Ugyldig cursor" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Ugyldig primærnøgle \"{pk_value}\" - objektet findes ikke." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Ugyldig type. Forventet værdi er primærnøgle, fik {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Ugyldigt hyperlink - intet URL match." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Ugyldigt hyperlink - forkert URL match." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Ugyldigt hyperlink - objektet findes ikke." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Forkert type. Forventede en URL-streng, fik {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Object med {slug_name}={value} findes ikke." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Ugyldig værdi." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Ugyldig data. Forventede en dictionary, men fik {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/da_DK/LC_MESSAGES/django.mo b/rest_framework/locale/da_DK/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..78170eeb6040287c2812b6f909fbc876fbac9462 GIT binary patch literal 529 zcmZutO-~y!5T$BQd+fP~sl*`>Om;U_MCy>LDhU#Th$w8U-l}PKvN7!1Tif~Ihw$6D z@mrV;Rk-k^Cy(tnetz@x@x#M`;GOW3@KE?(cr0wt7e316S6Lg)9#dy;c^>d0$6xHc zwno9|mP}z`HonPV;i%$`b$8K>YwH3|e4%svu_`=fRzWnq&hX4J1!=_*1y;~a(jKN= zOim!}tKOHRBux?#;*8h2v3NswqI$ifL=at(512VJzNBECg5R{(?BLqv_TTCrPPg`@ z`d(^d*P1$WTYZx@Q>>_9%$O?4Kt}r|v_@UH$7t^=T;<_Yl1~6Ze^Bjgh zvvcgf>YDE?*x}gBZLUqBp#N8geIx}tuV`AX9F=%(UF8*+dbjn%?f_oOVavehA*Ag= Gbnpzw-JjwB literal 0 HcmV?d00001 diff --git a/rest_framework/locale/da_DK/LC_MESSAGES/django.po b/rest_framework/locale/da_DK/LC_MESSAGES/django.po new file mode 100644 index 00000000000..c198cfdf6bc --- /dev/null +++ b/rest_framework/locale/da_DK/LC_MESSAGES/django.po @@ -0,0 +1,426 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Django REST framework\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" +"Last-Translator: Xavier Ordoquy \n" +"Language-Team: Danish (Denmark) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/da_DK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: da_DK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: authentication.py:72 +msgid "Invalid basic header. No credentials provided." +msgstr "" + +#: authentication.py:75 +msgid "Invalid basic header. Credentials string should not contain spaces." +msgstr "" + +#: authentication.py:81 +msgid "Invalid basic header. Credentials not correctly base64 encoded." +msgstr "" + +#: authentication.py:98 +msgid "Invalid username/password." +msgstr "" + +#: authentication.py:101 authentication.py:188 +msgid "User inactive or deleted." +msgstr "" + +#: authentication.py:167 +msgid "Invalid token header. No credentials provided." +msgstr "" + +#: authentication.py:170 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" + +#: authentication.py:176 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" + +#: authentication.py:185 +msgid "Invalid token." +msgstr "" + +#: authtoken/serializers.py:20 +msgid "User account is disabled." +msgstr "" + +#: authtoken/serializers.py:23 +msgid "Unable to log in with provided credentials." +msgstr "" + +#: authtoken/serializers.py:26 +msgid "Must include \"username\" and \"password\"." +msgstr "" + +#: exceptions.py:49 +msgid "A server error occurred." +msgstr "" + +#: exceptions.py:84 +msgid "Malformed request." +msgstr "" + +#: exceptions.py:89 +msgid "Incorrect authentication credentials." +msgstr "" + +#: exceptions.py:94 +msgid "Authentication credentials were not provided." +msgstr "" + +#: exceptions.py:99 +msgid "You do not have permission to perform this action." +msgstr "" + +#: exceptions.py:104 views.py:81 +msgid "Not found." +msgstr "" + +#: exceptions.py:109 +#, python-brace-format +msgid "Method \"{method}\" not allowed." +msgstr "" + +#: exceptions.py:120 +msgid "Could not satisfy the request Accept header." +msgstr "" + +#: exceptions.py:132 +#, python-brace-format +msgid "Unsupported media type \"{media_type}\" in request." +msgstr "" + +#: exceptions.py:145 +msgid "Request was throttled." +msgstr "" + +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 +#: validators.py:162 +msgid "This field is required." +msgstr "" + +#: fields.py:267 +msgid "This field may not be null." +msgstr "" + +#: fields.py:603 fields.py:634 +#, python-brace-format +msgid "\"{input}\" is not a valid boolean." +msgstr "" + +#: fields.py:669 +msgid "This field may not be blank." +msgstr "" + +#: fields.py:670 fields.py:1656 +#, python-brace-format +msgid "Ensure this field has no more than {max_length} characters." +msgstr "" + +#: fields.py:671 +#, python-brace-format +msgid "Ensure this field has at least {min_length} characters." +msgstr "" + +#: fields.py:708 +msgid "Enter a valid email address." +msgstr "" + +#: fields.py:719 +msgid "This value does not match the required pattern." +msgstr "" + +#: fields.py:730 +msgid "" +"Enter a valid \"slug\" consisting of letters, numbers, underscores or " +"hyphens." +msgstr "" + +#: fields.py:742 +msgid "Enter a valid URL." +msgstr "" + +#: fields.py:755 +#, python-brace-format +msgid "\"{value}\" is not a valid UUID." +msgstr "" + +#: fields.py:791 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "" + +#: fields.py:816 +msgid "A valid integer is required." +msgstr "" + +#: fields.py:817 fields.py:852 fields.py:885 +#, python-brace-format +msgid "Ensure this value is less than or equal to {max_value}." +msgstr "" + +#: fields.py:818 fields.py:853 fields.py:886 +#, python-brace-format +msgid "Ensure this value is greater than or equal to {min_value}." +msgstr "" + +#: fields.py:819 fields.py:854 fields.py:890 +msgid "String value too large." +msgstr "" + +#: fields.py:851 fields.py:884 +msgid "A valid number is required." +msgstr "" + +#: fields.py:887 +#, python-brace-format +msgid "Ensure that there are no more than {max_digits} digits in total." +msgstr "" + +#: fields.py:888 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_decimal_places} decimal places." +msgstr "" + +#: fields.py:889 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_whole_digits} digits before the " +"decimal point." +msgstr "" + +#: fields.py:1004 +#, python-brace-format +msgid "Datetime has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1005 +msgid "Expected a datetime but got a date." +msgstr "" + +#: fields.py:1079 +#, python-brace-format +msgid "Date has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1080 +msgid "Expected a date but got a datetime." +msgstr "" + +#: fields.py:1148 +#, python-brace-format +msgid "Time has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1207 +#, python-brace-format +msgid "Duration has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1232 fields.py:1281 +#, python-brace-format +msgid "\"{input}\" is not a valid choice." +msgstr "" + +#: fields.py:1235 relations.py:62 relations.py:431 +#, python-brace-format +msgid "More than {count} items..." +msgstr "" + +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 +#, python-brace-format +msgid "Expected a list of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1283 +msgid "This selection may not be empty." +msgstr "" + +#: fields.py:1320 +#, python-brace-format +msgid "\"{input}\" is not a valid path choice." +msgstr "" + +#: fields.py:1339 +msgid "No file was submitted." +msgstr "" + +#: fields.py:1340 +msgid "" +"The submitted data was not a file. Check the encoding type on the form." +msgstr "" + +#: fields.py:1341 +msgid "No filename could be determined." +msgstr "" + +#: fields.py:1342 +msgid "The submitted file is empty." +msgstr "" + +#: fields.py:1343 +#, python-brace-format +msgid "" +"Ensure this filename has at most {max_length} characters (it has {length})." +msgstr "" + +#: fields.py:1391 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: fields.py:1430 relations.py:428 serializers.py:521 +msgid "This list may not be empty." +msgstr "" + +#: fields.py:1483 +#, python-brace-format +msgid "Expected a dictionary of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 +#, python-brace-format +msgid "Invalid page \"{page_number}\": {message}." +msgstr "" + +#: pagination.py:407 +msgid "Invalid cursor" +msgstr "" + +#: relations.py:196 +#, python-brace-format +msgid "Invalid pk \"{pk_value}\" - object does not exist." +msgstr "" + +#: relations.py:197 +#, python-brace-format +msgid "Incorrect type. Expected pk value, received {data_type}." +msgstr "" + +#: relations.py:229 +msgid "Invalid hyperlink - No URL match." +msgstr "" + +#: relations.py:230 +msgid "Invalid hyperlink - Incorrect URL match." +msgstr "" + +#: relations.py:231 +msgid "Invalid hyperlink - Object does not exist." +msgstr "" + +#: relations.py:232 +#, python-brace-format +msgid "Incorrect type. Expected URL string, received {data_type}." +msgstr "" + +#: relations.py:391 +#, python-brace-format +msgid "Object with {slug_name}={value} does not exist." +msgstr "" + +#: relations.py:392 +msgid "Invalid value." +msgstr "" + +#: serializers.py:326 +#, python-brace-format +msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "" + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + +#: templates/rest_framework/horizontal/radio.html:2 +#: templates/rest_framework/inline/radio.html:2 +#: templates/rest_framework/vertical/radio.html:2 +msgid "None" +msgstr "" + +#: templates/rest_framework/horizontal/select_multiple.html:2 +#: templates/rest_framework/inline/select_multiple.html:2 +#: templates/rest_framework/vertical/select_multiple.html:2 +msgid "No items to select." +msgstr "" + +#: validators.py:24 +msgid "This field must be unique." +msgstr "" + +#: validators.py:78 +#, python-brace-format +msgid "The fields {field_names} must make a unique set." +msgstr "" + +#: validators.py:226 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" date." +msgstr "" + +#: validators.py:241 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" month." +msgstr "" + +#: validators.py:254 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" year." +msgstr "" + +#: versioning.py:42 +msgid "Invalid version in \"Accept\" header." +msgstr "" + +#: versioning.py:73 versioning.py:115 +msgid "Invalid version in URL path." +msgstr "" + +#: versioning.py:144 +msgid "Invalid version in hostname." +msgstr "" + +#: versioning.py:166 +msgid "Invalid version in query parameter." +msgstr "" + +#: views.py:88 +msgid "Permission denied." +msgstr "" diff --git a/rest_framework/locale/de/LC_MESSAGES/django.mo b/rest_framework/locale/de/LC_MESSAGES/django.mo index 0def3e0c53acd717cb45b9f6525f7557d5e3f8e1..0c1034bb047c2a0899cf7fd5ae0b9e8388647a6f 100644 GIT binary patch delta 2734 zcmZwIdu$X%9Ki9p+7_$|g%(~_ruK6rxoQ^>gCkmN|egs=Vkm*4oy+29zR2kr*I)&I#sFp*o3vX0p3<7G`^)#il>k$t24M5 z&m-wli-@O$w1ppez$z@qZCHaQ=2t0&Mj32{KLrTq> zP5k`_Fug0~0c>T-Q5dhlL6jU$1mn-5T=xm`PIVGx!WXa)TY2ktd0pX>YQ!yGc5XUeYTj|gvvt+;bV9s zK8>638SY=-^G{GhcLHVe%wyTj z=;AVb6_a=zW##MHsTysRl|F_N^8FaXze`Kdkk!kAZlLy1S5tFL%6|#?8;x&?|Fx37 z1va*Sa=@Rw>}~?$msK3U3X zt)i|7Mz&%n^;T*rl{ET!T!#eA|0LI7KlR^5BFBF%e&{7SQY2b(Y`Z1@k~=9xZL&Qp7*1vUlRtK5B(@q--dnu0`49 z7f~h0?Ns?t$O+*S;FmIf2dT@cTl|sYKA25gHeigJKU!Xw|Ejz(|9yE)=?=?F7S5Gd zmsZ`}zq3WBU5!h$H9YK^O#b(Z)3bVPlN#0|cFHquM)ede9J}Oj$xPeXX{GF8ok&`) zm5{#|veP1=+O%u5m$V#xZz7#_yj|M%%y=de$-gxH-Kl- z2dz}r=z3p=&^=umb3EUfkZN8T-`C^53Cr<8h;>Srwe^Tk4mFv$T&J~vpU-``tQs1Mn4UNsF;XO z$wS6y%PH)u>kUoYYM4`S3>hP8JF#l&15E{l+lt>|1tS#3)}w!Fe|Kg delta 1964 zcmYk+TTC2P9LMpqE6Dw}l!b!DDFti`Y!_rHAeC*4Sn0N;Sh4hpEv~R~*%pCPtFB4I zn{U$^FNp;8L5(%hiH$z^U}|jT!Kh8tq-v#2OcNDfOw_~}zrUF!@r1LVb7q-6bN>JT zoV6oY2hu+VvMw0fApI`-dA~7}SeVTR?ZZ2b*@_>bh1anb|G_G($?@)M#~S8Gumz{F z8DGJDcoqAxAlGvUA2cRyUSbgCi!~g^x;$fc;~BgU-@}9W8+Kz?zW4nc#+bi@0sI@a zfx-e~w&9M9hfu$B3L|(C8}Jr(v%bkIG^Udaeb|f7;C}oVL+C3qrWnJh|Leu=xQL3( z3hu> zzJ@_uMGM!k9Q~!nWML2qimAa}*ogX_Vbpy|Ojj~^jzJh-L~>$2M?FYc8N0v`YTl2^ z@fdbs8kMR`nfW?uXAP{P1*53kpTs6~uoZ9M2$q!-|IG|0d2G3aZMckAe8zl@y7A=- zW9soUtixYWp)Y0|N<|p;{RnQtXR!lq9K=-|#cFnQ6wl%#_+=&WKg^(!Qa*vL8pX%)0lb2JSj0B<14F1CzsZLl;4=2$?TihCYk>I)RP|p(p56R`doe#vTss-W zPzx@hZn%aDZS9s!&M?Y6iHgwM7{VV=p)RB_nz08Xm_*&bjQYKAk?fedyS>P@qvq*h z1}zLGkU#T6#!ILo`vw)#e^DVXx4eZSs8pQD%$JZg%=^gEV7|f<{0{Yiw~=g`Dt?4# zHqA&R(q@3c{ahHuM{ybXGk@}-f85L}n(xjyf=b2NjGv%VlEbTFVGI?4X;iLX$9wTF z+=I>JX#$_X8omG57+75R9Tl=tP6r?6(6z9lpr-t(se)s471sY7=acE8TXZeBkFMI{ zTyu+5Y2eIp)1-(Vq-%Y*DP$W>53$koTK3Q>2lt)r+xP<6kb9Ep5@(JZMUB;VdblSa zwdU4L6bY7_hHhlP-ulYFLZ-@BYozP-QPX*#mQAOq-NsAcwjF#b$9w5|O;u28D$I>` zfI)s{;>Z1TrGdlM+~H-?D?Hvf_pnhB_0l;b+~cwxRR?-YR7ez!;e2vyAPe=@*af-O z_RXATr#&|>%Z?X*?>tbH}{rS|F4pY6pm$8HZa1?OgyGvn4md}=;n&81S-RD5%n~wYJn-$L&hr3$ZTCLV_cO=pjZnK{bRu_1e!kyib4tph7S${0PkW9>4 zgR_sNPR*aOdKOdOC_0s#Ni8Jfp|RAob3J&}m+h`)msACvC#zPnoc=8_pYulTy5IR} x>yXbryzQ3VQ{Pr`JdqrmNX$$o=H?RCQ}aC6%y`H-UtjKber, 2015 +# Mads Jensen , 2015 +# Niklas P , 2015 # Thomas Tanner, 2015 # Tom Jaster , 2015 # Xavier Ordoquy , 2015 @@ -11,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" -"Last-Translator: Xavier Ordoquy \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-08 18:25+0000\n" +"Last-Translator: Fabian Büchler \n" "Language-Team: German (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/de/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,24 +39,24 @@ msgstr "Ungültiger basic header. Zugangsdaten sind nicht korrekt mit base64 kod msgid "Invalid username/password." msgstr "Ungültiger Benutzername/Passwort" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Benutzer inaktiv oder gelöscht." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Ungültiger token header. Keine Zugangsdaten angegeben." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Ungültiger token header. Zugangsdaten sollen keine Leerzeichen enthalten." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." -msgstr "" +msgstr "Ungültiger Token Header. Tokens dürfen keine ungültigen Zeichen enthalten." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Ungültiges Token" @@ -112,241 +114,267 @@ msgstr "Nicht unterstützter Medientyp \"{media_type}\" in der Anfrage." msgid "Request was throttled." msgstr "Die Anfrage wurde gedrosselt." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Dieses Feld ist erforderlich." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Dieses Feld darf nicht Null sein." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" ist kein gültiger Wahrheitswert." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Dieses Feld darf nicht leer sein." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Stelle sicher, dass dieses Feld nicht mehr als {max_length} Zeichen lang ist." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Stelle sicher, dass dieses Feld mindestens {min_length} Zeichen lang ist." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Gib eine gültige E-Mail Adresse an." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Dieser Wert passt nicht zu dem erforderlichen Muster." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Gib ein gültiges \"slug\" aus Buchstaben, Ziffern, Unterstrichen und Minuszeichen ein." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Gib eine gültige URL ein." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" ist keine gültige UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." -msgstr "" +msgstr "Geben Sie eine gültige UPv4 oder IPv6 Adresse an" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Eine gültige Ganzzahl ist erforderlich." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Stelle sicher, dass dieser Wert kleiner oder gleich {max_value} ist." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Stelle sicher, dass dieser Wert größer oder gleich {min_value} ist." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Zeichenkette zu lang." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Eine gültige Zahl ist erforderlich." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Stelle sicher, dass es insgesamt nicht mehr als {max_digits} Ziffern lang ist." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Stelle sicher, dass es nicht mehr als {max_decimal_places} Nachkommastellen lang ist." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Stelle sicher, dass es nicht mehr als {max_whole_digits} Stellen vor dem Komma lang ist." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Datums- und Zeitangabe hat das falsche Format. Nutze stattdessen eines dieser Formate: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Erwarte eine Datums- und Zeitangabe, erhielt aber ein Datum." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Datum hat das falsche Format. Nutze stattdessen eines dieser Formate: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Erwarte ein Datum, erhielt aber eine Datums- und Zeitangabe." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Zeitangabe hat das falsche Format. Nutze stattdessen eines dieser Formate: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "Laufzeit hat das falsche Format. Benutze stattdessen eines dieser Formate {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" ist keine gültige Option." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." -msgstr "" +msgstr "Mehr als {count} Ergebnisse" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Erwarte eine Liste von Elementen, erhielt aber den Typ \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." -msgstr "" +msgstr "Diese Auswahl darf nicht leer sein" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." -msgstr "" +msgstr "\"{input}\" ist ein ungültiger Pfad Wahl." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Es wurde keine Datei übermittelt." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Die übermittelten Daten stellen keine Datei dar. Prüfe den Kodierungstyp im Formular." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Der Dateiname konnte nicht ermittelt werden." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Die übermittelte Datei ist leer." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Stelle sicher, dass dieser Dateiname höchstens {max_length} Zeichen lang ist (er hat {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Lade ein gültiges Bild hoch. Die hochgeladene Datei ist entweder kein Bild oder ein beschädigtes Bild." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." -msgstr "" +msgstr "Diese Liste darf nicht leer sein." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Erwarte ein Dictionary mit Elementen, erhielt aber den Typ \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "Wert muss gültiges JSON sein." + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "Abschicken" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Ungültige Seite \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Ungültiger Zeiger" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Ungültiger pk \"{pk_value}\" - Object existiert nicht." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Falscher Typ. Erwarte pk Wert, erhielt aber {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Ungültiger Hyperlink - entspricht keiner URL." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Ungültiger Hyperlink - URL stimmt nicht überein." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Ungültiger Hyperlink - Objekt existiert nicht." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Falscher Typ. Erwarte URL Zeichenkette, erhielt aber {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Objekt mit {slug_name}={value} existiert nicht." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Ungültiger Wert." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Ungültige Daten. Dictionary erwartet, aber {datatype} erhalten." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "Filter" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "Feldfilter" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "Sortierung" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "Suche" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/en/LC_MESSAGES/django.mo b/rest_framework/locale/en/LC_MESSAGES/django.mo index a76764b2217853da1d4900e087c05c4ea25d8c47..6e464e9fd9a61820309b12be2e61b93eb2c72253 100644 GIT binary patch delta 2279 zcmciD+iz4=6vy$^(wnpbZ5@gQ^i;4Yz0Q=eb+GmVw56?#baVuZ#A2s(w6$T{YP>Nf zHsFKd!O?^!5R96rJd~J%^57*=9*SU$Pe!9ei4hGNH8J5qAbx){y9WOOcV?Z>-h0lR zvoGtMnd&~;n><&N^Quw$i50|O*=9*Ro6CVRmv2^qr_sZUcqPAmt6CTGF{0%o?%_6f} z+=G1VH4ZxO7~Y0IqgJkXvDsQ|K=tp$dfbn-TI!QjHsb|sM*ot`1;?i0Wv4L*rW@d$eO9wtkvd_^S(FCwdKe_$Q{jck`yv7TDe zbsThoPRzrdScWmzeh%wtPocK-1ZtpHQ0J9%GqnS#90`}Q{&!G$j1KMP>!|iOsF4@n zkU6m$J=$HUfyGhDG>ujGE&8#*XSN+fcq6{zoN>-!fd2D1mu2Q#%KB@M&M`a>mCD-t z3e*yIA|D&#pphq0BR_;ScoM7eC)9vSxvR1}>O72Ei65~QtC>|4M^O_#m87CObiG0N2z09)q}IWhS}%P|5u;YJ$V4`y>xg zX`*r(mEGA)TiM-?wYU#SWIKU6?-VMFub@`0^5#r-ccJ>nQ8{o3_506J$$c4{vBS$; zZwi@n(o(Kt1~ropk-^&!&a0^Y<=jm(Z$a*DeaHoD53a$NP|0~5Jv@V?k^PEFZo4Iu z+_|V6T7m_7{#&W&!kbYS*n!IKaU?D5Y1e)kHM42##LrLzEn##zuMXAjM0U#tQOW!~ zYAfG&?cY%YuUyS}+~3-$c=!-%WP7n4XHePwCn~#FvT@rnjO3HOy|9^^}9=0u+&eCr8RpB+KXbZH=t*-AuY$N)K9D-F$ua=&UN@4?{ZMc`X zwkYZNYq5=lwn0VtqpjJb{U`C$McF%F3g##OdS$%O#>j3!!{a@dzbv1)*F? zwUw36cIWr!`a0sVkwI@LJ~9zYj9W*>**A;6&M62d24ji%? l`2#iejh??L6l|!f_ooi~$_rgrV<;G${lxcf-v2wK;6I?N04@Lk delta 1986 zcma*nTWn2P9LMp0@8zIX+S6&3t?sII+B&_Qs&-n}UWTd)5fYIqNoiC&UdnzzCS!(@ zMleATmmm?+2WiAD=Aj~Si%<_lhzB8Yd69VG`#Wcod6)+)=YKwHuf5OSYpwr(pL2CP zYTV~3vHOkIM2sT-jW*kat#N$O0tsegF&`al#0l7eqwyb1$3E2WA7UoH$6WL!noYw} ztirW87tcm??E{^83=|JCt3(%<;tecD|6sE+T!^*!7l!Z&>U@gNtPX2%93H?Fyn>q0 zU2puYXVQ?!{R%N?u2~x$t>_f$#&@s;?!*5Fj! z>5X5+0LM=;4+kfiEx=MN=lQms4(IG9X5fAA_$_KhUr;L3Ks zfRpexrr}3)Fmbrq2%LhkSdK2cXjOEkV?FAITTwsUi+((V0lbb%)d$psO1N0(n^4Ca zP`TfQMR*#OqG#T5Do@u0>rmIVj9~vAI@=l01WuxgPVFFiaA~R6cy2bMv zY6s$&MJ3kbQrv^Z_!?ELSuC>_mtzP|q0Ya+I!x!GN@250huyJ1Q8PO1o#^v?hGmRL zaWaVIs1_!%2N4?`d)Qb9%x!60;K~7|RB5I*E$SrLp@_X01=%`u`AZfGf z$j2V@MH$#6=m6KWwsY1YKm+yuU6 z68zhS+eE%K>xIM=LPe*1t3?xfODYL9r9-)lCn^YSYaHPag~SX(JEf-D(Jp^)+A;n> z-EdVVd86!L_^(#mR7xm+vj`QUa+*!3sb2oucq@&1GhTnAz{8Edh96A@KAZTB@DZvP zy@nHX_Xax3`y3*XXd;yFC4`z@zvOU_>O~c$S}f7yq-XSg_OFQRU6(Zw+p{1$C#|D> z{l*sO_tmYP%}z&Ko71|wy`?#?_h9y%n4XuZe-8_k<`(2T`GHU{m=h@I=}OD+MTP<; Qp\n" "Language-Team: English (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/en/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "Invalid basic header. Credentials not correctly base64 encoded." msgid "Invalid username/password." msgstr "Invalid username/password." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "User inactive or deleted." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Invalid token header. No credentials provided." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Invalid token header. Token string should not contain spaces." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "Invalid token header. Token string should not contain invalid characters." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Invalid token." @@ -108,241 +108,267 @@ msgstr "Unsupported media type \"{media_type}\" in request." msgid "Request was throttled." msgstr "Request was throttled." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "This field is required." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "This field may not be null." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" is not a valid boolean." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "This field may not be blank." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Ensure this field has no more than {max_length} characters." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Ensure this field has at least {min_length} characters." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Enter a valid email address." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "This value does not match the required pattern." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Enter a valid \"slug\" consisting of letters, numbers, underscores or hyphens." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Enter a valid URL." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" is not a valid UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "Enter a valid IPv4 or IPv6 address." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "A valid integer is required." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Ensure this value is less than or equal to {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Ensure this value is greater than or equal to {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "String value too large." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "A valid number is required." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Ensure that there are no more than {max_digits} digits in total." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Ensure that there are no more than {max_decimal_places} decimal places." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Ensure that there are no more than {max_whole_digits} digits before the decimal point." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Datetime has wrong format. Use one of these formats instead: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Expected a datetime but got a date." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Date has wrong format. Use one of these formats instead: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Expected a date but got a datetime." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Time has wrong format. Use one of these formats instead: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "Duration has wrong format. Use one of these formats instead: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" is not a valid choice." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "More than {count} items..." -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Expected a list of items but got type \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "This selection may not be empty." -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "\"{input}\" is not a valid path choice." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "No file was submitted." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "The submitted data was not a file. Check the encoding type on the form." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "No filename could be determined." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "The submitted file is empty." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Ensure this filename has at most {max_length} characters (it has {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Upload a valid image. The file you uploaded was either not an image or a corrupted image." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "This list may not be empty." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Expected a dictionary of items but got type \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "Value must be valid JSON." + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "Submit" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Invalid page \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Invalid cursor" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Invalid pk \"{pk_value}\" - object does not exist." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Incorrect type. Expected pk value, received {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Invalid hyperlink - No URL match." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Invalid hyperlink - Incorrect URL match." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Invalid hyperlink - Object does not exist." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Incorrect type. Expected URL string, received {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Object with {slug_name}={value} does not exist." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Invalid value." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Invalid data. Expected a dictionary, but got {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "Filters" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "Field filters" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "Ordering" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "Search" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/en_AU/LC_MESSAGES/django.mo b/rest_framework/locale/en_AU/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..ffaa53bd68f864439f560a728412f0a50afe9bdb GIT binary patch literal 532 zcmZutO-}+b5Y^~ukDfh@i3f-dyNe-W5#tvoCK3s*#+#|^uvC|JZM%R!#6Rc3-{LG9 zy!eurPN#43`sQnE^J9&%&fI41GB=p}%nEJhCqEwXS!q@nSo1<7kJl+akafyv0hcdQ zX9kA7y9CBoPHArJYcQn3SdV>|sT9x4%wb{#1cTcIFDyyVqj)Jj31~)f3*#n6hY+_# z>tHX6qlkq#q?xKL{?Q$ZR%p75B?N|_NRB&Py;I?I)tK<%t_-pX9bI@BiK7a|Pj^Lc}N+Nm)us_8IYCPqta zy-JMn|NSukwF*f;o!y7^pnu)({jD!5)m5&IGidm0zV2u=ENBdC6h$%GjwBpo`_zb(\n" +"Language-Team: English (Australia) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/en_AU/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en_AU\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: authentication.py:72 +msgid "Invalid basic header. No credentials provided." +msgstr "" + +#: authentication.py:75 +msgid "Invalid basic header. Credentials string should not contain spaces." +msgstr "" + +#: authentication.py:81 +msgid "Invalid basic header. Credentials not correctly base64 encoded." +msgstr "" + +#: authentication.py:98 +msgid "Invalid username/password." +msgstr "" + +#: authentication.py:101 authentication.py:188 +msgid "User inactive or deleted." +msgstr "" + +#: authentication.py:167 +msgid "Invalid token header. No credentials provided." +msgstr "" + +#: authentication.py:170 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" + +#: authentication.py:176 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" + +#: authentication.py:185 +msgid "Invalid token." +msgstr "" + +#: authtoken/serializers.py:20 +msgid "User account is disabled." +msgstr "" + +#: authtoken/serializers.py:23 +msgid "Unable to log in with provided credentials." +msgstr "" + +#: authtoken/serializers.py:26 +msgid "Must include \"username\" and \"password\"." +msgstr "" + +#: exceptions.py:49 +msgid "A server error occurred." +msgstr "" + +#: exceptions.py:84 +msgid "Malformed request." +msgstr "" + +#: exceptions.py:89 +msgid "Incorrect authentication credentials." +msgstr "" + +#: exceptions.py:94 +msgid "Authentication credentials were not provided." +msgstr "" + +#: exceptions.py:99 +msgid "You do not have permission to perform this action." +msgstr "" + +#: exceptions.py:104 views.py:81 +msgid "Not found." +msgstr "" + +#: exceptions.py:109 +#, python-brace-format +msgid "Method \"{method}\" not allowed." +msgstr "" + +#: exceptions.py:120 +msgid "Could not satisfy the request Accept header." +msgstr "" + +#: exceptions.py:132 +#, python-brace-format +msgid "Unsupported media type \"{media_type}\" in request." +msgstr "" + +#: exceptions.py:145 +msgid "Request was throttled." +msgstr "" + +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 +#: validators.py:162 +msgid "This field is required." +msgstr "" + +#: fields.py:267 +msgid "This field may not be null." +msgstr "" + +#: fields.py:603 fields.py:634 +#, python-brace-format +msgid "\"{input}\" is not a valid boolean." +msgstr "" + +#: fields.py:669 +msgid "This field may not be blank." +msgstr "" + +#: fields.py:670 fields.py:1656 +#, python-brace-format +msgid "Ensure this field has no more than {max_length} characters." +msgstr "" + +#: fields.py:671 +#, python-brace-format +msgid "Ensure this field has at least {min_length} characters." +msgstr "" + +#: fields.py:708 +msgid "Enter a valid email address." +msgstr "" + +#: fields.py:719 +msgid "This value does not match the required pattern." +msgstr "" + +#: fields.py:730 +msgid "" +"Enter a valid \"slug\" consisting of letters, numbers, underscores or " +"hyphens." +msgstr "" + +#: fields.py:742 +msgid "Enter a valid URL." +msgstr "" + +#: fields.py:755 +#, python-brace-format +msgid "\"{value}\" is not a valid UUID." +msgstr "" + +#: fields.py:791 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "" + +#: fields.py:816 +msgid "A valid integer is required." +msgstr "" + +#: fields.py:817 fields.py:852 fields.py:885 +#, python-brace-format +msgid "Ensure this value is less than or equal to {max_value}." +msgstr "" + +#: fields.py:818 fields.py:853 fields.py:886 +#, python-brace-format +msgid "Ensure this value is greater than or equal to {min_value}." +msgstr "" + +#: fields.py:819 fields.py:854 fields.py:890 +msgid "String value too large." +msgstr "" + +#: fields.py:851 fields.py:884 +msgid "A valid number is required." +msgstr "" + +#: fields.py:887 +#, python-brace-format +msgid "Ensure that there are no more than {max_digits} digits in total." +msgstr "" + +#: fields.py:888 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_decimal_places} decimal places." +msgstr "" + +#: fields.py:889 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_whole_digits} digits before the " +"decimal point." +msgstr "" + +#: fields.py:1004 +#, python-brace-format +msgid "Datetime has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1005 +msgid "Expected a datetime but got a date." +msgstr "" + +#: fields.py:1079 +#, python-brace-format +msgid "Date has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1080 +msgid "Expected a date but got a datetime." +msgstr "" + +#: fields.py:1148 +#, python-brace-format +msgid "Time has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1207 +#, python-brace-format +msgid "Duration has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1232 fields.py:1281 +#, python-brace-format +msgid "\"{input}\" is not a valid choice." +msgstr "" + +#: fields.py:1235 relations.py:62 relations.py:431 +#, python-brace-format +msgid "More than {count} items..." +msgstr "" + +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 +#, python-brace-format +msgid "Expected a list of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1283 +msgid "This selection may not be empty." +msgstr "" + +#: fields.py:1320 +#, python-brace-format +msgid "\"{input}\" is not a valid path choice." +msgstr "" + +#: fields.py:1339 +msgid "No file was submitted." +msgstr "" + +#: fields.py:1340 +msgid "" +"The submitted data was not a file. Check the encoding type on the form." +msgstr "" + +#: fields.py:1341 +msgid "No filename could be determined." +msgstr "" + +#: fields.py:1342 +msgid "The submitted file is empty." +msgstr "" + +#: fields.py:1343 +#, python-brace-format +msgid "" +"Ensure this filename has at most {max_length} characters (it has {length})." +msgstr "" + +#: fields.py:1391 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: fields.py:1430 relations.py:428 serializers.py:521 +msgid "This list may not be empty." +msgstr "" + +#: fields.py:1483 +#, python-brace-format +msgid "Expected a dictionary of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 +#, python-brace-format +msgid "Invalid page \"{page_number}\": {message}." +msgstr "" + +#: pagination.py:407 +msgid "Invalid cursor" +msgstr "" + +#: relations.py:196 +#, python-brace-format +msgid "Invalid pk \"{pk_value}\" - object does not exist." +msgstr "" + +#: relations.py:197 +#, python-brace-format +msgid "Incorrect type. Expected pk value, received {data_type}." +msgstr "" + +#: relations.py:229 +msgid "Invalid hyperlink - No URL match." +msgstr "" + +#: relations.py:230 +msgid "Invalid hyperlink - Incorrect URL match." +msgstr "" + +#: relations.py:231 +msgid "Invalid hyperlink - Object does not exist." +msgstr "" + +#: relations.py:232 +#, python-brace-format +msgid "Incorrect type. Expected URL string, received {data_type}." +msgstr "" + +#: relations.py:391 +#, python-brace-format +msgid "Object with {slug_name}={value} does not exist." +msgstr "" + +#: relations.py:392 +msgid "Invalid value." +msgstr "" + +#: serializers.py:326 +#, python-brace-format +msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "" + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + +#: templates/rest_framework/horizontal/radio.html:2 +#: templates/rest_framework/inline/radio.html:2 +#: templates/rest_framework/vertical/radio.html:2 +msgid "None" +msgstr "" + +#: templates/rest_framework/horizontal/select_multiple.html:2 +#: templates/rest_framework/inline/select_multiple.html:2 +#: templates/rest_framework/vertical/select_multiple.html:2 +msgid "No items to select." +msgstr "" + +#: validators.py:24 +msgid "This field must be unique." +msgstr "" + +#: validators.py:78 +#, python-brace-format +msgid "The fields {field_names} must make a unique set." +msgstr "" + +#: validators.py:226 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" date." +msgstr "" + +#: validators.py:241 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" month." +msgstr "" + +#: validators.py:254 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" year." +msgstr "" + +#: versioning.py:42 +msgid "Invalid version in \"Accept\" header." +msgstr "" + +#: versioning.py:73 versioning.py:115 +msgid "Invalid version in URL path." +msgstr "" + +#: versioning.py:144 +msgid "Invalid version in hostname." +msgstr "" + +#: versioning.py:166 +msgid "Invalid version in query parameter." +msgstr "" + +#: views.py:88 +msgid "Permission denied." +msgstr "" diff --git a/rest_framework/locale/en_CA/LC_MESSAGES/django.mo b/rest_framework/locale/en_CA/LC_MESSAGES/django.mo index 61db1951b6317a491b6b1d1f64be82cb221be65e..bdf76870d71a111c67706885ed6ced967314d70e 100644 GIT binary patch delta 40 rcmbQpGLdD%BtAnUT?2CkLklZYV{HS&i3_B-p(5s1rluQ@`Y-|j(WeSU delta 40 scmbQpGLdD%Bt8R6T_ZyULjx;QQ*8sIi3_B-AtDAAR;FefkNPkI0MU~QMF0Q* diff --git a/rest_framework/locale/en_CA/LC_MESSAGES/django.po b/rest_framework/locale/en_CA/LC_MESSAGES/django.po index 49436f2a318..f23a59fb6e1 100644 --- a/rest_framework/locale/en_CA/LC_MESSAGES/django.po +++ b/rest_framework/locale/en_CA/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: English (Canada) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/en_CA/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/en_US/LC_MESSAGES/django.mo b/rest_framework/locale/en_US/LC_MESSAGES/django.mo index 2060cb51feeef21b427092c3286739465ff7cf4f..c99892e4bc9bddbab7066c13c43ad5dbcc12944a 100644 GIT binary patch delta 24 fcmeyx^owai51*ltu7SCNp@o&Hv9^KX#90pjW6B5I delta 24 fcmeyx^owai51)ahu92aFp@EgDskVX9#90pjW4Q;} diff --git a/rest_framework/locale/es/LC_MESSAGES/django.mo b/rest_framework/locale/es/LC_MESSAGES/django.mo index 875788154f4b7c52923d48d42fbb55bc79610bde..287a794806c6cd9280e7195b9cca8e2ea602bb37 100644 GIT binary patch delta 2422 zcmYk+S!`5Q9LMp4T`5&4P$)~~mWn9tOlL}K>qvn@7oaT#idfcoX)nW-S#*|y5E$bI zKB&>bM4}>S;+6;|1C259!Qcai8ly3opm9MHG`L25(P;esW(LB^{O5DdnLBsR`Jext zr~98=m->2g;d6$znV3ynxxttejur7nJ6mE*4Ss|cUdDM?UTVzE*oalQ7WMu6a26g! z559`^_$e;K|F8?&$7fBMLv*^C_ym{Y^fF^M;2^f(NxTa$VGq_$FeZRe)aP$uFJ8o2 zY$!KoG7g{?v;#H&NZ!{`_dAEp+G@#-#_%$2ysW3c0Ry>7E@E2T;o|}yE z;seOb9OF&boy6PlM^xr2CK|H<7oz63p$`wDSE+uN&Pu$5ZRnqryI~Y(GCq(WA3^Qp z4b;xY^8S>cFRsY#d;#ic+ECx$g7a}VPQ#bc!ck03q4NcuLcEM*+5C z6;pE;)}zIE1!`d~s+f*o9e#y=EUh$VBL;8=9?p9r?^$eQ{vw_mXH4ZZ@_!2x-?6+~ zv6xc!q6aP9f;zMPsG4{U=inGN;m^1jYxuRh@m}17qqq?(*hM?;%KJ91W&9g4p(q84VVa~WyCI~n$%GV&Pe^V6u*|A5L+J%vDdm?)~aA3|m9 z5UQ9{r|9(4xq<`O!S=M1=dlxiMctsu%2j-m3%4ux)xBHuOdpsM?GRMmc&AODF;`QNw|oA^}=pGC^R zWRQ={7-}JZpo)4Tg{7kIMvV`ks(%z~_WpF&vK`8xd)Oz+vI(7a!D>brqt(9Ku?x}3a-GnywZjc1oLJm+<;)x|pHNs8jX73grya5O z4MmfY#D2?7IN`Y0n|^W9XlZ|J*onE3V0vvueUW3whIXd+Rm>GM;cO8FZ-z81^h8facv=kxn~Wo!C9>zolc?nWb? z4m;rltVW-|*`w=PEq`;Mxv9=aE9SKutOtuY-uoTyCLsTG`yH^MuJH@=y=vUcIMm4hfAuo-B>hk4LjD59lk%B-9Hl< zyLv{^tiChHvmagEz7ul7P9zak3iixBU#=8H?69l3bYE@Dyk*JwkR3D2ZOwDjupM{p u;iwg|V?o<%IwK>l9m~8>`$56%&X5ukjd2yZi94}uW~>o*;HC%XxBL%iX*wVP delta 2022 zcmZYAUrZcT6vy!cEL|)@TUr*13d0|zK%om|fl>;z^q;jY3N4|E;wYPj1X)V~!8X|# zO*E$J!?Y$%8iI*Ni7(dm%@(VPT3_^~Q6s4}yh)5nW1>M5_4}JyO^i33`P{j?J9F^;k!XIKA{)%0=Ess@W0vj-e`M8Yw-fi51 zwG1j#{aA}rsPTD>;uqL}zvKN_v(9W6_qWq@7_-Y*g4fdLOQ;pCpjMKsy#=Y3g^0cdG(Zy@nffX!Q4&wk`LQU)!e+GR z&&D}$L-Vi|FJp_I{~yx>4%1Ri29e3zBx*Cgj#|l8Jcd8xF6`k$rSv%*!YionZ{``) zb-GcTbOX+wd#M`!E}fH<+no|8;L&RFtL?TRt^wq z%8bggTPL(Iv6JBC>bImnW4cEPr8!0@?P{5X_C}XZXnJX|uWSv`Nw7C9n{bHjgq|dA zVzmyU#qR|Nm6#W$pZay_aVnMccem2iM(ih)T0H?ux%Pt^8T?OEUD>b3WAE2gAMz^r zx9RoULmVM;30?>O{|+i=4-$HE_7XX|lWMAZ=`m7MP1pOq;62T|$ZsKzUT#iFYB~H! zcB(&bZOEJ1kn)-f>LQa9qvI!?X?JWY?o1{U&X_xKGTxASzF=RLw_JEGKf0s7snKbS zw#Q<1(I)R~q$D>Oing`KTD&(RMb4l*JsO{IdM8E_r>16|j+sQz>mC~&PfU-xsinyI za7K@JySOyTyTnW&0AcN\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-08 15:54+0000\n" +"Last-Translator: Miguel González \n" "Language-Team: Spanish (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -38,24 +38,24 @@ msgstr "Cabecera básica inválida. Las credenciales incorrectamente codificadas msgid "Invalid username/password." msgstr "Nombre de usuario/contraseña inválidos." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Usuario inactivo o borrado." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Cabecera token inválida. Las credenciales no fueron suministradas." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Cabecera token inválida. La cadena token no debe contener espacios." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "Cabecera token inválida. La cadena token no debe contener caracteres inválidos." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Token inválido." @@ -113,241 +113,267 @@ msgstr "Tipo de medio \"{media_type}\" incompatible en la solicitud." msgid "Request was throttled." msgstr "Solicitud fue regulada (throttled)." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Este campo es requerido." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Este campo no puede ser nulo." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" no es un booleano válido." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Este campo no puede estar en blanco." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Asegúrese de que este campo no tenga más de {max_length} caracteres." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Asegúrese de que este campo tenga al menos {min_length} caracteres." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Introduzca una dirección de correo electrónico válida." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Este valor no coincide con el patrón requerido." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Introduzca un \"slug\" válido consistente en letras, números, guiones o guiones bajos." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Introduzca una URL válida." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" no es un UUID válido." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "Introduzca una dirección IPv4 o IPv6 válida." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Introduzca un número entero válido." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Asegúrese de que este valor es menor o igual a {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Asegúrese de que este valor es mayor o igual a {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Cadena demasiado larga." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Se requiere un número válido." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Asegúrese de que no haya más de {max_digits} dígitos en total." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Asegúrese de que no haya más de {max_decimal_places} decimales." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Asegúrese de que no haya más de {max_whole_digits} dígitos en la parte entera." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Fecha/hora con formato erróneo. Use uno de los siguientes formatos en su lugar: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Se esperaba un fecha/hora en vez de una fecha." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Fecha con formato erróneo. Use uno de los siguientes formatos en su lugar: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Se esperaba una fecha en vez de una fecha/hora." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Hora con formato erróneo. Use uno de los siguientes formatos en su lugar: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "Duración con formato erróneo. Use uno de los siguientes formatos en su lugar: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" no es una elección válida." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." -msgstr "" +msgstr "Más de {count} elementos..." -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Se esperaba una lista de elementos en vez del tipo \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "Esta selección no puede estar vacía." -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "\"{input}\" no es una elección de ruta válida." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "No se envió ningún archivo." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "La información enviada no era un archivo. Compruebe el tipo de codificación del formulario." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "No se pudo determinar un nombre de archivo." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "El archivo enviado está vació." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Asegúrese de que el nombre de archivo no tenga más de {max_length} caracteres (tiene {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Adjunte una imagen válida. El archivo adjunto o bien no es una imagen o bien está dañado." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "Esta lista no puede estar vacía." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Se esperaba un diccionario de elementos en vez del tipo \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "El valor debe ser JSON válido." + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "Enviar" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Página \"{page_number}\" inválida: {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Cursor inválido" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Clave primaria \"{pk_value}\" inválida - objeto no existe." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Tipo incorrecto. Se esperaba valor de clave primaria y se recibió {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Hiperenlace inválido - No hay URL coincidentes." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Hiperenlace inválido - Coincidencia incorrecta de la URL." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Hiperenlace inválido - Objeto no existe." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Tipo incorrecto. Se esperaba una URL y se recibió {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Objeto con {slug_name}={value} no existe." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Valor inválido." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Datos inválidos. Se esperaba un diccionario pero es un {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "Filtros" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "Filtros de campo" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "Ordenamiento" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "Buscar" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/et/LC_MESSAGES/django.mo b/rest_framework/locale/et/LC_MESSAGES/django.mo index 880d55b246acf178ca7b0cf7c5a52fa8c3516a16..d0d064b1814c573673e8f9b7145b8226e7040ec9 100644 GIT binary patch delta 43 tcmZp1ZE@X@Ak1fIq-$WVU}#}wYOHNwI5|&PiW@3qZe?n^d9v_FJ^=G%3nl;n delta 43 ucmZp1ZE@X@Ak1fAscU4YU}#`vYN~BuG&xULiW?$iU}0rywt2GfM?L`aO$#Of diff --git a/rest_framework/locale/et/LC_MESSAGES/django.po b/rest_framework/locale/et/LC_MESSAGES/django.po index e642aaf0d19..da2db496780 100644 --- a/rest_framework/locale/et/LC_MESSAGES/django.po +++ b/rest_framework/locale/et/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Estonian (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/et/)\n" "MIME-Version: 1.0\n" @@ -34,24 +34,24 @@ msgstr "Sobimatu lihtpäis. Kasutajatunnus pole korrektselt base64-kodeeritud." msgid "Invalid username/password." msgstr "Sobimatu kasutajatunnus/salasõna." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Kasutaja on inaktiivne või kustutatud." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Sobimatu lubakaardi päis. Kasutajatunnus on esitamata." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Sobimatu lubakaardi päis. Loa sõne ei tohi sisaldada tühikuid." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Sobimatu lubakaart." @@ -109,241 +109,267 @@ msgstr "Meedia tüüpi {media_type} päringus ei toetata." msgid "Request was throttled." msgstr "Liiga palju päringuid." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Väli on kohustuslik." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Väli ei tohi olla tühi." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" pole kehtiv kahendarv." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "See väli ei tohi olla tühi." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Veendu, et see väli poleks pikem kui {max_length} tähemärki." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Veendu, et see väli oleks vähemalt {min_length} tähemärki pikk." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Sisestage kehtiv e-posti aadress." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Väärtus ei ühti etteantud mustriga." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Sisestage kehtiv \"slug\", mis koosneks tähtedest, numbritest, ala- või sidekriipsudest." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Sisestage korrektne URL." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" pole kehtiv UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Sisendiks peab olema täisarv." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Veenduge, et väärtus on väiksem kui või võrdne väärtusega {max_value}. " -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Veenduge, et väärtus on suurem kui või võrdne väärtusega {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Sõne on liiga pikk." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Sisendiks peab olema arv." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Veenduge, et kokku pole rohkem kui {max_digits} numbit." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Veenduge, et komakohti pole rohkem kui {max_decimal_places}. " -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Veenduge, et täiskohti poleks rohkem kui {max_whole_digits}." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Valesti formaaditud kuupäev-kellaaeg. Kasutage mõnda neist: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Ootasin kuupäev-kellaaeg andmetüüpi, kuid sain hoopis kuupäeva." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Valesti formaaditud kuupäev. Kasutage mõnda neist: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Ootasin kuupäeva andmetüüpi, kuid sain hoopis kuupäev-kellaaja." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Valesti formaaditud kellaaeg. Kasutage mõnda neist: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" on sobimatu valik." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Ootasin kirjete järjendit, kuid sain \"{input_type}\" - tüübi." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Ühtegi faili ei esitatud." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Esitatud andmetes ei olnud faili. Kontrollige vormi kodeeringut." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Ei suutnud tuvastada failinime." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Esitatud fail oli tühi." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Veenduge, et failinimi oleks maksimaalselt {max_length} tähemärki pikk (praegu on {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Laadige üles kehtiv pildifail. Üles laetud fail ei olnud pilt või oli see katki." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Ootasin kirjete sõnastikku, kuid sain \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Sobimatu lehekülg \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Sobimatu kursor." -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Sobimatu primaarvõti \"{pk_value}\" - objekti pole olemas." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Sobimatu andmetüüp. Ootasin primaarvõtit, sain {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Sobimatu hüperlink - ei leidnud URLi vastet." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Sobimatu hüperlink - vale URLi vaste." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Sobimatu hüperlink - objekti ei eksisteeri." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Sobimatu andmetüüp. Ootasin URLi sõne, sain {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Objekti {slug_name}={value} ei eksisteeri." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Sobimatu väärtus." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Sobimatud andmed. Ootasin sõnastikku, kuid sain {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/fi/LC_MESSAGES/django.mo b/rest_framework/locale/fi/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..2b7144816b59ad8a52ee9d5312b1dee78ee06bca GIT binary patch literal 10068 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 Ha+di&9Y>U^ literal 0 HcmV?d00001 diff --git a/rest_framework/locale/fi/LC_MESSAGES/django.po b/rest_framework/locale/fi/LC_MESSAGES/django.po new file mode 100644 index 00000000000..c6c24c64708 --- /dev/null +++ b/rest_framework/locale/fi/LC_MESSAGES/django.po @@ -0,0 +1,428 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Aarni Koskela, 2015 +# Aarni Koskela, 2015 +msgid "" +msgstr "" +"Project-Id-Version: Django REST framework\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-08 16:26+0000\n" +"Last-Translator: Aarni Koskela\n" +"Language-Team: Finnish (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: authentication.py:72 +msgid "Invalid basic header. No credentials provided." +msgstr "Epäkelpo perusotsake. Ei annettuja tunnuksia." + +#: authentication.py:75 +msgid "Invalid basic header. Credentials string should not contain spaces." +msgstr "Epäkelpo perusotsake. Tunnusmerkkijono ei saa sisältää välilyöntejä." + +#: authentication.py:81 +msgid "Invalid basic header. Credentials not correctly base64 encoded." +msgstr "Epäkelpo perusotsake. Tunnukset eivät ole base64-koodattu." + +#: authentication.py:98 +msgid "Invalid username/password." +msgstr "Epäkelpo käyttäjänimi tai salasana." + +#: authentication.py:101 authentication.py:188 +msgid "User inactive or deleted." +msgstr "Käyttäjä ei-aktiivinen tai poistettu." + +#: authentication.py:167 +msgid "Invalid token header. No credentials provided." +msgstr "Epäkelpo Token-otsake. Ei annettuja tunnuksia." + +#: authentication.py:170 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "Epäkelpo Token-otsake. Tunnusmerkkijono ei saa sisältää välilyöntejä." + +#: authentication.py:176 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "Epäkelpo Token-otsake. Tunnusmerkkijono ei saa sisältää epäkelpoja merkkejä." + +#: authentication.py:185 +msgid "Invalid token." +msgstr "Epäkelpo Token." + +#: authtoken/serializers.py:20 +msgid "User account is disabled." +msgstr "Käyttäjätili ei ole käytössä." + +#: authtoken/serializers.py:23 +msgid "Unable to log in with provided credentials." +msgstr "Ei voitu kirjautua annetuilla tunnuksilla." + +#: authtoken/serializers.py:26 +msgid "Must include \"username\" and \"password\"." +msgstr "Pitää sisältää \"username\" ja \"password\"." + +#: exceptions.py:49 +msgid "A server error occurred." +msgstr "Sattui palvelinvirhe." + +#: exceptions.py:84 +msgid "Malformed request." +msgstr "Pyyntö on virheellisen muotoinen." + +#: exceptions.py:89 +msgid "Incorrect authentication credentials." +msgstr "Väärät autentikaatiotunnukset." + +#: exceptions.py:94 +msgid "Authentication credentials were not provided." +msgstr "Autentikaatiotunnuksia ei annettu." + +#: exceptions.py:99 +msgid "You do not have permission to perform this action." +msgstr "Sinulla ei ole lupaa suorittaa tätä toimintoa." + +#: exceptions.py:104 views.py:81 +msgid "Not found." +msgstr "Ei löydy." + +#: exceptions.py:109 +#, python-brace-format +msgid "Method \"{method}\" not allowed." +msgstr "Metodi \"{method}\" ei ole sallittu." + +#: exceptions.py:120 +msgid "Could not satisfy the request Accept header." +msgstr "Ei voitu vastata pyynnön Accept-otsakkeen mukaisesti." + +#: exceptions.py:132 +#, python-brace-format +msgid "Unsupported media type \"{media_type}\" in request." +msgstr "Pyynnön mediatyyppiä \"{media_type}\" ei tueta." + +#: exceptions.py:145 +msgid "Request was throttled." +msgstr "Pyyntö hidastettu." + +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 +#: validators.py:162 +msgid "This field is required." +msgstr "Tämä kenttä vaaditaan." + +#: fields.py:267 +msgid "This field may not be null." +msgstr "Tämän kentän arvo ei voi olla \"null\"." + +#: fields.py:603 fields.py:634 +#, python-brace-format +msgid "\"{input}\" is not a valid boolean." +msgstr "\"{input}\" ei ole kelvollinen totuusarvo." + +#: fields.py:669 +msgid "This field may not be blank." +msgstr "Tämä kenttä ei voi olla tyhjä." + +#: fields.py:670 fields.py:1656 +#, python-brace-format +msgid "Ensure this field has no more than {max_length} characters." +msgstr "Arvo saa olla enintään {max_length} merkkiä pitkä." + +#: fields.py:671 +#, python-brace-format +msgid "Ensure this field has at least {min_length} characters." +msgstr "Arvo tulee olla vähintään {min_length} merkkiä pitkä." + +#: fields.py:708 +msgid "Enter a valid email address." +msgstr "Syötä kelvollinen sähköpostiosoite." + +#: fields.py:719 +msgid "This value does not match the required pattern." +msgstr "Arvo ei täsmää vaadittuun kuvioon." + +#: fields.py:730 +msgid "" +"Enter a valid \"slug\" consisting of letters, numbers, underscores or " +"hyphens." +msgstr "Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala- ja tavuviivoja (_ -)." + +#: fields.py:742 +msgid "Enter a valid URL." +msgstr "Syötä oikea URL-osoite." + +#: fields.py:755 +#, python-brace-format +msgid "\"{value}\" is not a valid UUID." +msgstr "{value} ei ole kelvollinen UUID." + +#: fields.py:791 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "Syötä kelvollinen IPv4- tai IPv6-osoite." + +#: fields.py:816 +msgid "A valid integer is required." +msgstr "Syötä kelvollinen kokonaisluku." + +#: fields.py:817 fields.py:852 fields.py:885 +#, python-brace-format +msgid "Ensure this value is less than or equal to {max_value}." +msgstr "Tämän arvon on oltava enintään {max_value}." + +#: fields.py:818 fields.py:853 fields.py:886 +#, python-brace-format +msgid "Ensure this value is greater than or equal to {min_value}." +msgstr "Tämän luvun on oltava vähintään {min_value}." + +#: fields.py:819 fields.py:854 fields.py:890 +msgid "String value too large." +msgstr "Liian suuri merkkijonoarvo." + +#: fields.py:851 fields.py:884 +msgid "A valid number is required." +msgstr "Kelvollinen luku vaaditaan." + +#: fields.py:887 +#, python-brace-format +msgid "Ensure that there are no more than {max_digits} digits in total." +msgstr "Tässä luvussa voi olla yhteensä enintään {max_digits} numeroa." + +#: fields.py:888 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_decimal_places} decimal places." +msgstr "Tässä luvussa saa olla enintään {max_decimal_places} desimaalia." + +#: fields.py:889 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_whole_digits} digits before the " +"decimal point." +msgstr "Tässä luvussa saa olla enintään {max_whole_digits} numeroa ennen desimaalipilkkua." + +#: fields.py:1004 +#, python-brace-format +msgid "Datetime has wrong format. Use one of these formats instead: {format}." +msgstr "Virheellinen päivämäärän/ajan muotoilu. Käytä jotain näistä muodoista: {format}" + +#: fields.py:1005 +msgid "Expected a datetime but got a date." +msgstr "Odotettiin päivämäärää ja aikaa, saatiin vain päivämäärä." + +#: fields.py:1079 +#, python-brace-format +msgid "Date has wrong format. Use one of these formats instead: {format}." +msgstr "Virheellinen päivämäärän muotoilu. Käytä jotain näistä muodoista: {format}" + +#: fields.py:1080 +msgid "Expected a date but got a datetime." +msgstr "Odotettiin päivämäärää, saatiin päivämäärä ja aika." + +#: fields.py:1148 +#, python-brace-format +msgid "Time has wrong format. Use one of these formats instead: {format}." +msgstr "Virheellinen kellonajan muotoilu. Käytä jotain näistä muodoista: {format}" + +#: fields.py:1207 +#, python-brace-format +msgid "Duration has wrong format. Use one of these formats instead: {format}." +msgstr "Virheellinen keston muotoilu. Käytä jotain näistä muodoista: {format}" + +#: fields.py:1232 fields.py:1281 +#, python-brace-format +msgid "\"{input}\" is not a valid choice." +msgstr "\"{input}\" ei ole kelvollinen valinta." + +#: fields.py:1235 relations.py:62 relations.py:431 +#, python-brace-format +msgid "More than {count} items..." +msgstr "Enemmän kuin {count} kappaletta..." + +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 +#, python-brace-format +msgid "Expected a list of items but got type \"{input_type}\"." +msgstr "Odotettiin listaa, saatiin tyyppi {input_type}." + +#: fields.py:1283 +msgid "This selection may not be empty." +msgstr "Valinta ei saa olla tyhjä." + +#: fields.py:1320 +#, python-brace-format +msgid "\"{input}\" is not a valid path choice." +msgstr "\"{input}\" ei ole kelvollinen polku." + +#: fields.py:1339 +msgid "No file was submitted." +msgstr "Yhtään tiedostoa ei ole lähetetty." + +#: fields.py:1340 +msgid "" +"The submitted data was not a file. Check the encoding type on the form." +msgstr "Tiedostoa ei lähetetty. Tarkista lomakkeen koodaus (encoding)." + +#: fields.py:1341 +msgid "No filename could be determined." +msgstr "Tiedostonimeä ei voitu päätellä." + +#: fields.py:1342 +msgid "The submitted file is empty." +msgstr "Lähetetty tiedosto on tyhjä." + +#: fields.py:1343 +#, python-brace-format +msgid "" +"Ensure this filename has at most {max_length} characters (it has {length})." +msgstr "Varmista että tiedostonimi on enintään {max_length} merkkiä pitkä (nyt {length})." + +#: fields.py:1391 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "Kuva ei kelpaa. Lähettämäsi tiedosto ei ole kuva, tai tiedosto on vioittunut." + +#: fields.py:1430 relations.py:428 serializers.py:521 +msgid "This list may not be empty." +msgstr "Lista ei saa olla tyhjä." + +#: fields.py:1483 +#, python-brace-format +msgid "Expected a dictionary of items but got type \"{input_type}\"." +msgstr "Odotettiin sanakirjaa, saatiin tyyppi {input_type}." + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "Arvon pitää olla kelvollista JSONia." + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "Lähetä" + +#: pagination.py:189 +#, python-brace-format +msgid "Invalid page \"{page_number}\": {message}." +msgstr "Epäkelpo sivu ({page_number}): {message}" + +#: pagination.py:407 +msgid "Invalid cursor" +msgstr "Epäkelpo kursori" + +#: relations.py:196 +#, python-brace-format +msgid "Invalid pk \"{pk_value}\" - object does not exist." +msgstr "Epäkelpo pääavain {pk_value} - objektia ei ole olemassa." + +#: relations.py:197 +#, python-brace-format +msgid "Incorrect type. Expected pk value, received {data_type}." +msgstr "Väärä tyyppi. Odotettiin pääavainarvoa, saatiin {data_type}." + +#: relations.py:229 +msgid "Invalid hyperlink - No URL match." +msgstr "Epäkelpo linkki - URL ei täsmää." + +#: relations.py:230 +msgid "Invalid hyperlink - Incorrect URL match." +msgstr "Epäkelpo linkki - epäkelpo URL-osuma." + +#: relations.py:231 +msgid "Invalid hyperlink - Object does not exist." +msgstr "Epäkelpo linkki - objektia ei ole." + +#: relations.py:232 +#, python-brace-format +msgid "Incorrect type. Expected URL string, received {data_type}." +msgstr "Epäkelpo tyyppi. Odotettiin URL-merkkijonoa, saatiin {data_type}." + +#: relations.py:391 +#, python-brace-format +msgid "Object with {slug_name}={value} does not exist." +msgstr "Objektia ({slug_name}={value}) ei ole." + +#: relations.py:392 +msgid "Invalid value." +msgstr "Epäkelpo arvo." + +#: serializers.py:326 +#, python-brace-format +msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "Odotettiin sanakirjaa, saatiin tyyppi {datatype}." + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "Suotimet" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "Kenttäsuotimet" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "Järjestys" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "Haku" + +#: templates/rest_framework/horizontal/radio.html:2 +#: templates/rest_framework/inline/radio.html:2 +#: templates/rest_framework/vertical/radio.html:2 +msgid "None" +msgstr "Ei mitään" + +#: templates/rest_framework/horizontal/select_multiple.html:2 +#: templates/rest_framework/inline/select_multiple.html:2 +#: templates/rest_framework/vertical/select_multiple.html:2 +msgid "No items to select." +msgstr "Ei valittavia kohteita." + +#: validators.py:24 +msgid "This field must be unique." +msgstr "Arvon tulee olla uniikki." + +#: validators.py:78 +#, python-brace-format +msgid "The fields {field_names} must make a unique set." +msgstr "Kenttien {field_names} tulee muodostaa uniikki joukko." + +#: validators.py:226 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" date." +msgstr "Kentän tulee olla uniikki päivämäärän {date_field} suhteen." + +#: validators.py:241 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" month." +msgstr "Kentän tulee olla uniikki kuukauden {date_field} suhteen." + +#: validators.py:254 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" year." +msgstr "Kentän tulee olla uniikki vuoden {date_field} suhteen." + +#: versioning.py:42 +msgid "Invalid version in \"Accept\" header." +msgstr "Epäkelpo versio Accept-otsakkeessa." + +#: versioning.py:73 versioning.py:115 +msgid "Invalid version in URL path." +msgstr "Epäkelpo versio URL-polussa." + +#: versioning.py:144 +msgid "Invalid version in hostname." +msgstr "Epäkelpo versio palvelinosoitteessa." + +#: versioning.py:166 +msgid "Invalid version in query parameter." +msgstr "Epäkelpo versio kyselyparametrissa." + +#: views.py:88 +msgid "Permission denied." +msgstr "Pääsy evätty." diff --git a/rest_framework/locale/fr/LC_MESSAGES/django.mo b/rest_framework/locale/fr/LC_MESSAGES/django.mo index 9626fd35444715525dd1a03abe7460db17cfc360..03bcfa949ca022d3279d332353a6188676be4fe5 100644 GIT binary patch delta 2276 zcmYk+T~JhI9LMoL2rL3gC?HYRp@j%}e=!jw#duL6NtOu1Y!HsH@m331PS##jS{F6V zY);WkNoA8cj$W*lSIv}-*<>$rlQm9LPDKsVOc&l|+4r}5VtQu(=kuIrch7mA|MNfR zLg%wx;UAVK9Wq)UaT9SR(JYMTlR41N`OFINb98V4i!dYA>}IUNJlu}@|HF7A9>j8d z8_VzlZo+@C6`PjE4BK;b+8Fp6H{!}PvmWflwRjTO<2<&bKi#YWCs5xX!w$TReyq$e zTaE$Lg!Z7upZ0tgb-gcejh5=W&Ww*Wa$s@Rj#^;=b)$V)kEd`0{(*O6`7*N#d=&ZE zEC>DWB;Jm{p)!}1X|@_`QRBO?3J+q1Qhl1v7M#aMtiC>e!3oUg{3-8z2DOr-sFj`f z{M{Q*$%?OhHEL@bQUBkG#rPQJ;$d{~0}QXA^DUhuTtKpHe_|#6g>09Vl24_yj)N}H zhAFrUSEB2kKZ#YGKZDxR_fZr58}++15ApdvJ8DT(s`4;N@d(_Ocvg1E2 zLx=OtsEGwp#WaJZcnPa9HOFiRHsB5TvgZlUb6CUpWjvc;mXk~Vm6}UTuMm?cBydjZ*Idk<9`XT0$rQ7OLa zS$A9f{VM zCMKNG{?L$HVS(x0W5KEDM_DaP@_J%lj!jQaIlEo`G&tyN4RmgcB;>rfth%PWYOPaU z->{~(w5mGtdQN`2H?)qS=qEW*U!EorawnZZ*BKb@AA2M=D+VG7c?Ho!tI|`FnOVq< z9QKzi?Q#c(U1sJ+KJyp(TE_QI>~lkr1^>0^Lg9%-e@DM2;7*5}!HM9MbLJQqcBaQ; N^NCN*jl5Fa@Gm{F1!w>O delta 1975 zcmZwITWl0n9LMp0?}ddH7urI_I^eDpO3Svebi1{-v=ju2#TE!g2q8^r&`P&eDJpTKrn#@H5h}UG29XjlK5Z{TlERNgzs->`e4FI|NEIaJ3DjE z|NPH%f5&(2?oZ+Dw~V%im`;42X|^4EbNHae^2}ynH9FXdQS8SuJc3j49P0Pq!I!(Eky}IKPQiIKI$q8P;I~&$l5C_|As06t4#7cTqEXfSO6!B;R^e|2ou6 z_o0^J5bF0I;4J(Ki}4S1F#j>L$v7Lcu>oDOXw4kV!BHR6|1 zGd>hJj4HmrumNkI@VC+m9~YNyRGWBIKM=i>nC0cWrVKSLGc2G$QbN*)W{0BihEcRb8$VgGp!3%E8CFex8tY*e2Vhi{{9{0VZ2T|*7vZ&Zy`Jng$1mBCB+3XYcXH`X>K7@NOi\n" "Language-Team: French (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/fr/)\n" "MIME-Version: 1.0\n" @@ -37,24 +37,24 @@ msgstr "En-tête « basic » non valide. Encodage base64 des informations d'iden msgid "Invalid username/password." msgstr "Nom d'utilisateur et/ou mot de passe non valide(s)." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Utilisateur inactif ou supprimé." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "En-tête « token » non valide. Informations d'identification non fournies." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "En-tête « token » non valide. Un token ne doit pas contenir d'espaces." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "En-tête « token » non valide. Un token ne doit pas contenir de caractères invalides." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Token non valide." @@ -112,241 +112,267 @@ msgstr "Type de média \"{media_type}\" non supporté." msgid "Request was throttled." msgstr "Requête ralentie." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Ce champ est obligatoire." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." -msgstr "Ce champ ne peut être null." +msgstr "Ce champ ne peut être nul." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" n'est pas un booléen valide." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Ce champ ne peut être vide." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Assurez-vous que ce champ comporte au plus {max_length} caractères." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Assurez-vous que ce champ comporte au moins {min_length} caractères." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Saisissez une adresse email valable." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Cette valeur ne satisfait pas le motif imposé." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _ et des traits d'union." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Saisissez une URL valide." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" n'est pas un UUID valide." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "Saisissez une adresse IPv4 ou IPv6 valide." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Un nombre entier valide est requis." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Assurez-vous que cette valeur est inférieure ou égale à {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Assurez-vous que cette valeur est supérieure ou égale à {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Chaîne de caractères trop longue." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Un nombre valide est requis." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Assurez-vous qu'il n'y a pas plus de {max_digits} chiffres au total." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Assurez-vous qu'il n'y a pas plus de {max_decimal_places} chiffres après la virgule." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Assurez-vous qu'il n'y a pas plus de {max_whole_digits} chiffres avant la virgule." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "La date + heure n'a pas le bon format. Utilisez un des formats suivants : {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Attendait une date + heure mais a reçu une date." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "La date n'a pas le bon format. Utilisez un des formats suivants : {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Attendait une date mais a reçu une date + heure." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "L'heure n'a pas le bon format. Utilisez un des formats suivants : {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "La durée n'a pas le bon format. Utilisez l'un des formats suivants: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" n'est pas un choix valide." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "Plus de {count} éléments..." -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Attendait une liste d'éléments mais a reçu \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "Cette sélection ne peut être vide." -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "\"{input}\" n'est pas un choix de chemin valide." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Aucun fichier n'a été soumis." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "La donnée soumise n'est pas un fichier. Vérifiez le type d'encodage du formulaire." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Le nom de fichier n'a pu être déterminé." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Le fichier soumis est vide." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Assurez-vous que le nom de fichier comporte au plus {max_length} caractères (il en comporte {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Transférez une image valide. Le fichier que vous avez transféré n'est pas une image, ou il est corrompu." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "Cette liste ne peut pas être vide." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Attendait un dictionnaire d'éléments mais a reçu \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "La valeur doit être un JSON valide." + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "Envoyer" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Page \"{page_number}\" non valide : {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Curseur non valide" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Clé primaire \"{pk_value}\" non valide - l'objet n'existe pas." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Type incorrect. Attendait une clé primaire, a reçu {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Lien non valide : pas d'URL correspondante." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Lien non valide : URL correspondante incorrecte." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Lien non valide : l'objet n'existe pas." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Type incorrect. Attendait une URL, a reçu {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "L'object avec {slug_name}={value} n'existe pas." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Valeur non valide." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Donnée non valide. Attendait un dictionnaire, a reçu {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "Filtres" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "Filtres de champ" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "Ordre" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "Recherche" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/fr_CA/LC_MESSAGES/django.mo b/rest_framework/locale/fr_CA/LC_MESSAGES/django.mo index 4f1c6c5a54d2015a623aa16ca719cb0c2ee25075..eb0b496dbe39cfc698a45415b04692e5e6e72255 100644 GIT binary patch delta 40 qcmeBY>1UZRiO1UZRiO;}N*T_)8(7?*nRNKI4;sPmdh=_rOm8sdrqh5>v(DMpE diff --git a/rest_framework/locale/fr_CA/LC_MESSAGES/django.po b/rest_framework/locale/fr_CA/LC_MESSAGES/django.po index 11ec107eab0..62a559dc56d 100644 --- a/rest_framework/locale/fr_CA/LC_MESSAGES/django.po +++ b/rest_framework/locale/fr_CA/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: French (Canada) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/fr_CA/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/gl/LC_MESSAGES/django.mo b/rest_framework/locale/gl/LC_MESSAGES/django.mo index 7446c524a616e0ce5c85ff6ba8bcd3a4ef5292a8..b8c3db3045fc5b4dda9854bbe77e7ce09310e5c9 100644 GIT binary patch delta 40 qcmZo>X=a%)iOX=a%)iO;}N*T_)8(7?*nRNKI4;sPmdh=_rOm8sdrqjrn{%`*xc diff --git a/rest_framework/locale/gl/LC_MESSAGES/django.po b/rest_framework/locale/gl/LC_MESSAGES/django.po index 526f8d706f5..f7e11d4d1f5 100644 --- a/rest_framework/locale/gl/LC_MESSAGES/django.po +++ b/rest_framework/locale/gl/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Galician (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/gl/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/gl_ES/LC_MESSAGES/django.mo b/rest_framework/locale/gl_ES/LC_MESSAGES/django.mo index 3bce3c307f9381f0a8596c5530d5114964c8596d..0e5a00ac0b310b974fe6c52fac423d96ee92527f 100644 GIT binary patch delta 41 rcmbQsI+u0AM?OO%T?2CkLklZYV{HS&iT|azp(5s1rly-!7%Le8@%aj@ delta 41 scmbQsI+u0AM?M2fT_ZyULjx;QQ*8sIiT|azAtDAAR;Ff~RTwK70rBMutN;K2 diff --git a/rest_framework/locale/gl_ES/LC_MESSAGES/django.po b/rest_framework/locale/gl_ES/LC_MESSAGES/django.po index c34d3952305..363d4946305 100644 --- a/rest_framework/locale/gl_ES/LC_MESSAGES/django.po +++ b/rest_framework/locale/gl_ES/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Galician (Spain) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/gl_ES/)\n" "MIME-Version: 1.0\n" @@ -34,24 +34,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -109,241 +109,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Valor non válido." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/he_IL/LC_MESSAGES/django.mo b/rest_framework/locale/he_IL/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..53ecccd1e9183668dd55954698190ac1a59165e1 GIT binary patch literal 528 zcmZut!A|2a5Cy?0N6s7ui9;)xCh4l8xD+8u5tUj|mF$WeGR-tKq;_`fHtmP(uW{UO zS*NVZg(p3EY`^jIo4-egfA&1~J&!$4Jr6w3Ju9?5Km6sTUn|WHV>WLzbvQ`z7qL}F z3%GleIx{foKP50@xuDYUdoZEGu)~qfREoFD%wl2$1mnj9drZ>#R=ksr1T>?#g>e(3 z3y9mI_2VpxqsR+!LMv5Se51P%t=3uO5e%hun6T6~m(H+&XSq_u@W`q8z1+an+I&_w zxzc8(WMgU;*S<|>OPLWSBo_i6=#{C2+Q71;ybiUwbA<@QvMd{}dR)zDU3G@(HZ3xF z+g)0WzdsN2|2E;AUIxRk9*hQ~{@3W@MilgncBFlVP2q>(Xzjuxmr8eFI+tw8b$=%J z*#6R0-\n" +"Language-Team: Hebrew (Israel) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/he_IL/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he_IL\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: authentication.py:72 +msgid "Invalid basic header. No credentials provided." +msgstr "" + +#: authentication.py:75 +msgid "Invalid basic header. Credentials string should not contain spaces." +msgstr "" + +#: authentication.py:81 +msgid "Invalid basic header. Credentials not correctly base64 encoded." +msgstr "" + +#: authentication.py:98 +msgid "Invalid username/password." +msgstr "" + +#: authentication.py:101 authentication.py:188 +msgid "User inactive or deleted." +msgstr "" + +#: authentication.py:167 +msgid "Invalid token header. No credentials provided." +msgstr "" + +#: authentication.py:170 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" + +#: authentication.py:176 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" + +#: authentication.py:185 +msgid "Invalid token." +msgstr "" + +#: authtoken/serializers.py:20 +msgid "User account is disabled." +msgstr "" + +#: authtoken/serializers.py:23 +msgid "Unable to log in with provided credentials." +msgstr "" + +#: authtoken/serializers.py:26 +msgid "Must include \"username\" and \"password\"." +msgstr "" + +#: exceptions.py:49 +msgid "A server error occurred." +msgstr "" + +#: exceptions.py:84 +msgid "Malformed request." +msgstr "" + +#: exceptions.py:89 +msgid "Incorrect authentication credentials." +msgstr "" + +#: exceptions.py:94 +msgid "Authentication credentials were not provided." +msgstr "" + +#: exceptions.py:99 +msgid "You do not have permission to perform this action." +msgstr "" + +#: exceptions.py:104 views.py:81 +msgid "Not found." +msgstr "" + +#: exceptions.py:109 +#, python-brace-format +msgid "Method \"{method}\" not allowed." +msgstr "" + +#: exceptions.py:120 +msgid "Could not satisfy the request Accept header." +msgstr "" + +#: exceptions.py:132 +#, python-brace-format +msgid "Unsupported media type \"{media_type}\" in request." +msgstr "" + +#: exceptions.py:145 +msgid "Request was throttled." +msgstr "" + +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 +#: validators.py:162 +msgid "This field is required." +msgstr "" + +#: fields.py:267 +msgid "This field may not be null." +msgstr "" + +#: fields.py:603 fields.py:634 +#, python-brace-format +msgid "\"{input}\" is not a valid boolean." +msgstr "" + +#: fields.py:669 +msgid "This field may not be blank." +msgstr "" + +#: fields.py:670 fields.py:1656 +#, python-brace-format +msgid "Ensure this field has no more than {max_length} characters." +msgstr "" + +#: fields.py:671 +#, python-brace-format +msgid "Ensure this field has at least {min_length} characters." +msgstr "" + +#: fields.py:708 +msgid "Enter a valid email address." +msgstr "" + +#: fields.py:719 +msgid "This value does not match the required pattern." +msgstr "" + +#: fields.py:730 +msgid "" +"Enter a valid \"slug\" consisting of letters, numbers, underscores or " +"hyphens." +msgstr "" + +#: fields.py:742 +msgid "Enter a valid URL." +msgstr "" + +#: fields.py:755 +#, python-brace-format +msgid "\"{value}\" is not a valid UUID." +msgstr "" + +#: fields.py:791 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "" + +#: fields.py:816 +msgid "A valid integer is required." +msgstr "" + +#: fields.py:817 fields.py:852 fields.py:885 +#, python-brace-format +msgid "Ensure this value is less than or equal to {max_value}." +msgstr "" + +#: fields.py:818 fields.py:853 fields.py:886 +#, python-brace-format +msgid "Ensure this value is greater than or equal to {min_value}." +msgstr "" + +#: fields.py:819 fields.py:854 fields.py:890 +msgid "String value too large." +msgstr "" + +#: fields.py:851 fields.py:884 +msgid "A valid number is required." +msgstr "" + +#: fields.py:887 +#, python-brace-format +msgid "Ensure that there are no more than {max_digits} digits in total." +msgstr "" + +#: fields.py:888 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_decimal_places} decimal places." +msgstr "" + +#: fields.py:889 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_whole_digits} digits before the " +"decimal point." +msgstr "" + +#: fields.py:1004 +#, python-brace-format +msgid "Datetime has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1005 +msgid "Expected a datetime but got a date." +msgstr "" + +#: fields.py:1079 +#, python-brace-format +msgid "Date has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1080 +msgid "Expected a date but got a datetime." +msgstr "" + +#: fields.py:1148 +#, python-brace-format +msgid "Time has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1207 +#, python-brace-format +msgid "Duration has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1232 fields.py:1281 +#, python-brace-format +msgid "\"{input}\" is not a valid choice." +msgstr "" + +#: fields.py:1235 relations.py:62 relations.py:431 +#, python-brace-format +msgid "More than {count} items..." +msgstr "" + +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 +#, python-brace-format +msgid "Expected a list of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1283 +msgid "This selection may not be empty." +msgstr "" + +#: fields.py:1320 +#, python-brace-format +msgid "\"{input}\" is not a valid path choice." +msgstr "" + +#: fields.py:1339 +msgid "No file was submitted." +msgstr "" + +#: fields.py:1340 +msgid "" +"The submitted data was not a file. Check the encoding type on the form." +msgstr "" + +#: fields.py:1341 +msgid "No filename could be determined." +msgstr "" + +#: fields.py:1342 +msgid "The submitted file is empty." +msgstr "" + +#: fields.py:1343 +#, python-brace-format +msgid "" +"Ensure this filename has at most {max_length} characters (it has {length})." +msgstr "" + +#: fields.py:1391 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: fields.py:1430 relations.py:428 serializers.py:521 +msgid "This list may not be empty." +msgstr "" + +#: fields.py:1483 +#, python-brace-format +msgid "Expected a dictionary of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 +#, python-brace-format +msgid "Invalid page \"{page_number}\": {message}." +msgstr "" + +#: pagination.py:407 +msgid "Invalid cursor" +msgstr "" + +#: relations.py:196 +#, python-brace-format +msgid "Invalid pk \"{pk_value}\" - object does not exist." +msgstr "" + +#: relations.py:197 +#, python-brace-format +msgid "Incorrect type. Expected pk value, received {data_type}." +msgstr "" + +#: relations.py:229 +msgid "Invalid hyperlink - No URL match." +msgstr "" + +#: relations.py:230 +msgid "Invalid hyperlink - Incorrect URL match." +msgstr "" + +#: relations.py:231 +msgid "Invalid hyperlink - Object does not exist." +msgstr "" + +#: relations.py:232 +#, python-brace-format +msgid "Incorrect type. Expected URL string, received {data_type}." +msgstr "" + +#: relations.py:391 +#, python-brace-format +msgid "Object with {slug_name}={value} does not exist." +msgstr "" + +#: relations.py:392 +msgid "Invalid value." +msgstr "" + +#: serializers.py:326 +#, python-brace-format +msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "" + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + +#: templates/rest_framework/horizontal/radio.html:2 +#: templates/rest_framework/inline/radio.html:2 +#: templates/rest_framework/vertical/radio.html:2 +msgid "None" +msgstr "" + +#: templates/rest_framework/horizontal/select_multiple.html:2 +#: templates/rest_framework/inline/select_multiple.html:2 +#: templates/rest_framework/vertical/select_multiple.html:2 +msgid "No items to select." +msgstr "" + +#: validators.py:24 +msgid "This field must be unique." +msgstr "" + +#: validators.py:78 +#, python-brace-format +msgid "The fields {field_names} must make a unique set." +msgstr "" + +#: validators.py:226 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" date." +msgstr "" + +#: validators.py:241 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" month." +msgstr "" + +#: validators.py:254 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" year." +msgstr "" + +#: versioning.py:42 +msgid "Invalid version in \"Accept\" header." +msgstr "" + +#: versioning.py:73 versioning.py:115 +msgid "Invalid version in URL path." +msgstr "" + +#: versioning.py:144 +msgid "Invalid version in hostname." +msgstr "" + +#: versioning.py:166 +msgid "Invalid version in query parameter." +msgstr "" + +#: views.py:88 +msgid "Permission denied." +msgstr "" diff --git a/rest_framework/locale/hu/LC_MESSAGES/django.mo b/rest_framework/locale/hu/LC_MESSAGES/django.mo index 79f7c7329c3eca4e9496a981a0345c1edcfd8aaf..a35f73215aa61525aa091d4b18b5df07ae899836 100644 GIT binary patch delta 64 zcmeD2=<(RFO~}~LNY}tz!O+6W)L7fV(7=Ezz+X2gwJftZGe1w)C9x#cO2Np$&{P+y O&fLn>bn{CgWkCQ\n" "Language-Team: Hungarian (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/hu/)\n" "MIME-Version: 1.0\n" @@ -34,24 +34,24 @@ msgstr "Érvénytelen basic fejlécmező. Az azonosítók base64 kódolása nem msgid "Invalid username/password." msgstr "Érvénytelen felhasználónév/jelszó." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "A felhasználó nincs aktiválva vagy törölve lett." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Érvénytelen token fejlécmező. Nem voltak megadva azonosítók." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Érvénytelen token fejlécmező. A token karakterlánc nem tartalmazhat szóközöket." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Érvénytelen token." @@ -109,241 +109,267 @@ msgstr "Nem támogatott média típus \"{media_type}\" a kérésben." msgid "Request was throttled." msgstr "A kérés korlátozva lett." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Ennek a mezőnek a megadása kötelező." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Ez a mező nem lehet null értékű." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "Az \"{input}\" nem egy érvényes logikai érték." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Ez a mező nem lehet üres." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Bizonyosodjon meg arról, hogy ez a mező legfeljebb {max_length} karakterből áll." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Bizonyosodjon meg arról, hogy ez a mező legalább {min_length} karakterből áll." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Adjon meg egy érvényes e-mail címet!" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Ez az érték nem illeszkedik a szükséges mintázatra." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Az URL barát cím csak betűket, számokat, aláhúzásokat és kötőjeleket tartalmazhat." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Adjon meg egy érvényes URL-t!" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Egy érvényes egész szám megadása szükséges." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Bizonyosodjon meg arról, hogy ez az érték legfeljebb {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Bizonyosodjon meg arról, hogy ez az érték legalább {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "A karakterlánc túl hosszú." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Egy érvényes szám megadása szükséges." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Bizonyosodjon meg arról, hogy a számjegyek száma összesen legfeljebb {max_digits}." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Bizonyosodjon meg arról, hogy a tizedes tört törtrészében levő számjegyek száma összesen legfeljebb {max_decimal_places}." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Bizonyosodjon meg arról, hogy a tizedes tört egész részében levő számjegyek száma összesen legfeljebb {max_whole_digits}." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "A dátum formátuma hibás. Használja ezek valamelyikét helyette: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Időt is tartalmazó dátum helyett egy időt nem tartalmazó dátum lett elküldve." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "A dátum formátuma hibás. Használja ezek valamelyikét helyette: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Időt nem tartalmazó dátum helyett egy időt is tartalmazó dátum lett elküldve." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Az idő formátuma hibás. Használja ezek valamelyikét helyette: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "Az \"{input}\" nem egy érvényes elem." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Elemek listája helyett \"{input_type}\" lett elküldve." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Semmilyen fájl sem került feltöltésre." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Az elküldött adat nem egy fájl volt. Ellenőrizze a kódolás típusát az űrlapon!" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "A fájlnév nem megállapítható." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "A küldött fájl üres." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Bizonyosodjon meg arról, hogy a fájlnév legfeljebb {max_length} karakterből áll (jelenlegi hossza: {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Töltsön fel egy érvényes képfájlt! A feltöltött fájl nem kép volt, vagy megsérült." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Érvénytelen oldal \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Érvénytelen pk \"{pk_value}\" - az objektum nem létezik." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Helytelen típus. pk érték helyett {data_type} lett elküldve." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Érvénytelen link - Nem illeszkedő URL." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Érvénytelen link. - Eltérő URL illeszkedés." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Érvénytelen link - Az objektum nem létezik." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Helytelen típus. URL karakterlánc helyett {data_type} lett elküldve." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Nem létezik olyan objektum, amelynél {slug_name}={value}." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Érvénytelen érték." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Érvénytelen adat. Egy dictionary helyett {datatype} lett elküldve." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/id/LC_MESSAGES/django.mo b/rest_framework/locale/id/LC_MESSAGES/django.mo index 0324ef5414254039b5a7cde12434e6c0a4cde9e8..ac3fe2c0fc77def64903095adf7d6c8acb8a178e 100644 GIT binary patch delta 40 rcmeyz{EvCUBtAnUT?2CkLklZYV{HS&i3_B-p(5s1rluQ@S~3Cv@@oqU delta 40 scmeyz{EvCUBt8R6T_ZyULjx;QQ*8sIi3_B-AtDAAR;Fefk6JPU0P\n" "Language-Team: Indonesian (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/id/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/it/LC_MESSAGES/django.mo b/rest_framework/locale/it/LC_MESSAGES/django.mo index 6e7625826fe760f69c81c683f58112faf59f5d52..fde0bde4669aec8382323aaa8ffc27630d30b4b0 100644 GIT binary patch delta 64 zcmZ4CwZdzIwurHzk*E<|*Qvv`y5)oDa delta 64 zcmZ4CwZdzIwurHTrLK{of}w$xsj0Ssk%0kMfWK}~YFTD+W`3ToOJYf?m4cChp{XuJ Poq>gwsoCZ@ky8QyJG>EA diff --git a/rest_framework/locale/it/LC_MESSAGES/django.po b/rest_framework/locale/it/LC_MESSAGES/django.po index da519aa59ed..4889f61b785 100644 --- a/rest_framework/locale/it/LC_MESSAGES/django.po +++ b/rest_framework/locale/it/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Italian (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/it/)\n" "MIME-Version: 1.0\n" @@ -37,24 +37,24 @@ msgstr "Credenziali non correttamente codificate in base64." msgid "Invalid username/password." msgstr "Nome utente/password non validi" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Utente inattivo o eliminato." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Header del token non valido. Credenziali non fornite." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Header del token non valido. Il contenuto del token non dovrebbe contenere spazi." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Token invalido." @@ -112,241 +112,267 @@ msgstr "Tipo di media \"{media_type}\"non supportato." msgid "Request was throttled." msgstr "La richiesta è stata limitata (throttled)." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Campo obbligatorio." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Il campo non può essere nullo." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" non è un valido valore booleano." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Questo campo non può essere omesso." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Assicurati che questo campo non abbia più di {max_length} caratteri." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Assicurati che questo campo abbia almeno {min_length} caratteri." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Inserisci un indirizzo email valido." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Questo valore non corrisponde alla sequenza richiesta." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Immetti uno \"slug\" valido che consista di lettere, numeri, underscore o trattini." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Inserisci un URL valido" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" non è un UUID valido." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "È richiesto un numero intero valido." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Assicurati che il valore sia minore o uguale a {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Assicurati che il valore sia maggiore o uguale a {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Stringa troppo lunga." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "È richiesto un numero valido." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Assicurati che non ci siano più di {max_digits} cifre in totale." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Assicurati che non ci siano più di {max_decimal_places} cifre decimali." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Assicurati che non ci siano più di {max_whole_digits} cifre prima del separatore decimale." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "L'oggetto di tipo datetime è in un formato errato. Usa uno dei seguenti formati: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Atteso un oggetto di tipo datetime ma l'oggetto ricevuto è di tipo date." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "La data è in un formato errato. Usa uno dei seguenti formati: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Atteso un oggetto di tipo date ma l'oggetto ricevuto è di tipo datetime." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "L'orario ha un formato errato. Usa uno dei seguenti formati: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "La durata è in un formato errato. Usa uno dei seguenti formati: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" non è una scelta valida." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Attesa una lista di oggetti ma l'oggetto ricevuto è di tipo \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Non è stato inviato alcun file." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "I dati inviati non corrispondono ad un file. Si prega di controllare il tipo di codifica nel form." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Il nome del file non può essere determinato." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Il file inviato è vuoto." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Assicurati che il nome del file abbia, al più, {max_length} caratteri (attualmente ne ha {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Invia un'immagine valida. Il file che hai inviato non era un'immagine o era corrotto." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Era atteso un dizionario di oggetti ma il dato ricevuto è di tipo \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Pagina \"{page_number}\" non valida: {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Cursore non valido" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Pk \"{pk_value}\" non valido - l'oggetto non esiste." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Tipo non corretto. Era atteso un valore pk, ma è stato ricevuto {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Collegamento non valido - Nessuna corrispondenza di URL." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Collegamento non valido - Corrispondenza di URL non corretta." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Collegamento non valido - L'oggetto non esiste." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Tipo non corretto. Era attesa una stringa URL, ma è stato ricevuto {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "L'oggetto con {slug_name}={value} non esiste." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Valore non valido." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Dati non validi. Era atteso un dizionario, ma si è ricevuto {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/ja/LC_MESSAGES/django.mo b/rest_framework/locale/ja/LC_MESSAGES/django.mo index 9f92c5652b1aafd5df871322765262c2f6d050e7..4a583925ea55167ec2eb31cbe8b3ef97729c5aee 100644 GIT binary patch delta 64 zcmX>baW-N@im0)nk*E`L8+r$84G7=&H delta 64 zcmX>baW-N@im0)HrLK{of}w$xsj0Ssk%0kMfWK}~YFTD+W`3ToOJYf?m4cChp{XuJ Poq>gwsoCb~qT9p(V%!oU diff --git a/rest_framework/locale/ja/LC_MESSAGES/django.po b/rest_framework/locale/ja/LC_MESSAGES/django.po index c8148e269b7..ea9ba17280e 100644 --- a/rest_framework/locale/ja/LC_MESSAGES/django.po +++ b/rest_framework/locale/ja/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Japanese (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/ja/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "不正な基本ヘッダです。認証情報がBASE64で正しくエン msgid "Invalid username/password." msgstr "ユーザ名かパスワードが違います。" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "ユーザが無効か削除されています。" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "不正なトークンヘッダです。認証情報が含まれていません。" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "不正なトークンヘッダです。トークン文字列に空白を含めてはいけません。" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "不正なトークンヘッダです。トークン文字列に不正な文字を含めてはいけません。" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "不正なトークンです。" @@ -108,241 +108,267 @@ msgstr "リクエストのメディアタイプ \"{media_type}\" はサポート msgid "Request was throttled." msgstr "リクエストの処理は絞られました。" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "この項目は必須です。" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "この項目はnullにできません。" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" は有効なブーリアンではありません。" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "この項目は空にできません。" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "この項目が{max_length}文字より長くならないようにしてください。" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "この項目は少なくとも{min_length}文字以上にしてください。" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "有効なメールアドレスを入力してください。" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "この値は所要のパターンにマッチしません。" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "文字、数字、アンダースコア、またはハイフンから成る有効な \"slug\" を入力してください。" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "有効なURLを入力してください。" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" は有効なUUIDではありません。" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "有効なIPv4またはIPv6アドレスを入力してください。" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "有効な整数を入力してください。" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "この値は{max_value}以下にしてください。" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "この値は{min_value}以上にしてください。" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "文字列が長過ぎます。" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "有効な数値を入力してください。" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "合計で最大{max_digits}桁以下になるようにしてください。" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "小数点以下の桁数を{max_decimal_places}を超えないようにしてください。" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "整数部の桁数を{max_whole_digits}を超えないようにしてください。" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "日時の形式が違います。以下のどれかの形式にしてください: {format}。" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "日付ではなく日時を入力してください。" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "日付の形式が違います。以下のどれかの形式にしてください: {format}。" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "日時ではなく日付を入力してください。" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "時刻の形式が違います。以下のどれかの形式にしてください: {format}。" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "機関の形式が違います。以下のどれかの形式にしてください: {format}。" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\"は有効な選択肢ではありません。" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "\"{input_type}\" 型のデータではなく項目のリストを入力してください。" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "空でない項目を選択してください。" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "\"{input}\"は有効なパスの選択肢ではありません。" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "ファイルが添付されていません。" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "添付されたデータはファイルではありません。フォームのエンコーディングタイプを確認してください。" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "ファイル名が取得できませんでした。" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "添付ファイルの中身が空でした。" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "ファイル名は最大{max_length}文字にしてください({length}文字でした)。" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "有効な画像をアップロードしてください。アップロードされたファイルは画像でないか壊れた画像です。" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "リストは空ではいけません。" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "\"{input_type}\" 型のデータではなく項目の辞書を入力してください。" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "ページ番号 \"{page_number}\" は不正です: {message}。" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "カーソルが不正です。" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "主キー \"{pk_value}\" は不正です - データが存在しません。" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "不正な型です。{data_type} 型ではなく主キーの値を入力してください。" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "ハイパーリンクが不正です - URLにマッチしません。" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "ハイパーリンクが不正です - 不正なURLにマッチします。" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "ハイパーリンクが不正です - リンク先が存在しません。" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "不正なデータ型です。{data_type} 型ではなくURL文字列を入力してください。" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "{slug_name}={value} のデータが存在しません。" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "不正な値です。" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "不正なデータです。{datatype} 型ではなく辞書を入力してください。" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/ko_KR/LC_MESSAGES/django.mo b/rest_framework/locale/ko_KR/LC_MESSAGES/django.mo index 8e97250aa5ab595dde0a13441fdf37f75fa27a55..f9a7261f8b404f226268ff099443cefbc8bf6c49 100644 GIT binary patch delta 64 zcmZ4Dzr=sTZy{qtBV7Y?1w#ufQ)6udLjwb@0Ds+})UwRt%=|oEm&B4(D+MD1LsMO- OI&&*i)6IIqWg-A-n-Qe| delta 64 zcmZ4Dzr=sTZy{p?OI;&F1w#WXQ&VjNBLf4j0Ds+})UwRt%=|oEm&B4(D+MD1LsMOd PIs*$UQ?t!_!et@=YDE#H diff --git a/rest_framework/locale/ko_KR/LC_MESSAGES/django.po b/rest_framework/locale/ko_KR/LC_MESSAGES/django.po index 87388145d79..901907c866e 100644 --- a/rest_framework/locale/ko_KR/LC_MESSAGES/django.po +++ b/rest_framework/locale/ko_KR/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Korean (Korea) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/ko_KR/)\n" "MIME-Version: 1.0\n" @@ -34,24 +34,24 @@ msgstr "기본 헤더(basic header)가 유효하지 않습니다. 인증데이 msgid "Invalid username/password." msgstr "아이디/비밀번호가 유효하지 않습니다." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "계정이 중지되었거나 삭제되었습니다." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "토큰 헤더가 유효하지 않습니다. 인증데이터(credentials)가 제공되지 않았습니다." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "토큰 헤더가 유효하지 않습니다. 토큰 문자열은 빈칸(spaces)를 포함하지 않아야 합니다." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "토큰 헤더가 유효하지 않습니다. 토큰 문자열은 유효하지 않은 문자를 포함하지 않아야 합니다." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "토큰이 유효하지 않습니다." @@ -109,241 +109,267 @@ msgstr "요청된 \"{media_type}\"가 지원되지 않는 미디어 형태입니 msgid "Request was throttled." msgstr "요청이 지연(throttled)되었습니다." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "이 항목을 채워주십시오." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "이 칸은 null일 수 없습니다." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\"이 유효하지 않은 부울(boolean)입니다." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "이 칸은 blank일 수 없습니다." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "이 칸이 글자 수가 {max_length} 이하인지 확인하십시오." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "이 칸이 글자 수가 적어도 {min_length} 이상인지 확인하십시오." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "유효한 이메일 주소를 입력하십시오." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "형식에 맞지 않는 값입니다." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "문자, 숫자, 밑줄( _ ) 또는 하이픈( - )으로 이루어진 유효한 \"slug\"를 입력하십시오." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "유효한 URL을 입력하십시오." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\"가 유효하지 않은 UUID 입니다." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "유효한 IPv4 또는 IPv6 주소를 입력하십시오." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "유효한 정수(integer)를 넣어주세요." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "이 값이 {max_value}보다 작거나 같은지 확인하십시오." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "이 값이 {min_value}보다 크거나 같은지 확인하십시오." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "문자열 값이 너무 큽니다." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "유효한 숫자를 넣어주세요." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "전체 숫자(digits)가 {max_digits} 이하인지 확인하십시오." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "소수점 자릿수가 {max_decimal_places} 이하인지 확인하십시오." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "소수점 자리 앞에 숫자(digits)가 {max_whole_digits} 이하인지 확인하십시오." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Datetime의 포멧이 잘못되었습니다. 이 형식들 중 한가지를 사용하세요: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "예상된 datatime 대신 date를 받았습니다." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Date의 포멧이 잘못되었습니다. 이 형식들 중 한가지를 사용하세요: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "예상된 date 대신 datetime을 받았습니다." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Time의 포멧이 잘못되었습니다. 이 형식들 중 한가지를 사용하세요: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\"이 유효하지 않은 선택(choice)입니다." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "아이템 리스트가 예상되었으나 \"{input_type}\"를 받았습니다." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "파일이 제출되지 않았습니다." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "제출된 데이터는 파일이 아닙니다. 제출된 서식의 인코딩 형식을 확인하세요." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "파일명을 알 수 없습니다." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "제출된 파일이 비어있습니다." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "이 파일명의 글자수가 최대 {max_length}를 넘지 않는지 확인하십시오. (이것은 {length}가 있습니다)." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "유효한 이미지 파일을 업로드 하십시오. 업로드 하신 파일은 이미지 파일이 아니거나 손상된 이미지 파일입니다." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "아이템 딕셔너리가 예상되었으나 \"{input_type}\" 타입을 받았습니다." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "유효하지 않은 page \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "커서(cursor)가 유효하지 않습니다." -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "유효하지 않은 pk \"{pk_value}\" - 객체가 존재하지 않습니다." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "잘못된 형식입니다. pk 값 대신 {data_type}를 받았습니다." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "유효하지 않은 하이퍼링크 - 일치하는 URL이 없습니다." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "유효하지 않은 하이퍼링크 - URL이 일치하지 않습니다." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "유효하지 않은 하이퍼링크 - 객체가 존재하지 않습니다." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "잘못된 형식입니다. URL 문자열을 예상했으나 {data_type}을 받았습니다." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "{slug_name}={value} 객체가 존재하지 않습니다." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "값이 유효하지 않습니다." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "유효하지 않은 데이터. 딕셔너리(dictionary)대신 {datatype}를 받았습니다." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/mk/LC_MESSAGES/django.mo b/rest_framework/locale/mk/LC_MESSAGES/django.mo index a788d7fe4bd613bf1789a337e53617e251c14609..64ef673cf5ab76c91f523b4cc26f5a4d3bd7ccd6 100644 GIT binary patch delta 64 zcmewn{3Ce7HX&m}BV7Y?1w#ufQ)6udLjwb@0Ds+})UwRt%=|oEm&B4(D+MD1LsMO- OI&&*i)6Fl1_{9N;8WLsz delta 64 zcmewn{3Ce7HX&mJOI;&F1w#WXQ&VjNBLf4j0Ds+})UwRt%=|oEm&B4(D+MD1LsMOd PIs*$UQ?t!4h4{q*hr|+Q diff --git a/rest_framework/locale/mk/LC_MESSAGES/django.po b/rest_framework/locale/mk/LC_MESSAGES/django.po index b6655f58c33..554460c61a0 100644 --- a/rest_framework/locale/mk/LC_MESSAGES/django.po +++ b/rest_framework/locale/mk/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Macedonian (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/mk/)\n" "MIME-Version: 1.0\n" @@ -34,24 +34,24 @@ msgstr "Невалиден основен header. Податоците за ав msgid "Invalid username/password." msgstr "Невалидно корисничко име/лозинка." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Корисникот е деактивиран или избришан." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Невалиден токен header. Не се внесени податоци за најава." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Невалиден токен во header. Токенот не треба да содржи празни места." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Невалиден токен." @@ -109,241 +109,267 @@ msgstr "Media типот „{media_type}“ не е поддржан." msgid "Request was throttled." msgstr "Request-от е забранет заради ограничувања." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Ова поле е задолжително." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Ова поле не смее да биде недефинирано." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" не е валиден boolean." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Ова поле не смее да биде празно." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Ова поле не смее да има повеќе од {max_length} знаци." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Ова поле мора да има барем {min_length} знаци." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Внесете валидна email адреса." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Ова поле не е по правилната шема/барање." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Внесете валидно име што содржи букви, бројки, долни црти или црти." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Внесете валиден URL." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Задолжителен е валиден цел број." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Вредноста треба да биде помала или еднаква на {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Вредноста треба да биде поголема или еднаква на {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Вредноста е преголема." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Задолжителен е валиден број." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Не смее да има повеќе од {max_digits} цифри вкупно." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Не смее да има повеќе од {max_decimal_places} децимални места." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Не смее да има повеќе од {max_whole_digits} цифри пред децималната точка." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Датата и времето се со погрешен формат. Користете го овој формат: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Очекувано беше дата и време, а внесено беше само дата." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Датата е со погрешен формат. Користете го овој формат: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Очекувана беше дата, а внесени беа и дата и време." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Времето е со погрешен формат. Користете го овој формат: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "„{input}“ не е валиден избор." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Очекувана беше листа, а внесено беше „{input_type}“." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Ниеден фајл не е качен (upload-иран)." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Испратените податоци не се фајл. Проверете го encoding-от на формата." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Не може да се открие име на фајлот." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Качениот (upload-иран) фајл е празен." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Името на фајлот треба да има највеќе {max_length} знаци (а има {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Качете (upload-ирајте) валидна слика. Фајлот што го качивте не е валидна слика или е расипан." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Невалидна страна „{page_number}“: {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Невалиден pk „{pk_value}“ - објектот не постои." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Неточен тип. Очекувано беше pk, а внесено {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Невалиден хиперлинк - не е внесен URL." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Невалиден хиперлинк - внесен е неправилен URL." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Невалиден хиперлинк - Објектот не постои." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Неточен тип. Очекувано беше URL, a внесено {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Објектот со {slug_name}={value} не постои." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Невалидна вредност." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Невалидни податоци. Очекуван беше dictionary, а внесен {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/nb/LC_MESSAGES/django.mo b/rest_framework/locale/nb/LC_MESSAGES/django.mo index 8bf83c6442c2e4c3d948937ecad82dd257705e64..56b7a969b10a76a0c3873834588c5530d9f93a4e 100644 GIT binary patch literal 9902 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 RuR>lL=bvINrB+4O{{``Vz)b)E delta 138 zcmZ4I+rwgUPl#nI0}wC*u?!Ha05LNV>i{tbSOD=Qprj>`2C0F8$s%G=dY8(*& diff --git a/rest_framework/locale/nb/LC_MESSAGES/django.po b/rest_framework/locale/nb/LC_MESSAGES/django.po index 6462590d2de..34b5271547e 100644 --- a/rest_framework/locale/nb/LC_MESSAGES/django.po +++ b/rest_framework/locale/nb/LC_MESSAGES/django.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Petter Kjelkenes , 2015 msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" -"Last-Translator: Xavier Ordoquy \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-08 15:34+0000\n" +"Last-Translator: Petter Kjelkenes \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/nb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,382 +20,408 @@ msgstr "" #: authentication.py:72 msgid "Invalid basic header. No credentials provided." -msgstr "" +msgstr "Ugyldig basic header. Ingen legitimasjon gitt." #: authentication.py:75 msgid "Invalid basic header. Credentials string should not contain spaces." -msgstr "" +msgstr "Ugylid basic header. Legitimasjonsstreng bør ikke inneholde mellomrom." #: authentication.py:81 msgid "Invalid basic header. Credentials not correctly base64 encoded." -msgstr "" +msgstr "Ugyldig basic header. Legitimasjonen ikke riktig Base64 kodet." #: authentication.py:98 msgid "Invalid username/password." -msgstr "" +msgstr "Ugyldig brukernavn eller passord." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." -msgstr "" +msgstr "Bruker inaktiv eller slettet." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." -msgstr "" +msgstr "Ugyldig token header. Ingen legitimasjon gitt." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." -msgstr "" +msgstr "Ugyldig token header. Token streng skal ikke inneholde mellomrom." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." -msgstr "" +msgstr "Ugyldig token header. Tokenstrengen skal ikke inneholde ugyldige tegn." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." -msgstr "" +msgstr "Ugyldig token." #: authtoken/serializers.py:20 msgid "User account is disabled." -msgstr "" +msgstr "Brukerkonto er deaktivert." #: authtoken/serializers.py:23 msgid "Unable to log in with provided credentials." -msgstr "" +msgstr "Kan ikke logge inn med gitt legitimasjon." #: authtoken/serializers.py:26 msgid "Must include \"username\" and \"password\"." -msgstr "" +msgstr "Må inkludere \"username\" og \"password\"." #: exceptions.py:49 msgid "A server error occurred." -msgstr "" +msgstr "En serverfeil skjedde." #: exceptions.py:84 msgid "Malformed request." -msgstr "" +msgstr "Misformet forespørsel." #: exceptions.py:89 msgid "Incorrect authentication credentials." -msgstr "" +msgstr "Ugyldig autentiseringsinformasjon." #: exceptions.py:94 msgid "Authentication credentials were not provided." -msgstr "" +msgstr "Manglende autentiseringsinformasjon." #: exceptions.py:99 msgid "You do not have permission to perform this action." -msgstr "" +msgstr "Du har ikke tilgang til å utføre denne handlingen." #: exceptions.py:104 views.py:81 msgid "Not found." -msgstr "" +msgstr "Ikke funnet." #: exceptions.py:109 #, python-brace-format msgid "Method \"{method}\" not allowed." -msgstr "" +msgstr "Metoden \"{method}\" ikke gyldig." #: exceptions.py:120 msgid "Could not satisfy the request Accept header." -msgstr "" +msgstr "Kunne ikke tilfredsstille request Accept header." #: exceptions.py:132 #, python-brace-format msgid "Unsupported media type \"{media_type}\" in request." -msgstr "" +msgstr "Ugyldig media type \"{media_type}\" i request." #: exceptions.py:145 msgid "Request was throttled." -msgstr "" +msgstr "Forespørselen ble strupet." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." -msgstr "" +msgstr "Dette feltet er påkrevd." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." -msgstr "" +msgstr "Dette feltet må ikke være tomt." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." -msgstr "" +msgstr "\"{input}\" er ikke en gyldig bolsk verdi." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." -msgstr "" +msgstr "Dette feltet må ikke være blankt." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." -msgstr "" +msgstr "Forsikre deg om at dette feltet ikke har mer enn {max_length} tegn." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." -msgstr "" +msgstr "Forsikre deg at dette feltet har minst {min_length} tegn." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." -msgstr "" +msgstr "Oppgi en gyldig epost-adresse." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." -msgstr "" +msgstr "Denne verdien samsvarer ikke med de påkrevde mønsteret." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." -msgstr "" +msgstr "Skriv inn en gyldig \"slug\" som består av bokstaver, tall, understrek eller bindestrek." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." -msgstr "" +msgstr "Skriv inn en gyldig URL." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." -msgstr "" +msgstr "\"{value}\" er ikke en gyldig UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." -msgstr "" +msgstr "Skriv inn en gyldig IPv4 eller IPv6-adresse." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." -msgstr "" +msgstr "En gyldig heltall er nødvendig." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." -msgstr "" +msgstr "Sikre denne verdien er mindre enn eller lik {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." -msgstr "" +msgstr "Sikre denne verdien er større enn eller lik {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." -msgstr "" +msgstr "Strengverdien for stor." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." -msgstr "" +msgstr "Et gyldig nummer er nødvendig." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." -msgstr "" +msgstr "Pass på at det ikke er flere enn {max_digits} siffer totalt." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." -msgstr "" +msgstr "Pass på at det ikke er flere enn {max_decimal_places} desimaler." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." -msgstr "" +msgstr "Pass på at det ikke er flere enn {max_whole_digits} siffer før komma." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." -msgstr "" +msgstr "Datetime har feil format. Bruk et av disse formatene i stedet: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." -msgstr "" +msgstr "Forventet en datetime, men fikk en date." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." -msgstr "" +msgstr "Dato har feil format. Bruk et av disse formatene i stedet: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." -msgstr "" +msgstr "Forventet en date, men fikk en datetime." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." -msgstr "" +msgstr "Tid har feil format. Bruk et av disse formatene i stedet: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." -msgstr "" +msgstr "Varighet har feil format. Bruk et av disse formatene i stedet: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." -msgstr "" +msgstr "\"{input}\" er ikke et gyldig valg." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." -msgstr "" +msgstr "Mer enn {count} elementer ..." -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." -msgstr "" +msgstr "Forventet en liste over elementer, men fikk type \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." -msgstr "" +msgstr "Dette valget kan ikke være tomt." -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." -msgstr "" +msgstr "\"{input}\" er ikke en gyldig bane valg." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." -msgstr "" +msgstr "Ingen fil ble sendt." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." -msgstr "" +msgstr "De innsendte data var ikke en fil. Kontroller kodingstypen på skjemaet." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." -msgstr "" +msgstr "Kunne ikke finne filnavn." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." -msgstr "" +msgstr "Den innsendte filen er tom." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." -msgstr "" +msgstr "Sikre dette filnavnet har på det meste {max_length} tegn (det har {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." -msgstr "" +msgstr "Last opp et gyldig bilde. Filen du lastet opp var enten ikke et bilde eller en ødelagt bilde." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." -msgstr "" +msgstr "Denne listen kan ikke være tom." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." -msgstr "" +msgstr "Forventet en dictionary av flere ting, men fikk typen \"{input_type}\"." + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "Verdien må være gyldig JSON." + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "Send inn" -#: pagination.py:192 +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." -msgstr "" +msgstr "Ugyldig side \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" -msgstr "" +msgstr "Ugyldig markør" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." -msgstr "" +msgstr "Ugyldig pk \"{pk_value}\" - objektet eksisterer ikke." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." -msgstr "" +msgstr "Feil type. Forventet pk verdi, fikk {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." -msgstr "" +msgstr "Ugyldig hyperkobling - No URL match." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." -msgstr "" +msgstr "Ugyldig hyperkobling - Incorrect URL match." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." -msgstr "" +msgstr "Ugyldig hyperkobling - Objektet eksisterer ikke." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." -msgstr "" +msgstr "Feil type. Forventet URL streng, fikk {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." -msgstr "" +msgstr "Objekt med {slug_name}={value} finnes ikke." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." -msgstr "" +msgstr "Ugyldig verdi." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." -msgstr "" +msgstr "Ugyldige data. Forventet en dicitonary, men fikk {datatype}." + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "Filtre" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "Feltfiltre" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "Sortering" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "Søk" #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 msgid "None" -msgstr "" +msgstr "Ingen" #: templates/rest_framework/horizontal/select_multiple.html:2 #: templates/rest_framework/inline/select_multiple.html:2 #: templates/rest_framework/vertical/select_multiple.html:2 msgid "No items to select." -msgstr "" +msgstr "Ingenting å velge." #: validators.py:24 msgid "This field must be unique." -msgstr "" +msgstr "Dette feltet må være unikt." #: validators.py:78 #, python-brace-format msgid "The fields {field_names} must make a unique set." -msgstr "" +msgstr "Feltene {field_names} må gjøre et unikt sett." #: validators.py:226 #, python-brace-format msgid "This field must be unique for the \"{date_field}\" date." -msgstr "" +msgstr "Dette feltet må være unikt for \"{date_field}\" dato." #: validators.py:241 #, python-brace-format msgid "This field must be unique for the \"{date_field}\" month." -msgstr "" +msgstr "Dette feltet må være unikt for \"{date_field}\" måned." #: validators.py:254 #, python-brace-format msgid "This field must be unique for the \"{date_field}\" year." -msgstr "" +msgstr "Dette feltet må være unikt for \"{date_field}\" år." #: versioning.py:42 msgid "Invalid version in \"Accept\" header." -msgstr "" +msgstr "Ugyldig versjon på \"Accept\" header." #: versioning.py:73 versioning.py:115 msgid "Invalid version in URL path." -msgstr "" +msgstr "Ugyldig versjon i URL-banen." #: versioning.py:144 msgid "Invalid version in hostname." -msgstr "" +msgstr "Ugyldig versjon i vertsnavn." #: versioning.py:166 msgid "Invalid version in query parameter." -msgstr "" +msgstr "Ugyldig versjon i søkeparameter." #: views.py:88 msgid "Permission denied." -msgstr "" +msgstr "Tillatelse avslått." diff --git a/rest_framework/locale/nl/LC_MESSAGES/django.mo b/rest_framework/locale/nl/LC_MESSAGES/django.mo index aedfef2c5ca0c6fcab0cd15c9e2eb9d8bc2d2bf7..7cb2a85ef4ecd0d9b1aed5e976094840cccca922 100644 GIT binary patch delta 64 zcmdn&vDssTwurHzk*E<|*tNZ{!nGtdT delta 64 zcmdn&vDssTwurHTrLK{of}w$xsj0Ssk%0kMfWK}~YFTD+W`3ToOJYf?m4cChp{XuJ Poq>gwsoCZ@k*oXwKtmC7 diff --git a/rest_framework/locale/nl/LC_MESSAGES/django.po b/rest_framework/locale/nl/LC_MESSAGES/django.po index 11d2c080e70..f53b6097c2c 100644 --- a/rest_framework/locale/nl/LC_MESSAGES/django.po +++ b/rest_framework/locale/nl/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Dutch (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/nl/)\n" "MIME-Version: 1.0\n" @@ -34,24 +34,24 @@ msgstr "Ongeldige basic header. login gegevens zijn niet correct base64 versleut msgid "Invalid username/password." msgstr "Ongeldige gebruikersnaam/wachtwoord." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Gebruiker inactief of verwijderd." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Ongeldige token header. Geen login gegevens opgegeven" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Ongeldige token header. Token kan geen spaties bevatten." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Ongeldige token." @@ -109,241 +109,267 @@ msgstr "Ongeldig media type \"{media_type}\" in aanvraag." msgid "Request was throttled." msgstr "Aanvraag was verstikt." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Dit veld is verplicht." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Dit veld mag niet leeg zijn." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" is een ongeldige boolean waarde." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Dit veld mag niet leeg zijn." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Zorg ervoor dat dit veld niet meer dan {max_length} karakters bevat." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Zorg ervoor dat dit veld minimaal {min_length} karakters bevat." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Voer een geldig e-mailadres in." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Deze waarde voldoet niet aan het benodigde formaat." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Voer een geldige \"slug\" in bestaande uit letters, cijfers, underscore of streepjes." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Voer een geldige URL in." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" in een ongeldige UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Een geldig getal is vereist." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Zorg ervoor dat deze waarde minder of gelijk is aan {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Zorg ervoor dat deze waarde groter of gelijk is aan {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Tekstuele waarde is te lang." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Een geldig nummer is verplicht." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Zorg ervoor dat er niet meer dan {max_digits} getallen zijn in totaal." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "zorg ervoor dat er niet meer dan {max_decimal_places} getallen achter de komma zijn." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Zorg ervoor dat er niet meer dan {max_whole_digits} getallen voor de komma zijn." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Datetime heeft een ongeldig formaat, gebruik 1 van de volgende formaten: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Verwacht een datetime, in plaats kreeg een date." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Date heeft het verkeerde formaat, gebruik 1 van de onderstaande formaten: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Verwacht een date, in plaats kreeg een datetime" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Time heeft het verkeerde formaat, gebruik 1 van onderstaande formaten: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "Tijdsduur heeft een verkeerd formaat, gebruik 1 van onderstaande formaten: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" is een ongeldige keuze." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Verwacht een lijst met items, kreeg een type \"{input_type}\" in plaats." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Er is geen bestand opgestuurd" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "De verstuurde data was geen bestand. Controleer de encoding type op het formulier." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Bestandsnaam kan niet vastgesteld worden." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Het verstuurde bestand is leeg." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Zorg ervoor dat deze bestandsnaam minstens {max_length} karakters heeft (momenteel {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Upload een geldige afbeelding, de geüploade afbeelding is geen afbeelding of mogelijk corrupt geraakt," -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Verwacht een dictionary van items, in plaats kreeg een type \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Ongeldige pagina \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Ongeldige cursor." -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Ongeldige pk \"{pk_value}\" - object bestaat niet." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Ongeldig type. Verwacht een pk waarde, ontving {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Ongeldige hyperlink - Geen overeenkomende URL." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Ongeldige hyperlink - Ongeldige URL" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Ongeldige hyperlink - Object bestaat niet." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Ongeldig type. Verwacht een URL, ontving {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Object met {slug_name}={value} bestaat niet." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Ongeldige waarde." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Ongeldige data. Verwacht een dictionary, kreeg een {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/nn/LC_MESSAGES/django.mo b/rest_framework/locale/nn/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..fd5f5ec26a9568288476ae9a57dea07605386ff3 GIT binary patch literal 524 zcmZut!EO^l3@w7w9yxO`5{FjB+1;S1VL}k1O{GetjlzPs4q0bA?Z&fsCfVde_%S}9 z-%@Xj(o3K8G#<~hJv0QnWPreth6uY9<%WX2J#!JL$s9cF(*Hys68%SnX1)d7osHJ#jBN^yt`2h1i zW+#vj&EUgvmS>p?aZVf8jd(_PVg`fbOp$!EAz~qxLv5oM1HbIXk-(Ld{?B>`pSJ!n z`cgag8)th9zxu3YT&- z;ghcW%aQ~qyzr&t%E0iqi+e)`n3Gw(7F*-FmsQY2^KcF0{s\n" +"Language-Team: Norwegian Nynorsk (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/nn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nn\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: authentication.py:72 +msgid "Invalid basic header. No credentials provided." +msgstr "" + +#: authentication.py:75 +msgid "Invalid basic header. Credentials string should not contain spaces." +msgstr "" + +#: authentication.py:81 +msgid "Invalid basic header. Credentials not correctly base64 encoded." +msgstr "" + +#: authentication.py:98 +msgid "Invalid username/password." +msgstr "" + +#: authentication.py:101 authentication.py:188 +msgid "User inactive or deleted." +msgstr "" + +#: authentication.py:167 +msgid "Invalid token header. No credentials provided." +msgstr "" + +#: authentication.py:170 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" + +#: authentication.py:176 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" + +#: authentication.py:185 +msgid "Invalid token." +msgstr "" + +#: authtoken/serializers.py:20 +msgid "User account is disabled." +msgstr "" + +#: authtoken/serializers.py:23 +msgid "Unable to log in with provided credentials." +msgstr "" + +#: authtoken/serializers.py:26 +msgid "Must include \"username\" and \"password\"." +msgstr "" + +#: exceptions.py:49 +msgid "A server error occurred." +msgstr "" + +#: exceptions.py:84 +msgid "Malformed request." +msgstr "" + +#: exceptions.py:89 +msgid "Incorrect authentication credentials." +msgstr "" + +#: exceptions.py:94 +msgid "Authentication credentials were not provided." +msgstr "" + +#: exceptions.py:99 +msgid "You do not have permission to perform this action." +msgstr "" + +#: exceptions.py:104 views.py:81 +msgid "Not found." +msgstr "" + +#: exceptions.py:109 +#, python-brace-format +msgid "Method \"{method}\" not allowed." +msgstr "" + +#: exceptions.py:120 +msgid "Could not satisfy the request Accept header." +msgstr "" + +#: exceptions.py:132 +#, python-brace-format +msgid "Unsupported media type \"{media_type}\" in request." +msgstr "" + +#: exceptions.py:145 +msgid "Request was throttled." +msgstr "" + +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 +#: validators.py:162 +msgid "This field is required." +msgstr "" + +#: fields.py:267 +msgid "This field may not be null." +msgstr "" + +#: fields.py:603 fields.py:634 +#, python-brace-format +msgid "\"{input}\" is not a valid boolean." +msgstr "" + +#: fields.py:669 +msgid "This field may not be blank." +msgstr "" + +#: fields.py:670 fields.py:1656 +#, python-brace-format +msgid "Ensure this field has no more than {max_length} characters." +msgstr "" + +#: fields.py:671 +#, python-brace-format +msgid "Ensure this field has at least {min_length} characters." +msgstr "" + +#: fields.py:708 +msgid "Enter a valid email address." +msgstr "" + +#: fields.py:719 +msgid "This value does not match the required pattern." +msgstr "" + +#: fields.py:730 +msgid "" +"Enter a valid \"slug\" consisting of letters, numbers, underscores or " +"hyphens." +msgstr "" + +#: fields.py:742 +msgid "Enter a valid URL." +msgstr "" + +#: fields.py:755 +#, python-brace-format +msgid "\"{value}\" is not a valid UUID." +msgstr "" + +#: fields.py:791 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "" + +#: fields.py:816 +msgid "A valid integer is required." +msgstr "" + +#: fields.py:817 fields.py:852 fields.py:885 +#, python-brace-format +msgid "Ensure this value is less than or equal to {max_value}." +msgstr "" + +#: fields.py:818 fields.py:853 fields.py:886 +#, python-brace-format +msgid "Ensure this value is greater than or equal to {min_value}." +msgstr "" + +#: fields.py:819 fields.py:854 fields.py:890 +msgid "String value too large." +msgstr "" + +#: fields.py:851 fields.py:884 +msgid "A valid number is required." +msgstr "" + +#: fields.py:887 +#, python-brace-format +msgid "Ensure that there are no more than {max_digits} digits in total." +msgstr "" + +#: fields.py:888 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_decimal_places} decimal places." +msgstr "" + +#: fields.py:889 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_whole_digits} digits before the " +"decimal point." +msgstr "" + +#: fields.py:1004 +#, python-brace-format +msgid "Datetime has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1005 +msgid "Expected a datetime but got a date." +msgstr "" + +#: fields.py:1079 +#, python-brace-format +msgid "Date has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1080 +msgid "Expected a date but got a datetime." +msgstr "" + +#: fields.py:1148 +#, python-brace-format +msgid "Time has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1207 +#, python-brace-format +msgid "Duration has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1232 fields.py:1281 +#, python-brace-format +msgid "\"{input}\" is not a valid choice." +msgstr "" + +#: fields.py:1235 relations.py:62 relations.py:431 +#, python-brace-format +msgid "More than {count} items..." +msgstr "" + +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 +#, python-brace-format +msgid "Expected a list of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1283 +msgid "This selection may not be empty." +msgstr "" + +#: fields.py:1320 +#, python-brace-format +msgid "\"{input}\" is not a valid path choice." +msgstr "" + +#: fields.py:1339 +msgid "No file was submitted." +msgstr "" + +#: fields.py:1340 +msgid "" +"The submitted data was not a file. Check the encoding type on the form." +msgstr "" + +#: fields.py:1341 +msgid "No filename could be determined." +msgstr "" + +#: fields.py:1342 +msgid "The submitted file is empty." +msgstr "" + +#: fields.py:1343 +#, python-brace-format +msgid "" +"Ensure this filename has at most {max_length} characters (it has {length})." +msgstr "" + +#: fields.py:1391 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: fields.py:1430 relations.py:428 serializers.py:521 +msgid "This list may not be empty." +msgstr "" + +#: fields.py:1483 +#, python-brace-format +msgid "Expected a dictionary of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 +#, python-brace-format +msgid "Invalid page \"{page_number}\": {message}." +msgstr "" + +#: pagination.py:407 +msgid "Invalid cursor" +msgstr "" + +#: relations.py:196 +#, python-brace-format +msgid "Invalid pk \"{pk_value}\" - object does not exist." +msgstr "" + +#: relations.py:197 +#, python-brace-format +msgid "Incorrect type. Expected pk value, received {data_type}." +msgstr "" + +#: relations.py:229 +msgid "Invalid hyperlink - No URL match." +msgstr "" + +#: relations.py:230 +msgid "Invalid hyperlink - Incorrect URL match." +msgstr "" + +#: relations.py:231 +msgid "Invalid hyperlink - Object does not exist." +msgstr "" + +#: relations.py:232 +#, python-brace-format +msgid "Incorrect type. Expected URL string, received {data_type}." +msgstr "" + +#: relations.py:391 +#, python-brace-format +msgid "Object with {slug_name}={value} does not exist." +msgstr "" + +#: relations.py:392 +msgid "Invalid value." +msgstr "" + +#: serializers.py:326 +#, python-brace-format +msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "" + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + +#: templates/rest_framework/horizontal/radio.html:2 +#: templates/rest_framework/inline/radio.html:2 +#: templates/rest_framework/vertical/radio.html:2 +msgid "None" +msgstr "" + +#: templates/rest_framework/horizontal/select_multiple.html:2 +#: templates/rest_framework/inline/select_multiple.html:2 +#: templates/rest_framework/vertical/select_multiple.html:2 +msgid "No items to select." +msgstr "" + +#: validators.py:24 +msgid "This field must be unique." +msgstr "" + +#: validators.py:78 +#, python-brace-format +msgid "The fields {field_names} must make a unique set." +msgstr "" + +#: validators.py:226 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" date." +msgstr "" + +#: validators.py:241 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" month." +msgstr "" + +#: validators.py:254 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" year." +msgstr "" + +#: versioning.py:42 +msgid "Invalid version in \"Accept\" header." +msgstr "" + +#: versioning.py:73 versioning.py:115 +msgid "Invalid version in URL path." +msgstr "" + +#: versioning.py:144 +msgid "Invalid version in hostname." +msgstr "" + +#: versioning.py:166 +msgid "Invalid version in query parameter." +msgstr "" + +#: views.py:88 +msgid "Permission denied." +msgstr "" diff --git a/rest_framework/locale/no/LC_MESSAGES/django.mo b/rest_framework/locale/no/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..00f5db6b594908affee647eec4ca29a8464fd10b GIT binary patch literal 516 zcmZut%TB{E5Cp*~N6s7;i313>Ns20pOA(?J35h~g0^(|#Z7`(X;J8is5Pph};9J-L zDi=l?dA*+TK0Y_r-&X{y!cF0}a80-`tkD*J$m5ZmwPuN-<7XOsyiD<)Txr-UIDghQ zV;J>s6PP$XrHb84FrtE;$3dBy6whW^i3uwRhBpcJ9BD6BJlCESG^4nMaTB9Mh})`l zuouNqBtjg~+|(uh(H*K*YcCQ6SGx3=IBm;Zdv*#Q^xTkx8<+Cy>w?cN{Y2m{n*T!~W{G?q;zI&HkVEa#3_c9@eeLLpV s*i1qD(fH*c3M>c1eCBkH7wo2`B#Q5A*==^\n" +"Language-Team: Norwegian (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/no/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: no\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: authentication.py:72 +msgid "Invalid basic header. No credentials provided." +msgstr "" + +#: authentication.py:75 +msgid "Invalid basic header. Credentials string should not contain spaces." +msgstr "" + +#: authentication.py:81 +msgid "Invalid basic header. Credentials not correctly base64 encoded." +msgstr "" + +#: authentication.py:98 +msgid "Invalid username/password." +msgstr "" + +#: authentication.py:101 authentication.py:188 +msgid "User inactive or deleted." +msgstr "" + +#: authentication.py:167 +msgid "Invalid token header. No credentials provided." +msgstr "" + +#: authentication.py:170 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" + +#: authentication.py:176 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" + +#: authentication.py:185 +msgid "Invalid token." +msgstr "" + +#: authtoken/serializers.py:20 +msgid "User account is disabled." +msgstr "" + +#: authtoken/serializers.py:23 +msgid "Unable to log in with provided credentials." +msgstr "" + +#: authtoken/serializers.py:26 +msgid "Must include \"username\" and \"password\"." +msgstr "" + +#: exceptions.py:49 +msgid "A server error occurred." +msgstr "" + +#: exceptions.py:84 +msgid "Malformed request." +msgstr "" + +#: exceptions.py:89 +msgid "Incorrect authentication credentials." +msgstr "" + +#: exceptions.py:94 +msgid "Authentication credentials were not provided." +msgstr "" + +#: exceptions.py:99 +msgid "You do not have permission to perform this action." +msgstr "" + +#: exceptions.py:104 views.py:81 +msgid "Not found." +msgstr "" + +#: exceptions.py:109 +#, python-brace-format +msgid "Method \"{method}\" not allowed." +msgstr "" + +#: exceptions.py:120 +msgid "Could not satisfy the request Accept header." +msgstr "" + +#: exceptions.py:132 +#, python-brace-format +msgid "Unsupported media type \"{media_type}\" in request." +msgstr "" + +#: exceptions.py:145 +msgid "Request was throttled." +msgstr "" + +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 +#: validators.py:162 +msgid "This field is required." +msgstr "" + +#: fields.py:267 +msgid "This field may not be null." +msgstr "" + +#: fields.py:603 fields.py:634 +#, python-brace-format +msgid "\"{input}\" is not a valid boolean." +msgstr "" + +#: fields.py:669 +msgid "This field may not be blank." +msgstr "" + +#: fields.py:670 fields.py:1656 +#, python-brace-format +msgid "Ensure this field has no more than {max_length} characters." +msgstr "" + +#: fields.py:671 +#, python-brace-format +msgid "Ensure this field has at least {min_length} characters." +msgstr "" + +#: fields.py:708 +msgid "Enter a valid email address." +msgstr "" + +#: fields.py:719 +msgid "This value does not match the required pattern." +msgstr "" + +#: fields.py:730 +msgid "" +"Enter a valid \"slug\" consisting of letters, numbers, underscores or " +"hyphens." +msgstr "" + +#: fields.py:742 +msgid "Enter a valid URL." +msgstr "" + +#: fields.py:755 +#, python-brace-format +msgid "\"{value}\" is not a valid UUID." +msgstr "" + +#: fields.py:791 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "" + +#: fields.py:816 +msgid "A valid integer is required." +msgstr "" + +#: fields.py:817 fields.py:852 fields.py:885 +#, python-brace-format +msgid "Ensure this value is less than or equal to {max_value}." +msgstr "" + +#: fields.py:818 fields.py:853 fields.py:886 +#, python-brace-format +msgid "Ensure this value is greater than or equal to {min_value}." +msgstr "" + +#: fields.py:819 fields.py:854 fields.py:890 +msgid "String value too large." +msgstr "" + +#: fields.py:851 fields.py:884 +msgid "A valid number is required." +msgstr "" + +#: fields.py:887 +#, python-brace-format +msgid "Ensure that there are no more than {max_digits} digits in total." +msgstr "" + +#: fields.py:888 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_decimal_places} decimal places." +msgstr "" + +#: fields.py:889 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_whole_digits} digits before the " +"decimal point." +msgstr "" + +#: fields.py:1004 +#, python-brace-format +msgid "Datetime has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1005 +msgid "Expected a datetime but got a date." +msgstr "" + +#: fields.py:1079 +#, python-brace-format +msgid "Date has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1080 +msgid "Expected a date but got a datetime." +msgstr "" + +#: fields.py:1148 +#, python-brace-format +msgid "Time has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1207 +#, python-brace-format +msgid "Duration has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1232 fields.py:1281 +#, python-brace-format +msgid "\"{input}\" is not a valid choice." +msgstr "" + +#: fields.py:1235 relations.py:62 relations.py:431 +#, python-brace-format +msgid "More than {count} items..." +msgstr "" + +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 +#, python-brace-format +msgid "Expected a list of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1283 +msgid "This selection may not be empty." +msgstr "" + +#: fields.py:1320 +#, python-brace-format +msgid "\"{input}\" is not a valid path choice." +msgstr "" + +#: fields.py:1339 +msgid "No file was submitted." +msgstr "" + +#: fields.py:1340 +msgid "" +"The submitted data was not a file. Check the encoding type on the form." +msgstr "" + +#: fields.py:1341 +msgid "No filename could be determined." +msgstr "" + +#: fields.py:1342 +msgid "The submitted file is empty." +msgstr "" + +#: fields.py:1343 +#, python-brace-format +msgid "" +"Ensure this filename has at most {max_length} characters (it has {length})." +msgstr "" + +#: fields.py:1391 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: fields.py:1430 relations.py:428 serializers.py:521 +msgid "This list may not be empty." +msgstr "" + +#: fields.py:1483 +#, python-brace-format +msgid "Expected a dictionary of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 +#, python-brace-format +msgid "Invalid page \"{page_number}\": {message}." +msgstr "" + +#: pagination.py:407 +msgid "Invalid cursor" +msgstr "" + +#: relations.py:196 +#, python-brace-format +msgid "Invalid pk \"{pk_value}\" - object does not exist." +msgstr "" + +#: relations.py:197 +#, python-brace-format +msgid "Incorrect type. Expected pk value, received {data_type}." +msgstr "" + +#: relations.py:229 +msgid "Invalid hyperlink - No URL match." +msgstr "" + +#: relations.py:230 +msgid "Invalid hyperlink - Incorrect URL match." +msgstr "" + +#: relations.py:231 +msgid "Invalid hyperlink - Object does not exist." +msgstr "" + +#: relations.py:232 +#, python-brace-format +msgid "Incorrect type. Expected URL string, received {data_type}." +msgstr "" + +#: relations.py:391 +#, python-brace-format +msgid "Object with {slug_name}={value} does not exist." +msgstr "" + +#: relations.py:392 +msgid "Invalid value." +msgstr "" + +#: serializers.py:326 +#, python-brace-format +msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "" + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + +#: templates/rest_framework/horizontal/radio.html:2 +#: templates/rest_framework/inline/radio.html:2 +#: templates/rest_framework/vertical/radio.html:2 +msgid "None" +msgstr "" + +#: templates/rest_framework/horizontal/select_multiple.html:2 +#: templates/rest_framework/inline/select_multiple.html:2 +#: templates/rest_framework/vertical/select_multiple.html:2 +msgid "No items to select." +msgstr "" + +#: validators.py:24 +msgid "This field must be unique." +msgstr "" + +#: validators.py:78 +#, python-brace-format +msgid "The fields {field_names} must make a unique set." +msgstr "" + +#: validators.py:226 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" date." +msgstr "" + +#: validators.py:241 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" month." +msgstr "" + +#: validators.py:254 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" year." +msgstr "" + +#: versioning.py:42 +msgid "Invalid version in \"Accept\" header." +msgstr "" + +#: versioning.py:73 versioning.py:115 +msgid "Invalid version in URL path." +msgstr "" + +#: versioning.py:144 +msgid "Invalid version in hostname." +msgstr "" + +#: versioning.py:166 +msgid "Invalid version in query parameter." +msgstr "" + +#: views.py:88 +msgid "Permission denied." +msgstr "" diff --git a/rest_framework/locale/pl/LC_MESSAGES/django.mo b/rest_framework/locale/pl/LC_MESSAGES/django.mo index 90b5b93d7cc629fb169c02e9991fa62449848f1c..30e6022558e4409c426bb205e867ca23c1fc9ef3 100644 GIT binary patch delta 2698 zcmZYATTB#Z6u|Ls5f=m%1iYcv4{vP+R+gKHT0yNhR1j3WG&I99vIBd8Wmf`?Zlg8y z$zHbB5MpcFhuWsqhegvUNgrer8*O??8dIY__@a%PHoYZHFX{ixuEw-qIQyHKo&9FM zbIuG$8csJyZ|9|-P>lV=T;kU>rJ{IkA|H$^8A=u57pU<*F2>23NoF+o*b#jg1`m3hQuYmQuTM4=%@ZxDxMT11`)~suqJN-+zo- z@eVG;Ws{Z4!xoeqI)HNgXvz;!=DUhjveb+zO7W*w^TFa&1Ih|pP%bopH8_fE@FA|l z(y2cc&fzn74<&Qca+F$%6)4BsundRLC8_?5jm>x$SED;OIbjeB**~1x zA4XZp8I+Y>OZh|UxN}-^*)K=wk;Z)TU(H502c(wo zqwL>6x$|iS$rDRZv%d-D#w?U(8pdM0iEhlCuGC(v#o72)%Cjl2U^&O{;2#d9rq3Y% z6&%Q+g{9`}P-Elp&}ZA zepMYPB@3Z6!Qm{z9^)>UDC3tysnW+bAozhRf`3{(ITr2~vlUB&g#ksrnQtvl_(={1T;C zzQc7miH4zCY8%RhEF|mdW#km~4sOHC*oxCwoz&h!DcKm#;ri+x8)QeNvy4()f*Wur zuEr6p!S7K@lt(&Poa#m9Rwqzy>=Mf3_ai#+(U5+SA*+`RtsrFnO+-{CkRQv~MMx&( zZ6!lGTSgkOlaRXc*0ejF2DeuMb{V##tXhVwQik+FJ|PV#C3|wnLRnALZl*1%Z?c~_ z!^!qWqAqo8AJ!B5iF86TAa#`HB7t^E&>))0FM8JdtLls=O8Km%)Z#~Sr4aguuNZvK4AI6W~fhXNE*MBeKjr53LG?iR)_X@ zjgaAy@8glFF2}53$kbu45zsGrf{{S@kha36zt820ozA(C*%<0DLsp_1HVk(-Eq=ooHXA-OhA8QJC*2 zXbSoaJH?^P@qRnUp@I1IIR_@pTbnpCKHL!?6-H;`2;Z9BdQgXh-Dbe_$M(&io7bK? z!{gP10i&B!;w$HS9Yw9y_^`+9;*Jtyj|)Na{AM7`NmS!K{dsmn&}Vi9f{Bswq1cN> zZfDD2q}%9~m>4s4`@r~+?jg&DOYJkbuxHSe vwM+cx3^RUl;YmkDs}Ty@*OB5_sR@!v8t`k6HGZtqGX0O%pzWG9EiV5T!&|Ch delta 1964 zcmYk+e@skr(KX=^LZe{%g;?Ubu6o13=E{wp@y`r)wIA8p}ZZPi@s{W<5h@r*C8=Q(hmbDr<> zJ%G5EVlU(OFo=Jn z7Lb)`Oa(rg^Z;s}acso*aWnpktvugkWEs=Ug)Z#C)3_V2VHkZIjLF6b>i;@$E6$=a za|s{A8_Dad7-3w%O}f7u+i?c@F`w|O2ybf4^UWPPdgE2p3W5)LZbMz~MXm4@D)kGv z1>eRH-a-pkFc1AX#sn~gB*hftHmpL;a|m@`3=;)(UZE4g3&@_BZ%{9io69ONj2iDn z?eQQsVFI;PSCiva)XFyV6g{vLwfCp68Xc^|JNPW-=8^x0>5TB&@(kAFTj-+@zr)8F zFK_hrES=XbXBfc^WHm0uSJMJdF2HTi4E~qSP;9Eq;zV zaDK;jtmEcpjN>tU2P^dbr*RtSK&a-IzJh-AVH&}^xT^(sGO2y-B~(aj8|Ra0AuK`* z+C@A?aIU$T+>e<=4Utdu5PH7bQj?19Yx;VjHiB|+v(dHYZ!FAxab4ofaqB~UHSMvQ zYC+l5*U(9jEcc9PMH1jWU+Gd&JxQpk9-7>qcOIy_j!+$_@e#O9g{M8>PV0=Qn#c*RdOd)uG9W*x0Z&9UYw-vL@qkYcx7B zJQQ{of*<&tvHYVx`|ifqvLh|E^>tQVq_wfJI#O@H6e`N}E=8JK8=LG)p@PaI(dpRG zgw;23B0fGfXSL17yNY%D$&3C?$PH&E>?~L2`<<#SOFsMl*1G=y DBk$dh diff --git a/rest_framework/locale/pl/LC_MESSAGES/django.po b/rest_framework/locale/pl/LC_MESSAGES/django.po index c9b3798ccae..9254cb73e24 100644 --- a/rest_framework/locale/pl/LC_MESSAGES/django.po +++ b/rest_framework/locale/pl/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" -"Last-Translator: Xavier Ordoquy \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-08 19:44+0000\n" +"Last-Translator: Janusz Harkot \n" "Language-Team: Polish (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -36,24 +36,24 @@ msgstr "Niepoprawny podstawowy nagłówek. Niewłaściwe kodowanie base64 danych msgid "Invalid username/password." msgstr "Niepoprawna nazwa użytkownika lub hasło." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Użytkownik nieaktywny lub usunięty." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Niepoprawny nagłówek tokena. Brak danych uwierzytelniających." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Niepoprawny nagłówek tokena. Token nie może zawierać odstępów." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." -msgstr "" +msgstr "Błędny nagłówek z tokenem. Token nie może zawierać błędnych znaków." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Niepoprawny token." @@ -111,241 +111,267 @@ msgstr "Brak wsparcia dla żądanego typu danych \"{media_type}\"." msgid "Request was throttled." msgstr "Żądanie zostało zdławione." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "To pole jest wymagane." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Pole nie może mieć wartości null." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" nie jest poprawną wartością logiczną." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "To pole nie może być puste." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Upewnij się, że to pole ma nie więcej niż {max_length} znaków." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Upewnij się, że pole ma co najmniej {min_length} znaków." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Podaj poprawny adres e-mail." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Ta wartość nie pasuje do wymaganego wzorca." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Wprowadź poprawną wartość pola typu \"slug\", składającą się ze znaków łacińskich, cyfr, podkreślenia lub myślnika." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Wprowadź poprawny adres URL." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" nie jest poprawnym UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." -msgstr "" +msgstr "Wprowadź poprawny adres IPv4 lub IPv6." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Wymagana poprawna liczba całkowita." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Upewnij się, że ta wartość jest mniejsza lub równa {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Upewnij się, że ta wartość jest większa lub równa {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Za długi ciąg znaków." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Wymagana poprawna liczba." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Upewnij się, że liczba ma nie więcej niż {max_digits} cyfr." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Upewnij się, że liczba ma nie więcej niż {max_decimal_places} cyfr dziesiętnych." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Upewnij się, że liczba ma nie więcej niż {max_whole_digits} cyfr całkowitych." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Wartość daty z czasem ma zły format. Użyj jednego z dostępnych formatów: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Oczekiwano datę z czasem, otrzymano tylko datę." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Data ma zły format. Użyj jednego z tych formatów: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Oczekiwano daty a otrzymano datę z czasem." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Błędny format czasu. Użyj jednego z dostępnych formatów: {format}" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "Czas trwania ma zły format. Użyj w zamian jednego z tych formatów: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" nie jest poprawnym wyborem." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." -msgstr "" +msgstr "Więcej niż {count} elementów..." -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Oczekiwano listy elementów, a otrzymano dane typu \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." -msgstr "" +msgstr "Zaznaczenie nie może być puste." -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." -msgstr "" +msgstr "\"{input}\" nie jest poprawną ścieżką." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Nie przesłano pliku." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Przesłane dane nie były plikiem. Sprawdź typ kodowania formatki." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Nie można określić nazwy pliku." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Przesłany plik jest pusty." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Upewnij się, że nazwa pliku ma długość co najwyżej {max_length} znaków (aktualnie ma {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Prześlij poprawny plik graficzny. Przesłany plik albo nie jest grafiką lub jest uszkodzony." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." -msgstr "" +msgstr "Lista nie może być pusta." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Oczekiwano słownika, ale otrzymano \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "Wartość musi być poprawnym ciągiem znaków JSON" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "Wyślij" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Niepoprawna strona \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Niepoprawny wskaźnik" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Błędny klucz główny \"{pk_value}\" - obiekt nie istnieje." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Błędny typ danych. Oczekiwano wartość klucza głównego, otrzymano {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Błędny hyperlink - nie znaleziono pasującego adresu URL." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Błędny hyperlink - błędne dopasowanie adresu URL." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Błędny hyperlink - obiekt nie istnieje." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Błędny typ danych. Oczekiwano adresu URL, otrzymano {data_type}" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Obiekt z polem {slug_name}={value} nie istnieje" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Niepoprawna wartość." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Niepoprawne dane. Oczekiwano słownika, otrzymano {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "Filtry" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "Pola filtrów" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "Kolejność" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "Szukaj" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/pt/LC_MESSAGES/django.mo b/rest_framework/locale/pt/LC_MESSAGES/django.mo index 84ad8acc7f10da60ac704ac616a4e774c76fd809..476e41490ac1dbe53c9500f7e5ede967a600905a 100644 GIT binary patch delta 40 qcmZo=X=Rx(iO\n" "Language-Team: Portuguese (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/pt/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/pt_BR/LC_MESSAGES/django.mo b/rest_framework/locale/pt_BR/LC_MESSAGES/django.mo index fc203d9bb61c23dc24ae159d085e26bbc5426d61..0f2dac6156a0b7c2706b41f35d99b96bc6e84094 100644 GIT binary patch delta 2374 zcmYk-TWl0n9LMnky%*HBP+HK+v{ew=ExTJTb)isN+Hx%wJblquu0)ItiuKXcm=3+Cde+P!~C^jk8pHo?d}3vmZlp%b(ZVVL$|)RKOR8t5I=bu)OF+ELUV>6t?Q7gE_vht~2Gs{Ipc zUIvxxBIPg41>A#LwCKyvWjr{8de=t0) zc@0}x1L(jy97T=zO`L^igZ^Jo1J36u8psk{ff-zbU!j(?j9I9?4Yljv!EJaeXs^tW z2VL+gZpSOQ92fD_PCS4c@f>OsRn+8`pcOUXO{kfV27ZM4{WWYui;cjxGB#?-_Te1d zk4rFfii&3PGxlKB%$$Q5qx~7Ozs#SgndVu!2X>)SxgT}I4>5#4pq41FHh0XL@oCyg zT#a9&?pIOgXEtN%si>n3b)#N<3=bk>GADxmbI3k2H&8RbjjV#H<47noi;+p2T|xUW zl1y_NIqK#D>N%HDOMU}Obp9)Onr=K3*+(XdN>w*nxISnnQ8OMvE!F$TWK030(Sv3q z_cR@-fe&Ic9tk{)`u%UnYMNR$R4vapOR3Ojo<*hZ2zKHb)MmVmi?NwQJcvnTHOwW{ zjQ>I1u#&gSe2n4*yj#?#qJ6-|H%}5>#7ZKg2WylnPZ3Iy(y5}+s!Sv{5z3NMxs+go z`)LIKq^w60;+Ktq8Z;-_f4geH_ZRII#+~6EoZA@sa*{rRQi$C|ThP|ASxzYR`Giuf zY^^0okpD{N6q^mi{iT&g39*9EMpx1DD6^eff2B}`tlcZc_iDL{Hrm~?g-Sc2W7`;X zu0xKrUwG~NZ^0I9%60kwS5(!J(`o1&lwY0n94o!sPFM%~lf#Mh zA>FigihH~P$8!^d+1~QT0>}3HcV`clPcQ5n-Z|u^$Fk*}dDWZk_^@LQ z4X4u9PRAOtCh(6PNd>?I_br%4$pQ6t@gN`8torFu-95L#1)RW z$KE>}ZyOx4-T2tIl}C%JH8;<;1{|y39(pe6&(*U{NA`AA%~-1D<@~C3wwu!T_sut< z`QE9$TB7+T?8HDad%12-Vf%2Z-}YXsuPf|KjJUQpR$G5EugZ=mJ$^ruv{H`ePt_Xv L@?<>w#jM!>KE@-) delta 1996 zcmZY9e@N7K9LMpudUocey+ zKHtxe_xJnT(MLzzpTmKRMma`2N!-jeJB2UhbD=mvvnWQSTksu>;B9p9CoIK(Fo59_Gd9o4(A`d@f{F&}Mg4IY%kUh=@dE0IzCul; zh#%|w8dQ59>da5zPCSb`nj3z53AL~&v(WEa(7}OH_Foe?Lx+;%8rI?itjG0h&0fGm z_yk_{y@d(dKjM6jS!iAMf4?$&9c2l#(?puE0>@DkeH)*~kNy51%Gm!VI{u_X6Nr<_ z?Kp{t@l(`U1-QG~-Kgxnj4$FZe!GR`>HAq6#5=ebYgujwzKXq=LFL8@W}}_1cd2N` zov0O$`_7>T_zv4}?M4y?`>_RG)WmOM5B}lXP9h{}UqFuA?w}U7fEvGYb9U$YQRBI< zQ>mkJ19cP&*oYdpo2L)3d)5F9K?QPY`cyc?|bB9 z54mV!rOa{%COloUSEy)!%czxoiyB}FHRDxWv@;3pz?V_U^*(B+?&AnLPA@(f_R3|ZsijWp)J*FwNole zQti@m(Gl{Z^pbY9-^q!%UUq8x^(s9;>>*-AoZyJPqPNYe&{vazu? zo=BgIl!vli@m;M1& diff --git a/rest_framework/locale/pt_BR/LC_MESSAGES/django.po b/rest_framework/locale/pt_BR/LC_MESSAGES/django.po index 7fdefbd5ccb..ce372f32198 100644 --- a/rest_framework/locale/pt_BR/LC_MESSAGES/django.po +++ b/rest_framework/locale/pt_BR/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" -"Last-Translator: Xavier Ordoquy \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-08 16:20+0000\n" +"Last-Translator: Craig Blaszczyk \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,24 +37,24 @@ msgstr "Cabeçalho básico inválido. Credenciais codificadas em base64 incorret msgid "Invalid username/password." msgstr "Usuário ou senha inválido." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Usuário inativo ou removido." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Cabeçalho de token inválido. Credenciais não fornecidas." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Cabeçalho de token inválido. String de token não deve incluir espaços." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "Cabeçalho de token inválido. String de token não deve possuir caracteres inválidos." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Token inválido." @@ -112,241 +112,267 @@ msgstr "Tipo de mídia \"{media_type}\" no pedido não é suportado." msgid "Request was throttled." msgstr "Pedido foi limitado." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Este campo é obrigatório." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Este campo não pode ser nulo." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" não é um valor boleano válido." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Este campo não pode ser em branco." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Certifique-se de que este campo não tenha mais de {max_length} caracteres." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Certifique-se de que este campo tenha mais de {min_length} caracteres." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Insira um endereço de email válido." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Este valor não corresponde ao padrão exigido." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Entrar um \"slug\" válido que consista de letras, números, sublinhados ou hífens." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Entrar um URL válido." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" não é um UUID válido." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "Informe um endereço IPv4 ou IPv6 válido." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Um número inteiro válido é exigido." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Certifique-se de que este valor seja inferior ou igual a {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Certifque-se de que este valor seja maior ou igual a {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Valor da string é muito grande." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Um número válido é necessário." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Certifique-se de que não haja mais de {max_digits} dígitos no total." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Certifique-se de que não haja mais de {max_decimal_places} casas decimais." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Certifique-se de que não haja mais de {max_whole_digits} dígitos antes do ponto decimal." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Formato inválido para data e hora. Use um dos formatos a seguir: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Necessário uma data e hora mas recebeu uma data." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Formato inválido para data. Use um dos formatos a seguir: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Necessário uma data mas recebeu uma data e hora." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Formato inválido para Tempo. Use um dos formatos a seguir: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "Formato inválido para Duração. Use um dos formatos a seguir: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" não é um escolha válido." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." -msgstr "" +msgstr "Mais de {count} itens..." -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Necessário uma lista de itens, mas recebeu tipo \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "Esta seleção não pode estar vazia." -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "\"{input}\" não é uma escolha válida para um caminho." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Nenhum arquivo foi submetido." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "O dado submetido não é um arquivo. Certifique-se do tipo de codificação no formulário." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Nome do arquivo não pode ser determinado." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "O arquivo submetido está vázio." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Certifique-se de que o nome do arquivo tem menos de {max_length} caracteres (tem {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Fazer upload de uma imagem válida. O arquivo enviado não é um arquivo de imagem ou está corrompido." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "Esta lista não pode estar vazia." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Esperado um dicionário de itens mas recebeu tipo \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "Valor devo ser JSON válido." + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "Enviar" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Página inválida \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Cursor inválido" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Pk inválido \"{pk_value}\" - objeto não existe." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Tipo incorreto. Esperado valor pk, recebeu {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Hyperlink inválido - Sem combinação para a URL." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Hyperlink inválido - Combinação URL incorreta." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Hyperlink inválido - Objeto não existe." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Tipo incorreto. Necessário string URL, recebeu {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Objeto com {slug_name}={value} não existe." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Valor inválido." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Dado inválido. Necessário um dicionário mas recebeu {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "Filtra" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "Filtra de campo" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "Ordenando" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "Buscar" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/pt_PT/LC_MESSAGES/django.mo b/rest_framework/locale/pt_PT/LC_MESSAGES/django.mo index 18198f0165df6a89e65af76d6971af1b19fb4fd3..e548456051a5ec9e9b922612cb0df728e89ccd07 100644 GIT binary patch delta 40 rcmbQnGL2=zBtAnUT?2CkLklZYV{HS&i3_B-p(5s1rluQ@1~LKw(>DrK delta 40 scmbQnGL2=zBt8R6T_ZyULjx;QQ*8sIi3_B-AtDAAR;Fefj|MUV0MjE1Q~&?~ diff --git a/rest_framework/locale/pt_PT/LC_MESSAGES/django.po b/rest_framework/locale/pt_PT/LC_MESSAGES/django.po index 45c8fe2d37b..32cdd5c477a 100644 --- a/rest_framework/locale/pt_PT/LC_MESSAGES/django.po +++ b/rest_framework/locale/pt_PT/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/pt_PT/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/ro/LC_MESSAGES/django.mo b/rest_framework/locale/ro/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..11567edc3997d7f53610509d959deeedacc7a2ae GIT binary patch literal 556 zcmZut%}(1u5T+_8AA9a$E49cLop?7WB5Z0vK#-6c5v6X`>o(q)rS^_H-uxi(8hyP! zM4x~$pm5=nKF!STH^2Yh?f%_iykWj)eq_F7er9$UGXL}E5!+6)#gy>Y&I4Q(@WWE; z&}(sVYkY}fHvX221)18ek$y)r+aLv)w52QHY+1IDqZZNhI)`(zCU7cTm|(T&OEm!1 z2YD#eP!A6FrIM0`FtaPywRlB$s0V|6$%ww1Hb73sx0MM!k~ zywl2gTshO5V|~nNzFeBpLT*j1#SClXo$(^R38B$xx?Zn)p{wc^cGIP##p9Ylmiukj z1oirRT0PfK3DYE+TusI=2U9&6oud!d^W=98pCH&xNSn$yKN9mBL#++j_xuuuFS>4) zg(VpKITp^BS`2@=u-!uo!f0A8$y9KORJU6A<}qxugOPZ0v)E^uI*~e#WB-Y-e5{U= Z`}^l0%Ve^*7yA!vljNkYRg#RNod>tOr6vFX literal 0 HcmV?d00001 diff --git a/rest_framework/locale/ro/LC_MESSAGES/django.po b/rest_framework/locale/ro/LC_MESSAGES/django.po new file mode 100644 index 00000000000..6d0d3d5513d --- /dev/null +++ b/rest_framework/locale/ro/LC_MESSAGES/django.po @@ -0,0 +1,426 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Django REST framework\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" +"Last-Translator: Xavier Ordoquy \n" +"Language-Team: Romanian (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/ro/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" + +#: authentication.py:72 +msgid "Invalid basic header. No credentials provided." +msgstr "" + +#: authentication.py:75 +msgid "Invalid basic header. Credentials string should not contain spaces." +msgstr "" + +#: authentication.py:81 +msgid "Invalid basic header. Credentials not correctly base64 encoded." +msgstr "" + +#: authentication.py:98 +msgid "Invalid username/password." +msgstr "" + +#: authentication.py:101 authentication.py:188 +msgid "User inactive or deleted." +msgstr "" + +#: authentication.py:167 +msgid "Invalid token header. No credentials provided." +msgstr "" + +#: authentication.py:170 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" + +#: authentication.py:176 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" + +#: authentication.py:185 +msgid "Invalid token." +msgstr "" + +#: authtoken/serializers.py:20 +msgid "User account is disabled." +msgstr "" + +#: authtoken/serializers.py:23 +msgid "Unable to log in with provided credentials." +msgstr "" + +#: authtoken/serializers.py:26 +msgid "Must include \"username\" and \"password\"." +msgstr "" + +#: exceptions.py:49 +msgid "A server error occurred." +msgstr "" + +#: exceptions.py:84 +msgid "Malformed request." +msgstr "" + +#: exceptions.py:89 +msgid "Incorrect authentication credentials." +msgstr "" + +#: exceptions.py:94 +msgid "Authentication credentials were not provided." +msgstr "" + +#: exceptions.py:99 +msgid "You do not have permission to perform this action." +msgstr "" + +#: exceptions.py:104 views.py:81 +msgid "Not found." +msgstr "" + +#: exceptions.py:109 +#, python-brace-format +msgid "Method \"{method}\" not allowed." +msgstr "" + +#: exceptions.py:120 +msgid "Could not satisfy the request Accept header." +msgstr "" + +#: exceptions.py:132 +#, python-brace-format +msgid "Unsupported media type \"{media_type}\" in request." +msgstr "" + +#: exceptions.py:145 +msgid "Request was throttled." +msgstr "" + +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 +#: validators.py:162 +msgid "This field is required." +msgstr "" + +#: fields.py:267 +msgid "This field may not be null." +msgstr "" + +#: fields.py:603 fields.py:634 +#, python-brace-format +msgid "\"{input}\" is not a valid boolean." +msgstr "" + +#: fields.py:669 +msgid "This field may not be blank." +msgstr "" + +#: fields.py:670 fields.py:1656 +#, python-brace-format +msgid "Ensure this field has no more than {max_length} characters." +msgstr "" + +#: fields.py:671 +#, python-brace-format +msgid "Ensure this field has at least {min_length} characters." +msgstr "" + +#: fields.py:708 +msgid "Enter a valid email address." +msgstr "" + +#: fields.py:719 +msgid "This value does not match the required pattern." +msgstr "" + +#: fields.py:730 +msgid "" +"Enter a valid \"slug\" consisting of letters, numbers, underscores or " +"hyphens." +msgstr "" + +#: fields.py:742 +msgid "Enter a valid URL." +msgstr "" + +#: fields.py:755 +#, python-brace-format +msgid "\"{value}\" is not a valid UUID." +msgstr "" + +#: fields.py:791 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "" + +#: fields.py:816 +msgid "A valid integer is required." +msgstr "" + +#: fields.py:817 fields.py:852 fields.py:885 +#, python-brace-format +msgid "Ensure this value is less than or equal to {max_value}." +msgstr "" + +#: fields.py:818 fields.py:853 fields.py:886 +#, python-brace-format +msgid "Ensure this value is greater than or equal to {min_value}." +msgstr "" + +#: fields.py:819 fields.py:854 fields.py:890 +msgid "String value too large." +msgstr "" + +#: fields.py:851 fields.py:884 +msgid "A valid number is required." +msgstr "" + +#: fields.py:887 +#, python-brace-format +msgid "Ensure that there are no more than {max_digits} digits in total." +msgstr "" + +#: fields.py:888 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_decimal_places} decimal places." +msgstr "" + +#: fields.py:889 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_whole_digits} digits before the " +"decimal point." +msgstr "" + +#: fields.py:1004 +#, python-brace-format +msgid "Datetime has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1005 +msgid "Expected a datetime but got a date." +msgstr "" + +#: fields.py:1079 +#, python-brace-format +msgid "Date has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1080 +msgid "Expected a date but got a datetime." +msgstr "" + +#: fields.py:1148 +#, python-brace-format +msgid "Time has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1207 +#, python-brace-format +msgid "Duration has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1232 fields.py:1281 +#, python-brace-format +msgid "\"{input}\" is not a valid choice." +msgstr "" + +#: fields.py:1235 relations.py:62 relations.py:431 +#, python-brace-format +msgid "More than {count} items..." +msgstr "" + +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 +#, python-brace-format +msgid "Expected a list of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1283 +msgid "This selection may not be empty." +msgstr "" + +#: fields.py:1320 +#, python-brace-format +msgid "\"{input}\" is not a valid path choice." +msgstr "" + +#: fields.py:1339 +msgid "No file was submitted." +msgstr "" + +#: fields.py:1340 +msgid "" +"The submitted data was not a file. Check the encoding type on the form." +msgstr "" + +#: fields.py:1341 +msgid "No filename could be determined." +msgstr "" + +#: fields.py:1342 +msgid "The submitted file is empty." +msgstr "" + +#: fields.py:1343 +#, python-brace-format +msgid "" +"Ensure this filename has at most {max_length} characters (it has {length})." +msgstr "" + +#: fields.py:1391 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: fields.py:1430 relations.py:428 serializers.py:521 +msgid "This list may not be empty." +msgstr "" + +#: fields.py:1483 +#, python-brace-format +msgid "Expected a dictionary of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 +#, python-brace-format +msgid "Invalid page \"{page_number}\": {message}." +msgstr "" + +#: pagination.py:407 +msgid "Invalid cursor" +msgstr "" + +#: relations.py:196 +#, python-brace-format +msgid "Invalid pk \"{pk_value}\" - object does not exist." +msgstr "" + +#: relations.py:197 +#, python-brace-format +msgid "Incorrect type. Expected pk value, received {data_type}." +msgstr "" + +#: relations.py:229 +msgid "Invalid hyperlink - No URL match." +msgstr "" + +#: relations.py:230 +msgid "Invalid hyperlink - Incorrect URL match." +msgstr "" + +#: relations.py:231 +msgid "Invalid hyperlink - Object does not exist." +msgstr "" + +#: relations.py:232 +#, python-brace-format +msgid "Incorrect type. Expected URL string, received {data_type}." +msgstr "" + +#: relations.py:391 +#, python-brace-format +msgid "Object with {slug_name}={value} does not exist." +msgstr "" + +#: relations.py:392 +msgid "Invalid value." +msgstr "" + +#: serializers.py:326 +#, python-brace-format +msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "" + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + +#: templates/rest_framework/horizontal/radio.html:2 +#: templates/rest_framework/inline/radio.html:2 +#: templates/rest_framework/vertical/radio.html:2 +msgid "None" +msgstr "" + +#: templates/rest_framework/horizontal/select_multiple.html:2 +#: templates/rest_framework/inline/select_multiple.html:2 +#: templates/rest_framework/vertical/select_multiple.html:2 +msgid "No items to select." +msgstr "" + +#: validators.py:24 +msgid "This field must be unique." +msgstr "" + +#: validators.py:78 +#, python-brace-format +msgid "The fields {field_names} must make a unique set." +msgstr "" + +#: validators.py:226 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" date." +msgstr "" + +#: validators.py:241 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" month." +msgstr "" + +#: validators.py:254 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" year." +msgstr "" + +#: versioning.py:42 +msgid "Invalid version in \"Accept\" header." +msgstr "" + +#: versioning.py:73 versioning.py:115 +msgid "Invalid version in URL path." +msgstr "" + +#: versioning.py:144 +msgid "Invalid version in hostname." +msgstr "" + +#: versioning.py:166 +msgid "Invalid version in query parameter." +msgstr "" + +#: views.py:88 +msgid "Permission denied." +msgstr "" diff --git a/rest_framework/locale/ru/LC_MESSAGES/django.mo b/rest_framework/locale/ru/LC_MESSAGES/django.mo index cf41cba12a94b4f3650726a4190b0737734b741a..063bf0b74ce2591559b1b8838125b25d00533c66 100644 GIT binary patch delta 43 tcmcZ~c|USPf-s+8cxs|Eu=E=f7k^mNX3u*uW delta 43 ucmcZ~c|USPf-s+frLK{of}w$xsj0Ss(d0Z~DQ<|6frXW++2+Z@K9T?yVGC*i diff --git a/rest_framework/locale/ru/LC_MESSAGES/django.po b/rest_framework/locale/ru/LC_MESSAGES/django.po index 9a2fb7c026c..eae0fe28674 100644 --- a/rest_framework/locale/ru/LC_MESSAGES/django.po +++ b/rest_framework/locale/ru/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Russian (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/ru/)\n" "MIME-Version: 1.0\n" @@ -36,24 +36,24 @@ msgstr "Недопустимый заголовок. Учетные данные msgid "Invalid username/password." msgstr "Недопустимые имя пользователя или пароль." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Пользователь неактивен или удален." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Недопустимый заголовок токена. Не предоставлены учетные данные." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Недопустимый заголовок токена. Токен не должен содержать пробелов." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Недопустимый токен." @@ -111,241 +111,267 @@ msgstr "Неподдерживаемый тип данных \"{media_type}\" в msgid "Request was throttled." msgstr "Запрос был проигнорирован." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Это поле обязательно." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Это поле не может быть null." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" не является корректным булевым значением." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Это поле не может быть пустым." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Убедитесь что в этом поле не больше {max_length} символов." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Убедитесь что в этом поле как минимум {min_length} символов." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Введите корректный адрес электронной почты." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Значение не соответствует требуемому паттерну." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Введите корректный \"slug\", состоящий из букв, цифр, знаков подчеркивания или дефисов." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Введите корректный URL." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" не является корректным UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Требуется целочисленное значение." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Убедитесь что значение меньше или равно {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Убедитесь что значение больше или равно {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Слишком длинное значение." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Требуется численное значение." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Убедитесь что в числе не больше {max_digits} знаков." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Убедитесь что в числе не больше {max_decimal_places} знаков в дробной части." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Убедитесь что в цисле не больше {max_whole_digits} знаков в целой части." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Неправильный формат datetime. Используйте один из этих форматов: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Ожидался datetime, но был получен date." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Неправильный формат date. Используйте один из этих форматов: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Ожидался date, но был получен datetime." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Неправильный формат времени. Используйте один из этих форматов: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" не является корректным значением." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Ожидался list со значениями, но был получен \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Не был загружен файл." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Загруженный файл не является корректным файлом. " -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Невозможно определить имя файла." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Загруженный файл пуст." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Убедитесь что имя файла меньше {max_length} символов (сейчас {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Загрузите корректное изображение. Загруженный файл не является изображением, либо является испорченным." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Ожидался словарь со значениями, но был получен \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Недопустимая страница \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Не корректный курсор" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Недопустимый первичный ключ \"{pk_value}\" - объект не существует." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Некорректный тип. Ожилалось значение первичного ключа, получен {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Недопустимая ссылка - нет совпадения по URL." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Недопустимая ссылка - некорректное совпадение по URL," -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Недопустимая ссылка - объект не существует." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Некорректный тип. Ожидался URL, получен {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Объект с {slug_name}={value} не существует." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Недопустимое значение." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Недопустимые данные. Ожидался dictionary, но был получен {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/sk/LC_MESSAGES/django.mo b/rest_framework/locale/sk/LC_MESSAGES/django.mo index f80b9568a755d7631bcf4e58b21356c634a058fb..89c3f462f467c716641e1049cc4135cb2654d59a 100644 GIT binary patch delta 43 tcmdnuwZ&^gf-s+8cxs|Eu=E=ef1px#w3qt?^ delta 43 ucmdnuwZ&^gf-s+frLK{of}w$xsj0Ss(d0Z~DQ<|6frXW++2+Z@3k3lL84E)I diff --git a/rest_framework/locale/sk/LC_MESSAGES/django.po b/rest_framework/locale/sk/LC_MESSAGES/django.po index ee171b51d62..cdd82c10735 100644 --- a/rest_framework/locale/sk/LC_MESSAGES/django.po +++ b/rest_framework/locale/sk/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Slovak (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/sk/)\n" "MIME-Version: 1.0\n" @@ -34,24 +34,24 @@ msgstr "Nesprávna hlavička. Prihlasovacie údaje nie sú správne zakódované msgid "Invalid username/password." msgstr "Nesprávne prihlasovacie údaje." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Daný používateľ je neaktívny, alebo zmazaný." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Nesprávna token hlavička. Neboli poskytnuté prihlasovacie údaje." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Nesprávna token hlavička. Token hlavička nesmie obsahovať medzery." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Nesprávny token." @@ -109,241 +109,267 @@ msgstr "Požiadavok obsahuje nepodporovaný media type: \"{media_type}\"." msgid "Request was throttled." msgstr "Požiadavok bol obmedzený, z dôvodu prekročenia limitu." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Toto pole je povinné." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Toto pole nemôže byť nulové." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" je validný boolean." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Toto pole nemože byť prázdne." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Uistite sa, že toto pole nemá viac ako {max_length} znakov." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Uistite sa, že toto pole má viac ako {min_length} znakov." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Vložte správnu emailovú adresu." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Toto pole nezodpovedá požadovanému formátu." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Zadajte platný \"slug\", ktorý obsahuje len malé písmená, čísla, spojovník alebopodtržítko." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Zadajte platnú URL adresu." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" nie je platné UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Je vyžadované celé číslo." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Uistite sa, že hodnota je menšia alebo rovná {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Uistite sa, že hodnota je väčšia alebo rovná {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Zadaný textový reťazec je príliš dlhý." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Je vyžadované číslo." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Uistite sa, že hodnota neobsahuje viac ako {max_digits} cifier." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Uistite sa, že hodnota neobsahuje viac ako {max_decimal_places} desatinných miest." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Uistite sa, že hodnota neobsahuje viac ako {max_whole_digits} cifier pred desatinnou čiarkou." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Nesprávny formát dátumu a času. Prosím použite jeden z nasledujúcich formátov: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Vložený len dátum - date namiesto dátumu a času - datetime." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Nesprávny formát dátumu. Prosím použite jeden z nasledujúcich formátov: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Vložený dátum a čas - datetime namiesto jednoduchého dátumu - date." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Nesprávny formát času. Prosím použite jeden z nasledujúcich formátov: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" je nesprávny výber z daných možností." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Bol očakávaný zoznam položiek, no namiesto toho bol nájdený \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Nebol odoslaný žiadny súbor." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Odoslané dáta neobsahujú súbor. Prosím skontrolujte kódovanie - encoding type daného formuláru." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Nebolo možné určiť meno súboru." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Odoslaný súbor je prázdny." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Uistite sa, že meno súboru neobsahuje viac ako {max_length} znakov. (V skutočnosti ich má {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Uploadujte prosím obrázok. Súbor, ktorý ste uploadovali buď nie je obrázok, alebo daný obrázok je poškodený." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Bol očakávaný slovník položiek, no namiesto toho bol nájdený \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Nesprávne číslo stránky \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Nesprávny kurzor." -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Nesprávny primárny kľúč \"{pk_value}\" - objekt s daným primárnym kľúčom neexistuje." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Nesprávny typ. Bol prijatý {data_type} namiesto primárneho kľúča." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Nesprávny hypertextový odkaz - žiadna zhoda." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Nesprávny hypertextový odkaz - chybná URL." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Nesprávny hypertextový odkaz - požadovný objekt neexistuje." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Nesprávny typ {data_type}. Požadovaný typ: hypertextový odkaz." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Objekt, ktorého atribút \"{slug_name}\" je \"{value}\" neexistuje." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Nesprávna hodnota." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Bol očakávaný slovník položiek, no namiesto toho bol nájdený \"{datatype}\"." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/sv/LC_MESSAGES/django.mo b/rest_framework/locale/sv/LC_MESSAGES/django.mo index e2e4717ba5abaf40f031f585f33f966b56535eb2..a6c04ef4bde5b3070f8f7ab5b52f16f3f4f2616d 100644 GIT binary patch delta 2548 zcmZY9TWl0n9LMof=!Kg|OK*U{6sjO?mtLThN@WXJpsh5prGStoOS^4{?xpNbfr_vp zXwbwcX5|52Bnp8TLXE2pCO)|)f|3xGXkx?%Vgf=;3_&ANjNjkxR82V9|9oc7&gIPi z{LhTGp6!VLSde|f&~_4!5%(q-6UQq#Y-pGAj48v*XyF}v9H&h(W**jJDQ-qxzX#{w zF|5LOu@b++HTXBSVDsd(aq}`e>*=_PUM!hnOc!p)6*!7d;Z1DAg;R}b#0cvD_plvr z;6hwF&6oo8p$624>Obmw7InWbak*YK?-678nI<;8oM}V7p%3+-5p2K@aW(#eYq4s& zF&^BD{LCpfI&Tyg<1JL?@*g#33D%+dyRjONp+~8{$j(N*iA`8DBXh$D&gS^Adwdf0 zCg)IZcE$B)w?8*O^X5xXQ`3aHeitsn{aB1|qlIG_pUKX5>}2B|B+KSkT#A1p(`72i zr&79%jc%|WbFmvsFyI~^!fK9RL`~^OsDVB}oj03@>9`hEBONoze?2>cbZ9Q$K^=dO z8hL(U=EO?0INpF7n2jo?lURX2U=2cxoFSKplUEs+H;7#EV<76BDQxy%lHY zX?Et5kImSP>+pTlg}-4Jt|V`o!{bPD%thoE+Mj@-*6kujKWP!GI|OtYD{AhWFMP#M^Y8o&_h|F=-r zkGjWKQQxwkP|Nf-YB}D=Jgxt7o~k#j#710&S`GV=teO{4sXK`(vQwz3`Wl%XQ(m4K zxED1=y{PZUtGF6JKri0KCamL6E;V~4&o?LBj*pR_xz0u@oA^X#K&{Bnyu_v(&!aLk zm8Wq}vji>dKo!*xX5n~KL96K{Dg5-jx8MdMt_Ri;YFi1-jnbp0rJ^>0P}Q=G4PVW4 z9Z=ZmX#qnf%_c&FQQMLs{h3v<^1)0`iQAo~iY?>Z#5dTOR`(xO>Uhg#XFcI{JD$U4 zLdBU)D1}7i)u*Pa(r2%M@TjEK^3q$X3AYhGqJz-)RZSJ7rqWf}P9#)Ks=$pzKB4MU z%OUg;P&Mr!)GVTyC?iyrX2C%_JT&YaT9CM%yDE{BSCT#CcLtJk@(Oc`TI@iu*Xpx_ zP9PdHEg6%ZX;ZUHBhi564EV#=!Jf!)*g0g`P9PNXcoOw9#wK+{djnBB+@H8Jqq02U zkM;~0pQ8?IpFcRvg^`FA^hf&x9^)I{9kQKdRsMyn`k)YX$zS(ysK4L&MyGD|w9FYqk11HYMr`Uz=W2TUEWns%dCk zURP0Flek(qyH;HdR!x0lO?^c*ZA!a8=2Ue?{oz>9??j@FR%^sRXooCcgm(!JhkKLN zMcc9xJ;heO)t4HJT7j??ON|ZgOP%gd9xZ-8r=TTuI_PAQ<>o5+*PM~;SuMdp)JmQH zFIADHq|YHA>^^)-^60|htodE;(?Y2;vGMEs OnQXg1lfvK2SN;Rz@N)?O delta 1940 zcmYk+Z){Ul7{~Fauz%ecxQ>>wSt)dL%ynfQD{KQs$AGy%xF8G=jaqTR#j%cMotv5I z3&F%_qU1`ViBX6q(?}$ydndjin`XX-n3$mGcxBXRf(c@x`2F?P#FL);IrrS&d(L^z zbMM^X<-W}KzJl{cIY_;q`r!(*Qy3}aK>4A_Y$N`NAzWE(_5jvm6?UWUdje~42Al9a zMsNZ5;P1E}x0blRh&^T*yGkR$1+Ula2=?K2yofvSTkJ=FsaXdmQP6l1oEP%`gX)IcBSUCetEBlQ1;?O4z3wFOD+$4}M~e|6lULwnstN+<9v9>%Y5 z8`dzZPJ9#(;yK)lw@~+OX7nRCirR_=ROo+3es+(8CQ?nfWDhE`lNlNb8dq=w{*CPz zB;E?;Q5?WG@Nv9>32Y0JXgGtK*sG|JE}@d|4{X37@2c!UMeZ~v@FMDU%q-LBqS3(U zY`;B^%I4Yp`Fp5PUq*g*jRUvXZPb9ikQuvTov8Z`p$1H&`rk+0H=jShj{3Cxgd}^$ zexsq+<{#9G8hA{aTC*o{2({9AQ=j53=>S6_X;l(#BEA`v0OFV0>dY za>dKBBHvzx#f+c(8a1K9!Z*bHRFyKS_ELkZ@CDAzT z@s8y_xO&0%P?hgaSxL3CTpY=^mUs)ZhssL}oau_J)9PysOiql9oeWJSN7KWh$y6#d znw&T}9L>J$`_z*iTYKE&Ec;(y-Q3>P5(~weJL2)i<`!o*P+jVFHMe!doeP1gx?{QEZ;KZ}3)9IPe&gqofN{o(-rKU!b(G#gto!OEs>A$-S^y;(QzamMSn{|hCx(cJ(5 diff --git a/rest_framework/locale/sv/LC_MESSAGES/django.po b/rest_framework/locale/sv/LC_MESSAGES/django.po index daebfb63a7f..91ee9d7a775 100644 --- a/rest_framework/locale/sv/LC_MESSAGES/django.po +++ b/rest_framework/locale/sv/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" -"Last-Translator: Xavier Ordoquy \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-08 16:16+0000\n" +"Last-Translator: Joakim Soderlund\n" "Language-Team: Swedish (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,24 +35,24 @@ msgstr "Ogiltig \"basic\"-header. Användaruppgifterna är inte korrekt base64-k msgid "Invalid username/password." msgstr "Ogiltigt användarnamn/lösenord." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Användaren borttagen eller inaktiv." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Ogiltig \"token\"-header. Inga användaruppgifter tillhandahölls." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Ogiltig \"token\"-header. Strängen ska inte innehålla mellanslag." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "Ogiltig \"token\"-header. Strängen ska inte innehålla ogiltiga tecken." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Ogiltig \"token\"." @@ -110,241 +110,267 @@ msgstr "Medietypen \"{media_type}\" stöds inte." msgid "Request was throttled." msgstr "Förfrågan stoppades eftersom du har skickat för många." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Det här fältet är obligatoriskt." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Det här fältet får inte vara null." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" är inte ett giltigt booleskt värde." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Det här fältet får inte vara blankt." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Se till att detta fält inte har fler än {max_length} tecken." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Se till att detta fält har minst {min_length} tecken." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Ange en giltig mejladress." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Det här värdet matchar inte mallen." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Ange en giltig \"slug\" bestående av bokstäver, nummer, understreck eller bindestreck." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Ange en giltig URL." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value} är inte ett giltigt UUID." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "Ange en giltig IPv4- eller IPv6-adress." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Ett giltigt heltal krävs." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Se till att detta värde är mindre än eller lika med {max_value}." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Se till att detta värde är större än eller lika med {min_value}." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "Textvärdet är för långt." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Ett giltigt nummer krävs." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Se till att det inte finns fler än totalt {max_digits} siffror." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Se till att det inte finns fler än {max_decimal_places} decimaler." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Se till att det inte finns fler än {max_whole_digits} siffror före decimalpunkten." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Datumtiden har fel format. Använd ett av dessa format istället: {format}." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Förväntade en datumtid men fick ett datum." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Datumet har fel format. Använde ett av dessa format istället: {format}." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Förväntade ett datum men fick en datumtid." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Tiden har fel format. Använd ett av dessa format istället: {format}." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "Perioden har fel format. Använd ett av dessa format istället: {format}." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" är inte ett giltigt val." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." -msgstr "" +msgstr "Fler än {count} objekt..." -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Förväntade en lista med element men fick typen \"{input_type}\"." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." -msgstr "" +msgstr "Det här valet får inte vara tomt." -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." -msgstr "" +msgstr "\"{input}\" är inte ett giltigt val för en sökväg." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Ingen fil skickades." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Den skickade informationen var inte en fil. Kontrollera formulärets kodningstyp." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Inget filnamn kunde bestämmas." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Den skickade filen var tom." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Se till att det här filnamnet har högst {max_length} tecken (det har {length})." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Ladda upp en giltig bild. Filen du laddade upp var antingen inte en bild eller en skadad bild." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." -msgstr "" +msgstr "Den här listan får inte vara tom." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Förväntade en \"dictionary\" med element men fick typen \"{input_type}\"." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "Värdet måste vara giltig JSON." + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "Skicka" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Ogiltigt sida \"{page_number}\": {message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Ogiltig cursor." -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Ogiltigt pk \"{pk_value}\" - Objektet finns inte." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Felaktig typ. Förväntade pk-värde, fick {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Ogiltig hyperlänk - Ingen URL matchade." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Ogiltig hyperlänk - Felaktig URL-matching." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Ogiltig hyperlänk - Objektet finns inte." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Felaktig typ. Förväntade URL-sträng, fick {data_type}." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "Objekt med {slug_name}={value} finns inte." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Ogiltigt värde." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Ogiltig data. Förväntade en dictionary, men fick {datatype}." +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "Filter" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "Fältfilter" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "Ordning" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "Sök" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/tr/LC_MESSAGES/django.mo b/rest_framework/locale/tr/LC_MESSAGES/django.mo index aa35f51c9f0950dcfdec9520ac13aaf39a63a2ff..c3412b330afad6bfa535bb4507c7190eb378dae1 100644 GIT binary patch delta 2704 zcmZYAdu$X%9Ki9pQjSudZD}dbPHD9Yz2mMx!9wYS+ENPiY2~4iZEtDU?%l!O6;lY@ zA3h+OkmyMaiKa#qAWA@T*zli;K&*lwf0+gQv9h}K3JS;Ls?-r%8N#D9bUpZe1MzK zH(Mz`9zg!oCw$0#7w|d!9cAb8<|wrsSE2Op!2ljZzijno8m)K_YcV)CJzx|Ua(y&& zeF|kIXHiymBjX>Les5lS<;zh*Q;YKaD_DWAV-b#`#xYD3(D;c)Hr_{eS^b48@i7uE zwSxVWEnUrr4A6pJ+=KJc%v>MA0M~D#g!C(vi9SKOZy_&}>nfBSX)j>^t7#0;A+h`v z<@yfF%=6}@Z>&Vk^=6cbSt!YL3RmFI7{r`HrFLQsF2D~mp3gXrRrKG*s~)8ai`f5X z>A1u6B<3DcSz=XzvejKEGe3w+@C3@%osEXdoA5U7#3EKBIkO+- z`Vz_x%}y}NOEh}X!E@M#CG3+7G=!V+GRnj}%t9tqiOaAFSK~m&k5I3B5|5!g|24{jZ{Tz}|6WET-_%@`TqsBR@oPibs!o*Og(0lP z7&hTWlu-POvZC1}5Syq_?rOUF?L z_!}iBDmcuN?QxWqpGJ*8qMU|@=)s91VUQwuK;pZrZ$`I7+|reCJ<85X7$j7ai;oNDnQ*sgOXiyylkV`+ZlTs^ z`sA23PK-m#C#ywuLtsT_KMM5T--$a$&l_Fu1-EH=groPoeTt z;Qj+@ML8k-1h{1?pS{#N>Q1*O9seTQrBum{Ha~(G5Y2ESL+KQXunBSjloimox z?u1OoiVP&5&Z#Un4X1xlb;qScGvF`}Mx)v`oB`9Xx`+G1Ry22v+$5 zYjtp4&6-s!0>MBax1-(HWgfI*jOS}I;%1Gm3Ix~qFIyJh>>^Jx8w$`p~t-D(F24~1}!qy?HejsdEc536i9#7IPESxbCwVCmiGgjD2 z9Vu#xQ58>Tim(t1xXn$~hqLP^nQkZM(U|>*Z z#2A8mVZ6Xz8G^|YpA)?r4L(Lqh(cUqG-zUcu@?r3#$be~km&b!dwY_z&pCI!=brQb z|L=Wi`;ES-pTi4J8QLKIHu|*Rm;-ooA%AGEEHb7NUquTq;7a@r%P<(o-50}KnRjCy zK7lt@jSL@_h31#mXhQ zh-|?-n2({Z&tMWiL*0KBH=xBLTIXT@MDbB?ejKZKzL{a56MX3TgZ{z%8tR1QOLHMl zU=8yDjNk-XcmkK>>!_@KiX7g2i48c1TIWC1ec_NXrML#CwBv3D%1IWrk#ndYT=M3B zpmJNZ%$OFeMWteoH=jYB>>Jbre?{fIoTtX|L2Sh1_yC^6ax7U+{57a&`%T!7=Y7T; z#cJlgD{?v8kBZ0(sExgg6?hR4=o=Ge`c^4yPF=M1*tHRPwJf!(QwHlwaTgM0C# zDF%BOR1x>>cnojH@30g9!X&QcxC-qEs@P7Vitl5r!^^0RLRAkPh ze*Y&bh1C?0if{sTpjnLT{hwpt<3fOL(Y0H(yK=bUS1k;B^E`Zy+)xt$w|KkpZn~nO z*K{*INRQJMi7oVeTa+L0eD{^g&z0j2I%Q!fYPVX!Z3?SWqNWrnjQOS$skPIoIrpR+ zkzl#+KDcj?RQ^>f{d7Iw{VXcPYMXMHTTuB@Q{L57AAFPCFe}7LmzoMN-}E*u_9lMp zp|7X&2ATzQHKkXnBQq)YJ?>

Qq4~XB54g(|RnS^WjplxL-Hr(he3x?fF2$X)f5| zbLI-i{q}ItPtJWyzV_Sc;*fnf^oxCDnPWGHvQg{e#&QGtx5b3#Yxm- diff --git a/rest_framework/locale/tr/LC_MESSAGES/django.po b/rest_framework/locale/tr/LC_MESSAGES/django.po index 30b587036a4..0d3efc20c0a 100644 --- a/rest_framework/locale/tr/LC_MESSAGES/django.po +++ b/rest_framework/locale/tr/LC_MESSAGES/django.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Dogukan Tufekci , 2015 # Emrah BİLBAY , 2015 # Ertaç Paprat , 2015 # Mesut Can Gürle , 2015 @@ -13,9 +14,9 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" -"Last-Translator: Xavier Ordoquy \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-08 16:12+0000\n" +"Last-Translator: Recep KIRMIZI \n" "Language-Team: Turkish (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -39,24 +40,24 @@ msgstr "Geçersiz yetkilendirme başlığı. Uygunluk kriterleri base64 formatı msgid "Invalid username/password." msgstr "Geçersiz kullanıcı adı/parola" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "Kullanıcı aktif değil ya da silinmiş." -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "Geçersiz token başlığı. Kimlik bilgileri eksik." -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "Geçersiz token başlığı. Token'da boşluk olmamalı." -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." -msgstr "" +msgstr "Geçersiz token başlığı. Token geçersiz karakter içermemeli." -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "Geçersiz token." @@ -114,241 +115,267 @@ msgstr "İstekte desteklenmeyen medya tipi: \"{media_type}\"." msgid "Request was throttled." msgstr "Üst üste çok fazla istek yapıldı." -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "Bu alan zorunlu." -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "Bu alan boş bırakılmamalı." -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "\"{input}\" geçerli bir boolean değil." -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "Bu alan boş bırakılmamalı." -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "Bu alanın {max_length} karakterden fazla karakter barındırmadığından emin olun." -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "Bu alanın en az {min_length} karakter barındırdığından emin olun." -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "Geçerli bir e-posta adresi girin." -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "Bu değer gereken düzenli ifade deseni ile uyuşmuyor." -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "Harf, rakam, altçizgi veya tireden oluşan geçerli bir \"slug\" giriniz." -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "Geçerli bir URL girin." -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "\"{value}\" geçerli bir UUID değil." -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." -msgstr "" +msgstr "Geçerli bir IPv4 ya da IPv6 adresi girin." -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "Geçerli bir tam sayı girin." -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "Değerin {max_value} değerinden küçük ya da eşit olduğundan emin olun." -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "Değerin {min_value} değerinden büyük ya da eşit olduğundan emin olun." -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "String değeri çok uzun." -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "Geçerli bir numara gerekiyor." -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "Toplamda {max_digits} haneden fazla hane olmadığından emin olun." -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "Ondalık basamak değerinin {max_decimal_places} haneden fazla olmadığından emin olun." -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "Ondalık ayracından önce {max_whole_digits} basamaktan fazla olmadığından emin olun." -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "Datetime alanı yanlış biçimde. {format} biçimlerinden birini kullanın." -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "Datetime değeri bekleniyor, ama date değeri geldi." -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "Tarih biçimi yanlış. {format} biçimlerinden birini kullanın." -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "Date tipi beklenmekteydi, fakat datetime tipi geldi." -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "Time biçimi yanlış. {format} biçimlerinden birini kullanın." -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." -msgstr "" +msgstr "Duration biçimi yanlış. {format} biçimlerinden birini kullanın." -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "\"{input}\" geçerli bir seçim değil." -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." -msgstr "" +msgstr "{count} elemandan daha fazla..." -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "Elemanların listesi beklenirken \"{input_type}\" alındı." -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." -msgstr "" +msgstr "Bu seçim boş bırakılmamalı." -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." -msgstr "" +msgstr "\"{input}\" geçerli bir yol seçimi değil." -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "Hiçbir dosya verilmedi." -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "Gönderilen veri dosya değil. Formdaki kodlama tipini kontrol edin." -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "Hiçbir dosya adı belirlenemedi." -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "Gönderilen dosya boş." -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "Bu dosya adının en fazla {max_length} karakter uzunluğunda olduğundan emin olun. (şu anda {length} karakter)." -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Geçerli bir resim yükleyin. Yüklediğiniz dosya resim değil ya da bozuk." -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." -msgstr "" +msgstr "Bu liste boş olmamalı." -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "Sözlük tipi bir değişken beklenirken \"{input_type}\" tipi bir değişken alındı." -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "Değer geçerli bir JSON olmalı" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "Gönder" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "Geçersiz sayfa \"{page_number}\":{message}." -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "Sayfalandırma imleci geçersiz" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "Geçersiz pk \"{pk_value}\" - obje bulunamadı." -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "Hatalı tip. Pk değeri beklenirken, alınan {data_type}." -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "Geçersiz bağlantı - Hiçbir URL eşleşmedi." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "Geçersiz bağlantı - Yanlış URL eşleşmesi." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "Geçersiz bağlantı - Obje bulunamadı." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "Hatalı tip. URL metni bekleniyor, {data_type} alındı." -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "{slug_name}={value} değerini taşıyan obje bulunamadı." -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "Geçersiz değer." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "Geçersiz veri. Sözlük bekleniyordu fakat {datatype} geldi. " +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "Filtreler" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "Alan filtreleri" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "Sıralama" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "Arama" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/tr_TR/LC_MESSAGES/django.mo b/rest_framework/locale/tr_TR/LC_MESSAGES/django.mo index 580ae75400d243a901a498104f6b7672420619d2..1d3475bb273c9669249a5d57c620a3730379cb67 100644 GIT binary patch literal 1933 zcmai!O>Y}T7{?bVg_`$@69V)!psH=UerXjo+BB%7Nohp$qSQrjs>a^O_Qbn0?#!$c zr<8BOp{Lvk2M)~z2`L98J2wt|0uD$V_z2wikG+W<$%v80znz)?JTEiz_>YU{z7NnY zqJN0~6Z%K!w_m~!+6(Y)@DQ8_e+93A|A3dknU{m$8n_I4od!PuzstwZ!A~&$5%l(d z%lUUcfBuyqIEVRbU;!+FK9&e9gKOZ>9{4+aJ_p~!{PwGe5&RaM1%ClAgMWcD;G5@z z;9al;ehS_J{XPbZ;11~X{2}K6yo~XmppWCiYp?;n5BhzVzzDnvehexQ;S3vG2G|xL zv;fn=Tj<{R1$3l&+I(K#mbd$QKKn+_6TFju_!xZiXX=|jqhVWBU6II`>Y1_H1Si8- zI8mgP-453s$0R70btknFrgxocnWLt5^wg_dufxxZryE-snnbELg|w>b+89`%M_Ugl z6|UZzE?n3Dr`V`%dpogaOA4-eS6VkV=5(9Yc$ir>N~B!s2y1t=iN{OGHsgsQ8;i6^ zDw_GcUgwURp%#mn%~Xxgqa)lz8r`vhmbT7&ox1Z$#-@k81_I};uWQBlan#V6LV%lW zQfY_5#H=J^s@h^|NKRr)PltT$&D&>`X4c_6+l-6Jl!R@vjN_=bq#f-TNot%g!@SY{ z1jE%h{Av_(M9bSkH8pLmJgic~2Zp0+7q+;gjSJUoQ^w&^*0f<&M^xC{sD^h93;znj zW#KrY8|BJeSh*3FZ&77Fn!7n$u9V9VhFjc~K9ecBThZLyY#FWaKv)-6jZiibPMe6n z7G24PHcYIaWIejQi;MGLckrBaSBhd?r=MY)YG$IzVUSj ziAtrNot>id)@6ft{nk=EOgA(Pzo+SjmFe@PB==Kt=5ckabhWUyy0$VtyGpTKxT}?8 zg(UFiBXYd!N}WVVwLtZjFu0M$N7Z}b{8;D1X|M@bP#CdP&4}h}(w(LR8{Su8Gs%od z!h71JHX_v-4((!PfkvN;<%L4<1@{m9MedPI6MPpZX7DIwk(Q((+y8kl=^wSJ#_a^p zs;A9$5~-lBFlXv_Y;IV=l$Y=~LM4O4go1>%GTK`9x5g! zR;Eo<&Nz&Amf#8ohjo|}F@8#Pye}K(j40;8zAvVkFGVd&h*7;YalDU^2m6CV6$@&f z9+T}Knf_7QKPm=3(w8tniI-b7zP@86UQpk8qa=Prk>>p5Drj~=HEXh!~K8a#5 zc(I578pCnSu}orF49=D|31poJgM@3W_C_~c^Eb(kdZL4>heN|{iL{rpp?pHAlT;vk HxWe+kSs_Hn delta 100 zcmeC>?_#mIC&V(90SFj@SO$nyfS4JGb$}QIEP(g|P|^}egVeylQ}SzH+bG*1lU diff --git a/rest_framework/locale/tr_TR/LC_MESSAGES/django.po b/rest_framework/locale/tr_TR/LC_MESSAGES/django.po index 52e6e507229..a5f7d420bb5 100644 --- a/rest_framework/locale/tr_TR/LC_MESSAGES/django.po +++ b/rest_framework/locale/tr_TR/LC_MESSAGES/django.po @@ -3,12 +3,13 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# José Alaguna , 2015 msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Turkish (Turkey) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/tr_TR/)\n" "MIME-Version: 1.0\n" @@ -31,28 +32,28 @@ msgstr "" #: authentication.py:98 msgid "Invalid username/password." -msgstr "" +msgstr "Geçersiz kullanıcı adı / şifre." -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." -msgstr "" +msgstr "Geçersiz simge." #: authtoken/serializers.py:20 msgid "User account is disabled." @@ -88,7 +89,7 @@ msgstr "" #: exceptions.py:104 views.py:81 msgid "Not found." -msgstr "" +msgstr "Bulunamadı." #: exceptions.py:109 #, python-brace-format @@ -108,246 +109,272 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" -msgstr "" +msgstr "Geçersiz imleç." -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." -msgstr "" +msgstr "Geçersiz hyper link - URL maçı yok." -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." -msgstr "" +msgstr "Geçersiz hyper link - Yanlış URL maçı." -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." -msgstr "" +msgstr "Geçersiz hyper link - Nesne yok.." -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." -msgstr "" +msgstr "Geçersiz değer." -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "Geçersiz veri. Bir sözlük bekleniyor, ama var {datatype}." + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" msgstr "" #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 msgid "None" -msgstr "" +msgstr "Hiç kimse" #: templates/rest_framework/horizontal/select_multiple.html:2 #: templates/rest_framework/inline/select_multiple.html:2 @@ -357,12 +384,12 @@ msgstr "" #: validators.py:24 msgid "This field must be unique." -msgstr "" +msgstr "Bu alan benzersiz olmalıdır." #: validators.py:78 #, python-brace-format msgid "The fields {field_names} must make a unique set." -msgstr "" +msgstr "{field_names} alanları benzersiz bir set yapmak gerekir." #: validators.py:226 #, python-brace-format @@ -381,20 +408,20 @@ msgstr "" #: versioning.py:42 msgid "Invalid version in \"Accept\" header." -msgstr "" +msgstr "\"Kabul et\" başlığında geçersiz sürümü." #: versioning.py:73 versioning.py:115 msgid "Invalid version in URL path." -msgstr "" +msgstr "URL yolu geçersiz sürümü." #: versioning.py:144 msgid "Invalid version in hostname." -msgstr "" +msgstr "Hostname geçersiz sürümü." #: versioning.py:166 msgid "Invalid version in query parameter." -msgstr "" +msgstr "Sorgu parametresi geçersiz sürümü." #: views.py:88 msgid "Permission denied." -msgstr "" +msgstr "İzin reddedildi." diff --git a/rest_framework/locale/uk/LC_MESSAGES/django.mo b/rest_framework/locale/uk/LC_MESSAGES/django.mo index 5e8e0ed5fdf2006196b2af0bb7046f233db246e2..7af39663903d2da845740b0073b6508f19ca6236 100644 GIT binary patch delta 40 rcmX@da*k!fBtAnUT?2CkLklZYV{HS&i3_B-p(5s1rluQ@b}|A0\n" "Language-Team: Ukrainian (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/uk/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/vi/LC_MESSAGES/django.mo b/rest_framework/locale/vi/LC_MESSAGES/django.mo index 10a4c9b6c067bf89e20214259394c1408e1eb85a..0be6ed259ca6319ac2213a93cc2cff7c1d55bcb0 100644 GIT binary patch delta 40 rcmeyz{EvCUBtAnUT?2CkLklZYV{HS&i3_B-p(5s1rluQ@S~3Cv@@oqU delta 40 scmeyz{EvCUBt8R6T_ZyULjx;QQ*8sIi3_B-AtDAAR;Fefk6JPU0P\n" "Language-Team: Vietnamese (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/vi/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/zh-Hans/LC_MESSAGES/django.mo b/rest_framework/locale/zh-Hans/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..892ed14940ab9937a1ee281502a20c3cdc19317d GIT binary patch literal 9894 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 literal 0 HcmV?d00001 diff --git a/rest_framework/locale/zh-Hans/LC_MESSAGES/django.po b/rest_framework/locale/zh-Hans/LC_MESSAGES/django.po new file mode 100644 index 00000000000..983ff1ba078 --- /dev/null +++ b/rest_framework/locale/zh-Hans/LC_MESSAGES/django.po @@ -0,0 +1,429 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Ping , 2015 +# hunter007 , 2015 +# nypisces , 2015 +msgid "" +msgstr "" +"Project-Id-Version: Django REST framework\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-11 03:03+0000\n" +"Last-Translator: hunter007 \n" +"Language-Team: Chinese Simplified (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/zh-Hans/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh-Hans\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: authentication.py:72 +msgid "Invalid basic header. No credentials provided." +msgstr "无效的Basic认证头,没有提供认证信息。" + +#: authentication.py:75 +msgid "Invalid basic header. Credentials string should not contain spaces." +msgstr "认证字符串不应该包含空格(基本认证HTTP头无效)。" + +#: authentication.py:81 +msgid "Invalid basic header. Credentials not correctly base64 encoded." +msgstr "认证字符串base64编码错误(基本认证HTTP头无效)。" + +#: authentication.py:98 +msgid "Invalid username/password." +msgstr "用户名或者密码错误。" + +#: authentication.py:101 authentication.py:188 +msgid "User inactive or deleted." +msgstr "用户未激活或者已删除。" + +#: authentication.py:167 +msgid "Invalid token header. No credentials provided." +msgstr "没有提供认证信息(认证令牌HTTP头无效)。" + +#: authentication.py:170 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "认证令牌字符串不应该包含空格(无效的认证令牌HTTP头)。" + +#: authentication.py:176 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "无效的Token。Token字符串不能包含非法的字符。" + +#: authentication.py:185 +msgid "Invalid token." +msgstr "认证令牌无效。" + +#: authtoken/serializers.py:20 +msgid "User account is disabled." +msgstr "用户账户已禁用。" + +#: authtoken/serializers.py:23 +msgid "Unable to log in with provided credentials." +msgstr "无法使用提供的认证信息登录。" + +#: authtoken/serializers.py:26 +msgid "Must include \"username\" and \"password\"." +msgstr "必须包含 “用户名” 和 “密码”。" + +#: exceptions.py:49 +msgid "A server error occurred." +msgstr "服务器出现了错误。" + +#: exceptions.py:84 +msgid "Malformed request." +msgstr "错误的请求。" + +#: exceptions.py:89 +msgid "Incorrect authentication credentials." +msgstr "不正确的身份认证信息。" + +#: exceptions.py:94 +msgid "Authentication credentials were not provided." +msgstr "身份认证信息未提供。" + +#: exceptions.py:99 +msgid "You do not have permission to perform this action." +msgstr "您没有执行该操作的权限。" + +#: exceptions.py:104 views.py:81 +msgid "Not found." +msgstr "未找到。" + +#: exceptions.py:109 +#, python-brace-format +msgid "Method \"{method}\" not allowed." +msgstr "方法 “{method}” 不被允许。" + +#: exceptions.py:120 +msgid "Could not satisfy the request Accept header." +msgstr "无法满足Accept HTTP头的请求。" + +#: exceptions.py:132 +#, python-brace-format +msgid "Unsupported media type \"{media_type}\" in request." +msgstr "不支持请求中的媒体类型 “{media_type}”。" + +#: exceptions.py:145 +msgid "Request was throttled." +msgstr "请求超过了限速。" + +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 +#: validators.py:162 +msgid "This field is required." +msgstr "该字段是必填项。" + +#: fields.py:267 +msgid "This field may not be null." +msgstr "该字段不能为 null。" + +#: fields.py:603 fields.py:634 +#, python-brace-format +msgid "\"{input}\" is not a valid boolean." +msgstr "“{input}” 不是合法的布尔值。" + +#: fields.py:669 +msgid "This field may not be blank." +msgstr "该字段不能为空。" + +#: fields.py:670 fields.py:1656 +#, python-brace-format +msgid "Ensure this field has no more than {max_length} characters." +msgstr "请确保这个字段不能超过 {max_length} 个字符。" + +#: fields.py:671 +#, python-brace-format +msgid "Ensure this field has at least {min_length} characters." +msgstr "请确保这个字段至少包含 {min_length} 个字符。" + +#: fields.py:708 +msgid "Enter a valid email address." +msgstr "请输入合法的邮件地址。" + +#: fields.py:719 +msgid "This value does not match the required pattern." +msgstr "输入值不匹配要求的模式。" + +#: fields.py:730 +msgid "" +"Enter a valid \"slug\" consisting of letters, numbers, underscores or " +"hyphens." +msgstr "请输入合法的“短语“,只能包含字母,数字,下划线或者中划线。" + +#: fields.py:742 +msgid "Enter a valid URL." +msgstr "请输入合法的URL。" + +#: fields.py:755 +#, python-brace-format +msgid "\"{value}\" is not a valid UUID." +msgstr "“{value}”不是合法的UUID。" + +#: fields.py:791 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "请输入一个有效的IPv4或IPv6地址。" + +#: fields.py:816 +msgid "A valid integer is required." +msgstr "请填写合法的整数值。" + +#: fields.py:817 fields.py:852 fields.py:885 +#, python-brace-format +msgid "Ensure this value is less than or equal to {max_value}." +msgstr "请确保该值小于或者等于 {max_value}。" + +#: fields.py:818 fields.py:853 fields.py:886 +#, python-brace-format +msgid "Ensure this value is greater than or equal to {min_value}." +msgstr "请确保该值大于或者等于 {min_value}。" + +#: fields.py:819 fields.py:854 fields.py:890 +msgid "String value too large." +msgstr "字符串值太长。" + +#: fields.py:851 fields.py:884 +msgid "A valid number is required." +msgstr "请填写合法的数字。" + +#: fields.py:887 +#, python-brace-format +msgid "Ensure that there are no more than {max_digits} digits in total." +msgstr "请确保总计不超过 {max_digits} 个数字。" + +#: fields.py:888 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_decimal_places} decimal places." +msgstr "请确保总计不超过 {max_decimal_places} 个小数位。" + +#: fields.py:889 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_whole_digits} digits before the " +"decimal point." +msgstr "请确保小数点前不超过 {max_whole_digits} 个数字。" + +#: fields.py:1004 +#, python-brace-format +msgid "Datetime has wrong format. Use one of these formats instead: {format}." +msgstr "日期时间格式错误。请从这些格式中选择:{format}。" + +#: fields.py:1005 +msgid "Expected a datetime but got a date." +msgstr "期望为日期时间,获得的是日期。" + +#: fields.py:1079 +#, python-brace-format +msgid "Date has wrong format. Use one of these formats instead: {format}." +msgstr "日期格式错误。请从这些格式中选择:{format}。" + +#: fields.py:1080 +msgid "Expected a date but got a datetime." +msgstr "期望为日期,获得的是日期时间。" + +#: fields.py:1148 +#, python-brace-format +msgid "Time has wrong format. Use one of these formats instead: {format}." +msgstr "时间格式错误。请从这些格式中选择:{format}。" + +#: fields.py:1207 +#, python-brace-format +msgid "Duration has wrong format. Use one of these formats instead: {format}." +msgstr "持续时间的格式错误。使用这些格式中的一个:{format}。" + +#: fields.py:1232 fields.py:1281 +#, python-brace-format +msgid "\"{input}\" is not a valid choice." +msgstr "“{input}” 不是合法选项。" + +#: fields.py:1235 relations.py:62 relations.py:431 +#, python-brace-format +msgid "More than {count} items..." +msgstr "多于{count}条记录。" + +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 +#, python-brace-format +msgid "Expected a list of items but got type \"{input_type}\"." +msgstr "期望为一个包含物件的列表,得到的类型是“{input_type}”。" + +#: fields.py:1283 +msgid "This selection may not be empty." +msgstr "这项选择不能为空。" + +#: fields.py:1320 +#, python-brace-format +msgid "\"{input}\" is not a valid path choice." +msgstr "\"{input}\"不是一个有效路径选项。" + +#: fields.py:1339 +msgid "No file was submitted." +msgstr "没有提交任何文件。" + +#: fields.py:1340 +msgid "" +"The submitted data was not a file. Check the encoding type on the form." +msgstr "提交的数据不是一个文件。请检查表单的编码类型。" + +#: fields.py:1341 +msgid "No filename could be determined." +msgstr "无法检测到文件名。" + +#: fields.py:1342 +msgid "The submitted file is empty." +msgstr "提交的是空文件。" + +#: fields.py:1343 +#, python-brace-format +msgid "" +"Ensure this filename has at most {max_length} characters (it has {length})." +msgstr "确保该文件名最多包含 {max_length} 个字符 ( 当前长度为{length} ) 。" + +#: fields.py:1391 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "请上传有效图片。您上传的该文件不是图片或者图片已经损坏。" + +#: fields.py:1430 relations.py:428 serializers.py:521 +msgid "This list may not be empty." +msgstr "列表不能为空。" + +#: fields.py:1483 +#, python-brace-format +msgid "Expected a dictionary of items but got type \"{input_type}\"." +msgstr "期望是包含类目的字典,得到类型为 “{input_type}”。" + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "值必须是有效的 JSON 数据。" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "提交" + +#: pagination.py:189 +#, python-brace-format +msgid "Invalid page \"{page_number}\": {message}." +msgstr "无效页面 “{page_number}”:{message}。" + +#: pagination.py:407 +msgid "Invalid cursor" +msgstr "无效游标" + +#: relations.py:196 +#, python-brace-format +msgid "Invalid pk \"{pk_value}\" - object does not exist." +msgstr "无效主键 “{pk_value}” - 对象不存在。" + +#: relations.py:197 +#, python-brace-format +msgid "Incorrect type. Expected pk value, received {data_type}." +msgstr "类型错误。期望为主键,获得的类型为 {data_type}。" + +#: relations.py:229 +msgid "Invalid hyperlink - No URL match." +msgstr "无效超链接 -没有匹配的URL。" + +#: relations.py:230 +msgid "Invalid hyperlink - Incorrect URL match." +msgstr "无效超链接 -错误的URL匹配。" + +#: relations.py:231 +msgid "Invalid hyperlink - Object does not exist." +msgstr "无效超链接 -对象不存在。" + +#: relations.py:232 +#, python-brace-format +msgid "Incorrect type. Expected URL string, received {data_type}." +msgstr "类型错误。期望为URL字符串,实际的类型是 {data_type}。" + +#: relations.py:391 +#, python-brace-format +msgid "Object with {slug_name}={value} does not exist." +msgstr "属性 {slug_name} 为 {value} 的对象不存在。" + +#: relations.py:392 +msgid "Invalid value." +msgstr "无效值。" + +#: serializers.py:326 +#, python-brace-format +msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "无效数据。期待为字典类型,得到的是 {datatype} 。" + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "过滤器" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "过滤器字段" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "排序" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr " 搜索" + +#: templates/rest_framework/horizontal/radio.html:2 +#: templates/rest_framework/inline/radio.html:2 +#: templates/rest_framework/vertical/radio.html:2 +msgid "None" +msgstr "无" + +#: templates/rest_framework/horizontal/select_multiple.html:2 +#: templates/rest_framework/inline/select_multiple.html:2 +#: templates/rest_framework/vertical/select_multiple.html:2 +msgid "No items to select." +msgstr "没有可选项。" + +#: validators.py:24 +msgid "This field must be unique." +msgstr "该字段必须唯一。" + +#: validators.py:78 +#, python-brace-format +msgid "The fields {field_names} must make a unique set." +msgstr "字段 {field_names} 必须能构成唯一集合。" + +#: validators.py:226 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" date." +msgstr "该字段必须在日期 “{date_field}” 唯一。" + +#: validators.py:241 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" month." +msgstr "该字段必须在月份 “{date_field}” 唯一。" + +#: validators.py:254 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" year." +msgstr "该字段必须在年 “{date_field}” 唯一。" + +#: versioning.py:42 +msgid "Invalid version in \"Accept\" header." +msgstr "“Accept” HTTP头包含无效版本。" + +#: versioning.py:73 versioning.py:115 +msgid "Invalid version in URL path." +msgstr "URL路径包含无效版本。" + +#: versioning.py:144 +msgid "Invalid version in hostname." +msgstr "主机名包含无效版本。" + +#: versioning.py:166 +msgid "Invalid version in query parameter." +msgstr "请求参数里包含无效版本。" + +#: views.py:88 +msgid "Permission denied." +msgstr "没有权限。" diff --git a/rest_framework/locale/zh-Hant/LC_MESSAGES/django.mo b/rest_framework/locale/zh-Hant/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..0e9d3a3370df531ef82d539da31f1d2f99af8d03 GIT binary patch literal 529 zcmZutO-}+b5Y^~ukDfiu!Gi{e-Ng{Gh%q8Y6A1)YX941CU(C;PKwj@2b;d;IsxJ_qMnGq%=Cj#1IrO6TSL#ZlflQ|rYy)Q%<&gb*0FAda)7G-ysE)%0Aw%#Ph z`2X`TUt5KrW4x8xhetv8uG{(hz_=O(ZKFMDPV!Okmv~zEu*jv-O&E@)b>v%*$qhFC wbmc%Jve?l>lPaAFXuK%D$t7Uz7WDI}l{wxRJ8=SZvD~^=+=NxxikiXJFSA&pApigX literal 0 HcmV?d00001 diff --git a/rest_framework/locale/zh-Hant/LC_MESSAGES/django.po b/rest_framework/locale/zh-Hant/LC_MESSAGES/django.po new file mode 100644 index 00000000000..a04ed527a89 --- /dev/null +++ b/rest_framework/locale/zh-Hant/LC_MESSAGES/django.po @@ -0,0 +1,426 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Django REST framework\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" +"Last-Translator: Xavier Ordoquy \n" +"Language-Team: Chinese Traditional (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/zh-Hant/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh-Hant\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: authentication.py:72 +msgid "Invalid basic header. No credentials provided." +msgstr "" + +#: authentication.py:75 +msgid "Invalid basic header. Credentials string should not contain spaces." +msgstr "" + +#: authentication.py:81 +msgid "Invalid basic header. Credentials not correctly base64 encoded." +msgstr "" + +#: authentication.py:98 +msgid "Invalid username/password." +msgstr "" + +#: authentication.py:101 authentication.py:188 +msgid "User inactive or deleted." +msgstr "" + +#: authentication.py:167 +msgid "Invalid token header. No credentials provided." +msgstr "" + +#: authentication.py:170 +msgid "Invalid token header. Token string should not contain spaces." +msgstr "" + +#: authentication.py:176 +msgid "" +"Invalid token header. Token string should not contain invalid characters." +msgstr "" + +#: authentication.py:185 +msgid "Invalid token." +msgstr "" + +#: authtoken/serializers.py:20 +msgid "User account is disabled." +msgstr "" + +#: authtoken/serializers.py:23 +msgid "Unable to log in with provided credentials." +msgstr "" + +#: authtoken/serializers.py:26 +msgid "Must include \"username\" and \"password\"." +msgstr "" + +#: exceptions.py:49 +msgid "A server error occurred." +msgstr "" + +#: exceptions.py:84 +msgid "Malformed request." +msgstr "" + +#: exceptions.py:89 +msgid "Incorrect authentication credentials." +msgstr "" + +#: exceptions.py:94 +msgid "Authentication credentials were not provided." +msgstr "" + +#: exceptions.py:99 +msgid "You do not have permission to perform this action." +msgstr "" + +#: exceptions.py:104 views.py:81 +msgid "Not found." +msgstr "" + +#: exceptions.py:109 +#, python-brace-format +msgid "Method \"{method}\" not allowed." +msgstr "" + +#: exceptions.py:120 +msgid "Could not satisfy the request Accept header." +msgstr "" + +#: exceptions.py:132 +#, python-brace-format +msgid "Unsupported media type \"{media_type}\" in request." +msgstr "" + +#: exceptions.py:145 +msgid "Request was throttled." +msgstr "" + +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 +#: validators.py:162 +msgid "This field is required." +msgstr "" + +#: fields.py:267 +msgid "This field may not be null." +msgstr "" + +#: fields.py:603 fields.py:634 +#, python-brace-format +msgid "\"{input}\" is not a valid boolean." +msgstr "" + +#: fields.py:669 +msgid "This field may not be blank." +msgstr "" + +#: fields.py:670 fields.py:1656 +#, python-brace-format +msgid "Ensure this field has no more than {max_length} characters." +msgstr "" + +#: fields.py:671 +#, python-brace-format +msgid "Ensure this field has at least {min_length} characters." +msgstr "" + +#: fields.py:708 +msgid "Enter a valid email address." +msgstr "" + +#: fields.py:719 +msgid "This value does not match the required pattern." +msgstr "" + +#: fields.py:730 +msgid "" +"Enter a valid \"slug\" consisting of letters, numbers, underscores or " +"hyphens." +msgstr "" + +#: fields.py:742 +msgid "Enter a valid URL." +msgstr "" + +#: fields.py:755 +#, python-brace-format +msgid "\"{value}\" is not a valid UUID." +msgstr "" + +#: fields.py:791 +msgid "Enter a valid IPv4 or IPv6 address." +msgstr "" + +#: fields.py:816 +msgid "A valid integer is required." +msgstr "" + +#: fields.py:817 fields.py:852 fields.py:885 +#, python-brace-format +msgid "Ensure this value is less than or equal to {max_value}." +msgstr "" + +#: fields.py:818 fields.py:853 fields.py:886 +#, python-brace-format +msgid "Ensure this value is greater than or equal to {min_value}." +msgstr "" + +#: fields.py:819 fields.py:854 fields.py:890 +msgid "String value too large." +msgstr "" + +#: fields.py:851 fields.py:884 +msgid "A valid number is required." +msgstr "" + +#: fields.py:887 +#, python-brace-format +msgid "Ensure that there are no more than {max_digits} digits in total." +msgstr "" + +#: fields.py:888 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_decimal_places} decimal places." +msgstr "" + +#: fields.py:889 +#, python-brace-format +msgid "" +"Ensure that there are no more than {max_whole_digits} digits before the " +"decimal point." +msgstr "" + +#: fields.py:1004 +#, python-brace-format +msgid "Datetime has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1005 +msgid "Expected a datetime but got a date." +msgstr "" + +#: fields.py:1079 +#, python-brace-format +msgid "Date has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1080 +msgid "Expected a date but got a datetime." +msgstr "" + +#: fields.py:1148 +#, python-brace-format +msgid "Time has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1207 +#, python-brace-format +msgid "Duration has wrong format. Use one of these formats instead: {format}." +msgstr "" + +#: fields.py:1232 fields.py:1281 +#, python-brace-format +msgid "\"{input}\" is not a valid choice." +msgstr "" + +#: fields.py:1235 relations.py:62 relations.py:431 +#, python-brace-format +msgid "More than {count} items..." +msgstr "" + +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 +#, python-brace-format +msgid "Expected a list of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1283 +msgid "This selection may not be empty." +msgstr "" + +#: fields.py:1320 +#, python-brace-format +msgid "\"{input}\" is not a valid path choice." +msgstr "" + +#: fields.py:1339 +msgid "No file was submitted." +msgstr "" + +#: fields.py:1340 +msgid "" +"The submitted data was not a file. Check the encoding type on the form." +msgstr "" + +#: fields.py:1341 +msgid "No filename could be determined." +msgstr "" + +#: fields.py:1342 +msgid "The submitted file is empty." +msgstr "" + +#: fields.py:1343 +#, python-brace-format +msgid "" +"Ensure this filename has at most {max_length} characters (it has {length})." +msgstr "" + +#: fields.py:1391 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" + +#: fields.py:1430 relations.py:428 serializers.py:521 +msgid "This list may not be empty." +msgstr "" + +#: fields.py:1483 +#, python-brace-format +msgid "Expected a dictionary of items but got type \"{input_type}\"." +msgstr "" + +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 +#, python-brace-format +msgid "Invalid page \"{page_number}\": {message}." +msgstr "" + +#: pagination.py:407 +msgid "Invalid cursor" +msgstr "" + +#: relations.py:196 +#, python-brace-format +msgid "Invalid pk \"{pk_value}\" - object does not exist." +msgstr "" + +#: relations.py:197 +#, python-brace-format +msgid "Incorrect type. Expected pk value, received {data_type}." +msgstr "" + +#: relations.py:229 +msgid "Invalid hyperlink - No URL match." +msgstr "" + +#: relations.py:230 +msgid "Invalid hyperlink - Incorrect URL match." +msgstr "" + +#: relations.py:231 +msgid "Invalid hyperlink - Object does not exist." +msgstr "" + +#: relations.py:232 +#, python-brace-format +msgid "Incorrect type. Expected URL string, received {data_type}." +msgstr "" + +#: relations.py:391 +#, python-brace-format +msgid "Object with {slug_name}={value} does not exist." +msgstr "" + +#: relations.py:392 +msgid "Invalid value." +msgstr "" + +#: serializers.py:326 +#, python-brace-format +msgid "Invalid data. Expected a dictionary, but got {datatype}." +msgstr "" + +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + +#: templates/rest_framework/horizontal/radio.html:2 +#: templates/rest_framework/inline/radio.html:2 +#: templates/rest_framework/vertical/radio.html:2 +msgid "None" +msgstr "" + +#: templates/rest_framework/horizontal/select_multiple.html:2 +#: templates/rest_framework/inline/select_multiple.html:2 +#: templates/rest_framework/vertical/select_multiple.html:2 +msgid "No items to select." +msgstr "" + +#: validators.py:24 +msgid "This field must be unique." +msgstr "" + +#: validators.py:78 +#, python-brace-format +msgid "The fields {field_names} must make a unique set." +msgstr "" + +#: validators.py:226 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" date." +msgstr "" + +#: validators.py:241 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" month." +msgstr "" + +#: validators.py:254 +#, python-brace-format +msgid "This field must be unique for the \"{date_field}\" year." +msgstr "" + +#: versioning.py:42 +msgid "Invalid version in \"Accept\" header." +msgstr "" + +#: versioning.py:73 versioning.py:115 +msgid "Invalid version in URL path." +msgstr "" + +#: versioning.py:144 +msgid "Invalid version in hostname." +msgstr "" + +#: versioning.py:166 +msgid "Invalid version in query parameter." +msgstr "" + +#: views.py:88 +msgid "Permission denied." +msgstr "" diff --git a/rest_framework/locale/zh_CN/LC_MESSAGES/django.mo b/rest_framework/locale/zh_CN/LC_MESSAGES/django.mo index 39e31b65508d43fd949ee7d87ec274fd6fa7c909..c1552b71f9b251bbe8dc876caf4308d059b54060 100644 GIT binary patch delta 2539 zcmZY9d2AF_9Ki9n&`ZwVEg(1)P@&yr+X96`xrB1J!E%aX78u&a?Jn+4C4^&--L_t9*)BC z1C&a|3X}zHL>b>>c?RWvH*lhCHF2O){8R}CHm4S$?63l5qOCX?KfxLJD?W$zK}tFB zRph7M;~?j?;x`fw=yomRgAWhZA* zc6QUU#~M#aiS2wG%A+Ykx&B3b2De})oBf zYJ7{!85qoL5<=bb2);o78s=dR@nbGkj*?teXva4!+fZJwD3+mpIQPWu$P1?4Lb>h; z&c|RI4GE=2h^wmS;)c`*Ae=(?}kvuTUoZ8HuXun-h!Ja3n~o%yJXT z`TMaiHlWON0%d_sm>}=}T^bUiC`xGmH2+|X1dx?xqGWp>7GfdJ#Y&X(n=QYvyo)?d z^%qJ6(^$Q@03`>4DA!%U5zMb{(2$kiM}8`S?M=sAlw{n5@^;kWGQ5RygB&uCAgHM* z*S%!98*TJ^i|kg4Y*IEfg<48ApFj69cLinw@+~nZmAbx3{dKF`K%Gnr96z zL3zkh_|BW}>|}IEN=r#Jk4jC$mDCEVAFsOsXV+eEL+*Hn(?kjjz)nTMz_b% z{Q*@PGwc}9KQ7zn*EOTc<<+*W_tkif9h%$Fs{;;4Xj1Z}q;mfT-S75Rh8`s6jn-ZM z^;N3EkOA#Am#2mceLl_O@>l8(RZ+99+HHjGDJ`~19(Tads$E+(ug}od>6%`>+1Tn( z%c|S~Euee!^@iK${oe`U?^0d1>=ovXt82IeS2B%zgSN1uyew3het1xRf!$f8~!WjDg73^0)~B=-{lQ>T!znItW~is-S6bWXR4y{VJl?O6OG+1=Ob6@Lh0JI_`~l++TRZSpp6?9J$X8M@T%elT_1ng z*>)ka>+{H|rk=WvUv}+QogF74%}2x8BO7c*k=pw1Mr)$ZwnN=}u5`Awcb#kJ0y(w2 zqoJqqvz}cCqi>%3_ut{>oHe$Qa@UT1J&l*6M_Xgt=sLF744D?KJ0CsN5{er=_8;M@ BnB)Ke delta 1954 zcmYk+TTEO<9LMolF3VD+w7@Qx+IoOOt1Qbxfo|89VkuGz*r2Vp*rcwysThPvx=0Oi zD>n5(A50Ed8ug(`6;r86-4`zytu0NAX^e?!qA^vmNHm%lA53`C@9&)R;3RWCGjncp z{_{UG*MDhW`c`qyjG+ur@1$PHGUgc!=W?L@hJwJl>1nVJ`;P7!$_?>inD7hu>li zRuvdij9sV+9Y&3(JkOz?_bImGD%SFT(|Cvb;6oVW#A~=4zr;?=FEl2C{kRq{zz9xb4_?JxSXjjKc)#hTQHg^Zz!Ylcr%_+>uIHjRzJ&Tx z|2lUmDsT(^7>4jMwD37B!CB0~c_dioGB)A@ruCpdXz0d&u?$1&-I+&_H8RIg6PZJu zzvlISK&|;IwqcNmX=(aU{nMxq`vmpEo2XpyGpl;+DIxw%G*S#4!8xozU#aT`Y^L9e zU;B)C3h$;LW44OW}@QZK}vszR)iL(Qi4Qu%A0H3jE4-if4-lenygv(8}d z(}ALdSHuITLYo@agGBVwP?y16|&b^eWhNQ zx`*0GwF?53_EKIr(-O$f%{)}NCdZywpRrqt>q95ThDMHCrL!yZ@7(_I ggXL2T%NH*GHuKppr=~K^HRpU8f9)ead#bMXKYfSSDgXcg diff --git a/rest_framework/locale/zh_CN/LC_MESSAGES/django.po b/rest_framework/locale/zh_CN/LC_MESSAGES/django.po index 920d70ad51c..a5e6cde2f86 100644 --- a/rest_framework/locale/zh_CN/LC_MESSAGES/django.po +++ b/rest_framework/locale/zh_CN/LC_MESSAGES/django.po @@ -3,15 +3,16 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# hunter007 , 2015 # Lele Long , 2015 # Ming Chen , 2015 msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" -"Last-Translator: Xavier Ordoquy \n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-11 03:00+0000\n" +"Last-Translator: hunter007 \n" "Language-Team: Chinese (China) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,24 +36,24 @@ msgstr "认证字符串base64编码错误(基本认证HTTP头无效)。" msgid "Invalid username/password." msgstr "用户名或者密码错误。" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "用户未激活或者已删除。" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "没有提供认证信息(认证令牌HTTP头无效)。" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "认证令牌字符串不应该包含空格(无效的认证令牌HTTP头)。" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "无效的Token。Token字符串不能包含非法的字符。" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "认证令牌无效。" @@ -110,241 +111,267 @@ msgstr "不支持请求中的媒体类型 “{media_type}”。" msgid "Request was throttled." msgstr "请求超过了限速。" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "该字段是必填项。" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "该字段不能为 null。" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "“{input}” 不是合法的布尔值。" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "该字段不能为空。" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "请确保这个字段不能超过 {max_length} 个字符。" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "请确保这个字段至少包含 {min_length} 个字符。" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "请输入合法的邮件地址。" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "输入值不匹配要求的模式。" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "请输入合法的“短语“,只能包含字母,数字,下划线或者中划线。" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "请输入合法的URL。" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "“{value}”不是合法的UUID。" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "请输入一个有效的IPv4或IPv6地址。" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "请填写合法的整数值。" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "请确保该值小于或者等于 {max_value}。" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "请确保该值大于或者等于 {min_value}。" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "字符串值太长。" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "请填写合法的数字。" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "请确保总计不超过 {max_digits} 个数字。" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "请确保总计不超过 {max_decimal_places} 个小数位。" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "请确保小数点前不超过 {max_whole_digits} 个数字。" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "日期时间格式错误。请从这些格式中选择:{format}。" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "期望为日期时间,得到的是日期。" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "日期格式错误。请从这些格式中选择:{format}。" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "期望为日期,得到的是日期时间。" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "时间格式错误。请从这些格式中选择:{format}。" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "持续时间的格式错误。使用这些格式中的一个:{format}。" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "“{input}” 不是合法选项。" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." -msgstr "" +msgstr "多于{count}条记录。" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "期望为一个包含物件的列表,得到的类型是“{input_type}”。" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." -msgstr "" +msgstr "这项选择不能为空。" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." -msgstr "" +msgstr "“{input}” 不是有效路径选项。" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "没有提交任何文件。" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "提交的数据不是一个文件。请检查表单的编码类型。" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "无法检测到文件名。" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "提交的是空文件。" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "确保该文件名最多包含 {max_length} 个字符 ( 当前长度为{length} ) 。" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "请上传有效图片。您上传的该文件不是图片或者图片已经损坏。" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." -msgstr "" +msgstr "列表字段不能为空值。" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "期望是包含类目的字典,得到类型为 “{input_type}”。" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "值必须是有效的 JSON 数据。" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "保存" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "无效页面 “{page_number}”:{message}。" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "无效游标" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "无效主键 “{pk_value}” - 对象不存在。" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "类型错误。期望为主键,得到的类型为 {data_type}。" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "无效超链接 -没有匹配的URL。" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "无效超链接 -错误的URL匹配。" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "无效超链接 -对象不存在。" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "类型错误。期望为URL字符串,实际的类型是 {data_type}。" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "属性 {slug_name} 为 {value} 的对象不存在。" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "无效值。" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "无效数据。期待为字典类型,得到的是 {datatype} 。" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "过滤器" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "过滤器字段" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "排序" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "查找" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 diff --git a/rest_framework/locale/zh_TW/LC_MESSAGES/django.mo b/rest_framework/locale/zh_TW/LC_MESSAGES/django.mo index b82d4c1c668d8d0f909d6cdf82a77d680bc60d80..e202136e7681b20ca558f9b9d0109c9d62dcf020 100644 GIT binary patch delta 40 qcmeBT>0+5MiO0+5MiO;}N*T_)8(7?*nRNKI4;sPmdh=_rOm8sdrqppkq&tnQO diff --git a/rest_framework/locale/zh_TW/LC_MESSAGES/django.po b/rest_framework/locale/zh_TW/LC_MESSAGES/django.po index a2bfc894cee..5ca07eeaaf2 100644 --- a/rest_framework/locale/zh_TW/LC_MESSAGES/django.po +++ b/rest_framework/locale/zh_TW/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Django REST framework\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-09-21 10:55+0200\n" -"PO-Revision-Date: 2015-09-21 08:56+0000\n" +"POT-Creation-Date: 2015-12-07 18:53+0100\n" +"PO-Revision-Date: 2015-12-07 17:55+0000\n" "Last-Translator: Xavier Ordoquy \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/django-rest-framework-1/django-rest-framework/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -33,24 +33,24 @@ msgstr "" msgid "Invalid username/password." msgstr "" -#: authentication.py:101 authentication.py:189 +#: authentication.py:101 authentication.py:188 msgid "User inactive or deleted." msgstr "" -#: authentication.py:168 +#: authentication.py:167 msgid "Invalid token header. No credentials provided." msgstr "" -#: authentication.py:171 +#: authentication.py:170 msgid "Invalid token header. Token string should not contain spaces." msgstr "" -#: authentication.py:177 +#: authentication.py:176 msgid "" "Invalid token header. Token string should not contain invalid characters." msgstr "" -#: authentication.py:186 +#: authentication.py:185 msgid "Invalid token." msgstr "" @@ -108,241 +108,267 @@ msgstr "" msgid "Request was throttled." msgstr "" -#: fields.py:262 relations.py:191 relations.py:224 validators.py:79 +#: fields.py:266 relations.py:195 relations.py:228 validators.py:79 #: validators.py:162 msgid "This field is required." msgstr "" -#: fields.py:263 +#: fields.py:267 msgid "This field may not be null." msgstr "" -#: fields.py:599 fields.py:627 +#: fields.py:603 fields.py:634 #, python-brace-format msgid "\"{input}\" is not a valid boolean." msgstr "" -#: fields.py:662 +#: fields.py:669 msgid "This field may not be blank." msgstr "" -#: fields.py:663 fields.py:1594 +#: fields.py:670 fields.py:1656 #, python-brace-format msgid "Ensure this field has no more than {max_length} characters." msgstr "" -#: fields.py:664 +#: fields.py:671 #, python-brace-format msgid "Ensure this field has at least {min_length} characters." msgstr "" -#: fields.py:701 +#: fields.py:708 msgid "Enter a valid email address." msgstr "" -#: fields.py:712 +#: fields.py:719 msgid "This value does not match the required pattern." msgstr "" -#: fields.py:723 +#: fields.py:730 msgid "" "Enter a valid \"slug\" consisting of letters, numbers, underscores or " "hyphens." msgstr "" -#: fields.py:735 +#: fields.py:742 msgid "Enter a valid URL." msgstr "" -#: fields.py:748 +#: fields.py:755 #, python-brace-format msgid "\"{value}\" is not a valid UUID." msgstr "" -#: fields.py:782 +#: fields.py:791 msgid "Enter a valid IPv4 or IPv6 address." msgstr "" -#: fields.py:807 +#: fields.py:816 msgid "A valid integer is required." msgstr "" -#: fields.py:808 fields.py:843 fields.py:876 +#: fields.py:817 fields.py:852 fields.py:885 #, python-brace-format msgid "Ensure this value is less than or equal to {max_value}." msgstr "" -#: fields.py:809 fields.py:844 fields.py:877 +#: fields.py:818 fields.py:853 fields.py:886 #, python-brace-format msgid "Ensure this value is greater than or equal to {min_value}." msgstr "" -#: fields.py:810 fields.py:845 fields.py:881 +#: fields.py:819 fields.py:854 fields.py:890 msgid "String value too large." msgstr "" -#: fields.py:842 fields.py:875 +#: fields.py:851 fields.py:884 msgid "A valid number is required." msgstr "" -#: fields.py:878 +#: fields.py:887 #, python-brace-format msgid "Ensure that there are no more than {max_digits} digits in total." msgstr "" -#: fields.py:879 +#: fields.py:888 #, python-brace-format msgid "" "Ensure that there are no more than {max_decimal_places} decimal places." msgstr "" -#: fields.py:880 +#: fields.py:889 #, python-brace-format msgid "" "Ensure that there are no more than {max_whole_digits} digits before the " "decimal point." msgstr "" -#: fields.py:994 +#: fields.py:1004 #, python-brace-format msgid "Datetime has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:995 +#: fields.py:1005 msgid "Expected a datetime but got a date." msgstr "" -#: fields.py:1060 +#: fields.py:1079 #, python-brace-format msgid "Date has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1061 +#: fields.py:1080 msgid "Expected a date but got a datetime." msgstr "" -#: fields.py:1125 +#: fields.py:1148 #, python-brace-format msgid "Time has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1180 +#: fields.py:1207 #, python-brace-format msgid "Duration has wrong format. Use one of these formats instead: {format}." msgstr "" -#: fields.py:1205 fields.py:1254 +#: fields.py:1232 fields.py:1281 #, python-brace-format msgid "\"{input}\" is not a valid choice." msgstr "" -#: fields.py:1208 relations.py:58 relations.py:427 +#: fields.py:1235 relations.py:62 relations.py:431 #, python-brace-format msgid "More than {count} items..." msgstr "" -#: fields.py:1255 fields.py:1401 relations.py:423 serializers.py:504 +#: fields.py:1282 fields.py:1429 relations.py:427 serializers.py:520 #, python-brace-format msgid "Expected a list of items but got type \"{input_type}\"." msgstr "" -#: fields.py:1256 +#: fields.py:1283 msgid "This selection may not be empty." msgstr "" -#: fields.py:1294 +#: fields.py:1320 #, python-brace-format msgid "\"{input}\" is not a valid path choice." msgstr "" -#: fields.py:1313 +#: fields.py:1339 msgid "No file was submitted." msgstr "" -#: fields.py:1314 +#: fields.py:1340 msgid "" "The submitted data was not a file. Check the encoding type on the form." msgstr "" -#: fields.py:1315 +#: fields.py:1341 msgid "No filename could be determined." msgstr "" -#: fields.py:1316 +#: fields.py:1342 msgid "The submitted file is empty." msgstr "" -#: fields.py:1317 +#: fields.py:1343 #, python-brace-format msgid "" "Ensure this filename has at most {max_length} characters (it has {length})." msgstr "" -#: fields.py:1363 +#: fields.py:1391 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: fields.py:1402 relations.py:424 serializers.py:505 +#: fields.py:1430 relations.py:428 serializers.py:521 msgid "This list may not be empty." msgstr "" -#: fields.py:1452 +#: fields.py:1483 #, python-brace-format msgid "Expected a dictionary of items but got type \"{input_type}\"." msgstr "" -#: pagination.py:192 +#: fields.py:1530 +msgid "Value must be valid JSON." +msgstr "" + +#: filters.py:35 templates/rest_framework/filters/django_filter.html:5 +msgid "Submit" +msgstr "" + +#: pagination.py:189 #, python-brace-format msgid "Invalid page \"{page_number}\": {message}." msgstr "" -#: pagination.py:462 +#: pagination.py:407 msgid "Invalid cursor" msgstr "" -#: relations.py:192 +#: relations.py:196 #, python-brace-format msgid "Invalid pk \"{pk_value}\" - object does not exist." msgstr "" -#: relations.py:193 +#: relations.py:197 #, python-brace-format msgid "Incorrect type. Expected pk value, received {data_type}." msgstr "" -#: relations.py:225 +#: relations.py:229 msgid "Invalid hyperlink - No URL match." msgstr "" -#: relations.py:226 +#: relations.py:230 msgid "Invalid hyperlink - Incorrect URL match." msgstr "" -#: relations.py:227 +#: relations.py:231 msgid "Invalid hyperlink - Object does not exist." msgstr "" -#: relations.py:228 +#: relations.py:232 #, python-brace-format msgid "Incorrect type. Expected URL string, received {data_type}." msgstr "" -#: relations.py:387 +#: relations.py:391 #, python-brace-format msgid "Object with {slug_name}={value} does not exist." msgstr "" -#: relations.py:388 +#: relations.py:392 msgid "Invalid value." msgstr "" -#: serializers.py:310 +#: serializers.py:326 #, python-brace-format msgid "Invalid data. Expected a dictionary, but got {datatype}." msgstr "" +#: templates/rest_framework/admin.html:118 +#: templates/rest_framework/base.html:128 +msgid "Filters" +msgstr "" + +#: templates/rest_framework/filters/django_filter.html:2 +#: templates/rest_framework/filters/django_filter_crispyforms.html:4 +msgid "Field filters" +msgstr "" + +#: templates/rest_framework/filters/ordering.html:3 +msgid "Ordering" +msgstr "" + +#: templates/rest_framework/filters/search.html:2 +msgid "Search" +msgstr "" + #: templates/rest_framework/horizontal/radio.html:2 #: templates/rest_framework/inline/radio.html:2 #: templates/rest_framework/vertical/radio.html:2 From 5224feded47c5f85514ac89c79e3de49060b0d99 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Mon, 14 Dec 2015 07:32:50 +0100 Subject: [PATCH 035/131] Update the release date. --- docs/topics/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/release-notes.md b/docs/topics/release-notes.md index 767f26c6c99..d21f8e51b54 100644 --- a/docs/topics/release-notes.md +++ b/docs/topics/release-notes.md @@ -42,7 +42,7 @@ You can determine your currently installed version using `pip freeze`: ### 3.3.2 -**Date**: [16th December 2015][3.3.2-milestone]. +**Date**: [14th December 2015][3.3.2-milestone]. * `ListField` enforces input is a list. ([#3513][gh3513]) * Fix regression hiding raw data form. ([#3600][gh3600], [#3578][gh3578]) From ef8bde2d427c4dd39ac58a1649f47938f783be2d Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Mon, 14 Dec 2015 07:33:17 +0100 Subject: [PATCH 036/131] Bump version to 3.3.2 --- rest_framework/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/__init__.py b/rest_framework/__init__.py index d18b6d55f8b..0e51999964a 100644 --- a/rest_framework/__init__.py +++ b/rest_framework/__init__.py @@ -8,7 +8,7 @@ """ __title__ = 'Django REST framework' -__version__ = '3.3.1' +__version__ = '3.3.2' __author__ = 'Tom Christie' __license__ = 'BSD 2-Clause' __copyright__ = 'Copyright 2011-2015 Tom Christie' From c45fdee2ab7afe33c40bcf4a6239e4f5a90b026c Mon Sep 17 00:00:00 2001 From: NY Date: Tue, 15 Dec 2015 15:22:03 +0800 Subject: [PATCH 037/131] Fix transfix config for Django --- .tx/config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tx/config b/.tx/config index 271fa1e35d0..e151a7e6ff6 100644 --- a/.tx/config +++ b/.tx/config @@ -1,9 +1,9 @@ [main] host = https://www.transifex.com +lang_map = sr@latin:sr_Latn, zh-Hans:zh_Hans, zh-Hant:zh_Hant [django-rest-framework.djangopo] file_filter = rest_framework/locale//LC_MESSAGES/django.po source_file = rest_framework/locale/en_US/LC_MESSAGES/django.po source_lang = en_US type = PO - From 613e0d41ac32e0f4253a84a5ebb87d443c9aaf67 Mon Sep 17 00:00:00 2001 From: NY Date: Tue, 15 Dec 2015 15:22:19 +0800 Subject: [PATCH 038/131] Update config --- .tx/config | 1 + 1 file changed, 1 insertion(+) diff --git a/.tx/config b/.tx/config index e151a7e6ff6..dea9db7c931 100644 --- a/.tx/config +++ b/.tx/config @@ -7,3 +7,4 @@ file_filter = rest_framework/locale//LC_MESSAGES/django.po source_file = rest_framework/locale/en_US/LC_MESSAGES/django.po source_lang = en_US type = PO + From ffc10edd7e79ce7aa77defd642c03974580feeb5 Mon Sep 17 00:00:00 2001 From: Tyrel Souza Date: Tue, 15 Dec 2015 10:24:49 -0500 Subject: [PATCH 039/131] Fix minor typo on Pagination documentation --- docs/api-guide/pagination.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api-guide/pagination.md b/docs/api-guide/pagination.md index da096bde7bf..4bc85d698cd 100644 --- a/docs/api-guide/pagination.md +++ b/docs/api-guide/pagination.md @@ -178,7 +178,7 @@ Proper usage of cursor pagination should have an ordering field that satisfies t * Should be a non-nullable value that can be coerced to a string. * The field should have a database index. -Using an ordering field that does not satisfy these constraints will generally still work, but you'll be loosing some of the benefits of cursor pagination. +Using an ordering field that does not satisfy these constraints will generally still work, but you'll be losing some of the benefits of cursor pagination. For more technical details on the implementation we use for cursor pagination, the ["Building cursors for the Disqus API"][disqus-cursor-api] blog post gives a good overview of the basic approach. From 8c0d736f234b4c82dbd662e1a7998d71f0ff4614 Mon Sep 17 00:00:00 2001 From: Tyrel Souza Date: Tue, 15 Dec 2015 10:28:23 -0500 Subject: [PATCH 040/131] Also fix usecases to use cases --- docs/api-guide/pagination.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api-guide/pagination.md b/docs/api-guide/pagination.md index 4bc85d698cd..d6c80d93a27 100644 --- a/docs/api-guide/pagination.md +++ b/docs/api-guide/pagination.md @@ -97,7 +97,7 @@ The `PageNumberPagination` class includes a number of attributes that may be ove To set these attributes you should override the `PageNumberPagination` class, and then enable your custom pagination class as above. -* `django_paginator_class` - The Django Paginator class to use. Default is `django.core.paginator.Paginator`, which should be fine for most usecases. +* `django_paginator_class` - The Django Paginator class to use. Default is `django.core.paginator.Paginator`, which should be fine for most use cases. * `page_size` - A numeric value indicating the page size. If set, this overrides the `PAGE_SIZE` setting. Defaults to the same value as the `PAGE_SIZE` settings key. * `page_query_param` - A string value indicating the name of the query parameter to use for the pagination control. * `page_size_query_param` - If set, this is a string value indicating the name of a query parameter that allows the client to set the page size on a per-request basis. Defaults to `None`, indicating that the client may not control the requested page size. From 44ae037e81d0ca24e28a3506564a92e1ac247eb1 Mon Sep 17 00:00:00 2001 From: Peter Baehr Date: Tue, 15 Dec 2015 21:17:52 -0500 Subject: [PATCH 041/131] Move urls.py changes down and add necessary import The previous location of editting urls.py did not allow migrations to be created and the default import needs to be modified --- docs/tutorial/1-serialization.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/tutorial/1-serialization.md b/docs/tutorial/1-serialization.md index 890f8d56179..bd3fce33db2 100644 --- a/docs/tutorial/1-serialization.md +++ b/docs/tutorial/1-serialization.md @@ -48,12 +48,6 @@ We'll need to add our new `snippets` app and the `rest_framework` app to `INSTAL 'snippets', ) -We also need to wire up the root urlconf, in the `tutorial/urls.py` file, to include our snippet app's URLs. - - urlpatterns = [ - url(r'^', include('snippets.urls')), - ] - Okay, we're ready to roll. ## Creating a model to work with @@ -299,6 +293,14 @@ Finally we need to wire these views up. Create the `snippets/urls.py` file: url(r'^snippets/$', views.snippet_list), url(r'^snippets/(?P[0-9]+)/$', views.snippet_detail), ] + +We also need to wire up the root urlconf, in the `tutorial/urls.py` file, to include our snippet app's URLs. + + from django.conf.urls import url, include + + urlpatterns = [ + url(r'^', include('snippets.urls')), + ] It's worth noting that there are a couple of edge cases we're not dealing with properly at the moment. If we send malformed `json`, or if a request is made with a method that the view doesn't handle, then we'll end up with a 500 "server error" response. Still, this'll do for now. From aab7da48910babe2f72347685c449a1e72006a5e Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Wed, 16 Dec 2015 13:08:37 +0100 Subject: [PATCH 042/131] Updated py.test and pytest-django to test against python 3.5. --- requirements/requirements-testing.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements/requirements-testing.txt b/requirements/requirements-testing.txt index 6900028d3c1..caa58765ab0 100644 --- a/requirements/requirements-testing.txt +++ b/requirements/requirements-testing.txt @@ -1,4 +1,4 @@ # PyTest for running the tests. -pytest==2.6.4 -pytest-django==2.8.0 +pytest==2.8.5 +pytest-django==2.9.1 pytest-cov==1.8.1 From a4ce897d28604b52a3babf0bb49c61e074acbed2 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Wed, 16 Dec 2015 13:27:40 +0100 Subject: [PATCH 043/131] Display py.test internal warnings --- runtests.py | 4 ++-- tox.ini | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/runtests.py b/runtests.py index 504cd1d3750..a7e8b45a988 100755 --- a/runtests.py +++ b/runtests.py @@ -8,8 +8,8 @@ import pytest PYTEST_ARGS = { - 'default': ['tests', '--tb=short', '-s'], - 'fast': ['tests', '--tb=short', '-q', '-s'], + 'default': ['tests', '--tb=short', '-s', '-rw'], + 'fast': ['tests', '--tb=short', '-q', '-s', '-rw'], } FLAKE8_ARGS = ['rest_framework', 'tests', '--ignore=E501'] diff --git a/tox.ini b/tox.ini index a027fa0de27..93e642f3754 100644 --- a/tox.ini +++ b/tox.ini @@ -8,7 +8,7 @@ envlist = {py27,py34,py35}-django{19} [testenv] -commands = ./runtests.py --fast {posargs} --coverage +commands = ./runtests.py --fast {posargs} --coverage -rw setenv = PYTHONDONTWRITEBYTECODE=1 deps = From fb94be18be9fb7fe241037db6d49d6a3669d4455 Mon Sep 17 00:00:00 2001 From: Dan Lipsitt Date: Wed, 16 Dec 2015 10:42:10 -0800 Subject: [PATCH 044/131] docstring typo fix: DateAndFiles -> DataAndFiles --- rest_framework/parsers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/parsers.py b/rest_framework/parsers.py index 2dc808f1a89..95de41c2349 100644 --- a/rest_framework/parsers.py +++ b/rest_framework/parsers.py @@ -126,7 +126,7 @@ class FileUploadParser(BaseParser): def parse(self, stream, media_type=None, parser_context=None): """ Treats the incoming bytestream as a raw file upload and returns - a `DateAndFiles` object. + a `DataAndFiles` object. `.data` will be None (we expect request body to be a file content). `.files` will be a `QueryDict` containing one 'file' element. From c78980771d75e774cec94772902dc13e1027b3a7 Mon Sep 17 00:00:00 2001 From: Tom Linford Date: Wed, 16 Dec 2015 15:36:07 -0800 Subject: [PATCH 045/131] AutoFilterSet should subclass from self.default_filter_set --- rest_framework/filters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/filters.py b/rest_framework/filters.py index ff541ba1ea7..42e77d91087 100644 --- a/rest_framework/filters.py +++ b/rest_framework/filters.py @@ -99,7 +99,7 @@ def get_filter_class(self, view, queryset=None): return filter_class if filter_fields: - class AutoFilterSet(FilterSet): + class AutoFilterSet(self.default_filter_set): class Meta: model = queryset.model fields = filter_fields From dab6bf4b1a40b74abcf88099dfecbc419fbde391 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Wed, 16 Dec 2015 18:32:32 -0600 Subject: [PATCH 046/131] Changed error to warning message --- rest_framework/settings.py | 3 ++- tests/test_settings.py | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index c7b5de9f022..08a776cf405 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -17,6 +17,7 @@ REST framework settings, checking for user settings first, then falling back to the defaults. """ +import warnings from __future__ import unicode_literals from django.conf import settings @@ -216,7 +217,7 @@ def __check_user_settings(self, user_settings): SETTINGS_DOC = "http://www.django-rest-framework.org/api-guide/settings/" for setting in REMOVED_SETTINGS: if setting in user_settings: - raise AttributeError("The '%s' setting has been removed. Please refer to '%s' for available settings." % (setting, SETTINGS_DOC)) + warnings.warn("The '%s' setting has been removed. Please refer to '%s' for available settings." % (setting, SETTINGS_DOC), DeprecationWarning) return user_settings diff --git a/tests/test_settings.py b/tests/test_settings.py index 97778016472..007586ff2f4 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -18,15 +18,18 @@ def test_import_error_message_maintained(self): with self.assertRaises(ImportError): settings.DEFAULT_RENDERER_CLASSES - def test_loud_error_raised_on_removed_setting(self): + def test_warning_raised_on_removed_setting(self): """ Make sure user is alerted with an error when a removed setting is set. """ - with self.assertRaises(AttributeError): + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") APISettings({ 'MAX_PAGINATE_BY': 100 }) + self.assertEqual(len(w), 1) + self.assertTrue(issubclass(w[-1].category, DeprecationWarning)) class TestSettingTypes(TestCase): From 62e2a9706f1848603bb67bba8ed1c8886fe51585 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Wed, 16 Dec 2015 18:37:50 -0600 Subject: [PATCH 047/131] Fixed import order settings --- rest_framework/settings.py | 2 +- tests/test_settings.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 08a776cf405..af4aaa73cd0 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -17,8 +17,8 @@ REST framework settings, checking for user settings first, then falling back to the defaults. """ -import warnings from __future__ import unicode_literals +import warnings from django.conf import settings from django.test.signals import setting_changed diff --git a/tests/test_settings.py b/tests/test_settings.py index 007586ff2f4..b9953c8e2c4 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -1,4 +1,5 @@ from __future__ import unicode_literals +import warnings from django.test import TestCase From c389aeb051a5b2b75160480ae09aec99385b531f Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Wed, 16 Dec 2015 18:46:23 -0600 Subject: [PATCH 048/131] Lint import ordring --- rest_framework/settings.py | 1 + tests/test_settings.py | 1 + 2 files changed, 2 insertions(+) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index af4aaa73cd0..9679cad5920 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -18,6 +18,7 @@ back to the defaults. """ from __future__ import unicode_literals + import warnings from django.conf import settings diff --git a/tests/test_settings.py b/tests/test_settings.py index b9953c8e2c4..658c6199769 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -1,4 +1,5 @@ from __future__ import unicode_literals + import warnings from django.test import TestCase From d9c360845d79e4df4be96264c325b2bab5a036db Mon Sep 17 00:00:00 2001 From: mjparker777 Date: Thu, 17 Dec 2015 12:21:44 -0700 Subject: [PATCH 049/131] changed datefield to match code layout of datetime and time changes --- rest_framework/fields.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 53a948c064f..7bac2a21f6e 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1121,11 +1121,11 @@ def to_internal_value(self, value): self.fail('invalid', format=humanized_format) def to_representation(self, value): - output_format = getattr(self, 'format', api_settings.DATE_FORMAT) - if not value: return None + output_format = getattr(self, 'format', api_settings.DATE_FORMAT) + if output_format is None: return value From 66de876dee32f3e99a1c75bef8f544045960a9b3 Mon Sep 17 00:00:00 2001 From: Atul Varma Date: Sat, 19 Dec 2015 10:34:39 -0500 Subject: [PATCH 050/131] Update bootstrap version in browsable-api.md --- docs/topics/browsable-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/browsable-api.md b/docs/topics/browsable-api.md index 0e12f92544f..3df95f0b232 100644 --- a/docs/topics/browsable-api.md +++ b/docs/topics/browsable-api.md @@ -17,7 +17,7 @@ By default, the API will return the format specified by the headers, which in th ## Customizing -The browsable API is built with [Twitter's Bootstrap][bootstrap] (v 2.1.1), making it easy to customize the look-and-feel. +The browsable API is built with [Twitter's Bootstrap][bootstrap] (v 3.3.5), making it easy to customize the look-and-feel. To customize the default style, create a template called `rest_framework/api.html` that extends from `rest_framework/base.html`. For example: From 1aedaafba40bfd8b82b2354fe17a4662f57124d3 Mon Sep 17 00:00:00 2001 From: Emmanouil Konstantinidis Date: Mon, 21 Dec 2015 13:40:23 +0000 Subject: [PATCH 051/131] Add DRF docs to the list --- docs/img/drfdocs.png | Bin 0 -> 305016 bytes docs/img/rest-framework-docs.png | Bin 76612 -> 0 bytes docs/topics/documenting-your-api.md | 23 +++++++++++++++++------ 3 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 docs/img/drfdocs.png delete mode 100644 docs/img/rest-framework-docs.png diff --git a/docs/img/drfdocs.png b/docs/img/drfdocs.png new file mode 100644 index 0000000000000000000000000000000000000000..8821c8f13f1b906c7b6d212c9b685538e99102d3 GIT binary patch literal 305016 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≺$EHFT=^83nKR>^etP4(x=TK?hx%f7=^hqjardq;y9`p$b4R*8t#-Eg z&|={Mc%&|%HAqelOb%7(++7U>j`27l0pbV#jZD`r_8Q)7%pu%Q9f=tLp9BYDTE5W6 zdHdnnJ?HN|GwaVK$X!P6?#7#+N;NNm@5j+^eBi`~Exxq@yBO&K3IMFj0M_fWeiP;| zKnsB#RGaT?dg63JT9~Ci4EX+_xydROXKc0M{-yut;&b{} zvZK^#0P8`v9|k)6VY_TQTSUh7;LUMQ^KqCordPzZ?W(>gQ1jF;JrYw><>!`>&ELOU z8aDdC8df5}Z!he>Qbn>+P_tZ_(TqQ|o$S=IRc_0VEzlOMjFru!_!z>Q&g6xLdd18> zOJ4_e0N*!Ar9z`t3xLy-)ltwWM_S!f(PAm3Jj{&esry%|%m#^ckVx9SQZxI1swI0- ztUiRt*##1>e!RfIP>Qo8Rz z@NF>gcY;3}c&n3xwZ~dNJrQT{UjSRTNdAQkts7bwyJp9GNwwr( zlJBiea(GRExz9Z&*b;oB&!)dxCzw5ea)OkX>dxZvJACf9!sb@oJpn;wOX>4DKp39bk#lvT<27 zf{Q8hHlJ)JwN;nW_}^D#2Bko&_dtdQ$Zo!|fVk>W{)!r)D)(l+a$H}Ups?5AEX^i( zZC`nxFx|24zjtC}e>{^O_GgD2-@)bk=J{D?+@;iA6qSO!z45^HegFdZ{;&18yGJ$Y_VBYWC@zhFt+#fV zS1-*|5=uNqT@$&c`_u0~h6K@@`)SGICI`9+c%04lT$}4kR(yB9ZoyNy2Qi=41D!p# zH7vh*h|ZmO{^VcrG0ly1Kr4%^``t=U!n zhM0VTtJI_Vb{tlzz8)E@M&{Ywah3SUW zsWn)`(#aNLbcCRI{y0G<-kb+EqDS--QC$n}+)x|0ZuxTQaOczPJFk)nHoM*daXGuriNYBn`l(x%HWPgma8s`o zKI5vwjhH(cXh^I^E!YV7cTk$GCu6y8h#M(yd7fh;I!C& zS-N_s(!tDSI8yaj596(7k`mhPz=(t!e}h7WZo1v(sT~c}QV14s9DR&Jo8O*l-i_Ze z4%`+?TWq9H=2MVE^6D3{*mr;Ml4jm&Y4!xm8VIuD3!n=&tpnXB-tgC}0QKo(774`$ za1ws>s&Mtn1w|r41Y0@;|0D=kuMSe5)ZsSj@lfjBsf)Y*N_eiF+}ZtQoF~|Co@sHd zVqj1I`dD$sbv34+m_Q@X_EEmxj3VF!HyiJ}*{I*%-hSV1uOsldW275s7Pwm`m!t>c zK6UDpE0N;&NT8Cf6tgsdGKw17au*Joa2qlHxILI?Z}92!$6)9n^_7cKh_Y9uE_Q~A z8*gE+fk;>iEP}ZrpfQ#~(;y|*f$0Zwv@MQ|IvC4L3$1cu(_9u2>^0dIv&6V>ucaZf zNO}4imX0BS&i_;}KYQzy^DB(vB^HKT(*bNA?mC((f+Df|O0F33(zr=ye1p!nw&8^O#tE66R9hLNN8DxyaeRi- z9ndsD!o^Eon4t9?c!}&_6=K>~4M(h?Z$EYDl`&gO{XP~@uNUYy-v(AWc@NRnk;BIg zwAXBy0F5@T87=i?4z={Ggzk;G3dXgMPB<;uK+_@ziK$Z7QPX-)k7FqHj)`V+3PIRy z9RVx1>7hH}HN$d|_cn)BtQUc#V~?^*Uq$C^axw7$fRLtj}#9Qw*n+RY~dT$hhYe8r!0@Jd8l=V&K=t zaW}zuJ`bF|;g)oM?~#`<71RlY;UU&rQoM7bi0wN+a*Qgqu(BuWeBeB^wT+6l)BK*` zO}WF)sD{2_q}&U_k{A9vbA+`LQt(;83qn~5y<;zZ;{?0D6!Wkhx2N1q3<`2`;AmiH zM!|nJKQZ8cs&c)Lf)LTK7e&&hP0Vp^ zf$V9xPQ_u=F_{Y<#u_8lyv4%ac1Y?=1KOwR=xo{bp(j-(pGLe?D@M&-rZY+r7Xq&4h012F+g=E(;}7##!#fu8h(>b0cs=}$qH1#v@H9e?ty7)8-4_={`3s-R`~JM*jngf^XDjKptv`GTv@AT1)CXN*p7(!-XN1b@XP>9k}i z#DYyraV`ZR@EssqC0YmmyLFeG|gP5#XOy4HTOYcPfh>c#t(+i z;W9Q&lD$-aXRs#)?u?S$)zpyC3VbOibjsS*KDJ@9{*>h>FOJXi#;LJF68af|lWA_! zV79Ot+nJqC7yXpLG61-d^t;gEO4#eghQkfO+L?IkOCu$TaF2Vc{ePEQmIH#;r>b#b z((9EYl1&Ck!PNs!i+_?a@=r+vqCO;a&xVcX>lfhP4;1?v+2S|PR#a663ln7R!N{cS z+C#Ppvv?N13b&$)R(@4z^|iP88?qafgn+EPqV_t#0}UEg{P9g{vc=)a~VN z)#^XuBv=5kt)U=~so>yvtJIqno_cbZQOC+o=7_#?;h+~Vm;FV_uQkY=RR`6v`_xWG z>4@$i%~Q@}tm4cl0V$#ksBl`#zaDSunb@0Vev*9-ue_P+OWah}z=qo+1JVPHzWYCl zL)jp@Wi&cQw?NM((s+#IDB{}2r+l;p^1m~T@|I*s0L2Sdf8iXhvO|i2uAqcj7Y%fp zmo!5P9a3fmUCne+yhlec`+)8JG-|p3?XM4TxrclXIz@48bAf77J$zCRn-h4HvlFW6 z$8JpH^H1^M@8?-xviA^#Vcj~a$}RGNg?tHKIAZO250rvcF|u9fg?gf?D2q(qm4<;_ zrX>MjEXWbt@??su#!1`w0{F{N;s$#kRDcD~9bXT5FL%DA3x zBo)H#i*Z9HmT!x~{7jsyQ>Kt%D;<$&X!^#7mPO&E{(&QJD|KJ+Ak6LdaiLU+QeZ@0 zS%E8`Vfh2(cBGfu510;42i%a}o3PR~yx)VFuCR-eCVIdOr}0nC&F14p#zca=r{vu8 zaphOp^xr!<7)yq+29*RX>%_F;{N68v<(}b|m^Bx^eur$3NGxE|tS-i|lm9fZ4{D#A zETy9~4@beytV~Q8WCayOq{6hyS>Japc}t8YL@JuyqUzAOLFv3oSJloP45tte4|@mQ+F*4m>NXUuf;F)n2riP>6VKZ^gZa)7seK`&F% z=E+WX6iQP$P;HziN^>+V7{7&D9MIx66vPISE-gk~m%K@Y=40o=8qpFVI)0;t*%!q8 zO?7C1WGJY!c^~P!*v(t=0p1u;+ikzv1%CilA9zkN`FP{>2qZ3elt2Qx3hn-D`r}6v%LtkAUQ{Xi#-Ox zJ?AGH7W*m_(m@LeKz)4YvZ~n8{OLxy%0oqh+XaRf>_1&yZq4%mOi(^O-$*h$6)O^I30sk&DwEhbp}Z8AdwA*Af%EjH zY}L|k1!@8*Td($y-6;bF7%KzjPLh-C{qF?k8+~L@$8HTYZlumG7c01a=b1$5Q%@h~ z`1=H6;@tOU?qf8X|3xBb|atpGd3-QB*F zQaGQCOuaR_-RDz}fSf*Ec$6yM7f_S~U1BN`m*nZ-@M%`U22|5~N}nu@D{U|Cyp82B ztKTlQjVPbLgfVpMef;F7dz4>1t#S7|c^R11yusTg8$0p(4Zmrf=#GbaHtF)e3T3y0 za%XL>ignrkAJX0g9P0J`A1`T@(nck;p{yzUGNe-~p|YHBaM%*UPaY-H` z1mPJ{h~@jmY9wMAIBzx>w+*(O5HnpjH-6PvWvqNqAO5Z%f?X3{U;Kncn>N^-&)v{J z1^3Qe5!KgADA`hDnh<{`b?yw&RUX%c6k{}6(t0?mLS{&2uQ}w%vM+R03H2<~v+=~1 zFJ^R?16*D7Yj_4Y;2@(9A5M?ia7`H*lcaf3lPV9di!}tsx%$}6=uVB*|+M+!TG+sQ8~Q1t5YXZ!(FwqHR2bw4duwc zr4Wgnz;I0;t8S>oZ#hqQ921ly*H*|rNq&9(I;=r;ua!`d6`g&!|I#==!OQt8Lp1!{mV3iu+WFCHx@Z$iH1b&J+L@5U_kQqlD;_8*F4)ZvW*5N7 zmc+uv0{Bo|V|UWP;X7EyCkO8r`F!71ZC1zkYPI5e0Af8Ld8(5nTl%K+&RfR{d`h}y zw$F_bt*8D`LY=by`i9X@hJNV~N=beto9sA6e7jmf* zpB84N1PZL}wI3n>t7^FNqAK)r}h_^dXzZpsLIzk8Iq%k`dM z;N5XaC#cY82U3Bc1>M*0d_YJ)wo+~l(r9{t?i#dbuqp6kzPP1H(^M-fX-wVm0wvTu zhzffZj5|m`P@nqj^i??R>cg3u-MC~96C=w`xE65CKR0*QVz?M|dT3(TJWecL=x(H~ ziy`%V+L3%izS1llBJVjJ%C55u>3t2!ac7-V+ec%m%iy6E=Tcr>u85F<&a9)#+5x^m zhMXAU`%e9N?9dm_lxnhMppUsUvi>|EMOU&jev`tHT&=A>6@<&)2QhyRYl@kbF`ihj zX*?*knY8hQ*j{?d)3c-nsMcBtMe95p4^Z3 zoVz?+0x@jM9IQTl!`$ZHk397^DU=*RWs|Q3pIW1y5@rTMg?Yj&3JWE51{cPH9O0i@ z$7q(+uVto$u%i9*Ru=kn!&sxbRYb*hj;q?{b8x~Fl(6E5+hvG)UvtN5GtL&G)h;k8Mh zBSgU_h(X`Xi8J=LIkH=~lF_>6)00X(PN<0OC-%%IKXkU)^nnma-lh^WvK^8!?5Ww+KBg!on6kC4?oP=q5d>wI5U zd-ma(Rr!THnScT9>Z}$Ho=9i7zR2xuB(<-(Gh(f1XO-SiKn8M?gY(C-`kc2+Ib$Jt zwS8z4Aur0p32HCLV~-x7)l6H(1liEQg#`6-G0w_mrA(y87P^D%B?1e4$_&nQ4S!j%lA4G@Au@z+tas;Byg&|yT4i;& zcs{>_i!L(mm)42bJrihUBbQ|_^n>Nm41S7eBTMm~{~lLPUAO`Qa+yuAk1mK*vem>= zrk^82-cvqLNANmIo9hJ=)~h#$EjZdbfI?;D zDHyGG7N(eU)MYq=PjRilVQ+LM4S#h`<>9`d-MPj zm{NJaU3>sC7?~}FM!THyTQgk=3DzkHJ0R3ewh;g zeW>*Ax$akJ2iVqx06;qC;0x4_sD40xCD>*At{5>k7Cm55Tu^Q}VviJGW$)`1hieuM za8)hVxluM65n_(l zkoPBCf2aOc(c*jHu9Gb0p=N59}GPT7Z+LG=f|6$M?FFLd|_9UT(_Y zc$gbhG5{LUMV`FLMFhe8HX1*H-z9Y|gu&xmKGR@`qjn0#w7P5kF^3k6=8JxNuer=wNWZwzzFFhu{&%oi zi;O2&J2s@@fgBm4mcDe+eRU&fzPB^f4@=tOL#%B^Y7D6)rstTi#8eNtc2K_=fYwIr`8ZIkwXWi7&V3#)9-dq5GfHYT~&sTv1vS8t8ED3 zT)q1!>RFNa5(kUm5e-MBuixE@?=XKi8qM$7=Ud&h4)icutw7{c+a5r3A0!D<973t0 zjM&{Yclt8|0;uSs^~G&%?&33;U}4c_;GCzNV4wIx9*`F~L5dO#i8FO(d)l56R)Gfh zg61po@CvxMhGix`wPUYn&Z@?{Tg5#efMbj+0d7GFBivLJEtok7TTGB@om$&8R@b|7 z5sK?PhF_C3Sfk9HSv9^C+Veohd;KjkkNC8|6Or6(C>q&vB6ZO5Kw7E546em7bmUoN zGgM>z@-aj1x5wDm+BRUjCN^lF2Mtj~OXo2!b6b~thqz@0M3K@03j9a|Tbwcf)uN1P zjk4PnAKElL3S$+vgs5ZCtxI6?3>xK;bFedpA3m|+$?1cQ$9#}NU6@Fr^l%(*YX~$E zCd$tn=wHiSr#{cFqrYL~O&YZUxd||CvI6`&rm{k10By|X%c&kb0}%WCVDBsE*QA-{8fija;Wdg*{KZ4sP9 zF}=A;dRy0FZ8TF+O-wB2t~`OgLjCKAGdif)_1GA-B7!PcaGvMIpQpd-9=!62Z zh6DO2pQKPM%jg) zQpA!t8C$u#NY4Fyn5~`5Ad;~gXa!EZP|SS<_6-&_R@%i=H3K*EkA3o~d3Wv+nKk(+ zqw)f-LRrv@iQ7*o0XHcMB9(56mntbBp|F7XuoiQ#d2-CP^Tn_UzS&UdFFIAqd>mOa z6Q!&&RiR&#?0hsFq}R*5?J#~MKltG`jS%}tg``SG4+kZrd9EgG+M*8EoM}Qjpf882 zBHQh{KFbD-O>m&rZxXp9oMdokh%~J!J)}qetlB;W1%*vfDQeMsJcqjCP0NI}wK@!A z9HW-|Qkp)iqImj27*elk>dztL_Yg1RQX(e_L1|PBW#}T5HqFTzj~CzZI(wi&r%YTU zvJ54`iZsMX0UuvPvzMdXSz??(oJoRY{0n`L8hRDRy$T^0;1PKH`Ds)-$OgUrv2@jley6RV`oRh~BB*L@!L3qYpV| zlXZ_<*!2$$U%w_IXC!h%$z6&Gj-Y+JJ{|nMZ@Rh0Vd>-~&Sw z)^YyRgcm!73z0Dfqfw}*gV9(iR%>LMq$we~7!5iTtaL=`>`>U3Qzw|m6ES4iuEdf*1GG`<=js9?3t_cl3ZsIzief^nH zSD;?V#FIpfXZPaw4&*V*CjjfKB}FY}BZjSZjx5p#7=HVwVEOUD=nGEYC(q9sBsQZJ zdXgUge#y*djx=GtbGWUs*Pczqc=}$iDJ~7i(|Y-vCwf18>`$HDoRN_Bo58`l@~JP2 zexSGj%dD3RhtU&X#C!o8}Yny|)f}Z?H|FrrMrB$NPYYL+$L$wU&kKJ=MsJR-L z?7H}^u|!g5ri5k24-y?`xAllqu&=*y(0i%d$FsgTy;OR$FdWq6r7}fA?yTWEDW+u; zI1a0X#XK>J8n~IvUZ>^wY&ATX?arg4{#xl9lg;Kw0q?6atiVlet#>uww~Q3q zP2b?5-5z;Ku{WMB83Q6U9NH#E_d za%?NTs!)n7E{58vzE+|$FXWC)3m`@Ty8otRVKmr&oN86efC#|7QYJ?^C7J zNc{EaxsR?j$YNlwkh1J|aRa!ZXn$(BU7-$I8gdji_Vf{llfl zT<4vsE}QB@7Vx-Hb)5S8l!T>@Ra^k!6yQ#COG;zd z#!8$lbT}ex-+Vn1n?UKS6V8o1vjq&j$MZN2M;XmfS6nP7%7Zd?*aTlBj7vrwPLWIr zA1zNdo$dgV+(#3g609Kmdk>ipoS4PqLwoXjl$)$|m-2hW@B~7*gI-uRKyGrl($aQb zME(B{zXqxJVd1VN{MYJcSkOb7P7R~GrmDAOhaj4q=B+ncR`5t@ZLBe`KfCaQY5FKA z3#1oO0?$LJbY%kk-^^ww#&%7g<6@RjM(2ouEkWG1O~}zkuWG=?mikCe0jHFh%>;+T zou`&UOM>9rHD!1wd|Q&f1x zaGTv!Vq`P;DlUK&LWQnz4Ayh59{b43cykYq$e})hQ zETygm60y`uD2ZGvhS#s`O7XqdCyBoo-EeSlv^>ROqA^gQ&>6zf4t&$cebd|Zwc7jR zJ9Qs*#>x~}b#dz#S%(@LwQNjOdEG=OsSKbW+qKLSpE*=?-UP{z-9(*p>VGRz@9=#B z^nCp*@4x<=^#1KVfadg0rsoHpj_p$54&q_H%A@*V+~gRy6;}i0ph2|#)Z=WRCe`AZ z>>vSAbV*wK961ti(=q=M=U~z{2Aw~qV+k2QX#h~NuC7_@5KGjeHI7|V8~u#MjpQ7V zIy+VTsOn@#aG9hI$35YcaG(hf$`I0Xz(pHOm{s6(QZDahdd_n2;K6PDe!R8GxGFBL zweE3~^~u*SJBLf%6JlL@?`*PZn`k}}hJA2tbM34u8{ri+YFL73xkK?67- zC$-h?06-2b5&(v?0CM1^wKB2v?^lKW6FJa<<10{MMAc^fxP$OlA}2Q2-sCqT=f~d6hqs_kfR!8C)Yc3e#>{ECIgO2)^69IeYrCd zP@G?o*58=#31Bmzguqy4zH@2F^th~GUy-EDs_^*{|6RUjyZ7J@wRR7^m0u?wZlx8X z+nS$+n(b{Dqg6BLQ!0wIP$A<2Ef+3|RqAWI*9NL4M%v;nb_6G<*KQ%4F|t4E@3#P8 zZzwzZW2p2`xIU}16X=x=3bs{ze{q|+y7_25yp!%K(n)YCQFt5iB4orMy`iY6_>!6z zm7d6%ZSPnVKO%KpFA9F`x>4L}kK~BxP*dxeXUDv$>jRrAZANObQ`mq&yTY5pEd#@*#JZL^c)$% zAJ)7Goc#4rw{7iZ?JPkI^~!Ip11%u(8-;5Ti?7^N3KV*EW(J!EY#!U$**p;!EEU(| zah=G57kUQ96vY*X+?5FCw$xIz!)nARMVvDPu7CpTRX);>h5{EZ32X0dQ%N4=%K~Mz z3x~AX8NZ`(=Zb^>6Sb*x1(M(O=mUYNkP5KS ztAQ;6_b!;;BjZS;n9UN5cf;!wHWj?KUfX#aVPca~%5RIgn}jwdRj`_%ekE~t2Sr!h z>4STuYT^K8FSB?68(qhz08`#wo!H(y*;1hoj??m4Ara5HO5*b>$_jMoR53`Q*VvAZ zIfEZtHwJqrTN*SS_8F)KbY_PDe9zj>@vD_PO~;c$3QN=?X(xk9j!$shXXm=`DG5fz#5rX_+0hwBv3NG=`6^zg9r z-4Aw-PhsY6Z3U~#TP`^mX|_8b(>8tg^3|>HKDK-J_L$trrGa(63bbVtv9b9n9ECd4z?NVAT~LsFc!iMCmt4@-0OCkWV?m{rw>xyvhg z5(8a#NrmlFXMZ_z%32E^;T*^n{-WVf$$+GeC1ITWXhI>xHW#w+tt361Y-6E$@o#kQ zUt|L=2RGVnZ&;CBzQ<8DFAv_c_@(43#0r*)zN(Nl2Eoo02YETbREt3#dd6C(?Gu{H zgThs^O6q5A+AcL5`ZT+EMBaU#)E*Fojj#d02OBU@4koq2cHbZ!?RugN9Yn#2vVB_4o*nr}m zt6u&M1$^Y0>*zf!Y*M8w~rVqD-6JwQ17t86Mo*$aAj z^dMx_!B|T_Pp!Y4;yy3XtP^}0DB7GA*DT@xl$>1za8#xNG6CA@8BT|Nu&ec1I_2A+ z1MmOPxqtjY#znR<4nq8>Y;Eh9Y@1yMgplXswwO}mW`K(*hxozltZedpbYk5{S@$hA z+PbSfTcjY#+|w9vJ1uhZ1Obn;-P;vQP= z9{H<5cCKN3Q9I#Sggf?POF%=KmOkLtpNKx>USb#haI4{vot1?{!Xy3u@`!)|eb^P( zray>*e~N7Xb;I{*T|ZkUI-=l?bDTCvfvs7)p|n3}dL|q6p#oAcB@A2z%QbJf z&C`?BSSZTR0xqrz1bA35I}V{fsFxn6YPS4P)0{9w$C2=_s`houifHn6N?_h^dF!3M z!^Ml|IF2eGRo=&}tX$^z>{;@J(q-!&#qKrm@ta3>Z#Edft2DE%Rl$ijFX`kLKMH^S zGD7EaZsNd1#grL z3bv2!tkTmRJDHgO_@e)rl1i6S>6(yhdVv{yhD^dEuSX=rku3fX4;Ph%m}718+%nF*_*T^en@7up2nr6Sq4 zu4Nh`i^%2U1CBVW_eEL7Tx<_NucSt+s4y(1hs&$-+tM|Ms`X;bU^bOPs3oHzE4R3T zww$>AfAjdi?8u+qbH9y=OJP@BI7d7S`h7T#95_AQ7MR>-6E@J&*+9EP2FlR`Ia)p= z;9|OvgpNM7nEmPf!Ov}J{YRWtrY#Qk%-ouxx1|>P^df6FghboAI;oO2vf$h+aRaV= z|9udDdhFl*NU3VyaS%rwN*(>y1Q)VUk!PaA-`15=2ptru5()2|)A8(F)6IgYOgD`5 zdz;+o=*mOxcU$YYJb(b9uEd$($i3mm+uBHl&~#ZF*f+7S-vW3<+M#Oyr49ck1kVX; zYil27@9Ea?)r#6$t1Q**3xLP{{LnKlo~)w7pO7$}yjrl~J?dSNmz(7SLY>CjtB(&L zBxdw5`kDte?JvBG-VR zc6?V?@32gqBgj~K%gmyIRN&KFu)yCYxKOCI`4qZ^E^nA?z3_ME@SoQ6ClR|dnb0Cp zJZO=4OeXY-2W0;S))Wz|o;FlCU}KU$zO!JXR+2E#Au4N^(ACyUEf9)}>yxFr45n0V zWT~gS>B9z9JVi=^y{jm_c-atQ(I=T;n;Ge%ZGcm)zH4(RGg_!h+hseqT=t zoSNjOKW?^4f&mip$(8Cx4B$0!@duS=FOTH}_eD_}Mm_@v*T-?+%i_6cURH=1q@bWy zGUw+EY^CDqS$`AM?qX@*TB}5I*By?C@MuJ}nrYlai)l(6G4~oIV;F?d^}^?L7FJb{ zzF&R3LpjD*5IHMwJD<`(5{T7_+2Qw)kxb_Qm9+jG1g)e2a&S-Q zMAo#z`DDSO2_hw(Sx7DYh=jrUxd*`FVBv521}Ncg2JjWDY)`v2-x7ktMB7p|*Ed{2 z#vYml1q()c@hJ8A_q5Adk*J8Dv+es(re|!nixDd`{s$6LMOMdLOsmYGopXjMN}%9#BO%lnGPuz`7ddoNpOGabXGM*Z(M<~J ze3QxgA0YoHHT_$i_ItaNs$8q!Ah;Z6gK3y^6Sq_g zUwgj8f04NZ^YtO#3~S~38X>-6(C(0T$f9Aw2hLKRbve&X^-!FiLf#q>7@iKVp@Pua(5RqU31?JCrw{ zza8&(CKu4cW65w_UjwbVwGf&wJ3W<5Ck}HE33$|7M zrn{R6wR!~baFK&8siSs%5A^eWT07>`h|$8iO*{O}q>>B2Jcn;%C56_7R_&wC*ShKJ zSDTocnCiR5#j(&`eh$ME7ny;Tj|N=gX_ZUQRl_uxT#RkxKRZ?L7zwe&LCf< zh-)XhEwzvK9Gy(N#E*)GhhH;^obNZ^p&ZFEzKiRzsQ-eIZF82q9B%$ZTjpnZux|AK zx#YjwAEl1{z`>Ur_G%uRYcK58j{$yNjy}vyL|em$pP8n)L%Ccu@i+MKn$oXYiA^5O z1gq;0>JEb4L{hV5f6hzTsw=T6cZ|PVjK5Dg=<=A(kfUC<1e;rc;TK{l;142a3X@3Nzs-ie(41O`%!$t&w(`j~j?;}CLEi;-oBe?) z_MudPo=-l~9vIcFozF7ajLi*8?t_Bj2D(TE^9x29K01p(sr^56V8Oo-_Zd(^4odjI z9de;dwNFH(sOZ84L|iWBK}>B0VL((zO3@)f73~Eej#O3^iPCy^e707S%Q$k5zfIIW zVLDP)*8ruZNcuVC?~er#H@cEnLG0t*gwRD>MlIzzdOEATN|F$s40qQu>0GbUNuAim z=E;{_i+vtOOwy9&x+bXFmE8Lr+J-$_0ETe`>oBFdtz=7rTLDOAyq!g@NM^th1y6-yI;)(?$BEwe$q2L2b)C=PfF7yB80skb;eKdeHb2N(fRjPABC}7TtA#obIR~@`u z$>znnqToT37)mP%-tS$J%Y4>l^@Ub%wcfZHYhQ9>bc2wGJvJ!NII)9T(#oI z)67<1Pg|@C%A_(L!>9YGAks9|+vd-?%D=g>olNk%fB*>IH2Z|aE8w!%Eg#g@BB+yEUle0ySl7QBV;Ec~bt#qXmh_dftUT#syZ% zV9~l1y>W3-Ov#e$e91PnW%=YolUD;*AC$u2u)Y2(jc%)Hw|J;B@B6^j>d~FxRQNRc zKpV;YC+%+*%H*c}^0vFe`nUYlrssE*Zk_gi%gr;owe+F7Y1Xq0GkmR^iu+UuE$YNS-QJU6yQFAyE=F~R71Q?pz5QFssn-%U?I_Y zVc~h}tSkpFob77g#7T(4 z@*!dR=ls{K6cha1KGWGR*PWJksx-j*X6nD}jPr7lhPcnBEjw)q3eHVWq_PMfJbEcY z*H)on&eG#K!xDbnE-XA57u;G{F+JEehi1SYjprtkS(;6>;)oxq&$WYmdSyN{-p^(B zZscU$G5om=bG`g_&p9J;?8}N+`fSY&EI33~7*vKCQ{T(;m}P5ZL8^&I?L&m|;7EC| zRnn+eXGL$Zc4qEFyEGS&t1e2E`Rq!4$NVcXSrp+8yKon#aj_?$%-LzpZ*#F$ctsYL}FFaeOj}1GvMPmseZ`14faQuElS7uN2PAt-t=u7_CqaTSEeQkcJ&N zQ)`1WSA|?gy5>&=8|zh#fdHY05D68Fc02bO!_T=D!^=g3U1A@ayK3nyo}4@KTl^z& z{>dsUCXhJhZ5PzuDE=>^x-<8RKBePD7aeHSuQJ3}sv_%PxRsNR^0u(rN77c$`VV^r z2ZnT6A9|nG`b^d3>f^78>y5Et=KWtkI+02Icl+mx7gnfvv+K;mg8d$g_S?405;ChcWep=bvVqK!%j&n2PUP6l%(HU7`r|)(ky%|P zJV#w}LXYgP>rwisblU&PgTwMuU}*;xG~VwESbp9Aq;<;f0%J=NAXA(l_lo54e>REUv;HfE277;f)1~8S4QKroqw~OLBt4bCX;m_4Z2_?-`9l&0 z3E1~yN}ExDYfEN{!OgQrB%`^Cy8sV6Y7FD*D6ecJ4EoS*cPJNk3zXxh`w404D%1Fi z)^yG6)%k$$LOuJEtyo#ek}bje&#|v>=f3r?Nu=-eMe)=Jh%M# zt1%=h9*~#b>e(!_xBKUkj#BOc;PJXtR`sVle4{zi!q58Osk>F*Br8J|@vcdxJj}fPft9)oHEQQBkdjF~{ z_cfR@b#l{F@zH|+d?qyir(L%6dPvbe;BzjSN*cS*6|LnF_nWT~1|=f;U=_P+`K`D$ z)dv>SG+(Dy;Zg;oRElZokK277l%kl=zW4MUtX0dIYA|k_Pur~u{inp@uP4#{QAvaO zoKg6~l_%de132Q^YP^C4qcMF^xO;J2P!+XVyeUhQ;Mytt-S|q8GfDh8ZN@4Z?a8B! zv!Xlqoq8nUVC#;0k}1|?U)A|@LFc~XM`jn#`nv@91|F6cm=Jepbx6`UQ_NAA`4Tj65vxHB|h z1mNh;;qgu8ZF4AdTi!UIY~1E)i4_dpbI#kEX1Y8t(N&7K?|wQ$<)*p>gQeGl)X0X_ zup1kb$;r!s+Nx&XXakTLqlQ4|c;C)Bq)CGlVWvj%$6Wwq<79@rE`a7VqY5{Zas}0x zsDi7Sw zS>^7o)>GIs&O55ckPH}b(Zsn9LL5;ZeanJTH+Ws=7j!;|{L5LaxclPiYC)RnvSNpZ z5U3#pt>~nri#38j-v`h*Ewx8&gW36y@dX}kEl?-4!dhc5Ea7mRV@VY|ilS+-Fw;33j^iqO>KqA&@t>>NMUv(_4!q zkXYzUyk*sU5QgUb`o)-bE@bx^Nc8jgH zlAnu>b=MwAVMI-)XhY|-t**t}IgYSz`1RS%0JQi6S)!-{HRd*M)K5j1heEWaa~s(* zSO+#Ta!@e$wKtj6L$^kBDSc5eU8qRhDKO{1N^H(VWQ6rij;*0omad1q;(WQocT?o; z9D10K+?R+}y!zgTV4^TWUXn0ml9gsjs@~{_ zFMl23@Nx#l!QEuNOezZrf!X=d@DuYW5%R**`?M0*CYF>;I1r%V2L%4LB3vbO1=2bt zP1o4^+#&RW)#hc-g%=GkzugE+^q0ITvTe1AVSx8P={SOvFc~l6EwQ(=pW|gP=wItX z>I-nXE(N+BzeNR@W3vnD`|5yPdpN1F^eK?!W%0&oAPXR>Mx`D;-lQ+)i4v%a z_u?yXlZGy6^ceZhRxvtUn7v}8dgydzQkNOF-#DI&t+mpkn8to9yE9W>yZFD5<1ebM zr2h4dJL=k=L-z3Zrd*;lLrJDjrg%sS&MWoSC%b8maU1(E#uN`BZ&z1PCb} zDjFRVqmkHW*xm!@Q(rBw*Bbt zZhXT%kP=wK>NjFkxs6r6b1YK`H2WrZ&ZhOR=ChM&Rq*~Dw%SfKIHWRcFO}THyZ6iq zo3qN_LKoj$acEvDbMGKOzggv6^@yRGZ-EOoIaSHAclC|O?se7^{o2J=%mvM{6q9B` z_-eaQ(62%6|LkKEd47-GxpHU;5h5?$@5LVR+as<>sRaHQ*rbt4i3uNARq4lEuvrLgDg;;?e^Kv$dc`;60Fcmd zbXZTYeyj@4Rdu^t#%Q<+$vDW_&qf?yON?d#-R6f8qjA`9h~Y?k>0XfntE57xJ8KjL zGj8sJ9<$2;@7y;~#bxqgV6~s~=bjyX>=OUJa}0s4Ek=FrWCTaNLlmN-?aR~C@I#v~ zl35I9h69eq6LUx%$DiJ}=r$f-t!L3@R$m*Ft2+9>dBX2rd-i@}>{)-VJ6~!z;*nB0 zhF2APSHA2lrtVwf%4BaM4rb3i>Cn#V9%oZnmUllPGnXp3bKfd7xBdM;?c86N>U;Vq zupZOKmtxDQVO9-^r&&RI<*u3=tD0*AZ!^;S3zTjMYjlqNn|1&9LxHgk8#ZN6qe_oW zhd%kU`$6lA4^kV~&(*mLW=Yi~p6MZHIZ@#ZnTaSINmmORm0nC0mk>Mw2T zR0ujcHjUAcn6S9Ri?6ApibOhv%U%vKtR$V#vZ?5w{E${@(8IUJ2MRM1k z&mntsiMMy{SwvXejD>AMmbW_OWjmvsZy#KkI_Zu=3W2ujtCpR6t>Vs{vUDwdnikf8 z9ueO=IO5-)8uS$KZD)S;++aAZba`Sg;wVau z>8OB=j>GVA#PaM`5DNlfCA^o%!>8h1%m|As;b}L^tntaKffIOTj_9A${j&gF2v8ph zz(*mI#Hx#3Ok?n%VpBEmrO>U{Hz;Q~Qq`i55M!k;@EztHPEq&FzZO;JX9s?hkmD`6 zs8=jqauGi8H57Egc>HD1X`{#BsCPU3Y1Ls&N9X99Q9l*2EAg;zhfdQP;~ave4gwh~ zkB`25ySXvW!~J^s#)~E&uQ$Qzb!%^e4hrN|soyI~e{u%IcRtE_xCtQNnfFarVy{Vo`b}dryQAb2#fN1)5WE)BNunnTu;>5y=QQ)zCG~A zAtfI5ZM-WWg@&9wa&0E=446iNIJH@+Lr@I6Q8OrAV&wfH&T9&t8|!Fn4sh2%7&s`f zaY#o;DtS%e(zy4~I(~VO3_8VvaK7pN#1ij$_kY5EmzzKse@Q+EMsa_3_`m}rbnH{E z?U9-fY~RJ`xywj#~u?XcvUpz*C!@~u++j!3D$C^|mz53-a$|EUm0{ix=3=z6^L@x2+e~tp&WG2a-+qh9cu5nfM0e_AVVk+kCo{`BMiH;ur zT~%GwA8Br^KqH%0=T%GNp}nV^@Vl*=@-<(SXq|?2r!Qme1{?2iV0z!_3M|)-V_tWS z6?v{rM)5aFfUB>l$6x)FywF`J@0joV#t)*oR^(Mtel?xwK% z`ohgmF&s|pqK&^6{_vZ^rYR+!d$Bm~v)Z&+E(~&6q+>HGBTCZC&`2mYy0m!D;iAj! z#s|5tO1g)uid0C6fYwOsj7B4qI)CXWmWvg7&QC_GPQTX1KQvKcK)j&!AyT4mrDznKbdyFA_|H*K|{_fs99$o{=Yl4d1;;8C)IRu(z z!f=*f+i0D_CF>Pi-mrIA$h4a{5;)TpQt3l~GPYK)+G7@{ulT-i z%{|BH?VbX9FReZae#r>Wa8pVPmow%5VZtVC>z&h)w-%NOWh<;$gIkK!3p{~%)cUB1 zefp-0H#t?Kfz`?i!!9X)=!4ifvj?GE#|&;|ht_|Rn|yQl;H%1NgvmwVzFt1Sx)m5H zWlI#<4+u%Czb*R+9MxN{XE@=E1E^sncF59fX6XsS$^N&SrsN?l=uA&+YU0rx*@_Kmx+mOZnZN?>IW3uWx`NbR-I_Z z2|=fZF$bG?ICx}ie(|1(SBv8|osLF3LpaUa{lAsZpVr7J6Rviqw>Yih`waO!$LJUi zCwj3k8gewrvLRIjj)-;c&-!r1@)z-on8O1fHlpIuIo=@ljTw&RWV^+ex+CHvj7j0t z1Wq20t{Cjs^ke3FZldpO4JC74S@FQnI+V@4Sf74f>vnANU6;|xRBnXz!Zk~4J5%hS zhto3FsYw_Ul!?gCk^sN{fv$h@y1t*7a^;^G8d1J1-ZbxuKJHFDpfp6PWh_StI*wMo zi>*G_T_(9$4K>ZOv6A4_5e=y%dh$+e3?`W?FT%&%qWf?5BwlY3k1=!Hb1T~AcPwB# z+bzfBIO^rO-DBG>YfeNxeX#%i6o*ToLRrq%9uvxn9`MG9q z2d;`wEhG%%b$yIM&YVoT7IQUlLrgelV^Pg%)xxUb8@-ejbX)K+r;NxUcwM^F>KcL# z9qXlMM{h~3hbV68#BK$mi=&WO1qiD z0uDN4$1S*hovmaFL~K14S%38CUX;@#Bz64)cFO#4kbc;$DR$7MJ)XViap!=N#_yk% z*u6bGn{w9QmXa>YG{8Q4LyS6*(!=vZy|(s^EsMH0;U=6M-i#Gb?cduGl<%Y)fEfWB z&Awl6zI+UNlhb@vwY;t3_5|k^WBvJZK5RJPE_QMW%m2%UnQPlZYQkou)4T=$!U4(V z0#0*mo1NK>gMskIkj|@Nm!9F5^Boa#lN)3#?Pm7ykz`Sh>3(}t1_b3uk? z9!I^eIP2*ktYbH7pk|$FEZF?d*}G#awzYP$jN$mm{hK${OQP8cWsi7 zj_19Xx$t>Gr-dQY0acs1aID*{#Wslx;qEP!EQHlWD(7IWcTJv*B8PBjTxCdjUBG*OLSGyTvZ)0GxXilX0_GkVJ@Vn zh(4!#M%rxNc^jpr^+3LpV$74m7Y>B9XhwoYY@O!HsF9IqH7}o5Tp_l+M^A#~M?KF|2{hUdN+`+e;hdaD%s`U~Lc}|2}w!SNVkduQymNC4J%a*FQBbJ?oVX`39W-)rB zVHe$g1J{pu*(ZX^Onx#Ik2O;!`B>JMt&bhvynLFExAINNd%jnXOS|`L&NMbvFULtQ zW%7iyIfJjh%N-1NsnDG3h^&$*9h{js{eqV$s4gQtv9{cX?Jpfag7aQ~p*IrlTSUxg)nKAh@%=Spp(n>|Ht8Sd2b)>W(sKTJC(W=5PEO|a~ErLSp#f}zr> z6)Ka3366{_d0LSdtP(gw##T3PSI=gx_k1`mj*RvW8%}5%fVi<;GO0RU-X$NytRGw8 zn3LHdjMo&Eld>!_x`|xRoVw9f>zd9&aWO*Ah^%8_to-nDO`~H_8KFl zxNg$iF(!WALd~0gfoB*3Ml>+9 z&hiP~zX>(9ZakW&Om);5Hw_AfDxyk+d)<2r&OY6szZo@%kt`irSKgSJ;5S=}m1@k_ ze3$s*^TrTa#2ODFyi>t`YXBS@HW&gUI?r9+ax@}!xi<_{5|D4}rD4^?024OkC2 zc;+;gPwn;aUX4I8UfEG3CE3Fg&$3(_9h48Fcc$b79OUE)#S@WXP^6a_dXI>LQkC9|2#ECF2?``4Qj}h!gdSSx5J=w3uKKtdcis2@)i3@qH}_=D z^qDg=XQ05tMP0J|{J^|x>w5qDZu2{HGNy9x&h8vet$Hf+4d$mgfx^%clAIwvipWh1 z`xtBw(O3IoKpy-Ua(n5r_#(VFU_OY~v|s=nvSLBcb6w`LEske0dJ0NIpMtI6a8>8F z9Z|cu&4ws-y8xL4|XqKpDA_gU{&r=hFa+xFnD#|tUfF4*k*uP2Pal5Wt_f>;wks;t@K0X*#cZoTg?I1Ql|*^;*Wkn>63>^;T^5 zzEOjN$1H1drphqcXdDO5)&)(UD7l+n0KeTQS!(kkpc#gnnt-@*(~DzsHVbyV5)1nwNKxE#ch~#=aTwq6x>Ar9rmnPOw|OQ{g0*%>K|g$Mp_B3B z-K&Wn7+OfPCzXAC#~XKxrY!T(V@REDaj9&^qYBBp;KyMDxSKo6pN>L4Jnb_1W5F1A zQ&4&Tejf-vJhLIeE6Gkm1QFC4!!E;PGD?nUdZ+H^(5z?re&;}u(Zs@HGkB=@Qnb{H zTkX;Z9424%h7I|#{-?EIn7zjKgh&E#0r^2VFv?*PK73+GgyR)e%W3%G>j48SK`c0f z^Ex9UH!S6kJt%bVs@7S(vs_|no47eyB~X;@BT}XeSv07^`+S&t-d3)RM$O1WS$TRp zLMqzqv7_$2AL72jRUw5PoR#z z1zkSI{>1Ce`g{TI)=9m~OPAeuMVs=yN#5p+HtXhSb0VKaOUMPEtVdg$1h*eJV(UJc zR(VDnTrs|Xqp7Q9;n;wH?Ogp+A4x&0H!Qcc97Y*owHc_S)5QnFq>3un8Vko!S*9IW zk736y5F)ExJTrSSH(8Jn`H%M>uP}s|jw5}sa91b|FF4)K{an5+xwL|I;f4CGt}NZ? z;*H?_dLOo$qAl#Ln7p3QN#8ZyK{pnZYf5bPH|l;cP`M#}X0#f*oh0Z^npce87z%i6 z+6+wgD2>6OICP~aZcL}h#ZhQcxl?yEd~o?@!biW$Eqo*^lg!8DJESg{tGpT202cEp zxzIZD7Z&p_!fjm(xw> z@{R7(QVbqsJH^3s*we+y}BOc?XVaCc3a5S z8D3_!PB{2&;&WPVFGhQILf#2QR?VpvC)?o@Vr%B8k?@5pQnN@nSx=Boo;eZ@%tyqK zJ?wIWyc&V@J=2cJi`{tS&Q-@@9s=IAF+)WQW9mSf>vlVO$y?XGmWorZ%_VuWX^5Gu ztOZ^Jj*8E0G@&wS7hNV-`zxHQipH`n0{d)Qyu~N^M~?@z+v7gIFn(7l#(h>|=TSDV z@af*>v5czL&~U2Z;}v|DI7a)HKbbcf0ya3sTXJ`Ru{A}9T4om$Hnx3e@v3~|IRf?Q zYQnxd8;;MD_&`Ieb_>cK;-dD*`Q4Tfrt*rzQeIvduo2jHxc4SkO6A5=GfYwXl!%3J z=~nfIS6N_}Db=v(`a9h`J!*XUg&IrG`UxmqbKI2h;{6L^?mD%Js7XD%prKCHxq93~ zRX9tdqv}0+E3Xk(yi|S-1{oCj<{ZdK?VYr_eXUzxdP_~&K#^c?u09J)*~g@_GqxC6 z8td3F&hXR|>V`25(sen-Ah`BK%&dL%HmV=|c06`ZWSb4#2;XUMC8{6QioOdLsHtyvm|XQn6(NUNRSQ)8Xv-1dQ@!xu+n!}ssBc}-1^PmoD;rEq zXd-4fxe?%;@W5dqHBQOjl+&H zvsT!C3#~C|Rp+U0ih{e@?#{Z|zAtuxE+Ze6d-C_ZJ8={n+zNeBadr~#p{>?zGb4XK z53#MSRc08ekcUj(uQ)42>N>tGQcq3M7h|a}wYz?~E14_HXuEz*wko zA1NT#3wkwyE*ueGc>J4yDvx}eWho!t&EoknJNll#ao3ShRL*;=4~X#-5#hVn6T(6| zq>d`NW>Bc|80riZr_a3EJpv5XpjFgIIwBh(qX-!q{<_-CKSIb}k#bm_<7c=iqT-Hy zFJQ48JIQ=tS!%AIv4bCXb!Q`~#c$KbweIThrs8?sq&huG&d|39SnnuvwTla7&IMi? zD0I1sRynkPBiK~M&9oNV=BVdKvR4Dgng^_Me??c9bKemA97QnQ)UDSAtHYiyVk zy{Nl9B#&Dd_*k@(T3X>Ah=LgU5~b716zeiVCHP0BI5s}DMo(aJuGP>z^%B&>NxVHs z)h2!DT-_UeRpqD;ZJho`+NI-f@cD<>4brALQ8g<@H`DXu6cW8~+Ngk*3WvH%0s79u zobAHv@^D&F++wUoZWW;#5wktVOdO9r#GDu=F=nMX@aj9i8mWVEHTXM+y}=`r#4g7o*(MlFW;2wzA_fTWbAb86@k8`{%G(glBC zC#s&gW}?h;#KOo?GHK3#>5Zvs#n$bmCPByJ+jd#exYzZb>ENEmJOVh5Y; z_FpvgT57M9VOq}6Hn9tDmu4RZj~ch!@-*x+Ss-c~vKDnNGIPwmaf~9xOTc9PU1qLj zEVW?Q9lG((M7`dWg7Y5S^$uHCm7TL#T}-?_cHo6Zy;oOz?}cMl#&S`oSv*s77c@`* zc-ErER>+qO&1TD)x#&(TF~D2O5_-vz%HCZDj2g?*MWWGTRMWifgDtg0>%Su9Jw6i2a2&;{V!wUKVX7A}TwG(H zriw*tM4KZz>>df65iOe&qP}kVYNZuq3FT{MnL}1d_2wEfcNFL|*@)T)QYKWuL!TSA zvh3%5yk29^JHnXLcgOh1RnrfKTLoQKdEe$?WWB#u<*(IImlWvvn!H+eu3@10YEWLN z8Fin94AGAcZWnrd@LDVI>CaB})q|~PS2~*E^fos_R1IC#y8`TK+krb~QdS=3jFsNM z7YyARs?nV)#ZeVyPN3h0%RV?EUj{S7zC)R~(B(Z@EjDXrHL-Fqtjk<$YKKTJJWHfkA-kBr47{cZy9vx}7wqF8C!1{OSSu;<)eb%pjT#2VPgy9-}Ck z$}g$ST$vX8IDHzKUk~Z)tEyl25jr9?eMMsCv$Qh z@E2pks+a8LF!v8RfQD*0__pSdLS@umYDD_NFOQsL#I{MF9=%ZJEILfdR1&aLLIiIr zl4k+jm!w8L;BFg6_OywDUJ7>iV9b>GdcFqxx*%L%MPd?7qC zDW3iH&pwGXo3Y|l*pXT6Rl$l zTQ<7r!xCbATe35xJN#9f2E0i7Xc3RuR}Yo#Sg{k}A)Pj{wPCTcvcCJ>kHm0=x6Mc$ zYaQ@{MW^~2Gby)>0`z^^zasnVAHG+7<1CtDItI%eEpC>Z4UCB(`(>Q&qL~6$aGMYA z_nsNk0C`#1EM2*5`qYyWQxOa1SfLx+oxG-XX?5x+;%ATt~1E71Hm_yP*VS9#a`^ zsSSy=^tj?C*yNzmXzUYL4ax0>;z@zsZ_=$_{DssI*<%;(PH3Z^ zL-fW5nt4p`F5^C_uVf+$qs2ooAiS4p>#g`o^s8nFZmvq%-Lp-C-^XWS6r(CrE92kh zqfxsUT+tLf?wva-&IlY_RNyQXhdt1C7@4sAutrr09_h`{sywv&mhWZ&sMMQ34=9PH z1L4>GAXu}u#efB2Y;NUZ=Ke9#ie1iVSgCYoJ!W-t<<1V>)2I!&c8<7DpLv0^p^<0q z?YdL`^THx>rNf0@?oB!T6@Mf&bxMT?>^QEK=jk)%Fm8lCuBt81bJUgqg>cbZ6f}N< ztR{qp?#fNpOE^riJgtvN!iUG{qmP8|H|>xLuXphdXfLMkgC{~z5|-(oPp$S2JA6Ip zzLbQb-A_y!S`bg{tW>l|->Lp;*!ViBvkY)~VtL2>;kPhgJQg4u={YOS+Jz5#IL>6K%vaW!uP;Nasyza97eX(o3Kj1=F+2})&h zE}ANj;6ILBphG$vcolt=YDC!YXzfe}+l)OBXzSUywB5aVb6I1SA&!S3T&W`EdVa!5}BgTLJn_%g9b#{ za9vl3YIBUV*R5ri=ZbZxQVx{T4yl~D2!Jycol#;bHw zq}S5raF}x&Pu|4sx(_~oM8i6}O;(n#6}fHq$Esg|SKsPDyqx!h=MHl`Z z_f>xq5esv&k)^@y6=Y&nKEb@Puflnsei1A-{-v?|5@Yu@#L1);>g~^NNoN&@q4}{6 zlKtCeYAvJ!f+!{Aw(P*XXW3ZvEldi2Q#%9jij@~ad1Ow2s_W(>b}7$r!GrzG;b|*} z{HR2llkl7LkO6z7y$d)I^K=ou4BrW4GD#V495s!gs#<VpmS)bxOaCK@d5I&a9zC|J|0BKXIRy2xa>bv& z=|l{&=VqC3(Rsd|2>zxKB}2Qm!KlH?<@c3ib5sbb6f2y|2He@k#7rr#t;k+!T~5cv z{;X|8|MJ+FTc)x~an*GET8qS;n$Y>%&py`LTS?-)*4vhE-!{$lnH0s$xPp!&uaD}X zKd74w>%m;C5*;U0$7W(E5Gryu!^c(ev(aKxrK*U$swCAKA*zrZz9k)vrOSi!lWudL zNKxe=-bV+ZI&?wF28>jan?^fxucl1&L}p*?nyef8h3EJRIJV=SW_~aoinlhmY!2*gk4j zJ^v_0YUj$_o3|1W7IAyL82bQq!$VR*ie)W!E>M%r&uvY*e7x04zICC28tMvit_vtY*DT5%9x8kFD3wNAeX}rA6yMWcqj%iSzj^rYuAc zg%^!Qi_JVgCK1jV6+McpfZSQ`8ZE+9)u85rz(GYVwMP^ug}qjKb&6MKbOs-i;#q5E zRv`V#^C5%!>;3bh@Y^k_!SU1xE~J=@ za7u{e1zihTMi!Uk7%laSZB@?X)tsCY;J{ff_*bsHkBL7w*T3rU4mv*Z3_ajFoNqvT zaDkRoneil5{tYAp@`O^j?7ce?L*eq(uq$SW)L8GGVYiulc~fPL#`&W0IIf74*M@RU z501`gQ`s$weKfY1DB(WYCj57iOpH3~ zoYL?p*0G;Rz^-7`Z!iz@mV)19wz2tAKwBWWXGq{Dy>RK?$SwrnMOF?7xI3*>+Gyto z9-xRBSWCs)mnQ#6S!)HO_9`f|DCk0kl^jz_<=Ig;;~6%8#`yB=(lbk_1lUOC>OF5n zS=B;$P*MV_O6Gh>Rt)So(;=9U#h>}3RWYyL=e;8o4!||0n>XJd!)d7aA8~1Cfp)t*4zrfHp7d$TWvE)lRIaq#K|DB$h1ZNqmRP-m zmj$7?Hu%9WCB0_TAhU^>Jj$Sq@HNTZX${PH;F{h3!$99y9hd53_mZsU7pvqCp07T> zljYCVmv#9dkbuZK$rLg4PPoO#?%K|3vW(C?v4A<;81go^?t?#2XuloXP{J=1z?;!3 zzLL0tZJMPU-bG0l9SQo2&!Z0M*WB>|3S@mU+B|Y`GA!!|41y*L6n{9@Uoi`L|A{@x zhR1RQu902JLgry#^K7ZMC=bt6;^Co-_FBM1HfU0YgkyV!6~BQ_v|*OKIP9jpr`eVW z(C=Geb)DV^X07B)@(qhbk=X_!=s1zfTGt~^JG1I-Iz1g;FBWOurIPG6Jn*^m^ovFM zk{arK+R*T+2$_2|-iNWmE+j8x#*y#nekT8>rBgGmB+=50atq9e+EZHtRcA!NHntun znQ3XK{6!+IMTN{+y=_kp$IeM7c8B@yH=TZx_P+Bt^^;&hZ~IzTk0A`>I#9vsJr!IY zH*dg!juT#dG;U#GI|59Zoj81BvJ|Tu&P=1?rt!|cpg@WfQG>ixRmb@4OsN;Ah$Q~Z zCZuZ|z1JxZ&Ncg58Szaa#sA{=)DDWnCx(lgj9dK1ju7`yTPpYwiLW>?0@))f9$KeD z?7M>^heMCHsBW-azuQ=tcFom(dK9t-bQ69-qAd6j*_CPK-FlhweGlrPVR=u!J|g&s z_sx$*DR^!lv6+5`T3(Z`VtMR1Bky-dyH0ykBP_a0&&mTir%Q^n1Y!RMhI#T_H}3l7 zvH)waq4^*Gd$0$AwJfj}oy?#R8lGS$q^GAD@kCa>`R9ms!$f`~W+7z`Czu6{G_-o6KKYrFp! zKL3xJ|Fov;$lhS18a=HD8ekS+L`C!SU--?x`8a9@z}aBW+FV#2x$Jb9>qz{Ms_Y+^ zoQ?q^%k2rfg2878*fc|K%KvTkU)aS9ZvcQYXqdILKQXoST6--0zaaewidJ6-ctP~l zI>!D0+bV|1*8RVNz`f_M#s=1|laR2LW~B%JgxWv+@E62*>i__-)>n-b3K5Zw+V;3JPJjXD`sBC^&H-D{-a?z-1sD;y9P~eSMi3E?Z~+ToZLx|S z#MIkwlS)5#PyIR|PU-*>=!vjyjznbMI|ubx{wo>J0Y{T+kG1eGdG@72N5DD%(u4iO z^0EN{CyKMr#?S&&7g~qx-~U%Oumk}+z)J5HY3{oMtws0#y|k6UYSwB-BRS}ych;V$ zP?5gBI_b8Fw~%EIVF5WZ@hpFd63~$dY%I(*4?B5&AAsVue_fYMlkEcZlc}9`!AN0M zTN%Y3JH4ov#ktyjTKqH{mMQ-if2A7kO_f6@<=|=o(L-v65diTEi~jXUmW#w5I|FTQ zPm<8nwRf|#sV&^@>5okWLF+j5{ygld=6-@xQHEAz!c4o6WiwB4IAti+*Ac53Kvp|4 zdQmTarPk1mo&prPG&9@1)1!0qiElUzwhHm5s`>k_l}3!I+`uo?%bfq;O}* zuefb)P@p0sRD$=fBl*`;qBJh&E&YG?)IJX#5nr#;3=xPq1F=d zf8D_M6q`Qs<#1TOZ#!3=h=@$s!}P}2>iX}${yA#-ff!|cz@B;+)tsle_N7%Pd;GUi zra)&R4A@5})V^Zh1Ds<)-hWqKdpOn8vB}o}HsGpsH?c zZht0<@5Q}ABiiQ5JwI&u?_^8WC6>;~i+=9&=l6h+mE@FDd!C^#x$KJ=3A5zS(l52bpUC^%EBS(V&qZ*SsTNQ0&v!}v+SDYAC7xl@2aDrgRIXXL!u?iQ zLvH2tl_F)&{!K`J#Bn6Y1<314vGqq)m}J+wo_12R$Ju{*kRI|tHsbCoB_IjjC~4gT ze=VejBA%g3Dc{P)B;4`%XKZ{C5vK%Tg38ih==?}8EYwrZ$f)D6>G6M|)0cPu2k>+U zF);gQI3)&;FL6a0yL3;mG$3t79xAIUOkY#vPCKg}c;D@s+ELmA6oH17Mnvb2Un9A! zuGw&(Uj6diQ3km#nl6-|}>kt{+ zINHYfzcYjy84=NgE2Zj3zpnMmf3SgoSG~ORz6ncz71f7MvE5U9By#SX`jvmt2wzb> z&ck-^NkKu+KWivLJS=;PgoOIgd%0_0*ZSo@e7z2kP%p2QiT^5;|67^+0U&X|h4p_3 zA;{jpg_RJ;elJeHh4okD@3*iLGB4j_?zd(AC1d&9vVPAv1eoi$W&I_m>9-sF3nKU1 z4gRH2=eHaDDC>jtrer=w_A8kTj}(VE0Z}%`?3cY-hDr2X=fMWKUyb&JWzf5^DDBi zNM;Xdg*klT&mmm-k5i?s~|!9EcVY^<2K(0ws-9 z{emAtvI*ZEAd9kGQg-pPU&uzsd;5y-cN*n;ts}0`fV7k#8?^ch zAm0x_zACbO?a=2mTK1$f4PFD6GM#C8p2Gr|26B8ED|VsNRzD7`kb2Xd_@efo%m+3%D-JPfYU;| zenH`r6d>8-Q?B*7OhA#Z&^B)0l@{oMf5viyIQ3G+p!2jh*%lhFr72;oZ z`#oyElK3-f=YXu|!2G+tQLDe;xqthe41kHbm2+qn|MQz9#S~<0cPa!4v~zv?1AlGq z@1I1<0caP>)8hV*zyfQ%;R7;(Bkec7aOSVCpvDMjf)Ay-e~tD2Pupdy0VwPuA^881 ze*8_;U*O5#MEy>n332srN&UMLA(&kLEvf%vD)u<*xBC4B>*4#`rvAIU{kEyUptyfK zN`%bWcYdMlZ%663qx6ka{#*TigN&ca&u{hnTm63P2LJYce|x{*Sdrg0^%vOTcSh+u zPmG|~|2z3W5G{X4-EZ~#3-b0m`S3gW@U7VV&i(#^5BppF{#L)=27$ki-u_*Q{@=Xc zwSla70wbt^jtyao#N7x`b2x`muVi78yc1fB-Ww~_)IhXrB8#8!L^AZlpc7N|J*JeD z=(3gD5-wGX$s0ky@pSvd^EIGAp>WjWeP^e{wk9l}-us;4ZB>cBQySaGGZ>HkeYt006QK~076U8zBe2E0#x+U6R!M-Ln$WTt+LT)VWdX;Fw zA5xQNinXfx?JPxDK85SX~0W$gx3>H7kuhMWno3XhqCdj))ZDeLS0MMvH)Jr)hR$Sl6Ru z1IQ)uuUntai4HG^&0Z26G_qWis#_dA!($w0SFQQxMPuhrvHJY@QeR1=nm?gJ4K**{ ztq_W_$)Sap3%lFvkE!Z6U}I-US*iUza)|rB>6>JyX!s(>JO=BKlI2@>3@j3j=B0RMPt#?T$fu!Jl1T7^$C{KfcEE`Eu{? zd@~+eOZ~zNeE8NiOpB>XFurb@O2Dx`et{THyxnIpOS{Gl0%w>MVp>A2d&6t3x1o2_$GDbOH2+lIK7BdBy=Ha>h6JP zKD$tL(NV?#=)&{Op2hrNIQ-!}H2i+S=4M2PrXShV&RpO7(l?aI17Oz}Zty}aymIqH z4r<9%B@i}x*QT_z)afzW<>~iK{FykYAhZu=HfT*sKyVIDjQib6TACXGJi@hq^72 zED4Vi7}WbXjtUE;6lECXYc1!s3EHBdYZ|UvF>SBi5~wKdNM2bi&@kN5K5uKSi(WZz zFnCgCcVZFMV!?@cj9@;oHd0ft7Vpk`cVq(g$WY2N)6nPr7zgHU?m*8I*<;5Q)=vmp z+zM@TU&BsLMt7t0#O}g*O2(KhcE$K4H-e`}YWf2CT{k-xhoH!Q$MJk-pHU&MlOj$E z@y1CGH#(A~#;{27qLKW(va+&eL;KwNlqt>8p%$#TJG3KNkUtsvDMKd#*)l;Nm+QP- z(f-&pOj=UfW68Ib3j5On8BL&UXNQpx`*&KA$l1c|Y^%07t3axHdU}#8!;x+uKgpwB z1+WAmlHEAt^@@=xqO6*K)j3nVr9vs<*)v;bpU>|!`VNVn$ROw}$(#>k{d3-N6Y3>57yQ{6%Z+X@aCO^%hJ`oRq=%SWbR;*!pnDCk6*QL2&=9<{zCy>h7_m^7wQ zP&E)gXweZL9k<$Df~jdO$hHc7MM8F@`SpbBTjclp{0MfPDOkF}Cy;1&%3aFJi zBD1<*I8VlS3?(oNAF__uc>W5zAazk>@UG5mIHxpDbGGQ!24~*U7XE z9ZlIUll<(8V(xT+BqwU}%?Xj@BKb-0CgY-wq0yUN!%BQu$J&dIF3OI97b^jMfm!hG zg1+9-=-4UY&d5m*BJ1wyX^zV}$(mqaYdp(isOA2$#hreKQ&(3{qeI|lldg^fS4pRF zCux!rVwoxmcG2z>m$4~R6r*$x^!->frWI-M6kF!pOEY)Lp`trxeXLbOBTV>-tS9;E zd>6Gv()Pr3PmaYbM+)@QL}huCs_1n}Gd4nNlaL)(0e<=}@2xM_OMc_@5D~i{5)#U# zM{W-my|44!=+4?g#6mFLB@;VN`1$gIi?bTKZLybl%Cdb)1~on^>)A3Qc001Hb(f2C z@x-FM7{2R8Je=O_uD7?h zZSDI)&5853i-mM`b#I0UKa%yNIJqWSt}FGs@|zu0jAS> zE`;rF3`z8CN|Ls@nQ6UCl;WCfPhfSN1TK&Bf*BcWtS%059Xv9}>c?Z8>brj%k@~hC z_vCVqREN#%i!zJ0IHnQ{?RD#sm2+!c*qzwEO15p0+>OO}o;7Wo0tQ<#TZO|XBwwWS zfy<_>Y;1yJvQ)yRKyFnZYT&V;s>un@3j2|lb&MBML2HAg>x=YP`&dsVfUDKJd$uYZ z$_fn$mGiQR0^}dIImqJ2iJ-~P_EpWt@`KafdVHHl1@;dh` zxxb0fXS3rQdJHJD=eC+67(m=5ZlPRZ#V=vUNT)!FFU!X@@>pY+Ea%pGM{b7jzfC~J#k1iT8a`g$e=`I$bh$+ttqt0! zP-su^^1uz+wuE3sM?5T?Ri)LT9ZzfEh;#VN`RcB9n-W`l#}v2is!Ho_Wypp%&9kyH z=e+g^NoS+(kP5Ah(K^p&>;_U)8uQf8p)O9w{bC~sTv@hV6ZL?**j`yV$mCr=rbp^F zDi1txN&0rxy69rDX)i|`!2vz8)&Rk~H4hT33jY{FjIA>btNhpp4L(4TFuFOW7&;8; z*v+6|yOAL6$Z-rTS^B9k4J4K5aI6_>Ipyiz7kI{@|q6Dr`h`hB~W`jyZ| z)byDnK?ZWR6+0Xtg2uITf!KMz{@DS757kclCQErXNvsb`IX7=eE!|}o-HtX(5O8#1 zSM^aSsk2&9{%}~(Uv`054`#K}Z&DJXkusGGp}85B=lpRminc;xtrFd~sT?U-bKR7$ z_kZe-fYDgs$F+O1Byu-Bf`h_KbDmViB>eF6zuB#86;9x3>WpP z#wzrxBoE&0#vp_D98kVbetm}c^oZopf??q?Z!3 z9A>mHIPN_e4#tlQZh75zw^)T%I-GGF%q#I4^cX}7=l2sY_Mh=Cv>Y>4opf;ADia;0 zlV^ciuVs^TYUzZ`lSlU z@`)*U?ttUP6i0&*wX=IE zfW2U7ZBv*M7z=LYg-xUwv!FMiYuP|M=oJ>8t=~uo!M9+wrH%LZ?WwAI{VE7_w)6zL zcs2F{1|v3^V{yl0xv6eL^@a4~)T#`#r0&j2BjZG$^{qW^Ul6e(L2&j^Gccis+a7$2 zklv9cC0|__;c*%EN$9pn0Fn{e2$u<8$Emh32#PE7oN+{m$Rl2nA+a7EKQgBW4M!R) z0@pk?RJ>mT#5lLs-$SWi>vr91{+%OWWmt4Z3Xec}$qxXWkut?{rE=~iT3l$Zkn_zY z$EjxWEPQGv^=pj|oM5~72EC2hEx_qlhCy>)rkCup$xClxqsOgecCjPag@LCrllmmR+?{m} z`!^pc7FzB!hUGzQFB$>NlgU_7eYpijfxNWw+Rf=hR}NG8+rEQGrs*XPBgK1JFLEEG zJW1`x2Rrc0^MalY!>eY}|}P!8NJ_xRV{R#63A7EP-& zf*Sat$i%Gte7=L4wq3T$L39Y$_APh7XyICDuXmcI)VYLx8nQj1XIp(;I9S+e_f=1q zFd(?C8d(S>e7x33%I*{e1i7Ea)L5g7k)Nw-fhKHsQ8-kPkj)_?E(6B$bU!ouayiD| zzod1lu+c@YU@S_M#Smc6%(mDQOm-JmL-^^&-;7Uzf?ky-}?BR!QTNYpyWI4z~^;a9EP-$>ekWktED49(Qi;Mfwch zef>JsrI*$&fh#9ii<~Fq@Kmg&(Ai5?2c@^(jn762zE4 zgZ&HDu3p3Xo#$ilDyR3~LYp4?g1zf~vTmU8Bqs<{c(K$VC(c)|MucobRGK;?_50+7FeUuc6Ve zS7KXw*-);R0R?p=^)c)T9N>7t#9`53crY`oc1U%0^x3G7uM9EG>Cz{z9;D2*GF&db zS1~9447f**hBcJJXBSavG5nz0W-k`q3rtObbhM(Bh4cOh)fLrb#wY8@;5&K#YaR#- z8FvM*)sOp6lMD0|ugwmW9MkEqsa8#1Hrbh^fXRt;YkO%wFr|o)yoZ~zU$A0gLKK^Q$G^YA&3(bX4$(=I=5|gBa zlq6YcfUJS%c@s*442#IPz?tA% zNW6LG(yKrlE;^Y@*lw}K+yaCI64$%AK_jppn4%TRfgBD5+~p59DUYH$RSEC zB~Gv{y$qz%R_~69a#js^rBnLnJKTt-56?Qgm$KV4 zkyLHzo?F5_To-b!=4K6{cgIkW)_KIFvPPeX&o}XLUqlPztzm z`1zje^frQ4<n!oIA0d_(7VmKGico{kCIERe^A*PR} z=;p`6wFx~Uqt=n|)wS157KK6PReGY%t_9t0%uRh8c;cvLlL#tqaB}K|&R1u_yG0Iy+k9W=T*RRgf#@wFh z;9`Yp+UmG3j#tfJ@Is5tH7*A6n7o2ezEMu58(fxO$sBTZUimxglY?97%6eUpuZb+;M5;IYTE5)aJMnzl7zHyH;G#nwMr= zSBZHW)H}f;wxLL3?GEAx^6M>!a-@ZT-0MwPz8Sl=l1MG z?do!Azf%OIO?4@|7bXj)pW@L@4%&gPFYK2Nyog6_(vy)~DR?>>l%~LcI*{#tYN|;i zUqF_T6m9FwS%;lwmq#IuU0o&jPd`i5JaGIe=e36l6c2zW53Ez9onJjpuISlmez z3Z<0$$b2T5OitMSW%{)eImX>_zn6x2ipjHS7l;p>rS5l5G9E77|CqGQx=lQNv%Zf1 zX4{)txuREx7@e+xy~WM^kFY`(bnuO;N*8I^18I58Yq9PWP=Qcp7xWsu=pk)v@>Ba# z^n?A6U*4>GrhfjXKyx38#oOp`mnVyyB1DP3&mPpuLUJ^gpS;qZZKF>)wZ%3r!^^0n zMjRB4JLg$?G-76uhhLPO!urO{hflM}sblHl^LGNB(V|SvgO^X7II(TEWu3lRp4XvW z!buryLLvAj=T)NnOg8Ts>OO2L|=#-|+iNS{i_yd6InrcI#AY{@vPKLX7 z`ch?SC8W{A107|t)+b@Fro-U3T-|v=?++4{x96`nNGHn5?E@~A4taXdn^HIzgy0tG zzpQOI+Ew|MgXi6`Lvx4l!n{r-~UjSdQ|)9)r?N7)wonPaP!IBpY4|Ja9j0_vgth`YTN@hFKP~=*RE)v4@UF8la)|! zx}&Ia{e71y9IfCGcwJ23XH5Bqe5o?~30A?9nlOmRZ}~<>ro)x_HL6P?w(8`EdDLIe zo*&lQ&E<-AEfQCbDU6Pz=AI?qf*62@Yi}V!GZ^2O+7AqK^TF;{yUwJBB$zViAWO~k zCIzDSm=_qZo~s8D3=*kU>D%W(`MK)0#-zeF!?F`^R=A#e!_pPNcnFe2bcF3LNX{epvtemZl%$u;q~hwF5z5**ZkRDRf+f&*J)*TW z^6aqs+0%#I@oAe?$6XRsk|ne6<=Zr>j0@Mv^Z&6&2*j4g>IP-^YylH}| zNreO_+uR6LHXw{$qSuU6$mRpUN}Bf%8oqB8BYI`;=;2Xak6ZBc7IjVIt1pZ=xQ?Ef zray;JlpxIDABO=U{4~4^B-ekU$BP>lHof7(a#{t}Cz*m96lq)adXBdiy<81;;$Xe5 z?%(rC{K-su3&^H%GLLa>bN8Hqxa5;(r)WLSE`qr9)YR2IryI&g%YbEb)WDsK->pP zEe92(_-CIzl;Nj%aeMvJdSjT~LVWhByjFv&<1-gM4m*W4SocAkSFbh>b^54pM_ zP%twwC4VmW4{{jR=nV0->kZGZ)}b-o#o}QJH!@okr><#y4n+5ii)<(MM~H@aQgmm$~%>7#)lv|AVdjfQYRKET5^jAbkwD*lb_|P@oqNM?{^| zZ!$A3~6$2B-os1=A&_ziLE?A<4;6#pYP*N%u?!N_@SeOTq3~am8cp4L=T~Q`Lsv9 zN;5kgj(JF{lV@!vg=@Hg8W~D@31Sd^KYQF}-N_XdNd8Ca6X1+70o2DEFLKd(qR2E` z4&tH~_aP(1bVac6!DW+&b$HY4c7)67v_N`hbdj7a_uH#cAyAsxeMpLj3lK!y=S@z_+^*KpWJ&AaTxs*_=&FiMra|hJuti#18KI(Fag^#fUTx_)Mus^|KGs5D6zT3kwMq_X{jO=+ZB ztjhDavP)7@jYU;^AR)BAZt1u-CDb-D zc?*Uatg;D9=`AED%pcTbp@5XXf;^}D34;Y35CIR+bpko5vP&=ps}Kf{5=Py0kysU2 zzF|&BR+|td*Ad?*$93vwH|`DgAxyf6T>a=0n*5MGpUG6EJm z);oRF`9Y80>lrj{fx=YS1YPeiet#Y6Y9Dc#rV<*jF&K=^&%XCy- zu0mf%4OEMdH)LFk<(q$hjYG-5%75G)2bdYoT6~-w?BZpsUP&5)Ttde7gq3&_I?*0h zr@{4;Z``FLJHO*zg;6gJwa#=fI}?n$%F(%CtYeHI(DC zC_-{T#zy^&7%gi5zML5X&#T#d9SSc>qjLj1gP!yRckIU8NP#xeOQ!pX-#Xhz?hA_u zP^3A>`&boU{XSoIHfHH?+rbB3Arda{&Ywv28Ym8(=eD3W)pnTfJc_6e^pM?hFcY2* z9QD9PS>!!E3P*qPTvS7p=N&f>iHzu*nabc1#`v|k=lL%ahV9H-a7#i6$Jqm=}n~vNN6E+5R}k+5?Vl|1QH;$5J(8@ z_0fzkf=nT%U#dh>gyj(vDc9s99w3tPe98$Pj3wrVOwY5oSlkKKY38C9i14_URYh$(fBLn0R99#w4?4Pnt=b5ilwAtO){r9@L6DeA>G4ID*dj|r6AXo!z82ge)O8xf1g*njoJ_FUip2rHkV2rqLaT`8m`@s=jcc(MgrN)J7x7I*bZ*4 z8ru*#f5kKIHB-siFMoKrrz$j(ey~!>^!pe&-+k}VK6no1($jmbE({7`vjSq8YDu$( z570ACd^{7cPZf>P0wio(B`^KurC8NZry_P2&*DodP6iY>M~E*x@$|y$Ln{Vk{XNVt zBPaxa!|!cginQMf&(AsG%PaTIMTQBlz-@t62ODd19pM77G_6Br$R6O1g=w2<<$9Fm=txD~ymY*tL1$1`VFuMJVa`v)(@E!m8%Yc02sU+h$#$LYp!@6M1sEVtsGPz>sgmQ+Q}#Nt`Fy+OCvE;ZlfiwMpAbA zdHEmm5pSNvu316mZoF$F%jX`g7UR~}U$Nz+A{Mb#Vs2m<}@_5-UFO8 z8E}&GonA4GiAX3sogUOZb@{_n%)2@LNH&#CwaJ`mz2g3Y&#?q^nr>L6er^62*}rPf za7{75GA}|Lb4&W_y}G_5t8;X?jJZG z{WT^r*0#xs32~L~4@vfz$*=G(eD(WE9__FF$V9hXLvgoxma?Z)SX|5yunLr~9jTm# zFqiaCUOd=4-f7wbV43f`BdrXijVyP#eTn08GLlCWry6< zNP35@jU2m@CgN0+z&?(oLGff-A@TPWvTH5R4GpM|WAHiPj@V5>9X71kEc{GA^RRur zfZ8n~M&n)3zSgeeIbp- z#L+}ev7|8F3l|*eM8eF!O&h4S5xeenAwIl&_bIA%tL_}Pmb9oE4;}x%5Hn4$bl=O* zcSx#xmsJYPx}`*fw=G#4kEDRY!8FBCLoXh~RqSkg6*@k@pZxrhU5r5jSFu`b(p6Zo zCOpwCEp~9tOvqyVyfEXJ0CL2XE=U5;Ft+h@KGF_;FZfM}v3Col^opo0#7L~AG*~(P znxWDrD!8Yd5cOUu?t#~PAl>BT0WzZ5LY@u#X= zW7)1RzZbfqEdtmoLuq*Tn~mPPVo(^zveUbL(+sA)SZ;>hp>U#1Fc#Fh!4QYzP5JA6 z-p$2PhtyC0QwcFcP3`=6t$h`1^v(_Z)NG@tbFPrbNbS2WORR&XP1z}r^Y?-}GAu3+S0a1e>{OlW>IO>bX~r!K^=kbSn$ws~LD#<0uJ%tZo> z(B~4H$ewFqO3FAEPL;@?y5*n|o^-UsPTu6U z>|qFWN1xROIjivnA-+c`O5cwP-Eig9(ifNKRbX?N3f>MFc&el;WxNt$kP7F3 zG-MTM!z>M3dNVRJWoM&-$V*L9$>SRCKAkihY+-m2qMagCD!|=3tqtB&naux`uDhFj zw01#+tLCCirewLZF)t!rMW$<+_?p|5rgh47HOn3XTebn5NC;bo{TrpQuO(@-emcsP zF#>v2^Z2xi@tZf-dvzVUtDgNOT|QT=z-hDX2JOS*cvKXjKA8D}WV z{z4aO1pvY|5*4nos2S?!|R zk^rE!Q`#yerW3goiWrZmx)NAw2?wP0ewyvLdZA8i-sHMuvfobnmD>PtkKKSIJE$Gj zTE<{gl#4oiCI#~tF%3S~ph1X|N7idAJpP{Brc`za5=8|br_hQnpv!S>+j$?Xva`4| z321Q2ncx4A{r(0;d6!_JS?ZuQcU0>nkTmgHytQaeAsGLot?eTXCN2+VLCx~XfuI+1 zkeark)eCI1M-E`4>W9Djctwu>h%m-KQDV9a8&r!?RX3hLrGiuMRcU~i2l?R$Igw)+ zJL{L@)x30?McDlIQLyC$lF#OgoB+o;9pYLxy@saG&j*>gQTv`$ENtXhV39O9`{Vr! zl?silDW%5WPX7Y^xY56no%}z1<%nRbpWs6iex1!j-x$YJ-gnKMR?aJW7a6cHy)9>dbGo zI>QOA2Zq-wdBImleCaZTtg#xFmW+AopJhA-Jz|CuM1@&JtV;9JAjVD7MvY)^gL&S> z+FHqh%Joks#Y1MAmFX4F$dXum1$|=`QjdyUru}><>Bhm}3wZm39SFc#xj# z*%Rw+lq=N7fg!VXo#iIPb7lS;d#|~1J+U#Qg@_oZi+<!!HPXmGM)bW_p!atgBM*d|M`eG{Y z%dc(}L*BLg^or@0I)#eLOX74|Gd|#E8F)Y%&Ja;XYeSH3mm{~8bS>b*sH)r8I!r&@W$@y>y zH(ZxO-f14bmCJL&Pk5N-^1r&;ZnFiCy~<9xHLxSga0#q=Bgy$kDc+no|FK8m0WZW2 zRLZv&dzXspjo2uqRA^$P&CR@U^(?rDgi!L_z1@=2LsmTujyG>atoN?3MlCKX5to|s zy1Cw6f7`>w=`fuL%z&!)%6&V>E&m|GKu)lV^AGhv*iaEpFBtm=Je(~|_f87DQbmcy zMR_L`nmCK9>}U}2ZhJsAIw5K%(R4GXY4?Qb%SR`4=>d|S1!)>eMQDUF=iMF#D^EB< z?vgD?-@+!y7X`i_4p*3%qp1U7Ye%`Xa9iAN;Y<-Sue^9C7gea#xIk$=So`Q;nZDji zec69O&`(>rTPTY7wC^rxb>Uq{?s~&EKTxH_?y*b^_2zGN@OG=)?WayTZ^rh0`hE9L zb@l`fT~U|?;r!TFUc3>Ta_b$u_m)Ug@_HQ7{a0LSu>Wc)EnD!rbO;X#_2bU=KUckT zVhW~gCu0|!B46ju@&>n6k$AUI2fxV>TZ&cBA(Fo))w&POMoe4ivrNBMOPUET2GqG^ znmlYRhbK`d-;qk)5p`ks7K4C2AHP;wh1Q<78#ZP>BuY=t9V<#!df&z1oq#;z2Ngn{ z`b}tUK-ZCvU)3Lc7@222JI04mpf6Mw`cusMUHoq6;rITr((k=DJDDy>U{FVNwLm#7 z$YR=D#6g9cB^W|ypeU)UMmTD^crp2n5a#lwve(=Z5DKC7+b{QwU^FcQSfv5|K8eC1 zc$zx0cbaiBFlQQGrC}FpWH)qRo2Q@gDJJ$DHr(11st{|FEJvrd`SXQLdL1=1aAjD7 zJA$0z)Nl3i&6_t7O1u0CIQNMPbg2&Fj2|rT)!jm=C(8ru6VS9n(xjw_WvwZjfWZ=2 zbnO0a@VH}Iz?dDO-e?!w^(V%>0H-Oa`y#s3-^b(mQ92qz?~iBdH)`9RS0b`X{j7U*`e@MdU1j*rMtYCbaP4x$)v3PHJC7G=X52C|{0*hGf{laKO4!FzEELHw(I_(UhA3NcemX^EXdHRN>Hl?3&R$9kk?&?>$KxD_aTBUut26EHOuFUv^E;;CYgC z>dXHTM^1ERdsL5;>X-lP;a~93COvJ&R$#npZF^9Ck-gno_!M6!**eR`#&lw3@b=)0?;H%g%r+ z)Jpum6#U*v{+3lD=^v_Y^mS_dftUYp5BB@gdcKl&f$xfc!nXhRb&qM%(8smcr~dmF zxOiTc;oslp5AWA*MAIEKZ~ReN`on4eYglNf5B_0f{y)5u&t;xtU*5g?lPdDRZu6&K zJjbH_|8(r%-~SrTc0Rl}{`(i8nf}_pzs;Yl^B>dy$MpZ**!fS?|9403#NVPGaMl|3 z|Lz6we;v&K$pHVhMEohe{wMkWr|$o$H2yoM`cK{e?~a`6e<0s~Am9IWnfssK_Wy6R z-@)^baf`lj<83NrVchh^iqe8p_ZsNe|8^bzND6V7tY zj~n#H#BbbVv}IDOsSnKXkR!?Rl$K|5|48_<0`$6vL81B`KEr>b?5Cb*s&2g;3S2ay ztqUplGaGNUGJ$!|nFAXwIY({?FF?4ouN(5x8}B3_dm@{41i~qIUM7J0aM_tn?vJ-u z;en**j?R*q%#oIt2rf}ha&I%n(?c6qyt##YV1_YSl9Yr)p;wnr6xOd#WU8!JUAqw< zKNs?F=yrg&M`13>b?PS2Z?0p3Da@rie(Jm-(*-v!q%Ke%W>K8zIS!6wnIEmHL99R+ z-EDrBxy%%7x>=wcS!%8ey@j+?P4+NkB%B>_=ac-4d3lV18x>wPS&^Yg6iA@#sl)n` zc%Ls&0ZY|l;ZQ_{Ddbu1`($%4VQFG!tuCZq{)L5cY@8Gl2H=zuG~s6@UK>y{`m%+uTuI)4JdN!udLj)^t9DxmYS<=*m%ouUwS8d1?L?M}Pmry}54=;I9 z2@W7(NchnvyKxzvy36;`%?BEv4{LPVBjrJHQhxV(OW&RJ1NmG4Pu8betdNRs_bp0Q z0+VgtGq1+U=u+>OCAS1UuKkJjE@~9uwk(9yLx5j+xv#?RoOouOPfXF=ipGEoUev&( z)7CRI9hGwVHd>Dar_Q%%aD(<*xkA1_#z)HQt9WfJr{^A@toqu*WvyLSfMCC(X2HWe z*YPRbaDTjdfoU7_o>_m*DXj~%HeM*7MxxpP`}Tb{LPJl3G{EN963}0j+yk&v-hm@H z0+BciItDV}6Y%uWQtp;-y-an-Ldxl9P*HA9k zRI%a5j=dHzW}U!xB;Ggvs38~?bC-eC%KiSYXh|UvBdC{kNiHgR<486Yehww|Y^GHH zZ6{Bi&xwmkYoj+u#-zd!xgD;mt?N>1@iLKRvt`9)P$GLH(L=E-g1+GQ3z)WU(?%ed zvGni!Ai9I4kCqH z7yI*?RT=zeGP7v$JNvPU2o79ADub)0G?B(ResXBI8*Z9?7ebJHovl+vA6;X@bGx53 z!F9-Rn{gea^1%Tg`=ZQm^P*hyH9%&aPUq1cz>fEt@2L+R<)FRHgC>g5m&V~sw?35^ zFIHH5U9kua6!H{{rFi0Il;U^Dv+Ys%y^7jlncQJi{-j`3C^ca@LRJpgbPit;*9XYA zy7OB>(?|OBUii%LWJvS1f5fSCO8c6<01lFRAu>r&L`t18{0VF;?OUd#>${*Z^JIlgR$G+qG1DJrhaT4N8rPgbmkHRCpU&=&`yVm6t+rh%%446A zk*e2)w)y5npi?0+zT$vAB5y+8rFq*yz?7VQbCHdr5n6^6Ww$HTefq@U-RO-j3tVAY z>hf#0rs||}8)l_YP|d32P{X4+k`i95VDXdQNjDeAx!@1w{Dp&RXv$QIbY9;@6R+EG(32>^w>V~|KX19>jPvR|d@D{SwiSqWb-M#CtZt~F-)Dn7+ zVQx-OVC-`69es(Q!y*G4`6Xx0s(=I8-aNH zr}O^X)PBDptgDYab5pXRq5Prw33c(l<4C#tqPK0Y9z>k zCiYTlv+oRN zpTi)Z7FSYsZW{|%jNL*Iik>_M14~=iJ*5oiBt1X%+A;)L&est(0oD!{4%voJqNQi| z*+qw!Dkc7&`2Gbl@2fsN@%;SWc^BFSjQ{5{9D0HCpMs7P#^6v)k-Tz{{2@0t{W#mS zCQJE!o?CRK3idFeTT+e|#+wKFTkQDn-8U-U=nS3nOSj&p4msagbv6{>tU8>3|NIU< z%g!;oD|w^1DBMZq1HNeYopayKxFN&ENPa1RUFaLxk%$ctyT6$TTt4~AAZm(dmrO!y z%DW>R-GfKAk6K0C#VJZ*uTh-+whrf_{jGSaLpgw>O~s-ssdw zBcd&zGnYTUX_>lmEY$))~%36tR~I!6xDNVxa86ioD#XSKZjk@Id4-0U`w z;Z-_USHUlHo+0+c-CotVk(P}E9(JzQl4FGu2N@UGS9zb83z7xYIf9-iS#Ou2Z!r%* zaRp$jz)eVfo^v?g=bieJ{Kk+3rwjS6I>D^SE>|-@?h{#}9%wU9Ul+td;4Lav6 z)z%qO{2k-T(?(%!>KugPN$1s31z$$>y>6GV$TQ;*q&Yn75O4P~wAwKeE(RqQJ6;=d zXZi5^MSIbTr$Y`I?J_IP;X`rY9O3Ugv?1Pzec3_gOG}j=nfVdt0%yK3XhCgqY zra}UdVg?n1FIGpDEi6%bTDlH^r^V)MyiwpKSaL%XYVjvL(?UuP@=#9!{5)SPPDh!j zEt|{!+`S(ZT)gZ1a8t8lP63f9L@c1}&fKPDV8B`(PQeR47s>3@B=I4lakgAqpxAk# zD1+XR-^NTaN}AJPJn?B%<}@OLcUvM(C5%@#S70pQPEz2yLiVzk<*Em{c(AtLpEM2& ze#mfK7O_QX)YE}Ogz=f$dNs5yqMhvCPNMfO;Qg6tG>I8oNMU24)1eP->!HfA(iut~ z`-dl-HfrBCc>7}Fa!|rQFe<&s@W;9HK=H>3P7P}z8AW1jpBb7$m66jT-GGM{tC@wF z68P`|+l%u=-e84BV+VU8J~)GHi!x&pO5G@Lenxv?`P=n~>cMe23H)p2R)0s9W<4qqeS}4xaIEOpV%$>pE=KeCJqRO-VNO z-ndC_`!W#mL9xKQtM%iNr(BU=4`SS7BZiFlUeaIxJl&DJgVD;o0^;$X zPMcasHH(o)20+C^;Y)f)+S~({ML7@yBs{;@Y=i~Gu$+n~mjqdno*brmbn>PC@X)I{ z+fsZAMnLJIZNpzQ%0Pd#OnT}KBEYq304fzucEA|`SO_@|Bdyjdn2_xhoK4#^>jcP| zAjI%Z&G#wkwFZ5tHD64@-ozX%BH@K!hbK(G;6ZJfMBGGNQ&p ztE$Zn^94WN@ENa7*q8Ee4Yr$XEt8ial-s@|;PdxZ^=h0B!Lg$2gd;_rgc0Vl>b~qu z{O81koFRR|^t@7M4x6+w7P!+p<(vbUQ;u>h5I%*T4UB=Jp6Vw!bQ1tGzRH2qLtc=e z=-ptO&)xm+rN*Ot?DZ&j_?vR~CIR)Hl_!xh;{Bqj=!RM~F3#%}r<0QwS`;FJnpVTt zZs;9N9Z4zrd|$-PRy%Pi$7e$chV^ND2z5M#!0Lj^cAWYi8rA=`di@=0Kcr7j$xPv? z3D4U1D+AQ9RDL~Ty;%0)Uzu>ir)jSyBTNEhVAWs%Bzgp${6RK}!sJy5>_|R;!xF zcj^*&jU<3E0&yzY(dMWd2|E;&hQc6Wb&(Y&;c}s-WkD54M0l`^dS{o_ysv1nmbj{^Umzq-tW4z!@H5E?p9c zFH{6bzBO(B_) z3gTzeX<}b{VLf58IWH|M=U$9Oo+C$y24Ve zN#yF?P3tIySNg(G(v&UuN@Sbb!FbRAGb!bN$xf#Pqn{o&UosXc{^v5N^CzM+8^5sA zKTb_~{#{-#Yr9D!0KZam{4Hl1J6u;RDZ+Xi6ht=w5$wTLN=@Q;6!$xW$KAU-!y+Dr zALUfn#0$weRpnBr6}E8sYZvW@*5BCXGw$lZb~YvuQYDT-KOX?LZ236l9<}JR0&1)g z50QRF(JnRWr2kYW) zZ4Q*bn7?@xalhuIO8M*HT6o<<2K2yqj)C4_Vvh}eiyJTNq(_|y0~NQm?LQ-rC;3b+ zhf9Y}KWW(*S0MA@_dqWTU6Aj&@7kqIF^^jt0Mq=jz&wN-pS4GNv4BQoIg>J81?Go* zKZ#OyDnq|=-bsp_&3Te66HzLxsXtWpvVd=l`1PV)*1x2gF2+;fiTlSn9$tC^#7`9# zj)Wr{vhq&6sTIj=7;fpDmIAFkNIpeeMq6?>(4f(w)(8Wo45*F<)emtW_$QznfW_W2 z$ROrzz-h8G4#wcFE>|Yu>r}kpEGdVwXfF-irR^vhsm?UMAdY4WupDd8 z$~W?JsbDPKFUL5zOCz>rMDFEz*p$CcREsQd)94_e++%XxW-X2jE%^8quA%!EKJ=gK zeT|BQugyVXS5G`Ia7mb{)j#xd7A~g@#}TU!eqTh`~jDLqdBj24_8)DiC>0BW=JH%5u+e# zpLm$JO>CteS46A?C`>&8`UOaK8#_V17E_G%QWlurnn$7U`xhR zTzQ^}1Kk8BTXdH`pCwjjVH3zsoqiH}i0g6Fua)}QIa2@6pFOlOj(pPtZ+9HufW<5D8N z8~^NIeOWp$#m5hHop!>xMfET^Yfnfp>~tKDg6Hnw>PFqKk8K<)UN}yAqE%LeN8u5! zEf|v#^g>{HnN;X#Q{&Y2{dO35|58^-ghnxZ$)~j;m8fI~-~)MgKlXesPlR7$m??HW zlfMXMWRSUy6!TJNFSE#E&v0iCX!+_H@1UekmO*b1+t*m@O6wWC0QJPj7kqZrv zg68rz$o?pA#-knvh!l2@y1;JwaGMD%Gg`XdBFZGo4$Tn&rWy>T*5(=#lv#p{Bptu-Bh z32;)5Bp5RV=_<=!T6bQm$9~t2n}Zv-brRO_pwaZxpK->WO_E zBg!5+UD)_>HuSWP!e`L5jLVXYiHI6nAM7r9P%1_wa-bIvY8NCb4uw>#HGhUxuw$qT{SUf{tYMB!b;u~ z&pN>&2|B4l(iO$lS=H{^=u9~kN3kjYH8Iopu?&I7u<2!fJbUJx?FGZF&0d(|IGEVZ zOQNioo(3-$Jw}&>Z{tQsZcep;TCNPHSJ>G=Joh<`_?y`1!v+9N6(NzDurx}b1SM^N z);G*r)d(H5no}B65|dPL>bdc)D99rD+E9K#1+eyOOI=Ak%VKH*wsjJ1+&V|H$FwQ< zQ>Y7NYxJ!UQzl|vtHfL|e!0bt!{qMxM-S0FiIi5Io8<+6+2u1lNGUDs6Ed&ScpwA; zp+HB-6QmK=f`EkCW)vBNMq#Cv)|0^oyG>D7j2v%NkZ(%hlN4(8ym_6Jk`7WeU8u z70xT?ns5?94$F*WB;K;KU^OcNXa3*|l$6p^S+#~XdjhQ%|@n z>&<;Dm)rh8DhEJSpq~)IE~qQ+mmyzMP~r$DXm_SCOKGv2l+m;w%Vnp~b-hG%{~j^Z z_qLL7N7x+nG2R^4bVfde>SY59EOn}Xkeit>JPg3%JGNLV2vwJ+!X1*X@Ot<{Yj#4x z_^mdcABDmW{NMNFEn2|A)<2A2Pm>L;9-?a#ROAw?joLgCR{cxcA=d6Y@8?BxwkvpF zg;$L5;y&o2$;Y#ZuMw{Vy}$M&NvKz+ASR2W$N>97KyjZ3thfH~=p|=Hrrfihj*_C* zqbUAvtm8NBK%^Gxmau3-c1ooM+#G_h?y{Hmgtl%H+fsX`FK5k~>iH>tySt4{FHo0jrgFol|ruY_iGsZ3~^VGetTH89~M zw5N{p7|>ox9t+7VhezQ`5Mq!YW@)w7-js>h&nIy)Q8vzj)&3%*wjeUoD9E=B-zL@) zhU*zOl35`f=V&;|@-yPO#+yieG<;zF6sYGLC;%q)?78(t&4@SB*{+2^r&=@q=`K-! zOk)Q7lHC1{_kw`bVKYow*iJ-MZsuW^$*k5586|0LlFh1{iTXPjzSIn^+_)PXjLAFU z70930{5frX#UY3FrAdxg3~}a_FtXsYPIzM=S_-YU^b5Z5hdD`MH}foh_Qr&lD* zVz|P#SEi9dqqy#syTB*}5OA>Wq9oDTVvl^Om0Wu`g&prunkg(;S-n1xvpV^yxq@7` zt;{W4*JRqV6SLH0suZsg9$C+wH_Zdef zMZ9N8($x7uTQCqsRhC%BC4`0UT_sU;S4~0OW12DS;WlHbYkg4BUdYalO`(^J>(B1P zxPXRp)-YJB^U2wAOS?HoTdDf;TW{Q@o2$ry6xzJ?Ojn}JL9s50_|+RJQln;9N^j8?+B}YI~O= zWGj1rDG0l5))<7z?0DiKPmvXGVN5Gl%qcLkv%qc;)kyFwC?C5JUpFWKIDGrBE{8?q7) zjoUEQ038GA1?1*h*!K7Hz;V94tjMuRH5b+{%E)A29;FozDmrxz9V*-dwfl) zWvDa3F2bSXR0Z@DM%pJ;6z2weHM)^|llX|XW8GS^W7t>eSF-n#&gPYT;(yD7JF8>Y zKSO`i0&0T&%v_AjiN(G9lA&EqueM_p)awI+JH$Y4cf-@<8qJQj9aZu`aAyxd@0F;Z zHOodVRi1_Gu(dJ;`?xCsr0oS?iAQ@sIA@QsTI^a4@Dt|^6lz&zg9sX3*BXxtf>6TBHn{R9jHf0t+>ntg~A zALg3)8OK)A_J++8otzKw$n8H$=i9g`A!r@7o@YEamTLP-F+asge)K}iV zYLbc&6TNl>YwYeyjT%Ers>l8U^L`-5r!2Ao(oqYDw<_N0ACHjGc_m_4On$qV8IYFY z)hlV!w0<`&)pLZDEx~IVSwu==G7PFE%1i3Ox`E*_2T}T5 zdo$H`#1l@RbP3lK!8<4LN{DLAjtbULO<`Sxm6zxnp$1{( zY}l5$^Ts_jGuL_Oa2d1c9fK@*TPo(Lnr-z5RVWh6J$t;S=E^dXlKq8&$#K4a4C@`X zpw+UoaI`!?IT$J*HoS3J=XE1KDXNm5I|QJ|<^TFHWdARN(Ou=E#JP!Q%!(YzFKtT@ zUL1HWR15cT?6fu~zTg1foHX`KVLkW+_e6Z5f%P)7m@mq<^mMp%Td9@Ifz8mY_z+iw zVcK-chtjB{`2?vN4ohLnT~grP>!OjiqUz+y(Ys}rq$0s2am&Nmb9qRMh&q6~r}aq} z+$*j+Dc5=a=~3f%e##SgON*?T&FB_s($xM~tR)@$>bI$%=|P-PDYhVoPZk^ZJcpj7 zv}~Zs%n}omhj$H3qT0T;g4s&J&w@F>Twk)4aBd|0#bjXz!aqTL?EJY1Fnh#VFukLH zf@{IG>ln7B6c0K<3COvNILqY`mW8^ATyp)f`{Uzlaz#Ve0n=O@LB?DL6PRZkaZoIe zu;X_>eoqXJY0-^C76u=f*4#Cboao1GaJPj&Ou~e;D($t`aBs%!5SR~#@ij{X!cw^3 zcpDab(CHq;L~@?o4xWf%#+^y0r~TFm9)dyK0vbdhR)Y7f#t_q#z&$lj(OTxG9^F3o zIs9>S;_^~9eYrz;3v&?aEwakA!9RXJH@$?-ndGH5>px1IWqZ z+G$LKsO)7+$4r5gIoFdLN1=vAv_~4FcIP%?Y+?t!lnB#g|~g;Dhl(9@YkXg045*RgrhWTcfmpXIbtfKbIM1C@i7NhwRp7( z=-H*L2Wr-=JN>98XT8x6&)2o%-WWv$STGTk4bzC+75+0{Xd9Oq+QN+*1-5TkZ$uY! z^k6i@bB^bFrtLPhUy1l`mG|L}jlquAE-!wzZ0E~8>kobdWR#qkf=fU!BDgF08@Yaz z-O6!oRtsclY})i$?E&@V5NP8YsI?8-Bw=oT8N7a}4r24cDQG*Q0|jxzQ}i~lHW*P! za*%1%^!xerLQVED5$oXHs*`u60F3|KDTSy1#3|KNHODoA|K3M-VTz8SpFMu-1~3(& zTJ`{XNZ{8TyGbnLcA{`fuJv4#`FYS)Aa7N zMLHYr;cm&iY=+hKR+(94%UPom{*2AFz7$7{;Q>UM@rlik=lJ!}wxMedA}cM|qUs=7 zqj%b2(w!Ew`}gblK^<42sNIDKhg{HVL=J6zJ$_ZVhW}Qlc>9ba-Qz2=U8WTg+c!g* zV^m6*)2yAeOG@R`O(dwClwocY(wmzG7~j@wO)fHbVseI#zDU^~Z^cCO%~DoxvGeSI zDf13ltUu`ZWQ$i6erb@mVpSd$g)>708n*GhdXb(O$q?GB=-b?J_7!M<(+>AJPq9qN z7RiUJD?2{N+7c&cZkobcI#UI)&p&>bGsF7UWDu#kk@J*o>R7ka7P?ut~n3J4!KVu4|TPh+c_@lUMlxsPk+`}Xl8)gmeIqq-@PRo?y?t`9W=yh^lHd?y1>c?e^ z*xk+SSNZ_eq|N)Wzjt_B2veAVh&jrg7CXEq@o-xFPOJEv^FVl7ksk7c>`|1);IdS= zu**Y;Byh6xsD)Q9v_#Zrb(-8c_}6okf>`oJ%G8jxe^MyrDG7d*DVk}em>MejBYDZz z;o13_FATZcjpd(J_w5vdibOMlKMuEEuZF&yTEFKR-sZX`=RC)u3D$-#W?DJjMz<-b zIgQGNZS?bJqZ0vI|E#nW){UdA{N1_WuzwOB5#C{O@aDS;KI$66U`*K`P966@~rzmt<~f7+2r zcR_m{*=H+xbY{)}EKjYo3+6-F+^qpWY2T0>=_?8+70fe=$CnK%*IdkqAEHmW^a?@2FnZ=%4VLPO|LG9By; zn#6W_hSc>cw^4DH%vAF~*n7{YrnW9@)DDW+Xd=xc0@9^RM^TV2HPWS*&_if}Ac6&? zNbf~@4ZRZ(Y0`Tqgd#10L`nz{ARni`=RLmXeCLjFf80BU|8}z1o_npi=X%y`YfVK@ zc{(W%L!K4)c@D`YtLlu(VG$cT;Owdc>nhFJ1EGY)5n*9s-NrgIi$+!_#>uC+zDrV+nZ9`K<$&96 z#b3(?$kbndx3&gN$v6Tx)S0+?tkFzw&_(BV=Uj0s1m2}h{a72nyRnp5)g>l;;(3>P z){+dFuYNN{_F5&sxz8##qs}I3dp@n>Y}BT1xQ_+6690`BFZ;BB<7$3-`eteu$0D** z>iK$P(QLnab@e^neu@=gVBPo!zp+eR9`*QQKJie4qS*DU?UmN+;ym6vTb#43Cg~f6Y=)i)c<;kX+@$Xv zot6&qS3Is-#^?2CjVi-J4sL|<+PE)Az@MqTZ{jweB;wyPyC$y1G z`~o0WN6hlf{nQ@7&SlmwWw72aDG64@TUljYH>TYUiEv;o_mQcFt2{AJPspn-+cng- zVgXeQPaQ(G1dA5uOXUYGh7h$UGUG)@hprlH?+X3(`;_*}iRW;<`NUpy9 z1}ap4r89GLCe@g2S3-&QdeH>A`)DW#$*^u#A8;s))gDL@NRKQ_s-HZA&m5EB?Numn zmZVo(k~YefSQ$U-zdJ7lEHMmV1uG3sw3;V2cN5_L!86V0`=?ja1-Uz+j=*k$%KIdc zP&qbfB*CzI2PA(@?$OLM?pu@|%QxxnUi?0&rQ|mU?VyaQm&^I9RwZ-$fgc6OQJKl7 z55@e1stwn|P#uk&?BE!_v(f$hXQM&fI7-JcSQjVC>cIpd5R|rf3b!%2_laFT=kvWu zg+PR|JA>MS)F{IQe3Ec+t!aM{cc3D`36r3I@y(e61#a`WnsoV_!6@s^n&>^sV#pk zUEx&1PQRkj;qlZLQK`Qp^X*m6o8>0=-lSY{$9LX*ri6dq5 zwV6C}>5fB;YRj9N%aTKqs`AO@&VpY{c$2RegkL=FlY@-SS(22-UKATejoU}vK;-C= zArtg)4T1<2#r1-oS9g}iWElrhTPHnji6v>J1hr)>`{;zWjb}vuhBp2# zZmu0Wp$G+0^ewvD-iUrEeUUgaWm7QZe6~#RVX<{l<=NU3GdgFezX2pIT>lGTCNiro{=u9&y8FkNKb+!d(<$M+5 zm5+^@wsu}ciHv?VW}vDl71)76bRB)}QNC_|9{}`;nS4F9mk>f%s2i_g)bd3U4o3+f z?n~7l&uVW@l2pA&E)-p~JqvE=f{j7WBP$JL<#&$tV}g1^)#6e{Q4giukdC&fcUv6E z$jCb*(sfx_$59vQcnGjfYKehocsF16p!KpVZ+S4MBY}Bts1`nyX}C{rC|adWtYX${ zQes*KOX<+}469X5TWu-6QyRb4u>$B2Nb;*xM_Iq(QN>vt!61s@C%ePg{#*966Z%C$ z(=I)yh|E>COq~!VS-IX3r;g)E{!z9hf<3ppn){&W%drUg8`$2d`4wd`r5 z=Yku0&3gMb{<&;{;|8*T4k9Q~*_7^GEi7m^7Uy77iKi|ud!px_t49OgO{&rM!oKu* ze*BoCV(!@LC2ln4L{AZ2Y4E=~LvSCBXNK>N)*-pRJ3{Q!8q3^%$d|QBz&iPNA<}ca z&rTvO?!e#A0x;w(@^=F&UIBQyF#Agny;<#vVccF`citk!NpFx0i@Dcj4VR*l$0{*v z1eH8O90y(=9id>O!cGbGG(2)`j(T2XXu;3`$i!iCUWX}Ytu2#RJ**o#Q8!FHgKEMg zRhdK{mR-2L`trm-RRGGyX)J~Ih92~2h9^pRR39-7FOF7qC=;G-!BPGIeXlZ?v~izW+Ib?O1EOe6Ff~r$yn&K2h!MW9>B_ZeoX$m+cy>XsS9?kzgg&eNeG$ z74JFZWsPl7zvcc>bOnSg&S5vkH*OV_M;mRAzoeL|*h)UI$FMc`GfWrrY#6#tP9?LR zYJMzOV@#!ADbZw^hw&|~OKU6yOLlYfI5j-xY;Y(-2;R?TS6js+3-Zkf6?Xk>2gtG` zBejZM>avelYb_E5AuU!3ks|x})p_nz3z~P_LKs>yMcH?<#J>n=Gj_<|uPy7RG(?uy z+k^DkLQ|dI%2YK;=e(H)PaiH$d|t^CjajTu%pFCL6HoCJ%w!xElW@RUS64HormClh z5Tw26<#<#_{W_YUqGlMx^ifd_43no*@~udpE06 z=9|t3m5A>T`k#81c68KUNX}<{>n~}~evav%LVX*HBtsdnV$jT2D5up1LRS+9#Gtrr}g2g^2#lt+sqC_w446x)_8qasvoNMm+Jcbc z$#G8LEB-S{VX%=wy@54d?ox?xpQUaz4m-STGd<;QzfnVS+(*AbyN90m$~)N?nuq7U zt<#x&>y7-uGZh754xfh8+q%9jAgZx^}*9_3*Xy zs3#!GdJ%$MU1D*xu`d;R(QechLBMKs0`RLe!v|9$0rseuM#L5@uAaWT@D6t^FQI#> zQR}S1Sk9O!ok4l0RS3Wl?znG<%nWm5RIh_rMxf5XO~~sMQ!>M2UdmccHe}Ihd3k2f z$nw6IHnPeaE_8~L6uPGx}x)76nKWC3XKbWg_kr4;&UtLnN75zc;=$r`dDlf+ZDc!N3S-CIULJ@~J5T=x?04rO4e^3ya6f$pR|oXu z=z5vgRMQpS89ptCv>Eo}uYC&GqH{ZGu70~~i`*V(uXZgSYudQ^0%_Awrg2u%sP-hB zw`ICQ5dz6`?9UF~EoR~H#@iQ9{?zmOG~>K+erly9HSf#TIh@R-|1{=--_(K>{fTi3j->WDXjp(BCbV@m;48+; zhZ?MU>2o}k^!m!)j@y`hggDJ#v^Sc(U+}8_9Y7Z-$yJ^7lJ+uToHrS-XXEBld|N8= z7P{Sp``9DCf6hPP%Q?eovs}ifskuZtVI|RwWi)~>78QmN6VWkwR}CIaimJ;AB^h+F zH1L%avV~c?ZywR&qD4D4ikZdc3@rNRlD9T#M9}Vr*fZQEtaVL{t1BBNAI&R|-R=*> zf;+B^k-u{AGxF4)cL5KIvS)y?xsHjGw0+}e^UezK4dLC>L@ptRz3{GA8@x#a2w=2X zY=h40xrX5NJkP=1H%PH(gr&SP3F89p#P++{lhSO-7HZUMEs6q90##9qN95%kH3i=| z^Z||&vyP|(CYn*hHN%6|DU)GvmHeKtb6em|V?l#M*PhDetU~6wy zyc?4`Q1SrjANk60I$~Qe%w|={JfP(pS#(@;rA^gf7WGx?-i&?{>x4j=32QRp2^heb zA8jXfRuCL;R99kOb$6&kjjm>96R)RsR*dfT89I{wo0{7dT1s-oZM#tA_ghln zoqg*Kcr$)aRo+N#D{c0|8ZqnG zV7bwA`-r5UK6~dTQe-ox(P+I$gj-v^?qRw628?%vmq!KA>OO+Wh|YJBHffR#NH=gs zA#30E1z|sa{nC!T7O0MyyM(?hz^1jqs7b$5peKG+w>$9_L&Qk&rltSMPWRwW$#!(g zS>Cmkv7D;JGhttgv~|Wj74awGZa^&K(6P7D=-VDHv1Ld`Sel7awx&_=dyMU?>vCg< zQH(P%!nW|_1@HQ>7B=|;SJeva_O~eUYwc7g!b*49$GWfko(0=U&g5$Xx;{#O_ccdU zdV?vtNtao$;4Mh_iq#~Ao?DtSO>6Q9zy9TP_UT^Ts;XM2M&!tP^LR?48I7T|YmzYZ zFr_d|(1}Eb8@0o2nCO~7T&zD{H~H%hBR|LNmtiZV-U2^O0RJkqjW%bfQX31ICNC(A zU+Sr|Pl;f-*}3LV54^HUJg)67g@v12q!>+FGewQ!)?KIP(3z*tGEmVE3KWZzh=`Y+ zd+ODjU(%!z$~Sk~mbAEc)5P>*=ZN-e7P;j9{8Vm1(3$0cv&)%@S zXjlIfZ%j zj=uZ8TXr}ec#@fP^@aXg^?sytAad?3-OJR+sn=y0^n)ra2@gBOd=;dbJs2jZyM+?P z_@|FOo%WcQs4zqM+SKD;6~x#kAx#?nDW;tD&KqnTJ=3OFyDr&Ypdq=^$x5abWj_RF zdE3y{yCyJ$u1^4Dx9fPr)p&I#uZxIBN>Sp8Ut#&-WL+ciso{Vm%ZqP*_32;x5VueTy7@z(HUd5RmVyp;v|D~d%|Y#* zQkl=VedZ3k11gQ(pA8ra;3nYU{Vo>LL*(%bDo$@CgTJhA&kjJLcfqvQmQTJ2&-d?+ z@3u70CT=XLqO~TBtD6~;pC!lU1s<)h5Ib)yX=8?`-*N$h3&PslJ&5d*mHNK=ljKWJ zIJkI6E}(hbo(`VWODe-~&HFT!Vls6@*E2{+#E1;M+*6erz_`vebGu}nzJCaDT8Jtd;+6dZB5jE*l z!g9vxn}g>`yjYN9?8v~X8cQGCU7MQ4?YWmOMta%cmpA^6LvXdCbp@lAw%v+p=}U%BMz8N`^YfSJk{Bdfb> z9khM7IfoAh)o|0FHIRsR>mPMP3CnLH)GBa5Z&c)S!tb43B>soKLBWgXPZdkA6HrUgh z-2b6>l%WYSj2(8|sDGBlkSL7KP?@IGN_qo#dY>ICZrk0>d&!&eLD#ut*DF;*=j-cE z5*zycPA7plLb(R~7x4b%@_tINkj4IQubBF+?AW#pjvt2=jFm!{R8;h}=*X!8KDpIkw&G<5uN7f~~N#+rj z0S_$d&Jnl?Z+E%M_EA)>lu4?MOvkp6V+*IHPJoJ@wniHFlCf>aM-3_+My<8dmi+r7 z!=I{$VRbb*i;%_6I|%$f<|Rbi$2AtJskQuNTxGjXm*-Z;*w|A!aNme#pU-`AxcZJ7 zT-|d>K9VnCl(Vh0QCZr?eC!-#*>>X|q9`QG_~2;vIfMCqS$Fv;EBsBOpKBlF31%?p zc4#qtWj^i_9xd##JtoZyB;3dX)$77Mw`sOTID)iwh_TzGy{Kh|I4nCvRRsN#z^tcd z)2K8O8(n*R6b&A~c8pKdd;5l%lchQ)nat2Uy3FY1lxpiBRrP{{f|JC__dNlj!cG~H$4A+M8JukQfByEV?KkbwxQ3XzSR7Dj#^(1MWqUG z%PqKR#_o|X)^F^fGn~sqnx}z%`_j)0k<6MXS zH$D!Ic3`x|`{Q#$drqFg$xA*ng%LpL3k&?%#@>W>{R zEbLFerr_w)&oJgT$bIcTTda?5kS8AO$@#|1mPjeu*o2-YqL1^q$Bq+UB;Yu8Y=C)Y z*G$X3tS(HeR$m?w0!NLLFvUF{Gq-3JDl!G2tcw?46q%r+T!CeSOCOkq7pUsCvU4h1 zQ1)vk+M9Am>qC%=p)#1Ib5~ZEste3c!f+2W?UG{S&zrKgeLUcyGFIdxM08ns*_G_I zX$W~4QTdplFO}9bvtyV{+`ys^q#IzLm1dKUU;c1^0wJU3oF=R z^)Ni8dsFCUy_=Qdw$9o?H+EPN4Mu~c>#e)apg$cO{l~%_Ikibu3ZXh?{kM%ni$?6}9iqj;P zt7;iUv`@Gly*t*c=&x!|xX0Z;d{s&>L&Q78q}uZGpo_r@BWh(-Cpv`}0ZXMR91p81 z9>Z6`M%-OMf{xw%y~nFhR3^VQ94}>zyW*?J^|W;`pif?2UH4U7N9s+8kh-PqGejh~ z8wAF&F?sbu@AFv%4D~r_QNJ?xN)4=IpPC%Fh)5>D`sY4pGPZ!T7Na-{4z*(Ad^mRK zDxEdjmZrhg&PTH_yz4M*w9e$MWM&&fTkYQBiqMk(3eMkNU+X!9_JO!g2QiV1W%6Y~xY5{s5puJs?JOV~?}sj5Ctg&=mK=b;E;i?9>9s=(jjE=@(r zUX#dqzk(Q*&se0Vd7I^-7m-zH1<$d2OPP$A?2vYo-0vZ*IW?88hw84UvD0e0W|>uY zbBLf}h(;;nD=1#+TEixYN#&SB&*+pkr*g>(&I_Iv&I{kYpzwWIn2ziLlzgBa{?YTV z8uT^mh))9U$Itr(^8$){*z3^vrjf5Q{ueVYtc@8f4^J5vm1vi3*1i?ouB8;1b5Cd| zSJ1IjW_tp_4x<1@BLWyUR&nD_0Wi9!v9Gey#+|M@WHcJz@Lt|`K ztn_hxLsV0%w9oYbw*5nIcVhFx(8d=YT=1N$ ztx?F6B3e`W=%GEGFgUwTs``tY1mKr=o;VJ~l6xh|G`ooR&`9m;xK2cD`D4IxgDJ)r zV1ub`87%-N-RXHY5p+@=ZY%4Fmtco;>PhBg8Qn!z@iy4&Y>&qkN$xKz)n>Bf?>G*R zu8?adL1qpEIW{IspEwc-g`2~}Bb~9jE7v z5xks|(_8NQooYvw1t&>RxY5+F^9evp?-G*S5zC$gPq#(2LA6`yN<&({jCuu363qI2 zfp-h16RYVD2+-|=$sLXNZrsD^hAO;Pyw`!2QgI*IPhY5*>K2SZ4Gf}h=^rg|NY0of zHI55t3z<2nL9--D$SPg1R(fBdW$qBKS`FO$6oe}xmXJ77@CwDuk^4nNO|(DOpwr8A z@2&Ysptycs^8 zDQUw6isGS*C<3#-F!$%yFNGoN40$atyL#uWr2{WmT076`=wtW=3R>Kyrm_N)hh2?K zui}CPktAyLgMI!i2P=MvsX1C}LqL9-9h{m;c{JM4_F*-3LqP{Bo8wE-L_XGT2BxG^ z($c^P2cm)o0Ic7#l{qg-k1$h(ZgV=+^x^2NhaW1aFUx+S&Hz0X@u@Hv&$;p}tXL7} z+KHK>l?u9ws#G^q-4{npjaF;cqqgx&8f)&cdN#J%0tYF4tdnZH7%0?f;H&) zgE07n*FQNTT#jZA_qQxS7cZ@BVjVs z57l?MngYt;v5B1XpHfW{HAyhU&inLwa@ZA^)s0>Db|(rR2aT#JUmMO% z$W3hr=~e5*HwPM>%^0?{d8BkXMNLW`aN@(<-;bg0tu4!+Gwmg#w6kCz5`HgVv6LFR zZ6M!sgjHK+dlq(K6)$2Tej)Y($MBWv`UBuRdAuIM8de12mGWvb@*b(`in*C2B;!e! z>{i8PIpA!JIH-SLxy8o&K=>&{xUpEiH>?;i&Q9hkJ9Ob_`SmH>IF&=e$)->|Pr?I% z;d6GA3nl~!ya(i^vwx3|vJmr-mg=8(2t(F)oLk_DPu57pj(C$MxiczM9Ru?)O z?|UWLr#WfhoxM;6iw8y@x5=8XOEwWTw<*%p0YTJZH-}f<5vPQb4lIY?)*s~9?83bD z4K3aZuU%#7tgC%1Ny?w!?F648)+}#qg+}T6+%v|c$`tnm4Axcf?8&e`bpX|FONf44 zQ4$_K6f^=@9XWpxc>39BL79T|4v1^LSk|l1Dbhz9+{nnYUMxP%b+dIgSyMIn%D6qn zHNE48ol%cqRu)!k^}r*edlV?q0{yGT=ef|Pt}u4OL~LK#(9TN>V1Xz%Mua*%q3w%Q zougB2w&<$_#>wNDq5gy-uKpr%u`%5;Rz$19iuYKv;&-bcX~;`rEwk*fRMGe9EFI}i zUqUv7(feut>~-&xJmbW*VTTbU7Otq`Bey?C3s}R3@m{u_!{v4phtG*AZwu0XC7e3y z@DE!{;0tZOV@VzG*4MYli$wQ5zm@IgqV%W*h1YrgJLdZ+#=CS{5Cvx5!7b_8+>4g! z{@HL1*A`yPpcz>Q$CsL@Y;7iUOfFOt92O7169>TFT`3>(XJ6_uv*e0HnLV>VQ8)!b zcY`^>71Vp*Ql+y*1vs7-ft5E_w9{)tF+<>o(jKlaG5d=xbtSa^2htum@|A}Jg-Y!O z@iU=yrb265rJ>*LrFwU6o-IE$A}!E0x)uCWPtCxsb#a&wA>jABy{Yu{8} zPRm+|F|J4jHKNrLJ^i6cOOV9kN-_rld{Mo_X5DhWk9jDaME^M(!*#RwSZ!SzWbTS1 z{F&83O^Q!!uHm%axSg53Sanu1(9+!*wk~L-n|Hmh(rB%slmgyuTgY0W;iR{UB^cGu zz;t%ruVo;wq+~UjS2=xqh%m~|vP4(K&AIP)NonF%Od?NIwqnIbSm_+lUbW9(uVLxD zAz}jUUz(w7@yJ=K@Nfk7$iwhQvp(SpU$b?-Lpk~b%5)*jR2Lr zy6(c0q_iITQjU#&pq19*4eOG^y$CN>J1S?FvI%BX_{KO#@NVWP5=F%|e%g^{x2e#H z1KFo9?s?676ulc&v00vZignzdwYD_5$*1Jr>b~2BSPi<;d9e76Oi4XVP_sA5x33P9+e4ZKN0LSIOjv^KTgnhv{H6Ak@pwh_Sbu%t zMVl_z)pqBYZ>rV%NA2}WM!*D@o|)H(X6E;r$siVnL6y`-HZ^NNz(tvF2T;?lc9x3P zCUk?FAJunQK5*&GX=up!C2kFt@0=BaN}rZ&mro_AmZA_vv2U(2<*PHx-{SCg$AnbU*%E)KmzNklfjt!EY-6yKH%`2hSqOqZ-kJC(pf)6SRaLbb` zYay{QsM;ia<%-i0>-6Wj!oUP^NEvGw?N|3X7p*3Cuie^Xuj9NX)F3@JN3@=EJwaH5 ztQh{7CUjk2(-$|fhB|6h-Pk-ymDI~%LwtcylnIaAD0vp;l@ot@Uk824B3+{cHSWuh zSA?D&Dbm>}$v;Jl6PW7&KBuCWzvDG%0dieH>T% z++CvK(UO#HSAt6^wb2o`#ogqo{q?+qo{JO>mR!&8*LyafsRSpay%9ZI(JD;#`IHL% zb%PhLbBxFEV-K>IsRzHI%r6*RSuNhiLJX{mp69a>@l^IZ;0>0m1Ma*j#g6^-CW+3O zAJb)&Ah`Kk1fLAxvVoyw=XDv%+yuEQwy-8GWbaJ66_-GKly8adYs*vM{2T*=SNy$c zTM}rg3t~c&7W!W$<)pCdu*ZfTi@vs7Pino6a7zd1Ar-0O)9y5N*%qh>PY}4XLb-dc zpL#7R0qjG) zBZFAGYYNOOYrR%)(QR$M!^XWUk2WORefa3}9Df3KDI4x5zZc}F+`Xe9KJLvUfvD(z zJyv6h7Qfm0s=EinKOTI#qEDC~O;|aPcisJ}eqdx-$XI3|3tv&TtAW0#cgTqtEDyaY=R38(6M|)*%0Qb@hJP)dpCZnMntU`LwMv! zUtAUqeEN9pRX}3`5?J!4!*hK2L-9qWWrLfxSA1bYs%f-2vN{J^h;TwSrl?{Uu88+( z)Kn56@dDrL>Zx+Zt~O5Tm8tO3_`uNqR@3 zy6(U&FQ;-(^I}(8$Hx+`#iwCi`$w|a*>N3%vnc|j4=4Q_v)F>h&}^^kea6JIw`Gp* z+XwKcCtg@V-@;H1R){6R?YR&;z>H+$YAeC2YK%R@sCbt_(HNRtCZ1Z7*T=P=Dl&f` z)~jb8n4K^TeBqQD$>)PRTIH@IP6Qq#5Ll8XzxH=Nn{`Zp_9-OO$IA5b6(Y@$WH#(8 zD8KyZy3uXV`92-E{#B|gBXCQd8vvIosCx@RZ*MjG&842E^T%cm#5aOU-(w2w{Fy^N zw%kS%eR;EeZ+j4|Jo_v+q)KE7kuVNl=iG2iX7jy|#TXCob*%v5pk%g<-I)Tr0cJzeELz}$c2fe2W?$q$Pd-PuX1b%`Fm2-wR1{I z3FrFR_|-cK%`)|i>>1=4ND@ClwE5RnQ~;rqH1JU!I$ z@kxJo491{)1g}zu)QZN8I^eBzavT(uR3v<`Iou%IXJkLGKr#a7Z`2DqTf!`>Wchy6 z#H{ON-da%n+;iyM?UB^aT)%351JLuNGS*EUZ&Lp1MsX6mWXFB~ zG$~8Wseq>xFP(JKP6gZ#Kl!6N?os8bWGy&KqH+zD2PkCusg^2J zzSo|9=Z)XbJNfRmy8UCXk}qoMETd;5yoqp^thI&Ao5blBCndeETCce;{0Kd_)>%TN zd_{#_?0#wSZaiv0CG2u?VK8Z`zV7$OyZ?r{Cu5a;xncLW?D~Z%)>dcU7K9#P)!&*+ z@_7d@9IcQJb2GTA9@rfj6EBC@Y#G@f&<{dK3!|8D-I|z6aRN40t{ZB3i!cBcT>X>tu&hH-mG`ZWX9GAX7>F2xg`(3;EO=RlY!{N)n^~c-n#EHJw z&gkX#dxg43Kg~hQvi}Pyp1wt!O-TnzYDK zne5kjeESMo=#>(}Z-4$F;eRDMP$t809=ssr|41j zO9GAI_3PKg^uPveYANT=|5teByOIBVH|_j6G1t|!xLjiYEc~UecFg;;zJBxR!S~O& zTra(Ty_b?VFebq=+r~)TG~Po|En;lbqj1NgQ?Zva%W?4uoatM=Y&X{=eE)vWx)8)6(WL)yY}*d6hr}0Q3A4!RWltwdI1qet;lB9v4_t!P-IjTI>bEA} zU!<8`G>^QZSmzoFV_~^*RcvhNeax?|CoY}4d)w~(`xlpfdD}~wjvKiOk5`|o|K8vq z>HhMjAj33JDaniDUkUtuC%*62OPTrecW+b9PLTdTe>QFP=SPojT>2km|8ISuG?F>< zXg(z5pIG)cWP^TwbddMssh_{i-?aIgTR#T-?>P43%lZLyZ3&qkhcUe}_~* z0O|)oeYbS}K;wT0GNeDy_}?+=2O9rC%1~cub=rhXe|JDAxb^TZ3_dc9-=}a@~H=pCrkNAyI!D`scly&`--*V5xHdxZ;pMZi$EW|)OZ~)8K;A-o%1XM4a!=-uoN$7vr_D_SF*gC_a4}Hpfj$Fey$(QuZBTPUhB^TeR=d{NShX!870ZkX=B2KBRmrBeQRpm)6WL*dp3QG2sX(l(90 zrW()z1?S!;R(D0lMWEy^h}EVP_op+vb2T@0r*6C1S||~EeW3j{%dqLi8b9=6Hy4!M zp$>(*DGlcbGulw)_%2S>>;*^;<%>iCI-;12C`2R){c-haYi5~X=osEHjO@y4vJOLh zo4^7|tT!iXpMw36Q(Fo1;xcDnkiWaF*CWLih60v9!SCOoLWQ(nU$VIIhsV)ATNb+) z!bdx;?6-8w=f!_z+sCbh#w{Nu{{5vB5of4Ciz_s#*E@_SUVZgn_XbGNS%rxSU=k5Cbd|9kKI6fG zi~3RCACjM11T#Twy!Q^L7o+pnoz1GM=V ziW0m(Y*a$3*L^{bWXBO91?M|SCLLBJsEtJzgKHKK3wIxf=qn~CH@9HLj04aO6w+Me;aR26uU%P!G z<}6PhSZV&=m@?~A`d0;Xs@>P#zNMBo9VBme!!{s~x#IRUB&2daKK5&Ko?pVZr8>}2 zWraj2ID96KZ<`*zIt(e_o^b3pG?PI(sKd<_dXf`+EWBhv@r=XB!q9LF8)A>$bgARs zVQok-#3;0uT`9jNpW8IC@Y-e`1Wtv^1IxgEJ-pDil_Ag zh440Z#@}H$k*uNqg@Zrnp7dd6%^pa;?YMP5!`f)s$tpay$E7$Ew*H& zGoBJaE-ni2EhRX%a+9+%T@Kvl73HiA_rgwmtmu1Oc3q1*j3zbVh6wWhPuWEi5}8}- zvBLM?Rx#B#XTCRLUPz4fkqVu454)#yLmK6v-M!o~9CjoOt8sSWD$=i=KRJmkz^MgO z-FBX7EpaH_hZ0ZgY;NGTySX_i*`0x5(b#McuGwhnXy0422_${LSXXcSj?nQ{ab%T| z=rS5+`l({FlwaZac{MmBZhJ1dvoe)=lSQ|jlXp)mg1&@<%5AADTHVOV_n~pa;&NP) z+gKX&VimeSC|rD$=qa`zHM|&<&$78r(e$3KeU?GM7FRm18{6tE4ldRi)zW(&N2Ga^MGfht1H5>Toye(wa(OkdNNAZL;1-@ACyt}tnJI!!B z>VfIXxFg^7seM;l02}Ck%L4^T^_S~t#fAhuBnOw3R--)JhKihbL&A!9Y27p=yr$zz zTiOqL-KSjEgW@R`KNQcx_XBJhHiS^=duyH~A{g=;RG@`7d^AGeSYL-bV>4pg1}Iy0 zYA*+hGt$!#gfT+Ym6lD=>a3&eRAWf)Pn*5Y$l(6ao6qX+cR*8sLUOIeOmKcTHNO1m z`EGYZ`c$}u4r1Y*Nyg&Z*Ip*vFd0e&(O?cW*xcM+nC&GSXCfCD%AR%e`s)2q7QP$3 zx$cMwy{MTIh9_a91sJ<&pm4@mt@D2iT7LkW-xZF5TF?qv#6Y=-zj>-tt=N8{iWE@T z+X@e2$cYxxG8zUnV$HvR&Bh!6)rGsxy--jiFm-qUil|$6cI)orvj^tFc11(%0feLw zLP*1sl^I0*kN5Uc-@HaV_7^Z)h?^GKby}~DZKuj%nD|1Mt7Q6>hWEXrl)IicFW}1O z5qUGYQT0+s6k;OUx&JDg9ew?5-$Sc*N0@k?v&ek0cr7GYVyVFcqnR2uPNV&V_>(`~ zgKF*$BgUo!le3*98BGinE>a;)DFX+uhD@BBc^!jL6#WIM%4M*&az4y)t#b?e5<3H> z&1Q+&;%s6gy{u+&@szVg@u*{)P;nA%tV%DAHDGO%5Z`TvzrG*gFouuMgCX3Dj=G}5 z^S~3UhpsHW)&|%`^j$z zp&GQp*uc$5@2e?sFo)o)8tfzyqF854mBNoC_=_RSP1`wZ9d?b7T-&G&=c6RCoDuq6 zF@8onjje~hf!A5Ge9TsP6t*6o%`37ObsOzr=i}kVT(@dhON{U?;ahKZ-Xt1PF42XF zAUzM;75E&t(-)*}@rikI%9ur7wSB}Ls1_m$Urw9FNAhyz0;;kuP7J?m_f;h_yKjzu>Le$K3%Yhd&w@A*+g~0O05BJP_vH^%5dAZR z7nsP1q4LI~V!peTRZCR%B5tgVgi)Wo(+2y-9YWv6-i!>70d~Y6!03~+cg>X(s_v?h zJkdy2QKc2(=t|&2L?mAc0+B39Ik)!!(mC9Ow{T@5NV)z-UyL}=Y*=Ue8*&@ml7R*YyzcTaJh z{t0YCJ;QLdPqo%)i=^Q9jGTWks!r@$H{KJq0>N8)>Q`gX&yBsremK3WCy_Q%Q*{y@ zr6$)Ui_+|~)^pYmHNG){IWPG#->F>n9rLhNV1z?IUTSHH>qRIE(@ z1h%Cmk#Z;y;+)gE{_CUI?4!3@@DSbYWEBV;YAob{O@4;od>sCpw2J}az zM`lmsEA5}Fa{ojB{ttWa8PHU=^$(ATiUko7QMw`^ARy8^ihzJL=`~32y;lJhL5g(g zy#|Q%nxIl5z1IMtNQZTj*J&ps!oB)qRV zj6U_&Q|J2Tj#^pX6-G$ecfTF4Flz;vV;Kz6_H>S2j~XrHiXI|9a+jINB9fNJ*{fv> zty1TzsfDw=t*)%do-WMKQH#BdFi(jFtMR}0X3SYDf>O$svyY$Spw-b&2yDODw#e0sm+pCl-wOK|9E~kA-X1pA!%vD5Z@#Ft zb#h`EnZ&o1CvjhjHJhkY5fC z9iexn@r9VyTC2rxq+M&0825 zrE>YLHs%r68)^6~0nMRb`xDx5VS@LMNi+rzDo>F3KR%Y@6bgE6)GP6u$ono68u%TU zJ0ix~b$PZjgt|-2b)?qfY8J){RW7ZO!E!YC%5GP%vOZHBe{KkDG`^MV-de))q1o0eFfTjZUT}PSG>cFb{PH}m z(j>ue8X(28iE4nr9JW7YkUI8LC`B-cmz!T=weF^R-vG7qz8vWxB=h-m;F7UjYhs!G zC)y!+wJ}mez_V4dG=Ho&k$eYu+YQ;jEnk>(M>O%dY2Jqw8uoNBE#=i^6+VH>iqWLy z>78uX+qjz=#7i3-ow{sia_DeIIw?Nmv&5CkQvVn#zL|A~#~C3C8+2*C!=}B6jY(3QbTdw9>0xkF zNL9~P0N>BA31zG1huDKWIyuF8rK{)Z(lnGAFSecU zF;1C(RPamoV)whffc?zyOO=18{n{%DCfWuJA~x}IWHPdjS4`MQLe6*X8uA1B!%zg1 zIInP3DK9G?d6R^V2{XR*fM`fN)n&T~WcvH~m+$V>+_4}1@Ew5tlWAE*;;XY0^F^T{e?*|MdcvZ`meZ=v za4o-)F|dk$f?hZW&0JAr&nIb6Bg=wraS!` zVMk{kB*qF}4v9n#^XHb%&P5}LM@NC|ERpjO2yKvu@240p$BF3JdX2kwon_va-l_!W zw}_fQ5;?M(nBd_+Q22AR#OLvduD!%Cn2SAh63t;0>%uN&#ZFVIq-c-7kxr^il87|m zx}RI2&ax2tOLggM4S0ND1bDc^{0H8u_6z7L8e=kz?`}}>lodG~DvqTc43(cV&QD9x zxJkxYCu(3h4n8RKm2sl-OOEiB_L_tr_WKsL|3*w$39;Hz-AX-giHs27Q52+Stjlpx zrcPQLCXxlk*!$kU{*^{RCaATyg}`+XV(V;{R=H6erua*i!;9|- zRKCsZ05??&#H2_-Ky-U>EA31)H z8re2;{jfYP{*{l;(P4ceTU%e~n|l7U(S6jwBgyALz-_W`fGre|VJ%0rGxr(*dG}1S zsdlx5VlJAj*H&Zu)6uk7+Y-dj3KL;1mj)5NEbeb~&*JOUL82)>x!qBE3kvgh^Ce+R z3+Ife6J;FFvW3#RZY?L>UGwd&T{;q22v(&`_bFS?t(^lvuA@o|Mu%SqO3qU;$L6au zEijh#_NPBBNk1sDZvo|V%9g;@RBrYv9zCRX8c{N8%lqtBhYBD?=d|#$A^eQ|dg{B% z>$vt%O0A74vRsMpow_yWHV1p&&MOIX?+fD0w@|I&jhhwO>RoR-n|KA6YGtUal)i|6 zk88c+KBbzi2GC9Ul;+ z*uct^KfMbna}5&C_4eZ{6%<)mL639i!)c)Snq=+aEQOJZ6oRUp?RsxGoN4E9vz?;# zpx)j{%fUazcaU3fsW09bHD;?8CR_&S@ie`-B(@nNa6C@|O>MFlK(M$^U6V=ivBYPx zq)UFd^|RA{AN($uo}(sDmrYeL_2KmFY&}z>7;;8%B%{daxd?i*RTs+mu!tB5eKXQ00oXlE|IOtY0;);Ilm^L$38q>&-$jp^I#t?Lwd&@eOR zhm{Lsq{05aczfKzny!IS%NYHDNF!$-gh>aRhsDI;qwne_%2!O48v`9ub|j+ z;5kG-*#C~$RaE}uE*%%PNIpiX_by$fLYKZWTNynY&l2JQi;N6o6XP-jYYwN}@Sep8 zZXm!5N45NQo8r;OBDCHIkTTdigRSZ4r@O0ETSxMot;VW|x9x+2m`F^U=A5K~|GPnr zTPN`RAGB8jeFdMkijAmT`$G^PH8}3?=2Xm$Q8itUQC$>tU;SEp|B%Oyij*Jjr6+QK zabgHdxt^aRQtGieQ6PjFXtY<;5;E6#swfsdwNL4)GU+%Su+oihjV)6F>Nl#F{kFy( zF@r0rT_gAO?{hLSr{~!~vCt~6{a8^--;O@Ao)BkdF{+w-76-9)gZa?O$vU`1-;dbo4x>5$9TFul+dB$dYGB zKHfxUyW%~D$5ME?tM>TiHdAUA*Do;Pw*VuuWjz}*KESucK|%0QDZ{y|rU+-9@f{M}&=9N)Kj=81Yh7uFG3r$AQQoYXa(1S!>YTX&LA|@~TE&|#vb_UP zoDS@pwDs!(6&ScX$u^xf{@l#pdU$Tn#?E}NhfUn;=~FNw=WdB+_OHaC7k{lteAKw7 zT)$NCUI@{3*M5W=-C75S@TJN3&`mJF9-_vO#_WybjV2C0rjt`#ThYeZN)?Nh*qrU4 zh;SI9o~=|Mb4v*qiO+$`gnhc=xb{Zg&T+HL&OP}IUt8{XL!hrrVGHX3jTzBiR`XrgXqg-|04~_Gqg{N=Y-0S8> ziZx5OB`At>MTpyg?gDqL0=jg2TV4Sme6)bF!kEYuSKH&=w+c@P3j}#9L=29b$s9+0 zN!q@yytS57ZR(T>3nPm>@}S=8CxQ0)RoSg8ie?9d;yIf*QqFJILKc($ron$ltE<2? zk#BzcIm28_j2O9$|9Uf5PVuXh3g_&Ag@|T8LyQ^TFV$LJx^B0+ENF~<{ zu90)LGC~2AG5o@|9+O)$c=Jeu?r3(U+z9sBLv;7(x!<>OIbNw&>GrF~1;XLipn7{+ z7(bbmoBoueVKrw>;#*?3#KSMfq^G~G#!EkpGZOohn%~GlvOBu|X;<>$QxOk1a&9#8 zX)l^Paidt|uujBvsLb)083jZ+Cz{_M{#%#+CrA-+ne%^+Qxx92}NELIe=j_FMz zhL2Uh8oibJK{1ir61oTxjh7F6E z&---~?@?V$DjWP~F7KvApMx!)VnNS-Y(1T!rl; z$bHesD;V@%_#*`%z7Ia2p?*)+2yo4wU7HkHBA3>it{-cnP;VF0BIXc$BPARx^L+G< zYL$pVIzQ)Px9%0Bni*&4I(~yw_;ck;EOb|eN!Do&&EEM|NI>}3>e&}@_~_fz>mg{? zv~Sk3FWk1@j*HZIjKnWRaEK+5^>a(AQv4m$eSVK?JN9sH-7c8yY69$1_4#9ZO)HK# z%xs*$LFa#px|L~onB5&sWW{`XXu3CWR21JN(N59ZuwJ$D=dae^aOOjdPAWH*W!w}F z-^k8%t6N=-9~SGW0jR=bkrTER=(>o(4yy_N#RjI3jFT=nBR$XjBi9SR;)H*?#+D5a zFe_RDC)$6jLRGv~L*e`DW)GdKK!rfe)Rn zSbr(?_;K6s`WsOEf{<|Z=T$oYUe*7Y)jLi6Lk(^d{~C#ZvK4%4Tly1ge)WkG^dP)A z8y{2tc?!Qa($y<^r+@iDKZ22j0iIaT5S~BN|4W`4pD)#({V%u^(1_1px360MREhrw zwDadv_$CAKf5RP5{QI3>83%sM`_IGv(~$38%uxO}+}XyLq`%1L{5Pscf9ezOf5V-x zlTK_lP`GPn5Tbxnx-pMS;$heXFYKN=p!Yj(6ny7I69k&P;<0ZXz``-3?D={&Vd;WA98k ziC?D}AqTopr|v=Z%CzXAi!~--_sI!YKB!1^EJS@KZtpCi&kJl+SYbMwg?Iiv%?u^s;MVreKZ`sxU_-)vEp}51O zdi{m;_s9JGfB~B|Ius{PDdYDQs29wE=HCVlx>&5;P#tuU=v!&=?}s==plk3EZdKD* zNBXTV8Nq<>%gh&7J^9Zgv_u8oHS;9*g#72hD`OsCzF8KqW`FjdJG?#{eBA5KbH4p+ z(e-EImId%k6Y9}<8~ZQa(s#4@>j950UX3bNQobwbUoZH3CHnnALJ@eaiKrO4{R<2D z{yIwcb$rFZMu_>OBl#!Se_|_tOG?21-$ctu!>ktdD}1scCeTNUnOMJ<4o+$=QpKrp zPLugpWf&w95LgnB_}D4y#5tYlWx(Y-GsHwR7GJezcQgeD^0*69=}+WrtJK>uAERHaqjnZ6#>_E3w}16f8|U5d`(6j-nf$3 zmPAficQWX|x3#_iJR)_;XuZz*>-U`KyhSPAxE4DEBmezlPHs7wj|)BCll<4BRUVim zOT}-j^9RZJKIt^5C}JTlP6hmcY^px~F(?ft-D~SriOi7te$`(o__N?n5ftKC_{>u6 zOtGEaUn5K913Lb@p}q@;<{@5_WVB4bFKS4l-&~wy zEOR+*5bVVVxMG6}Cbv~Mr#bi$0io4-6N5+`_VWUlV0C!8PV4xTDS7k!VnY+Hw+l#B z<#F&1PJ|1B?i}yuo{pT&#&Y)v+9;EDPpkb(_(=La)(Bel-1 zomyH`OtyV5hpzg2PY`I;bgRZyoCDdqh$L%&jju1H6BoZByE2`~D{7F2UaaT!L=U@H zhvM@z>vFql?2q>@PGtDMS=y)fd#s6brv0Xu8L8(RWA0oZ^4odHw`J(Cofo7in_`+P zn(gNF$nnmtMhcQ}_&c9>Eg#VN`!PPsCZjeBov2pJ1hGcD5mRQp8>onzW#m$QZ`Oe3 zo+;>7GUJhsH+Jn^4N|5e`<>9a1!5JKsn9IT9yPi0hqhy0BkPqb?hGS23QOh=e`i%X z@)@d4^I6VL(9Vf2baMT@ai-heDcaYpS+Vgx_C;1h29c4{37^o?3AQmc66Wc_6-QHA z6)tYY1_v;c6zRPWnJVyQk%OG&0dohJj(t_IfCi@*mj)+xCr{C9okqXIZQ2K$Y^914 zV&p0>+zW$?rYZYa!@w950pj#UsVK)(*6LGS5n0%CIBDLfjh z_C_radN+hG*(wMRgG5Qi6ScXs#kTC3?G^Yzqg|cuK?GF@2f9AnwIe`6n?3+M_fA#1 z^%hmoQ*7<_(w$S!5p984(<^1ZI1}s|{6(KTn%0(9etsmUJKyr}q()S!Wr!SGd|9Rv zy_8#L4fkc#fNWM2r0v1Z%B(l8srS#n$j-WR2z!FqSk>Cu-%-H~4VPJM0qc@&?rxML zdyQeIFYBQk^1X;Po5+9$2ab)nxt!(7PX6qrTXaREIVxu^`q8rac}r#|*_BB%PR-9n zq9T=i3}LSPjZ2jL6;`H=2a&B?8$7qEyKZiCC#s6G(ZuW0Nv~OzM-QC zWHt>Wotp5#%&2$0!x-#*Gl8_KGb11IZpTz^it;;g4L|5&cQm4A) zifKAJwsvd-6s<<8=YOqa=$IFG>lC|n7eyU8Wv{Gvzg+X{vqqo2qJz$zi*w?Dg1B1M zeE;C@zKW2N;e+c`>)`vF*5A#uZ$V>ME=neT7n9f z)`qpBX`Q1UjieVJgs}Iw0>TG5(L)q-AE&8EHm+D?N;uOXV9WJXVyKAHCE6K18z z@GZaai_&RLc?J zOZ|PgAcw!Pn;u4^`Rr7^?R$GCsnOJV%V5U#^WHoTzAh`2=fWlh5uC|%%%W-W`cd3A zuYL%D@Ap^2ZU%oZMg;f}1Rd>#kjEjVm=1H7lkQmFN^a}}TaWtW+m0W-@()WtJ_HjR z+fh-3O)%pQ5?8e#jSpChM&Nf0qD8=Y#rEmT)5ZQ=n$YN1^7B(g>itzY*0H^3*jc(rk%tjf-l(<4?M(LV5Zu zj~zz|FFbr6lx&$`av`_B0ae|Nvgp~1(<~$<)_Jbame5G^mQ{m!)YOgT=rMen`1n>9 zsj8KB%y5}cd-PXxJJ({lv}aZNP1yb#^R%WLdBkHH*3o=)3qKfe;xq_}Y`6l3o&9Kr zcdpCiyEYlD)26zM@YEB-eCKtEgouxx+IY_ZvbPgus}?KWcW>;yUDnV*^Y}lHv)@PWKizhZr&!WxDQ+EZC*Ee{a)G9C&7E$C%Ubzil8?K; zibIrXr@BMqTYo@G+GHf&D?@R%dZ<_B1bVDUp3t zT$xh^;cMRh3MHg~P5wHJ;Ogqv?rBvsX8+Sg;IH~ZjP_L)$FScnP}*NzDq}`a_hOLN zT%OIzG)a|}?QkUI8QUSfs`gD1@P~VOAT26k;(OuqD2}&&RHdJ~%oG(UrHp^L%QZqP zTm|L%6T6f+htI{Y;ENHSQ@U3)Kn7&?96DEn&?s0zlmefJ?I)NlX4Q4UdX(>YH!hsH zy1yqKQO6lS9ERy1oO^eQw`sVPWpYy=%wyoO9l13VD-K0gG%fd*Z9s5QTlU6^;iu2p zCudjN^@kn|<^Wnz$bq?37+clTIu7+2$pydkx4|$x#FH8c4M7**-f*i~^3f*$UnS z(Wc99We31TX^+zBph{^4#=?g1TEwb<4yF>3-yBoE)W#olR9&&6_RF zb96M}B6ks`^P!ZNK@)Oy9z;jc{`I14BjR11*wEaB++?P~qX&_1zHH!-YVT{}!Z$opq_zlSD{JiCS zmSke)7KHruj#}_}|>|%}3MipGs(<6{B-D^->=PE3m`-I6a95YP+LJMq1L- zeMC7@w3lo@a>Hd8Cs-g3V~UPFw7gBdNZO?o9(vm35BC@IrOLh3kA)5yxATtN=SL{6 zLuF9Z*NjOvs%BANMCaCjEb1a9 za^lM!X~uRm1;=3m&0HaXGjxGiG0$&-LacFRRw?o8tT?lxPGeytKkNKRQzH#Pz(o1j ze;;uM61v@kJD_lS^yn%*;T=7K$B#}0-BvzBdWMkPguLp_Mb>&PZMM>c1tnm$m3Ean zn|#>_>~lw;js@vM8`7b>asfuRkB2PoM$wG0^o?X<@7$r7*i(xoavlk+UT&6K(RI;F$@ zwX!sUu|Q241jY+9E2tAonq#CiV!)onuel}$o+7$*LzTDoqkfV7j$G_Ki*>OBX;zXX zdcUZzf@hbOhWDbNF;R-^*OC!jvWl{4U|s%1qpg?WBIn-jTs}{6%v4{dKA`YJ!N-F! zPq&Wc1(7%ELsttW1~`rgnGGrxxD^M%;E+`idq-u^iTVD{mT5-yduOTf1J&n(Jt zv{iLfy4~d4Gjb#Y2G94UyCKYdEAO_l)2P1!LJ?V~J6s4~2>{u8&U+0O-_8x*_dt{+ zmTflC4RViv3Vf7965ll#5s2Pf?aCaf;$=!YN*fxxb%FlHw_RiZv_Yzb>V?YCHx~yc z&#_`Uoum}Ot?x%{?KXxwd}=}u)y;PGLlH<_(~klob^dV?rJh4iUX5Lb6ht$^Sr)7F zi|Jo}AteFwtU@x?9bWgf7w;GZTz;kkiLg)OFixGZs?i{|UEd+?;hfo6UyM!? z%6nU{lPZ|$KC(VU21iR3lR;W!*)blG`>}UcLNXyWS6bWFC@?#`Y}_q?J7Mnf>b@$` zm5j#e*jQ>{a&#kSdg$AW+pnrY!;ceC2=B`bI+_Tzk_amM#=OLvK8D2u%FplhT}jW- zl#a7-VhMu0k^0eWKFe zXRUGGEP%+04%dNo8)|HaFWTEzysla9hsGYQ5)hxiF6iLVfZz@!c~COYmb{=EY`xe* z+U8UZt@M_8J)mK?n}(cZ@{o88UM=X8Y4YZ|e?ae9>*uv$D7BiwcZ`&?-R~yp9p4Pa z0+0wVODAy|`|zAC&eKa2hnd*SnJe6@rIlxfo}Z%&1Dh2|??nzRS!-IUzZQRE2ukyI zZs6+od8aPh`!>(Q>QJ%D(s*Q2TE-ot4m`GBS9&^JVjRxDF07Hw!9UPkf2N`7j1DHn z`I&E6X_AO6gKEsR6^=dxXVbHZU|sMh(uG^t56|~l@2fN{v29LF(D8osRSz(LFyBAO zXezr3-7rS4%q$_-665x{5lBEBdR2HfRHsJptUQk%E%PFmDb&4e{9(MvocF?Q{2^I zb6;T(-MzO;ng2%7e9fbuqb>}YwNbc?cCoSL#S8ulE-MX+1V?0)@aIXE~RUrm)(*^pjf`c8F7>bnU7)QakG+h+gHu2}=>wVKcpPQRT>faH5cY41OJiqWVN%Pv`!Zpe7do&BA5+1YB9t4qefngrT za>2D)RUu)O8V~P7CyUhCq+~pq{S$5kT$BlYt8Vsm(T;58K?n3M)5K1=-{5wvsl`?Y zSR>i}DIM8npx@d{&e_nl;&wwT1{bgS-RUW`GHhgzhQ^Dm zyA_TQbLUO^@WvT-ebl?r+C0SLy&I+JqCAtV)fHYse(cR$)^LpV3o!JnziIvg^`Al=)eY7z}T z`V^Adxo{aJ%3HUi?zelj%5n+gG!^$iar+E?WoQLp>?@@hpx?Afc_o4*Dg3dddkz5U zwrZoUlV?ixwj_I%jCl{Pd)aa_P7JiHrT_dMby@R~V$%^2W8Uz1{MMaZ=wvvRk0H;* zwRy~LHd5_DWrFl!Ah+}l_yRnsL0*1i>^g2U2q6p|KXt2+Vs9kI)O%OiOuMh# zv!pcaEGpPphPEx#kyukkyQmx1^VI;Rgh{b)__Xn{%tMq47`m+KY!AHZV@Qs8SLD4k zMpnABQ{;CV(F4ozjA+Lho1ZyLr{#Kc_BTnU-jU#o_C#8iA4LFgp>lrTf=9s2PhOKr zV;j9s`?@2$RQz$74|W$9F(WF*jBV5I>Eu2$whWIL?CVryHG;e=o06JjW9uSy8P(s$ zUFZnC3>#%6(I{d#_$Wr2`IS`DVs3`RO@p{_LJYvGra8ZI1Rs51t26t?|D_V)_@K zg6-DJQ175|(snKnzZ*2*lMUU6i+3R!+SbM)RaBs_ZgY-)$tMnFO z*paMWV;CzMid}gtnZxVvD+z?dAav~gZ4N;KVROOGp?hHCFKJRyG*Dh<2A3Vr2(;ET zq5YA4;8xoWHWKklBT!jsmA`eiFtfX=2godX#O(bkJ}mpAY-wie!IJhQca?MDZz?pk zHxmpazw7J^319rDatk79N5AVse&O$u7Zh`l`VFTnTy3BKW@H+`z^0g@{3$9Mt9r_t zoBq})k)B0)H>M;vA7HBFhs2Llx)OwpxvdhH`o45TnX%Or9BYm$4X^`WLf@c4`0eWOou_YHV&E}XF!WS^zj3=_;m3BTB^Nh)O`ScDr)3Gm z6=?O8%=ty(*IB`xrtC95PslwR)*n32Vcp)>%GGhDy^YIBj%h&lm!(F`5LT$U@K@d3 zHEvay%5dXv%;dwg>5NwIwn&MxKPD%q22NcdL_Ao~vfqnTw&I7nA1S^MjVU_1%#c9) zeoU9aXd@6{rp|7fZu?#>CXD~HN7AGWFI%_YLaY&Nt!BO%ZLMjy?*~5am9xJb8Zq$Z zp*}A%&riqSIGT3Z{#-Xt*rlo;@h_#2;L~DyO5ydeA2a=UtFKBma01%4?4T0T5!paK z+-6D*WodFlx}X8Kl_co+eXSbv6i%O;6<1l+jD(Na&R4>HP@v?k|uO9onf3b(1VBw*Rhc8`20V5C9!jZr8E*#q^OB{mb+=V=8fUtVmLIXuw9 zwcsdweM8nV3PN0=M66$rQK^8k&G&)7iK5Re3n3(K%`Uvi4J8`}{O^N`gwa6VizzoY$?G-2|hpN&M5?Y=Ox`nBq_i9 zwwX&;55$^Q`BTW56}8yt-hVnv18dd3ZFc3+r>HjcZEpY0^u37T3BxImGGwPe8>iOX z8|!`VE;``UL zBOJ0)CGQpMAur!C@JJp33&_+&JW=uKo48Q9J6?Cx9=-9fSBQIU-$&5eV$#JGHC&%x zw3t_~SMIMvRRbbc_jYb#CgxRK{q}X0@6`WclL7TawXWqJ=@I5wSt*cy!2n470~-ql z$SQ{kc64$T@AbbjB9^s8QtZTx!Z8@0AzXVICE&T~8fTwkS1JBj3W<>=k2u^b>4iv> z_Izf)p9;zET6NVk3iHyEd44AgRs`DnoN~by&2iiWu8q`OMq_05q;;y>O1cK)?=f-*t*=yB0PdnmQ+2>9{Ar{I4wIn$@7Nt?oSi{Vgu% zhpY6-=nrl*m!j$Jbr#I4*{g`2wQQ4YgL*g*%pPMVP#ZNz%baYLBH)j!I*T2eyY0gl z@uiG7brzMHCEzngSD|8@uj{1hhN@rG*66D-djF9J1Xt>Bh;|jKaw@e-Ai#Zqixd|3KxJY}YBNyXN#<^O@_hI)`Mx_s zJyhs{;<}$+D_aDs-D;#L8`BdS^5>1@d0Agn3SKe3or)m8l4b0g`sr#9?6CX!<(0vn zt+@=c3w88}t=rw&DM0p8jn$bg!NTT;IFJ4V4}}NQ9nB6DYduwMs97?yM*qW*utC-N z`90~nX2>@0tqAc>v7ADGk<6yap<#2nLb1i<5S>l#8%6~t4BzV}JW;=~(eseRg(A#x2(~~ExCdGs7U#jL*s)VmO}g$dwo~W= zIZu*o()h5=SzzhKVqSul`J5N?D%`KHO{i2otKbPBUAot>q)qYpcLx}7mV*Ab%ulj~ zS57>L0QgMSZHD0qt;3I#lWj?#(3dCdW9*Nj5-c`4*NV;1N@-cAR7Rfforn7D*D6ME zHl%9SH4PWVd8Z1h52!d!qYxfSHiPNa>!4?Od0|Jxq`3hUd0Gl45U}jX=gS(UQFl8B zlGyhXhElI~Yr+KhYIOHeJ-Mvsx36b51MF4v=A-kTn)yLgXTkDCiw3QEVFSeN5l&GN zE)wOmy_yoD`vKshhwKa)9{lti z=}!>lC$MrhKo0Ics$4%8gX10P-m`ZMg?QBw06<^Gm&Tyt8DmlV7emwzGCQ0^2j@j! z>9~Tmqrgxhj)GVheWrw}H@hmSM7%4I0n={O=6i!_JCfV=x>?sRmt}E3azi7wL|q~C z!iSaJ=S-V8iUv%1r(@+7sP;abZ==e>(fQTOSnqplGP%P@?BWJQ>)TdGzFJ|QELs8S zw0bji5BE2K&nRyGq%=c!Bz}9O@F+#*JN*T>`*=SY7}d^vQP~i+@NY-lOYx=$kdsey zN->0GoZ`Yh+T2|6rt&(eSwUMws$*CRhVXG#^T zOP%F|)%0S9LFhSz4k)(wyddkVG=(44iLW=-a_rJ+gaKFm0SqqvRhr`)=AfZ$`GJKn z_I9jC<|1VP%T^T{oszGZu)`>CYlUr&o{Fl^r^KcWfjRa5MH0!bZkQWk>)L3??3H0; zuM6Y@%MjjtS2nQY$yqo>T=ON(P_<})xMHK+5yggBJvY1`YCenrECQ?M&peraw8XNS z)Udu5Y1ZMvto#-(b__#xINb9|^?Gh!(%6{&TJ2`j&@B#)9VVOv|6Vmt@#}OGAaXIq zhU;>^Q=<}SI-BNoRp+IS`x>tc%5QRZdYL|pMl?RqUIPirGZampPM~e5P8LFQis)py zD+ZbOiBs?Ykhub<@`7eh9+H6lhZm{j33z#VL+zPH-sfzov{DLcvDI;R4{1&V}~>=>6>ANyQVulqTbQ8wU#+^awtp89IoG~ z!WM3(lWGlKXiHDdc;0-q^4Jy`dOeYCX@&VPh8HuCHV|dMw_0JHRWV5h1(B7m6=YWzR;ZDit)t z*EyVz{8plz_L{6hOKB!sou5nM{dz20n7MH-#->;=gAL22SHZNe+HY>DQ{UR~Stj$j z<=I>B(T2KP2p2GJ1@%A!x^ENJ#(vQ^E}7}tLI@u z+G?5ikmS7IW8Du~NA>sLXf>vadef?bxJJAYC+g$c;iAV24-F~X5M&d@#Co~t5MBT1I+M*ip(K= z5k^t7td?k2iZ!rTSg}&DK~Chq^|SZ6a8bUp;bX}>DXHA*q=vrn#wKy^ySI_cpN4~V z#+H>9Jmh)jH!wQ5Y>v>ko8q>7@S(Ro(Kt~_$EmA4$o+_k3S@yBwLs~YS_|S;8lVT1 z`(P{n*b4B@Wc2BUlQ1IjTfhtfAw8k{EsF1dWt<~6a<5wVJ1+J(?*SR)M#Z*2RQLKkqB~%Ew`8N8 z?H#5R$L<+uQ15JkM^DCIBJ)_V8%rfzCU#nd!Tf~mtL-k0V_#U+OmCfE3rlslKnQGR zU0KaetT=1Ea}ict+`Tq>NN}}LTeY{Ti%5bHM&aJ}BDbx3;|(e)lne-t+!MihX zqh0jd^`@FbbnP+5W)GZ~P`bJZc%BvKBh4u5HpgUbc? zKY`1VSk0!KzksFj2rI3he^}yYSMLjv30qRw`&5Lu?~tXz?)|8uEr(Eeqy4QCZE-qo z&gqp-L8gIg%l;sPJjHVUykw2I+r-q-4$|&f)((}6xxFy)sC5%qACu~db(wSM2G|UV z^Ry)lj^G~n_@6gMM!OSVVi+I6G1kmia*nqFUIh-5YKeJ%wqf_*cGKsrY>1vKzF6|e z(H3}_sc6k`N{DF~Vy|H-Oq%XhnC6E-)w{oRuR4Ve;~&0)N1Q@ns7k%jzCTs()SbN= zoU|eNhH3Ff(hs~XzOH)%;EVpCx|nn4)Yw~>=dA5Uw_8al*%S_HJgR_lMavQTm@}WJ z^O?qs9jnST6D`O#nW@cP_qoYnc~;Dn$TR`8#E-o9JHYrIG$l2CG*G90FiOeCU!xd% z16VWS2t0tQ(P(2c3S=Tte9jMq42$E;&sTEe+_gvTBspmbC3A)^30X_w7sL1HzPa#VqXRxA#nZum- z{NYC+$Nl~i=4q@3E~*-E^VKHCiL|(*4L@YW1mDt zaY$8%k7(QyKLsFRTfdOt(1BBdn70mMA}M{vz-2E+sM zghc;`AF>$u`CN#lT~qU43)ZimKFB4Vy-zH1wv?xW{@%?TO5 zj_eCwehyv)1l79R zr_Y?OFx3o;M(4BEX@H6J$H9+nq=`!)3AL*hkJ zgXC}()<+hEAN>!R9R&-e6XSj=SX<)uC z@CzTo{T(@EygGm7Mc-$;8&gu>J=D9iVMzt2Ba18FPXCQZvEf^ z{%A&x=!X2OgPJU`G<_iV@<;dEb|2Eb5zMQzoKV{DNatjXpIG|yvjXUUhei)?UHsDx z0{VnTXoJ%HrIxh{rJ6NRx*1!3K?|jhk5MR-LTVNjG`B;GEP(h=_xwESUrq#A;XfE$ z5FZ@#!|nZ!HZM}VSsAxg&1BmJn7yKmHv9>`@H|n35)9ANBBP){*MoTD9ZnPKBQmb=RVmBfbh!y zdwTwdhEg*ax6la)CZg~ANMPF0D}1k}GdIcqyi4bX8;cm%LzOfGwY%Oh`0k-Qquk-_ zlT;W(UYaiqRI}KWw_z&Hn;LAj-^CS5T+y~(DQ+>#3}>6D-Osuy-cJr*gC*Rj%DeGX zFX-QSN{81MheS~8m(Cd-oLq`u0jr!+h&Jz0RUA7l*LQ4sk*DR&r7y7UP&1Lbe(!}W z9?_b0mQ*Uc7Kso0p(LxR#IRV)H2L*hZ}YQk*F-=rI5*qr@=@mpmZ8EPx19c?ctNR` z;TkmhU;89Pi>b9Z7%odk$Y$yI9oMaSDBw5gxa~g)P&1WehO1+i?(#RUoJjsk-V4~>CEZ#26t*lO*TENxv#~jsPEP(E zLip={A6M>5{PuapL-Qut$!&cz1n4RwEZc;Jnc5`wHs%pQ(+%pZ`h(9CA%`BR8ja6~67*+SsME*v$?~QPoPiCM9_b^H zt-O)ry^9MAaRv7|q-9fMc-`jWl3WgzU7fJ|YaD(2fWS^ss2X_$l~5B!F6TkIV(h!QN#)-AQVJJfKkeP;=FH_t-e8!4H&bnsedpg;`WM`~nnXx?6=X*rwbUK~S@AuF1yuSb4%zN&+ul>5O?M->Q zKjXFy_?=i~Z6u}Pk{lL(*+z+ZQ~PYhR67sWRr`QDMSba(^90O5;93LK0CWA#d;rI| zpmbYc)k|>2irK!Uo|Vt_Si(0aiX;A!OBFr8xhscm?PrgK$mz*NScjuIzAVG(Ln(XoObIH>6@4wc3K5J}yhF;Gd zsy1e8_cr(`D8ndlz}4pp3oa&6e>Tfw`mCr-wVGIhs9v0UVvwhHj{5uz3%;^Bz111| z%Q2NQXiy#A%p}D)U1Exmm4OLp8ov~p2xPKd^Bd^vam8(^#^w!ieot^%>f z&0y%~Jga$Apt}^`OFt-LxV$cxV?J8IdDW}tMOI8xkRm4*Nx`0g`gU`GQ@Z@Zgx2I$ z-hAC!d?FRTvC3!h>>K>*F6bRJYQTO@zUO9W#bahfsmOcfOT2E zjFn^PQT*!wRbsW>~$NbK1%zN z6wk$Dt!}D~HOAvPq)J7qn_v*hEL2#Vd8JoN`Km*p(`9aD4`I_1jzW2Xp&QkX0Uh&H zs``_)4!H)=$QB&X>W(15!%KtBb!g|ZpFeXn52zxSzF&H8ow}vzZ(_mUiF}d|9#Ws4 zdDJfzSa9^uTC?jUL$!wG<^%iDgZ)~wSDuD?$w53x%#qkOCc|1FLF1Hq1;>h2#vEOK zEt{%pi9p_`Ly^-)^DkW;ko9<~#X!V8r@YQkiGNfDCuo}f5@S$`Ym<(9R-UU~k;<5L ziY(ZsiW=jY>G>d7YQV}OGp&J4VX@Q2d(4zXs_L|{1X!4<3^ARB&FfUU7i$>pXqd?W za`|egk}0t*@(Uye*;K#hvX43AZ&&>LxH<_3l22b8A>$NQ(2XwM4#0-Nz8#e4@GkAP zlz0Pi(DO5$8i|AnD_}#BCL`tLewWqDW9U9CwpgA)WhL4qDjLnOd;bFbj;9#j?f6>R zId~*>UO@a!TDPDtAg7NUZg*Fv->K(x>nC>hzGrw0Fh%wC_Sav==7FF|QZ|D^bw8hXSIGYH;&cKzwagRt zbfG7-dm=AZ?x#1=TnFkRRn?!$vc+qv7ezs!=JN`BlSAfd*FYN~K{`b@6$IjC`4$_= zYxnT`h9xw{lsS zY2$eKBs)BEH=oXv8(P8035S)Tb@x&6xWh{VVW~OILJKLM_p|MZL(ZI`z25jh;J$OQapuwl9U#+OKIP>nE0PxDEp2kPqzav{)# z^|OQ1YtpHz)40m};Qobic+R39qZU%f9}_1t?9hWaj$C1t%gv<{xYi^XZ<}8##p-ji zo8nj`{$?dk?xmq_Z=P_$nzlcJz&Y1Gexoe4=+ND2tE0eJaL_JY*mKu*%eYHA&%SP* zb#^y|;k979tLMIAEPsCOVBsHrkT}=HoBZ}glv|l=m1-L9_wJ`ym+N&01P3Xri42Su zECd9r`wdQHQK(TWYx@&XL;y9+Z2N8X?L53j?P&Y1w(cPV{?U#rQhe({QjGj?o9KTO zxT4Vigo)3a`>iqaijp_Yeq0ln9Eq8K)cj#Rvuzuu-U~PF=}j%vn--qU7t@b~Y(y{g zM07?q&lqoU_Gye^BE*yL91ILo7CC9#Gk?I_J8?BjxBIy4Zyv>EStTht-EX{n8h2~q zOn))u2y;uoxqkgxfq!8}CeB~FJ)ZtO>+m7&o{BM5uYJX~&e)TENmDThA`b$Ts5)Z<}b^2uP{gzDr2>2f$UpeJv z@*_z9tb&d=GQWr^vXZ*?H+_S@qTCV4r_TywA3^gw&wtk_-yVLLj4`!5q{{z20B6M~ zDE|$>$Dm_YUR2)#(QjV;aHe0;`Y(WrpTg?=*HC}|g+9z3P$KBw#s3-rjH!Nh<_D1e z4I?E=VZLvEJ?Xy(faG~C*LP@+IO4al$@9$;GF-s@uL1Zb`u_&tAKC1GMgMk-c+cbX+4t_8Ss1Z=JoCh zMmx!s$!%WvQO2%VdI9#g1A&LhY>y+s3U|5QKc3B9*+jnt&&SYeqZ$t@vv?y_Fa7wX zA4Tt2;hA=03}DgRi1h49_cSpVt8o`yyfSf@oQ4^xc7c*Cja@&iFIiPSl%;L6yM7jl zsI$MZ6_YN+M699~s*-jsE4xhm<$a8M#&fvQvCP}r==3m63$PMc(<^NT$mAE*PL@t# zDT&8!8Q*$01MW~MQtrIZ<&ne+#49`xmvJ7ZFIo*-A=lSHTg35H=Np5Paq0O-ID3sl zB@gL0y9vXZG({UZe^0a7>frYYOHLQj@cNv*cY1NDPP`J;-Zp_0IL6%xlsNk-WiFUr zsh4mHCE$IYC4A#EuT=+E?$A1fJuXjNazRK}?A}H(^k9}cWIjFu_c7p-CzK{9TA<}- z4WK4wH&0`iX5g!6dSq&fuf9^AH(GQ&2|Dj4lJ+*W%!mA3lxBrzC9h4!NO6ZOEXB%^ zju$v=8FK1{lu7Du5{3~gC+30J+?gMM?n=ipD%V8@J~;et-bjHksy4CuCb_j0o~)6hGmi%Xva<7Tep)?4>Ft(a z;A!lCr}d*jBs^WH8JVGCrH#-Ksa%z$WshiTuhP`yXUd{j=^f^S_eIxue5k4-C2wlH znc+~-q*$dA#!jE9c-Nz$qir;^*mL(Gy?b;{Y!Yc>^NsXQS8SfgJ^d9=9+f`dYIC;f zGUPZ=Sm=@~q^o$~?@Eapr-(FnMHwW=c55u$6hVGcSeRt#l_p4lRhCQlyX@&VjqC}{ zwH1{XFXhy*FjUr#fDQH?8@^IIF2D4$L2dIrd$#QiK_k$z=%;>ng7V+%s@MlK83^6y z3zAb0uSv`=MfYoNi#qy@dIGX23_zMOK_%@Tm@4A8#$%kyBCi8mUyFiW4dZ%BmRBz` z=T}PU-ML#jCM@ND*S+1?-0r%RFPkF?0SN#objgGDnV@*t_ zIC(bj1#k&VFQ4yrRuDqJ*Wsa+w1sd~%`zJlV6_weP7^c$&1&1S=tXT8Z|y6E+vTaf zl+sYK|8T~p5@$6!wr7He#}8dH@yl9?Dr9# z2K~d^qWE*$PKWm8h{}zD=T&D!ZVG)2(!CRIriL0DN~z$InLc#)jDkPlV;YbH$t|C2 zMO5W{Yv`Zm2XkWKe@hc=;%rgAfp z*W~Htmt5gx1wnV-Wv^}ayA^k9G%*bWjL%$AyEz+XH5|)irRb>!V3eC5f?vT>(k=v0 zjuh4IxVw)upjJM2l#bGKdQ*60mD`MvZ9tH60z=w5s3ldMjnB(E2VL(I_lJeef@;ca z07=lrNQ;g5DIH-36)uko;Z=9I0ik+H(9YB)5rIv4sEoTj$`?(u8p8oY4JG9Lt}f~6z7gM4SA?2BN!NzI379m)95bl(oH z4w`J~giSY<^%4jx>7f9_?Z=-9h8+h* z*$>Rs#sAYExw+wo7}$q>)Om?tT9qW`?(|8J=v|rlx+4@~^A?3xGR`jYA^xJ`*i2ix znAYoy?xaHJ0L>eTn(fA32hYq3EesmsJmn{1y&)HJaYTTDU1i*Mwsk~PJ-mJwPM=*gdXPqBzhx|%N3>DX89W0=RuwE?j;j@9p|!f> zZ5LaIM*-kc-$;l}E_ad7OZdQeR&>=dYqYz(Cl0uLXaGwX040H%GMNsn26IZe=QGbA zI1e4m)z9ei{eMvHE2~Z+(DJm+;}F$E(S>Kz$OzQ>Vy*vNN8SE@A;)I3x&;ypQ*ty; z7J6-k%{(3VI%)$`xYDUy!?kQw*wODp@ z-&YLSCxeU^(k1ADmVTx%U6vj<|N2ohUhWARkfH16kxDF!XTIeL&%Ekit-Z_OyXY<2 zx%kec6xf=hefZM&Jk9(AyaOh6C62ue-y1+5HYq@tl30{zr-!P?7k)OtvlvnlilFWm z2f>93X_#y99kIdOFJ}8yhUv-5Bk!Gq5su2u=HB>QM($P-%L$|Ugh=AV>kVk;hLM_e zi76npqzuuDfDB-r8lvY>J{&G&G8lu?95fMe8rA)Ea=^i&4(EX-5NfbH@x{zxGt0~; zTcv@WCU*lUno@ZwN{-U9w|={(7tFX>(1E9Lc^e1^u4G=D+0|BJ?+W*-u8s5Z;Rb#& z0=jNt>%`M;E=WOdweDqk6h1314PxTx2K3CNr|l-*+wT5U-4iK9UF^zooMiu{*Q67U zDP<~3AGvRGB$-~lk`w!cGeziy(xQ+OHNb>gyog4&WCXl|K4wrsL~xL6vc}aV4j%;i zQ-ZD9hjus)aN+4aW*{PJqzdDyXlsT)NnRqqv_w#`xaPMsfobiC=u|%< z*E*Wh#mfL>o=WRJ!8$bcwk^A~o5BO48~lU+3;8_>T} z$-9|bNq4&nGxq~-A2iGM5>4}7gt>d&$fC$`x6k{7aW} zwK18)Lmq6#{mN7n!c3}(uK#+agU|j(s3Vj{Xr~tNVNE`mdKsWymoRh>-6A6`8Ff1A z3cq6L?}jaJ<4`T&CO-P^0-e1=@~(Dm%6hp?=%L}ziv3o-H%d-OyN?{ z_v;b4HC6$P2KMnN#u9K}1pYJyO~Jaon5#7FRx`^)+@{sFh#GdNX6n6hx?2NtvdGN@ z;rp}0oP-*nyJR!xS8dzQ>zLJ{uoBe>OgSvh5pVDL;BHX7AmXy_HbFmE z2P_GFDvO?5P?Yey2Ktr9ATCE{T1&~#W;M5Y+@*u5aJ@$r)|)(Bq^#|VEDV}@VyJk3 zTcUJ+Aw@exz6&n|yb;0Nm3f1MntrP5{W&oUl%u{_W{6F_M^ph9By0^@AEn##I%K7Q zq|&~bW{%`OmFS56lg$l+{rz5>O=zy=a?4oSwJE~gg9z$ahiwbkGvrFcwxYKURdW37 z`8yTWu-^UlPM1teotiTty=O;KyQ`MzHWT&|4Jz3BJJKaHcP2!qwP4FU8fsc*w73d= zWtkFD_62h8k*RaBxzI%uA@=EO`%5!2jj6H8a#BS7+ST!wK*bL%e2Cu5pK!{5aX+7E zC%VZGBSl? z2HHFA*41Y|O#e=Hl8iqt4rY!@VQp;H+daa-hLVIgXj7VkA61#(J2x=;t_P|HA#>F#@Tx0caK)gYjR!s%^ zOc2ee5@sARYe}#6Lhn6@B`Jd@he9PoKb3OF$VSo53OZ-%q5mkj2We#eAiZ~TmXBd2 zPl%S*iX7_d7E#SyNVNF=wzqkY5IB8McpjKwA^-&6}VE_9}}$c zH89x0vue#8%3b*s^IDx`$!dPeVKatjWO=q$^oGltD1_(m?$~-4)|dm#G6$MzLL$Mn z?tH!w^;FGMftqZJH7o@nQp0ST*fBXaQq0Sy@0SIJI+S1%=2?A09FP>@#g>?xBapiU z?{E*xv($D zd^D$_m;LL#EbB^DK1^K)sbNZ0dkAtT*-T^p)6Pw$;Rt>eho+iLKUfUeAi?HhC88JR z(%$unK0e2prHAiuF#UdDk1+B<4Dw3=!2J2PN>;AagL{pi@grN@05*G|_tuxgZ@QRy zl|T+t=?n^rm7@tY%=Ci_VEc;1RiTqP>&u=4mL}QWtA!Lcu;5CAHCMTnThS)&PaN0Y zU!WS@z7;`1?L`?if>cBqNNdU!alzgjBz#GDy~0m!T|nvTH)6yrk!%x_yFQJVNb)r?ic)D`HJ*2?pecoCDp&&(0Eo0~iAgvUMCR3CGrKfED8 zDTDO_hfwl`%q?ZL7izVyu6SeH6ZCnrnZL{e_XWT{T*T8+V^2}fD(0U&)sN4jN3Lvn z0q^4d#6+n~9(->cBmB3wZ(L=Hec`gqg>bOHLoB{N)=AbmYyn;?Yax;cKm{}uMWqnyR!uBibug+5?A?1o z7iE}gdJiUkv96ZdWUgW*%`_LSy-Ug#k1pFimt)jXh?;vLUVIz3-X!8>C(+l6`f%IL zuE95-b@qLctIzyr4jxC>6Mlxh8oHgN9DJL>u2h#kdBSYD|EfhO&rYK=ZIa1sQ7@z> zDrGysU6rMKfxHbGvNC!=30^dA?@|XTZklND;CXsYc)1qD)QzY+w}`!vlKXhRFU-ZN zzfA0w17A6ZOL?jSAJ-{ER@vhqVw00PPD|q$`tGLH23TRo zI9hN!O6V{<5MBXDYmSPiNi!X0h_sl8a_~7}eBEOe{HqlWAJ&^@s0`(CEfA&(=Xz+U zfDU-nt+=2ayYsH}6AFDkr_^^MZpl5P6qw@5IoAS_fj-w|FyBH!_SZxf1X&h5d>&{o zu@Y**w2+COnfvgdA%b!^k~wO~;<%Cr;LTUe58R5mW z3X#o_VhF$4@A*235$Eo4*SlMcNI6Z{>k~i=6JX(6`rx)SNOlB~i-CGP*xgDrCo#l! zx_;VkX160*o_fGgLxh!u#W+gok75cE{xi7v#5BTZq#Hvea09j}GW&o&)eMTuBh6^~ zGGaCgN5rk}gCrH#%p2(-2}1DrwubX1`iF1k+aIF>1P@G?ecF+#@(Dhr@t7bqtU2X zs;;M(ZI?MF0#HXEI0a|zCnRJJ<3np6_3dZB)QgArDXiVv4i=~&j&Hv+HV&%S>`sCL|4{O;r(v?MdCS3Jl|A8FZx6s+PCwY z8hA}MoZ+$XgN^|T6@xo|4_q%2O#WR$od39e@IL_ad*C(&SKOnBPZ+yJmWRqmO?}71 zulLmne4bn^AMW}mU!jP|Yy5EQOx!S+WE*_{;kfl!YCu4MRLrxdPd@@3m3mhR@GRO} z0;zNKsZQprjx5JdemofSmJE_$KlLZCk4?^hR!*dO-q>eJ(#a@a9(y3aIy9yNW{1T=F#+X6&H%;rGAjUMAEPUe$Wa+6>fBEQd zIrGO4`fgzotx&1(pJ4h|xciQb#C`%yBkF?9=~KV;_+L>#lCE8=>~P^PD6m~3xCNZD zVsqP;1XVi4u&}UDS=GLI^Jbx2M4^F$CYzIi!@9`X?CkfG{ABB6p!ngKHcNiE#_P2| zF{m2p&J-ZNtCBuDBYgZarN-@sRJQT?e1Xoz#h@4@dK}($8QSw>9`Z*7o*iSXPNu6`YL*EG8k=f`qh9{MTKUdx+h(Grs1T2@Zd7wo>YP zU=|laLOmRzO5g6PXS2erikY!h;URCM&O)k_64epc_;OhD>)Qt94Y7GWc2)L#h>APe ztpi2+TZbV5VLeU<69%%T6YmKIYI6MyMzZ;P74>1+`2*;P8#X-Jt9NgPkbe!`O{Sv~ zT6o(f7yFyBS~i2knKX4B;nQR%15RFs_Y)nrXLTUPes26`k(E?dTIkZ5xqb>jkFd?i zBvnT%U5Z66Z3dSL=<%89;Sy_z#%xTFg|k`Ls`kQ2R~oXxNiU?z#vtlL%q8-H3gey@ zW*y=DQsx@n5c$~D#{2P^awX##OyD{7Mdy0*(cKjuojBDR9*b{8h(rOZO>!a)b>0Fk>rU!=S1YWBD1f|LdA&knuXx|z#AS=+FrTABl}q|s z$ZSyxG7BjB5$z?8I=ZHVA|KbPeN#9seL)oo^Q;L>2qlFiq(z0imH^1UH+FG9H zl;OW`Sol#}Aig)dP!YdCz(5HjP0>zs|IT2T;{=CEn`cIyj{E^4uiIFzZSm)cMCW*9 zJK;PU^XIneMfyv}#r2)W6d?yY4bjC<60AWJGgFw1ee?qfl-Yt?1z&BgXmQ^Bv!HlU zX%icGrleh*qb$t%vD}-#nOpT&B8&55>_B}+sNYE!y1DeZLo!_)1TNf8*h6Cp=%w4+Nsa!WB4G;J`eKHoi3o4E6Yw4m}_ngO}| z$HsY}eIejv@w85%UBVXmg9rY03r^0SL3I0M$j-AK1R$sp@tn`>%;GW|9ytt2GbU{J zYS?dcez;m=TeLzR-EQiuP^HaqM?ybN2RW+8HZ~a^%Uof+fD`wH_F3Hw4V&w}6=YjI zJ|KJdMiXnkZiO#VxmGfJyNc}D0Eb0<=(8^X6|{9UH&QlbW_H0wslB&8meyEpO?Ht- zYa3dnqQ8%fZE}w?@R$ZcW_grkmy;%^JaV}tW*&>N4OS?RFFR$7m_foxiH0l>9+(UCAgQUj}-_AFmj3_Jq3 zo%6hfA3v7q0N7y=8J4k zA2NuuxyQ>BAJJZX;xd`7VB2O(??&-v9I?05R_|fO!%{sl(VJj9rPgArF^%t6ErRNtGTHbXybbZV$PnNM}lL^EUB8=WbSN&0{(^kwD3`)j*ZsO7B}I znE7Pi)e^yJ9iG|k=q+F5ZI6jTO|_(c)_3Ke1x=%wXr`x8kNk$;DZpShIsN8jEs3#u zaa>PA*%zqDO-EZjti0fDNF24VRYi&vF`T&j(>0GEbb3Vt`?lph&2ugYzg7j?rm1aH zly0421m$A&s2;S?!`Q@hhRnr0ahcgsbDl1T7xqyvg*`wS;UHI3Cl*a=)ux{|rU*DC z@xh>aLjzh8FcJ*f6)IYt)P~crYF&G#fG_HyXn2@6>IQlq?}?Ps75B-x>QZno!GlCA zIs2UEVxOQGH~p}2u65ayC$_0}L+>gL3fnvV$WrGy41vSBuziD!nB<%+K}MGYx1jQE z5es)&v(<(j4U$i6d?JRrVoFmZ0lXF?-cX&YM^UL_Yc+!7B?tX3fEr|OH58@4+>;ze znv)rvD0a^NdI{`-NFldb6HVOyCT#`cW$l=5O+2Q@=FdL)v2>qU73q1kyc6OvKJMwY zy+t5jj_!=`CeB`~-s*I5LW>Y{&vzLP??jJJ5{k+UU?!V%e>`XCsI5`3lC+icOjZfB zs1C4uNGSPEHgKSnCLR~XN$ zM1$3yBnj~+ZW)E~Sn4Hqk|$Uri@)xVW{}%xPi-N9c{6}kE^6ArkmW_OH5~f)?H`iS ztaa`lTY9#uUM3!;<}+-`;q%}s?Oy9Lr9U)w@pc@7n5MXE_I?MMSo z#ojc%oVFfp=(I4OZq^oF$D#um$6Ss_V7QI({TTOxJwKM`DetW1L*bh{S2AF?6%sh_ zZ;v}AGwQ#cWUG|ywRxuJT4zU4w>;RfPzf(#q~g#vw#al0i$6pY0L_L3mv0e%-KIZm zGk2Lh8-D$FX{G2jp($3Ph;4i<%3bYPomF`GV9@XajYTHtI=+PVFvOvwE0s~b;(I#Kc~5%Ia7Ybe3h8F1Kw z331nu2px=r-e8e#;B9Gj7f%|oV_NCnBH7`?=FXkMT+EnQ2M?f)J~xVDxEi8HTbZCW zTQHB^q1-d7=R#7q;8OE&Eu9W=1uN_7?2HqzcPwe;?txy;sH1pVEMi$#ao;V)BwMAx zcWeF@IcDfMTtHWyX-r5iG66x*)Y4PCfwwU9*~Qc#-pQ#D;W_O9P3RgC%y9om+)K9o zx;KNlsd-w>uDpSZx3}2`QF~S?B2n~p^DYB>muhOrOV@}POS18Scdki-&*rV7yq>OM z-drc7_bj+$VSw|Q%h~aW3XfEypl(pF6nZ6M1CLm3dp?Y(4dNs9;ho27&Y5VZykOKQ zYebW3grQ7b?Ce2yS}VJneANCqx2&$mWP5g*9=yiS(FcSX8uO0*8(wk59grsh2hZ+5 z0-?956S#ELZG(!{4BUurmPpQO+%_x0n@?n7#8+}aoQK)63;TfnbwLs$~_X%jxj7KLjo|aI4pyYla(rHlt z?48XyY%<|GJPmc}Y|Fc&JX_(6J3M8y^90GdQi@W7}K22#poI-^o#S zf4={vN{j`ZkV4+7kX!;2ETJDYoYSTl{mpDO9)U)>o7A8IjT}wuc(Ims{+t`?3xuLQh9O#o&cp(5Vm1-Qm_bJ>vmj zu#g-WftiGXq@+ip;Uq-_-pg2jOP3#MamtItYk_X$9CPc*cnBc{zx!ZH+^$&PV3*5? z^MF<=C;lM4wE3wBAIC8zzl=^Z zkv=%R>x5Y~yHQRYL4lvid%SkO$`L@6ZhG~8HZ6hkLL8s)zENzAKHMLZXGX&ah=^5SC-`3pHIBk8ih#ob485d5`8u*f6;!` zp?zAA;d*DURC$Tb*u0H(Uzh5hnOi+MiqvzYvF|lpmXJQ-5v$Q#V?D2DuX!2IUfZ#U zbk?_*!mV~$h7sg|cS!BxWQdwo5ADS*I^vv)6};uGSrFLs)-!$o0V4bo21Z5z0Ypen z>n?92l@_!EpAcZ93kymRwv5q@^bln39(lQl=PYLGZl!bb8ulk7AOGof>3Ww|$d{rk zq^aKDtzB0*R(Cg1W7DS=Z4GGHjPa>&ZmPg*s^MUmwix2tv^MejN>}6vQMxDE*-J2& zblPf1g5GnzxElU8Eoj6gvqg9fF+N^fVdgJaRzl1 zVbLt83{(x)ENW9l@&gD0s73#3xjxJ-|ENr9N`vLIvB+jw#BB$cd3%ORINm33eEih()Fh#KDq5xY0X z&|7tx7P?6|&^y&=M!UUGNAigij|s{6$z>Xh&pDg*FL_LumF^ByX1c0{B|OXY*v(S) z!4J3AP5I1MLlfS7?)NbDTs#lcgjGiudwlEV_NnDyr&cyRRo^L1Y~%Yzt^dBiy;!lc zSY9yuLYOfwo(zDaT#2t8>Xepq80+@=X3*t9-T62n<_CbeNV0^?Yqzgzn4G81s(GKV zzdLR|Cf&w^E{`}UD5P`OrRbov*rLb_t_T-V#+G*Gw8<)MsxZL3hd|>cy=zmP<7bi- zUC$Ahr>4)GtLz8f>l0zR8De~$yWKSSW?HB`g14`(-*l4UrF7LmC@zm`=5mn=SKiSQ z@M5tjYt~%ox}UFV4+-~_+h5B zs@ieC{BdOKCo7#W@uwEiw;YaRyZpR39ZUVHsy6!(Nl7eXU+KmfF{3AD6@5eW^ntkZU?VLwA*AfJAc5yq=cl@yiGlgJ&gr2-p>Z6TG@$q(WBlDoe8iZ!cgg0S&V zL}PZazyd4L$r{q|oA3-L`q@nWn}u{tL5`Sd*s~~2|G*8{*jCdM(DG)&09SX_qCV{I zCD3kFf$!J{r13UM=bOy=5Iuy@47-(F~WJ4j6Cn40U&Zn>=!U z^Z>+TEB@|ayx$PHr%G(PTD~7$;^4U`gdEH5V#;YNUTAbh@YPiY8WF=X1_p3CK*NZv zNMJ>WEFn?+P553!HBz4#bxZSZ-RX@IWGKUjupVJux-yPuxv-S%G{_*rWbqDbXx*M= z+sNdY`iGD+#!YA;`S~#=ZA2ldRSTk{zSFD9f6f3O?nbY59>I zNjX2El^(8!g#DQ?uqOUlTWkFf+627lHXJ6|BI_Ympm|52PVuhzYKpB%FkQ5xTtaO` zl@S%+njNSFay@ibDZ&DcNz+{b1&S+Edpb%lO3l7_<3iXJYGgVcNDbr&nCHg|_&$1T>W zg+6Ycj`o=9bX08eS6Q=W^E`MA-GIEUk(So(T!*DtCWevm%)MpTscPAr6nV=|neK=l z--I?yHz?ppCDz4vOVj)#Jm{kohA|l7tf+Q+1Y#*1bcvn`6$#V+G814)`|g?uu*+bbfxM;zXrTO z+Oc^_PpQzxJ((vd_q9RUo;_ng^_gvrho9IjTYSoS-hdQO={+Bx9Q(itM@l}k@y)Xt*Dv#k?2%(M2 z?zhn*E{rrq(5ISNzZa~&)fs%|#_;A#zS~#6W!WzwPNUg@radGZw>|Y+QNT6#EkO=l zouZZm0rM8KgCeF2DcN#oqRzgEIM{pagI#&y*&RckCkygcs01^eSexmkt|dJB&B#)w zCItw9!if-my50lQ`aPMyNb6^0?~?Z*x;V^-?Q$*bT~>Q!f#~)^D6XF5DR1?Oz0aQA zl5z9{UvU@r376X1`Xx5V5HhV)$xLZM8kySw*}G%DStP=@mHdHYtdmq=!A^DO^o2kq z1bXj*TDhbxM5C9kB7$C148L>jH0eH9b$_~r3l!(T`EH} zbM#irv<`5iO<|N3`kUeU<}~rIYXX*1$JgNJ;!|h!oEvW&`Eo~u!=+2d(1{2tIK!Om zxIdTU$c+!g2)U@C2ISnHNwIB!Ysa4Bw^Fl%E&5!i4Br}t-G5L|h+oEkGLoPh>&F;;K6 zJGGk_Z`~Hz{1jFpT3N^j6E38spyv-ccfBD+rSLxq{8oG`vEoQhPx+06GG#MFz?!VW z`FocgMIohc-3hlU#K*GP7|fmSWvq~g6wHIMl+m8unsyWpUq0a3bGbECxkW4G zroZ^>JI=qiK<;_FR_twlZH1AiLV&q0@0+Ok7V{wGgcWN_a?^os55AQUKuY%of3tw# z6lOH+3y$vRox>%{`sKDTiH)UMo)i#laovo=BBdctGh&t%5TnF8$DmhkyZgbl+F{YD za3D#|R9ncVW?SCfZNu{54m)GlK2OS2#2>+KlK@l^&vB)cUMUe$wk8UFKln zQF<*D{=Q2wzj#zL``O`X7y8sB(h*GnnBAx$D4%mZw$ZpM#W?FUS7(`EdtnJkcbOt; z%fb+0-CIU+vAj<-C62E)xkLmvas#>8;q)mA8C;q=cwHK_62V9*uTSkHP+T*}Y*FZ6 zR;G31lg8m}QtAu{QEadhO;x0isV#UmqP=l_9B>EhDwss^3$33XDQ;g`g3Oe@@yA1^ zK(CgT7F`7nYN%5FE;FB)bi2~a?Os_wA@H{;#Q??_d1dEN`3mMuOVe&aw3ba zgn`$9`CFBNJ}O;qs3JJIWZEz%(PucRuS8k5T(ES-xs>N&=hHZJj)|B?F$&H~I9ITi zDfpzn8r0xTwB%!^=;BuM@%Pfrr*Wv1YJth3cz3 zsCe0nV<5#H&RtwyL#kyqR9{axd&PDXKXz0kN4pt5y3e!tb?*F+miF&5rs-0(%1|Em zW1svAW|H+6o-gsb{mEVUBBsgK`E0fU^5?uX7;n1|UJ()9erX(2+)w`($W8=PPXyMx zzD+(b4a(|>Jwlw927739R7#(Qb?xQ_(+60F()vk+mtGNE9xiSIiI`a|_tg#tM_c@S?yON$J0EP~eq+IVkn|VAbn#<=;SOfV`3Xk<^6<}g?n?Sb)b6&numAGw-EqufGA5$Lw|5OX&H@sS2y^?i( z`V0CW84T{6Q#DyuIslzNVu4-*-&k`I(``*Y#p&we0}K&vLX7*oY??0I!@W9=zqndzC4A05D!pop{b3dxIF=s$}T zH{?08QhU**h~`*$6__SWD^ktA*I$U&lIB%U1laL^6?WIkUAK?WRGVvggLw(Bq^9e0p3?Coq zcUCm_PfLh~Tocv*&8ysB_Oz|S=p@^!?2A*sl><0J_X#>p+{BDMvc0%A|2HqV`HKqq zv%>P4x{u+IDWjCjOh+jCXC(hf2kCG1Gs&-%V1I${H+Q1p_~v+Vur~7l$?^Kf(;s1k zKj7OA_uVT_)am^h(xYcjVDI>miDwsVX*jTrVvk^`UAy(rz~JiaWP^P~WL8y@gmf^C zKzv%m_d%9_yPa1uJIRF$AJSW71d@_2Qq$(7--I{2^-;V${Ri5_1HZkDvXO)Hr~uC^ zna#FEJ5^F~wwvzE{y#Gln`|v`Ee1)-znE5(Esv39sFHkOG(*^Tvl7hnjWLVK9}E8h zPFE7nSy5Bvw$D%h38fR4FXb7WH`xzs1}4~lN}6LLVOG)l7PKzfR5zw$WnS0vh#~QIW-V^F$ziM#K>Wj|S$0*u=qu0bEFfNALg9h9q z7E46pf2Bb5Vha9oPhVUTOAOyy?#nPNxaOT}`>(E;T~y!nG+|ad&5@q=5o_<3cRco@LI_T{%&L`cjUagmIuSR zH0UClheccw9Y=Jn9Vd*G>?yG#zo<8fY|*ARriwpGa^?o;oG5>X^}rWGu-Ryz5ki?M zC^o5)%#B`>YvREE6V5w^tD%$X0h~udKf6_3x@+3^@H1~Y zIC9)ew@KrVi=xR2*IMM0msV5z(vv#ow|M|xkM_GX+lBjpD54@5CxT~)QHkXyOK(%p zgayJ|y^p~Bdi#S|1_^XPEGoOjoJ)2nE{WVEr+DfWFT&p3?Y&@~Herkn?2{H!{`GAK z2Qz5=F#PESMfIlGxI`{MMf`mHI!|`VA-~P}jki_% zuIhB6YjZ_j9x!Xy;e8OI!DL^)R3ivfFs%E<&@f`OI;RGnAC5^|KX!Z0rwu#U)B--+ z*Lo}H+x*0>UW8|65S2!-9XS+{xG~^0b-`}v_sNU(CdfIpZa|l=- zy}BvUQZD(1X-hLEfnC`V0b9+*Tue z(dAh{pZAwno<_Q;Rm1rF4=;2a zsjAaBndEb$oZ5H+a$oNN0yN$y;<7%w$}3ngEC}`B^h_}ZGp{*QgLRwZ)i+4=6qm;V z*-0vCmDvqd5Ju)3+WANnb)hQm?n^-}pjLOVslXS~@V;t&+7WYcYGd}@-CcVDQm97V zeL+*WL)ZY1HZockYR~h|R)9GDky5@M`v&!gvU@411J?hCv+oXQDsA>&1w}wWMMOF( z0)l`@@7O?kCv;Gxmw+^>F`yzKp!D8*@0|dmBE1s`kbv~iO9&8>eDQv(xbN=Xckljp zAjxyiGwsaGGxM9{$5~wBa^x z`sj&iJ_aIg4__Ne*RrZEUGyMLpT0sHcl2l>2U2~xQ!!s@Vc-kB6MR6(rpWt2$)#N@ zi*U;N3>qF65IcLmonqtJo*wPuj)t@1x1j}i@-@Hrg7eQQ&a+Tm$-DoDIe0%}r|+>O zWaXw<3nKHJhwS~L>y1gdaawn=jTaueLX@|$_~LJF;7xdz0F8)y%F~E7gm8m4L_oe| zok2(AoA$%W^J1#fN?}>DFa0y2$%^l6ax-YuhzmWEE;9P4H{Hu#jV(BSsr4cG?5+KG z;NU$R*TUm^EqT8K**>Gn_M&dwInVg(nmyxhnb_x!UF4KicN*K7Cw85k5c1na zc3*|JHYbf2(YIH3gR7jwhb37z)x&v7k<-)1DW7QXJoU4BK78Q%xhXE!b5x25 zRHt29#H$YWxM@CT?zRygF*1x$kK$$ekfW9gFBom4vObKp;36k8%TvGq+?ztR(w+Ry zh^5u02ZXFRYUmCXJptg^H(3;@p=D(zoy+A{^0zX5* zySy*q$EgmbmN*hBG7Bh{@JL);*f_o+UjV`cw|vu3Eb>|qTHi$_OQ{lR`66sFcbilD z?)&Z!Dq`md%~$#+ z-`P&uK4wt$t$CJW*+T&Z5fBa*01dWIRFiM*6_#p`cJashrh58Pax0zrH=@iM*A!x` zSDFO`mkd{#WMzhk!l(1J)~H%Ys`*vbRQpDTI#|ZmXs*@d`?}(L7)E7AP4r>7Sw?Js zq$$_nr1J;TZ(B?ZSEMouWpG zjz^hS)&NGIJNPy$Rzq5vbdn4agKi@6ruNy2q`Ah$9qi~)*qMH0+Zj9VX^y3^dXrkU zt9b(y5@f1wL4oLz7B)8rf(Nx^$7Phb^`&fUtDI-ZF$ZUgC>D0&fn5vtWISG8&Kk4hBG5e(01 zkO8!~68(@dfB_K!4Pmnv)_DgX+Sl+kRkuyX&1^dvx4W~> zx4e~mD_Ghi=BfDFaC$UfU8xxQAcXi59cY(?m2tw(|FSd%sq48Y$)j7lm$Kyj{i(RB z7Be>mZ$fu7IPkx@pc9_G`a-~uLFFDn`ol+2nOfDyuYDZQwC5F~SjLnXg6*MHwtZIK zQPYK$8xp0-B4MnmPzu$7L>A_eX>Z9!k4ZzD)QhWBvYb4UY4NGryykqS4h;%R-Vb@r z=kH+nrVcBqtB$f+s#;)e+7MA(2RK%yo{UV;b}&VjVKP`~DRP=#rmRwqt#NNF@N+Z+ zE6ItYL2$=kc@||+R^JN#sagY1i8Zyv>xig|NY{mc;BrdS3mQ zC>Cz(*|!T>U<`WeW}S;mM((rTu=;#y!ACO(YSL6OM6{@zf3|uSR!p0tGB`CQ3u?<}O2Evx z@?ho-sIT71dhP@+)J81ES|>I}Ow3-dtH9fD_A$Yh;Pgk{OjTqP=I7QN=38bMoYyq}HuE%o%@>(^sjkVRI~E4ew)Q*i367#mq%&PE@0NNyV04Rs6CK*gUTNnDP#(y$)UMlt*T9JJkzZ(?Fx%ah_UXJJdk(F3QqzpH5%5TT7B&I7qKOS4F83`nFhuPus z0?B2aXs~G%HE9>TwLVXNeaec>AXTY(ySKt)G=I+U75CMO=6yC)+33Xa?sRa^iEOlbV1zm`{;{feYL!1!!>=3 zpZ7K%{_uR2=P1QFYC)1FC;c>&iEni^m0h*`Lv7_5uP7|}f$V;H1ii@oL$@8OocloD ziLCfWpX)es_@|4#m@RK#(}2E%rpZ5<5O+4sI7o0VM*rK>KR$=nF5^Q3+!YT`;S2IWvesi`>B#*&kyy(EIwvb z_pKQaa*fRrY~#6Ooy0thb{!xS?@r8xW;*>+XL@*Z1K+ZP>3pu`a>cGH^p*`rzPUtf zO^IpY1h5FL2Hcny7_r0MMp2+&qH+ChA*9mdGkgy4+X%at>|tMpCnuPP#zN~2AlBJS zULA2;r!G?1W*V_bKKF3ix_9*3v~WXsMzuUQuI6!JbAKSvaQmI#WOGOgBlV71^oPzeFYYuDwBEr+lYfrg0t&HH)S^rIKX;+9co_Z79OJa@5U zc%S@*%~BMxe3Z_12n9aRpW3al#ecN{gpR5;0UlM(3GGF+AwRs(L-?WMCtkOcC6U67 zXJp7N6J`Q>arBzBp)HPCs+(&AV{YAo7#>75s==l!#LGd|+DR!rrQw$70qgMEC+GEn z6xi;j2kPa-Db~HbsuK9=u&ndO2~x7o>qU)e%Jo3H2b)5eW@=cgUwec#$IS zRu|<4FEe$YaK2QvztoHidD*gqn)QmHd}}ncBq&%>Og}KB=Iawk2&H5&L@O{xm)d7$ z6Pe28=}`wW7XK7U4K;O^>K{oDg(uT?DPnKlnA8tnAaR%9GPPC+s;g)V32JxX=H!;f+S*^y(U}-pk?P>Y&%w| z9@!^yfo*mR5}7lcZ{y{JVON>3KSMLJ;S{5DKwbm1nx3sLT`hfl`WJI;K&Fi{(%>o7 zI;oCIyGeTBF1ba(BueGo{SvhwL>e3vw!i6b)+ z0BXWr&pv>f`8)D`9Yv&?lu|;Puy$^-JO`||Ft%7<h@3s&oUl}sAMD9OQ65)6S&<;G49N(m8 zZkoh8xvu5u=VlD;;;D0im{f>v;Xmy0(|?$q3~mZ0d-m4{X|fcjgMzoD2Y8|jG7ete z0_9{3pKfH)wm0AeI3TntvDc!RB-QvGq)fkw-+iM%$YH(x)JmSnNW`p}w2S7NJ}{w} zlknq1ufcVhuH^V6S6^nlN4TfCLVS zbxgVRVy1z$Wk+PD7j@GTN`pHhm8!kz@_W2-d*$BijjtB@uak9f=xL@tC1FlpOnT%6V?bFk7L%L zBkO6IyBEr4fO%I)V;w|-6M{wd6Gm3yoO*@w2(n|4&6KeRp_|%Az&ba?vFXtR-`q#t z)%Fiq>pEhYHY#gY=}StI7=${m*x$v$$hokf>-JK2PlEiD@QTpupa_2ZZgqZ3Cek6} zydt^sMC+zZQE&;*CP2Ss=QYps^@D5gnO3lOp|%|8NLk3r4a==|TXc6V4HU2Yi2V&V z0;Y=-RX!q;=ozPqv9@ps5GBOGlfl*9!WQV9uQj^~ks1w1v;uFZW< z((5^jy@zq;U0KNmY^Fq>lT{t~5a!%{N3`*K-p2WkCm1QaDp9r(LiuxgA!wh? ziCZ6yOGA#(PI;_fhvp2*WE5rkD2e$T5SHZD`4#=J61#)5J8+N?AsZ>GoO$#Lj|U#W z=6@mQN!&Hia3(Bjg2f80_s}&t{T2BUiCM6V+qhSU`qXb?#|)yII-a-~*?5DjuH6=N zZ1D0p021gJX5Xw3C_Ld$U8L!pOf!tZ-*TQJt7gIkKlP$SL8ai-OG)$c+8VRz4ePQq z&utU&#W)S*=)`_9gem9vEmuqX*K`RvSAhHdv>A{vfS0BYCYo;<4~(i$G$IkQ@tld) zQnb!(F&TpBMvkY{8mjqH?<}U(=~?9&&n&%``y zGJ4NU++DsVH$$_E+sUl0k>(hZ(iJIFj-Y_OVZUmh!p2JVLR|UdUE1Q2H(d;j2L`Sn z$H}H{tVQj*x5N5ze=PW}{t{<1GpOBBk6{63c=g2t%z(=<(HyDb=Yo!SI?X;y4@ZCf z{v7FV?QXNnS<)**NJ-%4Y?q*uS@|>uX~Z*R3zXR1NY3#LqN5k7NbM8lF*cU)&|DgM zR>|>bJ=_annr@tBlINneUaCmOGb2TSajNwM+f81P%1gaXmIO$KWd@9Or`(2qb1;bC zm&AV<~{*~W>8FZ zKYA2$f4aF1ugh$>z^*Jj>eKuH4iPh@a(BqQmFwjf@?oSo(h|)zm}NA{P+1TMZ$j5D zCo*v?$DCqv)il~FAqi3-rFZl5=anv27iroL5Y`<$`|A+)5joZaQ_1T5dvrhS&TnAd z8y8q;txi+=L%Q7hn@3j8lS!A|?WSZYF&Ml50}DXc$NpW!C9P=*mIH#RPE}!eRi?!! z*#vLljl~^tD56qzlARp=-j)rw|ic7aNzagiSAKmk2WPFaQN zRXt=DVVZvsoKiue_3D-`zG#F1*gD-RuQ82b!N0M8{2j2B6#U!8%NNdoxq>+#4F+ou zUU3)<)-65uT@En88=%GvfU9_0ZfIbQX0a}}Zn|wru+BD@V!A))=}|@U({Jv-l)ZG? zla)cZ6W=4A7@&47R9AwF4VpMF_+0$jGomAcSBEOIY(xbm1aIPk^^8m3)`to-kMc0^ca=P8 zp?s~}i(eOuWqst!0E#B^)&W>2HiIN?!j2QFnvzE`=o%l6%8r_$t0pF&y^L>ErCEPo zRo#kG9bW4sx*m0%{KR+u^(upGPgLZZ60!NQ}{}YbQt5CU zKzD8675Ijr)D5TH6raUAzCiR9sT#yBYMyGZVQGDt08H*m7r(EYoJqq`qyI(Cv(J#T zE`=zR$Blj`=3?Z z4n~X`-XM;TvYpLD+xGTN?j4NIB}gj!paD@_M3DgxCziV?+Z#7Z8igFxgGqUB#$;^%bl;mH ztFSymBNS>|$bExO#5k*MpPuxm0{+VP3vbn0bC0@wch-$=ZFa~2jH?S{kSzr@N9@#> z%@(q|1+0rGfw&%>w3TPy-p{R{MtRHF+#&LBZev4+qyl;sSLKoXYaB?ozS^j(NsP4} z<+QgnT0+Mc;Km&vl1ysbxhbg5hexF(+osqtzx7p5jxrJNW4@EC%YdW7G}0oT2;BIH zmN_GYoo4 zPs5q%69igi=I%WWe~41?@RAO+B#6Vc%kgQid!(BgMn;9Xvki8tJpEaW`sy|=EqvYr zl$1J!Ub*smUvZR&N;)e*o@?f@!Y&J2xI@pF!}}c?h05Hx`GHnD$(ca!j4Z&;r!^)xSN-p{3nC4XG9>v~BlZOG}PMu;bpwtI88OBaieKJ>Zvgp9Fdz#*p{Ypdpebkq%9m9469_g#-% ze!oirY$(-)w%EWmdV0<`9V#e7iI%LE7wBVs52Q85ptNhyB$?5bQ0}v5*CPd|=;QOq z5dj*i(e^(DA53|vY?0smXXWGtSyo=~t5?L?>>PIU14f}=dp~dp`lyxF-0OH2f6@0e z=()i?a^0=_hJ4Yfd~Rnhy&IU?4eW3|2aFfE1^iNFcl|7j9*ytzER21X;qJymZ|@1D zkh9x2M`NZSMGusc>7fmHI^|7}0S(QXV;qe`v30Tg`0%wlve6A_O`q4*X@NI+mjGG} z>?%&mx?ysu;*X#R%v;>?meB(2j3VkVEMVW@#dSD_yD8;LDaVqna!MsY!G>`wCoIUF zNynh_){atb7Y{>qpO`jD_O}-HQ2MKL%^zHbocl^F=W|6LCSxbr+|)sSUh&4mp9)*@ z=L}pDCx!mT5lJL{fj*-;P9|y1ejt0K99X+i2EKIGG$Tb7_(DQP^ZM+o#OPjs+Gf@W0Ab~G*Jg>HlpYe&#+Pm4iYC@QEL@@!#I%&iIad|rHv*HdJSY_iyB z4VvXl{j^ymVi+TlX{&R4xG^zl^TC|Kq)hJfVLUS5f57?dN&?-D2i(7ga3?XxOW6?O zk0~A^mB4lR7Lnb>H!-f+Ms<1@7sDuM&iPnQrB~hRd-;&d+Z28ugnohFe+5Qp43)Xi zZ_JtOCh@2laAq304T?_(1~YD_2JU^z?Ni8_f4165>h3BxG6vc_z9v3_QudoDcq-QZ z==J*8+9OhKL`fl&6GQ`s$HABkDn#xG)c4mrGek2>-cbQ82yI973@dd^qSMrF_AS_H z)6)Im7vT&=kb}@M;d0;pml8m>J9mcTpVsY})w|P3P)$s~CPzo-)d+8?3l0+V=(UkM z)W4|Zh5GxehX%N=-!#9^-3vOhUArr>YdYkWi}t;PPc!k}ioF{tEK>iXhy3*;;->95R_eDx?EOm7eSGN)je+6Fr${%z1D{8$dp#KoTt)9RA@eTH zIx}nUQ!X8XeF``Da*sr{g2XWeVttS^hYd>;LZKVU>fo-7UN0OjaIeqZBTgS*OVlXGm$YTFL3`^HZC~ zar>$-??12U1Z0CsUg*n!>^-$z04t&qCe4_hOWrM0AteI}`ynh6iGMTRzA8i(LRma9 zKa%u3W2nSWODeFQnH6T(tK4tS0@ze4jT&ytF&OOzRx5F0uVkCP$n{D_=Xrs!*HBIr zFE4Wn>UPpjFRz(G6fBj~cw3tAv&;^zDn3$+BTu?yYE#(-#XZX%oPC7dZ9d z{>G@3#A@Ta2UaPYd?wTBy+HPz6Oz9}#;)L<_k7d)Uh3 z)UnL|kIkR=-ML-N@XGj_8cau_ML$nXVYevWFkwFBT`T;O*au;!s^`_(64=CAO2CK%pP@-X5j;CeNp z_61sopRSI#eXg*bnh?{9WVf*0UIo+f2ru+QDQ;E@p^L5!wK;fg4Bljt#@vIw4HAE# zRMmypFmCXM3yIGi)6oOvw##GaU3^s`TlbTrMxCy*0k>tUodz{`cdO)7B$a5Bgj8>w z-H+**(-_Pd^+M)bw5>XhK99)>vwk5|WF%nmuyCVPmZ=y6Mcx4+sy;V(d(Oa$yFtnV za6eO#={s7~Z!Eq7G>VuE@r1LFl7Rw$+4w?BeI{h`t^%`jO1;QVviA-A#bk7+O@qzi zW1S+?oY#d!0zOf6O5Eq#j^0&iJDTQtKsP?bGflRz#Vc*0vkliX5=}rlr4(1Wbz^!4G)B4SR2nM=6Oct(UUzmh^gs^MoI36t4jcIp4ez7sXl}u)i zX0K;UGpQ+(l&hDK(rE=K1qbF@$QjHGq(4XqT2as2TDZJaJYtb zQuVwt)mt#2X~N`$~)F*R#wFLg&wg=r~(JJZH0Gu*KyI#iJL9fx-U&IuF^@rHgg>#($$o;<{*%F*bG3-Hy| zR+of5Gd_-NM6EOtKv2tw4*N!x_K0?etveIbJ4#c>IVZc~wtBmxw~x&C#q14IfZ{Fk zw~_s>6!y<(Z3REPYW}QHcjo%&li0oU(5A#McBB3j?qdbDv1f@coz{0zm7XMK-7BvR z!+X-#tjgi_8C{!=pr6O4DA7o0Y$bCL5 zwUg(PTy&i-yPo~GCq|h=+a{4`X+C=cpQ#P9Fc%G>fuKIh`}!y^NKxurrKnB2tcr3| zs6jK{-=*oDO{|R~t2?)5_55FVYRj^n0$3p*Cz^LkG_5g?`dX9^u_rBGRzq^Ag$a;X zRkkUv$D)%rI~%c;XD1*QczJlKOwKcJnea<4?D45*KOb{LLaFk+FtMQ`uA@m<64&kf zsVPZPdgen(VcT?c`CVV%`e<4-D(!8S(%QLX^*(`CKi~)xlFFM(&YOz-ZBoTyZdXP1 zJb6zU)#Ym%O{N}xaRrE^jV2&@wexo48S#yb^afTA!S;v#Z|3*-WkOdEcXpE-3R%0( z4~2$Ap41S&lzj-ka(t7)8T3o$yP^Cg&8zoMa(XFvNVp5DhI@Q2F#B9cpu47B!Xphm z?u^IEMlM+s-kn-2S1F%Q6-l7x9Rw~P(!D6)t=mv-K3c8s+i%NP4AKN5sI8FEkI*YQ zHa9Y&?l4vCep!|A^C`(t85t-LACg0Ikh2V~FUiZ`#9~2eAlxWTm%Ge8k6PhXLG1Rd zolsXYt)f+GPGAZ@N==z!agU7R4GY&3X{ic~2AWK2-ra$c-TO^}dX_kSOn;(t;S~g^ zm^V)JasA4En0xx3NvImT=gbRZA%}M^(`!Sj*UftflgCRznJlWzGtU|{9h^b03wB=^ ztvh~WCW{6hOvnoWeIJ63I~i46;kN{DKOMVUA#dF`3SEt$zD{iZ;teuT4JU{0V`ix_ zEuh2V4S4((RRxA0T6d~%e#uf?5xJwyy4cSjuNpAE3>&@#DAUu{VYfM?gt9qDpRV)6xY8g z{+!#uCE#tBq_ocA;_9@WTmavxM^ef&TV_F?*V;;Bo4ZmIU<52zr}6%IU-JSkI7kCh z@ip@Z8Vl4!NdWR}M|aC>s|xonmX?e(Es3mdw5$z(iD+L8eyC@=T4m)CkK0<*^_4Op zOkXX|tNJ1nQl%5n-&5Bpa$m>UN@z)ceb}#2xwz{_%3ConhLp`1O*>t4yZqh$s}~>3 z<2|ssuaDYm2BbHHk6aO}lY3YT@9Of~Lw6onGN$h+HXpYbx-F2DpT9}dOkw{^T-JKY z>0|gD`fYVsPS+#Ym6RnDATJXP9--!;&&^~bWnhx$b30XcKtAjFhn@D_`>VQ};)S`0 zuMG_i@;w~nzmtp+d^($?JG@o5+BXuZ673zVr1N~nEVCxYE!nBK;c6f5b0n|sSj?rQSXEloBdJ#!ga6>I8GLqu((cHh3WXiDyk5<9 zYpMja&MhF6U}v{c9JS|%gvw~?+whwhr2?W&Rw)!SB6_89hD|$K(@uvz4i&I?k#6FA zBP2eR!mfHfRVd*ay&CTFOQ(5IMqajO{5i!dBjmW?VwI)aUr^jq^0j ztTfGxTDSFE`m)KR3+v@Rm2*Gpqd-UpB!2;UArq z#9(GAuc@aM#X;po=M+|{W7i4(!Na9a17McB%3(;PfHW9QEa<+OW0 zR|`MN$<7BTVq6Qc*4qN^Ti`D}gYU+OS@fVC@6=O8Y~Sq^xiZ{NsZwV0cxqW_YpcSP z0wEIg@|pjDHMfh}7IijC^!()Bv(FiwS5G6%U#~uW6JL?VWx9t zh(GbK{qH2uXr&`>BKlT77U!<~y5<1g>7JJZbV$a3i0bqwc?a{d6Xc7w(M<4U ztngoG@1K5mqKM$W@A4%uB6d=Q`4~AoPuPU`gJkpH4X|wOh2;zwfwpkRY5N2i+fuvHZ>!(Wk@_k|{TGcm#=0B=B#pmU&M% z6|VCF5_W&T^`9iwl^h&3pECVTQcU5$vVG?9r5WS(53WMiKOJ$0?|>Z+fT-QyU3~Bj zIo5J{DwLwC^i$Y_2meXkKj{!S)40`3-mbaO;v`0}W;ul$vSk6-{_KT4KHc1N`yBB# zCxQPi2kU%h&570U!HScwR;9ko#TMjPo@`L5)vI-Mc&c<5osJAyZL zq4Vb2`}gl>QrBA}d8Bs#I=VS>E-euPLO6qMf!GCKKjK5>TlswP2{@0i=$(-Ncyx&}`Pe}KFyJ`sjZd4W& z2UY)XzdK=t_;*+u)lW+Uzi9ahYyZKOE6sPK(iNSN{I6HY_-<6*_NV`AlfZR4rDRAQ z_H&4qs|6Sa6ZfQIi7Bnot#)%OC@tOW%6%~TUvB_brG5PPu{z;|dxwpkOYD|HP|&-M z$rakyXMd+es|FvzUTA=V#P0o0@nw53VFE@$6THvyY{!3h`@*iy$6|K_DYs7IwHCM-s}%y{W{x;BIoL~?pj z(#Q|0?x=BTUP} z-`~}VO1(jUjCKAwAuhBK$hbXO{;v(>v>ZXy99{CoH2y0O|Ax8W2q;q5{3Q1OyKnH< zVw*Pk9T3rhSBT>u2H3wc@qfHj*<%73KLI;Z{yE+L=+wC~e7CT@*^3YVEhpca63BS4 zKK`#=c*h$vE5cS?|5y+hFP>K5QxUrk8%(BmKB%CgPu?h!S$B+*KYMzRIL1eU1IGSK z!CAwH-vn4)Gedg+HL}fx((i)SRnGEX?ZzKT`;%GIkG~6=Yq^-tzZNtCvduLUvHhQL z4}UFBebL*MfHAyPyqzUex~Af(9Uv@x{XU39!uH z?)NW006Ve~%%(`gc+$T{7}_R#@ooA8_JsOjj^GEQCQNxnQMF%kQxup{3Q9T#rBRuf zEHR1y3$wv_1oA%2enRv^#s+-P1S@t|0YUmiFC&OZqDO1P&+hkY-w)s^`YBicgcYve zM>{vP>nxr?+gv%f#>K0#0^WJ+P3ScscraZ|12W&-e?L?by>x~wRw{p!4`;NJEx{ztzHNCZc;UzYmPNr^GXZ-eCSA+PB>^ykHcNWVN9^b50uRl9{uTR#+s03 zo3(B#NTU8h?hApfe$;w1DTl3Ol2`35#UI~sv&hQrWJ($k^1o29wB`w6^2Qc zxdst45{OGYU4QYeTjzN{fL}#E@oE~uP>Kca#97IXH2_nQT+#xmeK~QOw<4oOUo>6P z>b*TM_CmCJp@18Ezxoj{Ztj!zgEI9Puk#SSp!k4jv(Y&o-E{~>0guVLcEnxXAi4(( zHHZm%p=h(da>%y_E`B#Px?MNk5UX5`%P5cU>{6_O-x)2;=*s2srdq*bt9wOwK4(@6 zNEYmmig4OhsHA9XYGn3~Qq&%j%T1KtyLnMpQ<9XcaLd;BwT@K=JC(9#uv@VdA!FT9 z`0*S@u*Y`#kWy7`?CTz}i=%WgZy1VQ>CU>cZg6=hTuzH!M1{kG{nqqUfRIUQ&3f^e z;padG;Z&htROB0hC)ZR(-G7?6Fk!IN=j{FOh&HnVjOUT53kYVi?}#>9`JOHRL3$ZBtsvpf2&kDrKaZX;@*E_6=Yo3vZge=^Xa0Gv7z7HwLxRz zgFcT~?q1J7@j(`P;cB4?trV-8K;+_BEKsZW2+`Si7|O0z*zq>?)Eco{g5Oy*69UyXh8a zn+S7IzI7nY4%=#&4UubKnKmd8{kQ|gR5JJmba^#}s@siK^HikB^A|N65&|%{a~s-* zg?zQKE9mYJlwVoDpEBl=SPl?PXsC4?&e(%D0Cj6t#(_L;UbCC+^bLm`_=1WXr^vks{Sz2m>_4-0OT?mPzbw4I~{Rs9;rW6%>7i z=b#nFU7i}DS`SzmE(tY|w`Yhj=N`M4eRc^2Wq>Z)jBPCw2L5SDDoD9?)!p;jEimdO z-P-|9eT1E>WOx;;s60~MUg?Uc?pWEFvdmEbhz_lD>>V+?BCzT|jBPOy0#C`|YZeZ@ zRPH>o7IXimJ}q@;JVxE}Rey@q0}J|E=e`liX{MWmX}da4BUHuQ@=PQoG+*3*74YGg z>6!#$-mtqm$Qk-e>(0#Ai(gk#^8=!FcH#pw+}N$#$V?uqDvCd+x312z&c0GqLRNE2 zr`E{p`R@9zr`wEdHdjG2u7X*>OGQpMCt~g>WTG%4Lo*t{q8q`XkP;H6PQQWuqbiLpI1=59RJR%+B~mgv0EX9rn$~Z7TL;IqZ06 z@{}kTj$Dj22}o{Q#7!CN7Q*R*xJ1x4o4A1J=&=g#!h5gB6qQ;y+7O_?sAmukFk;T8 zxOoMJlt3)c|0V3QH8~i@!`IcAsYi;F*XTs@FDs)Y9iy0B-xF$*vsI50xn#OLm>i2V zd5!Z@=r#i7rAIeRI80|PM|C`-2fSZNcBI@^lauk5>5r3$hF6Aj#o)*Kb~%pl%K4ek zlbX6z3gBBgwp3oD<}><=(l)_f#HQIJP%oX9O}-t+DT@?PePcb8^ICV6?-oDUt4k)< zLkUc35wc@LR zQ=E*QlNF&UJALkw_uf{&zq+Aet}#YY@P#bMu$@eJ9O7L%VY1p^S{nX@nBIFcOwDI& zr;v-B$$f`WrIS)>l+xm?OmnsY9vXeLD^Z9_L8ZxjyleZ-)mUQlt_pn;{S&(vWA}XD z<2iak?%6IrfDb{#mMaOs{t*QgLKCTYlR?X~biaM=tU0P7w^}TVuNBe>5MrdTDU990 zw2WBkj&13C9hbx_x;Rj>749u!Wriasi}+uLK?7P2Q^H(QER-maahV-Jrfd-wZ*B6J zzzNH6DBlJqh25gjBZdqhnZGH6s~-v=DYhYhv8Nk%?mQ+hwe-8n@p-JWyNil&hWz5H)s42LC|1=9J-UPvJ@I#l9I7SDxoOsn|3B#Di=+5A1tKm-B-74FzwYVXd!e6^3XA8 z*}ExKWft!)-U!Qow{}n5`%CQ}u#!WrZo{4b^Ke)Vq(s%uAO%)2f34T>n9m|kp=t@c zXNkgY=}#xO@E2v=YgoV;x@`v$eIy8%!~XxMU-zmWevRm8V$z#!_vvOZ30^5SH24@x zD&vU}PvCF;VuHGXwSKeP_{nfDKjp;>u*t;u0gh3~GsdxTMU#ovPb-iqjR(SUhTCL7 zZIO?nu|o?Ln&>#RBE^7%kV^PO7V=>GMD*$Y@@xoZl;#L6+;Kq3OjC|DA71o~P0fq~ z;%mM3DJ4Z!7(JRLS9f}4*}&IRDw!QF_^6v!7)6)jW!;`Iwb)7XFJKUPBc+IEa$8hu zlXG>6BX%8{Ot2#h*7oB>!EH&2;s_Dft!RmL6zt=Y+d<^*o5|a6z4o~Y7&!fyTF;R6 z>#9#bZLa_J>IlpJcs8<3mL&JtQf|*n-WFTJt#U^}*jUHOt5=sh9cR8^+2hj+a~6?D zgXv2jIva4`?0LK)k6*jDl|5X4(p;DSvAWqvt%PrEo?pysrboI>)c>-vh>!}fm=h}X zdEp7oV_$i;$y4V>vq{_#urC($>z8>ljr(g&q|N8~`%5;D7x@iP-=vw|j)id^0(?Ky z9d}xty`B(lO6b(D)Kn{(E-cKMx3z_UkXtSS! zmOt;-oIbMl8zBs*UdwUocI^liSw5stP2Lc{Zv&jA$G#XtyLm(rKAmb zc;im#S5rWVFp&Z+Nlw%AAGC_M@=6KeO?rL5Ha#SjC;^QEiX9&5z-+Mg0s=-4xy*O= zH{scLsjsT*Ry|mleLdw?!k>Da3JN`uFd2rwaXLQ_B-N2CxoFF;rZj)B*2y%-&fw{ zm3j_!I9jLxJ(5(OBw%ZX5SnMQ`F;J<3j)HRANXf4f|Kt>R98v zVA`b5VqNQWQEs)3KBXl!_>0@S9+jK{f@3I zy!)<>da&v*Q zowvZoX$Q3hUi+&0k;iXhvN}CTIu@wrN1)=F%g`e4>)Jgi{fzd)#ey9Q7e;{Ni@VqO z?-;bm$nfLt34L632uFzxpS4aic20&HRD55px!Hsqur@HgYDASje0Oh7L*-qO`Ii`5 zN%e>-uQ|u&y5XK32BV?jOz4Mog>y8OCbnWLqMGX-kTGN1Gc0jSS!45`>EgX$#5z^3 z`TPMvuVcbxCRk>Tqw3GHtPLeW(Y9`Rtb`#;KNBgRZe75ZZi#X~6Zsh`fJ<(@pUADH zjJI(vo*}X$^)(Qpy1F@vm0QEA@lmg4t7V^FQa`^kDGDttjZA)+EJ3_Yk9V(QR=*(4zo8lvT zU26iXe0Sw|x=rcE;VoA4FW>5pY818{BblWZHcS&e5*%AzG(~6^EwuDQ3uXkrNW{t% z<0b6hGp9-ojT%G>;;m-iqk1AB0uZ*EPPOB>3noN;WcZk?4_xiwQ5)Z z05uQsT6rn0`cG5}S}2!9_+-Oy=>F<8tPpsA^p(6uoqNc8`w1+KE*M2g0GNYURBE~P z9cl?lV#{i<=FOz9%KL=&&fZpE-VE6oW(ui+c|Q(t9d)B!`NSAr1FF&{hf_LCrm;-z z`XA~)C&8C=u(-+fgH{I{g^+a|ZqAvAYbC&YNi8CZu$hEUh8^#NI27Bw zZ3#_0U%d|>KRUWHA&vWV3X5e)|IJ@JS=d(A%w>?IVRlK0;d1lLPQ7?<&rXHMu;Q+S z;GR;xHWdyNK#v9c?mj@A(b76PH|^T~h(4xDz7*?Kj>Ys# z%aLCyKI*HT5xxAUkc5!8uqFWqi}beA0=PQy<3h$k`W;B8&#{Eid{7mzH!Z%mD8gWI*JW5u$ zrpUz8l;13Pd!jRO3Gzj(hR5PsLBSitWt*iA{LRB5C^g8BL3tm#rP;qONl) ztI#wVj&HPz=!jC&u~lpj8%f8)P{WNH{qvg@RL;{=HY)B#s4O&;jyiXB$PSWD+J2g< z;DLmixLYtUW=szIVuQ$Fq5t-1cOgETR6v>Ipll%k!DoHJ=gv|M#uclbJC)U$Q&Lzu zbadR|YS#{Fa91fV$b44Jtj~;OyuFYDYEC(VU&c)JC;G+2GtFL+kbN>-iO=MrMdZ)H zu=ulQSKtU-E<{|^Db>dfDR$IlE;BX_BqQPbZSsxy$`n#hwmb__Ury+c_vsAkkgLKnG&r1D6%BDtz8juPxm zDmM~2#tehg5;L;B_UGvSAA9c^*JPKi4?ijbf`E#Mf`E#GfQXdPn;=zsl`hf=5L)OV zVgZ#VU3#w}p|{XQL0TxGcj+Y*flv}4|9IxHoSA24&YAby`#axmZgTIk_S$Q&y~?$4 zU-RP;vc44?RP0wRW-;Tt)B53Vj;VP&*2aZKG!AG&1D=QK-2iQU%(^XXZPngA@eVgy ziUBRX)h($#&i7jbp`U^{!&Ug^#pF3(a~A;GL*@#h856}6eRW3eom@lTu9qH z-S>Wi!-5)|hr;nXY_9YSs9DnI@D4w%l5P6{^aw{U%5%Ax7yJ$-g0(X7>4|(A0QcGM zAr7Z3D9Gc@(P;nXTWb6E%~%nzmHIFX)VG3^2w2iTuf5wv144g1ovYZDKjgn;5$>6H z`v(?)Q~tU4k>L3UovJ% zZ+Vrt7pKV2t)T9qQ_##>@AlgYrjAVUNkbPk*1nk6(|KiD0$O2mTqgXC0;3H+$NQ_t z2`3e4`pO9?{+E#s9uo8puKP2sr`pxXm9RI>@T4psEId9PB91#7bpS4TIixT7+0oEp+Q;W5f6q(4VR~wbXWI+-RO;7Bld0T9A+tO@ z9*?N5TYc}b!R>Ux?`g6#1X54ovEGM(+!@oWHu`KurfaI3O*GPWxZOYAIe?&52BmYP0=IRj?rAqaZ z29vBR-1KU+YW0|%$MFIBc}0B%__E(t1B`ad>v)3B?}D&@PQy;r_)&7$nKeeN6l{+) za{XXaL}=Q9jD>_cDvv|o|8dP8ucs}DcJp@K#$ln+1MPsS+2;_Fh0x)v`da~IH#NPZ zdeB|pnjl-t4qj?Vvj~9J6W?o9S&lmC{PY_(u^yg0>EPs|mfdR<{sjg>P zUahJz@~ZBDm{|-5xq9FNMLrXc;d{u2ceFj_$P^({aYztw5o6a8)_bwuaqR1L{;9Rq zfnL3QUL;{pW9wnD+D7RYGxPcz6BrT$RY}d0Nyzx_*f^>ij8gR!ZYFD9Eo(I^FzaEy zEc#(+fhYJ-?rGsP?ereN(3VU=v1-~kn~6xWtv^h5&}%W~Rk!vY89|mTq;B2$OU~80 zVg3ocJpw6JjeZDzn?L1EFlXxAU%+z<&&O@Ak1a)Sehpck9j_j07iwD;!D?b_wxKb6 zD_5|J;Ro->bQ>ty)|;r&d)u7w5Wt(3%S0?oEnnkYOzP#)iYY%n&FO1v$S?q^tZQ*U zwCoXC5~v{lG!7Bx5$_F`eXMRGC8kh9)qT6ZrjMfd9QWG<+@LtbSvO@dbxJ=9oosML z=Faap&uM_u7m;!0Iih>N&M#pGlENFWK7C?7Nqe!ivocK7k@R#5h-N#2wokEm-5cm6 zg<>8Yu5GLL`pxSxKD2wF$u35(wpD~+6DXlompp2jp%+7@tfOZxk*5~jW&vS?9Tk^p zX9Fn~G!Rt|RcIw+3-`ksR2Nw~UpJ%@L0u$>;3}qx@a?PVC>u6@TdtV^(DZq5HT~OY z+~UQ(ff2FkTKjjrB8p3?k?3j%!@zs#$tT?PmW_BjW4?{+>hEAfFZ}9@eO@5qC$`u6 z(@wz~8f7Z7S95?pS~~<*y=)#yH&M@}6p@DkvzTi)F7+^oE%OKJ5dSvG6x8o_>Nx(UQ8z-VT+oP<9 zh6hLhty0WM$@+6tCu&z8xp#YK6o1x3crN{z?BsT@l6Wj zAu$|VYk^=(LDUJKd?W$~RE(J!T2<{N@o!_?TOO4LhBMuSQk=P{)&`G^|7 zd^WWdM1GV!@R4blE2%XX7xz2)#0plQ;Kb?KL42d13}xb>zdV9nn}*xx5v>DFu8v38 znp|3x<7^niR3;!|(F`=W8LDSW3pFy*Z|nWWu6XhX$;w>gW;B~oBai3W%LVFBNL@no zFv*SEi6Q_&=#_(dbH`+NnWwl{r2L_lsTrD(WXL2(Pm_6qE#K)9bzV}Y&o~KQ?8d<^ zCEmG4Tb^tCiEBQC*yzy-moutmibFYr$jq9n?0*$Om$ptqwBVb8U+!_->~ptN@6vci zxTuU-cYiNbk6bYM#wr35kZDuXl6hqlln#%Or1hb3DdqA!d`Tm7Er@7D8Z)8EAI>U^ z`OsfH`zl0JnYZlL?Qnkuy2nnTy|EhH#JrPLVU~TZqS=>vJ+!qM$r^ zKe<@Z>rH4rj|Wp`qWW6yO%5s>3B?{obYW4>3XnZ|wN-!L&TXWj@HhWb@1=l1LK`|# zf+P6n?cI5RGAk$R!}FJ<;jYI^#_L!?aw6CgkeWr$-c{Wy%Le8QDv==;a_HHkk{N+7 zu}nTS3#W9d)(E&?>Y?}PmFJpR!p>$-jrD^!PrBL*?T?&?_2(Rz0rv0Fo8#?Hf`enC z#ulRjzJ(eAs!)6oCl3pUC((;xl<1d0-7cE|KYFj?5De&hG=4uN9rsl|2RPUhCxT6g z7^dfO^^`>YiFHI1vbAwJB>FqrkxrD4T$f|g3fyV*jiv_`9(=b;0MuH6T!3-gFJ76T0CBbfwTNl1n&zeYx{A67pt9ga=86L<*NxKMgs|= z#9gF^h+k-a#caEzkfBQCaN4Y9mEVF~N)nN?j*X)wBW*0+$UV2% z;8BEx*?pKQfMN>!l{9Ul$z#K?zWv3n{BrVjVuAVtfzyXu1qOc=C}-;%FvZU4ty69f z)7@!i+P)G?Liu5zk&SLOVN&?+O+$%*BiuF<+r=a*f%U7tq_28S!HFQYl3t~HeJ$>a`05KDjKWN3bwraWLSS{W*e=u>c z9d~U)N>x8>1;)SKKR8Vn@}BR8HchG#yr_}UJ8;Jq8~IyE-E*TGm6E47Bou#H?A?6> zB<_T!Iu8vE9@>mu9sRrtjhD#{gGeZIs(Gmbt-t1haQHyiL=$}vG1^FcO2 z$Ejmr&q=u5ODz@Why1J}-u*GdcegB_BMt}W7#eqVk9nc5hv-E3tzS{sx=m_L3h!%6 z>`t6Xn4y-jMH9JcsJ}<2`{>Y7w6BiRZspi@B;+-qG(utKppX3&Z)Un&vST`&$X~Mw zBYyBa*0m?e2~IC)3U}_|jK$pZagfUU7~fJ|7J4sme-l&lC=nQvm)%w|>v_8M2GH}W zkt%;xF=00$zlV+du}<~rj~@jqY%5e7ceq9Qe#^A_;kP_RGA94`5KTk>Aw<)Mt9Se6 zMuMaBrsXlNn}|6@wW9H_F@a=(3d%idgHLHmHLe0*YWu7R^)1yR15s^RtS6zJ_k`u;l`HzI^juwusdW9X z>im%wxId`QO})IPjnSJ!zWR;qL)}qBPs0!~8 zBgCn?ug#=>BgTqn;Bv$yAhP_-uZUHORC;BsQ>WH@3$(bs$Hbdy?%No9zTJLyz%{I2 zEl(LN!eXS8Q({^dz=q=1O)h6BbrzTpW;rpX$IlV-Fn!< zHefEyt>L(i55=Q2;wa?G5o1Ys@#gaehi8@tq&Amr$Yx2w<*s+Uw}egH;tqL>T&SZl zgByTbmDXb@9-<#ECOvN0_pdgWMq6IK- zr8{9s-A{YBhv|#0fMEy90yMYIWP7ZnOCiv1(}`Ed+WjiQV#c~vH{vCp8LN~fl&2}f z@pv_e&A=D(+N`@aA?;HmUfSa)Q*ZVYs>kU-Oa{0Pj(i`h8oH2D-SNse&Xty?%^FRj z@8@i73YrxL+npMNCxAOV#2%Q>wzF5ad`Joupe>)Tn`X+2+A(xv5estHLh&T-=H$Gz zvrp8HR{{@tHaui~@+->zSNx4_z;n=gcfr_Jig(gAzk*fDZjTE!kv_vu@hKPivp<}< zz{bVV2Dk-LOxwxs0wp`sU*wJVsejdMZ}*Dh%F zyT3JmYvt|_!_o%s>jgp>!0$wD+rLswT8mB;?cKinz)7v1`jMZvx&DyTTWXQ%tsy)o z_&9OVd!ehVDKRz6UBcNv&=lb^8nj7k1%WjCcOPmePgOsA+AFEl(k+p9-;YLKM7Q+U z9ZXcQDWNUox4P5;)g+fLU5ZXfDvXeI1Kbi)Na@{@XdWYFin5a5J$KY@clN*VXzF$R z8wThUAIP}%urQ-<)>)yl>aL*?Z?F12)!qFZ1WYUheW|8hU$=q{+ve6^@y!5(Z*xu# zrg|>qp4Fr_2EJhQP#C=uYf`Q!hFQ5_JZ`@aG_sKh36nIghXwRSvI(sc8JP@7DWhnZ_vl79kk1W z=376rKC#skh}NyL5IZ7s90XS+GU-3tOu3uW@a&kM=uQB?uf)|~oSL~}61A25a*Z3t zs@ayzH-uP;(&fUY$6uK;M2Q|>P8PXy;X}zzR5*6H!i+@l1C%|?twDr2e2recc?rkY zzj?kayvQrAaulHGcx)Dsj_r|gRWG0Wwfe%hhW7=N=6{DIBK zQ;+ftD5_%P<8@^p{|#u$I%V8Dw}uqP$u%5|B4NgeQ1Y3Tpv<25hQY_I0x0j`gFR-pCk7 zD#tlPKS`0EWSB0U`Q`L8gpo8=go!9$%?ilq^7s?2?kY~lPdX+EOPq1@%0h~jvnTc% z>f&7O4DaXMxBUNxGnLz5i{I@VrB7WSyLvL40U7U$9UcT<;=SY9P;Y$pqOwnw|80If zL+5K*+B>*cdWGk1VzL2^LKx*+Yzeh&7d2(JUNuC<6&7md zo|SLre3GNEEz7h|7N2%?DMf|ZBPpqduX43pot3b`b+E;=cb=mE4{R{j(|zQcoRO-M zXZ^@M!*r?>p-A&=E~(*8%@@iHv6!w+zn0kIUo`*edbvT=T#J_`yD^6NzRm8sn)Ev+ z9Q60~p4kG%Y+9L=6KBP>wMX&WS43$tFOm8yD7B#8R#tgedR2de0( zh-a}&g4J%_VK-7&E6(K4s66pqqUmc#*lc&|(J5Th`J~f_k$da&!DFQN)DmO%;AYWe z`W@f3BO?eZbUbf&CcqBaAwC_7^zvEp!ZYvYf2#4*^!ybkNgQq;G1C7Ho2=wd&X(2* z2#7~rZXx0fRKP~Ozidq9JDa_=2cDskqgCyFL08us8|=B}%6*r7P*`!;l#i{v|0uVp z^?n&Y;SSu>XPRt>X0?J0y0ZGlfgbdJ>jOPSl~}zqcIcRpJuE24tl79c7YA-R-V|6> zoE{V1RwERkbKb?^7BbY6!O#wvC$mu+*kj{{iT{v>Z+EI9W8S&Z^g=C(WBVseF^O21 znP@X}dL+|cjmztyD}Zm7lYUv{0eQrohWM#9bdG6`{&Og)x`#xzgKX*fCWos-Go`YKVK(CC9H)HV<2 zg}Xo38^44P*7vk6E7^PU@S3&t8~NaC_tsVnYLF*DZy$Vyg+NUoU~Aciekl)X+qTVF z557F{G9CT(SEzg1+*yX>_R(*uGjD!KQ)0fh>WwlGNY}fblWU(Q9{wE^OZ)18R42hs z0(Wo1$N^NvN4D3q3j)?c>kRiMp4B2lb{eylHrmNC+!3^PXB4>fAHPi2`k#SfktrPB zA7rh9nsK30;aok*Y5pnp>)aC=3!wXbMvUF(Nk+>osW>gL-@viIp<Sxkd(e%MO)gO0lmXC;fIF}Tvxq9B-Te7k5&r;#`mw1r*Ip^pQnQmFRm;!htTCLh6 zfy`>Lky2#j)wHpFt9LkF_1LqgR^BE_N_MXMuH=xG1)`^&-ZU?&l!5x?JoicNmHUSF z{wYIwZ*5jyl(pJ@YWgdvU-FB0?{c2ze53PDt4NWqVwrpF#ULepaMj>;TLHY%bPZmq z6Xsz-~p=ee7QU2Ak6 z9*bS^Zc{t&AGrB1xyKRVxJFySKD&Loh}JJlb{}W9GQajr2w>Ick0|CNMjBI2mR3^U z62l=@n@YGi{GUXb`N_F~K4fT~ahr$T8?NkTvBR2~4UY9oC&X*R{~+;%)Zx4qlqGPV zl#lP$rXs3sU!cS@6(!K(+XL%;)3H*SR(Ap{oMQH7J5dzlV}`Lwu1`eH=6HnzZSj`= zPJT}5*3o2$n2?T8pCc$UW$lJd_f?j~h$OuHY}+S+b@hYlj;JDjg~vR2iwA|$FYHa6 zzvexKbRW-T_!}-VoXTZ(rF7Kn>m@@alCk`>_^(4t!>E0-wZv3#HF*%r%CZ*7Z&hp0#5}%yvqm zBL#l3^RK7&i?&__Wu}dtQY6tLbfcx5Hpb;^QH*Aldc!u{zA#@`dFZWjHuWk0#s(rn+ zwJM%6#_`y?C->HJM|BoL>Sj#io-nTjT?ocqAPz=g>}&PIZXYO$9bb zj?UvTgC{L9SFRPifJ^L-m~WapN5Cvt#Wc$TZeswb5ThGf%pS@;H@Z{Aw1D*RDtb7? z#p=P0o5i-cYfHo$B+Prb9Dc^fLtk)j1x;M=R;6VA&Ucg#j$9W8-39wa1_V@Rd<$B8 z@Nb>^_Q8bJ`T)5Y#x8FLQ5&N9WBiisf|`U;UDuJoG^+8oZzO_gnEhkN?KswRZ2*~@ zbEcQq4X;T!HZ=GYpj#TDWJ-0QgPmafhw1`GPv#W{(J>N|=qF3s6^HEuuh2DN1O)5zw7 z4z}Nd$BCas-R(tD0G(3ncqVP-PyD1DN3sL`!2CdCQE7VmSMnbe``(_F z=u)?}SaRzO8VCE@MPJNHw(R;1$*ea+n(HLek(Wj9msQbS<`ftC&9?K2j0x0wy1?3N zhiP_O4{a@9X&^2A8ouE*ipJThT+jf?#&#m^mj|Eas-vMewDgwLnVx~qWlrerAZy_@ zybUL-a)Si%f@2dmm03eerl53l;d1DJXXE~7w)!_>?X(@Nz`PCPQjIF(%Mb#+F(mWk zXa^X*>HlH_W7@$8n?A<)P`U9?b}xkwo(WGpQV3$O^weJF^|<>MYdhs+HUU2z(?BB9 z?_K5y*C=SR>6`a9^w`8Az1*eftj8J0-j>z^id1~2BN9Yhs@*0q11J^L*3Rx+kbgQz z&cT`I&fF2jdiR`5Ozms8yU~(IWkESzMtRedA|{#1o)lk|x~h_nniKrjubcQQqo0Pj zCyPKz<>_lWdL7nOOnBF4P5k{Y*_>- zC;=1g?*JECVWC$b0MAc_#2U)z@pFnF*>_^ z#iTzYP5wCbxapi!*fi^qxS=w=oeA1%V^bl41`g`Z6@vpE`K&mVbsh26)^p-k(YLcv3J=pWkPBXmDt%dtG?s-VUwL!d)pL z*PRpVw?<`YvsB&H8|IEQPHsE0!Qj!R-J$slDMR}3{_gBC&k>&ljAqqFz58s_X)6F| zoVmdy8q`ow&&fTBsL#>g$&A-RT78$hJaBbDi(px3BDDjwzbC@!~#omkaJT+O-f-qd@w>Yr49c=@R&T*tSOKQTPO!Z=lHe zX=mH5(Ix$Ul~vsm3)o48O=ElCbt5+?D@&p~VydR2Q*^r->kZS@G(|x0TwvjYTX3VI z22s1GEKJ@&&pVg6g2ZwwQwX*z&^5-#LU>QHovF{rjRAMJFid}}qi@%txd~yE!MUS% z1QBz4;&1G$;2I`d-%;r_G&C7=;#P(-cCI<50AxYun_kaj%DnG46inil=hhd!42R#; z>@%Q?cGp}1*fV!`h^yg}`IFao?Z#VXCzvP4WqI%Z$c1}!VYxrM zv)j4^@F14%rrmL~E#RR&xxe8~M1z9SQ2(}usRB-*c6Sq0VgwpwydrF}(l?b3jzUuA#*OgHP z_Hc)qs&BEdr{XF-%kA5?-ewAJjs>OLxC5wRSzK1C8GO_`*iJiUc$y?~7sRVM5R{c)^_`vcR6z7qL8BQNmKeF z`)r4x(Q^B0Cfd-O0BjugODrj2{Ta3LYZC^%m+r>flT#rs7!Hl8PhSCGru)a>q8d1P z$1xk9yDI|PVueLTrkkQIBJK&S59NMYxG1`XYI2y-qIS4`uZA0zlU7!Ih|zIw$qo1Aul(54s5_$JN#BV>(@Q+zd!YQ6Vu3- z>)KKhemXJQ;7#qcIm`2NmAjYg>M5Q5EB09*9bQmG{4wn3D$!2$YkL3eDb0e?ePv`Y z)8ohBfAsl^ggVIj_b7_LOcVXl>>JtV7cb08ThRV@$_C7--^lEFN_R!cAgGo@>Lr1i z1*-7=($De#eW$-H>o=Y^m0U^t{JBK(G=}9zFMl)Trm2#=W9uG@iW;-j$Na@+{AKX{ z^|bu{w27!CJn!;Pz4gaDfA8{Ny}PYTT;(j+$lnXg|EuBuLt9MR#0J8=jq~aL(=jN0 zPi)RlvivJ0?w2L%pFc^r5z_|KEtvJ~e@naihjIR^Nl9xFSx}LaJ^nY9>!0`c7ftu_ ze&^v2Z83)bX$$Xlh&PbP4khbSD&cbPyPP#mpka+J_S&JN2myr`lRzS4fwCd@h{#5 zeEPmD6YsD8+rIwE5SO>U+l~)pRsJ$e@qf~)qA`)X|Bnd&|0BZ8lXLD$N+No-){Xym z$4TeX&6qgmO6=-f|C7JC<7P!Un#Rccjn)T;_I^CA;M(+ zJbwI?$&}a_HS|sXjXx#mb*_MrT|}GxFy`L_+AWuVM+hqqN_qF^=_Aef9Z!Vx3+4w1 zr)aLUecb&H74^-enB1X%JJ}}Q3&m4Jyjc7AU;BfI9tpK$V$yg08HsgtTCazJ2!gz>-V4V zy(&?`13$i$hLMm<+S1X#{iV+T6G8=4pDhgg4(O%w<6Gi{)QJKq)8;Yi&sV+eXIB{+ zt{$dErJm9GJFWE}muXCo7%*QvHOTi%6}rwuRBpn;xN3e*wjkYx3U&J5ZlbjA?;u=@ z^OzqhglNQfD7WRO+CN})Y>fg$Q;QruzfAp;3H~G!aipJW4b^^jICb-`|I7m>EQ29 zpf~zN2}gvH`j5|0wcEtq$}T#h^AkDr?|S%me+GCF?>2Ar!~S>r$8WP-e)Rna{68Z6 ze@*?-%-v{^B2M z_=V-V(^kIwz@CO<^FQdws5y&lXt3+au;^ld-~UPzTR#7N;R7>On0|17fF3#KUQzGV znV?%v=4WpX2npmBt8czpGx*zCBJF#5q{P1D1UMShA^2L%7bgw@_CMcy(&b^2Q^3Sn z?supRHz4q|GhfV?=R_LQpc3|e+>M%7GryJ~JVwm3dIK)Mu6}%1d;oV>Ja+Z$XMO7uU3=0E4Tdx~Go!;mk zGpp1;DS=dy`G;3jen~z|-~pVvJ}gnq#%FM-7XRQCE7=XN{gu$j?y=>bg<=n1G37sG zDpG3JNx8=^%+$>8oy84ROGdz-{QG0m{g3a5eAB}$iXSJWG#|-ceADUuFJ#2PIVgYs z!*}iC>|&2MW?s#)lBXN?NHL$6d;q@c(RcR+O{7akxjC~gV;m5-&UNhDRpZ`}k}Q!y zweO#0;^NPwbaxE52Qki!NmyvBeXcNx;j|oegU7FY8ul9`ogBV>@N{IWnL?O3R_%IT z$dHCdarsm?&uBB5mQ=D((#%V0k2m?$|9xqs#po1Qj_-hZxlI`$i-(VF{|i^lbD9~T z(*Tl`<$8A1bv1Y3gf%9?PClR#*OD)l6{R6K|dCWxV1lV5XE(pv%^mlqq{&rPsje4Zs`k}gfQpc zBF_{kVK*IKW>mxA#4x?NjYL_j+G zj|Syn`PUDsD;xM6`V2@!cK~J;5LxGe({ANu3afFANx4zJtuFHt*H%G-lp)W16(+}r z9VNmj3=+L6R+ZRCO1Aoe0-Vf=!uzOyu==^12A~Jm`|+lDOIT5 z&6okJt;r7IH5u=&+K4Y`3HuR~TbpCPI{FQFTq9@t2O=6Z7Y!_qlEnazpERn2Hzo60 z)`DYP`}d;(Cj-_>&kT##ghUVGUi02@EPIsVJ}Fufe*fx+70?#5U1I~%5KgeEX&~Tk zGQEjzy2mJb*KFTUa?FL?Nyn^++h~7H2-b;JF7EbM8J8Q)1r6KaKDy;R8l4393>-bR zVWjfGt%PHp%bRtgbcmIqNtf4Nn;hL4*DBRD^BrdZmM_@h4&`u*ONIOF5uIM&@=j0s zdCy9YncTfsWfe9!CdoJ;A0ewJ*|n@>B+Iw6p)0ypsZcpeBG!kh_-emR z2-2iMCVt5uU_U6nbevk6LF~{ddrxc3z>~vw7OT1Q#!(LMQ{3N}S9RhFiO8XT$L#lX zurq2%*Cup1cgg08y-)c~z#40aQ}5+F09|&f4z$EDO&`;1g*P&GNXJi`LyA<^e3|!! zy9tcCj8Dce)0RWSz!w}cXr)ZD<*sLmdZYUp3XR5HYYXl<4MgTU3*Eq-_*;3yG4;bHdEwQ zmRwR&m8G{~b$i5^Aa#J;7rma8_;0?S-2CM-gxc~mo)tkyY~y#}p68d01_LI?${Jgt zri1Y*$v#+ajUK&vV8L*}I|^OBgg6G$5z(G9Hy=)}dN7aOB@TtsFyQU}>R6&HR?oi) zN=%ak<}?{|@kX&NG(?10M23jZ_EV030it?L@N0t-?7Bf+-edKi&;_fCjR}g*UR?j! z+HEg_SfPMhGRelA!P^w~bH+PUME^2RkxufV$$RTS=PE>1iUDtmc{B3%oT<|^nUOb3 zCH2GZhRGoXe4?SZla4NC=p?~sN314ydx!5OmY0}_hZ!`V>*r=SJA@|leZ*~rXg$5QxCZSZdz48`f$Yu5}5 z%se1>=LLH08v_NLXphyOK* zn!krVLKtl3;@Y9dk2Z~hNmYqKqUxHlK=9K_!=7p1sw+@??5SOmNkTAVi*GS?rv;KZ zUPz@!>L~3B-04}Ol$KP(l6+{pC-W<#!%Z)6$;ny-O$^h7OZK^0a#hA)DB>EFX7f^h zsR|C)jARydnj+x}&UYQ=L$eU``tXgMe)?Wxp zpf@_y8sgyJ4ff95ZS8NXc)G&ajf!&1?e6nLFcsyT@z8PbQw?VJ*W!r_JPl0RPV!yB zCU{OhTBtZ^thKMN-M%JKY#UQ4mN@1na(L{1G7lYwsxUHrtsZZ`tS%A>F;4C;_uq)3 zqp{s9g>tl=&yc{A3FR-XsV|4kQmOK-<|b|?=XR>Cqb|t942(SQ+=}o z1tjtlF*mLaE3LrP*HCA<5|ifQk(sxel}pVSyve^mYh268CfcwgL?#Pl&OD~NLlANj4zPIvOMebDDI0xPRpDIWhUz)#5b2IA{tL67 ze46=^>!Bb%)rrib+Ah5g#-q`y?_YqJJVSFsOQ9xixl_r5*x>b%`V6UCnrqes1v1Q72Z`~s~vef$S6Vt{y zj=}n<+;TVi0$|axXx$z(Yj>nwZA(&es?3?z3{a(CEMSKip#yVOLr?QwGZ`&LM7fbx5%Ul;aedt|(6hNjIupe*ww24t9Xj#uzNV5BUNY~M+@77eEP-^5fIn{fnN+O^BmcT$|e-XF8 ze5$F4X(na}iS=Rx z(rsF?mG>=AxRXi!$y!&zNI~Q}u^O#ynW&(dMp1v&H1D`BeqF6c0N(#nd(=oBh@;7z zRuDoMrH`(iAdFOsd!z3*%joI7HD%wFbO~Ri15wj;Vh!Ln^xVB=h&%8EM=W4-Fj4(T zrAm;}!DYR|p^O=_C8@i3EaN7>=L~;P)?OFa=E71*p>43|Lb?Bp_WcY6^$vZ5eK^$C zXTRtS!F3QgE#;Z88vs%zOxm0jzPa7Z|kGnkI$ zJ^&?)W6U8p4QDcdQ9=aIeA-8XK7nl5@JpEGu|R`=u)qt8p619Oy~yWp0Dv0gl&_fa zcO&8XwOWOePK8TZ*QPaEi)ZehSp?2)*nn+6?{^zV=O4ut_|KYk)a^-%k>7NjU@90r zVxa&J4?F>3Gg$5_IJOtvveZdOR`6T4o^x_hR$5;zRChf2^x420vy`Kb$!zf8W!U}r zPTjr7=H^9TIp-YB$EK4xj)Sj}Htt)ey!65vgbHQcgyg+h&6%r4!aGbx;p4@Rp?5p_ z0j~p=ct=P35+xUWPb*9}dfU_M--oA4_+Tr#3TMvjc=a;W3A5{mtL6=r>ye%tNI-p( zX|bxqq9oZ5nh*sdq($okm+)fzzuy#jzJtvj>{vejNt%E;jT==8o=k!*vw<&YWK#7m z$atbh+&!INk$4W`64GAp2||jGXw)``TXKQhO|i_qwaoL0%=twJNBIm|UKu|7TXt(W zq4MP#tOu6)_+*mdWL_rp-9Qt*$rss9!s1Y_{aB=>&3-T1#aej0WejQeQjf0aT;b*< zz*YK@jQ7AANQ&U^we_&?$)xM3Vs^eU460pN(cHQ;t}m5C5Gqb(jvvbED>+OJz(4da zC)}<6q%x(NQ!Gw23sBxqMx1Nu-wj_1Hj&8M9FQg8Q;2noKceP8xgq*@$J7TZU@>m` zOk>-g5=NKKv$eAz;^{xM&LH~ofZazQUMRMC7R5@9i6KiZPXKHRfkBV(~2 zQLbVly`#=$PXk5m!>E(f_LfLvKqG z6W#dk#@gEM3z&_w%_hqD)`H@c3%G-pkc4)gLbVukO((mg@X`3EDX2*I@6EiUXRecN z3A{IC)xB{O0lR_1%kzaP)p;ig<8(N@)Etl6*tbn31nz}>@i><#l16iKjpC1vfe~}a zX<(-*no9Kr&HVEHRfj`Yjy@?j*fU-%u|{|J`jG}tA>|ZWHN(15Hi?S0r(%1;*(9H>u^G95;#qxZ zMo{LdK69&7VHE)iAB0KaV@&r5DTPBY7L4F2^0N`07Yq%tDa^j8{LYDMa~9QMGK@R_ zSWd=~P2;d`~tRr@TV3zI#@D$Oh8q{m!f0qq$^m5*A@P=)yXaA+{zx zVL+l76H>x%yWDCrHh=rAozvkWC++jzmQ=x78ze5VhKbklnoUNgp&7g4M_SBW#%B9# z!{RyG?rDd!be{yhfsB|}624DtyfEWqjC?;!9TDBSA*cJs=ss7AwEwc5i$+S@etJnP z(TZK+m&n=eLTL?`3;13pfuT4!IC37Er+xFRIA<*UME6dSUDqU_+oIowlb^NjCOA>p zTWHxuzoo~3pRID_MsL)l(Nb7S7FSWNOeQHQvrbTl$Rg$&a&=m0*_VHVGR(eMA8NeM z6Pn<_&@2>hito-KYDOzNn|(>=)R4S$DyGAzf!fbBK-1{3kF*_`vyR-xO!n9B(U}S; zgikFC1lBqCd;6?bCa(YSI#m6rNU{baNF}mLU|i0v^*@}($q<^nw_l&5U+xNO%oQ^| zFMygnnP6CdaEg2=_!N+sJy*B*A+>jYJjt42^$Na`x^|`$i4uqov)Xoqv<=Sq7c+Yu zkufYV*qL`#zeU>bQE{5=mkPSO;cP^oO~J(*6Bd>j0-lb@@$X8x-PcKhoJS0Latbb2 zHJTQgrdyFs^(G@`UM9Kl?~af2lq>XHb=!NQ8eeB9&~RE5>9YDSjy|1!#@0pPemfZ#x0aFNub!3%@DgA z2iC7zQvvjmaH%qP$DsaWjdKphdj=|y7* z&vp6nT%cmH=YbI6AOwA;&J{ZuG3fZekM2OVRDiYKn)A)Wol@Yb{f$irq)aG%99e3Eq*XS4j7?(l> zJ#ok;VRTR2xHzBz?!ElgJ)2H6lSROQ%2@} z_R!mV0Tqz`dDK-K`Q_vqi{Mz{5^nDPU6jXZ znZQ(jjeVc0mA%lZD^=!qezRbIqY#Ehv?ZPy|7DeOze`McAtqlnJ!sbZOs&f@v^Tk6 z-b^;M-P$T2vvH&%wy(2{W~$X`Afzc7!QTKu9vxoGHMcmiG;y`J z4#umq2x}7DhAX;X&|pG+sE4Z-!z&u~q5;s;8~jvi^wkUmvj;-r2TfBW0-vq}98*jU z{H)4SGHAOqcPsRbL!T?G1`(OR>BJ2?D7J)WWFl(-^%4-1>zCK>cAGdy4Hly(GbD89 z8uvCi%lE5PYmL0vzhVbRIR@WFP}IecC9S`cx3A_pXfiPOS!DK1&j~rdH@{K%Ms#>= zhs#i2WDYURA9o&fa9GZD+=#2i-t1p3{ zXFv-~N(=(4*0io4d&5?|ciPcz?{icV^N!fo)8WzW96@D0Ug5AP+0wP56J2H96DvFHoeKlSbuTn5 ze8>!MWYJR%FVB!#iFv|43zAK#8e%A@6TOcQ5#q`9e7_uhKcaKmOmA3i-Sfr>jxIuv z0CYJTC_D}9RRecXc}AMi{CG{9()4HVllAef%CZSe=GrT=!8sryH-uLR_SoZ7&;Vk$ z?Q0>^h=$06dsvclI3|$hLAwrT1LbR(bFh&*hbhcsWC7HTBR=4|xOf?BDIq0gp&- z3GgW07OVW_TVEzWP1H&4?dhQ!57D^Y)jkt4E||`A?+jtocS{3(`(#s3S_T4nDU-?h zNF}=Kbq+74|0zwkUL~5~RywKe=TMukKNvu~pqd?{m&Q=icxA;~np~|E)2y)|0uOHRpV0{Y}W(ycQsqF69H2*?4KJ zF0--Y9Zsm1miG#smIcVY$AS{^3{k&Bi2hWuU-MCZgxbv6f3u6TZ8Wfcx%eF5iS3Qu_F5SUs9Qk42!qDz^vpA@}7QL zv5E6>Y+aYkbPY=fv88L~7<9J%#ezu%JEW0$FH=V9l~3;Msd+JM_cndHe8hB$Ub3Y* z^o!>p#p)CuxmvSqPYPcZXAgq4r^!=ATt}!WrB=$_EEtxO0;E%5-0_KU{1Bkt9LP!> zs6-E{<(>7dpT;(a1ifCIc9*BzNo#^LB?Ze3-*tyYg}cC#1Ub|MPBOKs>4#=_^$^mt z2=Wp{Gni^OzH$)zS=cYS4Lr4;q~eq1q4J?BziJe`Oramp;|HBg=E_)^&`V(Pu?Qt0 zp)C#6Ca^Rdx#%LJakux}TVMu9H8Q>?5qwt!7)#RQGBttG2)R$Ha3aD@uiO=|ar+y8 zPU&$e^}0=OT>)EgGv&9=gCAM19~EYfclveLoO+o@Tos88aX`Xvc{Ey#&#bWzVjpNT z`<++{DC8ZV%?^DIfjcA#+#}%!=Ir0mg9QqGOlvEd9{Q$ctX*@1L!{1vCV%ZMaf>K` zp1!l`7yfMgp`5J9(ql&TI6tcPiS4&6?bfL|iSWBPT;&tw)+x-cRoa@R@{=<705O?; zS8!`(phWYmO)?2WkUYs?dF77(Tx}CnfwT*vhnH;8g?L;`wrRp$J-}{dcp)~2&WMRu zwxBg~a1w`X*8^ijQ8BykJR%qeP(;nTCPiMNc~oF`{yFv2dhdQ_^BIE9^>FJ~irW56 zDTx(IPd6H3JGzE~y6lj{hp|&gbGS7pLZY}^@Zq`PeDdKt=Q0WmeCv1Ie3w6EC=&C} z5AOt6O@YU5o_pRt9lvHtoa&YuU0T_xB%`!@6rLIAyT1yRqFd{n6&xG!e-T{PQ|(OX zCYFt34Gqw5>KFo4xfqkrR;b;J^4%C;6Yz!2Ok|eviJJ@xF7GyLbXpNJ@3~7v?ZwjD z(xt)~^lp`KQ=$PH;L{ZGk}k2f(#8(Lk;ZPDO#0CPT?8+{ATLEDn{XyT%ap-T-o}do z*yoyNqT=37%X)v!6`QukRSoIY!n}icI6dL=X|H*roNRQ4?^I;k+$y;~pyWR#fp%Coa zbJ19!t2I6?7Opa(ejuvPXnTx(g=Rd@Obybb{%ZcIL-Q8s#LL}b^6?zkVZ2*{vB8FP zY%%_cF$sCuscmRvH*g02yoAYJ(e&U|*$26uzQM9PB~U;BInFPh>WgISZyq#jK(nsO z4OrBM3|*v@-iM>;uR|+y-T2a>f)JQ`Y@)UaW@^K&^`-4GJw9vxy5sghT>?wdkxP|6 zdt)Q*lH7cN<((P>m!5AOoW(g;oamds5C>zzU+!yG&WAZ0UtdV3U|%BpwI1+qF2UGi z){SC6WWRHihK9_=y5Nw@JRPS5ANO`y8{ZWS<(KrBPj)?TTIUm<8D_;a}=0lGd=AOYf z*b+K}mi9!+j_d}u?0P0I-*}Rx0E=&|kY(AFcqkmPkweY@Ssu{Q+c`MIYq2t|I$Gp> zZ#qjwrF!94gpHCb=ZGw7_SLtze;8QOA#@$x9rsU?KPTZ20wLSJEhM0{*S}AKQ{F60 zUiaS^F>)ejsZzQ8nFoNK@jdc3^l!O+LEr6uR$kgL!}HC=IworO{#|`4@7kMopJGyB%0-KlM27t^1v}%8mbor{Ud4zq5TGk zdgiQkmHibLYD8uy%6<`pfo2b>W=8{yj-@hgzs}-V^P7gtaR@s;PW|HcY7c2F*&cc4 zod!+Xo|w6zuu{ysBRQG&Te_K#cRCn7DlYWgp&C~)9-p4bE*xcxg_>s#*V#9G;|?$s zl+Ck@TS=Me;2d;G858zyu1{nCh#A8pQ&bL)t?=%CP}Oj;%*XeE#V7^uMXR^(yoDXW z>Jq5NJ|yF~Ddjm)!Jhipn+i<{EMJdYD6q;lS{0XElV9KQ!-{f@sGAEq8m5W3oALh$ zGks^wCxz1cnsJi%^dkie12(jMyq=w=CZQBs@eBzx_&k-V@;~*Jk;;*uzj;8qQngH8 z`kW)O%r>=9`71hh%0z37GX@Eqv0a_LAopa&J)?p>;89#rApO{U?QyYS7WIfG3_#be z9Ok=UcIvmAmeHBtIQGN9)+()mlj@D~^305^cGn)1+9ct`T7CAAjtoezGWLbjy+izx zQcs1^xW`nR?t_n$3~F4XiqiHiTD|@Qh}uorlJK0)Bt@$w#?G+&&L{D$?DzhM8JR zXb=OPw!SsN?hST71O%9PZ#6H6#t33xRtl8q++Y42liRhQu$mP9vY9d@iJbLuR~?K8 zQ)_^eKbKoZ&Z#O#rWPZAk2rcCug(<5NnE#w?j&UG?nYZf%_bMmJ!JQT&Nnygw(TAI z&W~N;j=w=-HN|-D-CCweB%T19qTnH>8r%JC$>|Sc^LgwF4sd!BK97P`l~!TatsYiQc*2 zrb9N|Zn?Afy0eMOj+87!H9ofnq9>G)W3D{w5x=y*{!ytIlyz@L(;UfsSY7&Izl5bQ zqYc^sZYqLXLC#+&i?{rW*z`a;`cB8CFN_XROIdT+OyE^V&Yj!4z>m-+#M+^Br8E+P zyb8z95FtZD(qTLtMupGtd}c9zUd$UlaEl}z2AX9JHgPG01c&HlzdSMeNr5kcHoB!) zViX4`icZ&Q%)=8T6d*x{HW1$I||?49B# zb+1>Y?(;|b%OqLY4b9shOG$1%j0@OHl=SgSVGg+2PZ7w9R0V7`Tm|^dE%(bU@{caK zSWbqG9yha@F(9*P^$O>MH*l+E8CQflpEkQxdOyNwb;6v#_$f~;gb7DUr1)s(rW!e( z$#NLZGuXeof&CQVG*Ts6@4XbGUklOaZG!1(_Kn$*v%iy^qw)GJM)NYFAC}YU(=@JT zO>^6gS$-_sy|UBE_FPc>@N3JYclLn^o^hzPDnfIO&+|ihVsx@!9TzC14f=l6`^=?c z(8I6mGuhwj(c#0>htas7 z_$-n`TkAVdD(k9~pVBn7Z5d`MTupq`l}cbCT%pc3Rup7Jlc~QHRV|ljkMahBJ(}L9tyUc#_ zrO?%~wg-R85Ap=X#?n~k=Gia5kfG$c_nu=YK<$1_Ajf|4zZ>=6o4pNo$Yh0Xw zJ_Qj*FVc=F?60;sl5aSxSkD5Qz>A30&6U>-#`6wZ<-$H&sk_YVAD`#L?{DY>>SpP1 z=r4wT^5ZBFjiez~{ay$t?>v)E!-#9oI^kYeL8&2&ED7k?GrIUl4sohx^`pR~$N>!K zlWo_bmp3j7tMrU8o~AkQof5TP!OW2b(T`92D1ksn=HipfS9;^-wriava#-w?vi;tS z4(h-))5b)fbP~9q-v3PBY;lyt@+z%qFAz3%Fl=>Xpv3QLf?3q3H=^mP(=Tmm65qYu z)|chN8|B(}D_nLaop3yISNz+ueN*v`2dBly81MfQH~zzekk|Rt!12C`*4yRP4B1Km z(s9Zvfg^{wu)13HrY1oitRT9;o-+#AKYDibjpgR;@W$dDHNK5b@$M>fOdx-S9m$_h zkYZuWq+jyf)77!oI-**kQl(}Ww>OuRLAVuP_q+IXdUiVpCFK=)^};Qfm*lR7^I6D zlgraE^T}Qtsw5v@7(1A-uORmN(gsrh_G4 zM-Rur_)3zo7izYqwAw+c{E~R6bFFSLr*5&uidv-U^G@iJQaz4Fgt9TssJ<8IKikPW zCIs*xSS~ea3kA5kdVKxRJ-1r;Sh;fC#IR)W949PkI(CJNTLg<3l?BL{6ra4Y&iUc! zO^U*oL^h_Fw~T^%-t!VWXT_T}d3m{qzY@IPHH%f=G4g3?JL}tg*C^+8YsQ-+yzt<`F@NPiQ=HhK$)48fVl zrblnZh8mK%$JNYdcPCm(9!?js*^lK`*mu*3>}FR>x0@rb3=BRE#CuH6OTSmOIsfa( zs=qthF2!fS5}T4TuB+3>5%j{s0+w8J(UxMfy78hlckLT7$|^@DAG|^^_wVLx>ck0c zy?mP6BL!Ic8bhn^|AcaYVKOAT>Zq>;hxAju&39o3>K)6Jas|38Z0wQQ>jH=|fmTZ> z=G|luXJd}dZxFq}HI@!nSHyRXk5`#_1%pcZL|v0|(9^<7{5_b-{FuBXN$a#=NiC5O z-c|PEU-}bR!K9w50Sn!q7&Vu*(w!mvU$&-#L#iq#eg{vqX-~a?M3FOx<$}}CaCzTI zjPb(Qao?p}7*Ru+NJ{K3bfm%c#e4QCdeW=Q#AWBxfmGe+jywLDsg zaqYf54$&6;+*Zb2(d#=4XtH+6m6i20SES_V^#uNSO>a#eTa`WvNh^sd{(6H*qvC|?6#~6FJIb4< z%+P15!n}0)R-?-%FBZaI_D<`GPYq-kBvn2t<&5Wd7_*?QdnvL`d%ioHNdp7Ga|kCGwu%Z(g68&f5l z&dw4}*CQF0|QwX^AX0T1WEOk`1Lc(F9>5hHWq zFa^`h^@~~|YCjLtYC4-e4(oBcAiyuRHO{B%01ZWBYe>Q)0#7A$|I-Z+Ee_j@0qI9c zdad)+pbRLE_Ik0UN>ftCCBANnDMr1rM92el^SO1w57rg9)MA;Ei$aQ%#XdUIxpkP* zffXx@6VuH-`nXCCsL)eb2mOeWCf0en);Qc+>e~8(U+J}}9TQ({rY&xaPQD-^Pp-ks zKNHzk+E2l#Y>qfCs1S=g@9dSR%bZG>^T2GiSKS|J@#-8r16CK)sxjs_9u;iZot0MxJ<4WEWc)0(ytGy z^IDA@MXgMPv)gB{w6=rodbUO9qLn=KjlG4ROzlKfS*$2xFr<<~Nj17OVVU3~&wmAl zD5CPeP>4UE5btf0zCX=~4}d)4|T$cwy6@A)4<|%+j1hrnn8Va1_so~#B z-H;C_tNo{4wU5m8rWuU(C!Amh3zA)`lqrsvrgz;{pXR51w34c7^bqKM6Js|;@0%C z8+ds}zMHMF&W5#)1C$x)=M04h9`QAlJ9dV*Rs@1ov@+u3zuA*)VxxpfpOC4ffGFcj zXH^_bYGkGbq{}Ok+<*=i9CkwQU%}cE zT`3-SwWzMpXOFte+ihfG_cEcpkc($;oxY|bHRu0(?Sk>Nhn0CJgPzntE|*i2^4=#Z z$m8>ACXhyOubfy2IQP828uGwLYJeLDN1MQe%ktfVMb#cHIbcfc3{I6y6j+BRB&IEn zA0}9+4MOK|k98C0-EMuWmAhjx5uRzpm6g|n(oqBY9_(+jhVD~>0$o|Cb%1ldY(|gd zlU}^Iy5?UfB$Wtu0lOcEq`JpHTc3C&DOJ%AMSOC=ed5%Y*k|jhE**gRdNc?4R_Q6) zE~ZQ)52WAezk>GAwFagNz%HfwRttOoI-1x^jxYWdjdy+$SpsNy2Bq*^T35)L)TGE4m z19j}FbV8o76LC+hkV{#$_%N)Lddix{#`?8jjoMU#lK>kC&Qd*6vnsWKA8b*qslnWV zn!Yoho7`2suN8{2qFF$wwL_~hQTo-32Rz=P6>c=a#X&IIaM;_yAiMUqL-lOWL^a*(A zvqwBk>ERSIY|7coUtTgVa#WRL>K0ly>R|$1=LS{z{wx6Lw4l!Fk5pX0DV|kM-@$Q zCqK&A{gwt0u$+>?qkC5vHX1e0shPnSNLA6h_DjnK?u~hqJ>HR^CUQHir!nN)SKR6JyzjGX|Q6?~J*w!af1l&d zW>QaF?m*(FYBv>jpxB5FuI};7lUGFAjO0t5{Cq;-P3-ap7d}Tld*+d?+lQa_G&)T6 zyA#=ASx)}b{0$mAoxC+Srh$a>j!D=l(K(s)IHLQ2CFFakrOA|GeX4!Y!D?xo%~VNx zl*`Iz$I?3Pte`P;9`)_o%f)FCyd2f2%VLWojcMbT;K~-Ar@14 z))g9>$&ukV&NI~C*d*&Q+Ij(~*rD9#MzlVfWdJADg&SoWjeD*1tFJj#$QzNWv(ss|e?G4Zp`G?QQelxVs1F#QA|ERkw$IO{3oz zH@Aco>I}6qMybJ{M%KwY0{hlSrBqf51jVaSec3<_ok9^_HFAmzr0sYHH$azfGrSkd z-g6%qLg~Z^!Zm#K8lX$2L7fB12JVin9N1@lQ=F@Dy8E5j__#Z~!a5-r!aS;Q5A{*0 zc#qHT;e|&wUTh3HR9>pwFv2LJX$Yz2yiY5>xo4^G;+9+|w`adJ6}*TmgA;QRy9#WX zM-YMLO*zfvnB0ym+ulbx6<*FLbn?wYw7atz)OH^Cc?TEi=cK@`QC4sKGEeCz}MOAJH2$815NAxl~E0ma;II6Y>~*n`-qbWOV?qq|#1^koD{%v{_EF zM>z#=V87V-3%g4V3VZ6r?R`vtRg5!kzfx?1)Bb2ndo$aSB1yB}%bo(6e(8@R?Xq0D z`%9Pw~z3c%KOHan_#+f^cAYPi;rOICQ;PHtxvNcK{FBZ*l z-=2VBYy0xm-)svU(~dscAnKyZQH&!wU6QG^KfR($Jf^bRd%{fV4IJzp;FB37e38ht zS@ozdkAV?Ux#5=hlTwCHAZg=tCX zP4w=U+joF7rkJpgx4M`jisWNoS4s2P$L5Q;2kfFa7qvEX&IbyEXOjhFnXyiOBV=Z= zVivD_UQdpiF#^Et`;+>KUfnwM0Oef%m# zfBm-SuHC^u(F*FMeYyXb*x8_|bw)f(4K$G>k=sX=ctugHd+_Y|TFH={wOGg{cXpdQ zKU1P#Nr*80Zo{!ZI_s{ZPK8>1DgULqi=WSX0|3C*b-lZrW_#?HkloLFsGre89IAg-u>FHU^M{S^s7Eq}tNlIm zf6iu+)(ukEw6c3P0&sYozJ1EjBtrNW`RTEk6Vr!#9@Y8~NGda%$LR4DZXMR!|Naj) z9;dsD7jPgS|E04h{lh7FMjwfgA7Dk_Ev@g)$Db)?GI&9MS#0kx5BsP4q(iQ}-4s{0 zUD22wfG9>R^?keKK5P4PXaD(Pe_ui%@dSVe{4V<4U%um5g*0wgR{sHv8}+{a-@oAB z7IQR6cOQo^L;t71R40O}SxKGZ1|k$g|6|xgAs*5Sj8YGuQT;q!{##f7OT!=C)&D2H z#ftK}w>HMd<_kI#w$e%!jXK=6ltAU#+GKEcmg#Q-?-AIi%= z{BeIEX;O`i)KVDuXPoNKBK8lDd^f@V_@Up9g#YosB>e9#kofYiyzpt8r@u}!Zw?k( z_3yQhjr%EyB1iYUR~P=!uAf|QNuT)a>cMAw;SZj#;ttY{%5&6uJNEB+lu7!9HI!-Q z7UJ-P@=&w?^R)d;eaYJF1dab415Jz46CtB9SD)5s6e~ zSNU#eSKq#jsH?1RYlW65s{hRQ|0`WPBXX@QbwIz*PVeVI1D1b5MA$L^0&MAj%Bbhw zITEtvgMa_VJ-nuXBxveD#m`#>(q7~pREP&rt9Ithl?+;S{olg6? z(BG~|mjse_F#bQV3#r=ok}|&ss7SRmPxbV2D#9-KaB*qrY2}!=M*=@q zBcA@`_kVGfE_zxFxSIX3H)SC-RNc^_*v#y=s2b7a&L5a6E+mx9nPF3=@A7MNHYm$- zK}=tJ_@ZdcuZ*+PUKP~t>Y_9}l{s#`(G_}BIp|3jGkk7j3(~}y*CV7&J6X_1I<@~<)%)W z4<7l`Ez<43LuAe++w1?>T|9YRt_22oUw=Os5ufP09TR{3J0bSCUJd1Gs&T;?gb3g9;e}okzC?%uG z{++Dt(rKLZ#P7c%BC5>!YNuHSCM%& z!q~egkl)@Wg314{(X)Tb{6UewM}Xv;PLaOxA1Zd{YCgUH``CW1&dF$x+I-!Ra3z0E zib$HnsqsgbWwwXuu+Sv!LxYb3MqFv&(q}q;dX96armk9A({b;sZ0GmV~%AiTVeC4p4C%*MBB|(8G$?0uTaVjMJi>I-5J=xsq4?ntL zF2%hW%7O}cEZb*6`#JypNC6Va{5g`Ac>Lly|9ATP2Tou59p|!}gmc*}&5wA5_ICw(kxAnAB8MU`m9~}(=j)H)a5=P0D(aXhhhKwG2mf*a})xlP=``WTc zDEkF{(1}N1g7y97+u=g`$w{aFqP)b4KNXxW5QF)J;l2Pr0Q1rtGYu2vsa9c+>c*HK zTIw1)M?^-c+ge(_qUl{c_$>xf^|VyS$3tDl>{+{re9}q9?(M@IAK%h$21s^X!YikG zzMP~;-{7@D>yTWjW$-!>#TVpO#mdD!RlH zcXQ~58#@7D1YllZlFZkkLTNYEyV+*quZ&%WWi>EI7BuGg&Pv1m@<0F?pN#XtHA9x3 zo=qpgLk$Uo(X#>M@d?+~Fl2tvb?Jk|+;-2+qVh?+5pW$tZ)nlMQS{DZ`i8M%Z}-6B zdm2aEM;sBGbfphCT~}$X0nf#9Gq0AyJ46eGsgQVs4DYC3rM>(izkB)WR+XbxaDLeZ zT%&+@8t?O0b1(VMV{S|#IxqHXx{d1C%5xiz7}Qo)|?v?zt5@4 z7A=-o?E{q*J`lcLdwoAoH8<5YOt|{Pn$2ML?bX;=-P?)fDP29zOOeSMF!1}L&Oztfpx5VC4~Rnzsmq@D=My(;p4ZQ^~+ODelwm;0Y4q-)}(-@hbfyf4$`#WGKV z3oodE)ke`!Ul%3TuQWzjZ1s>2;3@BvJ*^8iS9N2sn&9ybSBULK`dPQ{-5UU*#8U`) z+=hh)RuTC%89-_OKKP;u$Qb5}WAPr2SC4ug1O3!^Djc=Tu3I;Je&T|IbI*QcfMZpz zgymm6U5|@F7L#JW74Wgrv}iGTJJ*~`*VYI4(@GF{*=BzBKzw$h{)o8HV93;*jBl0n9&|jloe+3+^bF$R7(z&fR^S` zD!jFs6%0~IlI%hDO-p5dK1a*)KtQV|C57g>GuDcFx60ish)^%24zz|Ptc8`>B37;nR;<^gA z`;sw(*kJ0Cr{!C~Mi+n3no!6l19ECL$ zrNxC4*a9?C!&z@K)K2BwT9A=_*tOA>2s4`fkKUBxu8nA1vkYEvQVL<2?lk-a9h7qu ze6r7IAx>M)U7B_O$tL8&W5vO%<3<}{x`y15y$?9`U81S|O&z5+yVZNq?0W9qZMkU$ zYEF$Z329eF4?gKwC}*-Ki>VOn7q3nZemy_LS?U279!OQQmWfbAP6A*G42Gr3XLI+5 zrAif1#Tg%hsfsTG%8hn&%E@-S8U=bn1p*Zf=(?l_> zOlkF?l1BvIKA+4{he{l1edHUB~EIQZ^3eD z?TPJcGeG&y7mmAi^83Dv$hQ*81{IZ+3)owU1uw%rzPxjf5xOr+X{R{p2F%@xXVNxy zDsR+YT0FRwlPjl_kXu-41TW2fkb6O4b$~778#84ceDzrv`@@_In4M?OESOywuCFnu zD55jI)Zzf9oIKqRvWDYu5S6u))_s9^BpVNShb@njt6K+>m^-FF8>2B)BuOvSR$2Ub zwC*+BzUZ^zCcXzam7n`@Q`OiQ?tIsoetJs%_-rhFAO1|-YW(#qwl=82W)Las9_4N( z=lV5Fc^tmy-E-K{i&S?mHnW6pDs(c86#2D`_kXm{`j+E%>-$0d-KB1aeJa5BBD*x- zkk=p#ilf}U)?$tg7qoqb#LE-fu!@KdG~olT&+8 zNa(1Q_B?gMPPXwV0D$QH7=gRD`y0fJ>5SaUuT4TVzJkl(4O9*Ydm{JKIuz6Urv+am z*#sQRh=K2FTuO~6!S=21MZ(*&cGiWwg$u7l2CGV_m=`zC7%2_Tl-Kj@u}!YkYbSkn zSPw;1;W7uB_v61(tz|Ja#FcNRUrK6-Ss^>S+P&+6E$0n733eZ2#p8&cwRYae#h0!R z>!_)0(p$_5_UQ?2+#Ou1v&^M#l7B>g%WnNLCi#{NH`tn8>SF?gM{Q$p?t|5DWpD2) zVkhb)7CNWDN%GuKwNCk1e8p4lLA{F=n1E?&fbuMr4f|_AcG6G0xqCZzw?9^ZcxG0R z->(VYGturT<^OgiJ8WXvn#^W+5A10yVqZqUY&pSJ33l>+bsv|!bfVnQ@BPBVv0ZJa z93}mgZSm2&& zc=3Z5szXfsCPm+RVGf*kqC|a{+dlX%1o`dGj4@Of%sO6?0))4|v^7ER7~p!-0*k^!UP}qL>Lp>nROD6hWyu}FTc`!xKHDx% z1d4aLGvCj)NSw{cio}}WvS15Ey^Q5jQ{}MQbX^W zB;K@{Qqeu&uz1aXAT6*ovE^kGFT7Y;9MaTdC}kAf#3-g;INOO=t60h>YGV82gB`JjM)g-)Cr z@Pv#lK`3B<61?9h6J<+n!0@fs!mQSB3IJTO4FGN)iF#rf9IuJXM3J9idA6EGWrEoC zvOj&zVQiVpeITJ1)uSnQ7w%GYP54_~4dc)??e6sZ`)5hF+Tt7hsw~1mWeg2r2A2|% zs$k*UD&g{H&`a&M+pPuq7z@w&llphLcDsjfq6lpI)em%HyHn=eL9DMnXPPl_W2Wy6S2V>TOKXRKNwzBLe-g4BW@aN!(s-2b0a$3d#ObNTBqZjGK#)MR9-v zJ!2R4v!>1~536bo!Mjw>k*S9DkH4}>s*U9>cuf@|86kW@Cp9057y2nd*&4Fz*{Tx1 zeJ=3qAIrcWJu?-1tmFs$qBxJH-sojJI)m?f>7Qs#mZ7xAj`tqm-93^I%tQEzHc)LG zKRzRSxVYfpKCC>cjJM+<_m9i3L+(bIG%33~fjB%uU^$Ns_@@Q}h~Q#cjQqI4nqfgZ zR?F9>v3cvZw zwgxeXxX-iImb}gWsI*9LSDVSNR7pB-&<3tqs^?L*Qwe%GZk}g)n|2BAR4dIW8S(X_ zXe;M|Ip=l0ljqD+>|PlZh2+(YNZhM}P{s5y3FAc!ovg+sCj&579bp6^e13fI{*=ZX zk2^pQ<%Xj2K&fdjBku>D*1oZ(4JcwtP`y;qL)g~@W7ayFm<&)&*|KZXNELQzE32Lp z^!!|%^6*XlWvoM-HS|Gc+u@Yo7aSf48ujN~;1Y_L=;^iotE@>p`HjuqZCFoJXT8G zY1D~(qHJ99=B(mU8xZi@$f)33Wj0KhZu{cMb1U0(!l&B{Rf>R%Td%=VBT_Dpy->KV5o3Qh{4Owv9!#~eKt%x@SXqHvMKSmlw!w+ME-p`gdvDX@ zl=wi8Y<-Rki!M@Ij#gvyvNEau21I;20v^4cbG7Upg0ET&7b}*+cV9b+U$#9_WbS*s z0UI-j&K+leHr=7BJlrR@xB@QuwwY#7>Gi5%0T%c*5D=4^&oy|A^45r6tFKv`Gf}`E zSgUOXggv0sXNzC7FSWEf!}8IT$Ntp(JPkl1=W*p4{jH}?XQ?TaeRej9*WE}+U_wdm zTT_w%Cy>=I^ZA0_P&_6yZM|9Q{O~hkzVVbb$4{8w#xs%0f98_Ra(us*D3bqHZPIYx zY3?fM!W>O`xa3RA9gazMqKJW7pCwDHE&ZV^DLJK@+IzKhhb7w zmn5G^JrXvOP%XFG*@S|Oa)3xCFh5GNm`KkjP1OS#xH58VIRpQ|vO;wx;bUh*+tt_* zYXAEinWA7mK5b%vWt@H0K|uZHW)jrw1L9#oe`12I>LDE|?$T8k9=YzX(`S7kzGRS< z-G@jysy2J-V26B1q^NO4i zk~LX`ZGhL;Q#tngPBocaydYTyDcVdX-ljx5^*T%$JNkoQ#+2eM!I~58YSUIPsk&W& zdwkNEYsT3zM}AdDElBpatYywIfo1cYu(EspFWv!biN^+P&*GLTsr}z4TWI${<0O2O zty08v7moIqC!tBl)6F~|AUC-6l5BjP$-nGS`+ z3x}5AHpjAcilSobv~!K_%RY*^TQ!G>u(G0A!(pUuRmWH~8mN|9QR3Abr@TQ%a(nvV<@}eF?9qS}KPK{hn34Tf z(ApDiM%J>~N@eO7_b0q8G@>LK?1x`kDcVS|4&dLK+U@&Y|$kp4Wkwgf2?(i% zfpmR@m&;k{E#|GVXrO&|c~V2$*pg#?VDdusTY~P9wDzwqqDDHJ`G&gHW4<4+9JI%K z`QtV#32+qV*YlPW5PcPSTWC1-OtYOWsZ@f7Woh%+$m|r|B|5sIZjVLu)wKsJ)UlU0 zB|7XLBvx?yS|BAGYG1qOy`krynBrE`a840?Ue9B+MH#_zb%JwmH#7z~DqOQ{?GDlb zRCvKt4VvWVtPhxtL=rzj_X)W4$raSt1M5yleTh~DFWjvd)UnT4?dr+N-=6pH$}N1T zdFWLNl+#peFfETa5g&CrIz;ph#7NaOUwS%%8=1zown`0bSrP3`UpV10yg;-x5$J}F zwH4b4O0!+DC%DHR?ud7hj+WuzllChQ+$ydm>6mUiMG2lfSLDwkuiEgKf`{eGh}K$z z*FMNFWiMm}A|IHs4Y@R#rv@(kdM!Y$VYn%S+bCr_(XMA`Os{XPsP}kP`DyMukXR56 zwH5CG%aTD9C)wB2DN=K0le)E!i2J1ghRZzHvbM-3XD>)TNfpqEn(~JO$l6z^`}(`- z?XfTx$@R^~G?;!A-tP@0={KKhDiZWy84V3(zlzuK6MlKI6}oBN+$f#WA-{5M(uA6L zIbVH8pU+jT#1ZFWc93oI+RjLb zVUrzORinTnxnJyj?JOve6Sor3ggOk84&jUubewgs-(BL>qN_3bN+^E>N(KyZP9b#o zm-@UU?L#C3H-=YLk6Wsi>$wEFv{JdAci2sQ;@{0m>MN@O4e;uOGgF+79Z5=ZTxgLe zqG;&_JL>2V9Dez)MzEr6*7Rq_EPcc47_k7?q( zJ>^PqdnNfQv++w$!Rn@_jqWXwU7PdGmM`EnEQ^`IZYje>PcnNd0ks0=g{?{ zH20WF%*tMptUw5OEUafdGMY|l@ikL1y&U~!afA@X_#iv!I-U=JS9Ohz5X+T z6kK8oRU0~7)ZSTw_(2COhJPaZhCuetJJV*k|km)THiA2rxVQvCr#}o+UD|_X*RpCB#{lKCzVN zn%2wq90qJqdE?nP%1CFY6qc+0rYr;IRS<(&4|LDhOE5CDU{=QT%IdMy26$$MOq`ec z(*3}_2w(TnoQM3Bx<`yj?U4N`58zwoJd*~}WSWJ%3uCA&JuH8l%(q!Kg}ysFW?kCkr% zJJIQt5tst589j=XSh+h1DiJ^Ul%`@>I-u{5p;e@k;Mzm?hnI?SSdIxwdA_77R6+}) zH714qUKmBa)3Ub%9cV2E`g%N@y0hj$H>1A|9=)pX(0L@iUw3bDV#l3CTKcs~AOVW9 z*Pk&TU??F4!pcqyq5PdEpz8d>l79(ilVFdf)18wA!!tqK*EWzC$hdRR24%p$2ZXu0 zA%p(9S33}yc|JHHl)z1|5ntudOia+fB!FDyQM^Y-6_lzJ0)|` zTC(KmjXL>;8-koq-;3S^)i9SFUDNTB{;n_#MVls#aT;YRJ z+M031KuxLQ>XdAZuIn_`7!$B@jUtx4NaMhUx$%Yjd z_42z#h5jT-CM4km5qc-j$Hi$~=q`Nf4vGN@F$Jf2MjQi{h&^TUK2eZjMOwPWg7l7h zbtbl`cHbz(71X2JSvN2F=OBpXnWL0TQw$|vn+*N()?9$LhRl{@(dA!zg*GyIxh4to z`U=+z^r*AN`HsgW$84RRtA)ZbFs{5iI^@eQd9hR~Ngvmf2x5quydv<-sM-_yRBs(f zgZ4@Rb`EN)f$vj#+7(odnE;_P>XOvWzpj-x%$g3+UyTehQP>G8_4Dp=i$B8#*(N-hBTT*24O!rl@y*5 z{cqxOvf}|kLS$Kz&V-gRTvKbEAHLG+;I5c-9u@WuuXuZ4En|KYhooGdief+G8eYw^ zl27HuQ^%!jlB!HMocbk>`}g!e>oZe_J_|o{TLnl_OcAWEnQNQVdKqDB5-syaT3|n_ z%ge5J+6dT$U%r0 zb|V?!9c#OG7E4!H{M_Gi;V}!U5)tvvG?6^O)lBr78Df$6+!7L z0s;ckYXC(-y7W#Iq=q7d-XfwPU8Hvu=_S$$U1`!gp$7;(5IO+@$(y@t+r8_({`UQM z|9d`9ndi)zQ)kY6=MCzK;x(^1o>zWo*KK5+uRyC)-41f~UG@oG{y~qR61aFw1m<;t zu6n9@hBn@a)ft|`b*on!2qvw*{7zN3%3(XkCP2^gJ?aGyU!fw+ST}~9{nijI9*~9L z>h>WtWylVejqzrPfv?Mex6GLc|q|1_Sb$U^|6 z%p)GUea0spWRU32?4ms#euIzVvnpa<+H68k@5Y(ysQfG2eo+1`l|GS!gZm3UQjfvI zm?F;_Oqix#;WE7qY0}iS#Wx+R#GXP`hM3Y)JW?f*pQ1~{{UnaO%ASw_KdR*$?<*

Iz%(h!is7YfAyH>R_yKds%0=8YmAdP^8xn(jMf@tMN_%hh zZBd_+JPcl~_J@$vt{u?12~^de(<5Q5ctSro3}SL7VQPK1J-P43(We*lvO( zf{tGfxH|OUuHg$M#4x>wWRD$*G_lnN0WF=1NaYIbV20T0nP+uNN~)xnX*`*`@l&V$ z)!zIVWx8Q~Ww>=Q58?12b$}>-qj%BF;(-@Eg$zihu3n0t(!HU>ed@OC_H49ul9zjq zU4K?#rqv1-3M!6BodnIH9c%3J3tuJ!_fwomdW|3%@kgG_>c!TD2Sm;`Y zex?SyP)3B^oiqly4VqC&i9M|58)%AM$c)6Zy-PG@rLa+b!-TxmkxKAmZBFXBI!ucA zhZF`n!}o-h!J`}g`BF_7cZfvj+q)Rmb+M8}_dY1sj-MkrijyaaCIwC?XDk>sZ zYW?n1jhpXI z3%x_~v>(eQ+>w^VPE*oo7V~-PS{}(HoqL)kEjmiK&_vjfn`|DeR179D+F(a0qE(^k zAb?sG{)J!*Oj4%Hv`V7$b}w6L$N}U2lwein_M--wkg;&!SVMg?kk*DOIPeFv{#gjq z!$M?0pVaw!>tf7sgyYti-cL!MxfB>K{;jJo&q}RF&$Bgj1nPqW1n!>I6`|cR>ZEV! zT(}w{(scgDr6+8F3Qb9a4XucfSjKm;$j9KLf24ANT>aHfypA^G85W%#G%?|POkEml zL&AwtPF|yWUP64^IPZ1Ua7ibgVwSNWv8$gZhd)x<^-9##)YQjEip;3Jv#p$pyn7K- zJ{0P}C+1V5F$yBpS^6+Jk$=qZS)60vqN)!ceY}&Ukxz7iXx8T*L#5hu(@~TLcE22B z_75Aw(5iEV92l>RNHK%u#2cptE7W1}m?l_-fYQ!k@rqmkb zKye(0=NG~^O~t-1X&gIY>$7;EP!aZ{`d2EofrRc0Nlk;UuI60AeyVnujz_bv6yeN< z$x`?Em-F@Q`grmhD|2yWggD3M;;1t(AJ49O9SNC4>>VdRvpCDo{@ZzEmFtZ;i)ooV zzQnn{w4s8B$6u-2qVnCw0Y?o)>cbJ2;hECTALj3mh=|>h(fnXdQweaI@yy3^uo*5A21e+j@3vCePeUpdGTQ1CFHfV|lmeBr^^S24)F7@%p#!88`P zdgG0pS+kWPz@-?iw;>kdLVSJTi|2Hwf`F4$^;xd0x#^;)Y*x7?r_*6X@=&~ox~oib zeM4@Ms2T6s>_W)r=r^5CwpmDFmqjf%`dO#wK^BS%?^`n6eMO9kTv0<4J+?Le_pO!G z4QMa&nG^rSzJL0X#iVg@!Vcn8l^fX}IewN2W&Yso+p5v~e2`dJ-K@aL2oD3_1nrk7 zChN^xfWv@!NHwQ{Exm0*d9{YfKJoTYGr7}IW-0m1qv?EX^460S>C`je%tk~`BZmE#LXqnEe3%BaF zr_AGvGu%&)*Ehex=o|sO3cGAg`d>d?5%?l~)WF1?&SH^z_T-my*&Z)RHw*>FYkl;x z3E&|(1|o;ec*b|*(#-CdH1Q+Ls%&WzPEN$6{L$f>E{(lr{Gql{aKYYzRKCYeg#!CR zD;qB@+d^-AncL=88NWnLrnh(v^t2{~`>lV*;yrqMfPSt3hx1QGw-;_q9iE~p3L^dC zhtIq`7a12vmiPE1D1ZRL?Tf|ibh=(JkttdZpWW6Y>u|kr=H3^K4OF;f^zNrVo6TZkRj2s=qirS?og3ANE4# zz6iT}1>Fa~+3DJm@$~4vnj!U=Wz$*9G*E~4l)Xek=-?AZOE;2IzR}(})M6rimMplo zg_JJ$lu$wpwMh0IZdt6$N{>F?Q;UOdbJe)Kz+H#Yd(}2+vVBs+B>f3IhCAX`M#h)U z67J75bCr@T7Kgzcp4@gLPfQtwQ@I86;F~Q&xB8XKR9pbz?|y@~a^y9j)9!Rbx?> zMU*O6-~-GoTp9TKPhEBoedR6VL1}j%fG_;JeA3@f&1!RE<&jVV3PC3Ey)e_oTNZfaDQ>Ubon=#=pOqgrik1pd8NQ?r)KrGlQxMXVaA=eY#o zxWKS`5>8S*hP6nd0vW#LY2n4je*R{!H37>vT%w(b2URi!yDc9+nK&7)$X1p!EHq0D z=h3m{J4&#S_8NfYZQHMO8gIt@+K0&n$;Q}Y`dA_f;Wnq79=IEXK4(ac# zUNkYo{(!DN{ry7)MStv0vhrqF4OsEj6Go%qIDs+wpptU4)tV-~!$6pwC|?tPmQ_%$ zuIid@cU091h=F2ytJ%<>f5A@kV1e=|XVpYt;G9+V+H;AEo95pu>z+%sP&^CK?Af4E z3HlL3)36dECsyXhCdFjhJ^4Tnl_; zlz!HBnDGfPq;rI}1b#k{qDX_GFLbDqn%?aT_KlUF?VV3NH3y)9##TK~)Wktc$~=3g zawJq`*H4+0ad@H!#qrE@>d3cKIZNts!jAV%b12p%36)%dW_kViWmgga$YE3oluU{@ zW{iL>6;EYnAp7`5Cnoc&4~InElRaHmpn13 z@IbfXb$I=x^Pv%W3p0gb_c3-3O+BNF8*|&5YuO4asIkYXF6Fkp64*soFH}2nRfXP( z8RX%UST)8|Icv@OA=NoThf}mcKu7b_MF28*{*tG~9MArYxZ+3YcWac@Rm_s54?PIjOUQcxXmI2!mM=O>32v$bsz=*4*pz%J>*Xu)HA-q-{29XUb=2cy49Kpv=m} z@?HFsfpg+o&(_Z6wJ`6uOl&|VKbQ|K5IH{}z>kQ}IBqsRan{ubdUxaN+b7j()XEIG z^IdG!F!H5-W%is#&_rxkI=g*x$8f+o$%zm7yP463BL@iX0gbSsOa4l|=}QF%EtNyQ zTD10Fah}x=y7(_N?N2AC(hVI5S=H6P$f4MLSJhRuCk`KqC#RnoD6i{(g4@r8S9KMl zK2qu1BxY8{$3gQ4xiEgqJ4LIE%cLIIV@ir^wh*hpsEX?ia~(W|hEQuVycc2zr_cV8 zWFz3&Q&^9!`Yfa$@gm8q*9JSA%`95v%wR($i z1XMH{v2=bcc>sGJAdreyZZO52wHLdjv29}`6&4gVW^l6UX2<|zvxsl-!0o*i^)5nM zs^631Iq$e%5Ladh2_52jQew7EGTxIv0OIC?Phs(wHghJi$&YEG#JQ;OaeLEDlzHPQp zY?rSHm0VBdUCBS`xG&1vXYU1%``&VF=QNPe%NPU^+XO83s} zs>{;Ogc9ZQ#V;fHNuBPgals{*_C$`+^6n}i1h&P@I!K^4O^*mdn^xXP3s9&znV~Iu^!=s16|DE3nk zLvmC`6HpEgy0X*z;SG4I7s`c(PWqe-i(J(7E;~t6{lnJtOI@3Vh|sT$5V2wuDs>m%TRU+ zAu?Ti{qgOvU1VR09^rtOF(>4lWUqiiLC;k_zUP>AXTVV=rQU-3nakH{i$!FBumg5Z z{q1KvuNU?!u^DTqRT49lJRd1oMJ3yzsJ3TR+o&&BzvIkwcJWhEc8c-28hba_)5?9M zX^cY?`iG?*t_RAU69Nj7wZ=tnbQhJS1 zIbu6C)g$p9UDuY@$?_`}(y3C8uGtS0C8fudbZIwv=~Y_zbX7j~YmQU(%u63nOi{1f z6-esiaJ~AWXuNxSuRpgF^&}+mStysdd7j@6iY2TiZ6zO7>bW1kyk$G*5SnqGM1pom zE6%nr1Xi0z=N@v^q@Ykr7rTvw&C^ujXlaa3&mnfZw)ASt3P#A=N^EwlI3d=h-U<9t zh>FL7%3=bB0As+W2Hk)@w|H(8HEzo^%4NC^^k9H^Vt}T+bWF3y&}}zVy9>y+052LQL=I%! z?`*h>7{UqTf;_jm@So~PSyeD%T3UvdKI&H%jJ(ZO}(}=Y$4A=K)b$|JCF1L zC(^70i=w-ms`$2{q{JVV7n};`K^q%Ztm{uu?c9q^wI&~CmRX9m`$Cz&0 zH+1z^4`@0+?$}JIg9gi)$AX3et#1j{8M0d7X5!>`CgfiC?rU=n`J(V@6O){J?mIV< zoO-PdMNNbESGU+%%~K>=U4h&+Wlbr~hd4uXhjX=+@wm~~J>oyj{(TkL=PK8W?#D~KuJA10&%VA#_AFRIK<8aeO5Z~a&>gLnEZhie*7BLa(EnpndIi;*|{ zcpfI1XgF9z%&&D6g)LQZ$U3!h(3UJD0CN}~-IOs`gxwc0r$QBpo;s3lpW@!V_j+7n zMyM8=nxm_6mIH3lPO!ZMb;WsIj>U*(Ljuv&Ihng?$@kslTDOLX!b9laW<7tYEKRfx^ zRV{P5cT8bBDM5RbK8(*upBY72bXkm#y8gKn;5eT-uxMWZk|PD z$ft~A7=LP~hZ$X7eolnX5Xnq7KXKuPOV(ukMrfY)hdEjy;BAi?V(s@bK%kZpKzR_u z^{}T8e&Q1&L1`C`YqRa>aE@j!Xy@}o&$QfBf*;CxHLL{p&eGyj6SlzI*TCK z&`G%0;`O=G#LE~M34nJqnq}jBgx3d@=jRpXgWc9H#ZynnNJlTDJ?JCrcdpxhQRJ+e z=i@AbwtI5cZMo>73{)PqMgvnV3 z)0AW$NcXZ#c!h0E6qd0pWX2tPSvakxZHFr0h&D=(@xE{->n-mPWGWtDn$U$;zIN;r z-CI%Juu0YTYlxE1WXrmkO?F-AM}=5K-F&6s=jiV5+rPeV!CEJY^vq$ii(1SMSg`cG zmnv&jeHtV2srm*JeH-FEanZRIB72ssYad-JZ=xb6TYbWwAZmt&cUq*6-3u|In)qB+ z78(+_h5~W7EWHY99!~NbWL8Z(O-$^$2WA@tL2*im&fwiHReIC%sEHj%I*&d}8k6p0 zdU;pyhVWzDTGAZbU;Jt+7de({wO9#jW(mfUee|Rs#;Z}BO5Pdwxw|E#Pp-5}%6J`| zzrzi@D1gh>XddIXYCfG=V5sPSc)-<_c)ZA$aXCS@I9*aBD~J(eHL~JEleFjE z8tWpCFKNNXN3`G&&P7^h@sVqVu|iMO@(~_AugOQT#dj!|VLM6ryP=Z;$%bL<>=a#2B9nK3g3x6&TS zuPU9k`H=3NK0}?pkl_W`p=As(7c%bgU}tgeNzMrBJYXX;m!G$TD?RyL6$8({${ELH zG|g4liKtPgDyS2@Uda}YULNG~xqX={Y-)Rn&vu|~4BGdK;`A-fRtW+m<-p*PaDAOf z0YbPlL3C8a&e_VG*=<|o;K&Pus{EL=o1Rfon|HC41?UmuO*5US$OngmA@L^K?1c)Q zWsOTEB7FSU0VNZ=cjbG8s3uddB*!xfzWJO|P-QmhTAo~C8pEJ*v{G{l3<~6ojGcW0)5+VMO%%mi$$?E%X#dDImZHcIu<*+Rf>Zu*W4L5^~Qcq~o zC11E-0%{XBwji^sNS`@|_IOCb;zx4sY?nf^>whUj7X1NlB$}rkTi8G z*s&b)U|L?y?gE{hR}r6&qPI!1fnnhbpjZ2=Ro6c|p}Pg|Qm`n&^PhO*;}1r&@{d;j z42=~d)nsc}h*mvXL@JG1osJCPmy))0D=cH!dstqF|IpQ@10|e{DlQ@EFuZ@EX|(qJ zEm<*_sEZHEIFp~2FA-UHI)FGQ-!oY)CXywT*QCEAKQiQA>(ElIsI8Bp94+2rn%L`c z=(PE=xIewQtzD&bs1Ix*QGVvG#yAR-t0N1>s>y;TkM^WZiIii{zKDyQ6xh6|8oSzg zSl&Fb6^q7pYprqwUTA$>E0kh0mX*SZ2NRC&)m$I)eWkpw8fnhVRaloAwOhLIwD0tg zd{F6PYj^2(zVGN;?Ta|fha!36-7AZ|+GVKR@E7EY>P1`maXLpq@D6l*e`IHFd(}X$ zv~#>Xec=R1SP{3~Q{s={{JxX{^;ccLwGm3eTAZxSqc{LZ-c?2uismC2uSM}?m zrX^%YsU9+RR#9$W^#22rH za_ae-rv1@U4)y){;}5O#WD5bF%}rG2QR;i9bhA8;;>Ko>)aaYh z?g#2XV8-yw3gEy~rGO1l$?#U-meuP>xhRKs7kxH(`VUOW$9q$+D;+>mDHpY5J}NlGh5IsxwfcU6Av#- z=K04?|NAz*JRjb6)?6>kS8po2=|SGd#AEl=rjD z$2_Oh9YHu6p_5~;flj}4*m}&~6+Ao1#G`76Ovsep^5jXw*{ioor6vV< z&03`Eqm(|nUQ*{joNacJvQ=bAX7CcQGPukHm9@^@5O%YUaJzpyW5lKLR-rZ!kt^{) zV1LK-oQfiS-p2f3PZLE<>VS`LXYM-@qR^l}a3`;(_wEyI=3;9^#F;@aGljvnSk&b$ zs~TpRY-yQTZPZ{YXVeOIf`P+0BrwgmM#~ zYc91HPf{9v@uwXa|1O)?dQ|^F6uD&{|6_5ZCA=PQzGgd>ejD|21OMDNb>ZciTh~%8 zUYp&oMCm_mkJqiV8U1B9StJt%YJx9us^X!6+fjama?Y zy_95pST=w3b8K!I>Qix9@=>+`Mh2p%1imiy{MhjmL}xBs`;QksJ~!^TrYa7IpZ)oT z)VNdP&DC+*-NXNK`#-hhgS$R;_RNt9eJ24X;KzTC^d9dq*aZhfFzEqDMViSlDMd%_ zg-W46zw;l7vd}qRB}n6Jc|Q1GUfnzq5tdAW$1Wa5G5z$L|JVefr&0i-)9^HPuS@^A z*MHeUCo@5iU_qzp*l}~kIqCn-WS{v<1n4CLlxfL- z!6>d1zE(XTm`x;mOtf~Qmg~fXn?&7PlP4py;;W(@oWR;dlS|v-T3nnp!kiGmO}GpQ z4RC6Y=G=0S<^HFDrXD{vB#FOwGPLc@zl_13rFf1s^d+bB&jVlxwSfN z$~VXEut#a@WR5$$aw%aeEM3_$zU5lIzm-`d7zj*&A7T-K^;=(xbPd9#6 z`oC&Vs+{m;C9~RJz4I&KBVdd%{7LS9cEGR5`72T!IS3X`|Hi3r?+l(j&%mEm z8EAF!uRAU^cmkJSW+h7b%`#4$BRIn7hu^G(l+y`meZ8FAEUIsJe$gup&MAadZiagJ z*XRGvcMaA%p2Nz6ni@gBXyBXpU-QZ*@YGvKni4L5==)z&U5F0T2gM5XzF9|W%3%@AWum)hY)}8STyED&ZQ2#L z*7dr7=jnE`l){=ozUj9QeePe|XRL6xvJ6m45RzTsfHrdImo?@>YtQ-rO|RXr-LdFN z%~uh#pys{lM@mm4?Y9S*WO$Y%|CJ556bNk4RXq3Y-|j4L4#^Fx&QlK+%M7smH5+~! zI;YDQHg#n^4JrOwEdB$vK4t{p&~ux^H1YS9_FFTlp#)pA{2B`S#;Bht`kU5zZWBI@ zH%$+Y_}19(8>|6U0?+6-oRoh5lW$TM|A6pmabBeTf8hy52`ZGuR9o;(rT(UeKaHJK z@fiZ-Q*;!s^8cMtk7SP@KjYL0C*Z~Y{ty4jQwu7>r=3M=&Hsf1TE0avJfVA)zb}H{ zsq4H!_*7S`P58fH6g|Pj4qODnzc=>V7pb~`L}l&r)U5w^MrEZDoQdcRig4E7|CP!7 ze*|=9x@^dsKaKZqHbYR_=a2rUw13OE|0(Tnisk>5_V>)i|CIJO&D{Sy?YF@DuLbLW zp7yW#^F1p4|MIj_3dQFKevT>@4SfU@uC&l&aN@Z2@r+>`OsjpP7=nV2oNl5j$*Sh| zagaJy#J%64t>*TftkbJ8V=~zemTpa!uiz6&3tJo_RMARZ{RPE+n{(|VEGkJ4Ibx!X z5~J%F-h$EuFv*ps?a^+qGy*2{*I)QBoUsn{sC73=^nmAZ*(fG>JsH2V@bLm{{8dKS zr936ZyC}cE4GtEWd_MUSr$nHv+|U!r9(8X$>f$}@Mw}J@L5Y0&!q_r87Ucj+c{LZ< ze-65}Fi1y&iWKGUQYeVf=55Z?&aVC}Iv356S9~Ns(u02RBTBA6My2C~8O;7fe73dd zm3E^x4w-#CPaTo1pKx%1O8Q&Mu1P)qBN`QRulSLm-Ki%UMf#Ud0v)=9ypC#zb&6hg zOkVsbScA;b{Kl5={Q2{RkJTx?oct_?pPn2^rGk~j%ibrrt<$pZ=Yd zBBj4lsx4HblJsbTd(Wlcx~?6)5*)%7kt4A@Hu~Y2{0~O{It===(nuYh@@v{yFuWSU zN6af=D{N<`Q5PUlJnbD*xDlpcqN`+XYGc)w&GVzDztjOA1`@)|0MEPAKgi~X)yFo> zj0pj+uF=*Z#buO4L<{P66zm_3g)SBF5{dHldAzl@aetr5_0y>R>IYIGrw-p(hTIh( zAe?`FJ(c>DUzpf!F5J+nJ=)KF=2d8y1@$CVRhYF+bM}Bu2V`#!>XB{->gUL#`JI8y zx<^RrC@pe+4E`eYgbkCdKQV(wd1V67JG(N_bf`$s^d6hccOrg$(E~c+>yd9t`g1P* zxc*E@3k2}ds=j0B{_o^9r!xq7fe#FA_EVB7rF2SkW^R`Nf%!WFbNmD;D&T>BNS39t_3K)E@(slNtwsJ&uAkf z8{2}TaLKn-OiD2BjL4k{VAX0_9;7ukS-E7Q4-C#6^=}>qG&d$wur^L2S?`anFULdk zw7T%Etj2Q`kibFEP;)VAth|%YSZC}@Yzd~eaBWtO$5Ihw+DR3|^=xfrB{(|Tmg-$G zKns9#J@g)ocNK)OItVo>w*q(^6jw^SCkru+g}q|pr%rMvOT*x>LTGCUHXt)OG!t(7 zdN)RB!HO&-Nl)J-j3>=xyiu+YUSY@qBW+)Sg$?ma#)n=3V{F@UoidGL_4`yvhs^w^ zcQ;&AdN0!)fFG56xcZ-Rxcf`CezyY_XMAj(MFkqKl73rN>FGWtYSP(I_j(O+R8z50 zkX~4uI1(CrIWx(@IPox`9_+Zy;|bU&GxU!KF2;goSnNKkjf}I8JGIsNw{{up0M1XmPXzt(uTG=L=0z!MTi* zLyG{V0-^CvRvr8Gg&XrcgG8AnEg|N~3}9_*yJy(el98CE&m#S0z!;ArtEHI=&hlE4 zHa*1n9s;YqfujfurN)MEmIp;TcvVG*lQ4`_Y`|Qfn8=EI<7*0eP45@Z5N|M&GhX(v zCB6EP<3gbbylc^m{I#5oWlGX0v=c=@&v8-dgP3@e8O6wTErZF|gimY#%94CDAJ32Z z$WUC>@I4;&SKgXza>&_!q-1-htL$-dIbzF?tw`o2l_K$+)g?NROBlp9- z{bklW`|A-in_J4=HsUH{)rk|fqo=1nY?~KUi4YKayeY8i8%f-rg0&^ChR)KbM9e++ z6YRULr>DH^*=Y2&pL5f0TupyLeQtEcA%5%-GCBsneo3E^w3k`vy@`78UU9?>vPD_0 zb)3g?u)B^C2-~h)K9Z%Qf#bU&fzliwRb1>s+U;;=bakArY2XPa`<--P@F|5c7rJNE z+L>Mlfx`I4lWn(jbv`&JjEliJgP;cMunIQj*moaWI=0wkTLiA8T;yZXqSEPi0m0bN z`^$6oJJNMQQ6P3;N}iiJ#M!D`@Rb*QtBRFc_78Sb}3?JCwGc&m(MKfqOA2PeO}Gx5UWu0l2;G zjMoOoKIbqCHJ!b(viCHQzCF6Oa*5+ga~~^rFzq~@7LxTrBwDD|aBC}JW*D5yh#g|k z8o$CQc~t8P`x98Ai_8d5Y0-O;s-7iI}EZC95edriyhRae4VjB&!`T z9x=(h!-7gI2Y_7Si>-G{;?T;(I4xrpt69oAIpN;$q=|>;lP(ea z?ueu@^&F9r?HNDUZ3Oq4>iXSUgeeL1HP|k9_af207Q2|O=iX2-NHxEJ=O@v~S zr6-1pSPNNBfmg8o%{a82`0~C;RtsPpgL%&IcTz;?HGpEB=wJ6{euII0P_NV)j%P59*8*G1a#oQ%s{1VxDNKdQPauVak&4n9%uak1T z_~wfMF%rc*(DFHXq>2c(frvc7!>z^+6TK3zg3w6NA4DN!e^ zfmPHiJdNgEGdmCNcZi{4himq@`w8B*PlC9SC)4u|L*?qS@D_;LL_UMhTa8Y@X>AyS zs4;%6yD9pNLgPq$;Lmt4)8{bh>RVI42S=!sT@NM*{cwg8msAi6~fnMfW4JMh{ z3uri}<}99%&?5`NFZ4k|3l$iGV!)s7>I0>jv^+7*<2B)zKD@;$64D(Hhr3r2ToR=| z4YqUF(M7OkdQOqFZLgGw)Or-n4_`^~bsulg-HKBFX6}9+;9ETPxhrth;I9_SkyAD{ zS7MYDxRu+1VouFl`Wt+qW=<~{o+6=jEgs5~qoDfE&_cc@U*mb!v zzn~@y8C$ElwaYnLVl=Gmf@Hg$V0{eNhk)E68?)OERiRq64im`LYNF_NY;LsdH}-5} zSngu2WrTPiIKAq$k(69sgT8jlr2BYOIne5tF4WXf+<(Lc+t?L$GtM5}ug;vw!6Z`( zQA(;lISjY&oHK6@_HypL(jn~JEG=X}WzMA&pDejWu>p*sD^62YZQUGaZ8D#SuuMvN zS*xzjwA(gQ^drSEMwhTL734;sLV&IK)^=>w`-&rjYxOJb#?y(GhJ0n2d7(l0%?Nw! zF6u=DTW0eNN+oEM;d2iI`4N`0a6K8=sDKO&UYYniorrcVLWx*1zYnk4+W#i=1;RGw~{_OC_w8H+DRp=`x z`J^ig%07aEk;LPWdz(l@~CYK|Zco=wy z_91>N4TtYV%*^omlD}Vl_yKkPgePYG%_b8JA@H% zXrS3}t4ghdpA=-_Omns* zt%)v8FbmVOYFkT|z|jqCF`#>AauomGQe^r5u~LU%NWy^~qM=+MOp~3bZ1`gVM(Kx7jIx zXv1xzuu=Q+Mw~W(*lh}9Oj)#ijt%#i^Hi_BOmjc0H*Snw=rBxJv{nqF)pVD-HC2y= zfx$ckAyG}Q91S?cE-pz^J6n8Qd=Cbfc>xbMA<_k=;i^Ym3F}pvWCSyaXxOQe-2R>3 z84wcrIWwzo{*9etQRkuyXV;$QAzLxhkRo@CD21_+fW>twZS%^5mQz9A7YA)lq|j(X zjAc|ogN9@Z`GVJ3g0qb$8(5pdscBc$tCmU|%dQs7x+6hwZP)}POtnzoJ;L-uXlQv2 zAJc`oFj{wkW7oG%>w^_MF@?d{+FYDA*mb+@BGd|;Jp>2%jW;65;qR8eAZd6+1{EWm2K(Wetp3KL9| zf9u(Z=nfDf=T=R9k*Abx3U3LbRp*mub@yZYmJrQxZCu79in!kb8l{M3Fz3E+dor#0b z%{|e}Q|rF8S$c4Aw5#;;JlbgkC8=51U$K?`Fht*Cg3TQq;RSCkZT$QiO;|wO08?xlH<9oM?wVf0E1l(%HLR8-PR#U zPS{z2Z~eH%+(XR~jpItIuehq3X1GrS~D-e;TrfrisCn=AgNopqupt5?Vtg^mMU2zkUP z3i;d^V|8(uC^7~?2usfjj4mQZ_8sQmI9p|}tJLnUl<|tOg>N)BfK|-* zM*9kw87jC6u=`_3r2opO05_*;gRlKkX?wrJOa)WshYUD-VR0Hj(Alw3ffl^hnP39u za-1p8g~N09GwjR}6y2eG1!8tZf05EG8xbP(`F`y04=6|16`lhkpqRt;VygbSFgmOwB@{PjR-Yu4&Xy7&1 zstUo`U~Abj<__dMMCI{zA)i*}j;Z5zD# z8)nUkieT0jPW1r3T9C)r&XfcvPzxFETF_x(53>6WVS8PBu4uz0l-Ctco=|G-xs(!m zl_mh9mWK=YtS;48e!94=JUFDE8^$%cHSAls-b`!qX+~3*xxYUJ$N=1Hj4QO*eYJt_ z6uI4Iqzj5evz0pdxKA`hg=vufT@*$rBQ_+I5vObasBpcnNKGjQZ+iy@TX$H1F!lm& z&G%$bbF5*I7FpzOH>08VD_i+w=TGAmd&8|0k@DT%+h|BgS}1^{ivWa5HqbCIff2ji z1$*lK5C4zij-{7XvdqtFVkYFtbyfS}Maw$vMX}De`Ri*voD)6Ww7uNOV}x#`|5*k8 zbSLEcqusDT!RBWn-{%ZHPbBdASF4*Tr&H5H@MAjBs!N=9;{c}2wFr#Y0xPnr8z-u~ zH(I$Y#t5-6;KQi%m>8QTi~>;~`KW+LVfMTE6L?;H)`q&t{5!kAljP&9yCY!h;7OD6 ztAj&S4gTao)0~_e2%$vAOimr6Bk|KxozZ2z_KStZWwm00d7;4D``vrf7|4Zk?p5!j z7z2+dtd25}d$2qB=B=-%VQZQ(U()|Osbx~oW8GaJt}fn@KA_4RNHV;Qci*WDn_NcD{= za&&NRZP_iY=-8dQLnyQT<^w);1)X+{=oj}9fKyimMDlk41`&5HU;cftNtllrL{BUu zpDceXiSNlf!C4637LvJb6wm9!irlAZI-PffWKaMP(NR(N4a(PInrrTI|2+yV2FUVy!(&LdY_CAyMr@a1%^Op>f#ao)K z084gS|TA(0Ncrl3QDfMGgT|}ozfc&GIL)$RId!$Y#E9>D$_|(-3_L|-(JRl$=%(9;&ld{UUD!5 zBCHqV$2r)Nbekh)xHCfva@wQe4C9Y94Wj~y{K8(_KaksR@7#|#?A4oRu9PI(TT4a< zSZTd~>rr8rWcB(t1RFyr!918W2>YiX)IX=N2yjXCc9_qrTkm$!z+ZmpBpJkgTXAH( zuC$y987ZAJW{@H>%+A+`S>_JoQ%RN7YH0 z(Kev()xM7t>er7#gSIkm2g5kj9!7HohZ)wGkFU22FuGo-B^i(I{x`k<0k-W$!qlbkZE zW%?_EMFM{18ta+X1&gEcN(b3{<;C5B`wF0;$C4IVe1hWp8r2tUcr3>YD7(#9rSYuM z9|q$km?nj*Z>6cic>!%K#!XNpIelhRLePRLfBt0U_Jn$YHREK%9GRTRZ+Ntm=QKWo za*xZ}J^ZGr85b==bQiiqVPL9^P}h-sFfuYm@}kfol81-4^uFqhpX|&`9qf)Rr1q8< zb}oEliGtOxE@w>+)FEu^-UzQ8D?~7~Yt1IJzo~9_4WW?~FslX2(BTW1kUd_N9(@fx z!BpB!)pkd`R9zy%Opun@P*w=_707mE;vXnJ5+Q&zt;)jZBj5d*^h`%kRGk661UxNU3T3nq^RsD1UIzpEpg*6 zV;KaQSW2B*3sgT#;m~X`AE9g04lU_~^Oyh5WTkEpofevW6Z}oYdn8Z!tqF0=*SRRp z&uUHX?8NTJEVP739+>7$49Dr&A}gcpyF0a8R9R!rNxT+DwVMkL^po!bmeTA;Uk|Wp zCRKQMZdQ0r3n4rBx`NBS*EcH`3KxpTtP(EEhN^TMm96(xn6)l%cX(R0sM~jw#Tahl)A1OGN7y7*g`%ckn4N!p@_L zOifB~LR+kKldr+nqeQWV2K%8XcuPyzLl2tI1sln_{m9Ya%sU1ipIDLTxRxeXmBS$6 z$1}7J6Xo|67DzT4kzp+=c;uwcdP51Y4C)$r1ieSFyqn`<>I+WTQZRBC#1#4k#vrtn zI&9bX+I1tY>uR`uvZTc3!*Q2x`a%m!537lr8x<-L@yYR>4Psbgvq5`Vwrt}?dvlpP z4;o)6aCg+`n{4hSnasu8s04lK_HN?bm}8`;zfuRbmPns(IgXv^PkL&Io<^T$PWcTB zSwXOnG%hy5Uw61I#+*n)GQok24PBCa^AeBTU!dT5fe&CV%upl_N9al9N%rhMS<^9a z-5#!HPuGr!@p8x1D2W86$HZQzu(vT>5{v;X1q-7=_zOYj+O8xQ7*yZt>a1z^PznPT zh)JO1!4J$l=1Tj=(?x{}!qDg*W|96`!(P-nd5gJ9Vxn&Pb-2Ucar^ldxx%MU*ur-W z*6+IaG_A&X3n&xttY=cgBjZ}+}`{{Hj9 z1AM<;*ZF#0hxeh0XKqo#u8_rHf)TcVEVA`h9VmMXG~XkrjcCEY3TU=m|ERxb+Km$8 zLQHKeHjzi)?@vA*u=J|$-ST%-Ls#d^v(bXaV=8+^s_f-uOD)* zf8&mmg*8P_uAc7)w7(wt5P2fr?bNg?*HF!&dFqyUA{}fGHMG;g4;7NAO1RB{>goC@ z;XU)wgmjEy+K-a^2?imH7jUmOgc9+~X?8yE`nij1*XZWqW_Fy{jB&4%6Ri z8XJGKEx@n0RWol_Er|w3v*fiHXBElr;ANrM*Zmu{DlO*+8eB`3Sx@PmC!|j!{8s zwloic^L_q>CYXs)AuIgP_rwd3Q2KV*TRD{jJ;uO*pi{>mn8}M^SSnn43R%A8?9SqnZOZ9bn(ujP;#W zE|RzJI5%{t83*M%6?=L{CR#Q)-u!&Dq5f@UJ&E&u+vd-+%ZA_KeFe%zqt2~B)!Er< zaTFVJai&t7vCS|dxd#b}&^P(u5n-V$qs+8N%_w2wd!enpy8V8BGu!1GIc~m72^G3F zPxxThbM={)#P;JJEOty)gl5mze-$0bD{24gom6AWy~?tn{r_d`bHI_9{p$0NR>EN2 z4N_u~op=woew#BfcWG!X(BY}set&?G=^jdaUYg0#ZWwQpM2=)mKkG$}+$V53jR#IW zuy(lJv_51v*97ER_MWa-mG;`U0ju=jZVbpY->Re=OpUqJ(A^`vJbSEU&tFD9SFB;5 z@1{NB{=22~;l!G3?4isi%g#r}r7dqQw|qNJgn#L1mwNQCYYD%gSC-21@h?Ll@e>Ag zXuXg9JNK{`(YTJ&JxX!YZFJY&d$Q@_v}zU(4_>Bx}=@7ilacbn2Xao7Xq?Gi`#NCH9yW7{yARyE9i#!dCEu&G5yKE zo&RD6$jdf3U=$gMoVvyvjZp%oWO|x~xLAmCu_GBuO^Fu**W;U#4COJ6uI=`}lBAE= z9{=RolS*u@u109?kJS~mBNeaMoEF}4>W+<#zm)iv7shv_JWQ?#4P?~?F0*%48+*XH z|EJez-S(66D*W=RxY5D7*#~}VM&oTuOMwk_yA(KTF-d*$JR?lEzpq^bA`d6z{sS{o zfK{n`K3S6%t$X3L7p7t5NZ5H-YS>>3$j`K%);$U2=av(rrIz6H|5A};o}^hm zicbk0*mp)xxAX{Mj$Fe-qW3hsdj88CH5F;vfZY7uuZ>p3Ro4y#|9Iw?I3m_;Ls;?6 zjY*dJDye;fCtvybwpz;HqoMbe8rTbfK_I+~TfaQgTh`u+l+;JbV(o4h{JW3(zcMHB zz|K|Y;&%S@>g<(Qyz|TPrSkS{hiq3X94JbMpvJQGqw30iR?g>N;=Tqk z5a%q++3{|tk2$b$&TBSxr=EKL>@7b7Gx~!8eB{}yqmzGEwom%Sj;RWMGZfCx`MG6Q zP3WVR-jwOVvr59EoOGn`_Q>Dmu2=Nk-{aecu&vuVjh>F&|F6{EJ*7$T@<4=mND;?N z61xXurqgsiC&rU}em#3^!R9G9(zhJ)vUx}|L8(quXlt>TVIoG&o8YPDi|VXcpEHJq zAE$6XO8Fl`Ee|)XxvHRKrPVXLFj!+LME}3EexYq7i`Nb~z5j1o#QSbt-GvT%LdQbS zn$3k(r_THu&uu^c5bjbOy;A13_*Qd1fvJm zjIR}(&37`YT6?$ocs2danMuc8zZEEXZ=GDA*g3xyDDMlz97&-ry{5(|n&)%*-B>SIOZhQIo>ArWG|6pEr^KtoTWR=q2J>+km|Le$m z=biOF(6^_)+45iY@((WmUiq08*#a+r5%j7@kJ4U$YD)Tpul~vDto`KIzStCQaNr~L z|Na@;PX3&}T{8XhuV*fPrw50B?%%HWQqBF;kny{({3-Jk_sCt-|L?AwJMyyDBSdlQ zpD^-c6!07A`h}AxfvaO4vICf-IqP@wGoCrC$@h@D1ZV#ZT=2I~YHM7xcwBhsvMv_( z^nzc1VYRhXzD;~W7joy92T!@gf_(bE#u~$tT0lOxK$StaK;UK>ZP`lwM$2#i(eDF~ zHrTq)6t{1&`AjJ(ZI_L2Z`&h-^Ea8JvnC0UZ+{l#gLl^7OFUx?GMZDD^F2gGOZMGY zL2XAMzPtY=<`4I-QOEiushU6w?L4>tMT#2Rv+f=M?SNjV7adu<5;}7z$n8r&rLx8^ z!v9eA`3C!o4~@1i^jRmI+xLqWS<93+Bim%%owxt%H7=fr9g7>5uT2nqlIST*d4xs@ zz;=aNtm}u!;H%Y z%HL>X+&?Ct$L^2crt}M&&i zQ040idI$UZbZm_NVwRq-wp!*o0867E{e>*CpUE3D+RPK^s>!_LqPbs*u-)x!W08~@ zzE(f^(SMb=Hs|&7a{;~GI)46TtaNYN0Jccv3yj2graYg}T=ht&;Q7YtQ;h|ue-*gD zZ!RbY&SD}Hqu1~3{H#JhxG67rEEPzN7?*vDZ2yq-ztbb@howZX%Uz@>owO{ppv_trt&>n0U}Jd;Ff{&9KYE z{?4@3Z$&Rw^u>?QRmpTzH^rdbzJ5SWVsZj2cj5l~-)r2&l7bGb|CFWvS6lZ<_b#4Y z9h0jT6+*w!eJ}0E75Y83h?7c_o=~-AC5LJWXuw$sk2m{k0eo1w#s(H016AwvAg#eV zO9ImmaV3kHdVybWIRE*epl7uFdEUoXm`l6vFg?AUJnj1I->X)-Ln$7lQ@uVe*-D*S zJ3B|}?NrE_5%YJTv;`gq|{RdA%j{rjaAPIP~xaC-geq6m6_ zaBoHI_A4h7*0Y+`_6F8uEjI3VNvOW`KWhEzHN?&P0+hn4#ZQaWolX6oRL-KkVGrfj zY2;Xlp^%+??cIMhl)vTYua4pbrrY9etqSn;j=?(g@A#ejEZihBzeMex*&h!b2}C(j@dL)qZ?@66Ev%>2CYK zUZvCXVU}fE{`;_W&;c5~y5~8;UL5>(L08eVa9SZ%XYS#25iAkOvXg|?v@mZ5qQcYD zUGanHRLx&y4t)+5{jiUW$+twMd+=s2sKC9Ew39(N_YNEF?hfEEf=S!mzf7j z0S!7imzLL`46d;xfP;ak({J!ULwj2i_4YJE;;^aHd zeFok#K`#{oNhhVpPN>;<_*m%@bU)(B@)_Qhz#+pjX|?L<0lS|z`}95EvzKGA*9iP= z?BUohS+tASBB9~2kx%^7a;vQXal(9H-Dk%M)5Hs{1M%(DT);IV#F4puQJw zG39^lP3i06g~zmdPXciN_@~Bg}HS;P- zyD*~@$wOVKAA3ypIXpbF^bne!?KdVbz%M7x&LhPMo&&veuj&a6{u{o(h~c*!8Ll1h z!Nv@n(GYB~zPPHKskvdeZb|wR z^rb?z>5MGr>Uscw>@(JPLuuJQrGvLIRh2-5E%L*w8j_Rm*saO>S$F}>YFB{K*K^SX zjfJ|ZQEqD@n^b=zF}@TH@!2tW5OA37At4w3e)ZEy`?GBsqkflz8ybtU^(j8Z7bb6x zk>Svwz9sD7yrB4b%MF_DjT1-q-I%!-^F`Q#`Qg&q&7R#rl~M}<#S3_W_>9mtwasEU zZ`+|u-+yV}-&djM<1Q|Wx-f*HGTzRS-rTtxGkZkZ12=5_Y$sGB#&K^3>J<}*-+7Q~w>RPjw-nVtb_z=`T0Y=j zt2}2wgq{oz&Ys7y-&5XwHePS4b7L~7ydgu|u*|3+ar<^?bVpZXRm+ z_hLNohTSnZxMVkGXTeHHdS=>}+WWDtR_}`VXNoE>8RghFfQ1Wd4OZ=Pp9x*_8Ce^2 z0En^KDs(Ayns2`2T6qxaQ1WU*)hBBB=~tS^W<0(6K4MT0PseKY5STuDKDXM3e)TfP z?-;DPRbl_`?>5wYsiu+}fqK1&NDO<^)j9>FELBaIxfa&EAJC=ZcrIG>2Ovpr5E3(@o21jXKZfTvIF__p!Gnhb9 zTRo6R#7zOZn-UZ1LkARvn6sp@DYea;sInX5K4_6(P>|uAKkpX@%lye=dSo6HEMEHlLQ9`GqX(~;Y;H-Il|pv|TkM34D7*fM zVN+HPw&cCTL@q>w7ZAv7$i4%-|9rHDmE*v?$ElrJspzr6?3sFG;h8E{d zR6A;Rx1-G2MNZLY%>=u|E$UINv**N?k@!Zbq<~MxkS&KYmBY&70H}**lb`2{4}vTF zY{}D^o^%|FQ^4HYxRT#5LR$PRF7&?e;u@tgdP&h5Jc}vR_ z0*6?*+TpBTEgW0}@(y)GwA4jjQ1RSh#cqA#EGGFx6G`0gW>VlV7E8-T01KEpb0zL9V)AaC?--Q#1ttZv`xD8ez*a$>(- z7}fubxJXcy5PZ?%1F#5tP6DAomc2?Un7ceMP}cw$84B`=9#3olU@Vk&Mwu;rr2m(D zpUvjP(34_pWzIDJW(Mmf_Z!Qg&1%h-*V-hwx6Py>t8~#~Gt>K#($1OVIG`|h;{Z^; zL*7AaN7cbPcmFlE+4J%IKEt%=_Ehqql`Xyp&9`I`wZkzr=fSn$fLo|>BzmhbJWZJD z^YNMg$^L}T2Losu*wL%bl}eJG#91phDx@(09A{~XeMl=#BXe=Nlc5J|5$?U>Te!E}yZXVU_L6t3iwcNnp1_)!D!h-8`w zcAiAmw49Y7)C2mXlLN8`EwkoszGwS2llfHu!n6=}y?814$)o&^+ugFTYB+cKg-Z^OFwnCvSPVFH&DFD0mF@hPQ+=5t{lE>e#z*r zw;QIUzvP0S+1v}%fUs?zCg|2>CDqJu3F`Fdg07f@_#HC07Pfk6<~$kFR}tvaPmS;s zZf%Rq8>ng3H(R**j?=KF=N5;Z6vm!t9)c8$we1udGJ1*`i*_c-{J5T8{5+r(3G5mmQ$5vXPogB!C7`$xP zj~?owQ#?uelttiP0%}T#Cn_WYPP)Ym7IoAM6!OfigbgL2NsR?jof06Z`rD!KJ}r9E zKxIA!z<*QGD$KsWm?OjA7e@p+$ot9x^vcE>*d_)ixtf{1XjU~K{)%ZhjS|zsarV)I z5d~c`Y=*)u(AW2gQEf>&G7-xf?BLL*A{Pg0m<`|vfjSFf0%dQSFLks9P{9bk4VgJK z4SGAo4FQX4bLk>@sT22Ub}VhOg#T!x3BH*Z8Hz&*?SLy3h5R`E!yYL)3!R!BAV!EI zd9Hqdj+f1H!i0|%ws9QAmLFb(E!0|%JJ0grzxJbD<##m z;4LICS=t!1qiAf!#QaM#afrs0WW_9<6{qR4l+zjasE7d+>#YLxglzVdLcYxe`09Xa z$o7gad_VE#pz@lC#cIfTnPvgrF5JgM0@d()AMHsWAF0kj5R3Ofn_CKT$6-##>z1ypRI^MNQQtkMT}W)8vi9pE zLquiVh`i9N`K(=Gq=~*a=jE6G z5pexG_R?L)p-43Y#U>Nz8q0f_+2+83Nhe1&shEowh?CJ}#EJF*JTX0siRx`R{(SKk z%$+~?5`_h(S0ZQfS&YkbVoqt8$Of%9D+YtJ$gQ&(YB9i>Iu@Eq-Z`|KSad9wGf5tG z2G4a&B;yCHR;I5nC$SmnoaOf~1BaAorUaTym(`+Q3)3Ub7Oa2QYdX=YqG4Udtr@cU z0{pp>+3nOC2HQ$!Qc2Ykc^O8Y0?0He3k&TEYjlI=7Pt`{A6B#$;6V%e8akQkY$pCD zuE3cFb0G(Rw=GLun5Psb`(V(*%wa^c99eHhH#xwfUajV}eid|F-y)jEf7i;)@rmr1 z8mK{~uTAa?7+!s?CYY+54WDn>URo-0Kv0C?fD=Seq@xc(m9%Rrd6t=v{R=}{gKu$-u=hob zL>Yd-I@<$l8A5|Z69t6atK(R!d+2#QtOfY?8S6Q}P*vg~%BDrxn4QD#%`F(<${FxV zycx}D$6@vzeKH7eg(v6DSo3K`a5CU+x_N%gSb8v#X!O;2R~ro zE*$D_*2R`M1JJ@4x^n9gbUP%bw&%9VoaB;vrMEDjFT%xmk`Hz`J#w%Twuil|i^L~q ziD$Ak_y)}ta^=VB+0hmso1_b$u@?BAH2wnLS%0OA-;W1+4P=sBs9@62J?fz4zJo$0 zwym##6vm}oS9o@xxsc5Pl!p4*iY9qzeadw0$VMISr7|E_>UEDHVu13v3C@n=9v(qI zi9Ig;u;Wim0&3l&N4bIK@(D6~lZdBS;Y(5X_@MbPOxSn!KIQvWqran8$agfSWR5*F^ z)ntF<6W0bGNVohIU+)3y4y(+Xaf@9vGBhfltx#Ag0Lr0k9@M=1o|-UUh?IJ=JUx?7 zOzr^6k~PKZ_tE3M&8#}m7$&9<^^(^@<8eH|VatlFwYIbAIjFIz*LdS#9RSKKj9{); z;m;kc&-8PMq~zvWM{FIKO^8!MSc`Zmqyj?)tKF9)h39-ln z7<0EY$9{5SSpgV7?&0W%F`)?Z^-(OXB(v!!S6h#a-gY6IuKh&!6GuO+R+zzYW~eG4 zCBWN$n+;-a3@vPQ#bo!=gwnKzhg;w%7`PBSk1q#Ax|)sdN(HyUM82ZFxw)4vIf6m{ z633+jCg(D17SQo%5Zl3(v@#uRF>^il#Ebna`2#e4FVusWvuBxM(<#nQwy;_)6pyJt zYju~Yk<_M@p6n4MU8s5eT44y^Pn*%AhbRO&VR%U#mv^dGL&&_yR^8ichFS%2VZaHc zH~?luxnn-r;(&U%oABBTDAOLd%;wcN8{^V_r0x8LNGl79@Q36ar6w!~_Sq;^PEaRQ zzdLKpuP0x|yTuzaIqHRDh(O?>>NpSeuoH;)x00RJHa)}at2XzRKGo0Ho`8=UO{_J4 zfbFnlOarW@sH;bs@c5J@^Fsu-RfsebBO!4-HOS})LZqtn)VI}`ho<}tey(%Wc|`AB z*?#rV7mH!d7r@gT_Jxf_RCai&a|1=#%qruY6<|b<0L}qJs0$u6v^U-p7fhQ5bj0aD zz&yzppBGPNi_X>*Uk{0##9ek{g;(xX51&@SjzrE39ut< zaJ0iYTUy2cu$G)1By}b8aeDT+CbZ`d%hNiBQ<6*TNoXTVamgG-Z!L|J0XvH)CfFT zrDSpFyA{-OQ%#GV5^@fZUk-p@adBQo4{@LHUj<~RNoh4b%``eGuQjX(IlJ-&aAnMp z{(6N*Vhl-$^KD!>mpkt&71YAXaY`#!o#XJ6l(|6G-8h2$U75V~tXbS?&T~E;l!LWe zXjxgSKANNnn?ofkX4rg$D?X{tzwn*2D(g5)M}_Bhx7x8M(0gbG1k6fy8Yxu&8bNE?UKM<-M+?wjQY_HA6N@7cWmHshb;1M)aj4wvKOY zHXMtUcVqku9C?wqj-RN2Sb8zD$WeCLG*|`ppal=TBJFgOQ5O4)%uiaHg;9txmxn8L zJ?WJk>m^Y*#9TrRWGW^o^*NLA--Qq8Ib%Ykf{lChk(~Wc!*m9Z%2pmJk)6N5Sc||g zNp=`n!|lj&Uf8q}dY>gP94^ClJ*C}cESoS-&@dD28zto}D=+;T)x~3z1v1nki}m5U zjEzQ%#+%deG-SgCmULs;0Ns{3&k89@bUwjdNl?v?Ylf|q0hgBeH$gHaq9*71HtlTE zUdy@OQM$V`>XID!(#R$=i8UceGgd`F9>7wj$jawx7*#L&VQ?in71{uO_IScpe+&kZbHY6T3J!{qIp$G5LxuNHLsCtA`RNZ44SRCp(_C}9*7BN z*+s;RjS67JYFNS99w=2#$AhCeY7;<;bb|jVL8@uFc$@R+r{$0jWm@^=HNfoyw6cEFn&I zv4^)5CiBck55`GlC{~V7$VPA!RQqd%0LnsE*y6jNz|RT zL4JCvDQZ|v(`iaN!0R-$N=GkZq{}NNxn6e|l5s=2{>q0D*q0Bu#>UEnJs}1fpD?L^ zCn7&%gZ_4B{rVwNYZ9tzn&KJE&IBGHn1`;+DhPd+r4s!i<`l1a<9sSvTF5%+%vke#dI#1 zKNQxFc`!+oLp=y#>;W*GRz&DYey%hau(IKucVsZQKTe6fCw&y5FO8EO_e{oIHj9=H z-&S^xxr|_hgYt#9anPraP0x=m#oif3PwirnNGNT}L_D->`@K&H=ULOwdtWO=boaGb zM6&xqH|2IhEke&DAa`=j1GgrJNoYbnTfE}V$NrE^MRD$}EXm$RzFVk4wm&j4#<$kZ zyz;d$NiO?(bH@(^-$l@{xm3cGN!ZRY{T&Qp17@WGLk#TLD~o-YpYvwdM?l>=?TY2K z%Q8s=0EZHHn|BaR7!^~)Yqe{+R587)2V?Fn%Wh_2dxq`=lgBH=#NC8I9)T3jgW+K? zs_6h`|5cE*S)oDUs*Qk>E;=%VRTRoEgVCp#$gNlqU`L{sVYIWu!>$t!6cV zc?)4cUOxq1+~UF-7a zq-0pWnwre=T#dN$%6!rSqtbk4mvA|x(~lm)8D4vRR{L7A**u@$*ssC`(U-4shM~>0;Qg+)fKBjie6W^^8sHqq{A4@-p~X z&hXXt?Mlai%l)7NKUI}l3rW{?6TPO;mh-}JTXM*Xt6c-|T}17 zjB8lkLDKx3>|n?~zr&6IG*|UBSo}yB{>XIGpXtI@WgT!jjbHl3R z@FFN}x_qrGHTRP+MxFio(93nBQKWiN3iIBks1{~{qE@ZNEX6>a5R3<3=e)YA zKE!}AGpTK&&9+)JLBB3*fOBt>db_t-JY>Yu0*rG;hZ^VXWQ~_8;s`KhB~!_ViISDo zi^3Kk#N~G<9~HeBU%Zl7pBc80l4K7?GET7)fnjIOLULt;E`iVftvb;gdLQ_k4+I5d z%@)H+h3fQYva6k@7io9BnkFf@4v(hfBOpE1*1EjbzDFXj z;)eJ{e7=^&8<|QBdU!41K~8j*aXX9z8^|<5;#1TKS>XRzQyVWM$ym~?o>S2wC zvVtR9w*-ZN6D@~4%8MCkdbF|W>o;tzW`X!z75|n#ZZDrd+Q7q97cS;tSEv!-OV1B7 z1TDOdt`4c9-v@D*3NxZnada(@RmCrsS)h&df`Y%rOC;p+0$3td@oaGR>yFQDOC7PZ zmMYR9YPh2)R=J_Aq^8@_O?mN%L~L|8C^Og*EK8qv*<))pTo(A6V8RVkU-YrFwfa^) zF9#$C-wP!qzn{c~-EN=I(vSA+7wF`K{Re7|BxLbaIwdIz)z7tc+C~}-jV3oFnL?wG z9yN1~3)}*AY{_=W_F8o;mH4oqeWzisI=PygnOiKxE5^e+W z94>4m7jU1kG!ut+mb|&kI@6E@$b4Gy?fOqaa>2J}1JY(^o@bw{EN_Y^=xZ?^_-3-C zO#Kl3wL(bt;5V!%W!0?Oh$$~iRI*1?s3{bjxKNXyU8h+>u)IX}(o-$Rei&W25T0^a z-<{cT*wlN!iXbzFlB_70<>IIJ0DCkif`ai~GcbQ4TiOdI&AdsF5MU@_L#SLeJ(_NG z--Oq}yLq(MWD(#;%PQD{EvW2FIr1ka=3^Q6Kb`rf zPhYgGyQEMb>8hXf<3l}^80$4-w~^>QR-h4nt7Fu|bt0x@Yqx3ZutOOahPj7q4B-d}*|^U4lo zR8Aumt^Oe`N;DtBt5D__+s6+ZOiVIJ0;A;0v;+?<+qpO)j`Cfesy0ckuwBN^<^NK zh{*}w@DC^Q1PGSB!8nTG%UB$z7>hbO>wTI&#TcL9%unX}kF&mCK7GF~te~=ZUx4V6 zycXTkU{9SrR()@_V~IR9IYG?O*xi;{AYdLl3zyt=g~Q;cg2QTYm;5YDOlEg$g3=RG z5lZb7h!dVTcJ)lz(D>?gYXeO3!rE%mw7c6<|+4*StBMVVWiU@5AyYG{dW?ds2Ub!j9ng1;gUu~uKRi|uc|t?&k3_DF(C zz6Y~RHH5rg{2E20-J=#ffb2j=QBF@o;j`bF!p^Xb4E*8a<1vZ8(?!u0X~_oIfs?ZK zAim+m$RGqloz8nlxKRBhg)wlN(DUI>lJoz@yq^_VM=7?uJlkmKPF4?sS>npO2&uLr zv^Ii(*mU3b?>rI}O94L|1Ln)EMz-iU@aQOHRO4{^-X2iqu5O`=w_d@Z#<}QKk7ULJ z33(B3EhYqypKs?1OAnu3LN7p2kL$^ui$$m>_=!T7+D@BjR&#yE#Pm7d+t&^EQ;0d+ zS;_Dh^EA%jH2c< zppGT4PGK_&`YzeBwj|Ba8_W=Tgh(%8R-OC$VZ`fDg;(%-uM?1ZuPld2LeE2sAAAy@ugY-TNkgf&@8%JG#?EHj2ib?)uuWT+dZsQU9uPayFk>w{%6$f z^Zm${!v>{h|L#fn6PNMF_kHnx*TF_Z9MPxROV9s2(u-RBHc*ev-oh>~oF`8WSg3Yb z)#?WNc^OR?RTqyGrVwjG>F-5VE2py;3Y+_$+=7Es8pnNIUE;;)npE0p4eQNIQByIe zd%Iz-lnMoAhd3=6-W8>t=&lxmsjjWajn9T`F;Qdd`a|{w!~C z?{QGx_kCbK#Oo4w-8NzgR*z56>2SxJ>wyTDZ0EYBDZy=A9aq}}e-J+hE{Mz7web=`Z-jk zzz0T^<%;A9+8DN3u}eFEmo^;EAoU-Cu|V{u=b*sE2lXKNeT`N{tQ|SW?RF!;_D{yd z0P!FnV|?JPr;MP$sa5ETf@FhcI7MgDmYG@5B^?tZmO~tyFXS6~#=Gm0aQCe6M2-A& zsFiIVT*&-Cyjoh^3mtjOBO*1lx+*!EdGn&)!1feIu@Hr7Nk#xoC^vq#-@eAR0<@m0 z_^8C|_2=k{#k(zB=uhJ+sY^Nb74>=G@QBEmRp;nxXHEJ6M})jb)WwH#bwbKcgchK@zpX}8s z7dY50yHSEL@m@1Z$3)d}{P7t;DbGOAT8DHJ?9ql+>_O=T6N!lN;)o{zND$R_lZN#Z zW<<<6)|KdYt>N-^)x39gTRUEgE~b|Dx#dO^>O<)di08zuiY%Q;$&)iq-E34-11kB+ ze%6mE9omxwR?z(t*!}Te>&|}_K77=YkM{2c=lDaxmw^d-cveDP?ZoqXuU}1@gW9N% zGAd9W&?j1D^L?M$x_zsx<7L4GUA}Pr6rs?GIm6L;>xYp$Y z;#af#%)~fd_Ho0aF1Wg6_L&tB@75%p@?SCRiOj0|g7}}vq>V1tvd%PMG3+sVh z13hng-G(Muo6!|z{akN0_Sk$k>SA^;umw)`(&;8PNpd{-dlE(axYhe^T>qWm{9irz z!!Nj5uJdTUy2$diYDv85`~2~kJcxsbzaKA7PDRp60`nT{P(Eg`RDkcO(K5QjLHD*ZA^q}_!i0X0S)i#L4D+4~o%k}?;%JFL?r#XoSuG7?LIM}Osz4BP zSHCDnw_BKqpy9Ke#5co@h1K^;&2XTgCqxb7Q1Oln{xUeI*i>BfQ1hSVxYoC;z$qHk=LMBLnXWzGCid;J z5ftth+|^s`k^aafv_^w7y_!O+qx1@_{tQ$4OMd9AkBy2jE-^Ta>uAWBcwXt>l3aEK zls&>Y25dnQ#_#Lbp%{maf9$z*#t>uy)@OPWwu%vn$Uq|#Y{Gu79GQR+eR6%|2{eR) z!dcNSWK%V+@){+pUVTt(dG=z}z{|zKedD3?+jwv;B>QyJLcYYUWqM^UZehG<`b?3) z57;QSBGw|7Gv$eLzMF1vbzocxq~EIZA4Xm?rt3l{10`L~_mYkBtCJ^JJWiOxD6k%R z<~Qhf~oldkCrT_Y&dMy|16Wb~@sy*vMeD6spb2qo?1BL z7p;bNj^EFTaXSGoEw55kuNO*mO13ZiOKyhKA&NNA3Bmi+iTKiWMQo3F%2<_7of-ey zAL{U5+AO#2YvwI3vJarb<)p22y1iVD?0W)2-V}Ini%4}yFF1hbvFs0x$}T-K2$}d| z0<#YQLDo70c!h}}%_xTWy%G^+DO#}U@%&1Zy1446oeft79WS2e5YckI>AuwdM&#wF z=N}$#>p2~023)aOGoP8;J)M`XD>!X|=b`c-#C$YCF!i@G%RkVPgZHgDUQmZ*Dmfz= z?x|V7B6r}O4OJ6H*v4fyK9r%_LCs4gRspQ^z};aJlk#Bd7-7LGCt(@c0(*M*m~l^o zFKYR;_kJrjIzK#fRC{*yI_RKv-!R`jIgLs`$`(G(s=GuTmxO0@-$?EoY(N2VhF}{7 zp#v(9*WGiG;ziY;;1#_~_5yV<`n3O{D9vmbYoS+$m3EDX>Kc^Z)rZ6sF2C;z(wp>a zZAM8&1n zUvB?BUi*qh{U!!ZIz?>pu8nB2ODTeNi8RWRTit0#FHg=o$zTDu2Xw?4N-679S>6DPkPs6A$I$tYCMujv)f!nI0uX9~2=S z*>!B-@hziFPuMJ|%-xeF>n0){1AzpJz2M&!%KzW`o$B7~^hHXSY0cKLPLS zE!Qupb?1t$tQeC;dW$^XlfZXBBnqBAsv_k!P2orA^5(?VuCH1-j_zNWP&qCsu-K(<=v+L?e{K7!r7C8nUBjD|# zR>*T-VP%w_>L>xuLbh%z7f9x!yOwL0=}T1=2I*L_nE-oOg+1aWj%VK=DU)yHj3g;+ zzQI^kQ)ae<8G6MM57H?is3wYzd1rZ2E;R||?%c+-4w>ysU-HtM5S;SF76s?K4HT8M zF6L3h8H?MA@qYg>b8rWbt*9AQ(h6dDa@7>%XhW!#Ke};{jRbVn zyLEapZj3OJ4kf_j--*I?CMKu%5J;y~A#yOeFg0=6(wB;tBh`)AApPCy5ke}V{g6ra z^ciJ8W71dPio%4Dj)~CfjKBb+Vp@qQ3GYrYbOg+nc4~4wo9sm%7K?>}@BSfFHnV+= zO$)NSqS{ODLacfwwZY}`pd&X34p2KJ6ik2RM+NHzlpXO+9Ct7PvxN`0kNY`=%vi61 zd^QbVuv79EcBL*DSe@q(O~GX<*p8))-lJKn{AQ0398MQ(>Ap|Go zA$$Joe-x_A^TM-6o417?rxY}g%RwMvwH0{z*9Vq}C*Ud_UX@!C1U|T;vf3MRoWFCa z8d+XeslOM6(-qtb!E#;wB9}f}S5qzBjLg#SQfwsrtp05bQK%0DT};YQtZNohpd4Gh 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 literal 0 HcmV?d00001 diff --git a/docs/img/rest-framework-docs.png b/docs/img/rest-framework-docs.png deleted file mode 100644 index 736a0095500cce86611e6fa80ddabbdedb878f4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76612 zcmeGERaBhY5;h7G!=2y|Tmpe6xD(vnJtVj_(gcEr;BLX)Ex5b8ySuwfqkm`ZwF&$C z&&|2`?ha!xXkOl$QnO~wr=F^bpPY;+5g6pP~-9>@T30lkOz4T^q3qUQmYyF0;Ps z`Jj)%eHK?2*pvU`^7WbFK|kwcr8u()a8_pA!oWhZXkn)EcCpiMHmdSKEQ{smB0hIj zkSt?j*g{;%Rs;5s;mPm*dcp{;LuzAsMmi!5_mKd5eO!Aqdz_Q z&mRFl99}iOdj968pf zmSZ)H6Ak|=T0+g2eueFXG|T!>bPxKfSQ2W~Qh~S8g>pJ}rC3E@htv0CCP#kw4H7f| zXK<96MH#~laX3D-2q5mApMz!lJNUG*okB;EE_ zw&;(G4rdnOYB&Vy?|)mZpb!~i*bg>vWX{yu4P+A%u`0w#tw&wNh3s&4Go74nPzXN; zWRRJ=uPP`a zr(C1~?BAG(OK?WnfRGe8Gb#*BVB>CaAPxUMeDY5Dv7Z7r+PA}3E8%V;;+5^=nR}8& z8=Fy#Qg@XDEy+mC2kn~&eB0SyQi7z5299D228WYZLsFTitt|1l7@R7pd!aRJt>u8Q z)|~W7&zv2cP$1R(SPU}=TD!f9f=QZa9y^oHk9}U2>PzuTjiDVO#q=@&aF2FF z8t&nW=~a5V&?P?Z*ihmol3y7jbu+!oQ|CCIW1Ves{nsa)LVI zqR*_~LwBypFe+lA2Az2X;5ASR4&Ck}VW20f)OGItoba^P4K;~Bzo7|_Jo2PwF#u&@$jfIUQBWnrKFlk_tvXvxvv$y#5&?diA^ zkNcDrFxNy`w9? zc!xC8#pWEvoF;HFHn~O!hOL_J=wi>=ihS}4e`h>Brmq6SeAv8l%=Le{ zN;z$m8i8(RQL7voIjL!xyOl0iD0Q~3A~!P7xM~!x$et>R#OLzdF+jPyeeKRzj&eKb zEoII|INC#~5Ct0Hv=rrGz%Xn$(ZF&(`NXlvN1!JeV}VYGs$#}r8X5`q$zzi)ufFcD za^IndC2|ctYQH%R*XGY2LmAg(ck}#B@FkreK!-ogsHRg?w^{=VH|&Z4aTrsXMqoU> zzwW~ht@#=niD>(PZK2ZEz%75s@+k9vo09<{Lq7TJd2|bFsT0Wa6#+-S!7P zE}XF7O3>%eW#r}PrA7C$tCL=@l4OO6g8E=!TE7_&El6(L5ft@UMsmXX80UQI`iX36 zIJg&Jr7aS~5Z98!HGwGpy9gLFFw3gVm1qzte}eJ5Iuy9q#6&ob4X*i?N!ME?nU)-b z=8BqYMXciMf0`Y93S1GrJ~2YRR(4(qDJ{nZQBD|!MFFVrL0muYg3FP4`nEifp0Lcg zDAWnGwod*E)kT>fqISA`nnd&hvTR^ng@9EvQFf7x?-;g2c_d{TTf2e0M9&4fUMy?f zl{3Ah;2S+m_u|s{KKK_BJ$9Z0@FW4AO#yU%Sl=Sr7bZ(uQ8WfqL&n-4x70C&t z5tw3e{C??3;6#?hqkO-#43zrN3w=N~^+oXBFg>cVIz9fus75H-akyiq%AdCPO2_{E zh(L3+8s_RZsk5))<`?E=hTRI03hGXf>GnFS8}qwJaP z&fhFOlwxi0<9HX!_2e+;J@~md`_{3u+maWqhA`YZJzS~eQzp-Eaz#rX1p4mNZR$II z1Lj^MKjF3J>2EGU0^4#;L7zMkHIKL-U)v7vhGNuGIxjy-|IE zC;2enpw+iMGQCx63aTs#x zc$XLZQ8#eR%uXXxHZ7A@i&sdJZ;WF^ja z=GJrl_Ai3i@05zZgjQdbmLApdwLWe=?s2D3HuZ(1yubc#MnU1%{w2Kc1g6sL!n_C5 zfTbDx$s<`wy)0;S70h5pirF@Pg@5YVYk9-6DZ|-Dxz^x1P_v5yJZ*taY>Oa*Pj$LW zjxht)I8gH|QX}oQqQmhvh^3~w8DO*4qPy$%rq13rBC7j@5k-o1okpae`kCF=5$eXe z#?ng=)AWt!1V>dS2A-}F(0ui&-{-8=S}-LfV$9{sWkyn`Drhi$h+@GIZ2mZAqCn zBmffIyEMSGK6&h1uoFRFd7bio#4GOIk;+k`6&RR%n#D)E58}5PsV3OaJ@6Fbb(Zzu z$vMf#vE+L&+?9Fi%WKakm=gI$gJTg@e9no|T=kk|u0+`0TG-|t4WFhL8upSQKekpm zO5j=k57jzF^!G?I6?f0!;;t1~7ebeRy zQmZD(oXszXT}lXb%g;hyvYWP-9Em!7mbO8Y{UOschKOi~`*(JGA9JLsM$cZhJj z?3U2_^^>n4NdJT|ko~26&Gs;rP|`cB`x<8XRI`(?=)*{ke+Ea9pCdVR8l z45r+1LQw9jXfbOVFCm*8k{|otXDU=KkKP-bgxb_^jVRy?bjUCcH_rgeV!-J{=$k>G z!`Qi5HR^Cw9gh|OrFg;6?7b)~n{nhAZ+64k=$cFwnovOtCO6Xe(B+I3HOv-aH`H=24gF z+22pu_jIv1RhnK{zx=DlkWUC5_~#a=G|D{$Z-b>RI!Jkk!r8R+Hb*Zve_n8kQW2S4 zEEqN%KUfqkG~y`q&&Q6Q%Bo#-A@8HzSk3Kyomm-4l_^Maduv8nY2EjZbx_LKUL_Wo z?J`D|o0R$@K>q7~mRkyz4u50q`KKdn+1rC}ioB~h7bvrLm0?N_4nG`@ z-rPwZcBCAm=9y1_w4vkR{G4T$TL)IAZH*s^M#!#Wi`Lc|s8&yxGa=XDI2%5J&h;^R zb8LQK2(Oya%DjxD5~lR4aIPB|J7DEsK7x&Rvu)&>FQ~hohHz=uHgKqc)k#L$l{xOc*W2 zR|QPN7X>-^N(4lj;>L?b@%BZceh=9jjI10#?OyiyP3!7AyR7i!v>+jVLj5P&qNV8~ zx`@-G>GYxW0a?e{v~j$(QE$;CO58nrR;L88Hzi*+<$%P#IlrD$PWlZVPMT{3>%!R!&!9nPQq-hG6^ z)$(3QJ|urRhB$Gk6Yt@8(wY*%{OrBl9onOW!p}Pq)k+o>&IR@Qh7gwBt)JG#C>+ z@9SMIq=Em3dHJ%%)jEx^KktiM!M&@;?G|X4-~2UXf{s@I^|RqY*rA9|gn~ajOs}gY zPEYtvkewc^!A%_I3K`EQ4E6e5Saa9T<88Zy>;6{suM3)el%kuxNX%3BC-44e(81!% zRcu@#@3-z}cptv^99PNF5obMj?O9C~c-`ISiuyFq+I{pc) z++p5A^!vlA8u7V$P}$`m`f(Q$`)ekDq_|Tcs(|rqGx*>3-67l&GP%IZ=c@R${NfEN zkeir*{(mQj{MO;F`K_27w!1m2X0&rC++S5U>%GoU*wG6o8L&q9?7UX(6~_1Xk5I2Q zR3U4=cgdsi7Xm@nd<_didd;_X6Fnb(0WHLm>~7!D`8-ouvo!+oBD{ zD0WMTd3DhR-aVHeu7${JR2_}jJl7sU)gR6eOXT6Xys|bm!TxWlbw#9yZ{;Rc>e73w&8Og~A-MspKBIMO@8(iOp53Oe zbJ7~lU5xNo^TR(N^TsP43r_DPTF|~%O&h~WHm~jvNpJ1O_`8%TGA~1>-V^DMO~2gH zb!uIgEK82&12H8zJPfgYC5oWxkbPUmskMno|6%h7;a>%~Lt{2yi+Fs~a>>8fW5=RQ zF0DWAanyI(6tB7NSupk>;5=)!w2O~n!YiGjn3EoZaRy0v^IPWKxr>*?S z7XCA@vhC$wn1-w<2b?)uOJM?;eF>t&{THo`k1cc>?z?+#JVf#-4O7e{W6;G zVc=fZ`4*tW1@@-mSt1`jns&5w-8os;ToK>uOomqAJ56+PeLM{r?eDoymTtTZ0=rQd z@m^E_O_F$Q`R*q9ns_g&?Av(wtn>Q-0|iKQ+FBdkif#^vT*=>e+m_~C?9y)wWRu=k z?pa+pZ)G;!_pMWbbQMF_?*VuG-RD7%dkxMbvf(IhV6&lJfcKKb!YvpK#GX~|f5-LA z@GsCl)yorgi41NmIyK$Rz$7!c?lCdXUmqXJx}j1UHC`I=JuW@mwrT|5^4%VyG@aZ4 z-KsA~bOT)-vs175SQ;M+_8cF!(x=>XvK69SOvw05O`)h_+THe*m z{;5D!&(CB_hLIf(hhya6S-|4^tmzi&fx9((oggZ>kF$-n5N3o~*7>qmy6yTpI;f5e z``q~Ou+J|9_AD{p+qt-f%K38XVL;c#luGr+y4n#v@lca%;k%?cR@c)-u47b$@1nuT$Yu?5oNo90Y?qd zE`XCc`_?8n7=`oU!I#LXE_qvz#pX9-5u;nm`WFjJ-h9MEkuQE3KGfMSt-ylEITEXx zdm@JR3i*bJs;~H0jvMwD?2Tj2Vv~&eT$5yZ9z|ut)Law0N%p`d6p83jOM}~m#=rQ2 z-xM}J)Wpi->R#W~V2=aNx$l41|MnF?I)?k}WaOw`%v(&rmFks=H#ObRk1X7!xBd`0 zGy*iaTx7O8c^$8g_41ALw1uJ==M>lRfX9=F2B`**%aRV=tcsk$cIul~7|uyXNgwcg zrw7XPk6dra1bAIGrM~x44LXNIqj=fv_~dP2$hxM*97GHy-|y6}QfvXZfd;Sgk47J} z9>S@cE;pJU;)@#PjGaGz{Pwh6pn9R@WzrxccO{GTvM$KHiqiPoSXo3FP+z5 z)YFuL+#YLehg>#ijCiG!&2Lv`@pVzX+5HD@jy+DRf8HIw;zedpcTC%dQBDHKW?x^g zJotEtWrfalU3IUu;sv$7z>65(bp}21N~_zfF5cgI<;wXK80~B@Ur}8Q%^Y$Yr3Wkv zHr3v$%&&b19Ixp*pRH!QuH06sebgE6LjJqx*-(?famBKe)7r;Fv-fFAO`%N-jnOXm zKI#Iz91qF;Q%wbvd|fd3AWLOZDIfgPJ)&?Zf4Dg0su>j`D!f0y*0*(IJc}3j!2cD|1ci@wkIifYCI6oIj#vAk1?W>~ z#9MQGBx+Vj^aw##634oOIp;$U9T$9$b;*|r=_GR34Oj3UloUH9&(0P(6v#n&A!k0# zeVD0(5Rt9pkabsdOXQ|z^XPIEeIzyb7z|vwUplH}IvykXjoIcM!ma9tmnB&(+IXkc zWA%C_9=ui?W@N&By4JJ2@a5s^VZ#T|;FiqLX*(J&*#QX5;gzmd&30|9gW@@njbLKN zqFF$e9|~V5s((1lKjTZR(frLyva=5Zg57wZ%W$j^{z1v zWam#w;KAgxkjZ=XM)bQT*-PhxA}3vZoqHd?`_m#vh^_UYl-a8)itBN}H07+pUVPXD zoAeC;2JD;aZU$7B*79Avhq-xv`-D}7r@Jqs@P3t-hpa3WRm z!{Fno^pdVynQEuaz(H;V`1hFhPKa~MtWm3of_F%+K z5qR=(!M^cw2jy_ow2A8ojP#M0={EgnzT~YAjY1sW?X%^wLv#3W(J(YYK^EtCmwB}p zseHB(F>n}*IG!S1e^tiTbR5(ku~d4u3Vg`XhgM3|v<2Lc_{cgdJm}9HYtEj<8D3ZE z#x)#|$v?Od|4kTwqI;36q_GDwOO|wd+`)L&eBJ3MpPnL!;C#0zS!B{^wYOIUw>N$k zy>J^1j&_rrD&>3R_9jC{^7DKe+;SMgulpC^uqkNFA5ehfYbLTGmz@bW*t?BURUTdE z2ld*?)%4?q*DkRsr(8x&Odm!mXd$U_ak?!r3X8{a#`xp?~}8$>qLNfZAg-h5B+Y zf<%z;^BMYvdW|Onwby~4l`kj%7pOtPvjhlI_1)m7Ej;G4)AGls zHVETsTum?N^)wJj2g3}1faL$z?EecT96Pj)zs2Nv=iYwmMPjcpyH;zP8I&vc8oTBp zjiozgb1`OEiBs1VE_(X7lO>8?7`$={jP#K2~GlDDpwo3}h(TBwj>KM~tCf zJjb)bEKO=k)Nt>gDUhT^Q@V2E;8Ehh89$V#y<}3uKAhRR1uE~2oAYzAPG{+QKJYu$CUpb! z^DRyF0TKv#w%`}Ci*TKE!i$oZj+Xe)6fBp1AYmEJoGc1qH%29436u$ntME$kl=P~n z&!)xs7NkRV7>~s(*DbUPY8K$&b(_=D)AF!_8>;wtMTwT{L`ez2^k#zPX|$~3ywl5` z$gSr|jU-4tRi5>1d$#LP$bMYlqohyaO-Yb5#%74TwN~@$uT4Z@UFQj&V~YAx%wJ^q z*0Ha@et?`pf6U-4Ynvq4@?4N+iLbB)JNk4+JKnR~2{@=dgT%TGCo;jafuoEOe!hm$ zQA-c-_fAH_{4#mSFyMw1e#y8n2BMhJzClC3-}WS7zzqZd>d%wiPIY-vW6~oUjCQEI zwnq<2C-C8p7=u`iRbE9#{mPMA6ZAt$8xiYH>OE_td^go<^EsmM618Wp?gnsSb1ARd z`%l4$kCGP6vNga-FkawxI{{!Inr#4@{?LD#X0acOSf#nuuU9vgoUz8txi{}gs)m-) z;Yw*t{}+#tLaYWJ5m^;A1%bKqx0wm)(e}Q)q&VxlOBhv)76;3nEOm<-X7aOY7xA=1 zT*itXF8vMMj5PjQQ^5?DF@}^=$`Ot8)fB#4SvLk|-e2mvS_|`0_Q>kY=q93Iid=?d z%#pY}eTtED-4R#=tDey`M*JxlixvX3e59;zaQG**j#7;v$Gg&9@YXmjSCweWs3oNi34Mp3}w}7iE$450}1(RGzgMYcBKwY+&_Ntw6EeI zl#7V%70^XflnCJDRQOfTdV(kz2tBp!W_g2{8@%Y3D|yq(;}D6CTcg7Nvqy=1KplRl zWg-5Tq$t=(v1j76H0CpqQDiZdxY2=AWbL)`#!7hqBv!Vu;;)4DX~ZA{At$2p4u;Ig z9-*j%OW_qv4}sM4hIe?G>^1L&_`OUSRu^V@UW<`%JzJU0KPxkTuX!~o&b**%3DPAo zr@?}Qxx?pmW3J`o$W@C2{08PIWC$23pxZO9`xVc+NHThwRmZS>I@<5hcz~Kix zV5A%9jSK{n{vJ_7SA08aixxexJJjQ(eb(9f(K~FUMxzFi4`9lslQOg*jVU6&ZEBq# zIam#*YE@$&$BUQ`np4+F;yZ69&gA&=m!4xTfLd%CDc9C~^v-TFIbREW#4zpinNe++4rqFnz__F$K8v z<*cEGhVyoIXZ?4I*+&&$EQxUPdV0PAu|*S_?``bb0fiYRt1bF7n6bvp@lC(z-(3yk zs-E)B^;=cR3&MzA7kj3^Vr>2XAl`Ia>GNtPnh^O3!@5&K$j}kbL`QRJiCa~de0uvI zZrtO8QQ~8&>ZrMlO%9sX!bY@S7|b=l&72cN2-KI>m+eB1%ku;%&HK5yzG!FKU+$9R zgHeafSdl~8(W0H?ofB%OZh zc2X?WrMM5@b}6*>7lS&DUaOgPLj|0#sP>2pG4D~(;js^I^_A{fHG4U0uyiYe3THDV zDikDadK|Q1vD+aPN9=qi`8evsh~%9oaDwevppc|1{J;YRdfZFVv5p$~b3J9OjXbWM zI?mQOL_D}?DUnw#?DDk2C+m&h)xhwCu%$(d?0>0c4Qa@J%D-@kytK?-JGtvm4S!Ag zeMZ8BbVMgM+02&C;icY^Mhs;}(GqJAGNO7pcw&|2Oi0)G8%12OXpM2)9=&!z;!u>l zo$SI$d_!N-#bjOE+wvRPD|Nv{HVNsU*F(J zM+IPg?UBk`*wfc$s-ozlucAUdAHlZh=5qY4==eCXQ+(V^i`U9d5ZG5i09#n_8ax%U zH!v3QYW92|-1E6VdHozDWH9s%wL5A38ve;cXvi*?j9>Ap7OC{<@Cf zZ<=X%l>7E&s69xNP~>;O^_XiNmRZn zqQOVBlR$!GIvZZ;ms-x&zl*B2b{%_GG3Ynd(}t45cR7(A;*LyAVRv6X4FXRB>MR#8 zuTE|T2J7>s*N5wXR}>DHZG;5aMlH&Q-}Za=aO)d2-9gu#l6C`z7ct*!MNL#X>a1 z{WuC`rmH=@Fzo*)59Hqv%=(-sU)G0+B?K}_JWp+WqW#0Ocj$=zjW-}L--;39_+>hA zGoLmqWS%LQe|YvUMd<_2@D(aME+qV?S_@Qo1~!Qy1Ay@CB~v4YPh)}@U_u~dsu9*A z@1M&X3;*HSr}vDRo;DsNRU#t-36^@;)89UqFHeKWtL)pA7CWk?ANM*K3 zNLmMp!Ty|tKpB&o@cUM<%gp!z6m~2R@M4S8JfH0%d{k?ud1G-$`oY(^+a+7Kq+CVvm)>NZ^&FjqRE^|KmX-J8-Ns&o@rou;=BU|zGy6Ky zuo}`{Hs|TPK`7GK94bt^cDDBA^6YEl{NnF9s-tr!`gQl-AwR@mHluRoS@HOjv+ z_m*EOQr$plx^*5so%MxY8=sgH$w+e*=Du4Sr{ovF4rH=oB}g_}g-?o-1CL6z@G6YS z>$H{om8WynBb-O^I+P3YI2Eo9lxTwIs^`t3rx)u}mq>Ed+b^&S_%E(UX$^%*0IZ-2 z`|y$ixG7ajAj$hj_5G>)rsYxn>3=gd<(`lQiQ3-uz!L{H3bZa5(l7f3$tu^;@leNO z@FXL*Gv3oUo+bJTdwyP99>qxNBP*1?0A)k6JqZu`3S!cgH6%f44p)teH2B}Yx7T)7 z#zRwjk2AJX3N8vqvxLXgxn!cEN=Q%o$&lPl*La8JZNO)?MQv=qU|laSknqm(8NZ`r zCBx?ZhOTlGdZpGC1fHJ;ecp(=owWle#%nW%!}SMC-HMA2HD}28=!f$krCBiJlnm&i zec@+aB`C3=mTH?M$@G*Itw$&mZlVcHUS|A${F{|TWe z%LM>L!y>HfaAUVtcDf-6p$Di)?8wzWk~Y!t0lE!VhaVOOk#sa+Gdv~H`#jE@H!cv9 zNm*}6?`<9?u^y`oIJf*k8;Y}5L@*IvNKN-MQ) zhao=F3Js~sukLR}Z4uhHxfvds4^?t~e;Mib56OO-O*rInVv#c^!@n9tKJ92^XRp(Y zr9oN`$kCDg*2l%wYDBUA&7}sa$E)x}VM?H4wp`Pxwo4?+MSY`Lj%2z!`Ip^LKS22= z!fB@B0^I8Rp1Lbc%9x{iftOk7+Z^2<9--VOYm{I;sUR@F>;zO|AvO17;Nw?$?%{#U zmW~6UPHNumkP^2|HR<@PHR#nUz}p)uw*1;kdp6Dee>3oLDiE_6`*x6u9|iY4o!Q!{ zXy(i2tKed)_AZ2q%Kn=Rv^foC>2=cz5Erga?7P^FBOXl7#9yJ+d@@%i1kFneM(Oc) z(Z(@@-xa>?zJ=&3#=;^(`5O+%)N*VKCl>SYzGk}MV?21pDg>32E6luLJ z$Mjr*;h{em3j2teLnmY3tCGj+>din_l>qU)1JCKGz|DR zCi!&sC-HW6c|f8GQRlUl;6j0F&NO6x6oi>CM5hM#VvgI8YOqJJ!`W-#C8I=PUGF{SbSv`!Sw57`|{p|SezC(&d}#oZf;znfK~+3 zuFbd_BSF6Ch{bi4=Xk98UfbiewMk#`5%)+enJEb|n`8EL7fGo-Z!$uf+&HL1qF}^) z5?NC!tX!=C&GIMieLsHw`Jk2p9__kh(H)>FG0XnIU*P7nW2JS}h9o<~DW^+2u1&B& zMyA%=QM<0D2We6~;-?TJ2Wi-0U9=HS?XqXzDH=t3>AaT0ZB%qa3uZRZiyl|?Td=GQ z=*;Xiq`m|OtIJ5eCeP=?zLoHBzy1P7TRyfna)?P|6ZvAEnG=e-5&6IM1I(om&n|M< z;5g2MskK3LmBG5VO&9rlj96D)8dwOexKKB=IirbKC+_psR}I+1*B~ZhFUFpLNHOCY zIh%nA{u%a(8%uUr3(2Oo_NQx4Cv4a*C#F`fVB4$kGj%7I4)d`R#BAvk6gG6TAesmI zNO}B;vrF)GMPj|EtQ|w|`)sv9{jobg zQ1I(m)X~w!oG7zvCAaAOA~EM2+B%Dyb z=OIbk8-@L+UQ<_}KTqTYnLT@V<`XY&M%qwZJ^B8^whYYsUF&wn4@eX07N4OcxlzgU*3MYTIUoTE-U;R z6u6U%JjK;_8<_bTTwAL%f>>d)Lpjitj`v@y5*|(x5qIYnzZ4YzOK2N^dGUM6cy*9R zXbgVETTNr$lLcA42tb6Z)GL@~nw`&VWA^RK%OOBbuVXi--#?=Sv{7(e~-g zL5l!|x}up#gZ$o*jUBsD4^nbuiloa&G_SUvayB&!rmbQ-Z*BWSH3|jGwB}W~dH_UC zQZ``YXH$Odi@+)eq?nvBIs3P?4qn{ynlcxQ@Z`3&mWHs%)Z1(oRHML;djQD?MeuY6vxeppctG!d1y2N7a zp!yG-P4Rof&^Xeb=wvm9?yBdgSa)$r+i`*S{-|5ni2LBo5(!ah(0$|_rM!rP?LK1b zt0`vUgb=o=m~=X*l&`6$e8IF-+=sRuFI^yQKf~=^$Y`5JL~#_qA;C6C`X)U%tdAeb z@Ab~h6XY>=B%$#J!%QH>PNj~dUGFw`?%gU1NmuV{dGEF;!cn{AvWOJsXtMJBO(B1s^MWEVVq&G%TB;)#(^AFB8ooZa|YhQq0_a* z>D){vKtmnbx4&%x+&G*3`4P>}+Bwfw-_eF)jO%mO(bDIL7elQYN?%HY;LmnuZ$#~M z@Oc)-fTO)T2<+QV0+XW$Yf-a%YJA;^tSh`X4BN0*cOY5!gE`l$0%wyG){%r ztZTW|jBpci=y@5Gv-Xt29l~?Cc7AvZEo5dP)QLOs&Zn%Q-}rIlPaj@dKzo3!EA&95 zkE_sG7SkUGwCxMMryy4dzL!&NYvdE!QlI0UNN`e39v7uh69(m~yf$IdWxghC0dWcv zwJT+sfZHbUAzDUX8&9~1a_Pa=N*}?}ZXS_THeCWu<#`A>nYfDYL8#tnLNn%XsenV) zOKDw#?jkF+!u}hAvBpwvWJh~8m+PZmeOUON+aw;j?d zQ=jZf3d8IM<_)oSLiAcnM2>n)+IDtck;Uz@aHLejV{)ISl3|fB1&7#s5;#vwRl%46 zA2ja%%?BF`yLTxp-D)+=(z)&2I~q(lgZ0Zmek`o8zYz2%MQ`Q_3%Sl;sBcgOA8397 z@A_{-yT~q;L|RP;%F0S3Yp$hdu922)6~yLF#CM3@8BdY1{Id(V%b^lKJPdzlwt(I_ z;&b_8(RLGrkuJiIn)4yF&ybM|Wvd_|#Z?r{){`&2D@tTO%!Zc~6*n$hMNU=gz0u5H z9=`tHN)YBUNEHZ+EhG{MA`ZQf);Wg*Oe{~$5gk#E=+vmYEcBj4X(!$8t&|4$<1nk#+6wjWxNU{%NfiZ;w!vB+Yv-*>EE9{fgdmaxn z|B0vnuQi+ZHJ2K{+L^UUTTN#FSEyQbvF*Oi4<3nJE&WSj$BhZOg8b=b<+#mxb5Aaz z$ynbm*Nd0QJ2PclqJ;oaMsNV*9+?r~!&@3>-@wqn#p0iqM<5e)U_Q()8V3X8kVi-uNHAF&6rTC61_Fjke|^G6%Z<8 z{L&<-jI<)ouL}}hWUFSrEU_R}$rtBNqODAlG@rMrbs0HlMSE`-m3pF=PU;peX~Axk z*f@|NW?39lGb*ldK3>)E?aYH~>CaQ+inwc(6I+fSg_Ch3;%~UyaEXVl0il`XxvQ-W6oXORm zIXc8)`p119?IJH{Re3oxTkcTdOrqCl)mpy%Ma}^0#}vAu207cmtoaMraapJ}{EIU4 zRY(6ZnN~#}@`|&&$bC zKp*7e+14W$eh{4z4jPP9GkZ%Z@zFG0qdbaeby)!ouPQWQXm*cQBjYP>aPqiP?Z@!@ z5@@$1J^~{XUpX_xp8x|*mXvuoNt{fb_q|>Cj0H0vkR7nOOY|9WLppY*5#KY5XZ<32 z+x2S_^?8o<&t=UulH<5-1rf_}Ulos)NCpzp0{KDneO8(BI?eAzR%Eg<4Q+2nlX`M3 zg;#RKB-X;etoD9CATZcQ1gs*oGu`Kf|L~ZrwVR0DOO9PdrRDtZ{{k2uua8MuPqx_b z%|WD0oE$gV37Mg~uZt$0ovvv9Yl-ZJ5cI}wxGd76lg6B5znjNOO+oR|TWEqllMItY zR>+|MTDzMt6)sYw!c$Di^dk>uNXE5fjS#VpT2o6mvyCHl{Q57vAQ9=80SJA2@tBK! zEhV6QR1dLo!$jk;1_D}+Xt?Tzc$1UE?bqqU)WUF_qpjGow4v}6XP9DO)z-kB&H4UF zJxR7if~Z0{n+LrAo=JZSudRN+#93ljS%mJ@${OkIp>#R(*2)iy3>ILBdvL#G*~)S| zb(Shfizqb4%QYEqmkm_7ii>QF%$Reen|PmIR`N}Eo`eY*R7-g;-_^a5;w|(OB>mmT zBq12|s~zQBa{C6{JCsdYT6iM4$iFo$R$DZbp~{dO+SPy_6=VMDd_|F~=$;JSr70}7 ze6B%JkWk9pAgb_PY6+S)HYw&9gKwj}Q0`{9Yt=$B*{OuQ^s5V$yub7|o+4z^1kC`u z)zX*B+J92_vuRHzA#;e2efHo*sTyMC3)2M-lp}FvIn8Cx9LKSdehj)i z_P_&6Lv8|=U6xDE41BhVphik(Gpd!$62T0gxK@e*_RC)OM(A{vPjK!W8?Xol3$%Fk z8NUyUh>hk*Q zcakngwih(g52Lpiy?Nl%9z*+g^W)CaPQU1S+h2;8eA~jU0e$aUHa=hNy+eByFFFJD z3+Z2mw%Hm^EVH%TXRWufSlr zYsA54|M`JC2SQ76=MWTfA-&9V-#ID&s<)pO!K)h32%cxvTjavuXI8?n`=<#1pZ@6n z6s;T7HFDq$md9pq4k!+c;FSNpjKln=Sd>LKIZgO!dXS2BcDg^bxTI{#yXQ}hc_D$_ zz*M#|+H(e4CIE6ckBwsFz&w8%_lG4syLhkh{H}ug7$nWUR(}3^_t_x_<-UmlNsl?Z z_+$OgWsY*l@ySldxB)I1nM?KA)181C}PrWv{h==F;~R4}84jk{VQQ&2DpKBiPp z3+GX(dw#>1ynOcB!25$29r~n;DbxCv={><#%87dc`_DkoJ2i+6qex9DVf$y?QBsme zBNxep^jqo&mwZPgLkkdMJb6(9E$%?CTg*8%mLM11reha~DLVN~&7zPZ^G^AWI7XM- z_5;;g@^TY%^A^rZbd*}Gubs4U9xs2wlz%>F0yf$mS7^~k%`ZxS>(2iMc;=ygG^b-j z+DJe07*l%XXZX210@+sI10T*+&0W%>-WhzS?#ksh(@0N{?lVJowBH@jx>5!}*3k_v z_7W)$+t~8}Gi`|)HfXj^3w3e{j3F=9+C?UD*n=11 zH7)AE)LE@KsJ^CK36L5<(}& z&7E_I814k|t^EJ7cv~SDoUeLK?O-Aj>KoFvQ0BeDDm$ND#Wkh^Oa4i*;fk}M{#)od7P0Oo% z&&VYw?eTP5Hahs$*i4V~{1bztC~)}0C`CguvULt%uph_du%p@wtGr?#8Hiz>eK7b- zM*vb|LO`>3#D>dJ>c13!^ z4Jsn>2?=kZ>u>+CTmd0nnBvNygp~gW7Dy`$VPLVLCfi9$e7M=y3oI{?#`9=3=jF9h zr+Or=aH)*r{+_FJ3qeuiILY=I79zH?f#eshZ6<@{(4&v(%!m2mb5k`b!c4AVN&n{% z2Wco$uB)qEmUQ~59@bx6_LjTr>NesIq54Tk+gE+Xw|3=rAGAr!ZyOpqETjPV@m#8{ z3+#P#ZG4M=)@8g-qT1)>9&q=jqs4Dk7+sl5`(-%7_tWoVH^*UNqd8cGG?e+pZ6%<& zWIeB6?9Uu3q#`*GI4)SSayAV@*0Eyp{5q!o5GMDfZ5!&5L2K<(w%I6=U7!}SsTg^6 zEQVc7=gu+o|4F(}s21H7_yQCYW8$`OhyJP5X?t|xe zj_191-F4p&_rv|h8fMKiv-4N~y+fq`rF35YPYYBVHj4m4oq3`q)ASokho-SpIgOvY z&;cI0gR^5a2CUw#k{L|Fi^)4Vq(q(M58tWYs;g<7lIr6$jfLvy)cF=Htza;ab=2u| zB}5fSu7$$Xr`|4yK(T>L9T`)JM?-m%LTJu5YgkSNU*PEUWHat9nkd4aO2$>?3P_Ct zk0f^hRbRKo*jsCa|GOXZeG7#M%Wl4`b2T9SgW3BsR)ZkU?y*6kwUz!fk8CAVa0isg z(7zXcgd^WJN=8*vtivSMcw;}&mT*2YZ z57%Rk_XI)E=;01SEerR{acg3KG}jpQ=i`vE1>QWIKlfNH6=07gyu{u8Pw5))UgtIY zOGMNE6fp`t<#@WA{OkW?l-obmt}Wc#%~!4QPYtFvHMSm5`!}Pl?fLq)FSd0Y?oD>y zOg0w==7MXYRB^dDw?!vt+pySilrj;17Rh91rs@*b2x)S;UF-!-5kj|&-{&Q4jU7@L zG*)>M`42tPH8rYPR=NA$P$@l*C^jH;{a#_%6aggB)jRh+L416ZM|?ub+fFSgipA=r z_P`h~WcHZ3fW?qoEeWPp5dcXhT_G~eaznvEE;wnjWnTk1!wTjDV_HA_Zl6$s&s!_F zf`tyF3>KR!)srR%$JJ-+ban59qe&`c3fUIX@ST3Y_r0|-@MQlS(|jL$*iTE5gCHa2 zj!qyA)uC;h^mQF)b0l9}XpoboK9RV6(rNGzIEo5qDT%MzKQP24d2oY|t3mQ>Ws{Np zt{8d~UQUG;jkCjx-J^2a)U~j%A$5A#I9oN%2EA6ip@4}LLx&9+6dF|J?+uLrzm9M` z3zb%9ppZ>%{g5_Dbx|tBzOcTJtx+yv+JSR{@A2r5{KLJVjlIg0f~MLUL|>d_LrYzk17A0x;`Uh~erwY;>!XE+tDTTI1rb@7 z?u(1U66f3P`O(qQ`7E9WLnkOlMGx~XrMuPi>#79AqzA?-8FU%^PPx8-qR}nw@o!0Pr0ZG?v^XyYl+U7KqcsoTMf4VkG+nAk@;vnMN zuiLx?e(8_pG04&1ZIJFiJ9LkBgi({BfHsNKXhjbpd|Nn!;04-TUvj52C&f^vI{R&l z>a+jYF(m0%P2^{$N3GKiiCZVxvn@05tOvQ5Xh{pB%eToPC;PAYs5vFB@Wp*U@CjlA zVJ@`0w;V~*^Spf>Ozp>TLnB+v(-5+%D~?(^fj2(Ai@F9L5JF>BZtM5)wNjmHA6L|; zino%kq8O=Ypw<;Yz2)!5e+(NYBzmOv%vzuQu?JO{l(@rsa!`gQ9kvX&D}l^g_Z?a|+l@+@=->^*D&SwwOFSgc8<7%WanTZ#Snn>bi2Kh60V(*b*= zfzK-Ro9}k(h^<($>Lt;l{1($=C2R_kzoCc=>A~3iXjl#)j_PryN+mhbg<`0SZdu7z z<8e;sOi*@J(~*H)c@-iS&EadT)fgd4Vkev8O8Qy`@IybAO8D+jSI9QoF(FHDR!5CB z8C}miv6xV`IaE#L4N27(Oev0&txNGzDp4ULM_T8L*s3vqGRDdrrxd()&Loj36NHwF z8~->>J@Q6ANH=))8_}RhEMuPuzi2x8)ic=)ltX(M-+pKtw+iZe8U@(rWZdn;;9B^m zjDl2iQoY1lQ`)HvvS>BJ5Rq(JCfSVf!fxFx*D$3s35DC4X!+((i2q<~YqF=d&^2B7 zh%}HrSGXzizINsEHaV(r5&zQNb0_&B5JsL@JOA9wJM?R>_Na+uO6)^CXtc#GwxzAO zjvhV*!``R(jrXgXUfHqAHQgQWL?U~tY(vlq@o~)zYAJCHlNh#}Phu=lu}ZdXP`B4O zvC5`X&{XWluMGjP7fh3sdk3jp>zcl1gSs<(3CUdgh*f_VYDZ4f4t@3 zfI4QiJvK9Z3bMRilu2}kJXv#8p!i8))1@Utwrq6BaYeZg^+uih!>(((DkrpoX&o8% z5Q9AlMoW)!OW#KJ4DKhqbeV|~?(b#Hl$~V8V@T=zRdw=TX?||iyeOy~dtVRL;Hrf( zDt{|)ysoblQ&NCH62LEqpgs!XXH=!h^O>KlMlsQX!@69Kod#1h zAX@dM95qOAs7=1P690F$h;Nw>=n`loX3sC?RPyD5VoPgXbT%z+lU23C5F-BvrvdZ=yL1fY*y z6-&85sgpl{x@L4r*Hn7_(-z;z0CPbwaB@Mkbe2RZXaF5^Tfj1gQ;T@^7(3Ik!R#!< z`^}B>ED#lK`7EIG-JYr;ISTW*cOVcZuzLz!^y7w_D8#)20N@HDcA zP86{GEG6tuS*Is<3CS(wl{U;M&7y(BggO`^Qc#fYee~un)xIN)1|@yQlV6!;jRp0yTwXO09>o-Pm%S$z3Nu5myH(w`1} zg*yylzho!mO}P{dW>`~~=Pb+Rp)*ZDN~;Q0)!ub%-|&IG@{gi2WH=y=g6u?-=-3M> z|6**-r0eIjASp=3N7krJG9FJGri0uJrQqLsEmI(Cnb+eT^(HU(*_dH!BCC?x<)@*@ zaP;4B;SC${le;9w0WtBfRQ2XFAM#U3^QV+x)Nf?{OVkv5%5z4B{!y3?NS(tzfJT-0 zU2cTvA8_{+y+i^gQ*IXFr`LbJ%9IYs2_$>+OfY}?Qn?=ishfP~mHZ#|`oMW1PY4}` z6IJrhIVsrAJ+Zcz51tnXcq9=Hk1rmR z*BM@q@x7>H9S-(o8s+m2LDMZ4FH_C)HNyw~az$EMq(TdNX>Pep6vP^FPh9S6nO^fl zZkaVgPQ?2)({!-!7@s9Xi>`5}7Clpo(G@Mjc1ici7B?w7JmV0Tr{+)v8{TGuj#H~s zW+Kdeol(x5?D$e(ph;GdXHQCF8f@~Tj=^rv@xMatdpb*??K_LRIBS%$N0>4oRCDDb zQOxWIU#a~bu}}Rs{8U`?QqNs!CZ$wstIA@(=HT(#(<12z?a$ueCHj2J z>haYq87Znx*3Qn(>P|(}vP!=8=0qpJJU&V7=1pV20!y_`I8!U);kvgXFOHqAIMOlA z!BX^P_{PFb?pTpBceKQos{ji~q9)6t55?+_FX5;1Y>L&d?$TA!iKnp+rFc^ayw}Xj zLV`P(fmE@w&zF(KATeWqIU_+(NzU-NkY*{-8i^QFE5QC*5J`pkPNi}>FQr|uaYbL$ z$i<8`y6)pD#|^!)F>hl87Udt}9U;+YXFVT|)0dLuabnrCE3*0XsS)u!BwjwV57*jV zALZ)S9HwT@O;qDkEds=dXkv*}wqp^SBaH=Dn~N;9#>-Lc*voTR;&X8jPCGNW)#NL3 z#ESUUE+5@!WSGVxW!zSr|2Sua?x}3WulCec$zc+7arF=)bRmnML~3<_eBk?0PcH&F zO9iw>O^kMONt8z?jlD7LWtginA((?zXFL!}KCv%Jvg;s39%E@bS*A-j5t@bBjwSiA z=pPl1{P`Oka;So*xW=!Ab=3SV+oT&HEW;z9pnY=OaU&4>{89x^YuGbGpYQ zZ<|EX5t<*RN@BGCh+bn@JfElKnZ2KjnjBG$3e}hI6^DxIX_w7k%N*;Qo26blN5UX1 zB$?v7GXJnhup#TNry3g`ijzXpZZhQA{J5lL#DguWRKMZd8xbiID-l+MEMpUq0NCpE%Yc+|4U%z)?ICZa+9>M6!BD8`PhIwHv%nFnFMnAB+^Oo!;X z+2*UOH$1I&7vux?l8OBdqbejDU58>j(&CE}Gf1^p<{cfOO8Wx(|B`EukY^=UcUYJB zlrd$l2=i8?%&Yt7=hOz@>mH^(&+Kr{+J(An=<>-8XjWA^4_qm=kn^ef&r;nhS)4#N z9ufT}xoGa`7o^$~W2>nDj(qJbNDs=p)59jy@PnmCu!3S{ob>6nbmkOG<*R?*1)us^ zC=;_$?6p`(;Ny+(Qo$E6Hs~oB@W<+j!3ivVdQ%(5bpNcfz<+N@fXQbyPWJC-0kBvP zaOCy&>fgQok0ZYXEVE}JSTFw>0Dys@y$8G)tPz*l`sbszpXAwQnauZpF0#QXz>8&I zTc-ci+=8COeO6PHKV++CUS&@M%TXf~>Q6P|n-zp7SWT47_}j~@vs|Y|aCz_M?coCx zp_0Pt7xB4(+x#Ebc$2+;UM0K~Q+m&jciZ@vFKlus)V7B}jQ7sa)$rk;qaUs&lUzRG zS6TKRoR~|3@yzc7SY;<$)}<~^ygx|n(_C4~Gp6%i`Z?$a>@2)IlnlyIH7aXxWXU;S zc+3}ZDwA%`lqi$fG33{}?B~4^os%NfUz;**(93Ykr#|01E{MPRzFg>TzMVXBNGZgA zJ3mrzT0~YVc{BLPI8ZsIvUp0-XGd{L@sdyus3Y(O#)~~4=9=UNxcfMTsq>k!tH$RM zY^E4Ng@ufg#t}@1mRP{t#8c1$3)H(BjzqDWXs>9(vxFLh_#}?3Wfd zr9LGtUw1@&Ah9VXbs5#{d9lnZjZ%U@$`1atK`)MP0AK#L2J7_Egv^NxCZnE4&5$NL}3m(BM|iv;SHH2%)L z<(KyrRbfW25GlM_c}ag9xZiV>#)QS#mRT7240V;-QFiv$4D!YihVD|(?Ob1^sj!>B zsUy6+z?5!oUdi!fC4XpmD^47#yk&i8)pQr>V?VUfr%^aHm2$^SJ7|U((a1v;SN*j5 zBeFK#aCY=Iy7rJgsbVn8H&A~34bMC=L<9D*ea}V?c9ZIQ%PV(U`W2c5`cg_Fsqv(w z?~@L@dy^)l%gk9WOf;mfEE$~@^7IK&OPbx43vh4nl{qV$o;BiOJ;!e*ce=>6cZe2A z);hRDjQjE~DZJ`D^D1sZ%#(H>HwRnmNEhSoCvMI;Nvu0qO7x}ZLtNoFddg#h(kL|V z_(K4moo)^7aQ6H}+^ld%(s`J0{;tt8_7~Ei_j-EgbRK7ACm&7>7w}3w0xQ3hAr{Ae zZ2R6DKdH_L*=P?^FwrNqW*FKAu}Q1SaXB@CPRYgPId7xtLVON1!V7D8-KTz#wX@Vj zU9RsJTj^L{9+Nr~>fkBLQ(>AL&?tm=i-_A8h*4YR(dzS{nhavM%r6^-1m1Y@Ud}c# zqzq&?5MI;H&F{Xgo2A{5n%ZDZ$_?uT4^6xh{-DhTq&ZTVacmmGAjb$??1o4oK17Q3`_;Ta zugTEqHPp$T`)EA&X!eLPiS0X;hB7>hM$$tj+QrVk9De1Tn7k>$Q4~Wv+7o-Ha+O%# zoRT0PXF1rksB8d>=+`Q3dbv(VA6IgQWIz{%4I6#Kzmrzij$;XpRC7tu7Ol{gCdk;k zlmQo)#_|H4RZy&}JkgfNPG}QlVs%tZAaHAi$U@DHGn-~BYK1QYH)LG(dVF{nM#z&P z{WaP(flUDESQ3XfBS})nr~F{cUKX>7VX=py0y>NM#G>S}!fEoP^Ql2seRwoQ!5B+R zNYUClavA;R_z%Zeh$aijnX4-MN)qEw?YR@cy!0hhevb-8y31Pz2^A}OQBbc&h)nSr zCy;0g1ng0r_m!~Q`<#Xzw^W|Ep>rAoIF&jh`-z6;LF<-sE4yvB%Zkg8`5bcI8S>Rl z_e;eRq4kbJLE~9QON@oo#*BxA*IcBp#%(e_=I^H=I(AonnLn-v@7*v_OAJj8NhM`# zTZlkbPIiz}SVu`7MNULFnEGK?nPC=zm%{|PiP@RJC3X)?9$V9+x%BWiOAYSEE;Qp* zip)Fn_=w(bN>Oh3SJK$qIwJLF!z{0t!JUxQHd=}`wCg5(F@i|gN}R@igDJhOUtLL# zKw(_^{Ixf=SlvW~$Cs14DQ)YoyeTWCJNKX9){ zCoVf(ejM7Hl#+RfA0OD;vkDir%oyL-y9mfJD^^pRB&us~ZC)znK3NMO)U;u>NMw;^ zy+c(R&g!n?;Izn)Za}?k&)as~9=okq6w>K8+X)D1@&)hP@vMe~6TtURhDUhlRPl*R*M7A{(1d$*OW2Qo^?N9~_O9 zy}3LSO6FgaEj)TYS}CT|Tc=sm5_Ow7kVk48CdRg@q z=pj1&gDLriKL!R|aw0VFt8aO1#q(dsnlzZ5aMvkK(EzgldYF*HN zJwZ*)h{#Xd@1txMyTj-Uj|r@U7~scwPNwBn-W!D5{7xgm+>{s#4gc6x8SfeaipB1z zj_ylZrkI$*sppNwlMDCY0OI^>1!>USkEYRjlc?Q04m+WTuX+7r95)4OsA;&U3!xsi zS~b1)jOcdPyVRx~*rRdC&iy~5Mn#@^Swhr$W+n~BAB+ti6e$2#06eqpVROmiNRU3> zuQ1XRx;CN2X_Uu8PJj}RIf-o5XDE~3z1luIxft2s#tCiD`GBU~A7scN!1*=;uZXv5 zy4Fdc

yMZfoSE<{aD_|fOb~6MCO4H4^wZO- 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 Date: Mon, 21 Dec 2015 13:45:11 +0000 Subject: [PATCH 052/131] Minor changes --- docs/topics/documenting-your-api.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/topics/documenting-your-api.md b/docs/topics/documenting-your-api.md index 8511c8a3222..cfb5560dc95 100644 --- a/docs/topics/documenting-your-api.md +++ b/docs/topics/documenting-your-api.md @@ -14,9 +14,9 @@ The most common way to document Web APIs today is to produce documentation that #### DRF Docs -[DRF Docs][drfdocs-repo] allows you to Document Web APIs made with Django Rest Framework. It's made to work out of the box and its setup should not take more than a couple of minutes. Complete documentation can be found on the [website][drfdocs-website] while there is also an available [demo][drfdocs-demo] for people to see what it looks like. +[DRF Docs][drfdocs-repo] allows you to document Web APIs made with Django Rest Framework and it is authored by Emmanouil Konstantinidis. It's made to work out of the box and its setup should not take more than a couple of minutes. Complete documentation can be found on the [website][drfdocs-website] while there is also a [demo][drfdocs-demo] available for people to see what it looks like. -Features include customizing the template with your branding and settings for hiding the docs depending on the environment. +Features include customizing the template with your branding, settings for hiding the docs depending on the environment and more. ![Screenshot - DRF docs][image-drf-docs] @@ -28,7 +28,7 @@ Marc Gibbons' [Django REST Swagger][django-rest-swagger] integrates REST framewo Django REST Swagger supports REST framework versions 2.3 and above. -Mark is also the author of the [REST Framework Docs][rest-framework-docs] package is which offers clean, simple autogenerated documentation for your API but is depracated and has moved to Django REST Swagger. +Mark is also the author of the [REST Framework Docs][rest-framework-docs] package which offers clean, simple autogenerated documentation for your API but is deprecated and has moved to Django REST Swagger. ![Screenshot - Django REST Swagger][image-django-rest-swagger] From 958290724ca1bc83cd1b2c814e9b0d3832a9c73d Mon Sep 17 00:00:00 2001 From: Emmanouil Konstantinidis Date: Mon, 21 Dec 2015 13:47:04 +0000 Subject: [PATCH 053/131] Rest is "REST" --- docs/topics/documenting-your-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/documenting-your-api.md b/docs/topics/documenting-your-api.md index cfb5560dc95..6f0125e7076 100644 --- a/docs/topics/documenting-your-api.md +++ b/docs/topics/documenting-your-api.md @@ -14,7 +14,7 @@ The most common way to document Web APIs today is to produce documentation that #### DRF Docs -[DRF Docs][drfdocs-repo] allows you to document Web APIs made with Django Rest Framework and it is authored by Emmanouil Konstantinidis. It's made to work out of the box and its setup should not take more than a couple of minutes. Complete documentation can be found on the [website][drfdocs-website] while there is also a [demo][drfdocs-demo] available for people to see what it looks like. +[DRF Docs][drfdocs-repo] allows you to document Web APIs made with Django REST Framework and it is authored by Emmanouil Konstantinidis. It's made to work out of the box and its setup should not take more than a couple of minutes. Complete documentation can be found on the [website][drfdocs-website] while there is also a [demo][drfdocs-demo] available for people to see what it looks like. Features include customizing the template with your branding, settings for hiding the docs depending on the environment and more. From 4204557bc5086fbf9c8da9476a9efde92e10b8ed Mon Sep 17 00:00:00 2001 From: Emmanouil Konstantinidis Date: Mon, 21 Dec 2015 13:55:11 +0000 Subject: [PATCH 054/131] Remove title and hr --- docs/topics/documenting-your-api.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/topics/documenting-your-api.md b/docs/topics/documenting-your-api.md index 6f0125e7076..de5e24eb24c 100644 --- a/docs/topics/documenting-your-api.md +++ b/docs/topics/documenting-your-api.md @@ -33,11 +33,6 @@ Mark is also the author of the [REST Framework Docs][rest-framework-docs] packag ![Screenshot - Django REST Swagger][image-django-rest-swagger] ---- - -#### REST Framework Docs - - --- #### Apiary From 1925ec7d3337d7abf39ffa4f6f53ade50800f665 Mon Sep 17 00:00:00 2001 From: Emmanouil Konstantinidis Date: Mon, 21 Dec 2015 13:59:05 +0000 Subject: [PATCH 055/131] Both are highly recommended --- docs/topics/documenting-your-api.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/topics/documenting-your-api.md b/docs/topics/documenting-your-api.md index de5e24eb24c..50a4c22e23f 100644 --- a/docs/topics/documenting-your-api.md +++ b/docs/topics/documenting-your-api.md @@ -18,6 +18,8 @@ The most common way to document Web APIs today is to produce documentation that Features include customizing the template with your branding, settings for hiding the docs depending on the environment and more. +Both this package and Django REST Swagger are fully documented, well supported, and come highly recommended. + ![Screenshot - DRF docs][image-drf-docs] --- @@ -30,6 +32,7 @@ Django REST Swagger supports REST framework versions 2.3 and above. Mark is also the author of the [REST Framework Docs][rest-framework-docs] package which offers clean, simple autogenerated documentation for your API but is deprecated and has moved to Django REST Swagger. +Both this package and DRF docs are fully documented, well supported, and come highly recommended. ![Screenshot - Django REST Swagger][image-django-rest-swagger] From c5003e8dc18b80cce6eab27d6c63fbf36f998400 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Mon, 21 Dec 2015 18:02:24 +0100 Subject: [PATCH 056/131] Update the Django-guardian version for Django 1.9 --- requirements/requirements-optionals.txt | 2 +- tox.ini | 21 --------------------- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/requirements/requirements-optionals.txt b/requirements/requirements-optionals.txt index 3ada43ebd5a..bd488f05228 100644 --- a/requirements/requirements-optionals.txt +++ b/requirements/requirements-optionals.txt @@ -1,4 +1,4 @@ # Optional packages which may be used with REST framework. markdown==2.5.2 -django-guardian==1.3.0 +django-guardian==1.3.2 django-filter==0.10.0 diff --git a/tox.ini b/tox.ini index a027fa0de27..b094192c4a6 100644 --- a/tox.ini +++ b/tox.ini @@ -30,24 +30,3 @@ deps = -rrequirements/requirements-testing.txt -rrequirements/requirements-documentation.txt -# Specify explicitly to exclude Django Guardian against Django 1.9 -[testenv:py27-django19] -deps = - Django==1.9 - -rrequirements/requirements-testing.txt - markdown==2.5.2 - django-filter==0.10.0 - -[testenv:py34-django19] -deps = - Django==1.9 - -rrequirements/requirements-testing.txt - markdown==2.5.2 - django-filter==0.10.0 - -[testenv:py35-django19] -deps = - Django==1.9 - -rrequirements/requirements-testing.txt - markdown==2.5.2 - django-filter==0.10.0 From f15026be1071845aba46a31da47a7dd3a4ba3fdb Mon Sep 17 00:00:00 2001 From: Michael Lissner Date: Tue, 22 Dec 2015 10:31:18 -0800 Subject: [PATCH 057/131] Fixes #3756, adding the name to the HTML title, if it exists. --- rest_framework/templates/rest_framework/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/templates/rest_framework/base.html b/rest_framework/templates/rest_framework/base.html index b97e36aa3b6..5eb2c972972 100644 --- a/rest_framework/templates/rest_framework/base.html +++ b/rest_framework/templates/rest_framework/base.html @@ -12,7 +12,7 @@ {% endblock %} - {% block title %}Django REST framework{% endblock %} + {% block title %}{% if name %}{{ name }} – {% endif %}Django REST framework{% endblock %} {% block style %} {% block bootstrap_theme %} From 5fc938cbd166fdf02685baa316ecca5703450d5d Mon Sep 17 00:00:00 2001 From: Robert Romano Date: Wed, 23 Dec 2015 12:54:17 -0800 Subject: [PATCH 058/131] The Internet Engineering Task Force approved the new HTTP status code 451. Adding to status.py and docs appropriately. --- docs/api-guide/status-codes.md | 1 + rest_framework/status.py | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/api-guide/status-codes.md b/docs/api-guide/status-codes.md index d81e092c560..e2652bcfd32 100644 --- a/docs/api-guide/status-codes.md +++ b/docs/api-guide/status-codes.md @@ -89,6 +89,7 @@ The 4xx class of status code is intended for cases in which the client seems to HTTP_428_PRECONDITION_REQUIRED HTTP_429_TOO_MANY_REQUESTS HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE + HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS ## Server Error - 5xx diff --git a/rest_framework/status.py b/rest_framework/status.py index 90a75508968..ed1b4784bec 100644 --- a/rest_framework/status.py +++ b/rest_framework/status.py @@ -65,6 +65,7 @@ def is_server_error(code): HTTP_428_PRECONDITION_REQUIRED = 428 HTTP_429_TOO_MANY_REQUESTS = 429 HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE = 431 +HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS = 451 HTTP_500_INTERNAL_SERVER_ERROR = 500 HTTP_501_NOT_IMPLEMENTED = 501 HTTP_502_BAD_GATEWAY = 502 From c8915c07160f3286d8d7d9c1258739cee067e054 Mon Sep 17 00:00:00 2001 From: Robert Romano Date: Wed, 23 Dec 2015 12:58:14 -0800 Subject: [PATCH 059/131] Change tab to spaces --- docs/api-guide/status-codes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api-guide/status-codes.md b/docs/api-guide/status-codes.md index e2652bcfd32..398c048049e 100644 --- a/docs/api-guide/status-codes.md +++ b/docs/api-guide/status-codes.md @@ -89,7 +89,7 @@ The 4xx class of status code is intended for cases in which the client seems to HTTP_428_PRECONDITION_REQUIRED HTTP_429_TOO_MANY_REQUESTS HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE - HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS + HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS ## Server Error - 5xx From 9bab640b0a9908cf9777da6efae8dcd1e158a980 Mon Sep 17 00:00:00 2001 From: Kevin Brown Date: Thu, 24 Dec 2015 14:00:49 -0500 Subject: [PATCH 060/131] Added tests for min_value and max_value on a DecimalField This adds tests for a regression where the `min_value` and `max_value` arguments are not being set for a DRF `DecimalField` even though the corresponding `MinValueValidator` and `MaxValueValidator` is being set on the model fields. Note that this only appears to be a regression for Django < 1.9, as these regression tests pass on newer versions of Django. --- tests/test_model_serializer.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index 57e540e7a5c..e2c3a7a4761 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -899,3 +899,29 @@ class Meta: serializer = TestSerializer() assert len(serializer.fields['decimal_field'].validators) == 2 + + def test_min_value_is_passed(self): + """ + Test that the `MinValueValidator` is converted to the `min_value` + argument for the field. + """ + class TestSerializer(serializers.ModelSerializer): + class Meta: + model = DecimalFieldModel + + serializer = TestSerializer() + + assert serializer.fields['decimal_field'].min_value == 1 + + def test_max_value_is_passed(self): + """ + Test that the `MaxValueValidator` is converted to the `max_value` + argument for the field. + """ + class TestSerializer(serializers.ModelSerializer): + class Meta: + model = DecimalFieldModel + + serializer = TestSerializer() + + assert serializer.fields['decimal_field'].max_value == 3 From 87605e1e39d8069805345ac72ae5a13088a2df53 Mon Sep 17 00:00:00 2001 From: Kevin Brown Date: Thu, 24 Dec 2015 14:10:48 -0500 Subject: [PATCH 061/131] Don't filter out the DecimalValidator if it is not supported Previously, all validators set on a DecimalField in Django would be stripped when converted to a Django REST framework field. This was because any validator that was an instance of `DecimalValidator` would be removed, and when `DecimalValidator` wasn't supported (so it was `None`), all validators would be removed. This fixes the issue by only removing the `DecimalValidator` instances if the `DecimalValidator` is supported. --- rest_framework/utils/field_mapping.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py index 1d8cb22f2f0..22a38050d3a 100644 --- a/rest_framework/utils/field_mapping.py +++ b/rest_framework/utils/field_mapping.py @@ -130,7 +130,7 @@ def get_field_kwargs(field_name, model_field): # Our decimal validation is handled in the field code, not validator code. # (In Django 1.9+ this differs from previous style) - if isinstance(model_field, models.DecimalField): + if isinstance(model_field, models.DecimalField) and DecimalValidator: validator_kwarg = [ validator for validator in validator_kwarg if DecimalValidator and not isinstance(validator, DecimalValidator) From d797389cf784b3e55179f5bcea51379d2d37f42c Mon Sep 17 00:00:00 2001 From: Kevin Brown Date: Thu, 24 Dec 2015 18:17:58 -0500 Subject: [PATCH 062/131] Fixed broken test for Django < 1.9 This test was incorrectly checking that there were no validators set in older versions of Django, even though it should have been checking for the two validators that were set up on the model field level. The originally regression test that this fixes was added in https://github.com/tomchristie/django-rest-framework/commit/7d79cf35b7be01b175d8c25276a4414e8144a16b when fixing an issue with the `DecimalValidator`. --- tests/test_model_serializer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index e2c3a7a4761..2976b1984dd 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -884,7 +884,7 @@ class Meta: serializer = TestSerializer() - assert len(serializer.fields['decimal_field'].validators) == 0 + assert len(serializer.fields['decimal_field'].validators) == 2 @pytest.mark.skipif(DecimalValidator is None, reason='DecimalValidator is available in Django 1.9+') From ff0292a757ea446545dc4425562a7653b5b9bc64 Mon Sep 17 00:00:00 2001 From: Leonid Shvechikov Date: Sun, 27 Dec 2015 17:14:33 +0300 Subject: [PATCH 063/131] Fix update model example in html-and-forms.md --- docs/topics/html-and-forms.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/topics/html-and-forms.md b/docs/topics/html-and-forms.md index 7b8f1ccc219..73e03acc17c 100644 --- a/docs/topics/html-and-forms.md +++ b/docs/topics/html-and-forms.md @@ -66,9 +66,10 @@ The following view demonstrates an example of using a serializer in a template f def post(self, request, pk): profile = get_object_or_404(Profile, pk=pk) - serializer = ProfileSerializer(profile) + serializer = ProfileSerializer(profile, data=request.POST) if not serializer.is_valid(): return Response({'serializer': serializer, 'profile': profile}) + serializer.save() return redirect('profile-list') **profile_detail.html**: From ff29fdd8755d7e61f9722d03fe4c3c33809ea716 Mon Sep 17 00:00:00 2001 From: "S. Andrew Sheppard" Date: Wed, 30 Dec 2015 15:44:19 -0600 Subject: [PATCH 064/131] don't import authtoken model until needed --- rest_framework/authentication.py | 12 +++++++++--- rest_framework/authtoken/models.py | 8 -------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/rest_framework/authentication.py b/rest_framework/authentication.py index 9e73ef6324d..30e137c9312 100644 --- a/rest_framework/authentication.py +++ b/rest_framework/authentication.py @@ -10,7 +10,6 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import HTTP_HEADER_ENCODING, exceptions -from rest_framework.authtoken.models import Token def get_authorization_header(request): @@ -149,7 +148,14 @@ class TokenAuthentication(BaseAuthentication): Authorization: Token 401f7ac837da42b97f613d789819ff93537bee6a """ - model = Token + model = None + + def get_model(self): + if self.model is not None: + return self.model + from rest_framework.authtoken.models import Token + return Token + """ A custom token model may be used, but must have the following properties. @@ -180,7 +186,7 @@ def authenticate(self, request): def authenticate_credentials(self, key): try: - token = self.model.objects.select_related('user').get(key=key) + token = self.get_model().objects.select_related('user').get(key=key) except self.model.DoesNotExist: raise exceptions.AuthenticationFailed(_('Invalid token.')) diff --git a/rest_framework/authtoken/models.py b/rest_framework/authtoken/models.py index b329ee65f83..2fef61e53ba 100644 --- a/rest_framework/authtoken/models.py +++ b/rest_framework/authtoken/models.py @@ -21,14 +21,6 @@ class Token(models.Model): user = models.OneToOneField(AUTH_USER_MODEL, related_name='auth_token') created = models.DateTimeField(auto_now_add=True) - class Meta: - # Work around for a bug in Django: - # https://code.djangoproject.com/ticket/19422 - # - # Also see corresponding ticket: - # https://github.com/tomchristie/django-rest-framework/issues/705 - abstract = 'rest_framework.authtoken' not in settings.INSTALLED_APPS - def save(self, *args, **kwargs): if not self.key: self.key = self.generate_key() From ef491685a0ed309030da99e2fc4e9fb48bf081fc Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Thu, 31 Dec 2015 21:14:57 -0600 Subject: [PATCH 065/131] Initial fixes #3636 and fixes #3637 --- docs/api-guide/filtering.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/api-guide/filtering.md b/docs/api-guide/filtering.md index 9e5f605ff2d..ccbfccbcb3c 100644 --- a/docs/api-guide/filtering.md +++ b/docs/api-guide/filtering.md @@ -177,7 +177,7 @@ For more advanced filtering requirements you can specify a `FilterSet` class tha from rest_framework import filters from rest_framework import generics - class ProductFilter(django_filters.FilterSet): + class ProductFilter(filters.FilterSet): min_price = django_filters.NumberFilter(name="price", lookup_type='gte') max_price = django_filters.NumberFilter(name="price", lookup_type='lte') class Meta: @@ -199,12 +199,12 @@ You can also span relationships using `django-filter`, let's assume that each product has foreign key to `Manufacturer` model, so we create filter that filters using `Manufacturer` name. For example: - import django_filters from myapp.models import Product from myapp.serializers import ProductSerializer + from rest_framework import filters from rest_framework import generics - class ProductFilter(django_filters.FilterSet): + class ProductFilter(filters.FilterSet): class Meta: model = Product fields = ['category', 'in_stock', 'manufacturer__name'] @@ -218,9 +218,11 @@ This is nice, but it exposes the Django's double underscore convention as part o import django_filters from myapp.models import Product from myapp.serializers import ProductSerializer + from rest_framework import filters from rest_framework import generics - class ProductFilter(django_filters.FilterSet): + + class ProductFilter(filters.FilterSet): manufacturer = django_filters.CharFilter(name="manufacturer__name") class Meta: From 183f8fad445e7ba4fe19768c775a63d12a7419a1 Mon Sep 17 00:00:00 2001 From: Luis San Pablo Date: Thu, 31 Dec 2015 21:18:41 -0600 Subject: [PATCH 066/131] Class formatting --- docs/api-guide/filtering.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/api-guide/filtering.md b/docs/api-guide/filtering.md index ccbfccbcb3c..c3230078333 100644 --- a/docs/api-guide/filtering.md +++ b/docs/api-guide/filtering.md @@ -221,7 +221,6 @@ This is nice, but it exposes the Django's double underscore convention as part o from rest_framework import filters from rest_framework import generics - class ProductFilter(filters.FilterSet): manufacturer = django_filters.CharFilter(name="manufacturer__name") From 2d7d3b79a04affc1ae5ba3a0bb3cdb768fe74e4c Mon Sep 17 00:00:00 2001 From: craigglennie Date: Sat, 2 Jan 2016 13:15:25 -0800 Subject: [PATCH 067/131] Make code block consistent in serialization tutorial All the other code blocks in the Serialization tutorial can be copied and pasted, but there is one that includes the >>> shell prompt characters. This commit removes those characters, and also makes the output consistent with other code blocks by making it a comment. --- docs/tutorial/1-serialization.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/tutorial/1-serialization.md b/docs/tutorial/1-serialization.md index bd3fce33db2..4e4d7817268 100644 --- a/docs/tutorial/1-serialization.md +++ b/docs/tutorial/1-serialization.md @@ -193,16 +193,16 @@ Open the file `snippets/serializers.py` again, and replace the `SnippetSerialize One nice property that serializers have is that you can inspect all the fields in a serializer instance, by printing its representation. Open the Django shell with `python manage.py shell`, then try the following: - >>> from snippets.serializers import SnippetSerializer - >>> serializer = SnippetSerializer() - >>> print(repr(serializer)) - SnippetSerializer(): - id = IntegerField(label='ID', read_only=True) - title = CharField(allow_blank=True, max_length=100, required=False) - code = CharField(style={'base_template': 'textarea.html'}) - linenos = BooleanField(required=False) - language = ChoiceField(choices=[('Clipper', 'FoxPro'), ('Cucumber', 'Gherkin'), ('RobotFramework', 'RobotFramework'), ('abap', 'ABAP'), ('ada', 'Ada')... - style = ChoiceField(choices=[('autumn', 'autumn'), ('borland', 'borland'), ('bw', 'bw'), ('colorful', 'colorful')... + from snippets.serializers import SnippetSerializer + serializer = SnippetSerializer() + print(repr(serializer)) + # SnippetSerializer(): + # id = IntegerField(label='ID', read_only=True) + # title = CharField(allow_blank=True, max_length=100, required=False) + # code = CharField(style={'base_template': 'textarea.html'}) + # linenos = BooleanField(required=False) + # language = ChoiceField(choices=[('Clipper', 'FoxPro'), ('Cucumber', 'Gherkin'), ('RobotFramework', 'RobotFramework'), ('abap', 'ABAP'), ('ada', 'Ada')... + # style = ChoiceField(choices=[('autumn', 'autumn'), ('borland', 'borland'), ('bw', 'bw'), ('colorful', 'colorful')... It's important to remember that `ModelSerializer` classes don't do anything particularly magical, they are simply a shortcut for creating serializer classes: From a7723261124c2fff7033f20680dd0bc3bc78fa8e Mon Sep 17 00:00:00 2001 From: Kevin Brown Date: Mon, 28 Dec 2015 10:38:53 -0500 Subject: [PATCH 068/131] Merged two DecimalValidator tests together These two tests were previously added in https://github.com/tomchristie/django-rest-framework/commit/7d79cf35b7be01b175d8c25276a4414e8144a16b but we have now discovered that there are not actually two separate cases, there was just a bug in the code that made it look that way. This also removes a redundant check to see if `DecimalValidator` was defined. --- rest_framework/utils/field_mapping.py | 2 +- tests/test_model_serializer.py | 20 ++------------------ 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py index 22a38050d3a..af7ab023113 100644 --- a/rest_framework/utils/field_mapping.py +++ b/rest_framework/utils/field_mapping.py @@ -133,7 +133,7 @@ def get_field_kwargs(field_name, model_field): if isinstance(model_field, models.DecimalField) and DecimalValidator: validator_kwarg = [ validator for validator in validator_kwarg - if DecimalValidator and not isinstance(validator, DecimalValidator) + if not isinstance(validator, DecimalValidator) ] # Ensure that max_length is passed explicitly as a keyword arg, diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index 2976b1984dd..af8ce66dd70 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -22,7 +22,7 @@ from rest_framework import serializers from rest_framework.compat import DurationField as ModelDurationField -from rest_framework.compat import DecimalValidator, unicode_repr +from rest_framework.compat import unicode_repr def dedent(blocktext): @@ -872,25 +872,9 @@ class DecimalFieldModel(models.Model): class TestDecimalFieldMappings(TestCase): - @pytest.mark.skipif(DecimalValidator is not None, - reason='DecimalValidator is available in Django 1.9+') - def test_decimal_field_has_no_decimal_validator(self): - """ - Test that a DecimalField has no validators before Django 1.9. - """ - class TestSerializer(serializers.ModelSerializer): - class Meta: - model = DecimalFieldModel - - serializer = TestSerializer() - - assert len(serializer.fields['decimal_field'].validators) == 2 - - @pytest.mark.skipif(DecimalValidator is None, - reason='DecimalValidator is available in Django 1.9+') def test_decimal_field_has_decimal_validator(self): """ - Test that a DecimalField has DecimalValidator in Django 1.9+. + Test that a `DecimalField` has no `DecimalValidator`. """ class TestSerializer(serializers.ModelSerializer): class Meta: From 1712c00001b57110b13d3e2fa926da0ef8ce3c5a Mon Sep 17 00:00:00 2001 From: "S. Andrew Sheppard" Date: Tue, 5 Jan 2016 09:42:22 -0600 Subject: [PATCH 069/131] update invalid token case --- rest_framework/authentication.py | 5 +++-- tests/test_authentication.py | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/rest_framework/authentication.py b/rest_framework/authentication.py index 30e137c9312..0ca90873ebe 100644 --- a/rest_framework/authentication.py +++ b/rest_framework/authentication.py @@ -185,9 +185,10 @@ def authenticate(self, request): return self.authenticate_credentials(token) def authenticate_credentials(self, key): + model = self.get_model() try: - token = self.get_model().objects.select_related('user').get(key=key) - except self.model.DoesNotExist: + token = model.objects.select_related('user').get(key=key) + except model.DoesNotExist: raise exceptions.AuthenticationFailed(_('Invalid token.')) if not token.user.is_active: diff --git a/tests/test_authentication.py b/tests/test_authentication.py index 91434124efc..f7129905b3f 100644 --- a/tests/test_authentication.py +++ b/tests/test_authentication.py @@ -162,6 +162,12 @@ def test_post_form_passing_token_auth(self): response = self.csrf_client.post('/token/', {'example': 'example'}, HTTP_AUTHORIZATION=auth) self.assertEqual(response.status_code, status.HTTP_200_OK) + def test_fail_post_form_passing_nonexistent_token_auth(self): + # use a nonexistent token key + auth = 'Token wxyz6789' + response = self.csrf_client.post('/token/', {'example': 'example'}, HTTP_AUTHORIZATION=auth) + self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) + def test_fail_post_form_passing_invalid_token_auth(self): # add an 'invalid' unicode character auth = 'Token ' + self.key + "¸" From 2b8c036b4832b0f9bf328b85d9a3c39738c7f3c4 Mon Sep 17 00:00:00 2001 From: "S. Andrew Sheppard" Date: Tue, 5 Jan 2016 09:58:16 -0600 Subject: [PATCH 070/131] test custom token model --- tests/test_authentication.py | 45 +++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/tests/test_authentication.py b/tests/test_authentication.py index f7129905b3f..2d888840b34 100644 --- a/tests/test_authentication.py +++ b/tests/test_authentication.py @@ -9,6 +9,7 @@ from django.http import HttpResponse from django.test import TestCase from django.utils import six +from django.db import models from rest_framework import ( HTTP_HEADER_ENCODING, exceptions, permissions, renderers, status @@ -25,6 +26,15 @@ factory = APIRequestFactory() +class CustomToken(models.Model): + key = models.CharField(max_length=40, primary_key=True) + user = models.OneToOneField(User) + + +class CustomTokenAuthentication(TokenAuthentication): + model = CustomToken + + class MockView(APIView): permission_classes = (permissions.IsAuthenticated,) @@ -42,6 +52,7 @@ def put(self, request): url(r'^session/$', MockView.as_view(authentication_classes=[SessionAuthentication])), url(r'^basic/$', MockView.as_view(authentication_classes=[BasicAuthentication])), url(r'^token/$', MockView.as_view(authentication_classes=[TokenAuthentication])), + url(r'^customtoken/$', MockView.as_view(authentication_classes=[CustomTokenAuthentication])), url(r'^auth-token/$', 'rest_framework.authtoken.views.obtain_auth_token'), url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')), ] @@ -142,9 +153,11 @@ def test_post_form_session_auth_failing(self): self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) -class TokenAuthTests(TestCase): +class BaseTokenAuthTests(object): """Token authentication""" urls = 'tests.test_authentication' + model = None + path = None def setUp(self): self.csrf_client = APIClient(enforce_csrf_checks=True) @@ -154,30 +167,30 @@ def setUp(self): self.user = User.objects.create_user(self.username, self.email, self.password) self.key = 'abcd1234' - self.token = Token.objects.create(key=self.key, user=self.user) + self.token = self.model.objects.create(key=self.key, user=self.user) def test_post_form_passing_token_auth(self): """Ensure POSTing json over token auth with correct credentials passes and does not require CSRF""" auth = 'Token ' + self.key - response = self.csrf_client.post('/token/', {'example': 'example'}, HTTP_AUTHORIZATION=auth) + response = self.csrf_client.post(self.path, {'example': 'example'}, HTTP_AUTHORIZATION=auth) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_fail_post_form_passing_nonexistent_token_auth(self): # use a nonexistent token key auth = 'Token wxyz6789' - response = self.csrf_client.post('/token/', {'example': 'example'}, HTTP_AUTHORIZATION=auth) + response = self.csrf_client.post(self.path, {'example': 'example'}, HTTP_AUTHORIZATION=auth) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) def test_fail_post_form_passing_invalid_token_auth(self): # add an 'invalid' unicode character auth = 'Token ' + self.key + "¸" - response = self.csrf_client.post('/token/', {'example': 'example'}, HTTP_AUTHORIZATION=auth) + response = self.csrf_client.post(self.path, {'example': 'example'}, HTTP_AUTHORIZATION=auth) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) def test_post_json_passing_token_auth(self): """Ensure POSTing form over token auth with correct credentials passes and does not require CSRF""" auth = "Token " + self.key - response = self.csrf_client.post('/token/', {'example': 'example'}, format='json', HTTP_AUTHORIZATION=auth) + response = self.csrf_client.post(self.path, {'example': 'example'}, format='json', HTTP_AUTHORIZATION=auth) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_post_json_makes_one_db_query(self): @@ -185,29 +198,34 @@ def test_post_json_makes_one_db_query(self): auth = "Token " + self.key def func_to_test(): - return self.csrf_client.post('/token/', {'example': 'example'}, format='json', HTTP_AUTHORIZATION=auth) + return self.csrf_client.post(self.path, {'example': 'example'}, format='json', HTTP_AUTHORIZATION=auth) self.assertNumQueries(1, func_to_test) def test_post_form_failing_token_auth(self): """Ensure POSTing form over token auth without correct credentials fails""" - response = self.csrf_client.post('/token/', {'example': 'example'}) + response = self.csrf_client.post(self.path, {'example': 'example'}) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) def test_post_json_failing_token_auth(self): """Ensure POSTing json over token auth without correct credentials fails""" - response = self.csrf_client.post('/token/', {'example': 'example'}, format='json') + response = self.csrf_client.post(self.path, {'example': 'example'}, format='json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) + +class TokenAuthTests(BaseTokenAuthTests, TestCase): + model = Token + path = '/token/' + def test_token_has_auto_assigned_key_if_none_provided(self): """Ensure creating a token with no key will auto-assign a key""" self.token.delete() - token = Token.objects.create(user=self.user) + token = self.model.objects.create(user=self.user) self.assertTrue(bool(token.key)) def test_generate_key_returns_string(self): """Ensure generate_key returns a string""" - token = Token() + token = self.model() key = token.generate_key() self.assertTrue(isinstance(key, six.string_types)) @@ -242,6 +260,11 @@ def test_token_login_form(self): self.assertEqual(response.data['token'], self.key) +class CustomTokenAuthTests(BaseTokenAuthTests, TestCase): + model = CustomToken + path = '/customtoken/' + + class IncorrectCredentialsTests(TestCase): def test_incorrect_credentials(self): """ From 4f40714169c2c676fd76be596c3dd543bad06c84 Mon Sep 17 00:00:00 2001 From: "S. Andrew Sheppard" Date: Tue, 5 Jan 2016 10:20:22 -0600 Subject: [PATCH 071/131] fix import order --- tests/test_authentication.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_authentication.py b/tests/test_authentication.py index 2d888840b34..285a3210ce5 100644 --- a/tests/test_authentication.py +++ b/tests/test_authentication.py @@ -6,10 +6,10 @@ from django.conf.urls import include, url from django.contrib.auth.models import User +from django.db import models from django.http import HttpResponse from django.test import TestCase from django.utils import six -from django.db import models from rest_framework import ( HTTP_HEADER_ENCODING, exceptions, permissions, renderers, status From 651319e2da0cd46319a622220a864c1da63b8001 Mon Sep 17 00:00:00 2001 From: Craig de Stigter Date: Wed, 6 Jan 2016 16:04:23 +1300 Subject: [PATCH 072/131] Fix nested validation error being rendered incorrectly. Previously an extra list wrapped nested validation errors raised from serializer's validate() methods. That was inconsistent with the format of validation errors raised by validate_ methods. i.e. these two resulted in *different* behaviour: def validate_foo(self): raise ValidationError(['bar']) def validate(self): raise ValidationError({'foo': ['bar']}) --- rest_framework/serializers.py | 2 +- tests/test_validation.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 99d36a8a54d..ada1c162040 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -306,7 +306,7 @@ def get_validation_error_detail(exc): # If errors may be a dict we use the standard {key: list of values}. # Here we ensure that all the values are *lists* of errors. return { - key: value if isinstance(value, list) else [value] + key: value if isinstance(value, (list, dict)) else [value] for key, value in exc.detail.items() } elif isinstance(exc.detail, list): diff --git a/tests/test_validation.py b/tests/test_validation.py index 855ff20e01a..b6f274219f8 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -49,6 +49,24 @@ class Meta: fields = ('renamed',) +class TestNestedValidationError(TestCase): + def test_nested_validation_error_detail(self): + """ + Ensure nested validation error detail is rendered correctly. + """ + e = serializers.ValidationError({ + 'nested': { + 'field': ['error'], + } + }) + + self.assertEqual(serializers.get_validation_error_detail(e), { + 'nested': { + 'field': ['error'], + } + }) + + class TestPreSaveValidationExclusionsSerializer(TestCase): def test_renamed_fields_are_model_validated(self): """ From 5fa8a318556bfecc0b344833b5e03fb862a7892e Mon Sep 17 00:00:00 2001 From: m1kola Date: Wed, 6 Jan 2016 17:58:45 +0300 Subject: [PATCH 073/131] Typo fix in docs/api-guide/relations.md `slug field` in code snippet was replaced to `slug_field` --- docs/api-guide/relations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api-guide/relations.md b/docs/api-guide/relations.md index 51e5f78c437..322ab1a13a5 100644 --- a/docs/api-guide/relations.md +++ b/docs/api-guide/relations.md @@ -459,7 +459,7 @@ In cases where the cutoff is being enforced you may want to instead use a plain assigned_to = serializers.SlugRelatedField( queryset=User.objects.all(), - slug field='username', + slug_field='username', style={'base_template': 'input.html'} ) From 7cd39331440750345720ec816ffdab62c6a87383 Mon Sep 17 00:00:00 2001 From: Kevin Massey Date: Wed, 6 Jan 2016 15:04:51 -0500 Subject: [PATCH 074/131] Fixes #3804, avoiding update of Meta.extra_kwargs Added unit test to cover. --- rest_framework/serializers.py | 2 +- tests/test_model_serializer.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 99d36a8a54d..c69a20ff169 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -1212,7 +1212,7 @@ def get_extra_kwargs(self): Return a dictionary mapping field names to a dictionary of additional keyword arguments. """ - extra_kwargs = getattr(self.Meta, 'extra_kwargs', {}) + extra_kwargs = copy.deepcopy(getattr(self.Meta, 'extra_kwargs', {})) read_only_fields = getattr(self.Meta, 'read_only_fields', None) if read_only_fields is not None: diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index af8ce66dd70..f3243e33a32 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -909,3 +909,34 @@ class Meta: serializer = TestSerializer() assert serializer.fields['decimal_field'].max_value == 3 + + +class TestMetaInheritance(TestCase): + def test_extra_kwargs_not_altered(self): + class TestSerializer(serializers.ModelSerializer): + non_model_field = serializers.CharField() + + class Meta: + model = OneFieldModel + read_only_fields = ('char_field', 'non_model_field') + fields = read_only_fields + extra_kwargs = {} + + class ChildSerializer(TestSerializer): + class Meta(TestSerializer.Meta): + read_only_fields = () + + test_expected = dedent(""" + TestSerializer(): + char_field = CharField(read_only=True) + non_model_field = CharField() + """) + + child_expected = dedent(""" + ChildSerializer(): + char_field = CharField(max_length=100) + non_model_field = CharField() + """) + self.assertEqual(unicode_repr(ChildSerializer()), child_expected) + self.assertEqual(unicode_repr(TestSerializer()), test_expected) + self.assertEqual(unicode_repr(ChildSerializer()), child_expected) From d4cdb21de9da55a4c8b33d71494f26fee4fc2e89 Mon Sep 17 00:00:00 2001 From: Mads Jensen Date: Wed, 6 Jan 2016 22:51:11 +0100 Subject: [PATCH 075/131] Fixes #3786 Minor fix for dictionary key lookup in settings file --- rest_framework/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 9679cad5920..946b905c6bd 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -196,7 +196,7 @@ def user_settings(self): return self._user_settings def __getattr__(self, attr): - if attr not in self.defaults.keys(): + if attr not in self.defaults: raise AttributeError("Invalid API setting: '%s'" % attr) try: From f71d8afdb032237815e59b2bc5df0c9c38a93d99 Mon Sep 17 00:00:00 2001 From: Jerel Unruh Date: Thu, 7 Jan 2016 13:42:02 -0600 Subject: [PATCH 076/131] Added documentation for the Third Party jsonapi.org package --- docs/topics/third-party-resources.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/topics/third-party-resources.md b/docs/topics/third-party-resources.md index fc507deab93..ed15269ed5a 100644 --- a/docs/topics/third-party-resources.md +++ b/docs/topics/third-party-resources.md @@ -202,6 +202,7 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque * [django-rest-framework-mongoengine][django-rest-framework-mongoengine] - Serializer class that supports using MongoDB as the storage layer for Django REST framework. * [djangorestframework-gis][djangorestframework-gis] - Geographic add-ons * [djangorestframework-hstore][djangorestframework-hstore] - Serializer class to support django-hstore DictionaryField model field and its schema-mode feature. +* [djangorestframework-jsonapi][djangorestframework-jsonapi] - Provides a parser, renderer, serializers, and other tools to help build an API that is compliant with the jsonapi.org spec. ### Serializer fields @@ -222,11 +223,13 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque ### Parsers * [djangorestframework-msgpack][djangorestframework-msgpack] - Provides MessagePack renderer and parser support. +* [djangorestframework-jsonapi][djangorestframework-jsonapi] - Provides a parser, renderer, serializers, and other tools to help build an API that is compliant with the jsonapi.org spec. * [djangorestframework-camel-case][djangorestframework-camel-case] - Provides camel case JSON renderers and parsers. ### Renderers * [djangorestframework-csv][djangorestframework-csv] - Provides CSV renderer support. +* [djangorestframework-jsonapi][djangorestframework-jsonapi] - Provides a parser, renderer, serializers, and other tools to help build an API that is compliant with the jsonapi.org spec. * [drf_ujson][drf_ujson] - Implements JSON rendering using the UJSON package. * [rest-pandas][rest-pandas] - Pandas DataFrame-powered renderers including Excel, CSV, and SVG formats. @@ -351,3 +354,4 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque [cookiecutter-django-rest]: https://github.com/agconti/cookiecutter-django-rest [drf-haystack]: http://drf-haystack.readthedocs.org/en/latest/ [django-rest-framework-version-transforms]: https://github.com/mrhwick/django-rest-framework-version-transforms +[djangorestframework-jsonapi]: https://github.com/django-json-api/django-rest-framework-json-api From 6b207d93d69c1576ae3d29230b393c566855c577 Mon Sep 17 00:00:00 2001 From: Mikalai Radchuk Date: Sun, 10 Jan 2016 23:50:11 +0300 Subject: [PATCH 077/131] DateField.to_representation unicode compatibility --- rest_framework/fields.py | 2 +- tests/test_fields.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 7bac2a21f6e..deca9d90dc6 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1139,7 +1139,7 @@ def to_representation(self, value): ) if output_format.lower() == ISO_8601: - if (isinstance(value, str)): + if isinstance(value, six.string_types): value = datetime.datetime.strptime(value, '%Y-%m-%d').date() return value.isoformat() diff --git a/tests/test_fields.py b/tests/test_fields.py index 029a5bddccc..4b3a36f031f 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -6,7 +6,7 @@ import django import pytest from django.http import QueryDict -from django.utils import timezone +from django.utils import six, timezone import rest_framework from rest_framework import serializers @@ -895,6 +895,7 @@ class TestDateField(FieldValues): outputs = { datetime.date(2001, 1, 1): '2001-01-01', '2001-01-01': '2001-01-01', + six.text_type('2016-01-10'): '2016-01-10', None: None, '': None, } From a76c3ed051f7d8e26db82450a20cdb9f4a683116 Mon Sep 17 00:00:00 2001 From: areski Date: Thu, 7 Jan 2016 18:46:54 +0100 Subject: [PATCH 078/131] Fixed TimeField not handling empty values --- rest_framework/fields.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index deca9d90dc6..67dd3b6c79e 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1204,6 +1204,8 @@ def to_representation(self, value): ) if output_format.lower() == ISO_8601: + if (isinstance(value, str)): + value = datetime.datetime.strptime(value, '%H:%M:%S').time() return value.isoformat() return value.strftime(output_format) From 4e017963034502531313cba0620299ce06fc94e8 Mon Sep 17 00:00:00 2001 From: areski Date: Mon, 11 Jan 2016 12:16:26 +0100 Subject: [PATCH 079/131] Test for TimeField not handling empty values --- rest_framework/fields.py | 2 +- tests/test_fields.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 67dd3b6c79e..a2b0f3bf183 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1204,7 +1204,7 @@ def to_representation(self, value): ) if output_format.lower() == ISO_8601: - if (isinstance(value, str)): + if isinstance(value, six.string_types): value = datetime.datetime.strptime(value, '%H:%M:%S').time() return value.isoformat() return value.strftime(output_format) diff --git a/tests/test_fields.py b/tests/test_fields.py index 4b3a36f031f..43441c2e7c3 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -1032,6 +1032,7 @@ class TestTimeField(FieldValues): } outputs = { datetime.time(13, 00): '13:00:00', + '00:00:00': '00:00:00', None: None, '': None, } From 04b2f021a6ba98c750c0013f9c8ff062661c6918 Mon Sep 17 00:00:00 2001 From: Zach Wernberg Date: Mon, 11 Jan 2016 08:13:07 -0600 Subject: [PATCH 080/131] update copyright 2016 --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 9b1945e7b9b..c09c0028547 100644 --- a/docs/index.md +++ b/docs/index.md @@ -232,7 +232,7 @@ Send a description of the issue via email to [rest-framework-security@googlegrou ## License -Copyright (c) 2011-2015, Tom Christie +Copyright (c) 2011-2016, Tom Christie All rights reserved. Redistribution and use in source and binary forms, with or without From a9c394f5b7b417d5432bd5c6974cf0e65575be1b Mon Sep 17 00:00:00 2001 From: Mads Jensen Date: Wed, 13 Jan 2016 12:54:56 +0100 Subject: [PATCH 081/131] 2015 update in __init__.py file --- rest_framework/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/__init__.py b/rest_framework/__init__.py index 0e51999964a..74c317f3557 100644 --- a/rest_framework/__init__.py +++ b/rest_framework/__init__.py @@ -11,7 +11,7 @@ __version__ = '3.3.2' __author__ = 'Tom Christie' __license__ = 'BSD 2-Clause' -__copyright__ = 'Copyright 2011-2015 Tom Christie' +__copyright__ = 'Copyright 2011-2016 Tom Christie' # Version synonym VERSION = __version__ From 717e27c8667410670f002b2929dd66302a547087 Mon Sep 17 00:00:00 2001 From: Nicolas Delaby Date: Thu, 14 Jan 2016 14:59:31 +0100 Subject: [PATCH 082/131] Document how to tweak authtoken.admin.TokenAdmin With focus on large user base, but can be extended. --- docs/api-guide/authentication.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/api-guide/authentication.md b/docs/api-guide/authentication.md index 3ade3a661ea..3d1cfd1e8af 100644 --- a/docs/api-guide/authentication.md +++ b/docs/api-guide/authentication.md @@ -165,6 +165,8 @@ The `curl` command line tool may be useful for testing token authenticated APIs. #### Generating Tokens +##### By using signals + If you want every user to have an automatically generated Token, you can simply catch the User's `post_save` signal. from django.conf import settings @@ -187,6 +189,8 @@ If you've already created some users, you can generate tokens for all existing u for user in User.objects.all(): Token.objects.get_or_create(user=user) +##### By exposing an api endpoint + When using `TokenAuthentication`, you may want to provide a mechanism for clients to obtain a token given the username and password. REST framework provides a built-in view to provide this behavior. To use it, add the `obtain_auth_token` view to your URLconf: from rest_framework.authtoken import views @@ -202,6 +206,17 @@ The `obtain_auth_token` view will return a JSON response when valid `username` a Note that the default `obtain_auth_token` view explicitly uses JSON requests and responses, rather than using default renderer and parser classes in your settings. If you need a customized version of the `obtain_auth_token` view, you can do so by overriding the `ObtainAuthToken` view class, and using that in your url conf instead. +##### With Django admin + +It is also possible to create Tokens manually through admin interface. In case you are using a large user base, we recommend that you monkey patch the `TokenAdmin` class to customize it to your needs, more specifically by declaring the `user` field as `raw_field`. + +`your_app/admin.py`: + + from rest_framework.authtoken.admin import TokenAdmin + + TokenAdmin.raw_id_fields = ('user',) + + #### Schema migrations The `rest_framework.authtoken` app includes both Django native migrations (for Django versions >1.7) and South migrations (for Django versions <1.7) that will create the authtoken table. From 215e1b6c6b1cfcc94756151769c1735ddba3662a Mon Sep 17 00:00:00 2001 From: Mads Jensen Date: Thu, 14 Jan 2016 15:14:33 +0100 Subject: [PATCH 083/131] Regarding #3729 python -Werror generates warnings informing that on_delete is a required keyword in Django 2.0 --- rest_framework/authtoken/models.py | 3 ++- tests/models.py | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/rest_framework/authtoken/models.py b/rest_framework/authtoken/models.py index 2fef61e53ba..65dd9970203 100644 --- a/rest_framework/authtoken/models.py +++ b/rest_framework/authtoken/models.py @@ -18,7 +18,8 @@ class Token(models.Model): The default authorization token model. """ key = models.CharField(max_length=40, primary_key=True) - user = models.OneToOneField(AUTH_USER_MODEL, related_name='auth_token') + user = models.OneToOneField(AUTH_USER_MODEL, related_name='auth_token', + on_delete=models.CASCADE) created = models.DateTimeField(auto_now_add=True) def save(self, *args, **kwargs): diff --git a/tests/models.py b/tests/models.py index c265182b7bc..8ec274d8b6d 100644 --- a/tests/models.py +++ b/tests/models.py @@ -49,7 +49,8 @@ class ForeignKeyTarget(RESTFrameworkModel): class ForeignKeySource(RESTFrameworkModel): name = models.CharField(max_length=100) target = models.ForeignKey(ForeignKeyTarget, related_name='sources', - help_text='Target', verbose_name='Target') + help_text='Target', verbose_name='Target', + on_delete=models.CASCADE) # Nullable ForeignKey @@ -57,7 +58,8 @@ class NullableForeignKeySource(RESTFrameworkModel): name = models.CharField(max_length=100) target = models.ForeignKey(ForeignKeyTarget, null=True, blank=True, related_name='nullable_sources', - verbose_name='Optional target object') + verbose_name='Optional target object', + on_delete=models.CASCADE) # OneToOne @@ -68,4 +70,4 @@ class OneToOneTarget(RESTFrameworkModel): class NullableOneToOneSource(RESTFrameworkModel): name = models.CharField(max_length=100) target = models.OneToOneField(OneToOneTarget, null=True, blank=True, - related_name='nullable_source') + related_name='nullable_source', on_delete=models.CASCADE) From 40b5774a3335ff0f186bc324758fd6e9da69c94a Mon Sep 17 00:00:00 2001 From: Brad Montgomery Date: Thu, 14 Jan 2016 12:00:30 -0600 Subject: [PATCH 084/131] QueryParameterVersioning does not use default version QueryParameterVersioning does not fall back to the value used in the `DEFAULT_VERSION` setting, while other versioning schemes do. This looks like a minor change, and incorporates the `self.default_version` set in the superclass. I'll sheepishly admit that I edited this inline without running any tests or anything, so please let me know if this needs more work. --- rest_framework/versioning.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/versioning.py b/rest_framework/versioning.py index 7b1422c92cd..e27c7b316d9 100644 --- a/rest_framework/versioning.py +++ b/rest_framework/versioning.py @@ -166,7 +166,7 @@ class QueryParameterVersioning(BaseVersioning): invalid_version_message = _('Invalid version in query parameter.') def determine_version(self, request, *args, **kwargs): - version = request.query_params.get(self.version_param) + version = request.query_params.get(self.version_param, self.default_version) if not self.is_allowed_version(version): raise exceptions.NotFound(self.invalid_version_message) return version From a37a8748cc3d104bb85a712930cf405eb7d934a7 Mon Sep 17 00:00:00 2001 From: Ramon Moraes Date: Fri, 15 Jan 2016 11:44:25 -0300 Subject: [PATCH 085/131] Update permissions.md Adding additional note about the behavior of set permission classes per view as suggest on #3834 --- docs/api-guide/permissions.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/api-guide/permissions.md b/docs/api-guide/permissions.md index 0f5947d6394..bbac824da2e 100644 --- a/docs/api-guide/permissions.md +++ b/docs/api-guide/permissions.md @@ -100,6 +100,8 @@ Or, if you're using the `@api_view` decorator with function based views. } return Response(content) +__Note:__ when you set new permission classes through class attribute or decorators you're telling the view to ignore the default list set over the __settings.py__ file. + --- # API Reference From b24fb53d98c118ddff2a380784f66607aefbd158 Mon Sep 17 00:00:00 2001 From: Prayag Verma Date: Mon, 18 Jan 2016 12:28:24 +0530 Subject: [PATCH 086/131] Update license year range to 2016 --- LICENSE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.md b/LICENSE.md index 2b97cc51bf4..aca195ec47a 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ # License -Copyright (c) 2011-2015, Tom Christie +Copyright (c) 2011-2016, Tom Christie All rights reserved. Redistribution and use in source and binary forms, with or without From 221d6979c69c1fcb77ad320f2cf3b54b861fa3bf Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Mon, 18 Jan 2016 18:54:00 +0100 Subject: [PATCH 087/131] Fix the request data source. --- docs/topics/html-and-forms.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/topics/html-and-forms.md b/docs/topics/html-and-forms.md index 73e03acc17c..6660607fe4a 100644 --- a/docs/topics/html-and-forms.md +++ b/docs/topics/html-and-forms.md @@ -66,7 +66,7 @@ The following view demonstrates an example of using a serializer in a template f def post(self, request, pk): profile = get_object_or_404(Profile, pk=pk) - serializer = ProfileSerializer(profile, data=request.POST) + serializer = ProfileSerializer(profile, data=request.data) if not serializer.is_valid(): return Response({'serializer': serializer, 'profile': profile}) serializer.save() From 1a7e81b00b6fa2c53092700b10db2d1c6478bfa2 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Wed, 20 Jan 2016 10:44:50 +0100 Subject: [PATCH 088/131] Workaround to avoid pip-8 installation. --- .travis.yml | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 67404d750ca..19523dff946 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,19 +3,22 @@ language: python sudo: false env: - - TOX_ENV=py27-lint - - TOX_ENV=py27-docs - - TOX_ENV=py35-django19 - - TOX_ENV=py34-django19 - - TOX_ENV=py27-django19 - - TOX_ENV=py34-django18 - - TOX_ENV=py33-django18 - - TOX_ENV=py32-django18 - - TOX_ENV=py27-django18 - - TOX_ENV=py34-django17 - - TOX_ENV=py33-django17 - - TOX_ENV=py32-django17 - - TOX_ENV=py27-django17 + global: + - VIRTUALENV_NO_PIP=True + matrix: + - TOX_ENV=py27-lint + - TOX_ENV=py27-docs + - TOX_ENV=py35-django19 + - TOX_ENV=py34-django19 + - TOX_ENV=py27-django19 + - TOX_ENV=py34-django18 + - TOX_ENV=py33-django18 + - TOX_ENV=py32-django18 + - TOX_ENV=py27-django18 + - TOX_ENV=py34-django17 + - TOX_ENV=py33-django17 + - TOX_ENV=py32-django17 + - TOX_ENV=py27-django17 matrix: # Python 3.5 not yet available on travis, watch this to see when it is. From 64e1fe75182a65651a2645d839d6dad26a37f72e Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Wed, 20 Jan 2016 10:59:57 +0100 Subject: [PATCH 089/131] Try downgrading virtualenv. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 19523dff946..a100bdcadbe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,7 @@ matrix: - env: TOX_ENV=py35-django19 install: - - pip install tox + - pip install tox "virtualenv<14" script: - tox -e $TOX_ENV From ebec88ccab4fd63acf2dc09581bda979070be019 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Wed, 20 Jan 2016 11:06:51 +0100 Subject: [PATCH 090/131] Remove the no-pip option. --- .travis.yml | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/.travis.yml b/.travis.yml index a100bdcadbe..cff88f48161 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,22 +3,19 @@ language: python sudo: false env: - global: - - VIRTUALENV_NO_PIP=True - matrix: - - TOX_ENV=py27-lint - - TOX_ENV=py27-docs - - TOX_ENV=py35-django19 - - TOX_ENV=py34-django19 - - TOX_ENV=py27-django19 - - TOX_ENV=py34-django18 - - TOX_ENV=py33-django18 - - TOX_ENV=py32-django18 - - TOX_ENV=py27-django18 - - TOX_ENV=py34-django17 - - TOX_ENV=py33-django17 - - TOX_ENV=py32-django17 - - TOX_ENV=py27-django17 + - TOX_ENV=py27-lint + - TOX_ENV=py27-docs + - TOX_ENV=py35-django19 + - TOX_ENV=py34-django19 + - TOX_ENV=py27-django19 + - TOX_ENV=py34-django18 + - TOX_ENV=py33-django18 + - TOX_ENV=py32-django18 + - TOX_ENV=py27-django18 + - TOX_ENV=py34-django17 + - TOX_ENV=py33-django17 + - TOX_ENV=py32-django17 + - TOX_ENV=py27-django17 matrix: # Python 3.5 not yet available on travis, watch this to see when it is. From b53f6691f4b371da081c2174c60b0dd721715248 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Wed, 20 Jan 2016 11:45:23 +0100 Subject: [PATCH 091/131] Preserve the former indentation. --- .travis.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index cff88f48161..c8d56791f77 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,19 +3,19 @@ language: python sudo: false env: - - TOX_ENV=py27-lint - - TOX_ENV=py27-docs - - TOX_ENV=py35-django19 - - TOX_ENV=py34-django19 - - TOX_ENV=py27-django19 - - TOX_ENV=py34-django18 - - TOX_ENV=py33-django18 - - TOX_ENV=py32-django18 - - TOX_ENV=py27-django18 - - TOX_ENV=py34-django17 - - TOX_ENV=py33-django17 - - TOX_ENV=py32-django17 - - TOX_ENV=py27-django17 + - TOX_ENV=py27-lint + - TOX_ENV=py27-docs + - TOX_ENV=py35-django19 + - TOX_ENV=py34-django19 + - TOX_ENV=py27-django19 + - TOX_ENV=py34-django18 + - TOX_ENV=py33-django18 + - TOX_ENV=py32-django18 + - TOX_ENV=py27-django18 + - TOX_ENV=py34-django17 + - TOX_ENV=py33-django17 + - TOX_ENV=py32-django17 + - TOX_ENV=py27-django17 matrix: # Python 3.5 not yet available on travis, watch this to see when it is. From e6d1eb375cd6f8cb88138b63724ecd6b21097b28 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Wed, 20 Jan 2016 11:53:32 +0100 Subject: [PATCH 092/131] Add a comment about virtualenv < 14 --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index c8d56791f77..49686ab074b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,6 +24,7 @@ matrix: - env: TOX_ENV=py35-django19 install: + # Virtualenv < 14 is required to keep the Python 3.2 builds running. - pip install tox "virtualenv<14" script: From fb302d60100d43ec1b79a550b09bc3932b84f96b Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Wed, 20 Jan 2016 13:53:53 +0100 Subject: [PATCH 093/131] Use the Python 3.5 env. --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 67404d750ca..f25fd788205 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,8 @@ language: python +python: + - "3.5" + sudo: false env: From ed40b319bea32edb1dc6b3903cc3e05352364bfb Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Wed, 20 Jan 2016 14:11:58 +0100 Subject: [PATCH 094/131] Removing Python 3.5 build from the expected failure. --- .travis.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index f25fd788205..b4d5da3a50e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,10 +21,7 @@ env: - TOX_ENV=py27-django17 matrix: - # Python 3.5 not yet available on travis, watch this to see when it is. fast_finish: true - allow_failures: - - env: TOX_ENV=py35-django19 install: - pip install tox From 2d40be5bd8e61dc050db179d3c0e20400268afa2 Mon Sep 17 00:00:00 2001 From: Krzysztof Szularz Date: Wed, 20 Jan 2016 16:28:30 +0100 Subject: [PATCH 095/131] Update link to Heroku guidelines They seem to have changed the structure of the document. --- docs/api-guide/versioning.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api-guide/versioning.md b/docs/api-guide/versioning.md index f6e32f47d57..bd63c974b0a 100644 --- a/docs/api-guide/versioning.md +++ b/docs/api-guide/versioning.md @@ -214,7 +214,7 @@ If your versioning scheme is based on the request URL, you will also want to alt [cite]: http://www.slideshare.net/evolve_conference/201308-fielding-evolve/31 [roy-fielding-on-versioning]: http://www.infoq.com/articles/roy-fielding-on-versioning [klabnik-guidelines]: http://blog.steveklabnik.com/posts/2011-07-03-nobody-understands-rest-or-http#i_want_my_api_to_be_versioned -[heroku-guidelines]: https://github.com/interagent/http-api-design#version-with-accepts-header +[heroku-guidelines]: https://github.com/interagent/http-api-design/blob/master/foundations/require-versioning-in-the-accepts-header.md [json-parameters]: http://tools.ietf.org/html/rfc4627#section-6 [vendor-media-type]: http://en.wikipedia.org/wiki/Internet_media_type#Vendor_tree [lvh]: https://reinteractive.net/posts/199-developing-and-testing-rails-applications-with-subdomains From 99a61d72a72bf85f3c71cafb824235da0c0604d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Padilla?= Date: Wed, 20 Jan 2016 14:04:04 -0400 Subject: [PATCH 096/131] Fix broken link format --- docs/api-guide/serializers.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/api-guide/serializers.md b/docs/api-guide/serializers.md index 478991c9016..dd33f7703f6 100644 --- a/docs/api-guide/serializers.md +++ b/docs/api-guide/serializers.md @@ -384,7 +384,7 @@ This manager class now more nicely encapsulates that user instances and profile has_support_contract=validated_data['profile']['has_support_contract'] ) -For more details on this approach see the Django documentation on [model managers](model-managers), and [this blogpost on using model and manager classes](encapsulation-blogpost). +For more details on this approach see the Django documentation on [model managers][model-managers], and [this blogpost on using model and manager classes][encapsulation-blogpost]. ## Dealing with multiple objects @@ -774,7 +774,7 @@ To support multiple updates you'll need to do so explicitly. When writing your m * How should insertions be handled? Are they invalid, or do they create new objects? * How should removals be handled? Do they imply object deletion, or removing a relationship? Should they be silently ignored, or are they invalid? * How should ordering be handled? Does changing the position of two items imply any state change or is it ignored? - + You will need to add an explicit `id` field to the instance serializer. The default implicitly-generated `id` field is marked as `read_only`. This causes it to be removed on updates. Once you declare it explicitly, it will be available in the list serializer's `update` method. Here's an example of how you might choose to implement multiple updates: @@ -808,7 +808,7 @@ Here's an example of how you might choose to implement multiple updates: ... id = serializers.IntegerField(required=False) - + class Meta: list_serializer_class = BookListSerializer From 9e8ddb88fcc26e85202c37fc1b2aca80ef82c17a Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Thu, 21 Jan 2016 13:28:32 +0100 Subject: [PATCH 097/131] Restore the abstract on Token model when the app isn't declared The fact that we don't import Token from authentication doesn't invalidate the need for the model to be abstract whenever the authtoken isn't listed in the INSTALLED_APPS. --- rest_framework/authtoken/models.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rest_framework/authtoken/models.py b/rest_framework/authtoken/models.py index 65dd9970203..b71dffa4a69 100644 --- a/rest_framework/authtoken/models.py +++ b/rest_framework/authtoken/models.py @@ -22,6 +22,14 @@ class Token(models.Model): on_delete=models.CASCADE) created = models.DateTimeField(auto_now_add=True) + class Meta: + # Work around for a bug in Django: + # https://code.djangoproject.com/ticket/19422 + # + # Also see corresponding ticket: + # https://github.com/tomchristie/django-rest-framework/issues/705 + abstract = 'rest_framework.authtoken' not in settings.INSTALLED_APPS + def save(self, *args, **kwargs): if not self.key: self.key = self.generate_key() From 6d95da7b2d26f3927527b24a7a63704d60c7376e Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Thu, 21 Jan 2016 16:48:32 +0100 Subject: [PATCH 098/131] Improve the `get_queryset` overriding test readability. --- tests/test_relations.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_relations.py b/tests/test_relations.py index 87dc28451db..da571717a40 100644 --- a/tests/test_relations.py +++ b/tests/test_relations.py @@ -177,9 +177,11 @@ def test_representation(self): assert representation == self.instance.name def test_no_queryset_init(self): + qs = self.queryset + class NoQuerySetSlugRelatedField(serializers.SlugRelatedField): - def get_queryset(this): - return self.queryset + def get_queryset(self): + return qs field = NoQuerySetSlugRelatedField(slug_field='name') field.to_internal_value(self.instance.name) From 5068ecf64bc2e4da94fa666e24f2bf777117c1e9 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Thu, 21 Jan 2016 16:50:07 +0100 Subject: [PATCH 099/131] Rename the `get_queryset` overriding test. --- tests/test_relations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_relations.py b/tests/test_relations.py index da571717a40..24087839489 100644 --- a/tests/test_relations.py +++ b/tests/test_relations.py @@ -176,7 +176,7 @@ def test_representation(self): representation = self.field.to_representation(self.instance) assert representation == self.instance.name - def test_no_queryset_init(self): + def test_overriding_get_queryset(self): qs = self.queryset class NoQuerySetSlugRelatedField(serializers.SlugRelatedField): From ee2861887e1b1a1e2cf23f97750cbe21829eeb01 Mon Sep 17 00:00:00 2001 From: Emmanouil Konstantinidis Date: Sat, 23 Jan 2016 23:08:19 +0000 Subject: [PATCH 100/131] Mention DRF Docs - Live API Endpoints --- docs/img/drfdocs.png | Bin 305016 -> 580358 bytes docs/topics/documenting-your-api.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/img/drfdocs.png b/docs/img/drfdocs.png index 8821c8f13f1b906c7b6d212c9b685538e99102d3..0cccb41f710cab2a2c75fe0f04f4c18303beb9e9 100644 GIT binary patch literal 580358 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μ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

0y=r=px)&Acre|!qeS% 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 z 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�{% z@J5-$(g;>F1{s?)^qie;JO>o*O*eA& zX8iM@!ug%oSAl5PJWjnJvJSl2JlN<~>N}sx>)BL^wCH(6PqlY-^4gFS@PAHZ2DXmz z8y>la418Aj|Jur8p}W^&J~d{TAJIpexL*e z6~p9R<)u;tO9}k_ZLe|K{&kl=-YZcaPw?Cxce|)3>Si*-@Rl4{HF^}6>@9lK7otVU!6==wv zBB$3`cK?3RPu`z0-`FhqWeHPLQ_&jEt-^NkuET7@lyzMsKHgV{3bl%&k}^g!+Td4@ zPso_+)sn1>BDo%S(K#-QFOV5eaMf&YQx5l6rx=O|@=sg00cU6V=;|h8+{L@|dS;p5 zeh1LL36OU%F2+6I`Z-Z3b;BI)?C@GJtnwit7sfj6wKfaDQRnPA69 z@>OFK_F!?oW$Z_fN|k@oNmj&QqS!Hfl!}+61Qht!dx0e6M3~YIw_lO!d6f@em9yBw zT526q3qZD+zVq8d#{VB(ZynX<)@={BKq*!rrMR^~p~c;$E!yJ62@u?ZQ{0QY6?bTh zLvardr9g0kI|K*>cl&bgeeeC1N)G&d&0;xI{BcK(;x>p~p7ZdF>ZD_XudweIP9{iSmLXlYLDs(5I67EXmI6R{PYvdy^B^s&q!Q3lta z&)FlE_OkBGAiNfSMn(X9^WP~3UvD=7h6V?xOPwG7Ug@gDqhJ8yH1$D}8zyiaUiSOM z|A0lSzw8)kWO-?Xj!lJXN46PckYA|m8tu)sk&0aGbyu`KjZ4ai4NSNqxoR@r#0^R@ z4P+Djy5cTz86E~x6Ux`I@d4*)PrBtjzE23Au2ipIAAnTzXBaie`9y?i`jotr>R;U7P<}tM2SE5vQp)UMU0*h&BL&2uMP)#GZk;h-TqeuTY7P|kGT|UO}MaXXQ84l>7VaNFs9s&Za z;!Q#N5GP{a^eU|2r`!NN5p`c($RoLtU}ZhQU77w@45OeP=l4aR27EfHIAN3f=P%@C z^kRQ7WM!ErKRdl3Hj2h_wvAATMgJp^Jhz*g@VQiK^82i_HAJC>U{4)pXINh-Kv$~}1UEtPP zs0dy#<%babD+|jSL2cwhGSM@k`OLF|=*pq`YH^D)q_ZF@rXyXUcO`Q|{kLf@$|qjd z6GClu^X@Uz_WKJBvXpMMzHWZa2ewg#C^#G`&QeocR#{R-H5?jUSmKKB<>6BY8m%f{ zNcj6^b!U8MRAIqx^Pg(jmjUfLkNEWcB%GmgX#Fn(dIvSv3Tb_%+8Bpb2`T*X0GsCr z(=t+x*jU)u?;YegzrHT`kyA;F#(-|;s>E*2rX4{?9FiR7kTuBNrE8_arD*5-3I_-0 zI}MuUG?3sNS|!}qA0Mt&Gi%L7r=F%%(_?N9r{Fpo^VVr+7O&XcQZwO&NHcwR-XbM# zKHtwRu#0^Onl_8L#KAvIoM9eZ171CYaXVj$>~8d}GiQDm;qt^4~wqS!pjgWzP{IspQ} z9}?a7)K~)bTGa%jcJ1?8Cl8 z*zpgy|GOj<(*9iw6i$Ly!IpvCC%3~5d$$H#+aadlm)s(lp0mho6>((<}_Mf#SOZ&oVFO{F{16N0}5 z7Rwc>wR|o23XI8ONpmMHoAZAsLCaf`5|)R4^X^G)JizF=MSNJePn?A}%?CZ3s21GV zn;JMFYI^FK(FLBp=(x1-fepBH? zxACkuuS~Dje(oJN?o)De{`E?upXkAfk?Cij9ZOkpac~_u`JQ#I2E6&^Axdg{F%9>? z0RH>E;E!R={}={CfX^wKg#X>@{MRxS(O`&%?Uu-{M4>SImDuMhV@2jZY%jRp-1@{N zg8aA6)(B}yBfX2ks+2dQKEyw+FE7^|bcJ2_#aQQnAX`=@qN%7#RIVvkMj5FK-Hpim+B!jVz~f@wuIj z2{|0ub=n@2r==a9oSkh?Kv(JSTF&=+=QKnJX{f?lYxMv${gmyDB;m3(0NLQsh#5`p zvrhx@LaoGFWe_=K<^EefAb^O3ZatzcO=OOxVt#CZ8Jp?^!yS|MBsA=CLWhLBzd*QO zvV_I|1=fo+|BB|Cp^=^c2u=UMY9@)316&m%%YG>6_KT$T*r`*pj@+w5W&oZx6YV`@N9KfU=ybFI2=d^b-A8w z=9Ux73`sjlc`3|A_2fCwP#ueczsTZtw<%wkE=O0KZt^T~CUTWS$KwJi^3r(4I2Lhn z=2Gr>RpNp(`r444$xXA8^9prmKRM+T1 zP}1}NrIG)8a{v29fJEq{<7?CFI8CsT#etY#9QW)wt5FxRdb; z4LJ|o`auoAD9$MmM(HkazpkQd?u=5vS-QF=cJ%lrC7-Datoy3Q1GEG`|yQVOiGL-)~AycnH{tfogJ?FE+DBPhF;5-=n`J6LDmA{YfPwCCBM%FA)Tx z)}@o-KC&h;V0o_Ti$bU5M*c`<6{#oyt2KKDfWzr*EQ`$Z-UF@W|+~d3WVIjR-~f7x7G@8CSj|hc@^02_Zd1b|3X{U&eCDb+xOK1mo?e z%ehoNlRbm0@(Iut&4?EgmTFPj{&Nak*3|)CR{bC}=gEA6%C)lnD()j53-((r0>`rd zT(d--AWOc!rTkaLl{-hYLi)Mn?$rjG+)57P%7yaNj;sF^$56jve!g;pGNb+#jA1SO zm^i+#zc-8%_S#)O>{)lJ6>eNwS}=;VN-y~4_jZRSZ)YQc_U2uBlI3}dE|N1pLV>P|-y+@c#^cTG^b;CRF z>Gx$+xfku%PXfK_B%SUUQk1O*<1YEskWp9Qs8KEHcOEx2qx+ezsEUL4XlG7C?yuVZ z)t%=`0f8)il`7gUlgxTbapW)CewteQ3A8a)RYn$jB|CiAgW1p>T&;+gO=KU(05d4J zw&--mT$7e*#+pjC)Y5!lG&T`wcVUd_Lo`-jzl2ifX!g^wMk929_|umh9JE$DJKA-w z^vSk!;qC+MQ~*H8URmZcqh5&-Qwa@+nE3Ut-ul_Q61#GODc52F;^_I$P>Wgh`WrXf zw(AG|CA~mBGQG!hsr$|M{`1xXr?C}Ru`wJ^hq|wfF+z_OF;Jksl2_}Ovgx`R!OWZb zVKR3wW@q47*BJbCGgIq1GFr@B+ z*WjjB@Fw%-=R|kn3B}3iT?(%T3E0d>7Ps%%aq&p6e}R$!E(&diu3CZawk786?{*;# z&0MacX=Ab?zwx~^|FL;Wlyc{AoHuO;#wGYmAPW>W#eNIN1cemd{!P69<}$n#!JdiT zet-%IrHDMHdE!R5z!Z?K_)eOanV~!*)nEK>-e_yGw`jSReOEek4R*y6U?mSAqBRd{ zDlVS&=O82^2`WRM6+D~Fo~b!_RF9ks{XXNs3TkS{cSbuqQ96BK0x>RjPVwvVV5_v9f@x^uFzT&p2MK zCxbe}_xygOzHr2^dMq`+EGBUTS&kY>nbg?i>#%ZaBL>O0H{$>b;-HQ1mQ>K8_j5?e zM#~LO2F7W2_yo5lvyQW@fw!>u-If+c$kW__FlROV!u1ml#x4Oy4AsuZf~g5sWRod; zFXUN)0!YakqFtkzfxGBbO_S;_hDGbG$?whK+ta15w?+(tF^8p2DTzWHd6FMFCsXDj zUk&^Orp8AKu0~C=e%T(Q!LD0Bn)sfU?}pFm{U;~5;$rjeHI3HKRql8z50MeCsa0ou zG3X!ro0u$Z7V=m=6X($LeFYigdANrQF>neZ7ZVuKcDC>~&e?Hw?Z@xmaeD*Q^YrZe zKfhj<<)<8X@hjieD^?c%7}TQUJL5!6ku;Rr)rfB57SRth2&m&lg& zEa&M{c9&Kk@r%RHwY`TcSsC?naAsY=>`r{sbj%XACmaLf`_^TbWiS&1U-7R}srHo< z5t{Aoy~i+j;FJaA-|s?glP(`u>7Xrj>)&IP9&X zT}%KF2C7CxXWQRyU z?`1aE!7HoB5yRJY`<}O_;*`v38(Hx17?))4CVaDBraQ2q^Z&WB|A)5Y#~5JEGE}$x z=$6Mw9Sk~_CBpspgsNL1j7#zEobDqx_gB};kE12!a<>Ro9>?KyUY~ATOY!skELZU% z>{^oqkWqwr0|bak!r!QzeMry{pku`-)SIM4UCW*0#HCfH_X;nI$T^swVgAXmPW4Jsa>}o@wN$42gHk8_XO2j# zz|nWruw8d$>3LwiWdvmfUVp3f;4k-Hl9!c_0Cn9_DvHwPTwI;Mf3tPq>qx3(Ib@1{ zrxdQYkLDbBQTBn6MXCCJ%EI52kjC9unO--8&sK40#ui3?7=idboq>nbw=jwB9%vlH(Kdw)(ZXaNWA}T!}Ek9h6gy11#pVE3@ zj!4`;+v2#TH6H;*#n=K@d&I>)tvgiDH2XX?@PZTB%sW5wb@E;IU3|UG_`$tyVCYZZ zgZLfAGFIs$K&%1(+KWt{Ti$^!_KQz#kiCyank$~;jeWPGOTU^=^PLBe8cs@n=!a5U zA3STXQ}&tDmbf|=QOK^7Ln?YSt_&qQLemPG>Dj13Zpgqv*=*qT zlP6hfu+L7-6n^~E9=Ith`>_xiYZ(%X>GEh`WeXmPV!~r|pez)2aewi|H(i*P3y{~i zI_}K5@%{1E!{ck=i#z4@!}G#|=zWiF%(bIYCB}mA$3*VnIsObH;l;#qJvcBCq?5J&M9BW?l4suJ*|;2ag(8GI{X8 zUIt{c+1YBN+f?LLSDNUC3tnV8 zkMxJIi74PHQf4#Ex*<}z<_vuh^~2a~(q!tiH|MneIDwPx5e#)4+8EYHRjS;wc+aIK ziRto1v@km(TptSGs^0lTH$rGOOi? zxezlWOC4c(cX$+HA#9YdjdZmIoRusKs0%L3Xi+Vn?dfUT9O^=Gn;dih+rwbL$TzpH ziEKJIHX)zOTSyUuF)&}Th~`QkU0$Lc_`13Ad?vB`HZnsYBf_~*A;(P0lll03qrcDM zu1Fa!+7~Y>v@d!FY?1Io2!p5}o*fAWM}M3ZcYsA#Ahf5Q5D#Jj&QcB%8{hAL4-N66 zX}B1|3S78Y*gT_c7PCH=OuJww>toIpuJ7q>z5M+3Qum9d8DCJKINxNAR+%UwXh; zat!C5DpS625L{Rxh6@WPbYJ?~%NTi$s+WUJ zh+2=9`pHB*_)!{`hoFzm-dr107_r#=UEVE>>ofZwK_X6@gU@v{Z}%O~`KMjdlCdwd z>{#}Rx-CGyxD#;p&dBHBkg%GY)7IygIE~v2t7IHq(>zKoloRHVXiK5whCd$P*NzKm z?jj(lZr*Pn%c5hhKILL8B!NsrBV)tE&`avd|P}xruY~aCJ zJSV>rheU^pnZ?w<^LiY-iBNp|OYwU>v45XE#dTCk`RCZu%F6~;#dS!0co)pA$*I?n^N%ARp*?6*n$Bl<9D%vRu*G!VnZE}wMnofv*)vC z&txVTqeqL3(AQ;y1&xht)LV;8qW!As)+a-~#>A;h#k&~-QEpczymsIA4tJiTH+fr! z%o>{j)0DF$Z%`4W#$XWxpvjo(Gx#1)A?KdA8E5lL)|^%vXn%sQ7>iS<+I(8Mghf1( z!B=Z*NtZk2o}rNhHWwL%h01^on``Bol}PRD#$05jg6Nr=P~Ypv^8hg)be8zm$Sv; z0wcW{`a`-KWWfrlyidfM zU1W?ueAw||vKzko0l(_%m9LV)h)B~BN@(K6&l0JXltdj?p>LjK&Rc9!typ`Aunyn8 z%&X@h6il9D51FC;-bO{&suAx&Sl6 zeMow1&tB@3EJ`yW&#Q0G!%6vw4`v@Y$2G&ok6LJw`8&o6DD`|e)`V8jw;ei_ksiMX z`=F~2{@1R_Y}^OW=sxc+{RphlA^X1G%mRvYK18wJmZwh@JuXy5FRq_9UXSCV2&g7Z z3SBgS1p~*yyDi`R5Kjp$nHo4dXO){JY|d1OAf5xwGELl>9rdFCu>oCKssn zpNAzobLm&Nm27MBD1$N2kWNdXxHl+SXn~6{FS7B90yUf}$)wJ;nNyDq$ZT!W*|Kf{H<<%ugf-8r*0XxT9S?0A;{dJqqu zo$wK&x6SYU{^YW0#p()t)xtb`k7@<6&qs)*+vgE!B$*=e#1_-bcZ*72-O`H#>S zF7sg>e?Z&Z8WdQ;<0BBMtpysv59f3X4y&Em(3@{H%MfxyXP~rGG4vO@_q3mAHVEYh zS7rlIt$uBY(=+owe4KmVIuphq*-iGlq|cbY;V4#k$vzR`{|8QLk<&9@ySn=wQtb>E+DqZR{ zD2ZQLA2AYYcnv35`V?V(>ffef*42nF-LI*l+P5Ujks_O?R{2oTD)$H8^SDn|)ks+!k{>lMB*F2{!A zm>bW`)7H_tyJN%`oi4it$HiVUM{7S-RVcCQPX4&rk57I5iI@hFiBF%s$O9!?!E(N~ zdrUfSS=_|PifU8n(6`For}%6veiT)^{TQzl}&tfZ^0y>;jeS@J)I2^ zDz=qj!pq(dYIu9Fr%wr}6Ic_A$vns3;ZZoyVG`^y%`$K#?w^@2po}*!hx%7F9a7iJ9M;js&$lh-QShrTKD#W>O2Dvj)e4VW`;IWnK?-7{92{6Ih#fIG<~vKqh}a9OJ*h1QLP7aTj2OHYQF2l z&x)@%r+az>k7#VT`?7s{_b;7>Fb2?QEPBS^`p%>fGBG84G`f&hat_FO_ED4T9plw; zXZYpFMCFIgQ_w9Z4IFgAL9ff#`h||XK>7(p9%kQ72e7jE)OQ48RO*X%%VPO(EeGJJ z=#+#%>q3>dM*O2Y56V!80zsI(_Lj*fJN+gYUhVbGzqemNM7&Pz!*R z+6cKx$!{-vfXtelq>3&2Emw=2c=R^GN>6$yC*skU-Fsp@2Evm@1d)`=|GEnRGd_@=;Xd1^L2NhsoB^ zBrN}YnBrU5qCUvMa!!z(1!l{Aflyp-3t)7jIu&mQN}Wk4rN$`HZF;q)(Em;ku>K&HNkOGj!I(NJCN z@0WlzS#lAdPu~>w5}C?U@J4kSFOpfLZRUT}D$lQI4TjmDEubt@WRFe}w4Jgsn;s9I z6a_S1kZ;QQVf*^h+)I(~P}BTO>2G0srv%v(AZYkoCvToy_<1D{Nq$3EHebCCxPCB& zHa!`t({7+&CY)))-DbbkJVj+sEHCl!2S|3e&cO(*i}>l6B~H-f#1@lN^{8~(j_{S; z%WS_ru%6Rkpn28_X=NOT7+w+$)cTT0qom6*b%7R51e_}|Hfaw`M? zhr1sap?VI7T<`t;XsL-p1K$55QvU62M~?KnCvw-L`4r@ZN`3Vr@Ns^YZxgP{{L=<) z!Z-TsHuhJL>ghjV3Tx?{3W3VH#aXSU!s9k*m8(y3a82cH(VvUV^)hAZRU0>COM^(; zy!hhuw|s?Ko0-}t_P%Ug3z}J+MSirW`#XP@1kG=Gi(YC)n(OWHl(7gu69w*8#Aba% zO*(!iO+BmJ6R3K*Jq$lQ2D+I*FFB6ZY)L=%&1lG6CexF&*>n~yl0De~fUJmv*3Ul$mCre<&x zds68qK7jSQKN71($-C^f%hT|o z?&%*A8@R6lg)nhfnT*GRQn3d7TS)~L@9gn*<~3#{%rMe&e8ecqGx$3m4E!)t1{?3* zt{*MHB_c0fQUFu=?{P)1Mi+k`l*4KHx~?SYTI+iaf`>Es-_Q4bOaQnLLR*gc^*jci zka7QtmG|dZ+XZR7o}{4dih z?E&>`e?SV&C&lg|T8R&-VXPcv;utKOtyb>GNiw1tNm?}*EKZSUE&xRSw$aUcI zGVqm^mzhrEk9s~~+OehQoeoW~cN3H13#4W75&h~rIb4K&JfFbWo6GpjJd-78hDl;S z69a1Z#ZA!@M6(xvz^Z5~YX?vv>eAUiC`I>^`1whEvC~`*`wbpQA^2s+B<^SQ!me%g z(}GujG}#Ht$-8~s5hKF#WH$6ba=(!*su^y6i%16d90Xg={Sr5D-+Rm(U-p}Ms|^v5 zak$Gvus$9sW4PWJdx%7+amqsX85JqkYZ|hXz)r!LH{yS3o9+*O#404~-{ni192Jo3 zqS8J#hH$x?$cw&@_0utoLwuC{>#(;Ijw80Pbrf*dC!5n2Iz^{6m9H~|_yP{R0Qo9x ziIUQ`9kEuBPXZ+57KG@&LCz#NR$6HNc)?9a>4O{MobRQ|PaNc`$t8|&ftSZEm4|+A zi(e6y&FWIE5|P?2kR7kx&5Of`)BomsT&S&dK`r({{TGeKL zXLlp-zI%^JBkj|Zba=+CRUI7)<&j;KZYbTvRSdPnM`ZBM<<&`pLoro`?F6Ljb`!jL zSs^1kFzGeizRcQ`4NfcTwr{^|1jv_Gz6w<8(QnX;bgpRBsOFE2OEyjvYfyn;RkMk- zPb%4J7-qb9ZWz?n`M$H!c!U1(vXm>KQxKa2a`Qw<{DR`-Nxba+0Y0x%Md-slf)Nk7 zJpa1(8CDP6UNpRPa}Z-h^xA)c{-8sRqpjRd(aO=-zV&#r-4Su7^@;zOaq9t~$!cf& zsi7hzWL#hKA5`2{A_pJaB`*oD670u5=t2L8m;XzCLUkHe=EeBn+D@q_UEp{N7deGdxxX9>LbiS8bTp;E}5L zl)@+qcul86#s#c3Wt%FCyXHAfkG`M)p!1Uea>bk7GNXzme9?$sAOWjeh07z7>jutr3nq!(Y;YOzPO1=`Z<1)t4uuyEjJM31+K8bFMudP}k1+iU8|&&fr7OH# zdG+$FY3YGMm+ly09qKiV=pvu$J3b8@mYVhKFlFqu>9(VwP6qUyFHv`EOnVD;xF{<> z!A4Ui%j&{Yp?rih3GwMp6{yye zKAXm+1&d#Qwgn-_zYv^%{6Hk9FGj0TfZm~kJZa5ebeo2Y^UZSiGQv56qi=D{vK8#28rH;Pet=ZRsAU$ApkF};bP`AN4ARd+-t@ykJ z$F|`Ui6ya=_0IGUB3F=aO;`hbElN$9gzE-wIg^_`fLyFpR;G8lU7M#>+%l^h85r&@ z1o<-Qq#XcWZF?m|pEKAdmsLpQnjp5erwU4EHU{RmCG1;~;>i@^?@uPZ^)a=r^ETj_)gnUl&?{GC z%;OowZue&qGo07Mh+@Hz&Q4 zc$K0FK%O)?BH~Q633(jfs8SICTfV}I6}`hT@IwNcwm3RI9~~u?dEFrI-1hGx~&?{H}@{n=T)v6HFfIp`Qkw8(JgXJ@9$nxEt`);jw! z8>|uJwPhu+9_=Q(iUaTj>u`V!W|(FhLB1zG&Ih9=ygoxXtQ1urxb1SH!O-pCW=Zz$ zU@_fwIn`I5S;FICJ{m(_omsJwm9Y-f{;Rsg{O_Xk0pl^Te{rf3&zkSu3B%+8_lwBn@??eT0;x>RFx`aV=f10qh%y}K z=-khJm*I_y(gF3CX?soA)?3Wii3hssmW91o!|LzD1cSm;6(ez6H1__fG?rAw60W%AIQ;as4|mPRSQAim2_qcidA9HH}H)jSYMU zlpz_)7J46~&g}hg40_Xad6WJ9AJtkXL{-s!(Cp0A;jdN^5O4m{w#&%Kph70MV7?)7 zr0&`p!`~uClD)47k26=CGLEUU;Y%!KH<-6zosFPf@+8cFiacq!UtTA>J1V7H!RMwM z>l^rJIbT9vU0waU6#U5d(uzt6B_An;mGMDvf@`ute>A1T>Mc)Qq1cHQtDQg&(lJZm zL^<66sBkzQuK_W9<+HvosiG{^B<&=A9dW2O637RhPIG49>=>EZen;7Y^YUz__#F>F zW8bCvSV08z>Dew_nhybaUV(Yf*~v*#WNsA+75mM|l-qJ@$xel_8hXAB@8 zEc>(UWc`3iZXe4P>Gi^DCr$gcj(26-g`?=jD0NsAmZVZPqM0jZVkmiNoRUG(mVzWw<%_?mNp$?s)OF+PuKd`SOFnmQdi3S{ zL!PCFYtjYxBL_U;DyHY)e&YgD*7{!Mpkm#8bIjsZ zM?tEfeN$MtY=O@_QIwz0xO0V7pj55x>?D;evEsw&;Dnr=%5s=F$YV>QQKuTc@W+q$ zBf*6rcj{NKUeUc+ivGUMnW(5c^6IXuGxDJgm!tiTOG&~OOIRRGfX+@tHM>mtaZqq@ z+8I6)HgO5#la-ZOxvs%nTgmHYq#;%niNwjM(@w4n`jL%_*dtn6?SnE+9&F8qKHo?d zi+doGF~omk;t1YjHQsXz-A@k_|0j(?TnCq;KdmF}L}+N|U$#2$qF)>K>asALAbRXc z>BZ?@w0s`t^t}F{klBJF@CjKis`)bCC4v|bJFn;o)wy;I2GW6hpED^OO+HzN+`jOB z_m+v}yIOn+$)ekAX_#gWw0T3{)mOuh{JoBf7^_bEaM)y-q0PwBU7ta3!abd^S{@@I ztGIq;wkx|y(Cuf{wUp&(fGSd6Zg=6iNuO`T#Ov;2Hj_T34j;FrAolW%PnfWeZ=h*` zH+D@pGZOt_v{OpG(R~e;V;>~-jE#q}SU+ukj{k1HHC62cXRp!lA|A1wsg^t^GHV@{ zdrK~-@g1yTwoz8jEURDl9(pLA#5_W<-Y1t zmM(!5l5tpW2=~~8lqahq^b6ThV{8Vd7iv|x4g9R~O`{g=rJCj>z(~5p z0d4s2ZwiCBq#P6G^vFrp@`Lv4XB5+wp~~%-Bn0BuWjiON01uQC#L}fTRr<#T@U-o_ zq1<@$@^jG~E-&%t48UI`!)V^uAAJrtZ#a@7oa*$S3~=0D*xkaR2#2xR!nFw8&;r#q z3_Z71&RXj+3~ZO(6~EpV0ec27a};TnkSo zdn8SzVzWf8OqxAn1y@(~ELo``|98Lax>na@t(|T9lV8v2cXHrP*NE+zSQ- ztp{x>R;g8w;(d+wAg_V1j%OfwzQR%s{c6PbCm}*7B&)YzWHMgQd%0*Du1Ejl1rUSXov_Iw-#-lc zh0$HvN)$T5hyc>T{dL^EH~Ip5LwAAcljuk;hZP9N5;eB8#g zJ6E^uae3Z2n^5c(+oT1a&-B0ryzb{?5d0msDM2Y_5Hx)C6V#uy7&w*wk2HSe;<;hp z!m@nK`oF)I|57w?FyxL?!DM&+RvEr1{;Pp+hf!AKvPCsO5lNNFw;{FQF#JQ1ZcT^S z+sb?tc;JUo%D}UAOk6tFWa1TsaY@I+L@N=S5i}8k-$yp!(Cogh#A~JBGTFjXV@y$@a!k&}ZmbY8_`L@s(@oXQ`|SSW@_3%B@o-^PMHN{H ziska1&mR4N;l}=ob+qvdd-*oFXi!TOO{!JMZ}oGO=mFOk>PbB6IbPY%iwtFYZBWxW z^(v67Yem$dYz^bHv3wmOdYnvN+n=>{0*K@Yz_K}948;xB4zkf78W~3)VDGG$ z$$ZIWb+y$WZVCIDgvC#}8k*B@G-SaudNLVM1gfks-4SIC|B84iC*^!zXW;Us%7~6V zSs_nT-GYj`K$&@|#*uyL7kXj%%;!j!$Wjhu)21~b312e8lwp6i4jt*UrLX6tsdbvn zI@lsLDrD730_ZS*#mI=`4DnbpW!)cjC1w}47c}B@=p*K5-0r4uDgcSdFO}; z^Z`&*-)zd_*9>;rfV7k3m7UOo{<;P+!@f-3BH9Ybu^GdZN7pZLM3mq9Y>NI@owlVo zZd}r(V?ty*676*m3p=C(E04arn_3sVN^sK4 zRRe66eGq5bEp`P9PpdcFB_dhu#h)DbodyGr{(NMlLt^QPI|U6*(c1goQY+DVpjS`} zQ4tkFds&v1W&gBJM5(xTd~_RV<9d3xp(lg@ajb;HEBM#eL;+n(UuGXoQhQ@Vyl(kz z=Bses7QD+%>2j=skZ^nn;uw)k^aL*TaL-4d2om}-*A z{`D+;xi!>_VoLHt$#zV(LRoC&Ot`-CN#CgWEM@ZIKkaQgSRUUU)c6QS@A;LA*=E_g zmfdLHD{%UX+13qDNcu5#*Qb<*hKAlu$J+I7)aJy`Lqj;M!Kvd7d|D!b?B_^p@j{wO}@@e+WT z*hOvPr=r^V{(NXu6rRS~w&XI)WN1V4zMI_{8{gtZ?G(QxY#?J(NDB&ot`RZU|+0FXZ5IgX&UfmeE7}7&5L`VgZTQzh(Va4zDF8MQQ@ZT8v!6xk?ISG*g1|7Nf@z!blPwNza%m01#Y%e)DVd-Q zyJ2w=+dfvCh1#hoG1Y5|uxRrj{YLkX{|6Dm0bv zsa3)gK^^X&B_RD2lHuc$D*NRoO0F?gbG^IoQhOCCI&i6ev>g7f8(2;s54y1At`phXR){z3B@TTU;AtnI)q`AUtB&r3?Yi-q|_dGjFQdoBKBf!CtdGKv}-C`dmlvDVJl-TtT7tE$1 z5HmY$&asM-ia3uYN0Ls({%yZ><>L$u5g@bB&io^UsN?`v5|592}Fxh<J&J4kxpz1kjhfQ|YyCqQlB;cfiJ{ z5w+|)+a03@Pgh9)>6A>6t`k|4{{8c0g!t7Q&A{%=$Le6+SJ@HsTO7K^w@-g7HwXY8 zTe<;OO8k}J*$swyX{9LAk4)50c!oKB7E68?I-McqOD<%5)DMJ!O+ro_!5iYlozO+* z6Bwfvr2Q#x%>vrNjsF1u&!_smeL5Kvsb zGMZ+Qx7&=3D6y}_Xu=$2JweYd{5;D{j9F>QNv^sP`ogHt`#w0k>(iaNxtUROST1lZu{W?w4h6mI01GQ-K9sFepYY;ZQj3_MB2e2_WhpVi|K=5gZa9mj?OlB zN|XHgJ=DP^{jOJ=d1gF^8y3no zXYN~E`Muq-z;wG?CnQIFvWZ29l=2%A;XeG_Bj1$Tg@ky2E}vhx9mmjijGrz2$4Oap z;mp=}`MLaOJNmu4=;_!T(~R-5lzNm-Ef+P9xU6hjxgXK3qst5a+*}GtL@=evS{0~6 zg;C^reab{8&|IN3PjNO^nT^;S4GBerS|~m{yuU@TVscNpvXSoA)=nd?qDpvus<}d* zw%*RxrezrIXH78y>Yv`QP+CN74oob}6`GW%E-c2Ld*w*pFp!XQB;izP@uT$oA~|!7 zr1~{pj-V83dzkTh4c_9-6m-ryr;1edM{RoDyrXcXGdrTcZ$p^*H>ne>Fe@var%}{3~7#EE-&agQsYQNzoGxPa>)#ZvC(dfwUtDhqWeffRM1aOk`VE5KLb9`f%)!S`kh13-&K_Ue~f*1 zAlvQQe}__4RJF8rt0*;!+OsuVO6?J(6|=+$u|>5-TdOuD_TDo@jJ9fqs1dP8i4m){ zh49OB&Uv1<=e*~f_xInO{P7+4_nM#Ux<0q;slB%sg86aDbcvB*H^Ld6Xko*Oz5u$P zY*&2N;L+1Z+HPD|4j8pxDRaeNQPJkQLUnHR?7Z;4OSf9JO*bJHi{7(3SwgvDmN$k{ z$Hu0{u;qKG!L{c7Nss>K&3(IRGTUCtc4HLly3a~9)@a82TI9y+YR(#8Yu}>7It(aM>Z;Q!Y4?F2+Hg|W@+5P`MalI3%?2R#>^J;aO z0e(E}#)o7Glbi=zU6~c3 z@;@7C`43&n+^6t?kNJD8JwEp)Sb6$+GR4wI%X2(xA%j*kT5Dd7y#1)e`HYyW@3!*=yyxmi~`sS51``8jS1wFT%!fkBv5pU;=Uqu?6EF zIc~1xL5Njg=AA)l6#Om4atXkdOPI7^2sz~Uk<2SLx=+VHVYy~n1>bN+xtf*59OjOP&F z+NO+NTz$LxBDILnyq?r!g;+@GMSFgncUB^htYsxdN&qffEem6{w%b3!L|Z4$foHK+dgvxbo!ka|f#qFEBNpuCAs&Wu0)P0X)G`PHl|0?H&8+lIN7` z5pL-(qw<;4=?Ms>%s27n8}()~%h!)-Cw@*mi~6Kt+DVui6KgJwC_cA6jeVjy=S``U>&T&zP)SIGD7qBY5-U)gTj_-ySr~I9tOU+Bi2+XJX^2K{myyJ(|U$x1vAEt-Zw;IfvmDQe1tGwTX@3 zFPZN#C-P-|NosxllES6T>CrP%mZ?vvd`I)^)Vc>2`GPLr1GxCj$u6`AGKSjSv!qMa zlyn_!*Ytu|&yS9FuJ92lNyAY$A;#xWcIOktAIA{iQ;*80!G#lEMUU<0zsR=P=*Noi zU2l5rWCChY$av^*$%Qk^Um&pGGl?{&wn2MF?&Jmxsl{1#03w1{dh{lej5#A^sVDl+ zwt_a3RBKYThAo~lwNH(w(FR?Dmrf{;;q0XO@u&Qv44ozu$G$0w5QF;2)$D@EWKPe+0X?YBu(!Sy5_k@Py`+rS^mG=~!m!%-`t z6K&8T4Gt`&*{D~%i>Zh++Vrbwyu#>ZK6~yLqnn@%`XFsqdP!}ZO(ClKq-sAUGQnA# z+(Dt*!rt|)9%i}qHal=cyML{r<$X6msp}cSCQvX;{>7fOLT$(qQEY~CLGuM5AGD>s znrs<&G@q=~C^_`YgO#S*ZDyX(QcajRxaAH3-T@2D%(p~eg+FiGblrSB0kmuDc*NdK z*{YUJ!pCFvF#0QpFKU+zg`I|;HjzRIN7l@K{3z~LqIC}G_G0nY!*UcuG zj99)gsex`>z2qNJS6iyGzXmEi9zEaIy|1VV1EvL}b_mH*UmO)JC~Z(CumWuQv&{Jg z-mNB%-HgPKnzpXF1_&T47>(4G?#OLldRcTDy4wcbsYRM@0L0B2VJ(qvW6mjX!}S)9 zo+5i%7%5RHblD`O*Wv`(SmhsimWt{| z3LZ0Udvv*p}%4v!FZ&%UAta6$;(ilI=OWh zFk*)st7L<;I{U%W-&+DXZSBRgb0Teh^`)G-45b3eQ#F6+F|74n5s}woY~=_ZHME?{ z#W+O13T&=FvfH4KYz>}Fsj9?31upiqaAgA-odR7FiR`rnU_Ic=xvr z0|SssM!@tQop>GDlo>l)H28AsMpDlB)6hvzA+iIUT7YG2*yuIBKy_l<&INtEW{cy= z&RAz|?G{OuAzz$2SR{I!Y1P$NATW;4^Q}Pd!F!C)Aq5P0A!+oWP$tGGIoKc_NdQTJzbla zBZu`E^4P2Wvh(`vYjqr@8d#UWBT$G6{OC|g3KpF-)p>a2n7&qV;a;jv5-D-nY2p%~ zn+`S>k$l$lZIP@e5}k zSoq^DWQTHE1trrUR}JXY3imX+N-iJGO} z*KSKW!|oBbJ-vkZkF6koi*+uGox?cUee8QbL_U(_hA_o!i;153-RqB*P;=G&Ncg{` zMPqkf9m#6n;d<0*(L(cADE99c&nvG~z6*Y1tC&VbjyNm1uTZ>uD#**1*nSW!n?G&OY>ky#DM&E?EBqQ82n zuC(_Dfwye@WBmrT*%dSjaR3gNux1-p0hrkNk32o!)gT_<<;QT$2V3u|KfFG%$`JNq z1U(e#fiX{2MoDDXWMn(P^k+UYuWH02vH}BJM}NYiR(LvseR+TDy$N=?IBW6YJw-fu z(+?&8BOTX2NVy)Wd~SL{+4okO;SV)X=W=V=mj6kvs{2Cbf2iK_EhMlVH7@fBw18JZ zGKNw2j$T*3UP+C@e;-;X=B<%;xO76SHpEx5@9aQTu!ZZZgFM4hV~gFWx?s`3z#G3} zal^L7y!C9B$JHrr)z97-p%#oEdwLrE;ZfeM^47~|v)d_%7C+nyftdkF#pKIxpr}X& zyVTv{2u?y$a>uWU!M@`@ZJ$ZQ%?m@F%2O+3WiO{c`CFFxH<_^sKNBcbqZaE$&MmHX zu{Rma_x^hk_^ZqKKP_e#Zq1&a;1|XOT*zt3D_!yde1R;2|6OALZFc|1pUO&Clxrt- zNN<>L?;Jtn0I94Tm)_hze0Xr=;RmNv-?=DrUgG`o96wKREjbZLWuj;O7s{jm-O}d8MVpSkX6LVDYf&wZ1~;L?2)Q^LHJL zuxGD=%>KRl5B~um{QIYVe)sC<4@}JNp+C~+)BepiX9CXA_OVynfos-!9b;7337)J5 zR8wrU8L8nW!e5tpH)tGKH|Q^S_)`!pj^}*a_0ux=%2;ITD-0fljr+(8yLC*}ct?{- z6Ex`96$w7qn3)Q>U0SXYN?Ka}a36VDMP}UeOFaiwIktp__xdt^@!vdegTaKINgOp4 z#XNM^X2?LM@4hq3Fi#@RqB; zZ`b$h|17##s8K@s>3U?sJ(-^_SZ0Wc&W>Kv zf4T4DJq~F>G{#(Tz9TBZM_yM}R+d8cONq+vIJ^x~ zE_=Vz+8z3}%y3Fn%p0RUhIERa^gRVt@6`H=xo$WYgq@t{P)OQ`R{z9E%V>WW-Cr1u zp1ky5pFcP*_zZ_{ms(of3th;c)OWud6RuCMWDw>YWfIbPvP;g|tQdr^uV_(ONs_;b z!mT*Ih!`m=-}l!XY9|p0uccB}uj1X+W%^ElYG-8UJmiDyQWU3>F^Aupqm1W5p&-C7 zKfF?I7K3c4Xj47+knoA;B@a8fD2QFuTkvY2D z?J?jnF*(}8=u+IROeHd^GCVaHYmM9*q=Cab(*un01h%39Xo}{n>Xl5;#`{c+=)cjR z-|xuv;qw`Fbo*eukf#}kMBYj4i@6AX6q#3^uxd62N!4qhLyBypM+&55)(#LBQ;enq z{bdoqN+TwFK5~;oRpoKgj3;rbE=z%ICikJo5Ffh{CWJkt2EV^Oq0PY)PM9zPax$l0 zF`c<%C!N$4=^xU0g*qDm`3xFhU0ccvW0%o%UCYdZt#)QF!UzLxi@A%w3H-6+3c} zP5SD~D?6vCP-JgCv$#4Tk%Avt#F0@uRJT4J7Szg?m+`?nzP$UnIAK-brC@;*yTO7U zNn65_)l6~W8MN?JZ(ZJFZ^F?CSi~NGW3u;M=8r8WW{Kx?d|!T`+4Jp>=I+G1ZZc3)tV2IFa@h+7*}r zL?||Qzv!&T6Vg9_fVtR4*xN1`hq84O5~&6^PV&$k$vSIscu4GnrdK2V%^gwPJ1>>1g>86=>F>b%fZ zyqgnZNPH$6mM*26RJ}{Hl(PKxXeT%QePC*ZE6yenkP6&K>#g%@B^;4a(s-D_v|c0c zo4&g<9}26|%AwjZ8oT0HPw@B0*p2Abq&^qvepSB7FzBBO87#>7ZbhOB#=qqF04LwK zy&KYaqMJzK#Lp6B$|JjeJ>qQoN-gW7_CSUl_m2fXh3ogUSa$s48_By>bBWDvP96no zu(E-cEuG$$4!iSfchdt*p{LhWngD1BY2M zk7NVWcu@3bf}76Xc%$+kz5Sm^-Q}z2ObZ{`d@3IIOImu_T!d^-Kx=8;X8%|%0~Nf2 zsPooz@>=f{TR&27kdNQic?5bE zPgl0-@Q^;{{UH(~!~8PwHG(arFz~h2Z8?CU%DtB(ks(STPr48R2bxc%M^%%uoN+c5 zU+eB+c%nGUVxg?{-4Z5NYixG6`iJ>(Z2n)|XHMSeTNw*nxNzZdC%^;K*B_1cT@sAZ z$gtp^?}&^!P?lY?(|-GbPyDRxVtTKC(!}o>!M}4|9A`^2>d08aTzvSu2Y8-#ebbL3 zb-T2K--p*8ptZuqt*&fq+gl9dCC#>fm`7UF=vuWxLgEvzt<3Yv#e%G3`t-eNJaojf zX3AVB{SuA*LQK-#sCeyJ5>2Au5NGTbmAn75z&~57}%b6nj!%esL!AG`E zDlXJBbvz*<8|l`Z>#hoDnOjd^ObYjwZIDWs zb0IiMA38o&M%T0*4uUw^wnPYrqwb<;39nG7VzqSn;oBj^3v@Hn*3gB(q0!qU%w{}R zAS_21M!9MMts@brLv#>}ZsD?fUQcSG0uLL`rO4kFRy!1J&R>gHk$ulhCy72=2Q0@R zgHv4{j`ZP%Z-)nsq`=d>1sSp$J;Ozax;hD8B`%|k&o`L|+!(-8ous?F_#|MA-03Dg zWH)t2AY2E&wBbG)cy?jkZ}U7I5~N|$Rc`5TgIT+IGcw^N-Ay#qnfK}$vgBF;wc_n;B;(_Fa0e38aeQjZv?}DL2uEibcr4DPPzIo}EAfI6F+^?80I?e>6eR=+S z74o`IJlOZ{e_i>FRLT(+1QzFXEf`>v}KMh1^ysR;&khktmcV|gQg z0U4rsD&9`Sf-ENFnrM2lbD+@vu6C$=g1iyHbcT=^c9b#+skM&{2y9I&b~WX*&`<&{ zCixF8Msp(O$be;$r$IOA??D>?I@uf?8c{(N8=3 z#T~Ws=Fw%&zQZ?0>|{KTt7rHu$H+Qju=|VbbmL)Umnf*AbPvFRu-$TV@#C#;#OpzT zWYB16w?=Xy-xWy)kjOH<084iS$SMT%jYvtX?E7kOkq5#$(PIB7P1E@@cx&jarEHmD&n4@@;gLBuhtA?R z8xaE+!~zX#ChO{~=!&@4DWKDq@_DKshJQ(k81uExV7Z1QATEqePS_Oaz{1si6*zMg z;z>>@8Ax2anj$0XHUb{J+k8lvk}IoL&W{xM=x*d>s&}y)gDxXtb=P#Ct1wFL>y_jii#NIy?3DE@N6aiK1C2Qj!8CBqZwv${BVv z{Nc>^(|M@9yVAe~(V6vUo6VWC0i-c+dNz+=>$qLkn6$qFqDF4F+Lot##`VRZ@-DPL zt8GwV*tMljTcAf&uR*7&YI!@4U6^dY@Qv$nwnJJxN+Kp!KP7fv|o9Wo{bQFJ^^zFyvgnZDPNak z6(#Ad87#Xf3^%+p)OoG(Sjnm^E;iX~%?~*-wV3DJ357(ZD;XMLHA57Os0JXUf+ba` zDyN0XygBJtfeHHSVL{hG@k?k=pfVg%(1lI1yqlvD>1pt-&O6HG-Ud%Y)y}sIdm1KD zvBc1%JgbUstsSbKljc{2qDO*5GU733E`AqH+C2Yf$nx(JAaXKvLy)5K6(fY$yEr`i z>=S3S+|mR&oFj)OKhm_L4RMqVmQ~O4&o?HWbdUI5Woo}-S@ERPclKA(!VelIEnhXW z!IkUVtjpQ1BH&_y<2GXrjwOcoR@*ATF={lreTy5Oh=zqEXzqi*=eZwm zolO(@A4F#-;tZP&U@{J*`ch(WeZ0}DXt)azHUY7LeT}!umkk?jCp-s~;wo3IN|GiJ zSS?$ts0GLQ&`{&C84ErfMkI-!WzNe{&4Pd}r%X)f7}4P$E<`Tr@F&t%3_o%Ikv%YG zSVP#nmnX|n9#YTYlGwQ~iC&JikjW)YczO4Xeh4VKJLqH&h0u~H>+D%SJz|Zj<5o9p zaPqgXFVJdOBp;m>)0tr|UG@^Pey%l+|#X*NW%y-yr7^W7-Bt&}J z_Gg5a(t=`2O=0=r)Af3sPpMhmdey$3n@$AFEl81xVeNOfxAj|%?#=tVHf zX0LR`g-sRf`-po}{^*-{^;VCT?Qw%>wa2~_WIto$`@1HSE*Zkxa1Cqgs3Urgfn_-+ zvAb>>kK$)cfL7f0B4+WKIf4=&HbaxFV%Cr7&?(#YJps^1Ee7l!sS+%rjMSHn&K+Ey zy?`UlidIdzz7JQ=%h>hQg9`~ru$}+9GMYS>m>H$0N6N0Nxwr1(B28)bKsX+yWhXKv znWEzoH7>_t;;m8%r>NH9lD=&-B}n^^jO+8`r)LV9yl|;7)3O3^ghv@}v*iDdHHl&kFjuI|XoA6JDJgeC&P-umv)C z+4d}`8r&wEazeZZw>+hHe%>@P!ZfuAiU?#+e4MF7HbnJGg@e5Rp+V@+Y-J}@`7OxY zwbv6@kX`$&=(7xSR9-h$(h~Y+$R$$oN0sQDsyR6#&ttL7uSc7hYS(D!DjxTmo3&WK zk6@8`G|s4lOup!u=wz6x550=flJ~lbLHYD9oKEirRj;iL+4e3!seew@IUcqd^hmgI z=aS4(>ChBN;035BmwIC$-p7!qqYWg$=?jVMHNOwAYTdfcFCqe+*EUvA?Rk&yNK=qL zqjdD`Bw$4ih8r-I;Y*V(PqM`TI z1_hYY>z?H->cr?wjnEidOsY|N*xe4!di0s8oo2`9RsRj9I#U0`;`O_ReEw|De;z(g z`0(L_g(_jhIB=)b`*JOaO3}MT?!<^Q^ba z>IubC9eBK%Te=Mz>Xshv(du{s=|@W8-tA+DXy(i=mJA7{K?bhN=)9xH)gucLK4RKm z@5rLLni7>mkCoWDY!w3I^>*Yi8d=%kWpg+y=7)wtqKnk#e8Wr9xKJP z=o;5`fAdia7%F*ep=B7w662|Z@D1^h9{wTkw><*am&~%*G^zy+4VxjKrTd=P-ju2S zN;=rX9C5^0R&2y-38S=i0K>cd5?*wc#`?MQ1c~?F%?upT(5qdN`XmwTaYf8FeOSKC7Or@sxf@Z=KkQkV7$Nqd2 z%q{AV5KjK&`@Ft^$r77K)vxcJs|O1TFh)POVsx1s=G*s9ws46@^oY3k6rn679R5}(pc7SBt)j}c(5e#8@$#Wu>`#7A8t&N(hPxlbw+DYlz#4J z0)73`VyqN|@>(B>p82Jb5rv_HciKpChBvYzTz8W>`kxQo9{toL<$J&0qG$-zOXj9* zl)bk6K$MaVQlOi`J5j&s*6I24i3DP-?bk*fZm$6r!ZJ2F!#nSO@RMN-<(ko(tZ2#E z2`FrmjqMzmcBVP{NbX3SW!0P6)BY>%8RN|aR{sod-!Dz?D4rKCH;>j0&M8l?@CSDJ znwwQ%8d&!vdR7dy7Ml3mA?QU}+|8M(N>p8yC9JkZU6|8^D-J!cub0M`rzU!{jKOay z;$G~{@%=saU9l%%c8`^(5u1_FTq^ z55fNCd>icTg=+f-icGWaR{i~1{gAkU%gt_<%KQr~Jk!YZyUy5wyNb%(uXpA2r z%?V>eOB*Si-52YDNgPPvj>C9k3QvO1k2lh$F6izn@MJRt<@dug!|k)9UJ)Kxm_L8% za;q%QXi48{Esf;-qK|3nN(k<1whqDgaf}ORnp;e)AEB4&j^#B^_mC|(W9G_d@@c>= z#sfG{MoSAy|MzO&-qk7a2@LYwC@d6;aPrtKtJFTH5`1PF*o-dfR|KeFW<*@mT#Co#Gi6_>V#zzM% zH*bu-l9bAqUD_P00b-Pv%o7ZkORRv>OkcjRXY>nI6Mhxgb~_fxE_n-XOpHp>*|;HE z*S%ZgLTDCy%oG&mO;~t~e4EUC)IjtKvaw;@2w1 z&JVW(n+2F#5B(0Ytw9^?;m)qUeifyjP!{^X$b>{0R{MQ!Mw}pOiGg zZ$Vh)r=3E}D?hG}M2-)Cp&NkAv*cYJu&Eqp9zuK=w1(>xJaDM(Z4k~(a9F_A(l}&w zgY=yDo&0S#M-{v;bt$5Cb(wT;G8z#rf`G#BeI zKYr2v)YL`0^IbP;8Wt&gu23aJ_B>Zs^Rt{4-l)4Su*Fw2{su|?#_SH1EQiGNXYCE@ z&nq#V;Y;x@ntumYvDx;KpBZy+Hl(EMxG45dtplB+he(@JUV|5q?5cNQQ8L6*NtNV>+y-a0F9 zQXB(K9hNDpGg8^PW~a!$)Bbv5+X)zB&@XM!Q4F$>eob3yWQ1Fuxoy_umL9>D6%LlA zV>|xDl4=+gBDGYsnAZ1USk#nIoR^jLP~A9QE=)>r^nwoL;RCkyOd21;=X?giXk#OE zZBg7*!}qqdpO=k6OYON_pNrxh{WIQWyRt z6#%fELbKX*VsN>+xtdHu@>rS3ucFs!mfY4{9bU#R0WDV3b~PdkKl*Mj$}SDkk>o?* z>v6ezQeA~H+_t^RqLyhozfx2ltktbbF1zPH2E((X8zQyJF}9m6=eNew6~talN<)ul zDh57VZ+%kF4J4*4*>prWR(s%_Ft?r$cQI`3)I_5Xe$DS3hy(Z5rub6H$GNp>l;mnh zzZoic8nZG~knheSEs&!gISiV(;W!AonC&UEe~xtC%Qo*_&-HlrdqNdM4)v+^&T;ba z)z?T5n_`X(?Sf*n=ql<{3TZ(yTNpsHX{%WM;AOm80mg$(!ub;iOtv;CoozbE&}!_U zm`&RATcm{3qNjJ0xW;q)kIZ~>!Rk}8|~lr?%e z?qx^uR1GgvcX}DLI!7qEpDnUdPJg|&M8{GqY_?cdCZlU?&%#vCDj#?LXfj}slzDk+ z=wQx*A5&B}nXiNN8H`@di96S(ph2+d8D+SNb4o0vm@+1vwR#F}P8UgP++Mz`(4+bP zo$_23J@-!AEI0a1X^Ct6Cn9BJJm5##M&+52+!(H3%bH8am+Xfw8!uMAqYRYp0-K#? zH*G6y8rzQrFeivL9V8Y+yN7u=8yQ7L6c)OX_Bf^QlmN{|kU0XVk7?bMp^>K!5pu@-BK#g13#!{4yl4wV2r z6}gAiztWhDJwJk6a;ENhKA?qLKXY;uLNWX9WX(h5U7G9@9Y8>_$A=&^tD-PxyMnjaGS)jgXlPA1WbS@vPe90eK*uK zsD@3iV4Oa1F_>{APbXmo9R59cTF!$~=LsM;XX|3X;Sflq3sYbf6UK3xmj)Yuv|l*+vx;WhO{}-O z58b|FJYyDVn%`M>dc1pD%&7e4xW+~N_Sgvy+?v!%45#lwDG|-a8l76@50~Wdm?M}7 zbA@z2Sl8+6motGG0YpdSkJxDR>+r>%3tEe4+L?nQb-C0#GC*xw97jcIz8%)=6%xs;yxrsjxc{m<-1oV-ECWoJ9r=-0fF#b} zOZ{~6(XgL?UZ8Wx>5hm-y5i*R94%JcVD%~lDjsTF?3kEN~!bmD_sji0V2H9U7Ji2hOMiFUguehy3{RdnE@yz8e+9SqS)Jx4> z`@=S<8vi`5sc-<&`7(%Nsn7VUjC^_fuX#&(_j5|;zC|Cr7C$b}nGJghsNak~;sBK4 z@M^+-8yGm%uDcSUDk2iQZrW%Q)uIyzf$r7uZ6{xk2;uC+Vn>jii$A6xqE0>w5z?lK z_xXaIuU4WSjnzH|{Lfqe_4@z3P>DFhRQ4qN!{lqD=J0c=IWZ6#xPeQVZ06$9(&H-G z>PI4RZ!g@J4lSFgd~DYX%#FF%DLXNzc7OCu+-f1e!2+&+>K?OIWtULALOrZR_yGYV z6TLRlUgO2r_GqF|k9(od)$&%*!MZ}V$L0&OYB$M%F#MN-k#1kD#Y=2%3_@3RKBJR_ zV{mlkv49|=zszR#5Vi`TiP#tw5^DUoKT=}Sco;EU2u}h+($ z_w`IlO?q;*;Y#pbaj%r0d34k}QfHfhzgjA=A!`5_6cunfge%&9NlsPZB4WPT^7X_E zDFM3)!XL08UHSPmh->SrqL~+FO!z7`u!JLVzlAh))gNt(!4!vadg~zfK&m=&l05sC9OES|Xok39+^$9- z<06lti&oMtbE3%2AY7f8|K8=uMnHD;Bt=dEmVY0$Raq@-S>I~5>vFWdx=`HOWac$_ zM5EBLs0Df&7rx+MTl{3&cV4O6{$$Vmu(v=_0M9bD%8lEMWo_Njtv+;U4p(gQUG+ke zl1}+_OHXpr5N^S2vH_|s2Uyo`a4X6{2iWwzk4N5qp80zvg!GYxeJA~v2cJ}mu6vRD54p1 zZ{0QS5tI;Oz|J%(IQG@T*SDx?oq+3B4}5#f01Z{~94`?zFV?BDtp*=mi;MuIdA zcX!E~76M9jz&>eXoz_oMC1U&`Tr zw|ET|EI1g|wNz~5hc=Ohu+xGgTRhLb+`nlxa~wCXvR!hnmjT9&$C7J zZUV^ec+m5aP#Zy}il+%dv3d6JIYr$I?e0ioF?s=L($ubCCCS4K&BZ-8B}5ckU4XMU zUd-S={FPiYF*3dA-296+34Jf)^h3bUik91vWdxf_0u_dz8N_{6STP85R+$|#Cp|Mc zDOg}}z;yWisKTINva0-Kuiipvvw6c@fhivC|#(wcx9RXv^yuTbHZ;QANg1Wq< zbR9=DQAp9TI;UvEGAp6YM*OOni*}wY=Yy^$q{l+eW)P~>Z+iyi7{BbUXDP5SeZ&!~ zQ>XMWhxv3q$<nwtW^z0RTZ1hXvy5AmK6dAf&N^fl#r5X{s!ZlIFu>-q7 zx@RUNI^>%Zt+od#73?#<<2lZb|C;|C8cKPH6*(y+PYI29m&eQ0{nj#-FKY2a_~{I?q4{d0bC zcYIHOZ@Ty+s?Ln2sC;XfrPJUpNJjuIf(UNL7N&(5>l7KhwU0EWu5f!Id{xrn&g2;8 zi;>BfS{}dPOF9)kX?Qa3!9)i}5|R^>m_2ChLD(3kb)OUi5vEn%2+kZmAq^@zHogDLJJxcnpI?$)PKi3a3OXLEv6EJC zrcPrT2pTRNf)9x@QRsF4xXtGEYuS%k!2}9wtTeZ{tRYJtuVkV43F}{QAOQT1-s>_wP* zSAD*j&7gVoRup}pIrkFABf~a;WA0iw8v|G%avegd3eNrul2|QuU{gTlR-eV}cHjrPP>&Vq2SDA}#i#q*ila=(q_M3GaW5g;G)n z4;OU4v3Z?FNp1&kWq77BdI<_Elk++xV7M7pygu~Y>bP}|8vov1q2KV!t;ou7zm{|Z zU89?9-gD2w-wuuNzhw4HH#1S+nbL2z2^H8Gu)4^4Nc_euQC*-Hbf%#CD)ycU>U*#Y zf)Rsvw~~MHRhoai*2rqA$>=9YB5gIBRwV7{NBZZUdzgd)q9@$Zk1oQAs;jM=m>XN+ z`vNYQE;R(_L~VQ2&77_r`0kx1v%R=~m5dfVpS+j$zh=vA9zEyU;It8=C;X1@+eCkU zC3w|Va_TBHIWAk7ndZ5InR)eYwXJ=|E#|^D)@=OkPtJ{fZ9mwUu)Sl~={ys;=nD|v zK=WDA2^xSxnpNKQuX9h?S1N_TEWzTXRQ~TQu4ze6d?Nj9a2x4+BXq$UB&&!R7(WZ? zZAE|0B6t^t(bnjkd-LwhbctK(6w0+VV8!0M3)e#8m)VYJ#~fb65D(;o);3$Y>6P|s z1-$`Uuv9WRv1jh&QO#C_)INb7&a@_#lphsN9!}n?-kPRb7#75tt3{|U-#d4Fg|=j>FOnzt{#j{kD5EM%

-`47=#jBJ_5@ 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

v++Ct4@{s=7N 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

#s0~YCV)!$8yOd>`pmg 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�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 z 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≺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%0DT};YQtZNohpd4Gh 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 diff --git a/docs/topics/documenting-your-api.md b/docs/topics/documenting-your-api.md index 50a4c22e23f..e7d2cde0c96 100644 --- a/docs/topics/documenting-your-api.md +++ b/docs/topics/documenting-your-api.md @@ -14,7 +14,7 @@ The most common way to document Web APIs today is to produce documentation that #### DRF Docs -[DRF Docs][drfdocs-repo] allows you to document Web APIs made with Django REST Framework and it is authored by Emmanouil Konstantinidis. It's made to work out of the box and its setup should not take more than a couple of minutes. Complete documentation can be found on the [website][drfdocs-website] while there is also a [demo][drfdocs-demo] available for people to see what it looks like. +[DRF Docs][drfdocs-repo] allows you to document Web APIs made with Django REST Framework and it is authored by Emmanouil Konstantinidis. It's made to work out of the box and its setup should not take more than a couple of minutes. Complete documentation can be found on the [website][drfdocs-website] while there is also a [demo][drfdocs-demo] available for people to see what it looks like. **Live API Endpoints** allow you to utilize the endpoints from within the documentation in a neat way. Features include customizing the template with your branding, settings for hiding the docs depending on the environment and more. From 34901a5ffa6078fd964d5b3acdb222410069230d Mon Sep 17 00:00:00 2001 From: James Beith Date: Sun, 24 Jan 2016 13:33:18 +0000 Subject: [PATCH 101/131] Fix syntax errors in docs example - Add missing comma in kwargs - Remove spaces around keyword / parameter equals - Replace incorrect curly brace with parenthesis --- docs/api-guide/fields.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/api-guide/fields.md b/docs/api-guide/fields.md index 4118f6df97b..5acaf123ec0 100644 --- a/docs/api-guide/fields.md +++ b/docs/api-guide/fields.md @@ -96,9 +96,9 @@ Two examples here are `'input_type'` and `'base_template'`: # Use a radio input instead of a select input. color_channel = serializers.ChoiceField( - choices=['red', 'green', 'blue'] - style = {'base_template': 'radio.html'} - } + choices=['red', 'green', 'blue'], + style={'base_template': 'radio.html'} + ) For more details see the [HTML & Forms][html-and-forms] documentation. From 714607307ed0a5141779b9758d3cd33ac698021f Mon Sep 17 00:00:00 2001 From: Mikalay Radchuk Date: Tue, 26 Jan 2016 20:58:01 +0300 Subject: [PATCH 102/131] Fixes AttributeError in HTMLFormRenderer.render If `HTMLFormRenderer.render` will be called with default arguments, `AttributeError: 'NoneType' object has no attribute 'get'` will be raised. --- rest_framework/renderers.py | 1 + tests/test_renderers.py | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index fa64f88ede5..06bc3086f4a 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -341,6 +341,7 @@ def render(self, data, accepted_media_type=None, renderer_context=None): """ Render serializer data and return an HTML form, as a string. """ + renderer_context = renderer_context or {} form = data.serializer style = renderer_context.get('style', {}) diff --git a/tests/test_renderers.py b/tests/test_renderers.py index b4b2db22eb1..de89e50aaac 100644 --- a/tests/test_renderers.py +++ b/tests/test_renderers.py @@ -10,6 +10,7 @@ from django.db import models from django.test import TestCase from django.utils import six +from django.utils.safestring import SafeText from django.utils.translation import ugettext_lazy as _ from rest_framework import permissions, serializers, status @@ -459,3 +460,28 @@ class TestSerializer(serializers.Serializer): field = serializer['published'] rendered = renderer.render_field(field, {}) assert rendered == '' + + +class TestHTMLFormRenderer(TestCase): + def setUp(self): + class TestSerializer(serializers.Serializer): + test_field = serializers.CharField() + + self.renderer = HTMLFormRenderer() + self.serializer = TestSerializer(data={}) + + def test_render_with_default_args(self): + self.serializer.is_valid() + renderer = HTMLFormRenderer() + + result = renderer.render(self.serializer.data) + + self.assertIsInstance(result, SafeText) + + def test_render_with_provided_args(self): + self.serializer.is_valid() + renderer = HTMLFormRenderer() + + result = renderer.render(self.serializer.data, None, {}) + + self.assertIsInstance(result, SafeText) From d738ad7ae603e58eedbc26b186878a199515cb86 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Wed, 27 Jan 2016 22:23:20 +0100 Subject: [PATCH 103/131] Update to serialization results (closes #3881). --- docs/api-guide/serializers.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/api-guide/serializers.md b/docs/api-guide/serializers.md index dd33f7703f6..6aa34da3d8c 100644 --- a/docs/api-guide/serializers.md +++ b/docs/api-guide/serializers.md @@ -43,7 +43,7 @@ We can now use `CommentSerializer` to serialize a comment, or list of comments. serializer = CommentSerializer(comment) serializer.data - # {'email': u'leila@example.com', 'content': u'foo bar', 'created': datetime.datetime(2012, 8, 22, 16, 20, 9, 822774)} + # {'email': 'leila@example.com', 'content': 'foo bar', 'created': '2016-01-27T15:17:10.375877'} At this point we've translated the model instance into Python native datatypes. To finalise the serialization process we render the data into `json`. @@ -51,7 +51,7 @@ At this point we've translated the model instance into Python native datatypes. json = JSONRenderer().render(serializer.data) json - # '{"email": "leila@example.com", "content": "foo bar", "created": "2012-08-22T16:20:09.822"}' + # b'{"email":"leila@example.com","content":"foo bar","created":"2016-01-27T15:17:10.375877"}' ## Deserializing objects From d0f7b048055161ea61e70ec4abc43f7ac6976069 Mon Sep 17 00:00:00 2001 From: Mikhail Nacharov Date: Mon, 1 Feb 2016 13:20:16 +0500 Subject: [PATCH 104/131] enhancement #3886 Internationalization in admin interface rest_framework.authtoken + verbose_name in models.Token fields + Meta-options verbose_name & verbose_name_plural + Labels in AuthTokenSerializer fields in case of usages in Brousable API + provide AppConfig class as described in django documentation with verbose_name came through ugettext_lazy --- rest_framework/authtoken/__init__.py | 1 + rest_framework/authtoken/apps.py | 7 +++++++ rest_framework/authtoken/models.py | 9 ++++++--- rest_framework/authtoken/serializers.py | 4 ++-- 4 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 rest_framework/authtoken/apps.py diff --git a/rest_framework/authtoken/__init__.py b/rest_framework/authtoken/__init__.py index e69de29bb2d..82f5b917114 100644 --- a/rest_framework/authtoken/__init__.py +++ b/rest_framework/authtoken/__init__.py @@ -0,0 +1 @@ +default_app_config = 'rest_framework.authtoken.apps.AuthTokenConfig' diff --git a/rest_framework/authtoken/apps.py b/rest_framework/authtoken/apps.py new file mode 100644 index 00000000000..ad01cb40493 --- /dev/null +++ b/rest_framework/authtoken/apps.py @@ -0,0 +1,7 @@ +from django.apps import AppConfig +from django.utils.translation import ugettext_lazy as _ + + +class AuthTokenConfig(AppConfig): + name = 'rest_framework.authtoken' + verbose_name = _("Auth Token") diff --git a/rest_framework/authtoken/models.py b/rest_framework/authtoken/models.py index b71dffa4a69..50db181033d 100644 --- a/rest_framework/authtoken/models.py +++ b/rest_framework/authtoken/models.py @@ -4,6 +4,7 @@ from django.conf import settings from django.db import models from django.utils.encoding import python_2_unicode_compatible +from django.utils.translation import ugettext_lazy as _ # Prior to Django 1.5, the AUTH_USER_MODEL setting does not exist. # Note that we don't perform this code in the compat module due to @@ -17,10 +18,10 @@ class Token(models.Model): """ The default authorization token model. """ - key = models.CharField(max_length=40, primary_key=True) + key = models.CharField(_("Key"), max_length=40, primary_key=True) user = models.OneToOneField(AUTH_USER_MODEL, related_name='auth_token', - on_delete=models.CASCADE) - created = models.DateTimeField(auto_now_add=True) + on_delete=models.CASCADE, verbose_name=_("User")) + created = models.DateTimeField(_("Created"), auto_now_add=True) class Meta: # Work around for a bug in Django: @@ -29,6 +30,8 @@ class Meta: # Also see corresponding ticket: # https://github.com/tomchristie/django-rest-framework/issues/705 abstract = 'rest_framework.authtoken' not in settings.INSTALLED_APPS + verbose_name = _("Token") + verbose_name_plural = _("Tokens") def save(self, *args, **kwargs): if not self.key: diff --git a/rest_framework/authtoken/serializers.py b/rest_framework/authtoken/serializers.py index 8a295c03e9e..df0c48b86a5 100644 --- a/rest_framework/authtoken/serializers.py +++ b/rest_framework/authtoken/serializers.py @@ -5,8 +5,8 @@ class AuthTokenSerializer(serializers.Serializer): - username = serializers.CharField() - password = serializers.CharField(style={'input_type': 'password'}) + username = serializers.CharField(label=_("Username")) + password = serializers.CharField(label=_("Password"), style={'input_type': 'password'}) def validate(self, attrs): username = attrs.get('username') From 37d1d3e738cbb50fac5ccd2571ee2ec2ec1cad31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Padilla?= Date: Mon, 1 Feb 2016 15:36:11 -0400 Subject: [PATCH 105/131] Update Django versions --- tox.ini | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tox.ini b/tox.ini index 6039c394051..bd9e5d6aa7b 100644 --- a/tox.ini +++ b/tox.ini @@ -13,8 +13,8 @@ setenv = PYTHONDONTWRITEBYTECODE=1 deps = django17: Django==1.7.11 - django18: Django==1.8.7 - django19: Django==1.9 + django18: Django==1.8.9 + django19: Django==1.9.2 -rrequirements/requirements-testing.txt -rrequirements/requirements-optionals.txt @@ -29,4 +29,3 @@ commands = mkdocs build deps = -rrequirements/requirements-testing.txt -rrequirements/requirements-documentation.txt - From 1f2a32d506d732117325ebac2246f8b53d9de447 Mon Sep 17 00:00:00 2001 From: Mikalai Radchuk Date: Wed, 3 Feb 2016 12:36:00 +0300 Subject: [PATCH 106/131] Fixes docstrings in fields.py Fixes docstrings for `to_choices_dict` and `flatten_choices_dict` functions in fields.py. Mistakes were introduced in #4d69286 --- rest_framework/fields.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index a2b0f3bf183..6d5962c8ec7 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -117,9 +117,9 @@ def to_choices_dict(choices): """ Convert choices into key/value dicts. - pairwise_choices([1]) -> {1: 1} - pairwise_choices([(1, '1st'), (2, '2nd')]) -> {1: '1st', 2: '2nd'} - pairwise_choices([('Group', ((1, '1st'), 2))]) -> {'Group': {1: '1st', 2: '2nd'}} + to_choices_dict([1]) -> {1: 1} + to_choices_dict([(1, '1st'), (2, '2nd')]) -> {1: '1st', 2: '2nd'} + to_choices_dict([('Group', ((1, '1st'), 2))]) -> {'Group': {1: '1st', 2: '2nd'}} """ # Allow single, paired or grouped choices style: # choices = [1, 2, 3] @@ -145,8 +145,8 @@ def flatten_choices_dict(choices): """ Convert a group choices dict into a flat dict of choices. - flatten_choices({1: '1st', 2: '2nd'}) -> {1: '1st', 2: '2nd'} - flatten_choices({'Group': {1: '1st', 2: '2nd'}}) -> {1: '1st', 2: '2nd'} + flatten_choices_dict({1: '1st', 2: '2nd'}) -> {1: '1st', 2: '2nd'} + flatten_choices_dict({'Group': {1: '1st', 2: '2nd'}}) -> {1: '1st', 2: '2nd'} """ ret = OrderedDict() for key, value in choices.items(): From 62551bc80f5ca13b3fbb16151fba0be18aa9e45a Mon Sep 17 00:00:00 2001 From: Chirag Khatri Date: Wed, 3 Feb 2016 15:25:31 +0530 Subject: [PATCH 107/131] typo in tutorial part 1 --- docs/tutorial/1-serialization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/1-serialization.md b/docs/tutorial/1-serialization.md index 4e4d7817268..239d5420430 100644 --- a/docs/tutorial/1-serialization.md +++ b/docs/tutorial/1-serialization.md @@ -159,7 +159,7 @@ Deserialization is similar. First we parse a stream into Python native datatype stream = BytesIO(content) data = JSONParser().parse(stream) -...then we restore those native datatypes into to a fully populated object instance. +...then we restore those native datatypes into a fully populated object instance. serializer = SnippetSerializer(data=data) serializer.is_valid() From 0d4db85e8c5313f0a482232fb4c62240ef3d4b85 Mon Sep 17 00:00:00 2001 From: auvipy Date: Wed, 3 Feb 2016 16:01:37 +0600 Subject: [PATCH 108/131] updated readme with commands from recent versions of django --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b5b33212df1..862fb0e167a 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,9 @@ Startup up a new project like so... pip install django pip install djangorestframework django-admin.py startproject example . - ./manage.py syncdb + ./manage.py migrate + ./manage.py createsuperuser + Now edit the `example/urls.py` module in your project: From ff4d7c7e0731e29e098bdcaa073310c766e564c3 Mon Sep 17 00:00:00 2001 From: Christian Berendt Date: Thu, 4 Feb 2016 07:26:15 +0100 Subject: [PATCH 109/131] Use 'password123' as password for new users in the tutorial Trying to create a new user on Django 1.9.x with the password 'password' will fail with the error message 'This password is too common.'. Because of that it is necessary to change the used password from 'password' to 'password123'. --- docs/tutorial/4-authentication-and-permissions.md | 2 +- docs/tutorial/quickstart.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/tutorial/4-authentication-and-permissions.md b/docs/tutorial/4-authentication-and-permissions.md index 8a9d73e4a5e..74fe5189543 100644 --- a/docs/tutorial/4-authentication-and-permissions.md +++ b/docs/tutorial/4-authentication-and-permissions.md @@ -206,7 +206,7 @@ If we try to create a snippet without authenticating, we'll get an error: We can make a successful request by including the username and password of one of the users we created earlier. - http -a tom:password POST http://127.0.0.1:8000/snippets/ code="print 789" + http -a tom:password123 POST http://127.0.0.1:8000/snippets/ code="print 789" { "id": 5, diff --git a/docs/tutorial/quickstart.md b/docs/tutorial/quickstart.md index 2bb274355c1..910eb4cffaa 100644 --- a/docs/tutorial/quickstart.md +++ b/docs/tutorial/quickstart.md @@ -28,7 +28,7 @@ Now sync your database for the first time: python manage.py migrate -We'll also create an initial user named `admin` with a password of `password`. We'll authenticate as that user later in our example. +We'll also create an initial user named `admin` with a password of `password123`. We'll authenticate as that user later in our example. python manage.py createsuperuser @@ -134,7 +134,7 @@ We're now ready to test the API we've built. Let's fire up the server from the We can now access our API, both from the command-line, using tools like `curl`... - bash: curl -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/ + bash: curl -H 'Accept: application/json; indent=4' -u admin:password123 http://127.0.0.1:8000/users/ { "count": 2, "next": null, @@ -157,7 +157,7 @@ We can now access our API, both from the command-line, using tools like `curl`.. Or using the [httpie][httpie], command line tool... - bash: http -a username:password http://127.0.0.1:8000/users/ + bash: http -a username:password123 http://127.0.0.1:8000/users/ HTTP/1.1 200 OK ... From 1a052d6ee3bf2cd15c9a8352b79cfa595dee3738 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Thu, 4 Feb 2016 13:49:55 -0500 Subject: [PATCH 110/131] Silenced deprecation warnings on Django 1.8. --- rest_framework/compat.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 054d6976ee8..adce32be814 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -251,7 +251,7 @@ def get_all_related_objects(opts): :param opts: Options instance :return: list of relations except many-to-many ones """ - if django.VERSION < (1, 9): + if django.VERSION < (1, 8): return opts.get_all_related_objects() else: return [r for r in opts.related_objects if not r.field.many_to_many] @@ -264,7 +264,7 @@ def get_all_related_many_to_many_objects(opts): :param opts: Options instance :return: list of many-to-many relations """ - if django.VERSION < (1, 9): + if django.VERSION < (1, 8): return opts.get_all_related_many_to_many_objects() else: return [r for r in opts.related_objects if r.field.many_to_many] From 57608b937e79db511c5ea2c1feaae87fddab2962 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Thu, 4 Feb 2016 13:58:50 -0500 Subject: [PATCH 111/131] Displayed warnings during test suite. --- tox.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/tox.ini b/tox.ini index bd9e5d6aa7b..64b60327efd 100644 --- a/tox.ini +++ b/tox.ini @@ -11,6 +11,7 @@ envlist = commands = ./runtests.py --fast {posargs} --coverage -rw setenv = PYTHONDONTWRITEBYTECODE=1 + PYTHONWARNINGS=once deps = django17: Django==1.7.11 django18: Django==1.8.9 From 3ea1fe61a062c90ea052b3d5e4f950c23239752f Mon Sep 17 00:00:00 2001 From: Kostya Esmukov Date: Sun, 7 Feb 2016 18:58:19 +0300 Subject: [PATCH 112/131] Fixed _force_text_recursive typo --- rest_framework/exceptions.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rest_framework/exceptions.py b/rest_framework/exceptions.py index 8447a9dedc4..29afaffe00c 100644 --- a/rest_framework/exceptions.py +++ b/rest_framework/exceptions.py @@ -28,7 +28,7 @@ def _force_text_recursive(data): ] if isinstance(data, ReturnList): return ReturnList(ret, serializer=data.serializer) - return data + return ret elif isinstance(data, dict): ret = { key: _force_text_recursive(value) @@ -36,7 +36,7 @@ def _force_text_recursive(data): } if isinstance(data, ReturnDict): return ReturnDict(ret, serializer=data.serializer) - return data + return ret return force_text(data) From b6adfab9b252b53187e6477b233f98e9ecd7208e Mon Sep 17 00:00:00 2001 From: Kostya Esmukov Date: Sun, 7 Feb 2016 19:26:37 +0300 Subject: [PATCH 113/131] Added test case for #3908 --- tests/test_exceptions.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 tests/test_exceptions.py diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py new file mode 100644 index 00000000000..cec050eb874 --- /dev/null +++ b/tests/test_exceptions.py @@ -0,0 +1,21 @@ +from __future__ import unicode_literals + +from django.test import TestCase +from django.utils.translation import ugettext_lazy as _ + +from rest_framework.exceptions import _force_text_recursive + + +class ExceptionTestCase(TestCase): + + def test_force_text_recursive(self): + + s = "sfdsfggiuytraetfdlklj" + self.assertEqual(_force_text_recursive(_(s)), s) + self.assertEqual(type(_force_text_recursive(_(s))), type(s)) + + self.assertEqual(_force_text_recursive({'a': _(s)})['a'], s) + self.assertEqual(type(_force_text_recursive({'a': _(s)})['a']), type(s)) + + self.assertEqual(_force_text_recursive([[_(s)]])[0][0], s) + self.assertEqual(type(_force_text_recursive([[_(s)]])[0][0]), type(s)) From 59ab3a291c4ae3bbd0fdc4253ad71536155bbdf4 Mon Sep 17 00:00:00 2001 From: Mikalai Radchuk Date: Mon, 8 Feb 2016 17:07:16 +0300 Subject: [PATCH 114/131] Fixes vertical html layout for BooleanField `HTMLFormRenderer` renders `BooleanField` field as not checked if vertical layout are used. --- rest_framework/templates/rest_framework/vertical/checkbox.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/templates/rest_framework/vertical/checkbox.html b/rest_framework/templates/rest_framework/vertical/checkbox.html index 69f19dfb34e..fe78d6efc1b 100644 --- a/rest_framework/templates/rest_framework/vertical/checkbox.html +++ b/rest_framework/templates/rest_framework/vertical/checkbox.html @@ -1,7 +1,7 @@

From d2ca8872c008c6908be7a8e8016d07d2116f8e87 Mon Sep 17 00:00:00 2001 From: blag Date: Mon, 8 Feb 2016 22:36:39 -0700 Subject: [PATCH 115/131] Remove version string from base template --- rest_framework/templates/rest_framework/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/templates/rest_framework/base.html b/rest_framework/templates/rest_framework/base.html index 5eb2c972972..eccadc3cc2b 100644 --- a/rest_framework/templates/rest_framework/base.html +++ b/rest_framework/templates/rest_framework/base.html @@ -37,7 +37,7 @@ {% block branding %}
- Django REST framework {{ version }} + Django REST framework {% endblock %} From 89d575a52a77cbc8faede8d91db807248f24fd37 Mon Sep 17 00:00:00 2001 From: blag Date: Tue, 9 Feb 2016 05:56:47 -0700 Subject: [PATCH 116/131] Remove version string from admin template --- rest_framework/templates/rest_framework/admin.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/templates/rest_framework/admin.html b/rest_framework/templates/rest_framework/admin.html index f8f1724e6c0..a86adbc60da 100644 --- a/rest_framework/templates/rest_framework/admin.html +++ b/rest_framework/templates/rest_framework/admin.html @@ -36,7 +36,7 @@ {% block branding %} - Django REST framework {{ version }} + Django REST framework {% endblock %} From 03b5438d072843dd5c5cba56535263df0bbafa82 Mon Sep 17 00:00:00 2001 From: Federico Bond Date: Thu, 11 Feb 2016 15:09:21 -0300 Subject: [PATCH 117/131] Add missing space in serializer error message --- rest_framework/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index f7b1e1b5518..b95bb7fa687 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -715,7 +715,7 @@ def raise_errors_on_nested_writes(method_name, serializer, validated_data): isinstance(validated_data[key], (list, dict)) for key, field in serializer.fields.items() ), ( - 'The `.{method_name}()` method does not support writable nested' + 'The `.{method_name}()` method does not support writable nested ' 'fields by default.\nWrite an explicit `.{method_name}()` method for ' 'serializer `{module}.{class_name}`, or set `read_only=True` on ' 'nested serializer fields.'.format( From 296c56764574b178be2d0ac96b38d7879e0b3947 Mon Sep 17 00:00:00 2001 From: Carlton Gibson Date: Mon, 15 Feb 2016 15:22:23 +0100 Subject: [PATCH 118/131] Drop EOL Django 1.7 --- .travis.yml | 4 ---- docs/topics/release-notes.md | 6 ++++++ tox.ini | 3 +-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9aca4f3d448..cf3cddfec9f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,10 +15,6 @@ env: - TOX_ENV=py33-django18 - TOX_ENV=py32-django18 - TOX_ENV=py27-django18 - - TOX_ENV=py34-django17 - - TOX_ENV=py33-django17 - - TOX_ENV=py32-django17 - - TOX_ENV=py27-django17 matrix: fast_finish: true diff --git a/docs/topics/release-notes.md b/docs/topics/release-notes.md index d21f8e51b54..b6794a8176c 100644 --- a/docs/topics/release-notes.md +++ b/docs/topics/release-notes.md @@ -40,6 +40,12 @@ You can determine your currently installed version using `pip freeze`: ## 3.3.x series +### 3.4 + +**Unreleased** + +* Dropped support for EOL Django 1.7 ([#3933][gh3933]) + ### 3.3.2 **Date**: [14th December 2015][3.3.2-milestone]. diff --git a/tox.ini b/tox.ini index 64b60327efd..fe8ad4ce04f 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,7 @@ addopts=--tb=short [tox] envlist = py27-{lint,docs}, - {py27,py32,py33,py34}-django{17,18}, + {py27,py32,py33,py34}-django18, {py27,py34,py35}-django{19} [testenv] @@ -13,7 +13,6 @@ setenv = PYTHONDONTWRITEBYTECODE=1 PYTHONWARNINGS=once deps = - django17: Django==1.7.11 django18: Django==1.8.9 django19: Django==1.9.2 -rrequirements/requirements-testing.txt From 96644bd6c16f98a5e367d22fba8f147de1bd7f93 Mon Sep 17 00:00:00 2001 From: Kin Date: Tue, 16 Feb 2016 23:08:45 -0800 Subject: [PATCH 119/131] fix typo --- docs/tutorial/quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/quickstart.md b/docs/tutorial/quickstart.md index 910eb4cffaa..5e3b522ccaa 100644 --- a/docs/tutorial/quickstart.md +++ b/docs/tutorial/quickstart.md @@ -157,7 +157,7 @@ We can now access our API, both from the command-line, using tools like `curl`.. Or using the [httpie][httpie], command line tool... - bash: http -a username:password123 http://127.0.0.1:8000/users/ + bash: http -a admin:password123 http://127.0.0.1:8000/users/ HTTP/1.1 200 OK ... From b773f03bd05d50623427bb97900b910f90bd1f34 Mon Sep 17 00:00:00 2001 From: Wes Date: Wed, 17 Feb 2016 16:35:53 +0800 Subject: [PATCH 120/131] fix typo --- docs/api-guide/serializers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api-guide/serializers.md b/docs/api-guide/serializers.md index 6aa34da3d8c..2e620780585 100644 --- a/docs/api-guide/serializers.md +++ b/docs/api-guide/serializers.md @@ -788,7 +788,7 @@ Here's an example of how you might choose to implement multiple updates: # Perform creations and updates. ret = [] for book_id, data in data_mapping.items(): - book = book_mapping.get(book_id, None): + book = book_mapping.get(book_id, None) if book is None: ret.append(self.child.create(data)) else: From 81097520619aef6cd001f85d8bd5ec133a9e20df Mon Sep 17 00:00:00 2001 From: Erick Wilder Date: Wed, 17 Feb 2016 10:52:21 +0100 Subject: [PATCH 121/131] Closes #3937. Support callable as the value of `initial` for any `serializer.Field` --- rest_framework/fields.py | 2 ++ tests/test_fields.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 6d5962c8ec7..917e412cc44 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -370,6 +370,8 @@ def get_initial(self): Return a value to use when the field is being returned as a primitive value, without any object instance. """ + if callable(self.initial): + return self.initial() return self.initial def get_value(self, dictionary): diff --git a/tests/test_fields.py b/tests/test_fields.py index 43441c2e7c3..0a878ca790a 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -191,6 +191,24 @@ def test_initial(self): } +class TestInitialWithCallable: + def setup(self): + def initial_value(): + return 123 + + class TestSerializer(serializers.Serializer): + initial_field = serializers.IntegerField(initial=initial_value) + self.serializer = TestSerializer() + + def test_initial_should_accept_callable(self): + """ + Follows the default ``Field.initial`` behaviour where they accept a + callable to produce the initial value""" + assert self.serializer.data == { + 'initial_field': 123, + } + + class TestLabel: def setup(self): class TestSerializer(serializers.Serializer): From 908efd665699aedd11878fecaa094c263cf9f457 Mon Sep 17 00:00:00 2001 From: Erick Wilder Date: Wed, 17 Feb 2016 11:01:09 +0100 Subject: [PATCH 122/131] #3937 Update docs for the Field.initial attribute. Add an usage example on how to pass a callable to the `Field.initial` in the docs. --- docs/api-guide/fields.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/api-guide/fields.md b/docs/api-guide/fields.md index 5acaf123ec0..a9bbabc89f8 100644 --- a/docs/api-guide/fields.md +++ b/docs/api-guide/fields.md @@ -81,7 +81,13 @@ A text string that may be used as a description of the field in HTML form fields ### `initial` -A value that should be used for pre-populating the value of HTML form fields. +A value that should be used for pre-populating the value of HTML form fields. You may pass a callable to it, just as +you may do with any regular Django `Field`: + + def user_default_color(): + return 'blue' + + color = serializers.CharField(initial=user_default_color) ### `style` From 5cda3a04dd5f05617c9f8217de992f98797d2c2d Mon Sep 17 00:00:00 2001 From: meoooh Date: Thu, 18 Feb 2016 14:43:41 +0900 Subject: [PATCH 123/131] fix typo fix typo --- docs/api-guide/pagination.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api-guide/pagination.md b/docs/api-guide/pagination.md index d6c80d93a27..f704a3247e9 100644 --- a/docs/api-guide/pagination.md +++ b/docs/api-guide/pagination.md @@ -317,4 +317,4 @@ The [`DRF-extensions` package][drf-extensions] includes a [`PaginateByMaxMixin` [link-header]: ../img/link-header-pagination.png [drf-extensions]: http://chibisov.github.io/drf-extensions/docs/ [paginate-by-max-mixin]: http://chibisov.github.io/drf-extensions/docs/#paginatebymaxmixin -[disqus-cursor-api]: http://cramer.io/2011/03/08/building-cursors-for-the-disqus-api/ +[disqus-cursor-api]: http://cramer.io/2011/03/08/building-cursors-for-the-disqus-api From 69f1e3a9fd723c111c267f0944217b45f0e7a189 Mon Sep 17 00:00:00 2001 From: Karambir Singh Nain Date: Fri, 19 Feb 2016 01:05:45 +0530 Subject: [PATCH 124/131] Remove old django checks from tests and compat Remove skipping of tests for Django<1.8. Remove several functions from compat.py not needed for Django>=1.8 --- rest_framework/compat.py | 87 +----------------------------- rest_framework/fields.py | 20 +++---- rest_framework/renderers.py | 3 +- rest_framework/serializers.py | 2 +- rest_framework/test.py | 11 ++-- rest_framework/utils/model_meta.py | 10 ++-- tests/test_fields.py | 8 +-- tests/test_generics.py | 3 +- tests/test_model_serializer.py | 6 +-- tests/test_request.py | 4 -- 10 files changed, 24 insertions(+), 130 deletions(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index adce32be814..e435618a2f7 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -86,18 +86,6 @@ def distinct(queryset, base): crispy_forms = None -if django.VERSION >= (1, 6): - def clean_manytomany_helptext(text): - return text -else: - # Up to version 1.5 many to many fields automatically suffix - # the `help_text` attribute with hardcoded text. - def clean_manytomany_helptext(text): - if text.endswith(' Hold down "Control", or "Command" on a Mac, to select more than one.'): - text = text[:-69] - return text - - # Django-guardian is optional. Import only if guardian is in INSTALLED_APPS # Fixes (#1712). We keep the try/except for the test suite. guardian = None @@ -109,41 +97,6 @@ def clean_manytomany_helptext(text): pass -# MinValueValidator, MaxValueValidator et al. only accept `message` in 1.8+ -if django.VERSION >= (1, 8): - from django.core.validators import MinValueValidator, MaxValueValidator - from django.core.validators import MinLengthValidator, MaxLengthValidator -else: - from django.core.validators import MinValueValidator as DjangoMinValueValidator - from django.core.validators import MaxValueValidator as DjangoMaxValueValidator - from django.core.validators import MinLengthValidator as DjangoMinLengthValidator - from django.core.validators import MaxLengthValidator as DjangoMaxLengthValidator - - - class MinValueValidator(DjangoMinValueValidator): - def __init__(self, *args, **kwargs): - self.message = kwargs.pop('message', self.message) - super(MinValueValidator, self).__init__(*args, **kwargs) - - - class MaxValueValidator(DjangoMaxValueValidator): - def __init__(self, *args, **kwargs): - self.message = kwargs.pop('message', self.message) - super(MaxValueValidator, self).__init__(*args, **kwargs) - - - class MinLengthValidator(DjangoMinLengthValidator): - def __init__(self, *args, **kwargs): - self.message = kwargs.pop('message', self.message) - super(MinLengthValidator, self).__init__(*args, **kwargs) - - - class MaxLengthValidator(DjangoMaxLengthValidator): - def __init__(self, *args, **kwargs): - self.message = kwargs.pop('message', self.message) - super(MaxLengthValidator, self).__init__(*args, **kwargs) - - # PATCH method is not implemented by Django if 'patch' not in View.http_method_names: View.http_method_names = View.http_method_names + ['patch'] @@ -188,13 +141,6 @@ def apply_markdown(text): LONG_SEPARATORS = (b', ', b': ') INDENT_SEPARATORS = (b',', b': ') -if django.VERSION >= (1, 8): - from django.db.models import DurationField - from django.utils.dateparse import parse_duration - from django.utils.duration import duration_string -else: - DurationField = duration_string = parse_duration = None - try: # DecimalValidator is unavailable in Django < 1.9 from django.core.validators import DecimalValidator @@ -223,14 +169,14 @@ def template_render(template, context=None, request=None): """ Passing Context or RequestContext to Template.render is deprecated in 1.9+, see https://github.com/django/django/pull/3883 and - https://github.com/django/django/blob/1.9rc1/django/template/backends/django.py#L82-L84 + https://github.com/django/django/blob/1.9/django/template/backends/django.py#L82-L84 :param template: Template instance :param context: dict :param request: Request instance :return: rendered template as SafeText instance """ - if django.VERSION < (1, 8) or isinstance(template, Template): + if isinstance(template, Template): if request: context = RequestContext(request, context) else: @@ -239,32 +185,3 @@ def template_render(template, context=None, request=None): # backends template, e.g. django.template.backends.django.Template else: return template.render(context, request=request) - - -def get_all_related_objects(opts): - """ - Django 1.8 changed meta api, see - https://docs.djangoproject.com/en/1.8/ref/models/meta/#migrating-old-meta-api - https://code.djangoproject.com/ticket/12663 - https://github.com/django/django/pull/3848 - - :param opts: Options instance - :return: list of relations except many-to-many ones - """ - if django.VERSION < (1, 8): - return opts.get_all_related_objects() - else: - return [r for r in opts.related_objects if not r.field.many_to_many] - - -def get_all_related_many_to_many_objects(opts): - """ - Django 1.8 changed meta api, see docstr in compat.get_all_related_objects() - - :param opts: Options instance - :return: list of many-to-many relations - """ - if django.VERSION < (1, 8): - return opts.get_all_related_many_to_many_objects() - else: - return [r for r in opts.related_objects if r.field.many_to_many] diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 6d5962c8ec7..fc11cbba676 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -14,23 +14,23 @@ from django.core.exceptions import ValidationError as DjangoValidationError from django.core.exceptions import ObjectDoesNotExist from django.core.validators import ( - EmailValidator, RegexValidator, URLValidator, ip_address_validators + EmailValidator, MaxLengthValidator, MaxValueValidator, MinLengthValidator, + MinValueValidator, RegexValidator, URLValidator, ip_address_validators ) from django.forms import FilePathField as DjangoFilePathField from django.forms import ImageField as DjangoImageField from django.utils import six, timezone -from django.utils.dateparse import parse_date, parse_datetime, parse_time +from django.utils.dateparse import ( + parse_date, parse_datetime, parse_duration, parse_time +) +from django.utils.duration import duration_string from django.utils.encoding import is_protected_type, smart_text from django.utils.functional import cached_property from django.utils.ipv6 import clean_ipv6_address from django.utils.translation import ugettext_lazy as _ from rest_framework import ISO_8601 -from rest_framework.compat import ( - MaxLengthValidator, MaxValueValidator, MinLengthValidator, - MinValueValidator, duration_string, parse_duration, unicode_repr, - unicode_to_repr -) +from rest_framework.compat import unicode_repr, unicode_to_repr from rest_framework.exceptions import ValidationError from rest_framework.settings import api_settings from rest_framework.utils import html, humanize_datetime, representation @@ -1215,12 +1215,6 @@ class DurationField(Field): 'invalid': _('Duration has wrong format. Use one of these formats instead: {format}.'), } - def __init__(self, *args, **kwargs): - if parse_duration is None: - raise NotImplementedError( - 'DurationField not supported for django versions prior to 1.8') - return super(DurationField, self).__init__(*args, **kwargs) - def to_internal_value(self, value): if isinstance(value, datetime.timedelta): return value diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 06bc3086f4a..024f0eb8ba1 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -11,7 +11,6 @@ import json from collections import OrderedDict -import django from django import forms from django.core.exceptions import ImproperlyConfigured from django.core.paginator import Page @@ -773,7 +772,7 @@ class MultiPartRenderer(BaseRenderer): media_type = 'multipart/form-data; boundary=BoUnDaRyStRiNg' format = 'multipart' charset = 'utf-8' - BOUNDARY = 'BoUnDaRyStRiNg' if django.VERSION >= (1, 5) else b'BoUnDaRyStRiNg' + BOUNDARY = 'BoUnDaRyStRiNg' def render(self, data, accepted_media_type=None, renderer_context=None): if hasattr(data, 'items'): diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index b95bb7fa687..bc09df238f2 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -15,12 +15,12 @@ import warnings from django.db import models +from django.db.models import DurationField as ModelDurationField from django.db.models.fields import Field as DjangoModelField from django.db.models.fields import FieldDoesNotExist from django.utils.functional import cached_property from django.utils.translation import ugettext_lazy as _ -from rest_framework.compat import DurationField as ModelDurationField from rest_framework.compat import JSONField as ModelJSONField from rest_framework.compat import postgres_fields, unicode_to_repr from rest_framework.utils import model_meta diff --git a/rest_framework/test.py b/rest_framework/test.py index e0670365bfd..3ba4059a9f3 100644 --- a/rest_framework/test.py +++ b/rest_framework/test.py @@ -4,7 +4,6 @@ # to make it harder for the user to import the wrong thing without realizing. from __future__ import unicode_literals -import django from django.conf import settings from django.test import testcases from django.test.client import Client as DjangoClient @@ -223,9 +222,9 @@ class APITestCase(testcases.TestCase): client_class = APIClient -if django.VERSION >= (1, 4): - class APISimpleTestCase(testcases.SimpleTestCase): - client_class = APIClient +class APISimpleTestCase(testcases.SimpleTestCase): + client_class = APIClient + - class APILiveServerTestCase(testcases.LiveServerTestCase): - client_class = APIClient +class APILiveServerTestCase(testcases.LiveServerTestCase): + client_class = APIClient diff --git a/rest_framework/utils/model_meta.py b/rest_framework/utils/model_meta.py index f151c6f36e5..c3424a679b3 100644 --- a/rest_framework/utils/model_meta.py +++ b/rest_framework/utils/model_meta.py @@ -13,10 +13,6 @@ from django.db import models from django.utils import six -from rest_framework.compat import ( - get_all_related_many_to_many_objects, get_all_related_objects -) - FieldInfo = namedtuple('FieldResult', [ 'pk', # Model field instance 'fields', # Dict of field name -> model field instance @@ -138,7 +134,8 @@ def _get_reverse_relationships(opts): # See: https://code.djangoproject.com/ticket/24208 reverse_relations = OrderedDict() - for relation in get_all_related_objects(opts): + all_related_objects = [r for r in opts.related_objects if not r.field.many_to_many] + for relation in all_related_objects: accessor_name = relation.get_accessor_name() related = getattr(relation, 'related_model', relation.model) reverse_relations[accessor_name] = RelationInfo( @@ -150,7 +147,8 @@ def _get_reverse_relationships(opts): ) # Deal with reverse many-to-many relationships. - for relation in get_all_related_many_to_many_objects(opts): + all_related_many_to_many_objects = [r for r in opts.related_objects if r.field.many_to_many] + for relation in all_related_many_to_many_objects: accessor_name = relation.get_accessor_name() related = getattr(relation, 'related_model', relation.model) reverse_relations[accessor_name] = RelationInfo( diff --git a/tests/test_fields.py b/tests/test_fields.py index 43441c2e7c3..8dea52c013a 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -3,7 +3,6 @@ import uuid from decimal import Decimal -import django import pytest from django.http import QueryDict from django.utils import six, timezone @@ -951,7 +950,7 @@ class TestDateTimeField(FieldValues): datetime.datetime(2001, 1, 1, 13, 00): datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()), datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()): datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()), # Django 1.4 does not support timezone string parsing. - '2001-01-01T14:00+01:00' if (django.VERSION > (1, 4)) else '2001-01-01T13:00Z': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()) + '2001-01-01T13:00Z': datetime.datetime(2001, 1, 1, 13, 00, tzinfo=timezone.UTC()) } invalid_inputs = { 'abc': ['Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z].'], @@ -1077,8 +1076,6 @@ class TestNoOutputFormatTimeField(FieldValues): field = serializers.TimeField(format=None) -@pytest.mark.skipif(django.VERSION < (1, 8), - reason='DurationField is only available for django1.8+') class TestDurationField(FieldValues): """ Valid and invalid values for `DurationField`. @@ -1097,8 +1094,7 @@ class TestDurationField(FieldValues): outputs = { datetime.timedelta(days=3, hours=8, minutes=32, seconds=1, microseconds=123): '3 08:32:01.000123', } - if django.VERSION >= (1, 8): - field = serializers.DurationField() + field = serializers.DurationField() # Choice types... diff --git a/tests/test_generics.py b/tests/test_generics.py index 000adffa744..2e47df50fbf 100644 --- a/tests/test_generics.py +++ b/tests/test_generics.py @@ -1,6 +1,5 @@ from __future__ import unicode_literals -import django import pytest from django.db import models from django.shortcuts import get_object_or_404 @@ -158,7 +157,7 @@ def test_post_error_root_view(self): self.assertIn(expected_error, response.rendered_content.decode('utf-8')) -EXPECTED_QUERIES_FOR_PUT = 3 if django.VERSION < (1, 6) else 2 +EXPECTED_QUERIES_FOR_PUT = 2 class TestInstanceView(TestCase): diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index f3243e33a32..0179abc4444 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -10,18 +10,16 @@ import decimal from collections import OrderedDict -import django -import pytest from django.core.exceptions import ImproperlyConfigured from django.core.validators import ( MaxValueValidator, MinLengthValidator, MinValueValidator ) from django.db import models +from django.db.models import DurationField as ModelDurationField from django.test import TestCase from django.utils import six from rest_framework import serializers -from rest_framework.compat import DurationField as ModelDurationField from rest_framework.compat import unicode_repr @@ -341,8 +339,6 @@ class Meta: assert implicit.data == explicit.data -@pytest.mark.skipif(django.VERSION < (1, 8), - reason='DurationField is only available for django1.8+') class TestDurationFieldMapping(TestCase): def test_duration_field(self): class DurationFieldModel(models.Model): diff --git a/tests/test_request.py b/tests/test_request.py index 24be368b346..7a0575789a7 100644 --- a/tests/test_request.py +++ b/tests/test_request.py @@ -3,8 +3,6 @@ """ from __future__ import unicode_literals -import django -import pytest from django.conf.urls import url from django.contrib.auth import authenticate, login, logout from django.contrib.auth.models import User @@ -201,8 +199,6 @@ def test_auth_can_be_set(self): self.assertEqual(request.auth, 'DUMMY') -@pytest.mark.skipif(django.VERSION < (1, 7), - reason='secure argument is only available for django1.7+') class TestSecure(TestCase): def test_default_secure_false(self): From a32baeab0c4324989f0d7f17b934a671f2537105 Mon Sep 17 00:00:00 2001 From: Erick Wilder Date: Fri, 19 Feb 2016 09:53:40 +0100 Subject: [PATCH 125/131] Use datetime example for the `Field.initial` attribute Just like regular Django fields, the example adopted uses a `datetiume.date.today` to illustrate the functionality. --- docs/api-guide/fields.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/api-guide/fields.md b/docs/api-guide/fields.md index a9bbabc89f8..0409f9a6c68 100644 --- a/docs/api-guide/fields.md +++ b/docs/api-guide/fields.md @@ -84,10 +84,10 @@ A text string that may be used as a description of the field in HTML form fields A value that should be used for pre-populating the value of HTML form fields. You may pass a callable to it, just as you may do with any regular Django `Field`: - def user_default_color(): - return 'blue' - - color = serializers.CharField(initial=user_default_color) + import datetime + from rest_framework import serializers + class ExampleSerializer(serializers.Serializer): + day = serializers.DateField(initial=datetime.date.today) ### `style` From 9c2899f6c82d2a3415f240f70c77d4bd4d2e8377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=CC=81=20Padilla?= Date: Thu, 18 Feb 2016 09:23:31 -0400 Subject: [PATCH 126/131] Create issue and pull request templates --- CONTRIBUTING.md | 7 +------ ISSUE_TEMPLATE.md | 14 ++++++++++++++ PULL_REQUEST_TEMPLATE.md | 5 +++++ 3 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 ISSUE_TEMPLATE.md create mode 100644 PULL_REQUEST_TEMPLATE.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a383660edb6..99479acdf89 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,7 +33,7 @@ Some tips on good issue reporting: * When describing issues try to phrase your ticket in terms of the *behavior* you think needs changing rather than the *code* you think need changing. * Search the issue list first for related items, and make sure you're running the latest version of REST framework before reporting an issue. * If reporting a bug, then try to include a pull request with a failing test case. This will help us quickly identify if there is a valid issue, and make sure that it gets fixed more quickly if there is one. -* Feature requests will often be closed with a recommendation that they be implemented outside of the core REST framework library. Keeping new feature requests implemented as third party libraries allows us to keep down the maintenance overhead of REST framework, so that the focus can be on continued stability, bugfixes, and great documentation. +* Feature requests will often be closed with a recommendation that they be implemented outside of the core REST framework library. Keeping new feature requests implemented as third party libraries allows us to keep down the maintenance overhead of REST framework, so that the focus can be on continued stability, bug fixes, and great documentation. * Closing an issue doesn't necessarily mean the end of a discussion. If you believe your issue has been closed incorrectly, explain why and we'll consider if it needs to be reopened. ## Triaging issues @@ -118,10 +118,6 @@ Always run the tests before submitting pull requests, and ideally run `tox` in o Once you've made a pull request take a look at the Travis build status in the GitHub interface and make sure the tests are running as you'd expect. -![Travis status][travis-status] - -*Above: Travis build notifications* - ## Managing compatibility issues Sometimes, in order to ensure your code works on various different versions of Django, Python or third party libraries, you'll need to run slightly different code depending on the environment. Any code that branches in this way should be isolated into the `compat.py` module, and should provide a single common interface that the rest of the codebase can use. @@ -203,7 +199,6 @@ If you want to draw attention to a note or warning, use a pair of enclosing line [so-filter]: http://stackexchange.com/filters/66475/rest-framework [issues]: https://github.com/tomchristie/django-rest-framework/issues?state=open [pep-8]: http://www.python.org/dev/peps/pep-0008/ -[travis-status]: ../img/travis-status.png [pull-requests]: https://help.github.com/articles/using-pull-requests [tox]: http://tox.readthedocs.org/en/latest/ [markdown]: http://daringfireball.net/projects/markdown/basics diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 00000000000..55b3e531b08 --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,14 @@ +## Checklist + +- [ ] I have verified that that issue exists against the `master` branch of Django REST framework. +- [ ] I have searched for similar issues in both open and closed tickets and cannot find a duplicate. +- [ ] This is not a usage question. (Those should be directed to the [discussion group](https://groups.google.com/forum/#!forum/django-rest-framework) instead.) +- [ ] This cannot be dealt with as a third party library. (We prefer new functionality to be [in the form of third party libraries](http://www.django-rest-framework.org/topics/third-party-resources/#about-third-party-packages) where possible.) +- [ ] I have reduced the issue to the simplest possible case. +- [ ] I have included a failing test as a pull request. (If you are unable to do so we can still accept the issue.) + +## Steps to reproduce + +## Expected behavior + +## Actual behavior diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000000..49f980c932e --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,5 @@ +*Note*: Before submitting this pull request, please review our [contributing guidelines](https://github.com/tomchristie/django-rest-framework/blob/master/CONTRIBUTING.md#pull-requests). + +## Description + +Please describe your pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue. When linking to an issue, please use `refs #...` in the description of the pull request. From f1ae68e79ba9dc97d4541d4b68880758a7bb8eca Mon Sep 17 00:00:00 2001 From: Jonathan Liuti Date: Mon, 7 Dec 2015 10:48:53 +0100 Subject: [PATCH 127/131] Introduce error code for validation errors. This patch is meant to fix #3111, regarding comments made to #3137 and #3169. The `ValidationError` will now contain a `code` attribute. Before this patch, `ValidationError.detail` only contained a `dict` with values equal to a `list` of string error messages or directly a `list` containing string error messages. Now, the string error messages are replaced with `ValidationError`. This means that, depending on the case, you will not only get a string back but a all object containing both the error message and the error code, respectively `ValidationError.detail` and `ValidationError.code`. It is important to note that the `code` attribute is not relevant when the `ValidationError` represents a combination of errors and hence is `None` in such cases. The main benefit of this change is that the error message and error code are now accessible the custom exception handler and can be used to format the error response. An custom exception handler example is available in the `TestValidationErrorWithCode` test. --- rest_framework/authtoken/serializers.py | 15 +++- rest_framework/exceptions.py | 17 ++++- rest_framework/fields.py | 12 ++-- rest_framework/renderers.py | 15 ++++ rest_framework/response.py | 1 - rest_framework/serializers.py | 21 ++++-- rest_framework/validators.py | 16 +++-- rest_framework/views.py | 13 +++- tests/test_bound_fields.py | 3 +- tests/test_fields.py | 14 +++- tests/test_model_serializer.py | 2 +- tests/test_relations_hyperlink.py | 6 +- tests/test_relations_pk.py | 7 +- tests/test_relations_slug.py | 6 +- tests/test_serializer.py | 33 ++++++++- tests/test_serializer_bulk_update.py | 33 +++++---- tests/test_serializer_lists.py | 5 +- tests/test_serializer_nested.py | 10 +-- tests/test_validation.py | 15 ++-- tests/test_validation_error.py | 95 +++++++++++++++++++++++++ tests/test_validators.py | 23 +++--- 21 files changed, 287 insertions(+), 75 deletions(-) create mode 100644 tests/test_validation_error.py diff --git a/rest_framework/authtoken/serializers.py b/rest_framework/authtoken/serializers.py index df0c48b86a5..ce6bb9c79aa 100644 --- a/rest_framework/authtoken/serializers.py +++ b/rest_framework/authtoken/serializers.py @@ -18,13 +18,22 @@ def validate(self, attrs): if user: if not user.is_active: msg = _('User account is disabled.') - raise serializers.ValidationError(msg) + raise serializers.ValidationError( + msg, + code='authorization' + ) else: msg = _('Unable to log in with provided credentials.') - raise serializers.ValidationError(msg) + raise serializers.ValidationError( + msg, + code='authorization' + ) else: msg = _('Must include "username" and "password".') - raise serializers.ValidationError(msg) + raise serializers.ValidationError( + msg, + code='authorization' + ) attrs['user'] = user return attrs diff --git a/rest_framework/exceptions.py b/rest_framework/exceptions.py index 29afaffe00c..e23b7cd3159 100644 --- a/rest_framework/exceptions.py +++ b/rest_framework/exceptions.py @@ -58,6 +58,14 @@ def __str__(self): return self.detail +def build_error_from_django_validation_error(exc_info): + code = getattr(exc_info, 'code', None) or 'invalid' + return [ + ValidationError(msg, code=code) + for msg in exc_info.messages + ] + + # The recommended style for using `ValidationError` is to keep it namespaced # under `serializers`, in order to minimize potential confusion with Django's # built in `ValidationError`. For example: @@ -68,12 +76,17 @@ def __str__(self): class ValidationError(APIException): status_code = status.HTTP_400_BAD_REQUEST - def __init__(self, detail): + def __init__(self, detail, code=None): # For validation errors the 'detail' key is always required. # The details should always be coerced to a list if not already. if not isinstance(detail, dict) and not isinstance(detail, list): detail = [detail] - self.detail = _force_text_recursive(detail) + elif isinstance(detail, dict) or (detail and isinstance(detail[0], ValidationError)): + assert code is None, ( + 'The `code` argument must not be set for compound errors.') + + self.detail = detail + self.code = code def __str__(self): return six.text_type(self.detail) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 2a08e09ffe0..ea5a4893f90 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -31,7 +31,9 @@ from rest_framework import ISO_8601 from rest_framework.compat import unicode_repr, unicode_to_repr -from rest_framework.exceptions import ValidationError +from rest_framework.exceptions import ( + ValidationError, build_error_from_django_validation_error +) from rest_framework.settings import api_settings from rest_framework.utils import html, humanize_datetime, representation @@ -503,9 +505,11 @@ def run_validators(self, value): # attempting to accumulate a list of errors. if isinstance(exc.detail, dict): raise - errors.extend(exc.detail) + errors.append(ValidationError(exc.detail, code=exc.code)) except DjangoValidationError as exc: - errors.extend(exc.messages) + errors.extend( + build_error_from_django_validation_error(exc) + ) if errors: raise ValidationError(errors) @@ -543,7 +547,7 @@ def fail(self, key, **kwargs): msg = MISSING_ERROR_MESSAGE.format(class_name=class_name, key=key) raise AssertionError(msg) message_string = msg.format(**kwargs) - raise ValidationError(message_string) + raise ValidationError(message_string, code=key) @cached_property def root(self): diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 024f0eb8ba1..1f0a57ef99e 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -493,6 +493,21 @@ def get_rendered_html_form(self, data, view, method, request): if hasattr(serializer, 'initial_data'): serializer.is_valid() + # Convert ValidationError to unicode string + # This is mainly a hack to monkey patch the errors and make the form renderer happy... + errors = OrderedDict() + for field_name, values in serializer.errors.items(): + if isinstance(values, list): + errors[field_name] = values + continue + + errors[field_name] = [] + for value in values.detail: + for message in value.detail: + errors[field_name].append(message) + + serializer._errors = errors + form_renderer = self.form_renderer_class() return form_renderer.render( serializer.data, diff --git a/rest_framework/response.py b/rest_framework/response.py index 0e97668eb4e..9942dd576c1 100644 --- a/rest_framework/response.py +++ b/rest_framework/response.py @@ -38,7 +38,6 @@ def __init__(self, data=None, status=None, '`.error`. representation.' ) raise AssertionError(msg) - self.data = data self.template_name = template_name self.exception = exception diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index bc09df238f2..78f8a4ed076 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -21,6 +21,7 @@ from django.utils.functional import cached_property from django.utils.translation import ugettext_lazy as _ +from rest_framework import exceptions from rest_framework.compat import JSONField as ModelJSONField from rest_framework.compat import postgres_fields, unicode_to_repr from rest_framework.utils import model_meta @@ -300,7 +301,8 @@ def get_validation_error_detail(exc): # exception class as well for simpler compat. # Eg. Calling Model.clean() explicitly inside Serializer.validate() return { - api_settings.NON_FIELD_ERRORS_KEY: list(exc.messages) + api_settings.NON_FIELD_ERRORS_KEY: + exceptions.build_error_from_django_validation_error(exc) } elif isinstance(exc.detail, dict): # If errors may be a dict we use the standard {key: list of values}. @@ -422,8 +424,9 @@ def to_internal_value(self, data): message = self.error_messages['invalid'].format( datatype=type(data).__name__ ) + error = ValidationError(message, code='invalid') raise ValidationError({ - api_settings.NON_FIELD_ERRORS_KEY: [message] + api_settings.NON_FIELD_ERRORS_KEY: [error] }) ret = OrderedDict() @@ -438,9 +441,11 @@ def to_internal_value(self, data): if validate_method is not None: validated_value = validate_method(validated_value) except ValidationError as exc: - errors[field.field_name] = exc.detail + errors[field.field_name] = exc except DjangoValidationError as exc: - errors[field.field_name] = list(exc.messages) + errors[field.field_name] = ( + exceptions.build_error_from_django_validation_error(exc) + ) except SkipField: pass else: @@ -575,14 +580,18 @@ def to_internal_value(self, data): message = self.error_messages['not_a_list'].format( input_type=type(data).__name__ ) + error = ValidationError( + message, + code='not_a_list' + ) raise ValidationError({ - api_settings.NON_FIELD_ERRORS_KEY: [message] + api_settings.NON_FIELD_ERRORS_KEY: [error] }) if not self.allow_empty and len(data) == 0: message = self.error_messages['empty'] raise ValidationError({ - api_settings.NON_FIELD_ERRORS_KEY: [message] + api_settings.NON_FIELD_ERRORS_KEY: [ValidationError(message, code='empty_not_allowed')] }) ret = [] diff --git a/rest_framework/validators.py b/rest_framework/validators.py index a21f67e60e0..27148cedc9b 100644 --- a/rest_framework/validators.py +++ b/rest_framework/validators.py @@ -60,7 +60,7 @@ def __call__(self, value): queryset = self.filter_queryset(value, queryset) queryset = self.exclude_current_instance(queryset) if queryset.exists(): - raise ValidationError(self.message) + raise ValidationError(self.message, code='unique') def __repr__(self): return unicode_to_repr('<%s(queryset=%s)>' % ( @@ -101,7 +101,9 @@ def enforce_required_fields(self, attrs): return missing = { - field_name: self.missing_message + field_name: ValidationError( + self.missing_message, + code='required') for field_name in self.fields if field_name not in attrs } @@ -147,7 +149,8 @@ def __call__(self, attrs): ] if None not in checked_values and queryset.exists(): field_names = ', '.join(self.fields) - raise ValidationError(self.message.format(field_names=field_names)) + raise ValidationError(self.message.format(field_names=field_names), + code='unique') def __repr__(self): return unicode_to_repr('<%s(queryset=%s, fields=%s)>' % ( @@ -185,7 +188,9 @@ def enforce_required_fields(self, attrs): 'required' state on the fields they are applied to. """ missing = { - field_name: self.missing_message + field_name: ValidationError( + self.missing_message, + code='required') for field_name in [self.field, self.date_field] if field_name not in attrs } @@ -211,7 +216,8 @@ def __call__(self, attrs): queryset = self.exclude_current_instance(attrs, queryset) if queryset.exists(): message = self.message.format(date_field=self.date_field) - raise ValidationError({self.field: message}) + error = ValidationError(message, code='unique') + raise ValidationError({self.field: error}) def __repr__(self): return unicode_to_repr('<%s(queryset=%s, field=%s, date_field=%s)>' % ( diff --git a/rest_framework/views.py b/rest_framework/views.py index 56e3c4e4994..926a3d00e91 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -15,6 +15,7 @@ from rest_framework import exceptions, status from rest_framework.compat import set_rollback +from rest_framework.exceptions import ValidationError, _force_text_recursive from rest_framework.request import Request from rest_framework.response import Response from rest_framework.settings import api_settings @@ -69,7 +70,17 @@ def exception_handler(exc, context): if getattr(exc, 'wait', None): headers['Retry-After'] = '%d' % exc.wait - if isinstance(exc.detail, (list, dict)): + if isinstance(exc.detail, list): + data = _force_text_recursive([item.detail if isinstance(item, ValidationError) else item + for item in exc.detai]) + elif isinstance(exc.detail, dict): + for field_name, e in exc.detail.items(): + if hasattr(e, 'detail') and isinstance(e.detail[0], ValidationError): + exc.detail[field_name] = e.detail[0].detail + elif isinstance(e, ValidationError): + exc.detail[field_name] = e.detail + else: + exc.detail[field_name] = e data = exc.detail else: data = {'detail': exc.detail} diff --git a/tests/test_bound_fields.py b/tests/test_bound_fields.py index f2fac8f0d22..0fd8e6f5d33 100644 --- a/tests/test_bound_fields.py +++ b/tests/test_bound_fields.py @@ -39,7 +39,8 @@ class ExampleSerializer(serializers.Serializer): serializer.is_valid() assert serializer['text'].value == 'x' * 1000 - assert serializer['text'].errors == ['Ensure this field has no more than 100 characters.'] + assert serializer['text'].errors.detail[0].detail == ['Ensure this field has no more than 100 characters.'] + assert serializer['text'].errors.detail[0].code == 'max_length' assert serializer['text'].name == 'text' assert serializer['amount'].value is 123 assert serializer['amount'].errors is None diff --git a/tests/test_fields.py b/tests/test_fields.py index cefb45605ad..b4df94f720a 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -9,6 +9,7 @@ import rest_framework from rest_framework import serializers +from rest_framework.exceptions import ValidationError # Tests for field keyword arguments and core functionality. @@ -443,7 +444,13 @@ def test_invalid_inputs(self): for input_value, expected_failure in get_items(self.invalid_inputs): with pytest.raises(serializers.ValidationError) as exc_info: self.field.run_validation(input_value) - assert exc_info.value.detail == expected_failure + + if isinstance(exc_info.value.detail[0], ValidationError): + failure = exc_info.value.detail[0].detail + else: + failure = exc_info.value.detail + + assert failure == expected_failure def test_outputs(self): for output_value, expected_output in get_items(self.outputs): @@ -1413,7 +1420,10 @@ class TestFieldFieldWithName(FieldValues): # call into it's regular validation, or require PIL for testing. class FailImageValidation(object): def to_python(self, value): - raise serializers.ValidationError(self.error_messages['invalid_image']) + raise serializers.ValidationError( + self.error_messages['invalid_image'], + code='invalid_image' + ) class PassImageValidation(object): diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index 0179abc4444..c2bb11f8c67 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -370,7 +370,7 @@ class Meta: s = TestSerializer(data={'address': 'not an ip address'}) self.assertFalse(s.is_valid()) - self.assertEquals(1, len(s.errors['address']), + self.assertEquals(1, len(s.errors['address'].detail), 'Unexpected number of validation errors: ' '{0}'.format(s.errors)) diff --git a/tests/test_relations_hyperlink.py b/tests/test_relations_hyperlink.py index c0642eda26a..c2fc7904f10 100644 --- a/tests/test_relations_hyperlink.py +++ b/tests/test_relations_hyperlink.py @@ -244,7 +244,8 @@ def test_foreign_key_update_incorrect_type(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data, context={'request': request}) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors, {'target': ['Incorrect type. Expected URL string, received int.']}) + self.assertEqual(serializer.errors['target'].detail, ['Incorrect type. Expected URL string, received int.']) + self.assertEqual(serializer.errors['target'].code, 'incorrect_type') def test_reverse_foreign_key_update(self): data = {'url': 'http://testserver/foreignkeytarget/2/', 'name': 'target-2', 'sources': ['http://testserver/foreignkeysource/1/', 'http://testserver/foreignkeysource/3/']} @@ -315,7 +316,8 @@ def test_foreign_key_update_with_invalid_null(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data, context={'request': request}) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors, {'target': ['This field may not be null.']}) + self.assertEqual(serializer.errors['target'].detail, ['This field may not be null.']) + self.assertEqual(serializer.errors['target'].code, 'null') class HyperlinkedNullableForeignKeyTests(TestCase): diff --git a/tests/test_relations_pk.py b/tests/test_relations_pk.py index 169f7d9c5e9..0ad31109d89 100644 --- a/tests/test_relations_pk.py +++ b/tests/test_relations_pk.py @@ -235,7 +235,9 @@ def test_foreign_key_update_incorrect_type(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors, {'target': ['Incorrect type. Expected pk value, received %s.' % six.text_type.__name__]}) + self.assertEqual(serializer.errors['target'].detail, + ['Incorrect type. Expected pk value, received %s.' % six.text_type.__name__]) + self.assertEqual(serializer.errors['target'].code, 'incorrect_type') def test_reverse_foreign_key_update(self): data = {'id': 2, 'name': 'target-2', 'sources': [1, 3]} @@ -306,7 +308,8 @@ def test_foreign_key_update_with_invalid_null(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors, {'target': ['This field may not be null.']}) + self.assertEqual(serializer.errors['target'].detail, ['This field may not be null.']) + self.assertEqual(serializer.errors['target'].code, 'null') def test_foreign_key_with_unsaved(self): source = ForeignKeySource(name='source-unsaved') diff --git a/tests/test_relations_slug.py b/tests/test_relations_slug.py index 680aee4173b..fb7910b694f 100644 --- a/tests/test_relations_slug.py +++ b/tests/test_relations_slug.py @@ -104,7 +104,8 @@ def test_foreign_key_update_incorrect_type(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors, {'target': ['Object with name=123 does not exist.']}) + self.assertEqual(serializer.errors['target'].detail, ['Object with name=123 does not exist.']) + self.assertEqual(serializer.errors['target'].code, 'does_not_exist') def test_reverse_foreign_key_update(self): data = {'id': 2, 'name': 'target-2', 'sources': ['source-1', 'source-3']} @@ -176,7 +177,8 @@ def test_foreign_key_update_with_invalid_null(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors, {'target': ['This field may not be null.']}) + self.assertEqual(serializer.errors['target'].detail, ['This field may not be null.']) + self.assertEqual(serializer.errors['target'].code, 'null') class SlugNullableForeignKeyTests(TestCase): diff --git a/tests/test_serializer.py b/tests/test_serializer.py index 741c6ab174f..b2436ce4a43 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -7,6 +7,7 @@ from rest_framework import serializers from rest_framework.compat import unicode_repr +from rest_framework.fields import DjangoValidationError from .utils import MockObject @@ -31,7 +32,8 @@ def test_invalid_serializer(self): serializer = self.Serializer(data={'char': 'abc'}) assert not serializer.is_valid() assert serializer.validated_data == {} - assert serializer.errors == {'integer': ['This field is required.']} + assert serializer.errors['integer'].detail == ['This field is required.'] + assert serializer.errors['integer'].code == 'required' def test_partial_validation(self): serializer = self.Serializer(data={'char': 'abc'}, partial=True) @@ -69,7 +71,10 @@ class ExampleSerializer(serializers.Serializer): integer = serializers.IntegerField() def validate(self, attrs): - raise serializers.ValidationError('Non field error') + raise serializers.ValidationError( + 'Non field error', + code='test' + ) serializer = ExampleSerializer(data={'char': 'abc', 'integer': 123}) assert not serializer.is_valid() @@ -309,3 +314,27 @@ class ExampleSerializer(serializers.Serializer): pickled = pickle.dumps(serializer.data) data = pickle.loads(pickled) assert data == {'field1': 'a', 'field2': 'b'} + + +class TestGetValidationErrorDetail: + def test_get_validation_error_detail_converts_django_errors(self): + exc = DjangoValidationError("Missing field.", code='required') + detail = serializers.get_validation_error_detail(exc) + assert detail['non_field_errors'][0].detail == ['Missing field.'] + assert detail['non_field_errors'][0].code == 'required' + + +class TestCapturingDjangoValidationError: + def test_django_validation_error_on_a_field_is_converted(self): + class ExampleSerializer(serializers.Serializer): + field = serializers.CharField() + + def validate_field(self, value): + raise DjangoValidationError( + 'validation failed' + ) + + serializer = ExampleSerializer(data={'field': 'a'}) + assert not serializer.is_valid() + assert serializer.errors['field'][0].detail == ['validation failed'] + assert serializer.errors['field'][0].code == 'invalid' diff --git a/tests/test_serializer_bulk_update.py b/tests/test_serializer_bulk_update.py index 8d7240a7b01..b18d6200d84 100644 --- a/tests/test_serializer_bulk_update.py +++ b/tests/test_serializer_bulk_update.py @@ -67,15 +67,16 @@ def test_bulk_create_errors(self): 'author': 'Haruki Murakami' } ] - expected_errors = [ - {}, - {}, - {'id': ['A valid integer is required.']} - ] serializer = self.BookSerializer(data=data, many=True) self.assertEqual(serializer.is_valid(), False) - self.assertEqual(serializer.errors, expected_errors) + + for idx, error in enumerate(serializer.errors): + if idx < 2: + self.assertEqual(error, {}) + else: + self.assertEqual(error['id'].detail, ['A valid integer is required.']) + self.assertEqual(error['id'].code, 'invalid') def test_invalid_list_datatype(self): """ @@ -87,13 +88,10 @@ def test_invalid_list_datatype(self): text_type_string = six.text_type.__name__ message = 'Invalid data. Expected a dictionary, but got %s.' % text_type_string - expected_errors = [ - {'non_field_errors': [message]}, - {'non_field_errors': [message]}, - {'non_field_errors': [message]} - ] - self.assertEqual(serializer.errors, expected_errors) + for error in serializer.errors: + self.assertEqual(error['non_field_errors'][0].detail, [message]) + self.assertEqual(error['non_field_errors'][0].code, 'invalid') def test_invalid_single_datatype(self): """ @@ -103,9 +101,9 @@ def test_invalid_single_datatype(self): serializer = self.BookSerializer(data=data, many=True) self.assertEqual(serializer.is_valid(), False) - expected_errors = {'non_field_errors': ['Expected a list of items but got type "int".']} - - self.assertEqual(serializer.errors, expected_errors) + self.assertEqual(serializer.errors['non_field_errors'][0].detail, + ['Expected a list of items but got type "int".']) + self.assertEqual(serializer.errors['non_field_errors'][0].code, 'not_a_list') def test_invalid_single_object(self): """ @@ -120,6 +118,7 @@ def test_invalid_single_object(self): serializer = self.BookSerializer(data=data, many=True) self.assertEqual(serializer.is_valid(), False) - expected_errors = {'non_field_errors': ['Expected a list of items but got type "dict".']} + self.assertEqual(serializer.errors['non_field_errors'][0].detail, + ['Expected a list of items but got type "dict".']) - self.assertEqual(serializer.errors, expected_errors) + self.assertEqual(serializer.errors['non_field_errors'][0].code, 'not_a_list') diff --git a/tests/test_serializer_lists.py b/tests/test_serializer_lists.py index 607ddba04a2..81aed35747b 100644 --- a/tests/test_serializer_lists.py +++ b/tests/test_serializer_lists.py @@ -280,7 +280,10 @@ class TestListSerializerClass: def test_list_serializer_class_validate(self): class CustomListSerializer(serializers.ListSerializer): def validate(self, attrs): - raise serializers.ValidationError('Non field error') + raise serializers.ValidationError( + 'Non field error', + code='test' + ) class TestSerializer(serializers.Serializer): class Meta: diff --git a/tests/test_serializer_nested.py b/tests/test_serializer_nested.py index aeb092ee05c..41d6724ac30 100644 --- a/tests/test_serializer_nested.py +++ b/tests/test_serializer_nested.py @@ -113,8 +113,8 @@ def test_null_is_not_allowed_if_allow_null_is_not_set(self): assert not serializer.is_valid() - expected_errors = {'not_allow_null': [serializer.error_messages['null']]} - assert serializer.errors == expected_errors + assert serializer.errors['not_allow_null'].detail == [serializer.error_messages['null']] + assert serializer.errors['not_allow_null'].code == 'null' def test_run_the_field_validation_even_if_the_field_is_null(self): class TestSerializer(self.Serializer): @@ -165,5 +165,7 @@ def test_empty_not_allowed_if_allow_empty_is_set_to_false(self): assert not serializer.is_valid() - expected_errors = {'not_allow_empty': {'non_field_errors': [serializers.ListSerializer.default_error_messages['empty']]}} - assert serializer.errors == expected_errors + assert serializer.errors['not_allow_empty'].detail['non_field_errors'][0].detail == \ + [serializers.ListSerializer.default_error_messages['empty']] + + assert serializer.errors['not_allow_empty'].detail['non_field_errors'][0].code == 'empty_not_allowed' diff --git a/tests/test_validation.py b/tests/test_validation.py index b6f274219f8..58ff7f168a3 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -41,7 +41,8 @@ class ShouldValidateModelSerializer(serializers.ModelSerializer): def validate_renamed(self, value): if len(value) < 3: - raise serializers.ValidationError('Minimum 3 characters.') + raise serializers.ValidationError('Minimum 3 characters.', + code='min_length') return value class Meta: @@ -109,11 +110,9 @@ class TestAvoidValidation(TestCase): def test_serializer_errors_has_only_invalid_data_error(self): serializer = ValidationSerializer(data='invalid data') self.assertFalse(serializer.is_valid()) - self.assertDictEqual(serializer.errors, { - 'non_field_errors': [ - 'Invalid data. Expected a dictionary, but got %s.' % type('').__name__ - ] - }) + self.assertEqual(serializer.errors['non_field_errors'][0].detail, + ['Invalid data. Expected a dictionary, but got %s.' % type('').__name__]) + self.assertEqual(serializer.errors['non_field_errors'][0].code, 'invalid') # regression tests for issue: 1493 @@ -141,7 +140,9 @@ def test_max_value_validation_serializer_success(self): def test_max_value_validation_serializer_fails(self): serializer = ValidationMaxValueValidatorModelSerializer(data={'number_value': 101}) self.assertFalse(serializer.is_valid()) - self.assertDictEqual({'number_value': ['Ensure this value is less than or equal to 100.']}, serializer.errors) + self.assertEqual(['Ensure this value is less than or equal to 100.'], serializer.errors['number_value'].detail[0].detail) + self.assertEqual(None, serializer.errors['number_value'].code) + self.assertEqual('max_value', serializer.errors['number_value'].detail[0].code) def test_max_value_validation_success(self): obj = ValidationMaxValueValidatorModel.objects.create(number_value=100) diff --git a/tests/test_validation_error.py b/tests/test_validation_error.py new file mode 100644 index 00000000000..7e651312750 --- /dev/null +++ b/tests/test_validation_error.py @@ -0,0 +1,95 @@ +import pytest +from django.test import TestCase + +from rest_framework import serializers, status +from rest_framework.decorators import api_view +from rest_framework.exceptions import ValidationError +from rest_framework.response import Response +from rest_framework.settings import api_settings +from rest_framework.test import APIRequestFactory +from rest_framework.views import APIView + +factory = APIRequestFactory() + + +class ExampleSerializer(serializers.Serializer): + char = serializers.CharField() + integer = serializers.IntegerField() + + +class ErrorView(APIView): + def get(self, request, *args, **kwargs): + ExampleSerializer(data={}).is_valid(raise_exception=True) + + +@api_view(['GET']) +def error_view(request): + ExampleSerializer(data={}).is_valid(raise_exception=True) + + +class TestValidationErrorWithCode(TestCase): + def setUp(self): + self.DEFAULT_HANDLER = api_settings.EXCEPTION_HANDLER + + def exception_handler(exc, request): + if not exc.code: + errors = { + field_name: { + 'code': e.code, + 'message': e.detail + } for field_name, e in exc.detail.items() + } + else: + errors = { + 'code': exc.code, + 'detail': exc.detail + } + return Response(errors, status=status.HTTP_400_BAD_REQUEST) + + api_settings.EXCEPTION_HANDLER = exception_handler + + self.expected_response_data = { + 'char': { + 'message': ['This field is required.'], + 'code': 'required', + }, + 'integer': { + 'message': ['This field is required.'], + 'code': 'required' + }, + } + + def tearDown(self): + api_settings.EXCEPTION_HANDLER = self.DEFAULT_HANDLER + + def test_validation_error_requires_no_code_for_structured_errors(self): + """ + ValidationError can hold a list or dictionary of simple errors, in + which case the code is no longer meaningful and should not be + specified. + """ + with pytest.raises(AssertionError): + serializers.ValidationError([ValidationError("test-detail", "test-code")], code='min_value') + + with pytest.raises(AssertionError): + serializers.ValidationError({}, code='min_value') + + def test_validation_error_stores_error_code(self): + exception = serializers.ValidationError("", code='min_value') + assert exception.code == 'min_value' + + def test_class_based_view_exception_handler(self): + view = ErrorView.as_view() + + request = factory.get('/', content_type='application/json') + response = view(request) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.data, self.expected_response_data) + + def test_function_based_view_exception_handler(self): + view = error_view + + request = factory.get('/', content_type='application/json') + response = view(request) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.data, self.expected_response_data) diff --git a/tests/test_validators.py b/tests/test_validators.py index acaaf574323..b86f1ed1659 100644 --- a/tests/test_validators.py +++ b/tests/test_validators.py @@ -47,8 +47,11 @@ def test_repr(self): def test_is_not_unique(self): data = {'username': 'existing'} serializer = UniquenessSerializer(data=data) + assert not serializer.is_valid() - assert serializer.errors == {'username': ['UniquenessModel with this username already exists.']} + assert serializer.errors['username'].code is None + assert serializer.errors['username'].detail[0].code == 'unique' + assert serializer.errors['username'].detail[0].detail == ['UniquenessModel with this username already exists.'] def test_is_unique(self): data = {'username': 'other'} @@ -150,11 +153,9 @@ def test_is_not_unique_together(self): data = {'race_name': 'example', 'position': 2} serializer = UniquenessTogetherSerializer(data=data) assert not serializer.is_valid() - assert serializer.errors == { - 'non_field_errors': [ - 'The fields race_name, position must make a unique set.' - ] - } + assert serializer.errors['non_field_errors'][0].code == 'unique' + assert serializer.errors['non_field_errors'][0].detail == [ + 'The fields race_name, position must make a unique set.'] def test_is_unique_together(self): """ @@ -189,9 +190,8 @@ def test_unique_together_is_required(self): data = {'position': 2} serializer = UniquenessTogetherSerializer(data=data, partial=True) assert not serializer.is_valid() - assert serializer.errors == { - 'race_name': ['This field is required.'] - } + assert serializer.errors['race_name'][0].code == 'required' + assert serializer.errors['race_name'][0].detail == ['This field is required.'] def test_ignore_excluded_fields(self): """ @@ -278,9 +278,8 @@ def test_is_not_unique_for_date(self): data = {'slug': 'existing', 'published': '2000-01-01'} serializer = UniqueForDateSerializer(data=data) assert not serializer.is_valid() - assert serializer.errors == { - 'slug': ['This field must be unique for the "published" date.'] - } + assert serializer.errors['slug'][0].code == 'unique' + assert serializer.errors['slug'][0].detail == ['This field must be unique for the "published" date.'] def test_is_unique_for_date(self): """ From 875d321b9ddd0d079a1dd6f7462f69e2d53be137 Mon Sep 17 00:00:00 2001 From: Jonathan Liuti Date: Thu, 10 Dec 2015 14:46:51 +0100 Subject: [PATCH 128/131] Dont change return type of `Serializer.errors` We should keep `Serializer.errors`'s return type unchanged in order to maintain backward compatibility. The error codes will only be propagated to the `exception_handler` or accessible through the `Serializer._errors` private attribute. --- rest_framework/renderers.py | 15 ----------- rest_framework/serializers.py | 40 ++++++++++++++++++++++++++-- rest_framework/views.py | 15 ++--------- tests/test_bound_fields.py | 7 +++-- tests/test_model_serializer.py | 2 +- tests/test_relations_hyperlink.py | 10 ++++--- tests/test_relations_pk.py | 11 +++++--- tests/test_relations_slug.py | 10 ++++--- tests/test_serializer.py | 5 ++-- tests/test_serializer_bulk_update.py | 10 ++++++- tests/test_serializer_nested.py | 15 ++++++++--- tests/test_validation.py | 10 ++++--- tests/test_validators.py | 9 ++++--- 13 files changed, 101 insertions(+), 58 deletions(-) diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 1f0a57ef99e..024f0eb8ba1 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -493,21 +493,6 @@ def get_rendered_html_form(self, data, view, method, request): if hasattr(serializer, 'initial_data'): serializer.is_valid() - # Convert ValidationError to unicode string - # This is mainly a hack to monkey patch the errors and make the form renderer happy... - errors = OrderedDict() - for field_name, values in serializer.errors.items(): - if isinstance(values, list): - errors[field_name] = values - continue - - errors[field_name] = [] - for value in values.detail: - for message in value.detail: - errors[field_name].append(message) - - serializer._errors = errors - form_renderer = self.form_renderer_class() return form_renderer.render( serializer.data, diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 78f8a4ed076..36538bffcf1 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -219,7 +219,13 @@ def is_valid(self, raise_exception=False): self._errors = {} if self._errors and raise_exception: - raise ValidationError(self.errors) + return_errors = None + if isinstance(self._errors, list): + return_errors = ReturnList(self._errors, serializer=self) + elif isinstance(self._errors, dict): + return_errors = ReturnDict(self._errors, serializer=self) + + raise ValidationError(return_errors) return not bool(self._errors) @@ -244,12 +250,42 @@ def data(self): self._data = self.get_initial() return self._data + def _transform_to_legacy_errors(self, errors_to_transform): + # Do not mutate `errors_to_transform` here. + errors = ReturnDict(serializer=self) + for field_name, values in errors_to_transform.items(): + if isinstance(values, list): + errors[field_name] = values + continue + + if isinstance(values.detail, list): + errors[field_name] = [] + for value in values.detail: + if isinstance(value, ValidationError): + errors[field_name].extend(value.detail) + elif isinstance(value, list): + errors[field_name].extend(value) + else: + errors[field_name].append(value) + + elif isinstance(values.detail, dict): + errors[field_name] = {} + for sub_field_name, value in values.detail.items(): + errors[field_name][sub_field_name] = [] + for validation_error in value: + errors[field_name][sub_field_name].extend(validation_error.detail) + return errors + @property def errors(self): if not hasattr(self, '_errors'): msg = 'You must call `.is_valid()` before accessing `.errors`.' raise AssertionError(msg) - return self._errors + + if isinstance(self._errors, list): + return map(self._transform_to_legacy_errors, self._errors) + else: + return self._transform_to_legacy_errors(self._errors) @property def validated_data(self): diff --git a/rest_framework/views.py b/rest_framework/views.py index 926a3d00e91..915bacbc6d8 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -15,7 +15,6 @@ from rest_framework import exceptions, status from rest_framework.compat import set_rollback -from rest_framework.exceptions import ValidationError, _force_text_recursive from rest_framework.request import Request from rest_framework.response import Response from rest_framework.settings import api_settings @@ -70,18 +69,8 @@ def exception_handler(exc, context): if getattr(exc, 'wait', None): headers['Retry-After'] = '%d' % exc.wait - if isinstance(exc.detail, list): - data = _force_text_recursive([item.detail if isinstance(item, ValidationError) else item - for item in exc.detai]) - elif isinstance(exc.detail, dict): - for field_name, e in exc.detail.items(): - if hasattr(e, 'detail') and isinstance(e.detail[0], ValidationError): - exc.detail[field_name] = e.detail[0].detail - elif isinstance(e, ValidationError): - exc.detail[field_name] = e.detail - else: - exc.detail[field_name] = e - data = exc.detail + if isinstance(exc.detail, (list, dict)): + data = exc.detail.serializer.errors else: data = {'detail': exc.detail} diff --git a/tests/test_bound_fields.py b/tests/test_bound_fields.py index 0fd8e6f5d33..e1f6cd88b81 100644 --- a/tests/test_bound_fields.py +++ b/tests/test_bound_fields.py @@ -38,9 +38,12 @@ class ExampleSerializer(serializers.Serializer): serializer = ExampleSerializer(data={'text': 'x' * 1000, 'amount': 123}) serializer.is_valid() + # TODO Should we add the _errors with ValidationError to the bound_field.errors to get acces to the error code? + assert serializer._errors['text'].detail[0].detail == ['Ensure this field has no more than 100 characters.'] + assert serializer._errors['text'].detail[0].code == 'max_length' + assert serializer['text'].value == 'x' * 1000 - assert serializer['text'].errors.detail[0].detail == ['Ensure this field has no more than 100 characters.'] - assert serializer['text'].errors.detail[0].code == 'max_length' + assert serializer['text'].errors == ['Ensure this field has no more than 100 characters.'] assert serializer['text'].name == 'text' assert serializer['amount'].value is 123 assert serializer['amount'].errors is None diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index c2bb11f8c67..0179abc4444 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -370,7 +370,7 @@ class Meta: s = TestSerializer(data={'address': 'not an ip address'}) self.assertFalse(s.is_valid()) - self.assertEquals(1, len(s.errors['address'].detail), + self.assertEquals(1, len(s.errors['address']), 'Unexpected number of validation errors: ' '{0}'.format(s.errors)) diff --git a/tests/test_relations_hyperlink.py b/tests/test_relations_hyperlink.py index c2fc7904f10..2bf311d8ec5 100644 --- a/tests/test_relations_hyperlink.py +++ b/tests/test_relations_hyperlink.py @@ -244,8 +244,9 @@ def test_foreign_key_update_incorrect_type(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data, context={'request': request}) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors['target'].detail, ['Incorrect type. Expected URL string, received int.']) - self.assertEqual(serializer.errors['target'].code, 'incorrect_type') + self.assertEqual(serializer.errors, {'target': ['Incorrect type. Expected URL string, received int.']}) + self.assertEqual(serializer._errors['target'].detail, ['Incorrect type. Expected URL string, received int.']) + self.assertEqual(serializer._errors['target'].code, 'incorrect_type') def test_reverse_foreign_key_update(self): data = {'url': 'http://testserver/foreignkeytarget/2/', 'name': 'target-2', 'sources': ['http://testserver/foreignkeysource/1/', 'http://testserver/foreignkeysource/3/']} @@ -316,8 +317,9 @@ def test_foreign_key_update_with_invalid_null(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data, context={'request': request}) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors['target'].detail, ['This field may not be null.']) - self.assertEqual(serializer.errors['target'].code, 'null') + self.assertEqual(serializer.errors, {'target': ['This field may not be null.']}) + self.assertEqual(serializer._errors['target'].detail, ['This field may not be null.']) + self.assertEqual(serializer._errors['target'].code, 'null') class HyperlinkedNullableForeignKeyTests(TestCase): diff --git a/tests/test_relations_pk.py b/tests/test_relations_pk.py index 0ad31109d89..49110d2de80 100644 --- a/tests/test_relations_pk.py +++ b/tests/test_relations_pk.py @@ -235,9 +235,11 @@ def test_foreign_key_update_incorrect_type(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors['target'].detail, + self.assertEqual(serializer.errors, + {'target': ['Incorrect type. Expected pk value, received %s.' % six.text_type.__name__]}) + self.assertEqual(serializer._errors['target'].detail, ['Incorrect type. Expected pk value, received %s.' % six.text_type.__name__]) - self.assertEqual(serializer.errors['target'].code, 'incorrect_type') + self.assertEqual(serializer._errors['target'].code, 'incorrect_type') def test_reverse_foreign_key_update(self): data = {'id': 2, 'name': 'target-2', 'sources': [1, 3]} @@ -308,8 +310,9 @@ def test_foreign_key_update_with_invalid_null(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors['target'].detail, ['This field may not be null.']) - self.assertEqual(serializer.errors['target'].code, 'null') + self.assertEqual(serializer.errors, {'target': ['This field may not be null.']}) + self.assertEqual(serializer._errors['target'].detail, ['This field may not be null.']) + self.assertEqual(serializer._errors['target'].code, 'null') def test_foreign_key_with_unsaved(self): source = ForeignKeySource(name='source-unsaved') diff --git a/tests/test_relations_slug.py b/tests/test_relations_slug.py index fb7910b694f..936546b8dd8 100644 --- a/tests/test_relations_slug.py +++ b/tests/test_relations_slug.py @@ -104,8 +104,9 @@ def test_foreign_key_update_incorrect_type(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors['target'].detail, ['Object with name=123 does not exist.']) - self.assertEqual(serializer.errors['target'].code, 'does_not_exist') + self.assertEqual(serializer.errors, {'target': ['Object with name=123 does not exist.']}) + self.assertEqual(serializer._errors['target'].detail, ['Object with name=123 does not exist.']) + self.assertEqual(serializer._errors['target'].code, 'does_not_exist') def test_reverse_foreign_key_update(self): data = {'id': 2, 'name': 'target-2', 'sources': ['source-1', 'source-3']} @@ -177,8 +178,9 @@ def test_foreign_key_update_with_invalid_null(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors['target'].detail, ['This field may not be null.']) - self.assertEqual(serializer.errors['target'].code, 'null') + self.assertEqual(serializer.errors, {'target': ['This field may not be null.']}) + self.assertEqual(serializer._errors['target'].detail, ['This field may not be null.']) + self.assertEqual(serializer._errors['target'].code, 'null') class SlugNullableForeignKeyTests(TestCase): diff --git a/tests/test_serializer.py b/tests/test_serializer.py index b2436ce4a43..97a2c642eb0 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -32,8 +32,9 @@ def test_invalid_serializer(self): serializer = self.Serializer(data={'char': 'abc'}) assert not serializer.is_valid() assert serializer.validated_data == {} - assert serializer.errors['integer'].detail == ['This field is required.'] - assert serializer.errors['integer'].code == 'required' + assert serializer.errors == {'integer': ['This field is required.']} + assert serializer._errors['integer'].detail == ['This field is required.'] + assert serializer._errors['integer'].code == 'required' def test_partial_validation(self): serializer = self.Serializer(data={'char': 'abc'}, partial=True) diff --git a/tests/test_serializer_bulk_update.py b/tests/test_serializer_bulk_update.py index b18d6200d84..2b67ff5c783 100644 --- a/tests/test_serializer_bulk_update.py +++ b/tests/test_serializer_bulk_update.py @@ -71,7 +71,15 @@ def test_bulk_create_errors(self): serializer = self.BookSerializer(data=data, many=True) self.assertEqual(serializer.is_valid(), False) - for idx, error in enumerate(serializer.errors): + expected_errors = [ + {}, + {}, + {'id': ['A valid integer is required.']} + ] + + self.assertEqual(serializer.errors, expected_errors) + + for idx, error in enumerate(serializer._errors): if idx < 2: self.assertEqual(error, {}) else: diff --git a/tests/test_serializer_nested.py b/tests/test_serializer_nested.py index 41d6724ac30..870d66c5483 100644 --- a/tests/test_serializer_nested.py +++ b/tests/test_serializer_nested.py @@ -113,8 +113,11 @@ def test_null_is_not_allowed_if_allow_null_is_not_set(self): assert not serializer.is_valid() - assert serializer.errors['not_allow_null'].detail == [serializer.error_messages['null']] - assert serializer.errors['not_allow_null'].code == 'null' + expected_errors = {'not_allow_null': [serializer.error_messages['null']]} + assert serializer.errors == expected_errors + + assert serializer._errors['not_allow_null'].detail == [serializer.error_messages['null']] + assert serializer._errors['not_allow_null'].code == 'null' def test_run_the_field_validation_even_if_the_field_is_null(self): class TestSerializer(self.Serializer): @@ -165,7 +168,11 @@ def test_empty_not_allowed_if_allow_empty_is_set_to_false(self): assert not serializer.is_valid() - assert serializer.errors['not_allow_empty'].detail['non_field_errors'][0].detail == \ + expected_errors = { + 'not_allow_empty': {'non_field_errors': [serializers.ListSerializer.default_error_messages['empty']]}} + assert serializer.errors == expected_errors + + assert serializer._errors['not_allow_empty'].detail['non_field_errors'][0].detail == \ [serializers.ListSerializer.default_error_messages['empty']] - assert serializer.errors['not_allow_empty'].detail['non_field_errors'][0].code == 'empty_not_allowed' + assert serializer._errors['not_allow_empty'].detail['non_field_errors'][0].code == 'empty_not_allowed' diff --git a/tests/test_validation.py b/tests/test_validation.py index 58ff7f168a3..310b13011b0 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -140,9 +140,13 @@ def test_max_value_validation_serializer_success(self): def test_max_value_validation_serializer_fails(self): serializer = ValidationMaxValueValidatorModelSerializer(data={'number_value': 101}) self.assertFalse(serializer.is_valid()) - self.assertEqual(['Ensure this value is less than or equal to 100.'], serializer.errors['number_value'].detail[0].detail) - self.assertEqual(None, serializer.errors['number_value'].code) - self.assertEqual('max_value', serializer.errors['number_value'].detail[0].code) + + self.assertDictEqual({'number_value': ['Ensure this value is less than or equal to 100.']}, serializer.errors) + + self.assertEqual(['Ensure this value is less than or equal to 100.'], + serializer._errors['number_value'].detail[0].detail) + self.assertEqual(None, serializer._errors['number_value'].code) + self.assertEqual('max_value', serializer._errors['number_value'].detail[0].code) def test_max_value_validation_success(self): obj = ValidationMaxValueValidatorModel.objects.create(number_value=100) diff --git a/tests/test_validators.py b/tests/test_validators.py index b86f1ed1659..ff28908c3c2 100644 --- a/tests/test_validators.py +++ b/tests/test_validators.py @@ -49,9 +49,12 @@ def test_is_not_unique(self): serializer = UniquenessSerializer(data=data) assert not serializer.is_valid() - assert serializer.errors['username'].code is None - assert serializer.errors['username'].detail[0].code == 'unique' - assert serializer.errors['username'].detail[0].detail == ['UniquenessModel with this username already exists.'] + + assert serializer.errors == {'username': ['UniquenessModel with this username already exists.']} + + assert serializer._errors['username'].code is None + assert serializer._errors['username'].detail[0].code == 'unique' + assert serializer._errors['username'].detail[0].detail == ['UniquenessModel with this username already exists.'] def test_is_unique(self): data = {'username': 'other'} From c2af174d9531aca52b86c95c6ba28b1298f4a1e2 Mon Sep 17 00:00:00 2001 From: Jonathan Liuti Date: Wed, 16 Dec 2015 16:55:19 +0100 Subject: [PATCH 129/131] Revert change on existing tests --- tests/test_bound_fields.py | 4 -- tests/test_fields.py | 14 +--- tests/test_relations_hyperlink.py | 4 -- tests/test_relations_pk.py | 8 +-- tests/test_relations_slug.py | 4 -- tests/test_serializer.py | 32 +--------- tests/test_serializer_bulk_update.py | 33 ++++------ tests/test_serializer_lists.py | 5 +- tests/test_serializer_nested.py | 11 +--- tests/test_validation.py | 17 ++--- tests/test_validation_error.py | 95 ---------------------------- tests/test_validators.py | 24 ++++--- 12 files changed, 36 insertions(+), 215 deletions(-) delete mode 100644 tests/test_validation_error.py diff --git a/tests/test_bound_fields.py b/tests/test_bound_fields.py index e1f6cd88b81..f2fac8f0d22 100644 --- a/tests/test_bound_fields.py +++ b/tests/test_bound_fields.py @@ -38,10 +38,6 @@ class ExampleSerializer(serializers.Serializer): serializer = ExampleSerializer(data={'text': 'x' * 1000, 'amount': 123}) serializer.is_valid() - # TODO Should we add the _errors with ValidationError to the bound_field.errors to get acces to the error code? - assert serializer._errors['text'].detail[0].detail == ['Ensure this field has no more than 100 characters.'] - assert serializer._errors['text'].detail[0].code == 'max_length' - assert serializer['text'].value == 'x' * 1000 assert serializer['text'].errors == ['Ensure this field has no more than 100 characters.'] assert serializer['text'].name == 'text' diff --git a/tests/test_fields.py b/tests/test_fields.py index b4df94f720a..cefb45605ad 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -9,7 +9,6 @@ import rest_framework from rest_framework import serializers -from rest_framework.exceptions import ValidationError # Tests for field keyword arguments and core functionality. @@ -444,13 +443,7 @@ def test_invalid_inputs(self): for input_value, expected_failure in get_items(self.invalid_inputs): with pytest.raises(serializers.ValidationError) as exc_info: self.field.run_validation(input_value) - - if isinstance(exc_info.value.detail[0], ValidationError): - failure = exc_info.value.detail[0].detail - else: - failure = exc_info.value.detail - - assert failure == expected_failure + assert exc_info.value.detail == expected_failure def test_outputs(self): for output_value, expected_output in get_items(self.outputs): @@ -1420,10 +1413,7 @@ class TestFieldFieldWithName(FieldValues): # call into it's regular validation, or require PIL for testing. class FailImageValidation(object): def to_python(self, value): - raise serializers.ValidationError( - self.error_messages['invalid_image'], - code='invalid_image' - ) + raise serializers.ValidationError(self.error_messages['invalid_image']) class PassImageValidation(object): diff --git a/tests/test_relations_hyperlink.py b/tests/test_relations_hyperlink.py index 2bf311d8ec5..c0642eda26a 100644 --- a/tests/test_relations_hyperlink.py +++ b/tests/test_relations_hyperlink.py @@ -245,8 +245,6 @@ def test_foreign_key_update_incorrect_type(self): serializer = ForeignKeySourceSerializer(instance, data=data, context={'request': request}) self.assertFalse(serializer.is_valid()) self.assertEqual(serializer.errors, {'target': ['Incorrect type. Expected URL string, received int.']}) - self.assertEqual(serializer._errors['target'].detail, ['Incorrect type. Expected URL string, received int.']) - self.assertEqual(serializer._errors['target'].code, 'incorrect_type') def test_reverse_foreign_key_update(self): data = {'url': 'http://testserver/foreignkeytarget/2/', 'name': 'target-2', 'sources': ['http://testserver/foreignkeysource/1/', 'http://testserver/foreignkeysource/3/']} @@ -318,8 +316,6 @@ def test_foreign_key_update_with_invalid_null(self): serializer = ForeignKeySourceSerializer(instance, data=data, context={'request': request}) self.assertFalse(serializer.is_valid()) self.assertEqual(serializer.errors, {'target': ['This field may not be null.']}) - self.assertEqual(serializer._errors['target'].detail, ['This field may not be null.']) - self.assertEqual(serializer._errors['target'].code, 'null') class HyperlinkedNullableForeignKeyTests(TestCase): diff --git a/tests/test_relations_pk.py b/tests/test_relations_pk.py index 49110d2de80..169f7d9c5e9 100644 --- a/tests/test_relations_pk.py +++ b/tests/test_relations_pk.py @@ -235,11 +235,7 @@ def test_foreign_key_update_incorrect_type(self): instance = ForeignKeySource.objects.get(pk=1) serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors, - {'target': ['Incorrect type. Expected pk value, received %s.' % six.text_type.__name__]}) - self.assertEqual(serializer._errors['target'].detail, - ['Incorrect type. Expected pk value, received %s.' % six.text_type.__name__]) - self.assertEqual(serializer._errors['target'].code, 'incorrect_type') + self.assertEqual(serializer.errors, {'target': ['Incorrect type. Expected pk value, received %s.' % six.text_type.__name__]}) def test_reverse_foreign_key_update(self): data = {'id': 2, 'name': 'target-2', 'sources': [1, 3]} @@ -311,8 +307,6 @@ def test_foreign_key_update_with_invalid_null(self): serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) self.assertEqual(serializer.errors, {'target': ['This field may not be null.']}) - self.assertEqual(serializer._errors['target'].detail, ['This field may not be null.']) - self.assertEqual(serializer._errors['target'].code, 'null') def test_foreign_key_with_unsaved(self): source = ForeignKeySource(name='source-unsaved') diff --git a/tests/test_relations_slug.py b/tests/test_relations_slug.py index 936546b8dd8..680aee4173b 100644 --- a/tests/test_relations_slug.py +++ b/tests/test_relations_slug.py @@ -105,8 +105,6 @@ def test_foreign_key_update_incorrect_type(self): serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) self.assertEqual(serializer.errors, {'target': ['Object with name=123 does not exist.']}) - self.assertEqual(serializer._errors['target'].detail, ['Object with name=123 does not exist.']) - self.assertEqual(serializer._errors['target'].code, 'does_not_exist') def test_reverse_foreign_key_update(self): data = {'id': 2, 'name': 'target-2', 'sources': ['source-1', 'source-3']} @@ -179,8 +177,6 @@ def test_foreign_key_update_with_invalid_null(self): serializer = ForeignKeySourceSerializer(instance, data=data) self.assertFalse(serializer.is_valid()) self.assertEqual(serializer.errors, {'target': ['This field may not be null.']}) - self.assertEqual(serializer._errors['target'].detail, ['This field may not be null.']) - self.assertEqual(serializer._errors['target'].code, 'null') class SlugNullableForeignKeyTests(TestCase): diff --git a/tests/test_serializer.py b/tests/test_serializer.py index 97a2c642eb0..741c6ab174f 100644 --- a/tests/test_serializer.py +++ b/tests/test_serializer.py @@ -7,7 +7,6 @@ from rest_framework import serializers from rest_framework.compat import unicode_repr -from rest_framework.fields import DjangoValidationError from .utils import MockObject @@ -33,8 +32,6 @@ def test_invalid_serializer(self): assert not serializer.is_valid() assert serializer.validated_data == {} assert serializer.errors == {'integer': ['This field is required.']} - assert serializer._errors['integer'].detail == ['This field is required.'] - assert serializer._errors['integer'].code == 'required' def test_partial_validation(self): serializer = self.Serializer(data={'char': 'abc'}, partial=True) @@ -72,10 +69,7 @@ class ExampleSerializer(serializers.Serializer): integer = serializers.IntegerField() def validate(self, attrs): - raise serializers.ValidationError( - 'Non field error', - code='test' - ) + raise serializers.ValidationError('Non field error') serializer = ExampleSerializer(data={'char': 'abc', 'integer': 123}) assert not serializer.is_valid() @@ -315,27 +309,3 @@ class ExampleSerializer(serializers.Serializer): pickled = pickle.dumps(serializer.data) data = pickle.loads(pickled) assert data == {'field1': 'a', 'field2': 'b'} - - -class TestGetValidationErrorDetail: - def test_get_validation_error_detail_converts_django_errors(self): - exc = DjangoValidationError("Missing field.", code='required') - detail = serializers.get_validation_error_detail(exc) - assert detail['non_field_errors'][0].detail == ['Missing field.'] - assert detail['non_field_errors'][0].code == 'required' - - -class TestCapturingDjangoValidationError: - def test_django_validation_error_on_a_field_is_converted(self): - class ExampleSerializer(serializers.Serializer): - field = serializers.CharField() - - def validate_field(self, value): - raise DjangoValidationError( - 'validation failed' - ) - - serializer = ExampleSerializer(data={'field': 'a'}) - assert not serializer.is_valid() - assert serializer.errors['field'][0].detail == ['validation failed'] - assert serializer.errors['field'][0].code == 'invalid' diff --git a/tests/test_serializer_bulk_update.py b/tests/test_serializer_bulk_update.py index 2b67ff5c783..8d7240a7b01 100644 --- a/tests/test_serializer_bulk_update.py +++ b/tests/test_serializer_bulk_update.py @@ -67,25 +67,16 @@ def test_bulk_create_errors(self): 'author': 'Haruki Murakami' } ] - - serializer = self.BookSerializer(data=data, many=True) - self.assertEqual(serializer.is_valid(), False) - expected_errors = [ {}, {}, {'id': ['A valid integer is required.']} ] + serializer = self.BookSerializer(data=data, many=True) + self.assertEqual(serializer.is_valid(), False) self.assertEqual(serializer.errors, expected_errors) - for idx, error in enumerate(serializer._errors): - if idx < 2: - self.assertEqual(error, {}) - else: - self.assertEqual(error['id'].detail, ['A valid integer is required.']) - self.assertEqual(error['id'].code, 'invalid') - def test_invalid_list_datatype(self): """ Data containing list of incorrect data type should return errors. @@ -96,10 +87,13 @@ def test_invalid_list_datatype(self): text_type_string = six.text_type.__name__ message = 'Invalid data. Expected a dictionary, but got %s.' % text_type_string + expected_errors = [ + {'non_field_errors': [message]}, + {'non_field_errors': [message]}, + {'non_field_errors': [message]} + ] - for error in serializer.errors: - self.assertEqual(error['non_field_errors'][0].detail, [message]) - self.assertEqual(error['non_field_errors'][0].code, 'invalid') + self.assertEqual(serializer.errors, expected_errors) def test_invalid_single_datatype(self): """ @@ -109,9 +103,9 @@ def test_invalid_single_datatype(self): serializer = self.BookSerializer(data=data, many=True) self.assertEqual(serializer.is_valid(), False) - self.assertEqual(serializer.errors['non_field_errors'][0].detail, - ['Expected a list of items but got type "int".']) - self.assertEqual(serializer.errors['non_field_errors'][0].code, 'not_a_list') + expected_errors = {'non_field_errors': ['Expected a list of items but got type "int".']} + + self.assertEqual(serializer.errors, expected_errors) def test_invalid_single_object(self): """ @@ -126,7 +120,6 @@ def test_invalid_single_object(self): serializer = self.BookSerializer(data=data, many=True) self.assertEqual(serializer.is_valid(), False) - self.assertEqual(serializer.errors['non_field_errors'][0].detail, - ['Expected a list of items but got type "dict".']) + expected_errors = {'non_field_errors': ['Expected a list of items but got type "dict".']} - self.assertEqual(serializer.errors['non_field_errors'][0].code, 'not_a_list') + self.assertEqual(serializer.errors, expected_errors) diff --git a/tests/test_serializer_lists.py b/tests/test_serializer_lists.py index 81aed35747b..607ddba04a2 100644 --- a/tests/test_serializer_lists.py +++ b/tests/test_serializer_lists.py @@ -280,10 +280,7 @@ class TestListSerializerClass: def test_list_serializer_class_validate(self): class CustomListSerializer(serializers.ListSerializer): def validate(self, attrs): - raise serializers.ValidationError( - 'Non field error', - code='test' - ) + raise serializers.ValidationError('Non field error') class TestSerializer(serializers.Serializer): class Meta: diff --git a/tests/test_serializer_nested.py b/tests/test_serializer_nested.py index 870d66c5483..aeb092ee05c 100644 --- a/tests/test_serializer_nested.py +++ b/tests/test_serializer_nested.py @@ -116,9 +116,6 @@ def test_null_is_not_allowed_if_allow_null_is_not_set(self): expected_errors = {'not_allow_null': [serializer.error_messages['null']]} assert serializer.errors == expected_errors - assert serializer._errors['not_allow_null'].detail == [serializer.error_messages['null']] - assert serializer._errors['not_allow_null'].code == 'null' - def test_run_the_field_validation_even_if_the_field_is_null(self): class TestSerializer(self.Serializer): validation_was_run = False @@ -168,11 +165,5 @@ def test_empty_not_allowed_if_allow_empty_is_set_to_false(self): assert not serializer.is_valid() - expected_errors = { - 'not_allow_empty': {'non_field_errors': [serializers.ListSerializer.default_error_messages['empty']]}} + expected_errors = {'not_allow_empty': {'non_field_errors': [serializers.ListSerializer.default_error_messages['empty']]}} assert serializer.errors == expected_errors - - assert serializer._errors['not_allow_empty'].detail['non_field_errors'][0].detail == \ - [serializers.ListSerializer.default_error_messages['empty']] - - assert serializer._errors['not_allow_empty'].detail['non_field_errors'][0].code == 'empty_not_allowed' diff --git a/tests/test_validation.py b/tests/test_validation.py index 310b13011b0..b6f274219f8 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -41,8 +41,7 @@ class ShouldValidateModelSerializer(serializers.ModelSerializer): def validate_renamed(self, value): if len(value) < 3: - raise serializers.ValidationError('Minimum 3 characters.', - code='min_length') + raise serializers.ValidationError('Minimum 3 characters.') return value class Meta: @@ -110,9 +109,11 @@ class TestAvoidValidation(TestCase): def test_serializer_errors_has_only_invalid_data_error(self): serializer = ValidationSerializer(data='invalid data') self.assertFalse(serializer.is_valid()) - self.assertEqual(serializer.errors['non_field_errors'][0].detail, - ['Invalid data. Expected a dictionary, but got %s.' % type('').__name__]) - self.assertEqual(serializer.errors['non_field_errors'][0].code, 'invalid') + self.assertDictEqual(serializer.errors, { + 'non_field_errors': [ + 'Invalid data. Expected a dictionary, but got %s.' % type('').__name__ + ] + }) # regression tests for issue: 1493 @@ -140,14 +141,8 @@ def test_max_value_validation_serializer_success(self): def test_max_value_validation_serializer_fails(self): serializer = ValidationMaxValueValidatorModelSerializer(data={'number_value': 101}) self.assertFalse(serializer.is_valid()) - self.assertDictEqual({'number_value': ['Ensure this value is less than or equal to 100.']}, serializer.errors) - self.assertEqual(['Ensure this value is less than or equal to 100.'], - serializer._errors['number_value'].detail[0].detail) - self.assertEqual(None, serializer._errors['number_value'].code) - self.assertEqual('max_value', serializer._errors['number_value'].detail[0].code) - def test_max_value_validation_success(self): obj = ValidationMaxValueValidatorModel.objects.create(number_value=100) request = factory.patch('/{0}'.format(obj.pk), {'number_value': 98}, format='json') diff --git a/tests/test_validation_error.py b/tests/test_validation_error.py deleted file mode 100644 index 7e651312750..00000000000 --- a/tests/test_validation_error.py +++ /dev/null @@ -1,95 +0,0 @@ -import pytest -from django.test import TestCase - -from rest_framework import serializers, status -from rest_framework.decorators import api_view -from rest_framework.exceptions import ValidationError -from rest_framework.response import Response -from rest_framework.settings import api_settings -from rest_framework.test import APIRequestFactory -from rest_framework.views import APIView - -factory = APIRequestFactory() - - -class ExampleSerializer(serializers.Serializer): - char = serializers.CharField() - integer = serializers.IntegerField() - - -class ErrorView(APIView): - def get(self, request, *args, **kwargs): - ExampleSerializer(data={}).is_valid(raise_exception=True) - - -@api_view(['GET']) -def error_view(request): - ExampleSerializer(data={}).is_valid(raise_exception=True) - - -class TestValidationErrorWithCode(TestCase): - def setUp(self): - self.DEFAULT_HANDLER = api_settings.EXCEPTION_HANDLER - - def exception_handler(exc, request): - if not exc.code: - errors = { - field_name: { - 'code': e.code, - 'message': e.detail - } for field_name, e in exc.detail.items() - } - else: - errors = { - 'code': exc.code, - 'detail': exc.detail - } - return Response(errors, status=status.HTTP_400_BAD_REQUEST) - - api_settings.EXCEPTION_HANDLER = exception_handler - - self.expected_response_data = { - 'char': { - 'message': ['This field is required.'], - 'code': 'required', - }, - 'integer': { - 'message': ['This field is required.'], - 'code': 'required' - }, - } - - def tearDown(self): - api_settings.EXCEPTION_HANDLER = self.DEFAULT_HANDLER - - def test_validation_error_requires_no_code_for_structured_errors(self): - """ - ValidationError can hold a list or dictionary of simple errors, in - which case the code is no longer meaningful and should not be - specified. - """ - with pytest.raises(AssertionError): - serializers.ValidationError([ValidationError("test-detail", "test-code")], code='min_value') - - with pytest.raises(AssertionError): - serializers.ValidationError({}, code='min_value') - - def test_validation_error_stores_error_code(self): - exception = serializers.ValidationError("", code='min_value') - assert exception.code == 'min_value' - - def test_class_based_view_exception_handler(self): - view = ErrorView.as_view() - - request = factory.get('/', content_type='application/json') - response = view(request) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual(response.data, self.expected_response_data) - - def test_function_based_view_exception_handler(self): - view = error_view - - request = factory.get('/', content_type='application/json') - response = view(request) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - self.assertEqual(response.data, self.expected_response_data) diff --git a/tests/test_validators.py b/tests/test_validators.py index ff28908c3c2..acaaf574323 100644 --- a/tests/test_validators.py +++ b/tests/test_validators.py @@ -47,15 +47,9 @@ def test_repr(self): def test_is_not_unique(self): data = {'username': 'existing'} serializer = UniquenessSerializer(data=data) - assert not serializer.is_valid() - assert serializer.errors == {'username': ['UniquenessModel with this username already exists.']} - assert serializer._errors['username'].code is None - assert serializer._errors['username'].detail[0].code == 'unique' - assert serializer._errors['username'].detail[0].detail == ['UniquenessModel with this username already exists.'] - def test_is_unique(self): data = {'username': 'other'} serializer = UniquenessSerializer(data=data) @@ -156,9 +150,11 @@ def test_is_not_unique_together(self): data = {'race_name': 'example', 'position': 2} serializer = UniquenessTogetherSerializer(data=data) assert not serializer.is_valid() - assert serializer.errors['non_field_errors'][0].code == 'unique' - assert serializer.errors['non_field_errors'][0].detail == [ - 'The fields race_name, position must make a unique set.'] + assert serializer.errors == { + 'non_field_errors': [ + 'The fields race_name, position must make a unique set.' + ] + } def test_is_unique_together(self): """ @@ -193,8 +189,9 @@ def test_unique_together_is_required(self): data = {'position': 2} serializer = UniquenessTogetherSerializer(data=data, partial=True) assert not serializer.is_valid() - assert serializer.errors['race_name'][0].code == 'required' - assert serializer.errors['race_name'][0].detail == ['This field is required.'] + assert serializer.errors == { + 'race_name': ['This field is required.'] + } def test_ignore_excluded_fields(self): """ @@ -281,8 +278,9 @@ def test_is_not_unique_for_date(self): data = {'slug': 'existing', 'published': '2000-01-01'} serializer = UniqueForDateSerializer(data=data) assert not serializer.is_valid() - assert serializer.errors['slug'][0].code == 'unique' - assert serializer.errors['slug'][0].detail == ['This field must be unique for the "published" date.'] + assert serializer.errors == { + 'slug': ['This field must be unique for the "published" date.'] + } def test_is_unique_for_date(self): """ From aba387ff3a8d392c156d160555e8e2f2378502ae Mon Sep 17 00:00:00 2001 From: Jonathan Liuti Date: Wed, 16 Dec 2015 19:09:03 +0100 Subject: [PATCH 130/131] Introduce ValidationErrorMessage `ValidationErrorMessage` is a string-like object that holds a code attribute. The code attribute has been removed from ValidationError to be able to maintain better backward compatibility. What this means is that `ValidationError` can accept either a regular string or a `ValidationErrorMessage` for its `detail` attribute. --- rest_framework/authtoken/serializers.py | 16 ++++-- rest_framework/exceptions.py | 22 +++++--- rest_framework/fields.py | 7 ++- rest_framework/response.py | 1 + rest_framework/serializers.py | 53 +++--------------- rest_framework/validators.py | 22 +++++--- rest_framework/views.py | 2 +- tests/test_validation_error.py | 74 +++++++++++++++++++++++++ 8 files changed, 127 insertions(+), 70 deletions(-) create mode 100644 tests/test_validation_error.py diff --git a/rest_framework/authtoken/serializers.py b/rest_framework/authtoken/serializers.py index ce6bb9c79aa..a45ca1ca787 100644 --- a/rest_framework/authtoken/serializers.py +++ b/rest_framework/authtoken/serializers.py @@ -2,6 +2,7 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers +from rest_framework.exceptions import ValidationErrorMessage class AuthTokenSerializer(serializers.Serializer): @@ -19,20 +20,23 @@ def validate(self, attrs): if not user.is_active: msg = _('User account is disabled.') raise serializers.ValidationError( - msg, - code='authorization' + ValidationErrorMessage( + msg, + code='authorization') ) else: msg = _('Unable to log in with provided credentials.') raise serializers.ValidationError( - msg, - code='authorization' + ValidationErrorMessage( + msg, + code='authorization') ) else: msg = _('Must include "username" and "password".') raise serializers.ValidationError( - msg, - code='authorization' + ValidationErrorMessage( + msg, + code='authorization') ) attrs['user'] = user diff --git a/rest_framework/exceptions.py b/rest_framework/exceptions.py index e23b7cd3159..97274c8c0d9 100644 --- a/rest_framework/exceptions.py +++ b/rest_framework/exceptions.py @@ -61,7 +61,7 @@ def __str__(self): def build_error_from_django_validation_error(exc_info): code = getattr(exc_info, 'code', None) or 'invalid' return [ - ValidationError(msg, code=code) + ValidationErrorMessage(msg, code=code) for msg in exc_info.messages ] @@ -73,20 +73,26 @@ def build_error_from_django_validation_error(exc_info): # from rest_framework import serializers # raise serializers.ValidationError('Value was invalid') +class ValidationErrorMessage(six.text_type): + code = None + + def __new__(cls, string, code=None, *args, **kwargs): + self = super(ValidationErrorMessage, cls).__new__( + cls, string, *args, **kwargs) + + self.code = code + return self + + class ValidationError(APIException): status_code = status.HTTP_400_BAD_REQUEST - def __init__(self, detail, code=None): + def __init__(self, detail): # For validation errors the 'detail' key is always required. # The details should always be coerced to a list if not already. if not isinstance(detail, dict) and not isinstance(detail, list): detail = [detail] - elif isinstance(detail, dict) or (detail and isinstance(detail[0], ValidationError)): - assert code is None, ( - 'The `code` argument must not be set for compound errors.') - - self.detail = detail - self.code = code + self.detail = _force_text_recursive(detail) def __str__(self): return six.text_type(self.detail) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index ea5a4893f90..83cc47fadd4 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -32,7 +32,8 @@ from rest_framework import ISO_8601 from rest_framework.compat import unicode_repr, unicode_to_repr from rest_framework.exceptions import ( - ValidationError, build_error_from_django_validation_error + ValidationError, ValidationErrorMessage, + build_error_from_django_validation_error ) from rest_framework.settings import api_settings from rest_framework.utils import html, humanize_datetime, representation @@ -505,7 +506,7 @@ def run_validators(self, value): # attempting to accumulate a list of errors. if isinstance(exc.detail, dict): raise - errors.append(ValidationError(exc.detail, code=exc.code)) + errors.extend(exc.detail) except DjangoValidationError as exc: errors.extend( build_error_from_django_validation_error(exc) @@ -547,7 +548,7 @@ def fail(self, key, **kwargs): msg = MISSING_ERROR_MESSAGE.format(class_name=class_name, key=key) raise AssertionError(msg) message_string = msg.format(**kwargs) - raise ValidationError(message_string, code=key) + raise ValidationError(ValidationErrorMessage(message_string, code=key)) @cached_property def root(self): diff --git a/rest_framework/response.py b/rest_framework/response.py index 9942dd576c1..0e97668eb4e 100644 --- a/rest_framework/response.py +++ b/rest_framework/response.py @@ -38,6 +38,7 @@ def __init__(self, data=None, status=None, '`.error`. representation.' ) raise AssertionError(msg) + self.data = data self.template_name = template_name self.exception = exception diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 36538bffcf1..e49fa65e8e4 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -219,14 +219,7 @@ def is_valid(self, raise_exception=False): self._errors = {} if self._errors and raise_exception: - return_errors = None - if isinstance(self._errors, list): - return_errors = ReturnList(self._errors, serializer=self) - elif isinstance(self._errors, dict): - return_errors = ReturnDict(self._errors, serializer=self) - - raise ValidationError(return_errors) - + raise ValidationError(self.errors) return not bool(self._errors) @property @@ -250,42 +243,12 @@ def data(self): self._data = self.get_initial() return self._data - def _transform_to_legacy_errors(self, errors_to_transform): - # Do not mutate `errors_to_transform` here. - errors = ReturnDict(serializer=self) - for field_name, values in errors_to_transform.items(): - if isinstance(values, list): - errors[field_name] = values - continue - - if isinstance(values.detail, list): - errors[field_name] = [] - for value in values.detail: - if isinstance(value, ValidationError): - errors[field_name].extend(value.detail) - elif isinstance(value, list): - errors[field_name].extend(value) - else: - errors[field_name].append(value) - - elif isinstance(values.detail, dict): - errors[field_name] = {} - for sub_field_name, value in values.detail.items(): - errors[field_name][sub_field_name] = [] - for validation_error in value: - errors[field_name][sub_field_name].extend(validation_error.detail) - return errors - @property def errors(self): if not hasattr(self, '_errors'): msg = 'You must call `.is_valid()` before accessing `.errors`.' raise AssertionError(msg) - - if isinstance(self._errors, list): - return map(self._transform_to_legacy_errors, self._errors) - else: - return self._transform_to_legacy_errors(self._errors) + return self._errors @property def validated_data(self): @@ -460,7 +423,7 @@ def to_internal_value(self, data): message = self.error_messages['invalid'].format( datatype=type(data).__name__ ) - error = ValidationError(message, code='invalid') + error = ValidationErrorMessage(message, code='invalid') raise ValidationError({ api_settings.NON_FIELD_ERRORS_KEY: [error] }) @@ -477,7 +440,7 @@ def to_internal_value(self, data): if validate_method is not None: validated_value = validate_method(validated_value) except ValidationError as exc: - errors[field.field_name] = exc + errors[field.field_name] = exc.detail except DjangoValidationError as exc: errors[field.field_name] = ( exceptions.build_error_from_django_validation_error(exc) @@ -616,7 +579,7 @@ def to_internal_value(self, data): message = self.error_messages['not_a_list'].format( input_type=type(data).__name__ ) - error = ValidationError( + error = ValidationErrorMessage( message, code='not_a_list' ) @@ -625,9 +588,11 @@ def to_internal_value(self, data): }) if not self.allow_empty and len(data) == 0: - message = self.error_messages['empty'] + message = ValidationErrorMessage( + self.error_messages['empty'], + code='empty_not_allowed') raise ValidationError({ - api_settings.NON_FIELD_ERRORS_KEY: [ValidationError(message, code='empty_not_allowed')] + api_settings.NON_FIELD_ERRORS_KEY: [message] }) ret = [] diff --git a/rest_framework/validators.py b/rest_framework/validators.py index 27148cedc9b..86a8d75fcb7 100644 --- a/rest_framework/validators.py +++ b/rest_framework/validators.py @@ -11,7 +11,7 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework.compat import unicode_to_repr -from rest_framework.exceptions import ValidationError +from rest_framework.exceptions import ValidationError, ValidationErrorMessage from rest_framework.utils.representation import smart_repr @@ -60,7 +60,8 @@ def __call__(self, value): queryset = self.filter_queryset(value, queryset) queryset = self.exclude_current_instance(queryset) if queryset.exists(): - raise ValidationError(self.message, code='unique') + raise ValidationError(ValidationErrorMessage(self.message, + code='unique')) def __repr__(self): return unicode_to_repr('<%s(queryset=%s)>' % ( @@ -101,9 +102,10 @@ def enforce_required_fields(self, attrs): return missing = { - field_name: ValidationError( + field_name: ValidationErrorMessage( self.missing_message, code='required') + for field_name in self.fields if field_name not in attrs } @@ -149,8 +151,11 @@ def __call__(self, attrs): ] if None not in checked_values and queryset.exists(): field_names = ', '.join(self.fields) - raise ValidationError(self.message.format(field_names=field_names), - code='unique') + raise ValidationError( + ValidationErrorMessage( + self.message.format(field_names=field_names), + code='unique') + ) def __repr__(self): return unicode_to_repr('<%s(queryset=%s, fields=%s)>' % ( @@ -188,7 +193,7 @@ def enforce_required_fields(self, attrs): 'required' state on the fields they are applied to. """ missing = { - field_name: ValidationError( + field_name: ValidationErrorMessage( self.missing_message, code='required') for field_name in [self.field, self.date_field] @@ -216,8 +221,9 @@ def __call__(self, attrs): queryset = self.exclude_current_instance(attrs, queryset) if queryset.exists(): message = self.message.format(date_field=self.date_field) - error = ValidationError(message, code='unique') - raise ValidationError({self.field: error}) + raise ValidationError({ + self.field: ValidationErrorMessage(message, code='unique'), + }) def __repr__(self): return unicode_to_repr('<%s(queryset=%s, field=%s, date_field=%s)>' % ( diff --git a/rest_framework/views.py b/rest_framework/views.py index 915bacbc6d8..56e3c4e4994 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -70,7 +70,7 @@ def exception_handler(exc, context): headers['Retry-After'] = '%d' % exc.wait if isinstance(exc.detail, (list, dict)): - data = exc.detail.serializer.errors + data = exc.detail else: data = {'detail': exc.detail} diff --git a/tests/test_validation_error.py b/tests/test_validation_error.py new file mode 100644 index 00000000000..a9d244176d1 --- /dev/null +++ b/tests/test_validation_error.py @@ -0,0 +1,74 @@ +from django.test import TestCase + +from rest_framework import serializers, status +from rest_framework.decorators import api_view +from rest_framework.response import Response +from rest_framework.settings import api_settings +from rest_framework.test import APIRequestFactory +from rest_framework.views import APIView + +factory = APIRequestFactory() + + +class ExampleSerializer(serializers.Serializer): + char = serializers.CharField() + integer = serializers.IntegerField() + + +class ErrorView(APIView): + def get(self, request, *args, **kwargs): + ExampleSerializer(data={}).is_valid(raise_exception=True) + + +@api_view(['GET']) +def error_view(request): + ExampleSerializer(data={}).is_valid(raise_exception=True) + + +class TestValidationErrorWithCode(TestCase): + def setUp(self): + self.DEFAULT_HANDLER = api_settings.EXCEPTION_HANDLER + + def exception_handler(exc, request): + return_errors = {} + for field_name, errors in exc.detail.items(): + return_errors[field_name] = [] + for error in errors: + return_errors[field_name].append({ + 'code': error.code, + 'message': error + }) + + return Response(return_errors, status=status.HTTP_400_BAD_REQUEST) + + api_settings.EXCEPTION_HANDLER = exception_handler + + self.expected_response_data = { + 'char': [{ + 'message': 'This field is required.', + 'code': 'required', + }], + 'integer': [{ + 'message': 'This field is required.', + 'code': 'required' + }], + } + + def tearDown(self): + api_settings.EXCEPTION_HANDLER = self.DEFAULT_HANDLER + + def test_class_based_view_exception_handler(self): + view = ErrorView.as_view() + + request = factory.get('/', content_type='application/json') + response = view(request) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.data, self.expected_response_data) + + def test_function_based_view_exception_handler(self): + view = error_view + + request = factory.get('/', content_type='application/json') + response = view(request) + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + self.assertEqual(response.data, self.expected_response_data) From c62d19f18cf45796c6e3035ca331b9bb7a45e123 Mon Sep 17 00:00:00 2001 From: Jonathan Liuti Date: Thu, 17 Dec 2015 15:44:17 +0100 Subject: [PATCH 131/131] Modify ValidationError api `ValidationErrorMessage` is now abstracted in `ValidationError`'s constructor --- rest_framework/authtoken/serializers.py | 20 +++++++------------- rest_framework/exceptions.py | 6 +++++- rest_framework/fields.py | 5 ++--- rest_framework/serializers.py | 1 + rest_framework/validators.py | 9 +++------ 5 files changed, 18 insertions(+), 23 deletions(-) diff --git a/rest_framework/authtoken/serializers.py b/rest_framework/authtoken/serializers.py index a45ca1ca787..abaac0c223e 100644 --- a/rest_framework/authtoken/serializers.py +++ b/rest_framework/authtoken/serializers.py @@ -2,7 +2,6 @@ from django.utils.translation import ugettext_lazy as _ from rest_framework import serializers -from rest_framework.exceptions import ValidationErrorMessage class AuthTokenSerializer(serializers.Serializer): @@ -20,24 +19,19 @@ def validate(self, attrs): if not user.is_active: msg = _('User account is disabled.') raise serializers.ValidationError( - ValidationErrorMessage( - msg, - code='authorization') - ) + msg, + code='authorization') else: msg = _('Unable to log in with provided credentials.') raise serializers.ValidationError( - ValidationErrorMessage( - msg, - code='authorization') - ) + msg, + code='authorization') + else: msg = _('Must include "username" and "password".') raise serializers.ValidationError( - ValidationErrorMessage( - msg, - code='authorization') - ) + msg, + code='authorization') attrs['user'] = user return attrs diff --git a/rest_framework/exceptions.py b/rest_framework/exceptions.py index 97274c8c0d9..6e30834e6a1 100644 --- a/rest_framework/exceptions.py +++ b/rest_framework/exceptions.py @@ -87,7 +87,11 @@ def __new__(cls, string, code=None, *args, **kwargs): class ValidationError(APIException): status_code = status.HTTP_400_BAD_REQUEST - def __init__(self, detail): + def __init__(self, detail, code=None): + # If code is there, this means we are dealing with a message. + if code and not isinstance(detail, ValidationErrorMessage): + detail = ValidationErrorMessage(detail, code=code) + # For validation errors the 'detail' key is always required. # The details should always be coerced to a list if not already. if not isinstance(detail, dict) and not isinstance(detail, list): diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 83cc47fadd4..5e22494df65 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -32,8 +32,7 @@ from rest_framework import ISO_8601 from rest_framework.compat import unicode_repr, unicode_to_repr from rest_framework.exceptions import ( - ValidationError, ValidationErrorMessage, - build_error_from_django_validation_error + ValidationError, build_error_from_django_validation_error ) from rest_framework.settings import api_settings from rest_framework.utils import html, humanize_datetime, representation @@ -548,7 +547,7 @@ def fail(self, key, **kwargs): msg = MISSING_ERROR_MESSAGE.format(class_name=class_name, key=key) raise AssertionError(msg) message_string = msg.format(**kwargs) - raise ValidationError(ValidationErrorMessage(message_string, code=key)) + raise ValidationError(message_string, code=key) @cached_property def root(self): diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index e49fa65e8e4..75f361c0fe7 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -24,6 +24,7 @@ from rest_framework import exceptions from rest_framework.compat import JSONField as ModelJSONField from rest_framework.compat import postgres_fields, unicode_to_repr +from rest_framework.exceptions import ValidationErrorMessage from rest_framework.utils import model_meta from rest_framework.utils.field_mapping import ( ClassLookupDict, get_field_kwargs, get_nested_relation_kwargs, diff --git a/rest_framework/validators.py b/rest_framework/validators.py index 86a8d75fcb7..11e986232f0 100644 --- a/rest_framework/validators.py +++ b/rest_framework/validators.py @@ -60,8 +60,7 @@ def __call__(self, value): queryset = self.filter_queryset(value, queryset) queryset = self.exclude_current_instance(queryset) if queryset.exists(): - raise ValidationError(ValidationErrorMessage(self.message, - code='unique')) + raise ValidationError(self.message, code='unique') def __repr__(self): return unicode_to_repr('<%s(queryset=%s)>' % ( @@ -152,10 +151,8 @@ def __call__(self, attrs): if None not in checked_values and queryset.exists(): field_names = ', '.join(self.fields) raise ValidationError( - ValidationErrorMessage( - self.message.format(field_names=field_names), - code='unique') - ) + self.message.format(field_names=field_names), + code='unique') def __repr__(self): return unicode_to_repr('<%s(queryset=%s, fields=%s)>' % (