From 87b2c52f3d32d32187cf318a39078acf58041ab8 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Wed, 14 Nov 2018 18:02:04 +0100
Subject: Reorganize treatment actions - add a direct to treatements
---
archaeological_finds/forms_treatments.py | 58 +++++++++++-----------
archaeological_finds/ishtar_menu.py | 46 ++++++++---------
.../migrations/0039_auto_20181113_1600.py | 37 ++++++++++++++
archaeological_finds/models_treatments.py | 4 ++
.../templates/ishtar/sheet_treatment.html | 2 +-
archaeological_finds/views.py | 11 ++--
archaeological_finds/wizards.py | 23 +++++++++
archaeological_warehouse/forms.py | 5 +-
archaeological_warehouse/wizards.py | 9 ++++
9 files changed, 136 insertions(+), 59 deletions(-)
create mode 100644 archaeological_finds/migrations/0039_auto_20181113_1600.py
diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py
index 7ada0f4bc..248b1ef7d 100644
--- a/archaeological_finds/forms_treatments.py
+++ b/archaeological_finds/forms_treatments.py
@@ -94,20 +94,21 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
file_upload = True
need_user_for_initialization = True
- label = forms.CharField(label=_(u"Label"),
- max_length=200, required=False)
- other_reference = forms.CharField(
- label=_(u"Other ref."), max_length=200, required=False)
- year = forms.IntegerField(label=_("Year"),
- initial=lambda: datetime.datetime.now().year,
- validators=[validators.MinValueValidator(1000),
- validators.MaxValueValidator(2100)])
- treatment_type = forms.MultipleChoiceField(
+ treatment_type = widgets.Select2MultipleField(
label=_(u"Treatment type"), choices=[],
widget=widgets.CheckboxSelectMultiple)
treatment_state = forms.ChoiceField(label=_(u"State"),
choices=[], required=False)
- target_is_basket = forms.NullBooleanField(label=_(u"Target"))
+ year = forms.IntegerField(label=_("Year"),
+ initial=lambda: datetime.datetime.now().year,
+ validators=[validators.MinValueValidator(1000),
+ validators.MaxValueValidator(2100)])
+ location = forms.IntegerField(
+ label=_(u"Location"),
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-warehouse'), associated_model=Warehouse,
+ new=True),
+ validators=[valid_id(Warehouse)])
person = forms.IntegerField(
label=_(u"Responsible"),
widget=widgets.JQueryAutoComplete(
@@ -120,30 +121,29 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
reverse_lazy('autocomplete-organization'),
associated_model=Organization, new=True),
validators=[valid_id(Organization)], required=False)
- location = forms.IntegerField(
- label=_(u"Location"),
- widget=widgets.JQueryAutoComplete(
- reverse_lazy('autocomplete-warehouse'), associated_model=Warehouse,
- new=True),
- validators=[valid_id(Warehouse)])
+ label = forms.CharField(label=_(u"Label"),
+ max_length=200, required=False)
+ other_reference = forms.CharField(
+ label=_(u"Other ref."), max_length=200, required=False)
+ # target_is_basket = forms.NullBooleanField(label=_(u"Target"))
+ # external_id = forms.CharField(
+ # label=_(u"External ref."), max_length=200, required=False)
+ start_date = forms.DateField(label=_(u"Start date"), required=False,
+ widget=DatePicker, initial=datetime.date.today)
+ end_date = forms.DateField(label=_(u"Closing date"), required=False,
+ widget=DatePicker)
container = forms.IntegerField(
label=_(u"Container (relevant for packaging)"),
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-container'),
associated_model=Container, new=True),
validators=[valid_id(Container)], required=False)
- external_id = forms.CharField(
- label=_(u"External ref."), max_length=200, required=False)
goal = forms.CharField(label=_(u"Goal"),
widget=forms.Textarea, required=False)
description = forms.CharField(label=_(u"Description"),
widget=forms.Textarea, required=False)
comment = forms.CharField(label=_(u"Comment"),
widget=forms.Textarea, required=False)
- start_date = forms.DateField(label=_(u"Start date"), required=False,
- widget=DatePicker)
- end_date = forms.DateField(label=_(u"Closing date"), required=False,
- widget=DatePicker)
estimated_cost = forms.FloatField(label=_(u"Estimated cost ({currency})"),
required=False)
quoted_cost = forms.FloatField(label=_(u"Quoted cost ({currency})"),
@@ -155,9 +155,10 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
TYPES = [
FieldType('treatment_state', models.TreatmentState),
- FieldType('treatment_type', models.TreatmentType, is_multiple=True,
- extra_args={'dct': {'upstream_is_many': False,
- 'downstream_is_many': False}})
+ FieldType(
+ 'treatment_type', models.TreatmentType, is_multiple=True,
+ extra_args={'dct': {'upstream_is_many': False,
+ 'downstream_is_many': False}})
]
def __init__(self, *args, **kwargs):
@@ -176,8 +177,8 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
self.fields['person'].initial = person.pk
if person.attached_to:
self.fields['organization'].initial = person.attached_to.pk
- self.fields['target_is_basket'].widget.choices = \
- ((False, _(u"Single find")), (True, _(u"Basket")))
+ # self.fields['target_is_basket'].widget.choices = \
+ # ((False, _(u"Single find")), (True, _(u"Basket")))
# TODO
"""
self.fields['basket'].required = False
@@ -198,6 +199,7 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
if not packaging:
logger.warning("No 'packaging' treatment type defined")
return
+
if data.get('container', None) \
and str(packaging.pk) not in data.get('treatment_type', []):
raise forms.ValidationError(
@@ -240,7 +242,7 @@ class TreatmentModifyForm(BaseTreatmentForm):
fields[key] = value
if key == 'year':
fields['index'] = idx
- fields.pop('target_is_basket')
+ # fields.pop('target_is_basket')
self.fields = fields
def clean(self, *args, **kwargs):
diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py
index afd624b74..19d300fbc 100644
--- a/archaeological_finds/ishtar_menu.py
+++ b/archaeological_finds/ishtar_menu.py
@@ -148,31 +148,27 @@ MENU_SECTIONS = [
profile_restriction='warehouse',
css='menu-warehouse',
childs=[
- SectionItem(
- 'find_treatments', _(u"Simple treatments"),
- childs=[
- MenuItem('treatment_search',
- _(u"Search"),
- model=models.Treatment,
- access_controls=['view_treatment',
- 'view_own_treatment']),
- MenuItem('treatment_creation',
- _(u"Creation"),
- model=models.Treatment,
- access_controls=['change_treatment',
- 'change_own_treatment']),
- MenuItem('treatment_modification',
- _(u"Modification"),
- model=models.Treatment,
- access_controls=['change_treatment',
- 'change_own_treatment']),
- MenuItem('treatment_deletion',
- _(u"Deletion"),
- model=models.Treatment,
- access_controls=['change_treatment',
- 'change_own_treatment']),
- ]),
- SectionItem(
+ MenuItem('treatment_search',
+ _(u"Search"),
+ model=models.Treatment,
+ access_controls=['view_treatment',
+ 'view_own_treatment']),
+ MenuItem('treatment_creation',
+ _(u"Simple treatment - creation"),
+ model=models.Treatment,
+ access_controls=['change_treatment',
+ 'change_own_treatment']),
+ MenuItem('treatment_modification',
+ _(u"Modification"),
+ model=models.Treatment,
+ access_controls=['change_treatment',
+ 'change_own_treatment']),
+ MenuItem('treatment_deletion',
+ _(u"Deletion"),
+ model=models.Treatment,
+ access_controls=['change_treatment',
+ 'change_own_treatment']),
+ SectionItem(
'admin_act_treatments', _(u"Administrative act"),
childs=[
MenuItem('treatment_admacttreatment_search',
diff --git a/archaeological_finds/migrations/0039_auto_20181113_1600.py b/archaeological_finds/migrations/0039_auto_20181113_1600.py
new file mode 100644
index 000000000..08877d66b
--- /dev/null
+++ b/archaeological_finds/migrations/0039_auto_20181113_1600.py
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2018-11-13 16:00
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+import virtualtime
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('archaeological_finds', '0038_auto_20181112_1625'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='historicaltreatment',
+ name='creation_date',
+ field=models.DateTimeField(default=virtualtime.virtual_datetime.now),
+ ),
+ migrations.AddField(
+ model_name='historicaltreatment',
+ name='find',
+ field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.Find'),
+ ),
+ migrations.AddField(
+ model_name='treatment',
+ name='creation_date',
+ field=models.DateTimeField(default=virtualtime.virtual_datetime.now),
+ ),
+ migrations.AddField(
+ model_name='treatment',
+ name='find',
+ field=models.ForeignKey(blank=True, help_text='Related find for non-destructive treatment', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='treatments', to='archaeological_finds.Find', verbose_name='Find'),
+ ),
+ ]
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index 6a57a77f5..0bf3cad38 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -147,6 +147,10 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
goal = models.TextField(_(u"Goal"), blank=True, null=True)
start_date = models.DateField(_(u"Start date"), blank=True, null=True)
end_date = models.DateField(_(u"Closing date"), blank=True, null=True)
+ creation_date = models.DateTimeField(default=datetime.datetime.now)
+ find = models.ForeignKey(
+ "Find", verbose_name=_(u"Find"), related_name='treatments', blank=True,
+ null=True, help_text=_(u"Related find for non-destructive treatment"))
container = models.ForeignKey(Container, verbose_name=_(u"Container"),
blank=True, null=True)
estimated_cost = models.FloatField(_(u"Estimated cost"),
diff --git a/archaeological_finds/templates/ishtar/sheet_treatment.html b/archaeological_finds/templates/ishtar/sheet_treatment.html
index 1a3bb931f..e9c9c0758 100644
--- a/archaeological_finds/templates/ishtar/sheet_treatment.html
+++ b/archaeological_finds/templates/ishtar/sheet_treatment.html
@@ -1,7 +1,7 @@
{% extends "ishtar/sheet.html" %}
{% load i18n window_field from_dict link_to_window window_tables window_ope_tables window_header humanize %}
-{% block head_title %}{% trans "Treatment" %} - {{ item.label|default:"" }}{% endblock %}
+{% block head_title %}{% trans "Treatment" %} - {{ item|default:"" }}{% endblock %}
{% block toolbar %}
{% window_nav item window_id 'show-treatment' 'treatment_modify' 'show-historized-treatment' 'revert-treatment' previous next 1 %}
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index c340639c5..c4dbe0d3d 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -405,10 +405,10 @@ get_downstreamtreatment = get_item(
'downtreatment')
treatment_wizard_steps = [
+ ('selecfind-treatment_creation', UpstreamFindFormSelection),
('file-treatment_creation', TreatmentFormFileChoice),
('basetreatment-treatment_creation', BaseTreatmentForm),
- ('selecfind-treatment_creation', UpstreamFindFormSelection),
- ('selecbasket-treatment_creation', SelectFindBasketForm),
+ # ('selecbasket-treatment_creation', SelectFindBasketForm),
# ('resultfind-treatment_creation', ResultFindForm),
# ('resultfinds-treatment_creation', ResultFindFormSet),
('final-treatment_creation', FinalForm)
@@ -420,8 +420,7 @@ treatment_search_wizard = TreatmentSearch.as_view([
label=_(u"Treatment search"),
url_name='treatment_search',)
-treatment_creation_wizard = TreatmentWizard.as_view(
- treatment_wizard_steps,
+"""
condition_dict={
'selecfind-treatment_creation':
check_value('basetreatment-treatment_creation',
@@ -438,6 +437,10 @@ treatment_creation_wizard = TreatmentWizard.as_view(
# 'treatment_type', models.TreatmentType,
# 'upstream_is_many')
},
+"""
+
+treatment_creation_wizard = TreatmentWizard.as_view(
+ treatment_wizard_steps,
label=_(u"New treatment"),
url_name='treatment_creation',)
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index 0e0fe80e1..e90fa745c 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -119,6 +119,29 @@ class TreatmentWizard(Wizard):
kwargs['user'] = self.request.user
return kwargs
+ def get_current_find(self):
+ step = self.steps.current
+ if not step:
+ return
+ find_form_key = 'selecfind-treatment_creation'
+ find_id = self.session_get_value(find_form_key, "resulting_pk")
+ try:
+ return models.Find.objects.get(pk=int(find_id))
+ except(TypeError, ValueError, ObjectDoesNotExist):
+ pass
+
+ def get_form_initial(self, step, data=None):
+ initial = super(TreatmentWizard, self).get_form_initial(step)
+ if step != 'basetreatment-treatment_creation':
+ return initial
+ find = self.get_current_find()
+ if not find or not find.container:
+ return initial
+ if not initial:
+ initial = {}
+ initial['location'] = find.container.location.pk
+ return initial
+
def get_extra_model(self, dct, form_list):
"""
Get items concerned by the treatment
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index 954c01918..2dc963ca0 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -18,6 +18,7 @@
# See the file COPYING for details.
from collections import OrderedDict
+import datetime
from django import forms
from django.conf import settings
@@ -294,7 +295,9 @@ class BasePackagingForm(SelectFindBasketForm):
associated_model=Person, new=True),
validators=[valid_id(Person)])
start_date = forms.DateField(
- label=_(u"Date"), required=False, widget=DatePicker)
+ label=_(u"Date"), required=False, widget=DatePicker,
+ initial=datetime.date.today
+ )
class FindPackagingFormSelection(FindMultipleFormSelection):
diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py
index 41c5c5945..8ee2c2972 100644
--- a/archaeological_warehouse/wizards.py
+++ b/archaeological_warehouse/wizards.py
@@ -38,6 +38,15 @@ class ContainerSearch(SearchWizard):
class PackagingWizard(TreatmentWizard):
basket_step = 'base-packaging'
+ def get_form_initial(self, step, data=None):
+ initial = super(PackagingWizard, self).get_form_initial(step)
+ user = self.request.user
+ if step != 'base-packaging' or not getattr(user, 'ishtaruser', None) \
+ or not user.ishtaruser.person:
+ return initial
+ initial['person'] = user.ishtaruser.person.pk
+ return initial
+
def save_model(self, dct, m2m, whole_associated_models, form_list,
return_object):
dct = self.get_extra_model(dct, form_list)
--
cgit v1.2.3
From 458b534bb4dd9918cd1236ac505730102b7951bd Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Thu, 15 Nov 2018 17:39:37 +0100
Subject: Treatments: manage treatment without find duplication
---
.../migrations/0039_auto_20181113_1600.py | 37 -----------------
.../migrations/0039_auto_20181115_1649.py | 36 +++++++++++++++++
archaeological_finds/models_finds.py | 1 +
archaeological_finds/models_treatments.py | 46 ++++++++++++++--------
.../templates/ishtar/sheet_find.html | 39 ++++++++++++++++--
.../templates/ishtar/sheet_treatment.html | 5 +++
6 files changed, 108 insertions(+), 56 deletions(-)
delete mode 100644 archaeological_finds/migrations/0039_auto_20181113_1600.py
create mode 100644 archaeological_finds/migrations/0039_auto_20181115_1649.py
diff --git a/archaeological_finds/migrations/0039_auto_20181113_1600.py b/archaeological_finds/migrations/0039_auto_20181113_1600.py
deleted file mode 100644
index 08877d66b..000000000
--- a/archaeological_finds/migrations/0039_auto_20181113_1600.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.11.10 on 2018-11-13 16:00
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-import virtualtime
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('archaeological_finds', '0038_auto_20181112_1625'),
- ]
-
- operations = [
- migrations.AddField(
- model_name='historicaltreatment',
- name='creation_date',
- field=models.DateTimeField(default=virtualtime.virtual_datetime.now),
- ),
- migrations.AddField(
- model_name='historicaltreatment',
- name='find',
- field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.Find'),
- ),
- migrations.AddField(
- model_name='treatment',
- name='creation_date',
- field=models.DateTimeField(default=virtualtime.virtual_datetime.now),
- ),
- migrations.AddField(
- model_name='treatment',
- name='find',
- field=models.ForeignKey(blank=True, help_text='Related find for non-destructive treatment', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='treatments', to='archaeological_finds.Find', verbose_name='Find'),
- ),
- ]
diff --git a/archaeological_finds/migrations/0039_auto_20181115_1649.py b/archaeological_finds/migrations/0039_auto_20181115_1649.py
new file mode 100644
index 000000000..3752c173c
--- /dev/null
+++ b/archaeological_finds/migrations/0039_auto_20181115_1649.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2018-11-15 16:49
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import virtualtime
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('archaeological_finds', '0038_auto_20181112_1625'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='historicaltreatment',
+ name='creation_date',
+ field=models.DateTimeField(default=virtualtime.virtual_datetime.now),
+ ),
+ migrations.AddField(
+ model_name='treatment',
+ name='creation_date',
+ field=models.DateTimeField(default=virtualtime.virtual_datetime.now),
+ ),
+ migrations.AddField(
+ model_name='treatment',
+ name='finds',
+ field=models.ManyToManyField(blank=True, help_text='Related finds for non-destructive treatment', related_name='treatments', to='archaeological_finds.Find', verbose_name='Finds'),
+ ),
+ migrations.AddField(
+ model_name='treatmenttype',
+ name='destructive',
+ field=models.BooleanField(default=False, verbose_name='Destructive'),
+ ),
+ ]
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index e53ad6e6d..3483113d7 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -91,6 +91,7 @@ post_delete.connect(post_save_cache, sender=ConservatoryState)
class TreatmentType(HierarchicalType):
order = models.IntegerField(_(u"Order"), default=10)
virtual = models.BooleanField(_(u"Virtual"))
+ destructive = models.BooleanField(_(u"Destructive"), default=False)
upstream_is_many = models.BooleanField(
_(u"Upstream is many"), default=False,
help_text=_(
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index 0bf3cad38..61d4ce5be 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -148,9 +148,9 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
start_date = models.DateField(_(u"Start date"), blank=True, null=True)
end_date = models.DateField(_(u"Closing date"), blank=True, null=True)
creation_date = models.DateTimeField(default=datetime.datetime.now)
- find = models.ForeignKey(
- "Find", verbose_name=_(u"Find"), related_name='treatments', blank=True,
- null=True, help_text=_(u"Related find for non-destructive treatment"))
+ finds = models.ManyToManyField(
+ "Find", verbose_name=_(u"Finds"), related_name='treatments', blank=True,
+ help_text=_(u"Related finds for non-destructive treatment"))
container = models.ForeignKey(Container, verbose_name=_(u"Container"),
blank=True, null=True)
estimated_cost = models.FloatField(_(u"Estimated cost"),
@@ -181,6 +181,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
("change_own_treatment", u"Can change own Treatment"),
("delete_own_treatment", u"Can delete own Treatment"),
)
+ ordering = ("start_date", )
def __unicode__(self):
if self.cached_label:
@@ -193,6 +194,10 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
def short_class_name(self):
return _(u"TREATMENT")
+ @property
+ def limited_finds(self):
+ return self.finds.all()[:15]
+
def natural_key(self):
return (self.external_id, )
@@ -300,21 +305,30 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
updated = []
if hasattr(items, "items"):
items = items.items.all()
+
+ tps = list(self.treatment_types.all())
+ has_destructive_tp = bool([tp for tp in tps if tp.destructive])
for item in items:
- new = item.duplicate(user)
- item.downstream_treatment = self
- item.save()
- new.upstream_treatment = self
- for k in extra_args_for_new:
- setattr(new, k, extra_args_for_new[k])
- new.save()
- updated.append(new.pk)
- # update baskets
- for basket in \
- FindBasket.objects.filter(items__pk=item.pk).all():
- basket.items.remove(item)
- basket.items.add(new)
+ if not has_destructive_tp:
+ self.finds.add(item)
+ else:
+ new = item.duplicate(user)
+ item.downstream_treatment = self
+ item.save()
+ new.upstream_treatment = self
+ for k in extra_args_for_new:
+ setattr(new, k, extra_args_for_new[k])
+ new.save()
+ updated.append(new.pk)
+ # update baskets
+ for basket in \
+ FindBasket.objects.filter(items__pk=item.pk).all():
+ basket.items.remove(item)
+ basket.items.add(new)
+
# manage containers
+ if not self.container:
+ return
for find in Find.objects.filter(upstream_treatment=self).all():
if find.container != self.container:
find.container = self.container
diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html
index 021ea5652..a3ad9fca5 100644
--- a/archaeological_finds/templates/ishtar/sheet_find.html
+++ b/archaeological_finds/templates/ishtar/sheet_find.html
@@ -167,8 +167,41 @@
{% endif %}
-{% if item.upstream_treatment or item.downstream_treatment %}
+{% if item.upstream_treatment or item.downstream_treatment or item.treatments.count %}
{% trans "Treatments"%}
+
+
+
+ {% trans "Year - index" %}
+ {% trans "Label" %}
+ {% trans "Type" %}
+ {% trans "State" %}
+ {% trans "Related finds (max. 15 displayed)" %}
+ {% trans "Doer" %}
+ {% trans "Container" %}
+ {% trans "Start date" %}
+ {% trans "End date" %}
+
+ {% for treatment in item.treatments.all %}
+
+
+
+
+
+
+ {{ treatment.year }} - {{treatment.index}}
+ {{ treatment.label|default_if_none:"-" }}
+ {{ treatment.treatment_types_lbl }}
+ {{ treatment.treatment_state|default_if_none:"-" }}
+ {% for it in treatment.limited_finds %}{{it}} {{it|link_to_window}} {% endfor %}
+ {{ treatment.person|default_if_none:"-" }}
+ {{ treatment.container|default_if_none:"-" }}
+ {{ treatment.start_date|default_if_none:"-" }}
+ {{ treatment.end_date|default_if_none:"-" }}
+
+ {% endfor %}
+
{% if item.upstream_treatment %}
{% trans "Upstream treatment" %}
@@ -197,7 +230,7 @@
{{ treatment.label|default_if_none:"-" }}
{{ treatment.treatment_types_lbl }}
{{ treatment.treatment_state|default_if_none:"-" }}
- {% for item in items %}{{item}} {{ item|link_to_window}} {% endfor %}
+ {% for it in items %}{{it}} {{it|link_to_window}} {% endfor %}
{{ treatment.person|default_if_none:"-" }}
{{ treatment.container|default_if_none:"-" }}
{{ treatment.start_date|default_if_none:"-" }}
@@ -235,7 +268,7 @@
{{ treatment.label|default_if_none:"-" }}
{{ treatment.treatment_types_lbl }}
{{ treatment.treatment_state|default_if_none:"-" }}
- {% for item in items %}{{item}} {{ item|link_to_window}} {% endfor %}
+ {% for it in items %}{{it}} {{ it|link_to_window}} {% endfor %}
{{ treatment.person|default_if_none:"" }}
{{ treatment.container|default_if_none:"-" }}
{{ treatment.start_date|default_if_none:"" }}
diff --git a/archaeological_finds/templates/ishtar/sheet_treatment.html b/archaeological_finds/templates/ishtar/sheet_treatment.html
index e9c9c0758..94569b5f6 100644
--- a/archaeological_finds/templates/ishtar/sheet_treatment.html
+++ b/archaeological_finds/templates/ishtar/sheet_treatment.html
@@ -53,6 +53,11 @@
{% include "ishtar/blocks/sheet_json.html" %}
+{% trans "Related finds" as finds %}
+{% if item.finds.count %}
+{% dynamic_table_document finds 'finds_for_treatment' 'treatments' item.pk 'TABLE_COLS_FOR_OPE' output %}
+{% endif %}
+
{% trans "Upstream finds" as finds %}
{% if item.upstream.count %}
{% dynamic_table_document finds 'finds_for_treatment' 'downstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %}
--
cgit v1.2.3
From 23b96d0b21f17a941de45f4d54688b4accfc53a0 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Fri, 16 Nov 2018 12:12:18 +0100
Subject: Datatable: JS to disable submit button when multiple or none is
selected
---
archaeological_finds/forms.py | 2 +-
ishtar_common/static/js/ishtar.js | 12 ++++++++++++
ishtar_common/templates/base.html | 1 +
ishtar_common/templates/blocks/DataTables.html | 16 ++++++++++++----
ishtar_common/widgets.py | 1 -
5 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 5ca8618d5..663ab3663 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -725,7 +725,7 @@ class FindFormSelection(CustomFormSearch):
label="", required=False,
widget=widgets.DataTable(
reverse_lazy('get-find'),
- FindSelect, models.Find,
+ FindSelect, models.Find,
source_full=reverse_lazy('get-find-full')),
validators=[valid_id(models.Find)])
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index ff8e43b54..e4e80d681 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -70,6 +70,7 @@ var datatables_static_default = {
var activate_all_search_msg = "Searches in the shortcut menu deals with all items.";
var activate_own_search_msg = "Searches in the shortcut menu deals with only your items.";
var added_message = " items added.";
+var select_only_one_msg = "Select only one item.";
var search_pinned_msg = "";
var advanced_menu = false;
@@ -956,3 +957,14 @@ var qa_action_register = function(url) {
);
});
};
+
+var dt_single_enable_disable_submit_button = function(e, dt, type, indexes){
+ var rows = dt.rows( { selected: true } ).count();
+ if (rows == 1) {
+ $("#validation-bar #submit_form").prop('title', "");
+ $("#validation-bar #submit_form").prop('disabled', false);
+ } else {
+ $("#validation-bar #submit_form").prop('title', select_only_one_msg);
+ $("#validation-bar #submit_form").prop('disabled', true);
+ }
+};
diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html
index 652df14b3..add4f1d6c 100644
--- a/ishtar_common/templates/base.html
+++ b/ishtar_common/templates/base.html
@@ -44,6 +44,7 @@
var activate_own_search_msg = "{% trans 'Searches in the shortcut menu deal with only your items.' %}";
var search_pinned_msg = "{% trans 'Search pinned' %}";
var added_message = "{% trans " items added." %}";
+ var select_only_one_msg = {% trans "Select only one item." %};
var YES = "{% trans 'yes' %}";
var NO = "{% trans 'no' %}";
var autorefresh_message_start = "{% trans 'Autorefresh start. The form is disabled.' %}";
diff --git a/ishtar_common/templates/blocks/DataTables.html b/ishtar_common/templates/blocks/DataTables.html
index b5f669963..e1966787b 100644
--- a/ishtar_common/templates/blocks/DataTables.html
+++ b/ishtar_common/templates/blocks/DataTables.html
@@ -152,7 +152,7 @@ jQuery(document).ready(function(){
}
},
"select": {
- "style": {% if multiple_select %}'multi'{% else %}'single'{% endif %}
+ "style": {% if multiple_select or quick_actions %}'multi'{% else %}'single'{% endif %}
},
{% if multiple_select or quick_actions %}"buttons": [
{% for url, title, icon, target in quick_actions %}
@@ -170,7 +170,7 @@ jQuery(document).ready(function(){
}
},
{% if not forloop.last %},{% endif %}
- {% endfor %}{% if multiple_select %}{% if quick_actions%},{% endif %}
+ {% endfor %}{% if quick_actions%},{% endif %}
{
extend: 'selectAll',
text: ' ',
@@ -181,7 +181,6 @@ jQuery(document).ready(function(){
text: ' ',
titleAttr: "{% trans 'Deselect' %}"
}
- {% endif %}
],
"dom": 'lBtip',
{% else %}
@@ -192,7 +191,11 @@ jQuery(document).ready(function(){
{ "data": "link", "orderable": false },{% for col in extra_cols %}
{ "data": "{{col}}", "defaultContent": "-",
"render": $.fn.dataTable.render.ellipsis( 70, true ) }{% if not forloop.last %},{% endif %}{% endfor %}
- ]
+ ],
+ "initComplete": function(settings, json) {
+ var api = new $.fn.dataTable.Api(settings);
+ dt_single_enable_disable_submit_button(null, api);
+ }
};
if (!debug) $.fn.dataTable.ext.errMode = 'none';
@@ -201,6 +204,11 @@ jQuery(document).ready(function(){
if (datatables_i18n) datatable_options['language'] = datatables_i18n;
datatable_{{sname}} = jQuery("#grid_{{name}}").DataTable(datatable_options);
+ {% if not multiple_select %}
+ datatable_{{sname}}.on('select', dt_single_enable_disable_submit_button);
+ datatable_{{sname}}.on('deselect', dt_single_enable_disable_submit_button);
+ {% endif %}
+
{% if multiple %}
jQuery("#add_button_{{name}}").click(function (){
var mygrid = jQuery("#grid_{{name}}");
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index 7d9e06926..3fd48fa0d 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -1055,7 +1055,6 @@ class DataTable(Select2Media, forms.RadioSelect):
if hasattr(self.associated_model, "QUICK_ACTIONS"):
dct['quick_actions'] = \
self.associated_model.get_quick_actions(user=self.user)
- self.multiple_select = True
source = unicode(self.source)
dct.update({'name': name,
'col_names': col_names,
--
cgit v1.2.3
From 948d624874bee030a03d63c114a5040113ef694c Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Fri, 16 Nov 2018 17:53:13 +0100
Subject: Bootstrap compilation
---
ishtar_common/static/bootstrap/bootstrap.css | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ishtar_common/static/bootstrap/bootstrap.css b/ishtar_common/static/bootstrap/bootstrap.css
index c6407564d..377461d9c 100644
--- a/ishtar_common/static/bootstrap/bootstrap.css
+++ b/ishtar_common/static/bootstrap/bootstrap.css
@@ -3,4 +3,4 @@
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#6f3b93;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#542c6f;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#6f3b93;background-color:transparent}.btn-link:hover{color:#542c6f;text-decoration:none;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:none;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#6f3b93;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#542c6f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translate3d(0, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.switch{font-size:1rem;position:relative}.switch input{position:absolute;height:1px;width:1px;background:none;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.switch input+label{position:relative;min-width:calc(calc(2.375rem * .8) * 2);border-radius:calc(2.375rem * .8);height:calc(2.375rem * .8);line-height:calc(2.375rem * .8);display:inline-block;cursor:pointer;outline:none;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375rem * .8) * 2) + .5rem)}.switch input+label::before,.switch input+label::after{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375rem * .8) * 2);bottom:0;display:block}.switch input+label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375rem * .8);transition:0.2s all}.switch input+label::after{top:2px;left:2px;width:calc(calc(2.375rem * .8) - calc(2px * 2));height:calc(calc(2.375rem * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:0.2s all}.switch input:checked+label::before{background-color:#08d}.switch input:checked+label::after{margin-left:calc(2.375rem * .8)}.switch input:focus+label::before{outline:none;box-shadow:0 0 0 .2rem rgba(0,136,221,0.25)}.switch input:disabled+label{color:#868e96;cursor:not-allowed}.switch input:disabled+label::before{background-color:#e9ecef}.switch.switch-sm{font-size:.875rem}.switch.switch-sm input+label{min-width:calc(calc(1.9375rem * .8) * 2);height:calc(1.9375rem * .8);line-height:calc(1.9375rem * .8);text-indent:calc(calc(calc(1.9375rem * .8) * 2) + .5rem)}.switch.switch-sm input+label::before{width:calc(calc(1.9375rem * .8) * 2)}.switch.switch-sm input+label::after{width:calc(calc(1.9375rem * .8) - calc(2px * 2));height:calc(calc(1.9375rem * .8) - calc(2px * 2))}.switch.switch-sm input:checked+label::after{margin-left:calc(1.9375rem * .8)}.switch.switch-lg{font-size:1.25rem}.switch.switch-lg input+label{min-width:calc(calc(3rem * .8) * 2);height:calc(3rem * .8);line-height:calc(3rem * .8);text-indent:calc(calc(calc(3rem * .8) * 2) + .5rem)}.switch.switch-lg input+label::before{width:calc(calc(3rem * .8) * 2)}.switch.switch-lg input+label::after{width:calc(calc(3rem * .8) - calc(2px * 2));height:calc(calc(3rem * .8) - calc(2px * 2))}.switch.switch-lg input:checked+label::after{margin-left:calc(3rem * .8)}.switch+.switch{margin-left:1rem}.switch.danger input:checked+label::before{background-color:#dc3545}.switch.danger input:focus+label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}html{font-size:0.8em;background-color:#f8f9fa}body{background-color:transparent;position:relative}label{margin-bottom:.2rem;min-height:1.5rem}.form-group span label{display:inline-block}.form-group label{display:block}.form-group li label{display:inline-block}.form-group li .form-control{width:auto}.form-group li input[type="radio"].form-control,.form-group li input[type="checkbox"].form-control{display:inline}pre{white-space:pre-wrap}.raw-description{white-space:pre-line}.form-control.small-input,.input-group>.form-control.small-input{width:110px;flex:none}.input-group>input[type=checkbox]{margin:0.5em 1em}.form-row.odd{background-color:#e9ecef}.form-row-modal{padding:0.5rem 2rem}.field-tip{position:absolute;right:10px;top:5px;opacity:0.7}.form-group .select2-container--default .select2-selection--multiple{border:1px solid #ced4da}.page-link.imported-page{color:#aa8fda}.page-link.imported-page.current-page,.page-link.current-page{color:black;font-weight:bold}#modal-advanced-search .modal-header{flex-wrap:wrap;padding-bottom:0}#modal-advanced-search .modal-header .alert-secondary{background-color:#fff}.modal-header,.modal-footer{background-color:#e9ecef}.modal-body.body-scroll{max-height:calc(100vh - 200px);overflow-y:auto}.modal-dialog.full{width:98%;height:98%;max-width:none;padding:1%}.modal-dialog.full .display.dataTable{width:100% !important}.modal-dialog.full .modal-content{height:auto;min-height:100%;border-radius:0}.table{background-color:white}.input-progress.form-control:focus,.input-progress{background-color:#dee2e6}.card-header,.input-progress,.table-striped tbody tr:nth-of-type(2n+1),.dt-bootstrap4 table.dataTable.stripe tbody tr.odd,.dt-bootstrap4 table.dataTable.display tbody tr.odd{background-color:#e9ecef}.dropdown-item:hover,.dropdown-item:focus,.dt-bootstrap4 table.dataTable.hover tbody tr:hover,.dt-bootstrap4 table.dataTable.display tbody tr:hover{background-color:#f6f6f6;background-color:#dee2e6}table.dataTable{font-size:0.8em}.table-modal-lg table.dataTable{font-size:1em}div.dt-buttons{float:right}.dt-button{color:#fff;background-color:#007bff;border-color:#007bff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;color:#fff;background-color:#6c757d;border-color:#6c757d;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.dt-button:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.dt-button:focus,.dt-button.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.disabled,.dt-button:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.dt-button:not(:disabled):not(.disabled):active,.dt-button:not(:disabled):not(.disabled).active,.show>.dt-button.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.dt-button:not(:disabled):not(.disabled):active:focus,.dt-button:not(:disabled):not(.disabled).active:focus,.show>.dt-button.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.dt-button.btn-success:focus,.dt-button.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.btn-success.disabled,.dt-button.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:not(:disabled):not(.disabled):active,.dt-button.btn-success:not(:disabled):not(.disabled).active,.show>.dt-button.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.dt-button.btn-success:not(:disabled):not(.disabled):active:focus,.dt-button.btn-success:not(:disabled):not(.disabled).active:focus,.show>.dt-button.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#adb5bd;cursor:not-allowed}.small-button{padding:0.1em 0.2em}.previous-value{margin:0.4em 0;display:block}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.1rem}textarea{height:90px}.sheet h4{color:#6c757d}#bookmark-list .input-link{width:100%;padding-right:5px}#window-fixed-menu{background-color:#e9ecef;position:fixed;right:0;margin-top:100px;z-index:50;width:200px}#window-fixed-menu-list li{padding-bottom:0.5em}#window-fixed-menu-list li a.nav-link{background-color:white}#window-fixed-menu-list li a.nav-link.active{background-color:#007bff}#window-menu-title{font-size:1.3em}#window-menu-control{font-size:0.6em;padding-top:0.2em}#window-fixed-menu.hidden{transform:rotate(270deg);transform-origin:right bottom 0}#window-fixed-menu.hidden i.fa-times{transform:rotate(45deg);transform-origin:10px 10px 0;padding-left:0.1em}.form h4,.form h3,.collapse-form .card-header,#window h3{background-color:#ced4da}.collapse-form .card,.collapse-form .card-header{border-radius:0;border:0 solid}.collapse-form .card-header{padding:0;text-align:center}.collapse-form .card-header h4{margin-bottom:0}.collapse-form .card-header .btn.btn-link{color:#212529;width:100%}.collapse-form .card-body{border:1px solid #ced4da}.collapse-form .fa-expand,.collapse-form .collapsed .fa-compress{display:none}.collapse-form .collapsed .fa-expand,.collapse-form .fa-compress{display:inline-block}.clean-table h4,.form h4,.form h3,.collapse-form .card-header h4 .btn,.sheet h4,.sheet h3,.sheet h2{text-align:center;text-shadow:2px 2px 2px rgba(150,150,150,0.7)}.sheet .subsection{background-color:#e9ecef}.sheet .row.toolbar{padding:0.5em 0.75em}.sheet .row{padding:0 0.75em;margin:0}.clean-table h4{margin-top:1em}.container{margin-top:1em;margin-bottom:8em}.bg-dark{background-color:#432776 !important}.navbar{padding:0 0.5rem}.navbar-dark .navbar-nav.action-menu .nav-link{color:#ffe484;border:1px solid #ffe484;border-radius:4px;margin:0.2em;padding:0.3em 0.6em}.navbar-dark .navbar-nav.action-menu .d-none .nav-link{border:0px solid transparent}.navbar-dark .navbar-nav.action-menu .d-none .nav-link:hover{background-color:transparent;color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link:hover{background-color:#ffe484;color:#343a40}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle::after{color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle:hover::after{color:#343a40}#context-menu,#reminder,.confirm-message,div#validation-bar{background-color:#6f42c1;color:rgba(255,255,255,0.8)}#reminder{padding:0.6em 1em 0.1em 1em}#alert-list{padding:0.6em 0}#alert-list a{font-size:1.1rem}.confirm-message{text-align:center;margin:0;padding:0.5rem;font-weight:bold}.is-invalid input{border-color:#f99}.errorlist{color:#900}#shortcut-menu{width:700px;padding:1em}#context-menu a.nav-link{color:rgba(255,255,255,0.8);padding:0.8rem 0.5rem 0.7rem 0.5rem}#context-menu .breadcrumb{margin-bottom:0;background-color:transparent}#current_items{width:100%}div#foot{background-color:#432776;color:rgba(255,255,255,0.5)}div#foot a{color:#ddd}div#foot a:hover{color:#fff}.breadcrumb button{border:0 transparent;background-color:transparent}.breadcrumb a:hover{text-decoration:none}.breadcrumb button:hover{cursor:pointer;color:#0062cc}.input-group.date input{border:1px solid #dee2e6;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.input-group.date .input-group-text:hover{cursor:pointer}.input-group>ul{padding:0.5em;border:1px solid #dee2e6;border-radius:.25rem;margin:0;list-style:none}.help-text{max-height:250px;overflow:auto}.input-link{color:#6c757d}.input-link.disabled{color:#adb5bd}.input-link:hover{color:#343a40;cursor:pointer}.input-link.disabled:hover{color:#adb5bd;cursor:not-allowed}.input-sep{background-color:#fff;padding:0.3rem}.search_button{display:none}.lightgallery-captions{display:none}.lightgallery-subimage{display:inline-block;width:80px;padding:0.2em}.lightgallery-subimage img{width:100%}.lg .lg-sub-html{text-align:left}.lg .lg-sub-html .close{color:#fff}.lg .lg-sub-html .close:hover{opacity:0.9}#basket-manage #foot_pk{display:none}#basket-manage #grid_pk_meta_wrapper{width:50%;float:left;padding-bottom:80px}#basket-add-button{width:8%;float:left;margin:20vh 1% 0 1%}#basket-content-wrapper{width:40%;float:left}#basket-content{text-align:left;overflow:auto;max-height:60vh}.ui-widget-content{border:1px solid #dee2e6;background-color:#fff}.ui-menu-item{padding:0.2em 0.4em;border:1px solid #fff}.ui-menu-item:hover{color:#6f3b93;border:1px solid #6f3b93;cursor:pointer}.ui-autocomplete{font-size:0.7em;z-index:10000 !important;width:350px;border:5px solid #dee2e6;outline:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}
+ */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#6f3b93;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#542c6f;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#6f3b93;background-color:transparent}.btn-link:hover{color:#542c6f;text-decoration:none;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:none;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#6f3b93;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#542c6f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translate3d(0, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.switch{font-size:1rem;position:relative}.switch input{position:absolute;height:1px;width:1px;background:none;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.switch input+label{position:relative;min-width:calc(calc(2.375rem * .8) * 2);border-radius:calc(2.375rem * .8);height:calc(2.375rem * .8);line-height:calc(2.375rem * .8);display:inline-block;cursor:pointer;outline:none;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375rem * .8) * 2) + .5rem)}.switch input+label::before,.switch input+label::after{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375rem * .8) * 2);bottom:0;display:block}.switch input+label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375rem * .8);transition:0.2s all}.switch input+label::after{top:2px;left:2px;width:calc(calc(2.375rem * .8) - calc(2px * 2));height:calc(calc(2.375rem * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:0.2s all}.switch input:checked+label::before{background-color:#08d}.switch input:checked+label::after{margin-left:calc(2.375rem * .8)}.switch input:focus+label::before{outline:none;box-shadow:0 0 0 .2rem rgba(0,136,221,0.25)}.switch input:disabled+label{color:#868e96;cursor:not-allowed}.switch input:disabled+label::before{background-color:#e9ecef}.switch.switch-sm{font-size:.875rem}.switch.switch-sm input+label{min-width:calc(calc(1.9375rem * .8) * 2);height:calc(1.9375rem * .8);line-height:calc(1.9375rem * .8);text-indent:calc(calc(calc(1.9375rem * .8) * 2) + .5rem)}.switch.switch-sm input+label::before{width:calc(calc(1.9375rem * .8) * 2)}.switch.switch-sm input+label::after{width:calc(calc(1.9375rem * .8) - calc(2px * 2));height:calc(calc(1.9375rem * .8) - calc(2px * 2))}.switch.switch-sm input:checked+label::after{margin-left:calc(1.9375rem * .8)}.switch.switch-lg{font-size:1.25rem}.switch.switch-lg input+label{min-width:calc(calc(3rem * .8) * 2);height:calc(3rem * .8);line-height:calc(3rem * .8);text-indent:calc(calc(calc(3rem * .8) * 2) + .5rem)}.switch.switch-lg input+label::before{width:calc(calc(3rem * .8) * 2)}.switch.switch-lg input+label::after{width:calc(calc(3rem * .8) - calc(2px * 2));height:calc(calc(3rem * .8) - calc(2px * 2))}.switch.switch-lg input:checked+label::after{margin-left:calc(3rem * .8)}.switch+.switch{margin-left:1rem}.switch.danger input:checked+label::before{background-color:#dc3545}.switch.danger input:focus+label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}html{font-size:0.8em;background-color:#f8f9fa}body{background-color:transparent;position:relative}label{margin-bottom:.2rem;min-height:1.5rem}.form-group span label{display:inline-block}.form-group label{display:block}.form-group li label{display:inline-block}.form-group li .form-control{width:auto}.form-group li input[type="radio"].form-control,.form-group li input[type="checkbox"].form-control{display:inline}pre{white-space:pre-wrap}.raw-description{white-space:pre-line}.form-control.small-input,.input-group>.form-control.small-input{width:110px;flex:none}.input-group>input[type=checkbox]{margin:0.5em 1em}.form-row.odd{background-color:#e9ecef}.form-row-modal{padding:0.5rem 2rem}.field-tip{position:absolute;right:10px;top:5px;opacity:0.7}.form-group .select2-container--default .select2-selection--multiple{border:1px solid #ced4da}.page-link.imported-page{color:#aa8fda}.page-link.imported-page.current-page,.page-link.current-page{color:black;font-weight:bold}#modal-advanced-search .modal-header{flex-wrap:wrap;padding-bottom:0}#modal-advanced-search .modal-header .alert-secondary{background-color:#fff}.modal-header,.modal-footer{background-color:#e9ecef}.modal-body.body-scroll{max-height:calc(100vh - 200px);overflow-y:auto}.modal-dialog.full{width:98%;height:98%;max-width:none;padding:1%}.modal-dialog.full .display.dataTable{width:100% !important}.modal-dialog.full .modal-content{height:auto;min-height:100%;border-radius:0}.table{background-color:white}.input-progress.form-control:focus,.input-progress{background-color:#dee2e6}.card-header,.input-progress,.table-striped tbody tr:nth-of-type(2n+1),.dt-bootstrap4 table.dataTable.stripe tbody tr.odd,.dt-bootstrap4 table.dataTable.display tbody tr.odd{background-color:#e9ecef}.dropdown-item:hover,.dropdown-item:focus,.dt-bootstrap4 table.dataTable.hover tbody tr:hover,.dt-bootstrap4 table.dataTable.display tbody tr:hover{background-color:#f6f6f6;background-color:#dee2e6}table.dataTable{font-size:0.8em}.table-modal-lg table.dataTable{font-size:1em}div.dt-buttons{float:right}.dt-button{color:#fff;background-color:#007bff;border-color:#007bff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;color:#fff;background-color:#6c757d;border-color:#6c757d;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.dt-button:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.dt-button:focus,.dt-button.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.disabled,.dt-button:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.dt-button:not(:disabled):not(.disabled):active,.dt-button:not(:disabled):not(.disabled).active,.show>.dt-button.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.dt-button:not(:disabled):not(.disabled):active:focus,.dt-button:not(:disabled):not(.disabled).active:focus,.show>.dt-button.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.dt-button.btn-success:focus,.dt-button.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.btn-success.disabled,.dt-button.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:not(:disabled):not(.disabled):active,.dt-button.btn-success:not(:disabled):not(.disabled).active,.show>.dt-button.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.dt-button.btn-success:not(:disabled):not(.disabled):active:focus,.dt-button.btn-success:not(:disabled):not(.disabled).active:focus,.show>.dt-button.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#adb5bd;cursor:not-allowed}.small-button{padding:0.1em 0.2em}.previous-value{margin:0.4em 0;display:block}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.1rem}textarea{height:90px}.sheet h4{color:#6c757d}#bookmark-list .input-link{width:100%;padding-right:5px}#window-fixed-menu{background-color:#e9ecef;position:fixed;right:0;margin-top:100px;z-index:50;width:200px}#window-fixed-menu-list li{padding-bottom:0.5em}#window-fixed-menu-list li a.nav-link{background-color:white}#window-fixed-menu-list li a.nav-link.active{background-color:#007bff}#window-menu-title{font-size:1.3em}#window-menu-control{font-size:0.6em;padding-top:0.2em}#window-fixed-menu.hidden{transform:rotate(270deg);transform-origin:right bottom 0}#window-fixed-menu.hidden i.fa-times{transform:rotate(45deg);transform-origin:10px 10px 0;padding-left:0.1em}.form h4,.form h3,.collapse-form .card-header,#window h3{background-color:#ced4da}.collapse-form .card,.collapse-form .card-header{border-radius:0;border:0 solid}.collapse-form .card-header{padding:0;text-align:center}.collapse-form .card-header h4{margin-bottom:0}.collapse-form .card-header .btn.btn-link{color:#212529;width:100%}.collapse-form .card-body{border:1px solid #ced4da}.collapse-form .fa-expand,.collapse-form .collapsed .fa-compress{display:none}.collapse-form .collapsed .fa-expand,.collapse-form .fa-compress{display:inline-block}.clean-table h4,.form h4,.form h3,.collapse-form .card-header h4 .btn,.sheet h4,.sheet h3,.sheet h2{text-align:center;text-shadow:2px 2px 2px rgba(150,150,150,0.7)}.sheet .subsection{background-color:#e9ecef}.sheet .row.toolbar{padding:0.5em 0.75em}.sheet .row{padding:0 0.75em;margin:0}.clean-table h4{margin-top:1em}.container{margin-top:1em;margin-bottom:8em}.bg-dark{background-color:#432776 !important}.navbar{padding:0 0.5rem}.navbar-dark .navbar-nav.action-menu .nav-link{color:#ffe484;border:1px solid #ffe484;border-radius:4px;margin:0.2em;padding:0.3em 0.6em}.navbar-dark .navbar-nav.action-menu .d-none .nav-link{border:0px solid transparent}.navbar-dark .navbar-nav.action-menu .d-none .nav-link:hover{background-color:transparent;color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link:hover{background-color:#ffe484;color:#343a40}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle::after{color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle:hover::after{color:#343a40}#context-menu,#reminder,.confirm-message,div#validation-bar{background-color:#6f42c1;color:rgba(255,255,255,0.8)}#reminder{padding:0.6em 1em 0.1em 1em}#alert-list{padding:0.6em 0}#alert-list a{font-size:1.1rem}.confirm-message{text-align:center;margin:0;padding:0.5rem;font-weight:bold}.is-invalid input{border-color:#f99}.errorlist{color:#900}#shortcut-menu{width:700px;padding:1em}#context-menu a.nav-link{color:rgba(255,255,255,0.8);padding:0.8rem 0.5rem 0.7rem 0.5rem}#context-menu .breadcrumb{margin-bottom:0;background-color:transparent}#current_items{width:100%}div#foot{background-color:#432776;color:rgba(255,255,255,0.5)}div#foot a{color:#ddd}div#foot a:hover{color:#fff}.breadcrumb button{border:0 transparent;background-color:transparent}.breadcrumb a:hover{text-decoration:none}.breadcrumb button:hover{cursor:pointer;color:#0062cc}.input-group.date input{border:1px solid #dee2e6;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.input-group.date .input-group-text:hover{cursor:pointer}.input-group>ul{padding:0.5em;border:1px solid #dee2e6;border-radius:.25rem;margin:0;list-style:none}ul.compact{padding:0;margin:0}.help-text{max-height:250px;overflow:auto}.input-link{color:#6c757d}.input-link.disabled{color:#adb5bd}.input-link:hover{color:#343a40;cursor:pointer}.input-link.disabled:hover{color:#adb5bd;cursor:not-allowed}.input-sep{background-color:#fff;padding:0.3rem}.search_button{display:none}.lightgallery-captions{display:none}.lightgallery-subimage{display:inline-block;width:80px;padding:0.2em}.lightgallery-subimage img{width:100%}.lg .lg-sub-html{text-align:left}.lg .lg-sub-html .close{color:#fff}.lg .lg-sub-html .close:hover{opacity:0.9}#basket-manage #foot_pk{display:none}#basket-manage #grid_pk_meta_wrapper{width:50%;float:left;padding-bottom:80px}#basket-add-button{width:8%;float:left;margin:20vh 1% 0 1%}#basket-content-wrapper{width:40%;float:left}#basket-content{text-align:left;overflow:auto;max-height:60vh}.ui-widget-content{border:1px solid #dee2e6;background-color:#fff}.ui-menu-item{padding:0.2em 0.4em;border:1px solid #fff}.ui-menu-item:hover{color:#6f3b93;border:1px solid #6f3b93;cursor:pointer}.ui-autocomplete{font-size:0.7em;z-index:10000 !important;width:350px;border:5px solid #dee2e6;outline:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}
--
cgit v1.2.3
From cfcbb04a4c2eb4cd587f34826f2ce69ff6025312 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Fri, 16 Nov 2018 17:55:00 +0100
Subject: Wizard: display selected on final wizard panel
---
archaeological_finds/forms.py | 16 +++++++++++--
archaeological_finds/models_treatments.py | 2 +-
archaeological_finds/wizards.py | 20 +++++++++++-----
ishtar_common/forms.py | 32 ++++++++++++++++++++++++++
ishtar_common/static/js/ishtar.js | 11 +++++++++
ishtar_common/templates/blocks/DataTables.html | 6 ++++-
ishtar_common/widgets.py | 2 +-
ishtar_common/wizards.py | 2 +-
scss/custom.scss | 5 ++++
9 files changed, 84 insertions(+), 12 deletions(-)
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 663ab3663..4df6629e1 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -53,7 +53,8 @@ from bootstrap_datepicker.widgets import DatePicker
from ishtar_common import widgets
from ishtar_common.forms import CustomForm, CustomFormSearch, FormSet, \
FloatField, reverse_lazy, TableSelect, get_now, FinalForm, \
- ManageOldType, FieldType, IshtarForm, FormHeader, QAForm, HistorySelect
+ ManageOldType, FieldType, IshtarForm, FormHeader, QAForm, HistorySelect, \
+ PkWizardSearch
from ishtar_common.forms_common import get_town_field
from ishtar_common.models import valid_id, valid_ids, get_current_profile, \
SpatialReferenceSystem, Area, OperationType
@@ -910,8 +911,19 @@ class FindDeletionForm(FinalForm):
confirm_end_msg = _(u"Would you like to delete this find?")
-class UpstreamFindFormSelection(FindFormSelection):
+class UpstreamFindFormSelection(PkWizardSearch, FindFormSelection):
form_label = _(u"Upstream find")
+ current_model = models.Find
+ pk_key = 'resulting_pk'
+
+ pk = forms.CharField(
+ label="", required=False,
+ widget=widgets.DataTable(
+ reverse_lazy('get-find'),
+ FindSelect, current_model,
+ multiple_select=True,
+ source_full=reverse_lazy('get-find-full')),
+ validators=[valid_ids(current_model)])
def __init__(self, *args, **kwargs):
super(UpstreamFindFormSelection, self).__init__(*args, **kwargs)
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index 61d4ce5be..160e9d32d 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -68,7 +68,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
"upstream_cached_label": _(u"Upstream find"),
"treatment_types__label": _(u"Type"),
"treatment_state__label": _(u"State"),
- 'person__cached_label': _(u"Responsible"),
+ "person__cached_label": _(u"Responsible"),
}
# extra keys than can be passed to save method
EXTRA_SAVED_KEYS = ('items', 'user')
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index e90fa745c..3314759d1 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -119,14 +119,17 @@ class TreatmentWizard(Wizard):
kwargs['user'] = self.request.user
return kwargs
- def get_current_find(self):
+ def get_current_finds(self):
step = self.steps.current
if not step:
return
find_form_key = 'selecfind-treatment_creation'
- find_id = self.session_get_value(find_form_key, "resulting_pk")
+ find_ids = self.session_get_value(find_form_key, "resulting_pk")
try:
- return models.Find.objects.get(pk=int(find_id))
+ return [
+ models.Find.objects.get(pk=int(find_id.strip()))
+ for find_id in find_ids.split(u',')
+ ]
except(TypeError, ValueError, ObjectDoesNotExist):
pass
@@ -134,12 +137,17 @@ class TreatmentWizard(Wizard):
initial = super(TreatmentWizard, self).get_form_initial(step)
if step != 'basetreatment-treatment_creation':
return initial
- find = self.get_current_find()
- if not find or not find.container:
+ finds = self.get_current_finds()
+ if not finds:
+ return initial
+ locations = [find.container.location.pk for find in finds
+ if find.container]
+ # no location or multiple locations
+ if not locations or len(set(locations)) != 1:
return initial
if not initial:
initial = {}
- initial['location'] = find.container.location.pk
+ initial['location'] = locations[0]
return initial
def get_extra_model(self, dct, form_list):
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 20c65971e..63551ede2 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -341,6 +341,38 @@ class CustomForm(BSForm):
return sorted(customs, key=lambda x: x[1])
+class PkWizardSearch(object):
+ current_model = None
+ pk_key = None
+
+ @classmethod
+ def get_formated_datas(cls, cleaned_datas):
+ if not cls.current_model or not cls.pk_key:
+ return []
+ items = []
+ for data in cleaned_datas:
+ if not data or cls.pk_key not in data or not data[cls.pk_key]:
+ continue
+ pks = data[cls.pk_key]
+ for pk in unicode(pks).split(u','):
+ if not pk:
+ continue
+ try:
+ items.append(
+ unicode(cls.current_model.objects.get(pk=int(pk)))
+ )
+ except (cls.current_model.DoesNotExist, ValueError):
+ continue
+ return [
+ (u"",
+ mark_safe(
+ u"" + u" ".join(items) +
+ u" "
+ ))
+ ]
+
+
+
class CustomFormSearch(forms.Form):
need_user_for_initialization = True
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index e4e80d681..ea0ccc516 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -968,3 +968,14 @@ var dt_single_enable_disable_submit_button = function(e, dt, type, indexes){
$("#validation-bar #submit_form").prop('disabled', true);
}
};
+
+var dt_multi_enable_disable_submit_button = function(e, dt, type, indexes){
+ var rows = dt.rows( { selected: true } ).count();
+ if (rows >= 1) {
+ $("#validation-bar #submit_form").prop('title', "");
+ $("#validation-bar #submit_form").prop('disabled', false);
+ } else {
+ $("#validation-bar #submit_form").prop('title', select_only_one_msg);
+ $("#validation-bar #submit_form").prop('disabled', true);
+ }
+};
diff --git a/ishtar_common/templates/blocks/DataTables.html b/ishtar_common/templates/blocks/DataTables.html
index e1966787b..096650115 100644
--- a/ishtar_common/templates/blocks/DataTables.html
+++ b/ishtar_common/templates/blocks/DataTables.html
@@ -194,7 +194,8 @@ jQuery(document).ready(function(){
],
"initComplete": function(settings, json) {
var api = new $.fn.dataTable.Api(settings);
- dt_single_enable_disable_submit_button(null, api);
+ {% if not multiple_select %}dt_single_enable_disable_submit_button(null, api);
+ {% else %}dt_multi_enable_disable_submit_button(null, api);{% endif %}
}
};
@@ -207,6 +208,9 @@ jQuery(document).ready(function(){
{% if not multiple_select %}
datatable_{{sname}}.on('select', dt_single_enable_disable_submit_button);
datatable_{{sname}}.on('deselect', dt_single_enable_disable_submit_button);
+ {% else %}
+ datatable_{{sname}}.on('select', dt_multi_enable_disable_submit_button);
+ datatable_{{sname}}.on('deselect', dt_multi_enable_disable_submit_button);
{% endif %}
{% if multiple %}
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index 3fd48fa0d..f668ee534 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -927,7 +927,7 @@ class DataTable(Select2Media, forms.RadioSelect):
:param new:
:param new_message:
:param source_full: url to get full listing
- :param multiple_select:
+ :param multiple_select: select multiple is available
:param sortname: column name (model attribute) to use to sort
:param col_prefix: prefix to remove to col_names
"""
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index a439cc014..7fd19f721 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -1181,7 +1181,7 @@ class Wizard(IshtarWizard):
return vals
def get_current_object(self):
- """Get the current object for an instancied wizard"""
+ """Get the current object for an instanced wizard"""
current_obj = None
for key in self.main_item_select_keys:
main_form_key = key + self.url_name
diff --git a/scss/custom.scss b/scss/custom.scss
index 788220466..f0168d469 100644
--- a/scss/custom.scss
+++ b/scss/custom.scss
@@ -477,6 +477,11 @@ div#foot a:hover {
list-style: none;
}
+ul.compact{
+ padding: 0;
+ margin: 0;
+}
+
.help-text{
max-height: 250px;
overflow: auto;
--
cgit v1.2.3
From cce8c95c54c6d29d94a9e82acc9d54dcb4c20500 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Fri, 16 Nov 2018 18:02:29 +0100
Subject: Treatment: fix save with multiple items
---
archaeological_finds/wizards.py | 19 ++++++++++++-------
ishtar_common/forms.py | 1 -
2 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index 3314759d1..8a7a3a513 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -156,19 +156,24 @@ class TreatmentWizard(Wizard):
"""
dct = super(TreatmentWizard, self).get_extra_model(dct, form_list)
if 'resulting_pk' in dct:
- try:
- find = models.Find.objects.get(pk=dct.pop('resulting_pk'))
- if 'own' in self.current_right \
- and not find.is_own(dct['history_modifier']):
+ dct['items'] = []
+ pks = dct.pop('resulting_pk').split(u',')
+ for pk in pks:
+ try:
+ find = models.Find.objects.get(pk=pk)
+ dct['items'].append(find)
+ except models.Find.DoesNotExist:
raise PermissionDenied
- dct['items'] = [find]
- except models.Find.DoesNotExist:
- raise PermissionDenied
if 'basket' in dct:
basket = dct.pop('basket')
if basket.user.pk != dct['history_modifier'].pk:
raise PermissionDenied
dct['items'] = list(basket.items.all())
+
+ for find in dct['items']:
+ if 'own' in self.current_right \
+ and not find.is_own(dct['history_modifier']):
+ raise PermissionDenied
return dct
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 63551ede2..0c93016b1 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -372,7 +372,6 @@ class PkWizardSearch(object):
]
-
class CustomFormSearch(forms.Form):
need_user_for_initialization = True
--
cgit v1.2.3
From 6d1beb3e0bda4786d5577a8c1498042b96421fa0 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Fri, 16 Nov 2018 19:07:13 +0100
Subject: Treatment n->1: base forms
---
archaeological_finds/forms.py | 98 ++++++++++++++++++++++++-
archaeological_finds/forms_treatments.py | 14 ++++
archaeological_finds/ishtar_menu.py | 19 +++--
archaeological_finds/urls.py | 5 +-
archaeological_finds/views.py | 16 +++-
ishtar_common/templates/blocks/action_list.html | 4 +-
6 files changed, 143 insertions(+), 13 deletions(-)
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 4df6629e1..a221247e0 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -43,7 +43,7 @@ from archaeological_finds.forms_treatments import TreatmentSelect, \
AdministrativeActTreatmentFileForm, \
AdministrativeActTreatmentFileFormSelection, \
AdministrativeActTreatmentFileModifForm, \
- DashboardForm as DashboardTreatmentForm, \
+ DashboardForm as DashboardTreatmentForm, N1TreatmentForm,\
DashboardTreatmentFileForm, QAFindTreatmentForm
from archaeological_operations.models import Period, ArchaeologicalSite, \
RelationType as OpeRelationType
@@ -82,7 +82,8 @@ __all__ = [
'FindDeletionForm', 'UpstreamFindFormSelection', 'NewFindBasketForm',
'SelectFindBasketForm', 'DeleteFindBasketForm', 'FindBasketAddItemForm',
'QAFindFormSingle', 'QAFindFormMulti', 'QAFindBasketForm',
- 'QAFindTreatmentForm'
+ 'QAFindTreatmentForm',
+ 'N1TreatmentForm', 'ResultingFindForm'
]
logger = logging.getLogger(__name__)
@@ -319,6 +320,99 @@ class FindForm(CustomForm, ManageOldType):
return self.cleaned_data
+class ResultingFindForm(CustomForm, ManageOldType):
+ file_upload = True
+ form_label = _("Resulting find")
+ form_admin_name = _(u"Treatment n-1 - 030 - General")
+ form_slug = "treatmentn1-030-general"
+
+ base_models = ['object_type', 'material_type', 'communicabilitie']
+ associated_models = {
+ 'material_type': models.MaterialType,
+ 'object_type': models.ObjectType,
+ 'communicabilitie': models.CommunicabilityType,
+ 'material_type_quality': models.MaterialTypeQualityType,
+ 'object_type_quality': models.ObjectTypeQualityType,
+ 'checked_type': models.CheckedType,
+ }
+ HEADERS = {}
+ HEADERS['label'] = FormHeader(_(u"Identification"))
+
+ label = forms.CharField(
+ label=_(u"Free ID"),
+ validators=[validators.MaxLengthValidator(60)])
+ denomination = forms.CharField(label=_(u"Denomination"), required=False)
+ previous_id = forms.CharField(label=_("Previous ID"), required=False)
+ museum_id = forms.CharField(label=_(u"Museum ID"), required=False)
+ seal_number = forms.CharField(label=_(u"Seal number"), required=False)
+ mark = forms.CharField(label=_(u"Mark"), required=False)
+
+ HEADERS['description'] = FormHeader(_(u"Description"))
+ description = forms.CharField(label=_(u"Description"),
+ widget=forms.Textarea, required=False)
+ is_complete = forms.NullBooleanField(label=_(u"Is complete?"),
+ required=False)
+ material_type = widgets.Select2MultipleField(
+ label=_(u"Material types"), required=False
+ )
+ material_type_quality = forms.ChoiceField(
+ label=_(u"Material type quality"), required=False, choices=[])
+ object_type = widgets.Select2MultipleField(
+ label=_(u"Object types"), required=False,
+ )
+ object_type_quality = forms.ChoiceField(
+ label=_(u"Object type quality"), required=False, choices=[])
+ find_number = forms.IntegerField(label=_(u"Find number"), required=False)
+ min_number_of_individuals = forms.IntegerField(
+ label=_(u"Minimum number of individuals (MNI)"), required=False)
+
+ decoration = forms.CharField(label=_(u"Decoration"), widget=forms.Textarea,
+ required=False)
+ inscription = forms.CharField(label=_(u"Inscription"),
+ widget=forms.Textarea, required=False)
+ manufacturing_place = forms.CharField(
+ label=_(u"Manufacturing place"), required=False)
+ communicabilitie = widgets.Select2MultipleField(
+ label=_(u"Communicability"), required=False
+ )
+ comment = forms.CharField(label=_(u"Comment"), required=False,
+ widget=forms.Textarea)
+ dating_comment = forms.CharField(
+ label=_(u"Comment on dating"), required=False, widget=forms.Textarea)
+
+ HEADERS['length'] = FormHeader(_(u"Dimensions"))
+ length = FloatField(label=_(u"Length (cm)"), required=False)
+ width = FloatField(label=_(u"Width (cm)"), required=False)
+ height = FloatField(label=_(u"Height (cm)"), required=False)
+ diameter = FloatField(label=_(u"Diameter (cm)"), required=False)
+ thickness = FloatField(label=_(u"Thickness (cm)"), required=False)
+ volume = FloatField(label=_(u"Volume (l)"), required=False)
+ weight = FloatField(label=_(u"Weight (g)"), required=False)
+ clutter_long_side = FloatField(
+ label=_(u"Clutter long side (cm)"), required=False)
+ clutter_short_side = FloatField(
+ label=_(u"Clutter short side (cm)"), required=False)
+ clutter_height = FloatField(
+ label=_(u"Clutter height (cm)"), required=False)
+ dimensions_comment = forms.CharField(
+ label=_(u"Dimensions comment"), required=False, widget=forms.Textarea)
+
+ HEADERS['checked_type'] = FormHeader(_(u"Sheet"))
+ checked_type = forms.ChoiceField(label=_(u"Check"), required=False)
+ check_date = forms.DateField(
+ initial=get_now, label=_(u"Check date"), widget=DatePicker)
+
+ TYPES = [
+ FieldType('material_type', models.MaterialType, is_multiple=True),
+ FieldType('material_type_quality', models.MaterialTypeQualityType),
+ FieldType('object_type', models.ObjectType, is_multiple=True),
+ FieldType('object_type_quality', models.ObjectTypeQualityType),
+ FieldType('communicabilitie', models.CommunicabilityType,
+ is_multiple=True),
+ FieldType('checked_type', models.CheckedType, is_multiple=True),
+ ]
+
+
class QAFindFormMulti(QAForm):
form_admin_name = _(u"Find - Quick action - Modify")
form_slug = "find-quickaction-modify"
diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py
index 248b1ef7d..99a685825 100644
--- a/archaeological_finds/forms_treatments.py
+++ b/archaeological_finds/forms_treatments.py
@@ -230,6 +230,20 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
"""
+class N1TreatmentForm(BaseTreatmentForm):
+ form_label = _(u"Base treatment")
+ form_admin_name = _(u"Treatment n-1 - 020 - General")
+ form_slug = "treatmentn1-020-general"
+
+ TYPES = [
+ FieldType('treatment_state', models.TreatmentState),
+ FieldType(
+ 'treatment_type', models.TreatmentType, is_multiple=True,
+ extra_args={'dct': {'upstream_is_many': True,
+ 'downstream_is_many': False}})
+ ]
+
+
class TreatmentModifyForm(BaseTreatmentForm):
index = forms.IntegerField(_(u"Index"))
id = forms.IntegerField(' ', widget=forms.HiddenInput, required=False)
diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py
index 19d300fbc..cd7ed19b7 100644
--- a/archaeological_finds/ishtar_menu.py
+++ b/archaeological_finds/ishtar_menu.py
@@ -153,11 +153,20 @@ MENU_SECTIONS = [
model=models.Treatment,
access_controls=['view_treatment',
'view_own_treatment']),
- MenuItem('treatment_creation',
- _(u"Simple treatment - creation"),
- model=models.Treatment,
- access_controls=['change_treatment',
- 'change_own_treatment']),
+ MenuItem(
+ 'treatment_creation',
+ _(u"Treatment "
+ u"1 1 "
+ u"- creation"),
+ model=models.Treatment,
+ access_controls=['change_find', 'change_own_find']),
+ MenuItem(
+ 'treatment_creation_n1',
+ _(u"Treatment "
+ u"n 1 "
+ u"- creation"),
+ model=models.Treatment,
+ access_controls=['change_find', 'change_own_find']),
MenuItem('treatment_modification',
_(u"Modification"),
model=models.Treatment,
diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py
index 588c8d520..b9f4d8b6c 100644
--- a/archaeological_finds/urls.py
+++ b/archaeological_finds/urls.py
@@ -100,10 +100,13 @@ urlpatterns = [
views.QAFindTreatmentFormView.as_view()),
name='find-qa-packaging'),
-
url(r'^treatment_creation/(?P.+)?$',
check_rights(['change_find', 'change_own_find'])(
views.treatment_creation_wizard), name='treatment_creation'),
+ url(r'^treatment_creation_n1/(?P.+)?$',
+ check_rights(['change_find', 'change_own_find'])(
+ views.treatment_creation_n1_wizard), name='treatment_creation_n1'),
+
url(r'^treatment_modification/(?P.+)?$',
check_rights(['change_find', 'change_own_find'])(
views.treatment_modification_wizard),
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index c4dbe0d3d..789c420de 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -408,9 +408,6 @@ treatment_wizard_steps = [
('selecfind-treatment_creation', UpstreamFindFormSelection),
('file-treatment_creation', TreatmentFormFileChoice),
('basetreatment-treatment_creation', BaseTreatmentForm),
- # ('selecbasket-treatment_creation', SelectFindBasketForm),
- # ('resultfind-treatment_creation', ResultFindForm),
- # ('resultfinds-treatment_creation', ResultFindFormSet),
('final-treatment_creation', FinalForm)
]
@@ -444,6 +441,19 @@ treatment_creation_wizard = TreatmentWizard.as_view(
label=_(u"New treatment"),
url_name='treatment_creation',)
+treatment_n1_wizard_steps = [
+ ('selecfind-treatment_creation_n1', UpstreamFindFormSelection),
+ ('file-treatment_creation_n1', TreatmentFormFileChoice),
+ ('basetreatment-treatment_creation_n1', N1TreatmentForm),
+ ('resultingfind-treatment_creation_n1', ResultingFindForm),
+ ('final-treatment_creation_n1', FinalForm)
+]
+
+treatment_creation_n1_wizard = TreatmentWizard.as_view(
+ treatment_n1_wizard_steps,
+ label=_(u"New treatment"),
+ url_name='treatment_creation_n1',)
+
treatment_modification_wizard = TreatmentModificationWizard.as_view(
[('selec-treatment_modification', TreatmentFormSelection),
('file-treatment_modification', TreatmentFormFileChoice),
diff --git a/ishtar_common/templates/blocks/action_list.html b/ishtar_common/templates/blocks/action_list.html
index 50a6554c4..384082ad4 100644
--- a/ishtar_common/templates/blocks/action_list.html
+++ b/ishtar_common/templates/blocks/action_list.html
@@ -1,12 +1,12 @@
{{section_label}}
+ aria-expanded="false">{{section_label|safe}}
--
cgit v1.2.3
From 9eb08d29098fa558a0fa2a4d6236d2dfba207b81 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Sun, 18 Nov 2018 15:20:51 +0100
Subject: Treatment n<->1: manage saving
---
archaeological_finds/forms.py | 111 +++++++++++-----------
archaeological_finds/models_treatments.py | 74 ++++++++++++++-
archaeological_finds/views.py | 2 +-
archaeological_finds/wizards.py | 147 +++++++++++++++++++++++++++---
4 files changed, 264 insertions(+), 70 deletions(-)
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index a221247e0..958b1896c 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -326,90 +326,93 @@ class ResultingFindForm(CustomForm, ManageOldType):
form_admin_name = _(u"Treatment n-1 - 030 - General")
form_slug = "treatmentn1-030-general"
- base_models = ['object_type', 'material_type', 'communicabilitie']
associated_models = {
- 'material_type': models.MaterialType,
- 'object_type': models.ObjectType,
- 'communicabilitie': models.CommunicabilityType,
- 'material_type_quality': models.MaterialTypeQualityType,
- 'object_type_quality': models.ObjectTypeQualityType,
- 'checked_type': models.CheckedType,
+ 'resulting_material_type': models.MaterialType,
+ 'resulting_object_type': models.ObjectType,
+ 'resulting_communicabilitie': models.CommunicabilityType,
+ 'resulting_material_type_quality': models.MaterialTypeQualityType,
+ 'resulting_object_type_quality': models.ObjectTypeQualityType,
+ 'resulting_checked_type': models.CheckedType,
}
HEADERS = {}
- HEADERS['label'] = FormHeader(_(u"Identification"))
+ HEADERS['resulting_label'] = FormHeader(_(u"Identification"))
- label = forms.CharField(
+ resulting_label = forms.CharField(
label=_(u"Free ID"),
validators=[validators.MaxLengthValidator(60)])
- denomination = forms.CharField(label=_(u"Denomination"), required=False)
- previous_id = forms.CharField(label=_("Previous ID"), required=False)
- museum_id = forms.CharField(label=_(u"Museum ID"), required=False)
- seal_number = forms.CharField(label=_(u"Seal number"), required=False)
- mark = forms.CharField(label=_(u"Mark"), required=False)
+ resulting_denomination = forms.CharField(label=_(u"Denomination"),
+ required=False)
- HEADERS['description'] = FormHeader(_(u"Description"))
- description = forms.CharField(label=_(u"Description"),
- widget=forms.Textarea, required=False)
- is_complete = forms.NullBooleanField(label=_(u"Is complete?"),
- required=False)
- material_type = widgets.Select2MultipleField(
+ HEADERS['resulting_description'] = FormHeader(_(u"Description"))
+ resulting_description = forms.CharField(
+ label=_(u"Description"), widget=forms.Textarea, required=False)
+ resulting_is_complete = forms.NullBooleanField(
+ label=_(u"Is complete?"), required=False)
+ resulting_material_type = widgets.Select2MultipleField(
label=_(u"Material types"), required=False
)
- material_type_quality = forms.ChoiceField(
+ resulting_material_type_quality = forms.ChoiceField(
label=_(u"Material type quality"), required=False, choices=[])
- object_type = widgets.Select2MultipleField(
+ resulting_object_type = widgets.Select2MultipleField(
label=_(u"Object types"), required=False,
)
- object_type_quality = forms.ChoiceField(
+ resulting_object_type_quality = forms.ChoiceField(
label=_(u"Object type quality"), required=False, choices=[])
- find_number = forms.IntegerField(label=_(u"Find number"), required=False)
- min_number_of_individuals = forms.IntegerField(
+ resulting_find_number = forms.IntegerField(
+ label=_(u"Find number"), required=False)
+ resulting_min_number_of_individuals = forms.IntegerField(
label=_(u"Minimum number of individuals (MNI)"), required=False)
- decoration = forms.CharField(label=_(u"Decoration"), widget=forms.Textarea,
- required=False)
- inscription = forms.CharField(label=_(u"Inscription"),
- widget=forms.Textarea, required=False)
- manufacturing_place = forms.CharField(
+ resulting_decoration = forms.CharField(
+ label=_(u"Decoration"), widget=forms.Textarea, required=False)
+ resulting_inscription = forms.CharField(
+ label=_(u"Inscription"), widget=forms.Textarea, required=False)
+ resulting_manufacturing_place = forms.CharField(
label=_(u"Manufacturing place"), required=False)
- communicabilitie = widgets.Select2MultipleField(
+ resulting_communicabilitie = widgets.Select2MultipleField(
label=_(u"Communicability"), required=False
)
- comment = forms.CharField(label=_(u"Comment"), required=False,
+ resulting_comment = forms.CharField(label=_(u"Comment"), required=False,
widget=forms.Textarea)
- dating_comment = forms.CharField(
+ resulting_dating_comment = forms.CharField(
label=_(u"Comment on dating"), required=False, widget=forms.Textarea)
- HEADERS['length'] = FormHeader(_(u"Dimensions"))
- length = FloatField(label=_(u"Length (cm)"), required=False)
- width = FloatField(label=_(u"Width (cm)"), required=False)
- height = FloatField(label=_(u"Height (cm)"), required=False)
- diameter = FloatField(label=_(u"Diameter (cm)"), required=False)
- thickness = FloatField(label=_(u"Thickness (cm)"), required=False)
- volume = FloatField(label=_(u"Volume (l)"), required=False)
- weight = FloatField(label=_(u"Weight (g)"), required=False)
- clutter_long_side = FloatField(
+ HEADERS['resulting_length'] = FormHeader(_(u"Dimensions"))
+ resulting_length = FloatField(label=_(u"Length (cm)"), required=False)
+ resulting_width = FloatField(label=_(u"Width (cm)"), required=False)
+ resulting_height = FloatField(label=_(u"Height (cm)"), required=False)
+ resulting_diameter = FloatField(label=_(u"Diameter (cm)"), required=False)
+ resulting_thickness = FloatField(label=_(u"Thickness (cm)"), required=False)
+ resulting_volume = FloatField(label=_(u"Volume (l)"), required=False)
+ resulting_weight = FloatField(label=_(u"Weight (g)"), required=False)
+ resulting_clutter_long_side = FloatField(
label=_(u"Clutter long side (cm)"), required=False)
- clutter_short_side = FloatField(
+ resulting_clutter_short_side = FloatField(
label=_(u"Clutter short side (cm)"), required=False)
- clutter_height = FloatField(
+ resulting_clutter_height = FloatField(
label=_(u"Clutter height (cm)"), required=False)
- dimensions_comment = forms.CharField(
+ resulting_dimensions_comment = forms.CharField(
label=_(u"Dimensions comment"), required=False, widget=forms.Textarea)
- HEADERS['checked_type'] = FormHeader(_(u"Sheet"))
- checked_type = forms.ChoiceField(label=_(u"Check"), required=False)
- check_date = forms.DateField(
+ HEADERS['resulting_checked_type'] = FormHeader(_(u"Sheet"))
+ resulting_checked_type = forms.ChoiceField(label=_(u"Check"),
+ required=False)
+ resulting_check_date = forms.DateField(
initial=get_now, label=_(u"Check date"), widget=DatePicker)
TYPES = [
- FieldType('material_type', models.MaterialType, is_multiple=True),
- FieldType('material_type_quality', models.MaterialTypeQualityType),
- FieldType('object_type', models.ObjectType, is_multiple=True),
- FieldType('object_type_quality', models.ObjectTypeQualityType),
- FieldType('communicabilitie', models.CommunicabilityType,
+ FieldType('resulting_material_type', models.MaterialType,
+ is_multiple=True),
+ FieldType('resulting_material_type_quality',
+ models.MaterialTypeQualityType),
+ FieldType('resulting_object_type', models.ObjectType,
+ is_multiple=True),
+ FieldType('resulting_object_type_quality',
+ models.ObjectTypeQualityType),
+ FieldType('resulting_communicabilitie', models.CommunicabilityType,
+ is_multiple=True),
+ FieldType('resulting_checked_type', models.CheckedType,
is_multiple=True),
- FieldType('checked_type', models.CheckedType, is_multiple=True),
]
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index 160e9d32d..4e2eb0faf 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -71,7 +71,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
"person__cached_label": _(u"Responsible"),
}
# extra keys than can be passed to save method
- EXTRA_SAVED_KEYS = ('items', 'user')
+ EXTRA_SAVED_KEYS = ('items', 'user', 'resulting_find', 'upstream_items')
# alternative names of fields for searches
ALT_NAMES = {
@@ -292,10 +292,73 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
if q.count():
self.index = q.all().aggregate(Max('index'))['index__max'] + 1
+ def _create_resulting_find(self, resulting_find, upstream_items):
+ m2m = {}
+ base_fields = [f.name for f in Find._meta.get_fields()]
+ for k in resulting_find.keys():
+ # if not in base fields should be a m2m
+ if k not in base_fields:
+ values = resulting_find.pop(k)
+ if values:
+ m2m[k + "s"] = values
+
+ resulting_find['history_modifier'] = self.history_modifier
+ new_find = Find.objects.create(**resulting_find)
+
+ for k in m2m:
+ m2m_field = getattr(new_find, k)
+ try:
+ for value in m2m[k]:
+ m2m_field.add(value)
+ except TypeError:
+ m2m_field.add(m2m[k])
+
+ dating_keys = ["period", "start_date", "end_date", "dating_type",
+ "quality", "precise_dating"]
+ current_datings = []
+ current_base_finds = []
+ for upstream_item in upstream_items:
+ # datings are not explicitly part of the resulting_find
+ # need to reassociate with no duplicate
+ for dating in upstream_item.datings.all():
+ current_dating = []
+ for key in dating_keys:
+ value = getattr(dating, key)
+ if hasattr(value, 'pk'):
+ value = value.pk
+ current_dating.append(value)
+ current_dating = tuple(current_dating)
+ if current_dating in current_datings:
+ # do not add similar dating
+ continue
+ current_datings.append(current_dating)
+ dating.pk = None # duplicate
+ dating.save()
+ new_find.datings.add(dating)
+
+ # associate base finds
+ for base_find in upstream_item.base_finds.all():
+ if base_find.pk in current_base_finds:
+ continue
+ current_base_finds.append(base_find.pk)
+ new_find.base_finds.add(base_find)
+
+ upstream_item.downstream_treatment = self
+ upstream_item.history_modifier = self.history_modifier
+ upstream_item.save()
+ new_find.upstream_treatment = self
+ new_find.skip_history_when_saving = True
+ new_find.save()
+
def save(self, *args, **kwargs):
- items, user, extra_args_for_new = [], None, []
+ items, user, extra_args_for_new, resulting_find = [], None, [], None
+ upstream_items = []
if "items" in kwargs:
items = kwargs.pop('items')
+ if "resulting_find" in kwargs:
+ resulting_find = kwargs.pop('resulting_find')
+ if "upstream_items" in kwargs:
+ upstream_items = kwargs.pop('upstream_items')
if "user" in kwargs:
user = kwargs.pop('user')
if "extra_args_for_new" in kwargs:
@@ -303,8 +366,15 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
self.pre_save()
super(Treatment, self).save(*args, **kwargs)
updated = []
+ # baskets
if hasattr(items, "items"):
items = items.items.all()
+ if hasattr(upstream_items, "items"):
+ upstream_items = upstream_items.items.all()
+
+ if upstream_items and resulting_find:
+ self._create_resulting_find(resulting_find, upstream_items)
+ return
tps = list(self.treatment_types.all())
has_destructive_tp = bool([tp for tp in tps if tp.destructive])
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index 789c420de..d6924257f 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -449,7 +449,7 @@ treatment_n1_wizard_steps = [
('final-treatment_creation_n1', FinalForm)
]
-treatment_creation_n1_wizard = TreatmentWizard.as_view(
+treatment_creation_n1_wizard = TreatmentN1Wizard.as_view(
treatment_n1_wizard_steps,
label=_(u"New treatment"),
url_name='treatment_creation_n1',)
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index 8a7a3a513..3043d22aa 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -106,24 +106,16 @@ class TreatmentSearch(SearchWizard):
model = models.Treatment
-class TreatmentWizard(Wizard):
+class TreatmentBase(Wizard):
model = models.Treatment
wizard_done_window = reverse_lazy('show-treatment')
- basket_step = 'basetreatment-treatment_creation'
- saved_args = {"items": []}
-
- def get_form_kwargs(self, step, **kwargs):
- kwargs = super(TreatmentWizard, self).get_form_kwargs(step, **kwargs)
- if self.basket_step not in step:
- return kwargs
- kwargs['user'] = self.request.user
- return kwargs
+ base_url = ""
def get_current_finds(self):
step = self.steps.current
if not step:
return
- find_form_key = 'selecfind-treatment_creation'
+ find_form_key = 'selecfind-' + self.base_url
find_ids = self.session_get_value(find_form_key, "resulting_pk")
try:
return [
@@ -134,8 +126,9 @@ class TreatmentWizard(Wizard):
pass
def get_form_initial(self, step, data=None):
- initial = super(TreatmentWizard, self).get_form_initial(step)
- if step != 'basetreatment-treatment_creation':
+ initial = super(TreatmentBase, self).get_form_initial(step)
+ base_step = 'basetreatment-' + self.base_url
+ if step != base_step:
return initial
finds = self.get_current_finds()
if not finds:
@@ -150,6 +143,19 @@ class TreatmentWizard(Wizard):
initial['location'] = locations[0]
return initial
+
+class TreatmentWizard(TreatmentBase):
+ basket_step = 'basetreatment-treatment_creation'
+ saved_args = {"items": []}
+ base_url = 'treatment_creation'
+
+ def get_form_kwargs(self, step, **kwargs):
+ kwargs = super(TreatmentWizard, self).get_form_kwargs(step, **kwargs)
+ if self.basket_step not in step:
+ return kwargs
+ kwargs['user'] = self.request.user
+ return kwargs
+
def get_extra_model(self, dct, form_list):
"""
Get items concerned by the treatment
@@ -181,6 +187,121 @@ class TreatmentModificationWizard(TreatmentWizard):
modification = True
+class TreatmentN1Wizard(TreatmentBase):
+ saved_args = {"upstream_items": [], "resulting_find": None}
+ base_url = 'treatment_creation_n1'
+
+ def _update_simple_initial_from_finds(self, initial, find, k):
+ r_k = "resulting_" + k
+ if getattr(find, k) and r_k in initial:
+ # pop k when value is inconsistent between finds
+ if initial[r_k] and initial[r_k] != getattr(find, k).pk:
+ initial.pop(r_k)
+ else:
+ initial[r_k] = getattr(find, k).pk
+ return initial
+
+ def _update_multi_initial_from_finds(self, initial, find, k):
+ r_k = "resulting_" + k
+ for value in getattr(find, k + 's').all():
+ if value.pk not in initial[r_k]:
+ initial[r_k].append(value.pk)
+ return initial
+
+ def _update_num_initial_from_finds(self, initial, find, k):
+ r_k = "resulting_" + k
+ if not getattr(find, k):
+ return initial
+ if initial[r_k] is None:
+ initial[r_k] = 0
+ initial[r_k] += getattr(find, k)
+ return initial
+
+ def _update_char_initial_from_finds(self, initial, find, k, sep=' ; '):
+ r_k = "resulting_" + k
+ if not getattr(find, k):
+ return initial
+ if not initial[r_k]:
+ initial[r_k] = getattr(find, k)
+ else:
+ initial[r_k] += sep + getattr(find, k)
+ return initial
+
+ def get_form_initial(self, step, data=None):
+ initial = super(TreatmentN1Wizard, self).get_form_initial(step)
+ if step != 'resultingfind-treatment_creation_n1':
+ return initial
+ finds = self.get_current_finds()
+ if not finds:
+ return initial
+ simple_key = ['material_type_quality']
+ multi_key = ['material_type', 'object_type', 'communicabilitie']
+ numeric_key = ['find_number', 'min_number_of_individuals']
+ desc_key = ['decoration', 'inscription', 'comment', 'dating_comment']
+ char_key = ['manufacturing_place']
+
+ for k in simple_key + numeric_key + desc_key + char_key:
+ initial["resulting_" + k] = None
+ for k in multi_key:
+ initial["resulting_" + k] = []
+
+ for find in finds:
+ for k in simple_key:
+ initial = self._update_simple_initial_from_finds(
+ initial, find, k)
+ for k in multi_key:
+ initial = self._update_multi_initial_from_finds(
+ initial, find, k)
+ for k in numeric_key:
+ initial = self._update_num_initial_from_finds(
+ initial, find, k)
+ for k in char_key:
+ initial = self._update_char_initial_from_finds(
+ initial, find, k, sep=' ; ')
+ for k in desc_key:
+ initial = self._update_char_initial_from_finds(
+ initial, find, k, sep='\n')
+
+ for k in initial.keys():
+ if initial[k] is None:
+ initial.pop(k)
+ return initial
+
+ def get_extra_model(self, dct, form_list):
+ """
+ Get items concerned by the treatment
+ """
+ dct = super(TreatmentN1Wizard, self).get_extra_model(dct, form_list)
+ if 'resulting_pk' not in dct:
+ return dct
+
+ dct['upstream_items'] = []
+ # manage upstream items
+ pks = dct.pop('resulting_pk')
+ if hasattr(pks, 'split'):
+ pks = pks.split(u',') # unicode or string
+ for pk in pks:
+ try:
+ find = models.Find.objects.get(pk=pk)
+ dct['upstream_items'].append(find)
+ except models.Find.DoesNotExist:
+ raise PermissionDenied
+
+ for find in dct['upstream_items']:
+ if 'own' in self.current_right \
+ and not find.is_own(dct['history_modifier']):
+ raise PermissionDenied
+
+ # extract data of the new find
+ dct['resulting_find'] = {}
+ for k in dct.keys():
+ if k.startswith('resulting_') and k != "resulting_find":
+ dct['resulting_find'][
+ k[len('resulting_'):]
+ ] = dct.pop(k)
+ return dct
+
+
class TreatmentDeletionWizard(DeletionWizard):
model = models.Treatment
fields = ['label', 'other_reference', 'year', 'index',
--
cgit v1.2.3
From 4c8aa9d4dc641b6c9c2bbce7b35f0373f12c2e51 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Sun, 18 Nov 2018 16:55:51 +0100
Subject: treatment n<->1: add documents
---
archaeological_finds/models_treatments.py | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index 4e2eb0faf..c7b888c0d 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -317,6 +317,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
"quality", "precise_dating"]
current_datings = []
current_base_finds = []
+ current_documents = []
for upstream_item in upstream_items:
# datings are not explicitly part of the resulting_find
# need to reassociate with no duplicate
@@ -343,6 +344,13 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
current_base_finds.append(base_find.pk)
new_find.base_finds.add(base_find)
+ # documents
+ for document in upstream_item.documents.all():
+ if document.pk in current_documents:
+ continue
+ current_documents.append(document.pk)
+ new_find.documents.add(document)
+
upstream_item.downstream_treatment = self
upstream_item.history_modifier = self.history_modifier
upstream_item.save()
--
cgit v1.2.3
From a543baecc5ba8ad42ca68b35a4abcf86a8acd33a Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Mon, 19 Nov 2018 10:13:39 +0100
Subject: Bootstrap compilation
---
ishtar_common/static/bootstrap/bootstrap.css | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ishtar_common/static/bootstrap/bootstrap.css b/ishtar_common/static/bootstrap/bootstrap.css
index 377461d9c..fe9026694 100644
--- a/ishtar_common/static/bootstrap/bootstrap.css
+++ b/ishtar_common/static/bootstrap/bootstrap.css
@@ -3,4 +3,4 @@
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#6f3b93;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#542c6f;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#6f3b93;background-color:transparent}.btn-link:hover{color:#542c6f;text-decoration:none;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:none;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#6f3b93;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#542c6f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translate3d(0, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.switch{font-size:1rem;position:relative}.switch input{position:absolute;height:1px;width:1px;background:none;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.switch input+label{position:relative;min-width:calc(calc(2.375rem * .8) * 2);border-radius:calc(2.375rem * .8);height:calc(2.375rem * .8);line-height:calc(2.375rem * .8);display:inline-block;cursor:pointer;outline:none;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375rem * .8) * 2) + .5rem)}.switch input+label::before,.switch input+label::after{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375rem * .8) * 2);bottom:0;display:block}.switch input+label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375rem * .8);transition:0.2s all}.switch input+label::after{top:2px;left:2px;width:calc(calc(2.375rem * .8) - calc(2px * 2));height:calc(calc(2.375rem * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:0.2s all}.switch input:checked+label::before{background-color:#08d}.switch input:checked+label::after{margin-left:calc(2.375rem * .8)}.switch input:focus+label::before{outline:none;box-shadow:0 0 0 .2rem rgba(0,136,221,0.25)}.switch input:disabled+label{color:#868e96;cursor:not-allowed}.switch input:disabled+label::before{background-color:#e9ecef}.switch.switch-sm{font-size:.875rem}.switch.switch-sm input+label{min-width:calc(calc(1.9375rem * .8) * 2);height:calc(1.9375rem * .8);line-height:calc(1.9375rem * .8);text-indent:calc(calc(calc(1.9375rem * .8) * 2) + .5rem)}.switch.switch-sm input+label::before{width:calc(calc(1.9375rem * .8) * 2)}.switch.switch-sm input+label::after{width:calc(calc(1.9375rem * .8) - calc(2px * 2));height:calc(calc(1.9375rem * .8) - calc(2px * 2))}.switch.switch-sm input:checked+label::after{margin-left:calc(1.9375rem * .8)}.switch.switch-lg{font-size:1.25rem}.switch.switch-lg input+label{min-width:calc(calc(3rem * .8) * 2);height:calc(3rem * .8);line-height:calc(3rem * .8);text-indent:calc(calc(calc(3rem * .8) * 2) + .5rem)}.switch.switch-lg input+label::before{width:calc(calc(3rem * .8) * 2)}.switch.switch-lg input+label::after{width:calc(calc(3rem * .8) - calc(2px * 2));height:calc(calc(3rem * .8) - calc(2px * 2))}.switch.switch-lg input:checked+label::after{margin-left:calc(3rem * .8)}.switch+.switch{margin-left:1rem}.switch.danger input:checked+label::before{background-color:#dc3545}.switch.danger input:focus+label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}html{font-size:0.8em;background-color:#f8f9fa}body{background-color:transparent;position:relative}label{margin-bottom:.2rem;min-height:1.5rem}.form-group span label{display:inline-block}.form-group label{display:block}.form-group li label{display:inline-block}.form-group li .form-control{width:auto}.form-group li input[type="radio"].form-control,.form-group li input[type="checkbox"].form-control{display:inline}pre{white-space:pre-wrap}.raw-description{white-space:pre-line}.form-control.small-input,.input-group>.form-control.small-input{width:110px;flex:none}.input-group>input[type=checkbox]{margin:0.5em 1em}.form-row.odd{background-color:#e9ecef}.form-row-modal{padding:0.5rem 2rem}.field-tip{position:absolute;right:10px;top:5px;opacity:0.7}.form-group .select2-container--default .select2-selection--multiple{border:1px solid #ced4da}.page-link.imported-page{color:#aa8fda}.page-link.imported-page.current-page,.page-link.current-page{color:black;font-weight:bold}#modal-advanced-search .modal-header{flex-wrap:wrap;padding-bottom:0}#modal-advanced-search .modal-header .alert-secondary{background-color:#fff}.modal-header,.modal-footer{background-color:#e9ecef}.modal-body.body-scroll{max-height:calc(100vh - 200px);overflow-y:auto}.modal-dialog.full{width:98%;height:98%;max-width:none;padding:1%}.modal-dialog.full .display.dataTable{width:100% !important}.modal-dialog.full .modal-content{height:auto;min-height:100%;border-radius:0}.table{background-color:white}.input-progress.form-control:focus,.input-progress{background-color:#dee2e6}.card-header,.input-progress,.table-striped tbody tr:nth-of-type(2n+1),.dt-bootstrap4 table.dataTable.stripe tbody tr.odd,.dt-bootstrap4 table.dataTable.display tbody tr.odd{background-color:#e9ecef}.dropdown-item:hover,.dropdown-item:focus,.dt-bootstrap4 table.dataTable.hover tbody tr:hover,.dt-bootstrap4 table.dataTable.display tbody tr:hover{background-color:#f6f6f6;background-color:#dee2e6}table.dataTable{font-size:0.8em}.table-modal-lg table.dataTable{font-size:1em}div.dt-buttons{float:right}.dt-button{color:#fff;background-color:#007bff;border-color:#007bff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;color:#fff;background-color:#6c757d;border-color:#6c757d;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.dt-button:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.dt-button:focus,.dt-button.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.disabled,.dt-button:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.dt-button:not(:disabled):not(.disabled):active,.dt-button:not(:disabled):not(.disabled).active,.show>.dt-button.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.dt-button:not(:disabled):not(.disabled):active:focus,.dt-button:not(:disabled):not(.disabled).active:focus,.show>.dt-button.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.dt-button.btn-success:focus,.dt-button.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.btn-success.disabled,.dt-button.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:not(:disabled):not(.disabled):active,.dt-button.btn-success:not(:disabled):not(.disabled).active,.show>.dt-button.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.dt-button.btn-success:not(:disabled):not(.disabled):active:focus,.dt-button.btn-success:not(:disabled):not(.disabled).active:focus,.show>.dt-button.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#adb5bd;cursor:not-allowed}.small-button{padding:0.1em 0.2em}.previous-value{margin:0.4em 0;display:block}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.1rem}textarea{height:90px}.sheet h4{color:#6c757d}#bookmark-list .input-link{width:100%;padding-right:5px}#window-fixed-menu{background-color:#e9ecef;position:fixed;right:0;margin-top:100px;z-index:50;width:200px}#window-fixed-menu-list li{padding-bottom:0.5em}#window-fixed-menu-list li a.nav-link{background-color:white}#window-fixed-menu-list li a.nav-link.active{background-color:#007bff}#window-menu-title{font-size:1.3em}#window-menu-control{font-size:0.6em;padding-top:0.2em}#window-fixed-menu.hidden{transform:rotate(270deg);transform-origin:right bottom 0}#window-fixed-menu.hidden i.fa-times{transform:rotate(45deg);transform-origin:10px 10px 0;padding-left:0.1em}.form h4,.form h3,.collapse-form .card-header,#window h3{background-color:#ced4da}.collapse-form .card,.collapse-form .card-header{border-radius:0;border:0 solid}.collapse-form .card-header{padding:0;text-align:center}.collapse-form .card-header h4{margin-bottom:0}.collapse-form .card-header .btn.btn-link{color:#212529;width:100%}.collapse-form .card-body{border:1px solid #ced4da}.collapse-form .fa-expand,.collapse-form .collapsed .fa-compress{display:none}.collapse-form .collapsed .fa-expand,.collapse-form .fa-compress{display:inline-block}.clean-table h4,.form h4,.form h3,.collapse-form .card-header h4 .btn,.sheet h4,.sheet h3,.sheet h2{text-align:center;text-shadow:2px 2px 2px rgba(150,150,150,0.7)}.sheet .subsection{background-color:#e9ecef}.sheet .row.toolbar{padding:0.5em 0.75em}.sheet .row{padding:0 0.75em;margin:0}.clean-table h4{margin-top:1em}.container{margin-top:1em;margin-bottom:8em}.bg-dark{background-color:#432776 !important}.navbar{padding:0 0.5rem}.navbar-dark .navbar-nav.action-menu .nav-link{color:#ffe484;border:1px solid #ffe484;border-radius:4px;margin:0.2em;padding:0.3em 0.6em}.navbar-dark .navbar-nav.action-menu .d-none .nav-link{border:0px solid transparent}.navbar-dark .navbar-nav.action-menu .d-none .nav-link:hover{background-color:transparent;color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link:hover{background-color:#ffe484;color:#343a40}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle::after{color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle:hover::after{color:#343a40}#context-menu,#reminder,.confirm-message,div#validation-bar{background-color:#6f42c1;color:rgba(255,255,255,0.8)}#reminder{padding:0.6em 1em 0.1em 1em}#alert-list{padding:0.6em 0}#alert-list a{font-size:1.1rem}.confirm-message{text-align:center;margin:0;padding:0.5rem;font-weight:bold}.is-invalid input{border-color:#f99}.errorlist{color:#900}#shortcut-menu{width:700px;padding:1em}#context-menu a.nav-link{color:rgba(255,255,255,0.8);padding:0.8rem 0.5rem 0.7rem 0.5rem}#context-menu .breadcrumb{margin-bottom:0;background-color:transparent}#current_items{width:100%}div#foot{background-color:#432776;color:rgba(255,255,255,0.5)}div#foot a{color:#ddd}div#foot a:hover{color:#fff}.breadcrumb button{border:0 transparent;background-color:transparent}.breadcrumb a:hover{text-decoration:none}.breadcrumb button:hover{cursor:pointer;color:#0062cc}.input-group.date input{border:1px solid #dee2e6;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.input-group.date .input-group-text:hover{cursor:pointer}.input-group>ul{padding:0.5em;border:1px solid #dee2e6;border-radius:.25rem;margin:0;list-style:none}ul.compact{padding:0;margin:0}.help-text{max-height:250px;overflow:auto}.input-link{color:#6c757d}.input-link.disabled{color:#adb5bd}.input-link:hover{color:#343a40;cursor:pointer}.input-link.disabled:hover{color:#adb5bd;cursor:not-allowed}.input-sep{background-color:#fff;padding:0.3rem}.search_button{display:none}.lightgallery-captions{display:none}.lightgallery-subimage{display:inline-block;width:80px;padding:0.2em}.lightgallery-subimage img{width:100%}.lg .lg-sub-html{text-align:left}.lg .lg-sub-html .close{color:#fff}.lg .lg-sub-html .close:hover{opacity:0.9}#basket-manage #foot_pk{display:none}#basket-manage #grid_pk_meta_wrapper{width:50%;float:left;padding-bottom:80px}#basket-add-button{width:8%;float:left;margin:20vh 1% 0 1%}#basket-content-wrapper{width:40%;float:left}#basket-content{text-align:left;overflow:auto;max-height:60vh}.ui-widget-content{border:1px solid #dee2e6;background-color:#fff}.ui-menu-item{padding:0.2em 0.4em;border:1px solid #fff}.ui-menu-item:hover{color:#6f3b93;border:1px solid #6f3b93;cursor:pointer}.ui-autocomplete{font-size:0.7em;z-index:10000 !important;width:350px;border:5px solid #dee2e6;outline:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}
+ */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #343a40;--primary: #007bff;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#6f3b93;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#542c6f;text-decoration:none}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):hover,a:not([href]):not([tabindex]):focus{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}pre,code,kbd,samp{font-family:monospace, monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{padding:0;border-style:none}input[type="radio"],input[type="checkbox"]{box-sizing:border-box;padding:0}input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{outline-offset:-2px;-webkit-appearance:none}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*="col-"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:none}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:none}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:none}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:none}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:none}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:rgba(0,0,0,0)}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark th,.table-dark td,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.form-control-plaintext.form-control-lg,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}select.form-control-sm:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control-lg:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*="col-"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,0.8);border-radius:.2rem}.was-validated .form-control:valid,.form-control.is-valid,.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745}.was-validated .form-control:valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-control:valid ~ .valid-feedback,.was-validated .form-control:valid ~ .valid-tooltip,.form-control.is-valid ~ .valid-feedback,.form-control.is-valid ~ .valid-tooltip,.was-validated .custom-select:valid ~ .valid-feedback,.was-validated .custom-select:valid ~ .valid-tooltip,.custom-select.is-valid ~ .valid-feedback,.custom-select.is-valid ~ .valid-tooltip{display:block}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{background-color:#71dd8a}.was-validated .custom-control-input:valid ~ .valid-feedback,.was-validated .custom-control-input:valid ~ .valid-tooltip,.custom-control-input.is-valid ~ .valid-feedback,.custom-control-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label::before,.custom-file-input.is-valid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:valid ~ .valid-feedback,.was-validated .custom-file-input:valid ~ .valid-tooltip,.custom-file-input.is-valid ~ .valid-feedback,.custom-file-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,0.8);border-radius:.2rem}.was-validated .form-control:invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-control:invalid ~ .invalid-feedback,.was-validated .form-control:invalid ~ .invalid-tooltip,.form-control.is-invalid ~ .invalid-feedback,.form-control.is-invalid ~ .invalid-tooltip,.was-validated .custom-select:invalid ~ .invalid-feedback,.was-validated .custom-select:invalid ~ .invalid-tooltip,.custom-select.is-invalid ~ .invalid-feedback,.custom-select.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{background-color:#efa2a9}.was-validated .custom-control-input:invalid ~ .invalid-feedback,.was-validated .custom-control-input:invalid ~ .invalid-tooltip,.custom-control-input.is-invalid ~ .invalid-feedback,.custom-control-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label::before,.custom-file-input.is-invalid ~ .custom-file-label::before{border-color:inherit}.was-validated .custom-file-input:invalid ~ .invalid-feedback,.was-validated .custom-file-input:invalid ~ .invalid-tooltip,.custom-file-input.is-invalid ~ .invalid-feedback,.custom-file-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.btn:hover,.btn:focus{text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled):active,.btn:not(:disabled):not(.disabled).active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary:focus,.btn-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,0.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#6f3b93;background-color:transparent}.btn-link:hover{color:#542c6f;text-decoration:none;background-color:transparent;border-color:transparent}.btn-link:focus,.btn-link.focus{text-decoration:none;border-color:transparent;box-shadow:none}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;transition:opacity 0.15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:0 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type="radio"],.btn-group-toggle>.btn input[type="checkbox"],.btn-group-toggle>.btn-group>.btn input[type="radio"],.btn-group-toggle>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file:focus{z-index:3}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type="radio"],.input-group-text input[type="checkbox"]{margin-top:0}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,0.25)}.custom-control-input:active ~ .custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(0,123,255,0.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(128,189,255,0.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.custom-file-input:focus ~ .custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en) ~ .custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-img-top,.card-group>.card:first-child .card-header{border-top-right-radius:0}.card-group>.card:first-child .card-img-bottom,.card-group>.card:first-child .card-footer{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-img-top,.card-group>.card:last-child .card-header{border-top-left-radius:0}.card-group>.card:last-child .card-img-bottom,.card-group>.card:last-child .card-footer{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-img-top,.card-group>.card:only-child .card-header{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-img-bottom,.card-group>.card:only-child .card-footer{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#6f3b93;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#542c6f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,0.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:hover,.badge-primary[href]:focus{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:hover,.badge-secondary[href]:focus{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:hover,.badge-success[href]:focus{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:hover,.badge-info[href]:focus{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:hover,.badge-warning[href]:focus{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:hover,.badge-danger[href]:focus{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:hover,.badge-light[href]:focus{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:hover,.badge-dark[href]:focus{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width 0.6s ease}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:hover,.list-group-item:focus{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover,.close:focus{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -25%)}.modal.show .modal-dialog{transform:translate(0, 0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^="top"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^="top"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^="right"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^="right"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^="bottom"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^="bottom"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^="left"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^="left"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^="top"]{margin-bottom:.5rem}.bs-popover-top .arrow,.bs-popover-auto[x-placement^="top"] .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{border-width:.5rem .5rem 0}.bs-popover-top .arrow::before,.bs-popover-auto[x-placement^="top"] .arrow::before{bottom:0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top .arrow::after,.bs-popover-auto[x-placement^="top"] .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^="right"]{margin-left:.5rem}.bs-popover-right .arrow,.bs-popover-auto[x-placement^="right"] .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{border-width:.5rem .5rem .5rem 0}.bs-popover-right .arrow::before,.bs-popover-auto[x-placement^="right"] .arrow::before{left:0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right .arrow::after,.bs-popover-auto[x-placement^="right"] .arrow::after{left:1px;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^="bottom"]{margin-top:.5rem}.bs-popover-bottom .arrow,.bs-popover-auto[x-placement^="bottom"] .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{border-width:0 .5rem .5rem .5rem}.bs-popover-bottom .arrow::before,.bs-popover-auto[x-placement^="bottom"] .arrow::before{top:0;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom .arrow::after,.bs-popover-auto[x-placement^="bottom"] .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^="bottom"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^="left"]{margin-right:.5rem}.bs-popover-left .arrow,.bs-popover-auto[x-placement^="left"] .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{border-width:.5rem 0 .5rem .5rem}.bs-popover-left .arrow::before,.bs-popover-auto[x-placement^="left"] .arrow::before{right:0;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left .arrow::after,.bs-popover-auto[x-placement^="left"] .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform 0.6s ease;backface-visibility:hidden;perspective:1000px}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0, 0, 0)}}.carousel-item-next,.active.carousel-item-right{transform:translateX(100%)}@supports (transform-style: preserve-3d){.carousel-item-next,.active.carousel-item-right{transform:translate3d(100%, 0, 0)}}.carousel-item-prev,.active.carousel-item-left{transform:translateX(-100%)}@supports (transform-style: preserve-3d){.carousel-item-prev,.active.carousel-item-left{transform:translate3d(-100%, 0, 0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translateX(0)}@supports (transform-style: preserve-3d){.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active,.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev{transform:translate3d(0, 0, 0)}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,0.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#007bff !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#0062cc !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#007bff !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-circle{border-radius:50% !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;clip-path:none}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.text-justify{text-align:justify !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#007bff !important}a.text-primary:hover,a.text-primary:focus{color:#0062cc !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#545b62 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#1e7e34 !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#117a8b !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#d39e00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#bd2130 !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#dae0e5 !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#1d2124 !important}.text-muted{color:#6c757d !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}.switch{font-size:1rem;position:relative}.switch input{position:absolute;height:1px;width:1px;background:none;border:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;padding:0}.switch input+label{position:relative;min-width:calc(calc(2.375rem * .8) * 2);border-radius:calc(2.375rem * .8);height:calc(2.375rem * .8);line-height:calc(2.375rem * .8);display:inline-block;cursor:pointer;outline:none;user-select:none;vertical-align:middle;text-indent:calc(calc(calc(2.375rem * .8) * 2) + .5rem)}.switch input+label::before,.switch input+label::after{content:'';position:absolute;top:0;left:0;width:calc(calc(2.375rem * .8) * 2);bottom:0;display:block}.switch input+label::before{right:0;background-color:#dee2e6;border-radius:calc(2.375rem * .8);transition:0.2s all}.switch input+label::after{top:2px;left:2px;width:calc(calc(2.375rem * .8) - calc(2px * 2));height:calc(calc(2.375rem * .8) - calc(2px * 2));border-radius:50%;background-color:#fff;transition:0.2s all}.switch input:checked+label::before{background-color:#08d}.switch input:checked+label::after{margin-left:calc(2.375rem * .8)}.switch input:focus+label::before{outline:none;box-shadow:0 0 0 .2rem rgba(0,136,221,0.25)}.switch input:disabled+label{color:#868e96;cursor:not-allowed}.switch input:disabled+label::before{background-color:#e9ecef}.switch.switch-sm{font-size:.875rem}.switch.switch-sm input+label{min-width:calc(calc(1.9375rem * .8) * 2);height:calc(1.9375rem * .8);line-height:calc(1.9375rem * .8);text-indent:calc(calc(calc(1.9375rem * .8) * 2) + .5rem)}.switch.switch-sm input+label::before{width:calc(calc(1.9375rem * .8) * 2)}.switch.switch-sm input+label::after{width:calc(calc(1.9375rem * .8) - calc(2px * 2));height:calc(calc(1.9375rem * .8) - calc(2px * 2))}.switch.switch-sm input:checked+label::after{margin-left:calc(1.9375rem * .8)}.switch.switch-lg{font-size:1.25rem}.switch.switch-lg input+label{min-width:calc(calc(3rem * .8) * 2);height:calc(3rem * .8);line-height:calc(3rem * .8);text-indent:calc(calc(calc(3rem * .8) * 2) + .5rem)}.switch.switch-lg input+label::before{width:calc(calc(3rem * .8) * 2)}.switch.switch-lg input+label::after{width:calc(calc(3rem * .8) - calc(2px * 2));height:calc(calc(3rem * .8) - calc(2px * 2))}.switch.switch-lg input:checked+label::after{margin-left:calc(3rem * .8)}.switch+.switch{margin-left:1rem}.switch.danger input:checked+label::before{background-color:#dc3545}.switch.danger input:focus+label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}html{font-size:0.8em;background-color:#f8f9fa}body{background-color:transparent;position:relative}label{margin-bottom:.2rem;min-height:1.5rem}.form-group span label{display:inline-block}.form-group label{display:block}.form-group li label{display:inline-block}.form-group li .form-control{width:auto}.form-group li input[type="radio"].form-control,.form-group li input[type="checkbox"].form-control{display:inline}pre{white-space:pre-wrap}.raw-description{white-space:pre-line}.form-control.small-input,.input-group>.form-control.small-input{width:110px;flex:none}.input-group>input[type=checkbox]{margin:0.5em 1em}.form-row.odd{background-color:#e9ecef}.form-row-modal{padding:0.5rem 2rem}.field-tip{position:absolute;right:10px;top:5px;opacity:0.7}.form-group .select2-container--default .select2-selection--multiple{border:1px solid #ced4da}.page-link.imported-page{color:#aa8fda}.page-link.imported-page.current-page,.page-link.current-page{color:black;font-weight:bold}#modal-advanced-search .modal-header{flex-wrap:wrap;padding-bottom:0}#modal-advanced-search .modal-header .alert-secondary{background-color:#fff}.modal-header,.modal-footer{background-color:#e9ecef}.modal-body.body-scroll{max-height:calc(100vh - 200px);overflow-y:auto}.modal-dialog.full{width:98%;height:98%;max-width:none;padding:1%}.modal-dialog.full .display.dataTable{width:100% !important}.modal-dialog.full .modal-content{height:auto;min-height:100%;border-radius:0}.table{background-color:white}.tab-content{padding-top:1em}.input-progress.form-control:focus,.input-progress{background-color:#dee2e6}.card-header,.input-progress,.table-striped tbody tr:nth-of-type(2n+1),.dt-bootstrap4 table.dataTable.stripe tbody tr.odd,.dt-bootstrap4 table.dataTable.display tbody tr.odd{background-color:#e9ecef}.dropdown-item:hover,.dropdown-item:focus,.dt-bootstrap4 table.dataTable.hover tbody tr:hover,.dt-bootstrap4 table.dataTable.display tbody tr:hover{background-color:#f6f6f6;background-color:#dee2e6}table.dataTable{font-size:0.8em}.table-modal-lg table.dataTable{font-size:1em}div.dt-buttons{float:right}.dt-button{color:#fff;background-color:#007bff;border-color:#007bff;display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;border:1px solid transparent;color:#fff;background-color:#6c757d;border-color:#6c757d;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.dt-button:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.dt-button:focus,.dt-button.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.disabled,.dt-button:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.dt-button:not(:disabled):not(.disabled):active,.dt-button:not(:disabled):not(.disabled).active,.show>.dt-button.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.dt-button:not(:disabled):not(.disabled):active:focus,.dt-button:not(:disabled):not(.disabled).active:focus,.show>.dt-button.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.dt-button.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.dt-button.btn-success:focus,.dt-button.btn-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.btn-success.disabled,.dt-button.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.dt-button.btn-success:not(:disabled):not(.disabled):active,.dt-button.btn-success:not(:disabled):not(.disabled).active,.show>.dt-button.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.dt-button.btn-success:not(:disabled):not(.disabled):active:focus,.dt-button.btn-success:not(:disabled):not(.disabled).active:focus,.show>.dt-button.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.dt-button.disabled{background-color:#f8f9fa;border-color:#f8f9fa;color:#adb5bd;cursor:not-allowed}.small-button{padding:0.1em 0.2em}.previous-value{margin:0.4em 0;display:block}h3,.h3{font-size:1.5rem}h4,.h4{font-size:1.1rem}textarea{height:90px}.sheet h4{color:#6c757d}#bookmark-list .input-link{width:100%;padding-right:5px}#window-fixed-menu{background-color:#e9ecef;position:fixed;right:0;margin-top:100px;z-index:50;width:200px}#window-fixed-menu-list li{padding-bottom:0.5em}#window-fixed-menu-list li a.nav-link{background-color:white}#window-fixed-menu-list li a.nav-link.active{background-color:#007bff}#window-menu-title{font-size:1.3em}#window-menu-control{font-size:0.6em;padding-top:0.2em}#window-fixed-menu.hidden{transform:rotate(270deg);transform-origin:right bottom 0}#window-fixed-menu.hidden i.fa-times{transform:rotate(45deg);transform-origin:10px 10px 0;padding-left:0.1em}.form h4,.form h3,.collapse-form .card-header,#window h3{background-color:#ced4da}.collapse-form .card,.collapse-form .card-header{border-radius:0;border:0 solid}.collapse-form .card-header{padding:0;text-align:center}.collapse-form .card-header h4{margin-bottom:0}.collapse-form .card-header .btn.btn-link{color:#212529;width:100%}.collapse-form .card-body{border:1px solid #ced4da}.collapse-form .fa-expand,.collapse-form .collapsed .fa-compress{display:none}.collapse-form .collapsed .fa-expand,.collapse-form .fa-compress{display:inline-block}.clean-table h4,.form h4,.form h3,.collapse-form .card-header h4 .btn,.sheet h4,.sheet h3,.sheet h2{text-align:center;text-shadow:2px 2px 2px rgba(150,150,150,0.7)}.sheet .subsection{background-color:#e9ecef}.sheet .row.toolbar{padding:0.5em 0.75em}.sheet .row{padding:0 0.75em;margin:0}.clean-table h4{margin-top:1em}.container{margin-top:1em;margin-bottom:8em}.bg-dark{background-color:#432776 !important}.navbar{padding:0 0.5rem}.navbar-dark .navbar-nav.action-menu .nav-link{color:#ffe484;border:1px solid #ffe484;border-radius:4px;margin:0.2em;padding:0.3em 0.6em}.navbar-dark .navbar-nav.action-menu .d-none .nav-link{border:0px solid transparent}.navbar-dark .navbar-nav.action-menu .d-none .nav-link:hover{background-color:transparent;color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link:hover{background-color:#ffe484;color:#343a40}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle::after{color:#ffe484}.navbar-dark .navbar-nav.action-menu .nav-link.dropdown-toggle:hover::after{color:#343a40}#context-menu,#reminder,.confirm-message,div#validation-bar{background-color:#6f42c1;color:rgba(255,255,255,0.8)}#reminder{padding:0.6em 1em 0.1em 1em}#alert-list{padding:0.6em 0}#alert-list a{font-size:1.1rem}.confirm-message{text-align:center;margin:0;padding:0.5rem;font-weight:bold}.is-invalid input{border-color:#f99}.errorlist{color:#900}#shortcut-menu{width:700px;padding:1em}#context-menu a.nav-link{color:rgba(255,255,255,0.8);padding:0.8rem 0.5rem 0.7rem 0.5rem}#context-menu .breadcrumb{margin-bottom:0;background-color:transparent}#current_items{width:100%}div#foot{background-color:#432776;color:rgba(255,255,255,0.5)}div#foot a{color:#ddd}div#foot a:hover{color:#fff}.breadcrumb button{border:0 transparent;background-color:transparent}.breadcrumb a:hover{text-decoration:none}.breadcrumb button:hover{cursor:pointer;color:#0062cc}.input-group.date input{border:1px solid #dee2e6;border-radius:.25rem;padding:.375rem .75rem;font-size:1rem;line-height:1.5}.input-group.date .input-group-text:hover{cursor:pointer}.input-group>ul{padding:0.5em;border:1px solid #dee2e6;border-radius:.25rem;margin:0;list-style:none}ul.compact{padding:0;margin:0}.help-text{max-height:250px;overflow:auto}.input-link{color:#6c757d}.input-link.disabled{color:#adb5bd}.input-link:hover{color:#343a40;cursor:pointer}.input-link.disabled:hover{color:#adb5bd;cursor:not-allowed}.input-sep{background-color:#fff;padding:0.3rem}.search_button{display:none}.lightgallery-captions{display:none}.lightgallery-subimage{display:inline-block;width:80px;padding:0.2em}.lightgallery-subimage img{width:100%}.lg .lg-sub-html{text-align:left}.lg .lg-sub-html .close{color:#fff}.lg .lg-sub-html .close:hover{opacity:0.9}#basket-manage #foot_pk{display:none}#basket-manage #grid_pk_meta_wrapper{width:50%;float:left;padding-bottom:80px}#basket-add-button{width:8%;float:left;margin:20vh 1% 0 1%}#basket-content-wrapper{width:40%;float:left}#basket-content{text-align:left;overflow:auto;max-height:60vh}.ui-widget-content{border:1px solid #dee2e6;background-color:#fff}.ui-menu-item{padding:0.2em 0.4em;border:1px solid #fff}.ui-menu-item:hover{color:#6f3b93;border:1px solid #6f3b93;cursor:pointer}.ui-autocomplete{font-size:0.7em;z-index:10000 !important;width:350px;border:5px solid #dee2e6;outline:none}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}
--
cgit v1.2.3
From cdf6dea9e0c9cf099c7ee9594390a0ed6ce55107 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Mon, 19 Nov 2018 10:15:39 +0100
Subject: Sheet find: use tabs and pills
---
.../templates/ishtar/sheet_basefind.html | 14 +-
.../templates/ishtar/sheet_find.html | 595 ++++++++++++---------
.../templates/ishtar/blocks/sheet_json.html | 2 +
scss/custom.scss | 5 +
4 files changed, 351 insertions(+), 265 deletions(-)
diff --git a/archaeological_finds/templates/ishtar/sheet_basefind.html b/archaeological_finds/templates/ishtar/sheet_basefind.html
index c20ca66ee..7ea16fecb 100644
--- a/archaeological_finds/templates/ishtar/sheet_basefind.html
+++ b/archaeological_finds/templates/ishtar/sheet_basefind.html
@@ -1,6 +1,10 @@
{% load i18n window_field from_dict link_to_window window_tables window_header humanize %}
- {{base_find.complete_id }}
- {{base_find.short_id }}
+
+
{{ base_find.complete_id }}
+ {% if base_find.complete_id != base_find.short_id %}
+
{{ base_find.short_id }}
+ {% endif %}
{% if base_find.external_id %}
@@ -77,11 +81,5 @@
{% endwith %}{% endwith %}
{% endif %}
-
-{% if first %}
-
-
-{% endif %}
-{% if forloop.counter0 %}
{% endif %}
diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html
index a3ad9fca5..4d6fe568c 100644
--- a/archaeological_finds/templates/ishtar/sheet_find.html
+++ b/archaeological_finds/templates/ishtar/sheet_find.html
@@ -15,276 +15,357 @@
{% endif %}
+
-{% with nb_image=item.images.count %}
-{% if nb_image %}
-
-
- {% include "ishtar/blocks/window_image.html" %}
-
-
-
-{% endif %}
+
-
{% trans "Associated base finds"%}
+
+ {% with nb_image=item.images.count %}
+ {% if nb_image %}
+
+
+ {% include "ishtar/blocks/window_image.html" %}
+
+
+
+ {% endif %}
-
- {% for base_find in item.base_finds.all %}
- {% with first=forloop.first|add:nb_image %}
- {% include "ishtar/sheet_basefind.html" %}
- {% endwith %}
- {% endfor %}
-
-{% endwith %}
+
-
{% trans "Identification" %}
+
+ {% for base_find in item.base_finds.all %}
+ {% with first=forloop.first|add:nb_image %}
+ {% include "ishtar/sheet_basefind.html" %}
+ {% endwith %}
+ {% endfor %}
+
+ {% if nb_image %}
+
+ {% endif %}
+ {% endwith %}
+
-
- {% include "ishtar/blocks/sheet_external_id.html" %}
-
+
+
{% trans "Identification" %}
-
- {% field_flex "Denomination" item.denomination %}
- {% field_flex "Free ID" item.label %}
- {% field_flex "Previous ID" item.previous_id %}
- {% field_flex "Excavation ID" item.excavation_ids %}
- {% field_flex "Museum ID" item.museum_id %}
- {% field_flex "Seal number" item.seal_number %}
- {% trans "Administrative index" as admin_index_label %}
- {% field_flex admin_index_label item.administrative_index %}
- {% field_flex_full "Mark" item.mark "
" " " %}
-
+
+ {% include "ishtar/blocks/sheet_external_id.html" %}
+
-
{% trans "Description" %}
-
- {% field_flex_full "Description" item.description "
" " " %}
- {% field_flex "Is complete?" item.is_complete %}
- {% field_flex_multiple "Material types" item.material_types %}
- {% field_flex "Material type quality" item.material_type_quality %}
- {% field_flex_multiple "Object types" item.object_types %}
- {% field_flex "Object type quality" item.object_type_quality %}
- {% field_flex "Find number" item.find_number %}
- {% field_flex "Minimum number of individuals (MNI)" item.min_number_of_individuals %}
- {% field_flex_full "Decoration" item.decoration "
" " " %}
- {% field_flex_full "Inscription" item.inscription "
" " " %}
- {% field_flex "Manufacturing place" item.manufacturing_place %}
- {% field_flex_multiple "Communicability" item.communicabilities %}
- {% field_flex_full "Comment" item.comment "
" " " %}
-
+
+ {% field_flex "Denomination" item.denomination %}
+ {% field_flex "Free ID" item.label %}
+ {% field_flex "Previous ID" item.previous_id %}
+ {% field_flex "Excavation ID" item.excavation_ids %}
+ {% field_flex "Museum ID" item.museum_id %}
+ {% field_flex "Seal number" item.seal_number %}
+ {% trans "Administrative index" as admin_index_label %}
+ {% field_flex admin_index_label item.administrative_index %}
+ {% field_flex_full "Mark" item.mark "
" " " %}
+
-{% if item.length or item.width or item.height or item.diameter or item.thickness or item.volume or item.weight_string or item.dimensions_comment or item.clutter_long_side or item.clutter_short_side or item.clutter_height %}
-
{% trans "Dimensions" %}
-
- {% field_flex "Length (cm)" item.length %}
- {% field_flex "Width (cm)" item.width %}
- {% field_flex "Height (cm)" item.height %}
- {% field_flex "Diameter (cm)" item.diameter %}
- {% field_flex "Thickness (cm)" item.thickness %}
- {% field_flex "Volume (l)" item.volume %}
- {% trans "Weight (g)" as weight_label %}
- {% field_flex weight_label item.weight_string %}
- {% field_flex "Clutter long side (cm)" item.clutter_long_side %}
- {% field_flex "Clutter short side (cm)" item.clutter_short_side %}
- {% field_flex "Clutter height (cm)" item.clutter_height %}
- {% field_flex_full "Dimensions comment" item.dimensions_comment "
" " " %}
-
-{% endif %}
+
{% trans "Description" %}
+
+ {% field_flex_full "Description" item.description "
" " " %}
+ {% field_flex "Is complete?" item.is_complete %}
+ {% field_flex_multiple "Material types" item.material_types %}
+ {% field_flex "Material type quality" item.material_type_quality %}
+ {% field_flex_multiple "Object types" item.object_types %}
+ {% field_flex "Object type quality" item.object_type_quality %}
+ {% field_flex "Find number" item.find_number %}
+ {% field_flex "Minimum number of individuals (MNI)" item.min_number_of_individuals %}
+ {% field_flex_full "Decoration" item.decoration "
" " " %}
+ {% field_flex_full "Inscription" item.inscription "
" " " %}
+ {% field_flex "Manufacturing place" item.manufacturing_place %}
+ {% field_flex_multiple "Communicability" item.communicabilities %}
+ {% field_flex_full "Comment" item.comment "
" " " %}
+
-
{% trans "Sheet" %}
-
- {% trans "Checked" as checked_label %}
- {% field_flex checked_label item.checked_type %}
- {% field_flex "Check date" item.check_date %}
- {% include "ishtar/blocks/sheet_creation_section.html" %}
-
+ {% if item.length or item.width or item.height or item.diameter or item.thickness or item.volume or item.weight_string or item.dimensions_comment or item.clutter_long_side or item.clutter_short_side or item.clutter_height %}
+
{% trans "Dimensions" %}
+
+ {% field_flex "Length (cm)" item.length %}
+ {% field_flex "Width (cm)" item.width %}
+ {% field_flex "Height (cm)" item.height %}
+ {% field_flex "Diameter (cm)" item.diameter %}
+ {% field_flex "Thickness (cm)" item.thickness %}
+ {% field_flex "Volume (l)" item.volume %}
+ {% trans "Weight (g)" as weight_label %}
+ {% field_flex weight_label item.weight_string %}
+ {% field_flex "Clutter long side (cm)" item.clutter_long_side %}
+ {% field_flex "Clutter short side (cm)" item.clutter_short_side %}
+ {% field_flex "Clutter height (cm)" item.clutter_height %}
+ {% field_flex_full "Dimensions comment" item.dimensions_comment "
" " " %}
+
+ {% endif %}
-{% if item.integrities.count or item.remarkabilities.count or item.conservatory_state or item.conservatory_comment or item.alterations.count or item.alteration_causes.count or item.preservation_to_considers.count or item.appraisal_date or item.treatment_emergency or item.insurance_value or item.estimated_value %}
-
{% trans "Preservation" %}
-
- {% field_flex_multiple "Integrity / interest" item.integrities %}
- {% field_flex_multiple "Remarkability" item.remarkabilities %}
- {% field_flex "Conservatory state" item.conservatory_state %}
- {% field_flex_multiple "Alteration" item.alterations %}
- {% field_flex_multiple "Alteration cause" item.alteration_causes %}
- {% field_flex_multiple "Recommended treatments" item.preservation_to_considers %}
- {% field_flex "Treatment emergency" item.treatment_emergency %}
- {% field_flex "Estimated value" item.estimated_value|default_if_none:''|intcomma '' ' '|add:CURRENCY %}
- {% field_flex "Insurance value" item.insurance_value|default_if_none:''|intcomma '' ' '|add:CURRENCY %}
- {% field_flex "Appraisal date" item.appraisal_date %}
- {% field_flex_full "Conservatory comment" item.conservatory_comment "
" " " %}
-
-{% endif %}
+
{% trans "Sheet" %}
+
+ {% trans "Checked" as checked_label %}
+ {% field_flex checked_label item.checked_type %}
+ {% field_flex "Check date" item.check_date %}
+ {% include "ishtar/blocks/sheet_creation_section.html" %}
+
+
+
+ {% if item.integrities.count or item.remarkabilities.count or item.conservatory_state or item.conservatory_comment or item.alterations.count or item.alteration_causes.count or item.preservation_to_considers.count or item.appraisal_date or item.treatment_emergency or item.insurance_value or item.estimated_value %}
+
{% trans "Preservation" %}
+
+ {% field_flex_multiple "Integrity / interest" item.integrities %}
+ {% field_flex_multiple "Remarkability" item.remarkabilities %}
+ {% field_flex "Conservatory state" item.conservatory_state %}
+ {% field_flex_multiple "Alteration" item.alterations %}
+ {% field_flex_multiple "Alteration cause" item.alteration_causes %}
+ {% field_flex_multiple "Recommended treatments" item.preservation_to_considers %}
+ {% field_flex "Treatment emergency" item.treatment_emergency %}
+ {% field_flex "Estimated value" item.estimated_value|default_if_none:''|intcomma '' ' '|add:CURRENCY %}
+ {% field_flex "Insurance value" item.insurance_value|default_if_none:''|intcomma '' ' '|add:CURRENCY %}
+ {% field_flex "Appraisal date" item.appraisal_date %}
+ {% field_flex_full "Conservatory comment" item.conservatory_comment "
" " " %}
+
+ {% endif %}
-{% if item.dating or item.dating_comment %}
-
{% trans "Dating" %}
-{% if item.datings.count %}
-
-
- {% trans "Period" %}
- {% trans "Start date" %}
- {% trans "End date" %}
- {% trans "Dating type" %}
- {% trans "Quality" %}
- {% trans "Precise dating" %}
-
-{% for dating in item.datings.all %}
-
-
- {{dating.period}}
-
-
- {{dating.start_date|default_if_none:"-"}}
-
-
- {{dating.end_date|default_if_none:"-"}}
-
-
- {{dating.dating_type|default_if_none:"-"}}
-
-
- {{dating.quality|default_if_none:"-"}}
-
-
- {{dating.precise_dating|default_if_none:"-"}}
-
-
-{% endfor %}
-
-{% endif %}
- {% field_flex_full "Comment on dating" item.dating_comment "
" " " %}
-{% endif %}
+ {% if item.datings.count or item.dating_comment %}
+
{% trans "Dating" %}
+ {% if item.datings.count %}
+
+
+ {% trans "Period" %}
+ {% trans "Start date" %}
+ {% trans "End date" %}
+ {% trans "Dating type" %}
+ {% trans "Quality" %}
+ {% trans "Precise dating" %}
+
+ {% for dating in item.datings.all %}
+
+
+ {{dating.period}}
+
+
+ {{dating.start_date|default_if_none:"-"}}
+
+
+ {{dating.end_date|default_if_none:"-"}}
+
+
+ {{dating.dating_type|default_if_none:"-"}}
+
+
+ {{dating.quality|default_if_none:"-"}}
+
+
+ {{dating.precise_dating|default_if_none:"-"}}
+
+
+ {% endfor %}
+
+ {% endif %}
+ {% field_flex_full "Comment on dating" item.dating_comment "
" " " %}
+ {% endif %}
+
+
+ {% if item.container %}
+
{% trans "Warehouse"%}
+
+ {% field_flex_detail "Container" item.container %}
+ {% field_flex "Container ID" item.container.cached_location %}
+ {% field_flex_detail "Responsible warehouse" item.container.responsible %}
+ {% field_flex_detail "Location (warehouse)" item.container.location %}
+ {% field_flex "Precise localisation" item.container.cached_division %}
+
+ {% endif %}
+ {% if item.upstream_treatment or item.downstream_treatment or item.treatments.count %}
+ {% if item.treatments.all %}
+
{% trans "Treatments"%}
+
+
+
+ {% trans "Year - index" %}
+ {% trans "Label" %}
+ {% trans "Type" %}
+ {% trans "State" %}
+ {% trans "Related finds (max. 15 displayed)" %}
+ {% trans "Doer" %}
+ {% trans "Container" %}
+ {% trans "Start date" %}
+ {% trans "End date" %}
+
+ {% for treatment in item.treatments.all %}
+
+
+
+
+
+
+ {{ treatment.year }} - {{treatment.index}}
+ {{ treatment.label|default_if_none:"-" }}
+ {{ treatment.treatment_types_lbl }}
+ {{ treatment.treatment_state|default_if_none:"-" }}
+ {% for it in treatment.limited_finds %}{{it}} {{it|link_to_window}} {% endfor %}
+ {{ treatment.person|default_if_none:"-" }}
+ {{ treatment.container|default_if_none:"-" }}
+ {{ treatment.start_date|default_if_none:"-" }}
+ {{ treatment.end_date|default_if_none:"-" }}
+
+ {% endfor %}
+
+ {% endif %}
-{% include "ishtar/blocks/sheet_json.html" %}
+ {% if item.upstream_treatment %}
+
{% trans "Upstream treatment" %}
+
+
+
+ {% trans "Year - index" %}
+ {% trans "Label" %}
+ {% trans "Type" %}
+ {% trans "State" %}
+ {% trans "Related finds (max. 15 displayed)" %}
+ {% trans "Doer" %}
+ {% trans "Container" %}
+ {% trans "Start date" %}
+ {% trans "End date" %}
+
+ {% for items, treatment in item.limited_upstream_treatments %}
+
+
+
+
+
+
+ {{ treatment.year }} - {{treatment.index}}
+ {{ treatment.label|default_if_none:"-" }}
+ {{ treatment.treatment_types_lbl }}
+ {{ treatment.treatment_state|default_if_none:"-" }}
+ {% for it in items %}{{it}} {{it|link_to_window}} {% endfor %}
+ {{ treatment.person|default_if_none:"-" }}
+ {{ treatment.container|default_if_none:"-" }}
+ {{ treatment.start_date|default_if_none:"-" }}
+ {{ treatment.end_date|default_if_none:"-" }}
+
+ {% endfor %}
+
+
{% trans "CSV" %} ({{ENCODING}})
+ {% endif %}
-{% if item.container %}
-
{% trans "Warehouse"%}
-
- {% field_flex_detail "Container" item.container %}
- {% field_flex "Container ID" item.container.cached_location %}
- {% field_flex_detail "Responsible warehouse" item.container.responsible %}
- {% field_flex_detail "Location (warehouse)" item.container.location %}
- {% field_flex "Precise localisation" item.container.cached_division %}
-
-{% endif %}
+ {% if item.downstream_treatment %}
+
{% trans "Downstream treatment" %}
+
+
+
+ {% trans "Year - index" %}
+ {% trans "Label" %}
+ {% trans "Type" %}
+ {% trans "State" %}
+ {% trans "Related finds (max. 15 displayed)" %}
+ {% trans "Doer" %}
+ {% trans "Container" %}
+ {% trans "Start date" %}
+ {% trans "End date" %}
+
+ {% for items, treatment in item.limited_downstream_treatments %}
+
+
+
+
+
+
+ {{ treatment.year }} - {{treatment.index}}
+ {{ treatment.label|default_if_none:"-" }}
+ {{ treatment.treatment_types_lbl }}
+ {{ treatment.treatment_state|default_if_none:"-" }}
+ {% for it in items %}{{it}} {{ it|link_to_window}} {% endfor %}
+ {{ treatment.person|default_if_none:"" }}
+ {{ treatment.container|default_if_none:"-" }}
+ {{ treatment.start_date|default_if_none:"" }}
+ {{ treatment.end_date|default_if_none:"" }}
+
+ {% endfor %}
+
-{% if item.upstream_treatment or item.downstream_treatment or item.treatments.count %}
-
{% trans "Treatments"%}
-
-
-
- {% trans "Year - index" %}
- {% trans "Label" %}
- {% trans "Type" %}
- {% trans "State" %}
- {% trans "Related finds (max. 15 displayed)" %}
- {% trans "Doer" %}
- {% trans "Container" %}
- {% trans "Start date" %}
- {% trans "End date" %}
-
- {% for treatment in item.treatments.all %}
-
-
-
-
-
-
- {{ treatment.year }} - {{treatment.index}}
- {{ treatment.label|default_if_none:"-" }}
- {{ treatment.treatment_types_lbl }}
- {{ treatment.treatment_state|default_if_none:"-" }}
- {% for it in treatment.limited_finds %}{{it}} {{it|link_to_window}} {% endfor %}
- {{ treatment.person|default_if_none:"-" }}
- {{ treatment.container|default_if_none:"-" }}
- {{ treatment.start_date|default_if_none:"-" }}
- {{ treatment.end_date|default_if_none:"-" }}
-
- {% endfor %}
-
-
-{% if item.upstream_treatment %}
-
{% trans "Upstream treatment" %}
-
-
-
- {% trans "Year - index" %}
- {% trans "Label" %}
- {% trans "Type" %}
- {% trans "State" %}
- {% trans "Related finds (max. 15 displayed)" %}
- {% trans "Doer" %}
- {% trans "Container" %}
- {% trans "Start date" %}
- {% trans "End date" %}
-
- {% for items, treatment in item.limited_upstream_treatments %}
-
-
-
-
-
-
- {{ treatment.year }} - {{treatment.index}}
- {{ treatment.label|default_if_none:"-" }}
- {{ treatment.treatment_types_lbl }}
- {{ treatment.treatment_state|default_if_none:"-" }}
- {% for it in items %}{{it}} {{it|link_to_window}} {% endfor %}
- {{ treatment.person|default_if_none:"-" }}
- {{ treatment.container|default_if_none:"-" }}
- {{ treatment.start_date|default_if_none:"-" }}
- {{ treatment.end_date|default_if_none:"-" }}
-
- {% endfor %}
-
-
{% trans "CSV" %} ({{ENCODING}})
-{% endif %}
-
-{% if item.downstream_treatment %}
-
{% trans "Downstream treatment" %}
-
-
-
- {% trans "Year - index" %}
- {% trans "Label" %}
- {% trans "Type" %}
- {% trans "State" %}
- {% trans "Related finds (max. 15 displayed)" %}
- {% trans "Doer" %}
- {% trans "Container" %}
- {% trans "Start date" %}
- {% trans "End date" %}
-
- {% for items, treatment in item.limited_downstream_treatments %}
-
-
-
-
-
-
- {{ treatment.year }} - {{treatment.index}}
- {{ treatment.label|default_if_none:"-" }}
- {{ treatment.treatment_types_lbl }}
- {{ treatment.treatment_state|default_if_none:"-" }}
- {% for it in items %}{{it}} {{ it|link_to_window}} {% endfor %}
- {{ treatment.person|default_if_none:"" }}
- {{ treatment.container|default_if_none:"-" }}
- {{ treatment.start_date|default_if_none:"" }}
- {{ treatment.end_date|default_if_none:"" }}
-
- {% endfor %}
-
-
-
{% trans "CSV" %} ({{ENCODING}})
-{% endif %}
-
-{% endif %}
-
-{% trans "Associated documents" as finds_docs %}
-{% if item.documents.count %}
-{% dynamic_table_document finds_docs 'documents' 'finds' item.pk '' output %}
-{% endif %}
+
{% trans "CSV" %} ({{ENCODING}})
+ {% endif %}
+ {% endif %}
+
+ {% if item.documents.count %}
+
+ {% trans "Associated documents" as finds_docs %}
+ {% dynamic_table_document finds_docs 'documents' 'finds' item.pk '' output %}
+
+ {% endif %}
+
+ {% include "ishtar/blocks/sheet_json.html" %}
+
+
{% endblock %}
+
diff --git a/ishtar_common/templates/ishtar/blocks/sheet_json.html b/ishtar_common/templates/ishtar/blocks/sheet_json.html
index 8927eb057..df9340c6f 100644
--- a/ishtar_common/templates/ishtar/blocks/sheet_json.html
+++ b/ishtar_common/templates/ishtar/blocks/sheet_json.html
@@ -5,5 +5,7 @@
{% if forloop.first %}
{% endif %}
{% field_flex label value %}
{% if forloop.last %}
{% endif %}
+{% empty %}
+{% trans "No data" %}
{% endfor %}
{% endfor %}
diff --git a/scss/custom.scss b/scss/custom.scss
index f0168d469..09074de0b 100644
--- a/scss/custom.scss
+++ b/scss/custom.scss
@@ -136,6 +136,11 @@ pre {
background-color: white;
}
+
+.tab-content{
+ padding-top: 1em;
+}
+
.input-progress.form-control:focus,
.input-progress{
background-color: $gray-300;
--
cgit v1.2.3
From c8791afe348c41aedcba9abbc3014e5db9c875f8 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Mon, 19 Nov 2018 10:17:06 +0100
Subject: Treatment n<->1: copy and merge data
---
archaeological_finds/models_treatments.py | 7 ++++++-
ishtar_common/utils.py | 10 ++++++++--
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index c7b888c0d..d92c98235 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -34,7 +34,8 @@ from ishtar_common.models import Document, GeneralType, \
ImageModel, BaseHistorizedItem, OwnPerms, HistoricalRecords, Person, \
Organization, ValueGetter, post_save_cache, ShortMenuItem, \
DashboardFormItem, ExternalIdManager
-from ishtar_common.utils import cached_label_changed, get_current_year
+from ishtar_common.utils import cached_label_changed, get_current_year, \
+ update_data
class TreatmentState(GeneralType):
@@ -351,6 +352,10 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
current_documents.append(document.pk)
new_find.documents.add(document)
+ # data
+ new_find.data = update_data(new_find.data, upstream_item.data,
+ merge=True)
+
upstream_item.downstream_treatment = self
upstream_item.history_modifier = self.history_modifier
upstream_item.save()
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index 4f968af31..ff67fc470 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -145,18 +145,24 @@ def check_model_access_control(request, model, available_perms=None):
return allowed, own
-def update_data(data_1, data_2):
+def update_data(data_1, data_2, merge=False):
"""
Update a data directory taking account of key detail
"""
res = {}
if not isinstance(data_1, dict) or not isinstance(data_2, dict):
+ if data_2 and not data_1:
+ return data_2
+ if not merge:
+ return data_1
+ if data_2 and data_2 != data_1:
+ return data_1 + u" ; " + data_2
return data_1
for k in data_1:
if k not in data_2:
res[k] = data_1[k]
else:
- res[k] = update_data(data_1[k], data_2[k])
+ res[k] = update_data(data_1[k], data_2[k], merge=merge)
for k in data_2:
if k not in data_1:
res[k] = data_2[k]
--
cgit v1.2.3
From 35a8c73721c83e24494dd59e35bdbf76cf990f2b Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Mon, 19 Nov 2018 13:40:35 +0100
Subject: Find wizard: manage a simplified form for find with many base finds
---
archaeological_finds/forms.py | 166 ++++++++++++++-------
archaeological_finds/models_finds.py | 9 ++
.../templates/ishtar/wizard/wizard_simplefind.html | 13 ++
archaeological_finds/views.py | 26 +++-
archaeological_finds/wizards.py | 16 +-
5 files changed, 172 insertions(+), 58 deletions(-)
create mode 100644 archaeological_finds/templates/ishtar/wizard/wizard_simplefind.html
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 958b1896c..970b35f92 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -72,11 +72,12 @@ __all__ = [
'AdministrativeActTreatmentFormSelection',
'AdministrativeActTreatmentFileModifForm',
'DashboardTreatmentForm', 'DashboardTreatmentFileForm',
- 'RecordFormSelection', 'FindForm', 'DateForm', 'DatingFormSet',
- 'PreservationForm', 'FindBasketFormSelection', 'FindBasketForm',
- 'FindSelect', 'FindFormSelection', 'FindFormSelectionWarehouseModule',
- 'MultipleFindFormSelection', 'MultipleFindFormSelectionWarehouseModule',
- 'FindMultipleFormSelection', 'check_form', 'check_exist', 'check_not_exist',
+ 'RecordFormSelection', 'FindForm', 'SimpleFindForm', 'DateForm',
+ 'DatingFormSet', 'PreservationForm', 'FindBasketFormSelection',
+ 'FindBasketForm', 'FindSelect', 'FindFormSelection',
+ 'FindFormSelectionWarehouseModule', 'MultipleFindFormSelection',
+ 'MultipleFindFormSelectionWarehouseModule', 'FindMultipleFormSelection',
+ 'check_form', 'check_exist', 'check_not_exist',
'check_value', 'check_type_field', 'check_type_not_field',
'check_treatment', 'ResultFindForm', 'ResultFindFormSet',
'FindDeletionForm', 'UpstreamFindFormSelection', 'NewFindBasketForm',
@@ -123,23 +124,33 @@ class RecordFormSelection(CustomForm, forms.Form):
cr.operation.pk)
-class FindForm(CustomForm, ManageOldType):
+class BaseFindForm(CustomForm, ManageOldType):
+ """
+ Base find form with no field related to base_find
+ """
file_upload = True
form_label = _("Find")
- form_admin_name = _(u"Find - 020 - General")
- form_slug = "find-020-general"
- base_models = ['get_first_base_find', 'object_type', 'material_type',
- 'communicabilitie']
+ form_admin_name = _(u"Simple find - 020 - General")
+ form_slug = "simplefind-020-general"
+ base_models = ['object_type', 'material_type', 'communicabilitie']
associated_models = {
'material_type': models.MaterialType,
'object_type': models.ObjectType,
'communicabilitie': models.CommunicabilityType,
- 'get_first_base_find__batch': models.BatchType,
- 'get_first_base_find__spatial_reference_system': SpatialReferenceSystem,
'material_type_quality': models.MaterialTypeQualityType,
'object_type_quality': models.ObjectTypeQualityType,
'checked_type': models.CheckedType,
}
+ field_order = [
+ 'label', 'denomination', 'previous_id', 'museum_id', 'seal_number',
+ 'mark', 'description', 'is_complete', 'material_type',
+ 'material_type_quality', 'object_type', 'object_type_quality',
+ 'find_number', 'min_number_of_individuals', 'inscription',
+ 'manufacturing_place', 'communicabilitie', 'comment', 'dating_comment',
+ 'length', 'width', 'height', 'diameter', 'thickness', 'volume',
+ 'weight', 'clutter_long_side', 'clutter_short_side', 'clutter_height',
+ 'dimensions_comment', 'checked_type', 'check_date'
+ ]
HEADERS = {}
HEADERS['label'] = FormHeader(_(u"Identification"))
@@ -148,8 +159,6 @@ class FindForm(CustomForm, ManageOldType):
validators=[validators.MaxLengthValidator(60)])
denomination = forms.CharField(label=_(u"Denomination"), required=False)
previous_id = forms.CharField(label=_("Previous ID"), required=False)
- get_first_base_find__excavation_id = forms.CharField(
- label=_(u"Excavation ID"), required=False)
museum_id = forms.CharField(label=_(u"Museum ID"), required=False)
seal_number = forms.CharField(label=_(u"Seal number"), required=False)
mark = forms.CharField(label=_(u"Mark"), required=False)
@@ -157,14 +166,6 @@ class FindForm(CustomForm, ManageOldType):
HEADERS['description'] = FormHeader(_(u"Description"))
description = forms.CharField(label=_(u"Description"),
widget=forms.Textarea, required=False)
- get_first_base_find__discovery_date = forms.DateField(
- label=_(u"Discovery date (exact or TPQ)"), widget=DatePicker,
- required=False)
- get_first_base_find__discovery_date_taq = forms.DateField(
- label=_(u"Discovery date (TAQ)"), widget=DatePicker, required=False)
- get_first_base_find__batch = forms.ChoiceField(
- label=_(u"Batch/object"), choices=[],
- required=False)
is_complete = forms.NullBooleanField(label=_(u"Is complete?"),
required=False)
material_type = widgets.Select2MultipleField(
@@ -212,8 +213,86 @@ class FindForm(CustomForm, ManageOldType):
dimensions_comment = forms.CharField(
label=_(u"Dimensions comment"), required=False, widget=forms.Textarea)
- HEADERS['get_first_base_find__x'] = FormHeader(
- _(u"Coordinates"))
+ HEADERS['checked_type'] = FormHeader(_(u"Sheet"))
+ checked_type = forms.ChoiceField(label=_(u"Check"), required=False)
+ check_date = forms.DateField(
+ initial=get_now, label=_(u"Check date"), widget=DatePicker)
+
+ TYPES = [
+ FieldType('material_type', models.MaterialType, is_multiple=True),
+ FieldType('material_type_quality', models.MaterialTypeQualityType),
+ FieldType('object_type', models.ObjectType, is_multiple=True),
+ FieldType('object_type_quality', models.ObjectTypeQualityType),
+ FieldType('communicabilitie', models.CommunicabilityType,
+ is_multiple=True),
+ FieldType('checked_type', models.CheckedType, is_multiple=True),
+ ]
+
+ def __init__(self, *args, **kwargs):
+ context_record = kwargs.pop('context_record')
+ super(BaseFindForm, self).__init__(*args, **kwargs)
+ if not context_record or \
+ not context_record.operation.operation_type.judiciary:
+ self.fields.pop('seal_number')
+
+ def clean(self):
+ clutter_long_side = self.cleaned_data.get('clutter_long_side', None)
+ clutter_short_side = self.cleaned_data.get('clutter_short_side', None)
+
+ if clutter_long_side and clutter_short_side and \
+ clutter_short_side > clutter_long_side:
+ raise forms.ValidationError(
+ unicode(_(
+ u"Clutter: short side cannot be bigger than the long side."
+ ))
+ )
+ return self.cleaned_data
+
+
+class FindForm(BaseFindForm):
+ file_upload = True
+ form_label = _("Find")
+ form_admin_name = _(u"Find - 020 - General")
+ form_slug = "find-020-general"
+ base_models = ['get_first_base_find'] + BaseFindForm.base_models
+ associated_models = BaseFindForm.associated_models.copy()
+ associated_models.update({
+ 'get_first_base_find__batch': models.BatchType,
+ 'get_first_base_find__spatial_reference_system': SpatialReferenceSystem,
+ })
+ field_order = [
+ 'label', 'denomination', 'previous_id',
+ 'get_first_base_find__excavation_id', 'museum_id', 'seal_number',
+ 'mark', 'description', 'get_first_base_find__discovery_date',
+ 'get_first_base_find__discovery_date_taq', 'get_first_base_find__batch',
+ 'is_complete', 'material_type', 'material_type_quality', 'object_type',
+ 'object_type_quality', 'find_number', 'min_number_of_individuals',
+ 'inscription', 'manufacturing_place', 'communicabilitie', 'comment',
+ 'dating_comment', 'length', 'width', 'height', 'diameter', 'thickness',
+ 'volume', 'weight', 'clutter_long_side', 'clutter_short_side',
+ 'clutter_height', 'dimensions_comment', 'get_first_base_find__x',
+ 'get_first_base_find__estimated_error_x', 'get_first_base_find__y',
+ 'get_first_base_find__estimated_error_y', 'get_first_base_find__z',
+ 'get_first_base_find__estimated_error_z',
+ 'get_first_base_find__spatial_reference_system',
+ 'get_first_base_find__topographic_localisation', 'checked_type',
+ 'check_date',
+ ]
+
+ HEADERS = BaseFindForm.HEADERS.copy()
+ get_first_base_find__excavation_id = forms.CharField(
+ label=_(u"Excavation ID"), required=False)
+
+ get_first_base_find__discovery_date = forms.DateField(
+ label=_(u"Discovery date (exact or TPQ)"), widget=DatePicker,
+ required=False)
+ get_first_base_find__discovery_date_taq = forms.DateField(
+ label=_(u"Discovery date (TAQ)"), widget=DatePicker, required=False)
+ get_first_base_find__batch = forms.ChoiceField(
+ label=_(u"Batch/object"), choices=[],
+ required=False)
+
+ HEADERS['get_first_base_find__x'] = FormHeader(_(u"Coordinates"))
get_first_base_find__x = forms.FloatField(label=_(u"X"), required=False)
get_first_base_find__estimated_error_x = \
forms.FloatField(label=_(u"Estimated error for X"), required=False)
@@ -231,22 +310,10 @@ class FindForm(CustomForm, ManageOldType):
required=False, max_length=120
)
- HEADERS['checked_type'] = FormHeader(_(u"Sheet"))
- checked_type = forms.ChoiceField(label=_(u"Check"), required=False)
- check_date = forms.DateField(
- initial=get_now, label=_(u"Check date"), widget=DatePicker)
-
- TYPES = [
- FieldType('material_type', models.MaterialType, is_multiple=True),
- FieldType('material_type_quality', models.MaterialTypeQualityType),
- FieldType('object_type', models.ObjectType, is_multiple=True),
- FieldType('object_type_quality', models.ObjectTypeQualityType),
- FieldType('communicabilitie', models.CommunicabilityType,
- is_multiple=True),
+ TYPES = BaseFindForm.TYPES + [
FieldType('get_first_base_find__batch', models.BatchType),
FieldType('get_first_base_find__spatial_reference_system',
SpatialReferenceSystem),
- FieldType('checked_type', models.CheckedType, is_multiple=True),
]
PROFILE_FILTER = {
'mapping': [
@@ -258,14 +325,8 @@ class FindForm(CustomForm, ManageOldType):
],
}
- def __init__(self, *args, **kwargs):
- context_record = kwargs.pop('context_record')
- super(FindForm, self).__init__(*args, **kwargs)
- if not context_record or \
- not context_record.operation.operation_type.judiciary:
- self.fields.pop('seal_number')
-
def clean(self):
+ self.cleaned_data = super(FindForm, self).clean()
taq = self.cleaned_data.get('get_first_base_find__discovery_date_taq',
None)
tpq = self.cleaned_data.get('get_first_base_find__discovery_date',
@@ -282,17 +343,6 @@ class FindForm(CustomForm, ManageOldType):
unicode(_(u"Discovery date: TAQ date must be older than TPQ "
u"date.")))
- clutter_long_side = self.cleaned_data.get('clutter_long_side', None)
- clutter_short_side = self.cleaned_data.get('clutter_short_side', None)
-
- if clutter_long_side and clutter_short_side and \
- clutter_short_side > clutter_long_side:
- raise forms.ValidationError(
- unicode(_(
- u"Clutter: short side cannot be bigger than the long side."
- ))
- )
-
if not get_current_profile().mapping:
return self.cleaned_data
x = self.cleaned_data.get('get_first_base_find__x', None)
@@ -320,6 +370,12 @@ class FindForm(CustomForm, ManageOldType):
return self.cleaned_data
+class SimpleFindForm(BaseFindForm):
+ def __init__(self, *args, **kwargs):
+ self.base_finds = kwargs.pop('base_finds')
+ super(SimpleFindForm, self).__init__(*args, **kwargs)
+
+
class ResultingFindForm(CustomForm, ManageOldType):
file_upload = True
form_label = _("Resulting find")
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index 3483113d7..1fb4f6132 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -327,6 +327,15 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, OwnPerms):
finds = self.find.filter().order_by("-order").all()
return finds and finds[0]
+ def get_main_find(self):
+ """
+ Get the last find which is not related to many base_find
+ """
+ for find in self.find.order_by('-pk'):
+ if find.base_finds.count() == 1:
+ return find
+ return
+
def generate_index(self):
"""
Generate index based on operation or context record (based on
diff --git a/archaeological_finds/templates/ishtar/wizard/wizard_simplefind.html b/archaeological_finds/templates/ishtar/wizard/wizard_simplefind.html
new file mode 100644
index 000000000..b1d77ba81
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/wizard/wizard_simplefind.html
@@ -0,0 +1,13 @@
+{% extends "ishtar/wizard/default_wizard.html" %}
+{% load i18n %}
+{% block form_head %}
+
+
+ {% trans 'This find is related to many base finds. To edit field related to base finds edit the corresponding find between theses:' %}
+
{% for base_find in wizard.form.base_finds %}
+ {% with find=base_find.get_main_find %}
+ {{find.short_label }}
+
+ {% endwith %}{% endfor %}
+
+{% endblock %}
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index d6924257f..ceb00d432 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -187,10 +187,25 @@ find_search_wizard = FindSearch.as_view([
condition_dict=find_search_condition_dict
)
+
+def has_many_base_find(wizard):
+ find = wizard.get_current_object()
+ if not find:
+ return False
+ return find.base_finds.count() > 1
+
+
+def has_only_one_base_find(wizard):
+ return not has_many_base_find(wizard)
+
+
find_modification_condition_dict = {
'selec-find_modification': check_not_warehouse_module,
'selecw-find_modification': check_warehouse_module,
'preservation-find_modification': check_preservation_module,
+ 'selecrecord-find_modification': has_only_one_base_find,
+ 'find-find_modification': has_only_one_base_find,
+ 'simplefind-find_modification': has_many_base_find,
}
find_modification_steps = [
@@ -198,6 +213,7 @@ find_modification_steps = [
('selecw-find_modification', FindFormSelectionWarehouseModule),
('selecrecord-find_modification', RecordFormSelection),
('find-find_modification', FindForm),
+ ('simplefind-find_modification', SimpleFindForm),
('preservation-find_modification', PreservationForm),
('dating-find_modification', DatingFormSet),
('final-find_modification', FinalForm)
@@ -218,9 +234,15 @@ def find_modify(request, pk):
key = 'selecw-find_modification'
FindModificationWizard.session_set_value(
request, key, 'pk', pk, reset=True)
+ q = models.Find.objects.filter(pk=pk)
+ if not q.count():
+ raise Http404()
+ step = 'find-find_modification'
+ find = q.all()[0]
+ if find.base_finds.count() > 1:
+ step = 'simplefind-find_modification'
return redirect(
- reverse('find_modification',
- kwargs={'step': 'selecrecord-find_modification'}))
+ reverse('find_modification', kwargs={'step': step}))
find_deletion_condition_dict = {
'selec-find_deletion': check_not_warehouse_module,
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index 3043d22aa..3c25258a6 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -55,11 +55,21 @@ class FindWizard(Wizard):
if base_finds:
return base_finds[0].context_record
+ def get_current_basefinds(self):
+ find = self.get_current_object()
+ if not find:
+ return []
+ return find.base_finds.all()
+
def get_form_kwargs(self, step=None):
kwargs = super(FindWizard, self).get_form_kwargs(step)
- if step not in ('find-find_creation', 'find-find_modification'):
+ if step not in (
+ 'find-find_creation', 'find-find_modification',
+ 'simplefind-find_modification',):
return kwargs
kwargs['context_record'] = self.get_current_contextrecord()
+ if step == 'simplefind-find_modification':
+ kwargs['base_finds'] = self.get_current_basefinds()
return kwargs
def get_context_data(self, form, **kwargs):
@@ -90,6 +100,10 @@ class FindModificationWizard(FindWizard):
'selec-find_modification': ['pk'],
'selecw-find_modification': ['pk'],
}
+ wizard_templates = {
+ 'simplefind-find_modification':
+ 'ishtar/wizard/wizard_simplefind.html',
+ }
class FindDeletionWizard(DeletionWizard):
--
cgit v1.2.3
From c943fb4cbfa56163f93f88e50614613839fc77c8 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Mon, 19 Nov 2018 20:18:38 +0100
Subject: Manage 1<->n treatments wizard
---
archaeological_finds/forms.py | 66 +++++++++++++++++++++++++++---
archaeological_finds/forms_treatments.py | 16 +++++++-
archaeological_finds/ishtar_menu.py | 7 ++++
archaeological_finds/models_finds.py | 10 +++--
archaeological_finds/models_treatments.py | 48 ++++++++++++++++++++--
archaeological_finds/urls.py | 3 ++
archaeological_finds/views.py | 13 ++++++
archaeological_finds/wizards.py | 67 ++++++++++++++++++++++++++++++-
ishtar_common/templates/base.html | 37 +++++++++++------
9 files changed, 238 insertions(+), 29 deletions(-)
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 970b35f92..b95ac90c6 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -44,7 +44,7 @@ from archaeological_finds.forms_treatments import TreatmentSelect, \
AdministrativeActTreatmentFileFormSelection, \
AdministrativeActTreatmentFileModifForm, \
DashboardForm as DashboardTreatmentForm, N1TreatmentForm,\
- DashboardTreatmentFileForm, QAFindTreatmentForm
+ DashboardTreatmentFileForm, QAFindTreatmentForm, OneNTreatmentForm
from archaeological_operations.models import Period, ArchaeologicalSite, \
RelationType as OpeRelationType
from archaeological_operations.widgets import OAWidget
@@ -84,7 +84,8 @@ __all__ = [
'SelectFindBasketForm', 'DeleteFindBasketForm', 'FindBasketAddItemForm',
'QAFindFormSingle', 'QAFindFormMulti', 'QAFindBasketForm',
'QAFindTreatmentForm',
- 'N1TreatmentForm', 'ResultingFindForm'
+ 'N1TreatmentForm', 'OneNTreatmentForm', 'ResultingFindForm',
+ 'ResultingFindsForm', 'SingleUpstreamFindFormSelection'
]
logger = logging.getLogger(__name__)
@@ -379,8 +380,8 @@ class SimpleFindForm(BaseFindForm):
class ResultingFindForm(CustomForm, ManageOldType):
file_upload = True
form_label = _("Resulting find")
- form_admin_name = _(u"Treatment n-1 - 030 - General")
- form_slug = "treatmentn1-030-general"
+ form_admin_name = _(u"Treatment n-1 - 030 - Resulting find")
+ form_slug = "treatmentn1-030-resulting-find"
associated_models = {
'resulting_material_type': models.MaterialType,
@@ -472,6 +473,50 @@ class ResultingFindForm(CustomForm, ManageOldType):
]
+class ResultingFindsForm(CustomForm, ManageOldType):
+ form_label = _("Resulting finds")
+ form_admin_name = _(u"Treatment 1-n - 030 - Resulting finds")
+ form_slug = "treatment1n-030-resulting-finds"
+ associated_models = {}
+
+ resultings_number = forms.IntegerField(
+ label=_(u"Number of resulting finds"),
+ min_value=1
+ )
+ resultings_label = forms.CharField(
+ label=_(u"Prefix label for resulting finds"),
+ validators=[validators.MaxLengthValidator(200)],
+ help_text=_(
+ u'E.g.: with a prefix "item-", each resulting item will be named '
+ u'"item-1", "item-2", "item-3"')
+ )
+ resultings_start_number = forms.IntegerField(
+ label=_(u"Numbering starting from"), initial=1, min_value=0
+ )
+ resultings_basket_name = forms.CharField(
+ label=_(u"Name of the new basket containing the resulting items"),
+ max_length=200
+ )
+
+ def __init__(self, *args, **kwargs):
+ self.user = None
+ if 'user' in kwargs:
+ self.user = kwargs.pop('user')
+ if hasattr(self.user, 'ishtaruser'):
+ self.user = self.user.ishtaruser
+ super(ResultingFindsForm, self).__init__(*args, **kwargs)
+ if not self.user:
+ return
+
+ def clean(self):
+ q = models.FindBasket.objects.filter(
+ user=self.user, label=self.cleaned_data['resultings_basket_name'])
+ if q.count():
+ raise forms.ValidationError(_(u"A basket with this label already "
+ u"exists."))
+ return self.cleaned_data
+
+
class QAFindFormMulti(QAForm):
form_admin_name = _(u"Find - Quick action - Modify")
form_slug = "find-quickaction-modify"
@@ -1065,7 +1110,7 @@ class FindDeletionForm(FinalForm):
class UpstreamFindFormSelection(PkWizardSearch, FindFormSelection):
- form_label = _(u"Upstream find")
+ form_label = _(u"Upstream finds")
current_model = models.Find
pk_key = 'resulting_pk'
@@ -1084,6 +1129,17 @@ class UpstreamFindFormSelection(PkWizardSearch, FindFormSelection):
self.fields['resulting_pk'] = self.fields.pop('pk')
+class SingleUpstreamFindFormSelection(UpstreamFindFormSelection):
+ current_model = models.Find
+ pk = forms.CharField(
+ label="", required=False,
+ widget=widgets.DataTable(
+ reverse_lazy('get-find'),
+ FindSelect, current_model,
+ source_full=reverse_lazy('get-find-full')),
+ validators=[valid_ids(current_model)])
+
+
class FindBasketSelect(CustomForm, TableSelect):
_model = models.FindBasket
diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py
index 99a685825..be53dd418 100644
--- a/archaeological_finds/forms_treatments.py
+++ b/archaeological_finds/forms_treatments.py
@@ -80,7 +80,7 @@ class TreatmentFormSelection(forms.Form):
class BaseTreatmentForm(CustomForm, ManageOldType):
- form_label = _(u"Base treatment")
+ form_label = _(u"Treatment")
form_admin_name = _(u"Treatment - 020 - General")
form_slug = "treatment-020-general"
base_models = ['treatment_type']
@@ -231,7 +231,6 @@ class BaseTreatmentForm(CustomForm, ManageOldType):
class N1TreatmentForm(BaseTreatmentForm):
- form_label = _(u"Base treatment")
form_admin_name = _(u"Treatment n-1 - 020 - General")
form_slug = "treatmentn1-020-general"
@@ -244,6 +243,19 @@ class N1TreatmentForm(BaseTreatmentForm):
]
+class OneNTreatmentForm(BaseTreatmentForm):
+ form_admin_name = _(u"Treatment 1-n - 020 - General")
+ form_slug = "treatment1n-020-general"
+
+ TYPES = [
+ FieldType('treatment_state', models.TreatmentState),
+ FieldType(
+ 'treatment_type', models.TreatmentType, is_multiple=True,
+ extra_args={'dct': {'upstream_is_many': False,
+ 'downstream_is_many': True}})
+ ]
+
+
class TreatmentModifyForm(BaseTreatmentForm):
index = forms.IntegerField(_(u"Index"))
id = forms.IntegerField(' ', widget=forms.HiddenInput, required=False)
diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py
index cd7ed19b7..2f37f4c4b 100644
--- a/archaeological_finds/ishtar_menu.py
+++ b/archaeological_finds/ishtar_menu.py
@@ -167,6 +167,13 @@ MENU_SECTIONS = [
u"- creation"),
model=models.Treatment,
access_controls=['change_find', 'change_own_find']),
+ MenuItem(
+ 'treatment_creation_1n',
+ _(u"Treatment "
+ u"1 n "
+ u"- creation"),
+ model=models.Treatment,
+ access_controls=['change_find', 'change_own_find']),
MenuItem('treatment_modification',
_(u"Modification"),
model=models.Treatment,
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index 1fb4f6132..e856cb8ca 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -1348,7 +1348,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,
q = q.filter(**fltr)
return q.filter(downstream_treatment__isnull=True).count()
- def duplicate(self, user):
+ def duplicate(self, user, copy_datings=True):
model = self.__class__
new = model.objects.get(pk=self.pk)
@@ -1366,9 +1366,11 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,
m2m = [field.name for field in model._meta.many_to_many
if field.name not in PRIVATE_FIELDS]
for field in m2m:
- if field == 'images':
- for doc in Document.objects.filter(finds__pk=self.pk).all():
- doc.finds.add(new.pk)
+ if field == 'datings' and copy_datings:
+ for dating in self.datings.all():
+ dating.pk = None
+ dating.save()
+ new.datings.add(dating)
else:
for val in getattr(self, field).all():
getattr(new, field).add(val)
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index d92c98235..68935f142 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -29,6 +29,7 @@ from django.utils.translation import ugettext_lazy as _, pgettext_lazy, \
from archaeological_finds.models_finds import Find, FindBasket, TreatmentType
from archaeological_operations.models import ClosedItem, Operation
+from archaeological_context_records.models import Dating
from archaeological_warehouse.models import Warehouse, Container
from ishtar_common.models import Document, GeneralType, \
ImageModel, BaseHistorizedItem, OwnPerms, HistoricalRecords, Person, \
@@ -72,7 +73,8 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
"person__cached_label": _(u"Responsible"),
}
# extra keys than can be passed to save method
- EXTRA_SAVED_KEYS = ('items', 'user', 'resulting_find', 'upstream_items')
+ EXTRA_SAVED_KEYS = ('items', 'user', 'resulting_find', 'upstream_items',
+ 'resulting_finds', 'upstream_item')
# alternative names of fields for searches
ALT_NAMES = {
@@ -293,7 +295,10 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
if q.count():
self.index = q.all().aggregate(Max('index'))['index__max'] + 1
- def _create_resulting_find(self, resulting_find, upstream_items):
+ def _create_n_1_resulting_find(self, resulting_find, upstream_items):
+ """
+ Manage creation of n<->1 treatment
+ """
m2m = {}
base_fields = [f.name for f in Find._meta.get_fields()]
for k in resulting_find.keys():
@@ -363,15 +368,45 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
new_find.skip_history_when_saving = True
new_find.save()
+ def _create_1_n_resulting_find(self, resulting_finds, upstream_item, user):
+ """
+ Manage creation of 1<->n treatment
+ """
+ new_items = []
+ start_number = resulting_finds['start_number']
+ for idx in range(resulting_finds['number']):
+ label = resulting_finds['label'] + unicode(start_number + idx)
+ new_find = Find.objects.get(
+ pk=upstream_item.pk).duplicate(user)
+ new_find.upstream_treatment = self
+ new_find.label = label
+ new_find.skip_history_when_saving = True
+ new_find.save()
+ new_items.append(new_find)
+
+ upstream_item.downstream_treatment = self
+ upstream_item.skip_history_when_saving = True
+ upstream_item.save()
+
+ if getattr(user, 'ishtaruser', None):
+ b = FindBasket.objects.create(
+ label=resulting_finds['basket_name'], user=user.ishtaruser)
+ for item in new_items:
+ b.items.add(item)
+
def save(self, *args, **kwargs):
items, user, extra_args_for_new, resulting_find = [], None, [], None
- upstream_items = []
+ upstream_items, upstream_item, resulting_finds = [], None, None
if "items" in kwargs:
items = kwargs.pop('items')
if "resulting_find" in kwargs:
resulting_find = kwargs.pop('resulting_find')
+ if "resulting_finds" in kwargs:
+ resulting_finds = kwargs.pop('resulting_finds')
if "upstream_items" in kwargs:
upstream_items = kwargs.pop('upstream_items')
+ if "upstream_item" in kwargs:
+ upstream_item = kwargs.pop('upstream_item')
if "user" in kwargs:
user = kwargs.pop('user')
if "extra_args_for_new" in kwargs:
@@ -386,7 +421,12 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
upstream_items = upstream_items.items.all()
if upstream_items and resulting_find:
- self._create_resulting_find(resulting_find, upstream_items)
+ self._create_n_1_resulting_find(resulting_find, upstream_items)
+ return
+
+ if upstream_item and resulting_finds:
+ self._create_1_n_resulting_find(resulting_finds, upstream_item,
+ self.history_modifier)
return
tps = list(self.treatment_types.all())
diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py
index b9f4d8b6c..6e9f59b8c 100644
--- a/archaeological_finds/urls.py
+++ b/archaeological_finds/urls.py
@@ -106,6 +106,9 @@ urlpatterns = [
url(r'^treatment_creation_n1/(?P.+)?$',
check_rights(['change_find', 'change_own_find'])(
views.treatment_creation_n1_wizard), name='treatment_creation_n1'),
+ url(r'^treatment_creation_1n/(?P.+)?$',
+ check_rights(['change_find', 'change_own_find'])(
+ views.treatment_creation_1n_wizard), name='treatment_creation_1n'),
url(r'^treatment_modification/(?P.+)?$',
check_rights(['change_find', 'change_own_find'])(
diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py
index ceb00d432..29f0f75af 100644
--- a/archaeological_finds/views.py
+++ b/archaeological_finds/views.py
@@ -476,6 +476,19 @@ treatment_creation_n1_wizard = TreatmentN1Wizard.as_view(
label=_(u"New treatment"),
url_name='treatment_creation_n1',)
+treatment_1n_wizard_steps = [
+ ('selecfind-treatment_creation_1n', SingleUpstreamFindFormSelection),
+ ('file-treatment_creation_1n', TreatmentFormFileChoice),
+ ('basetreatment-treatment_creation_1n', OneNTreatmentForm),
+ ('resultingfinds-treatment_creation_1n', ResultingFindsForm),
+ ('final-treatment_creation_1n', FinalForm)
+]
+
+treatment_creation_1n_wizard = Treatment1NWizard.as_view(
+ treatment_1n_wizard_steps,
+ label=_(u"New treatment"),
+ url_name='treatment_creation_1n',)
+
treatment_modification_wizard = TreatmentModificationWizard.as_view(
[('selec-treatment_modification', TreatmentFormSelection),
('file-treatment_modification', TreatmentFormFileChoice),
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index 3c25258a6..bd16a55de 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -17,8 +17,9 @@
# See the file COPYING for details.
+from django.contrib import messages
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import ugettext_lazy as _, pgettext
from ishtar_common.forms import reverse_lazy
from ishtar_common.wizards import Wizard, DeletionWizard, SearchWizard
@@ -316,6 +317,70 @@ class TreatmentN1Wizard(TreatmentBase):
return dct
+class Treatment1NWizard(TreatmentBase):
+ saved_args = {"upstream_item": None, "resulting_finds": None}
+ base_url = 'treatment_creation_1n'
+
+ def get_form_kwargs(self, step, **kwargs):
+ kwargs = super(Treatment1NWizard, self).get_form_kwargs(step, **kwargs)
+ if step != 'resultingfind-treatment_creation_1n':
+ return kwargs
+ kwargs['user'] = self.request.user
+ return kwargs
+
+ def get_form_initial(self, step, data=None):
+ initial = super(Treatment1NWizard, self).get_form_initial(step)
+ if step != 'resultingfinds-treatment_creation_1n':
+ return initial
+ finds = self.get_current_finds()
+ if not finds:
+ return initial
+ lbl = finds[0].label
+ initial['resultings_basket_name'] = unicode(_(u"Basket")) + u" - " + lbl
+ initial['resultings_label'] = lbl + u"-"
+ return initial
+
+ def get_extra_model(self, dct, form_list):
+ """
+ Get items concerned by the treatment
+ """
+ dct = super(Treatment1NWizard, self).get_extra_model(dct, form_list)
+ if 'resulting_pk' not in dct:
+ return dct
+
+ # manage upstream item
+ pk = dct.pop('resulting_pk')
+ try:
+ find = models.Find.objects.get(pk=pk)
+ dct['upstream_item'] = find
+ except models.Find.DoesNotExist:
+ raise PermissionDenied
+
+ if 'own' in self.current_right \
+ and not find.is_own(dct['history_modifier']):
+ raise PermissionDenied
+
+ # extract attributes to generate the new find
+ dct['resulting_finds'] = {}
+ for k in dct.keys():
+ if k.startswith('resultings_'):
+ dct['resulting_finds'][
+ k[len('resultings_'):]
+ ] = dct.pop(k)
+ messages.add_message(
+ self.request, messages.INFO,
+ unicode(_(u"The new basket: \"{}\" have been created with the "
+ u"resulting items. This search have been pinned.")
+ ).format(dct["resulting_finds"]["basket_name"])
+ )
+
+ self.request.session["pin-search-find"] = u'{}="{}"'.format(
+ unicode(pgettext("key for text search", u"basket")),
+ dct["resulting_finds"]["basket_name"])
+ self.request.session['find'] = ''
+ return dct
+
+
class TreatmentDeletionWizard(DeletionWizard):
model = models.Treatment
fields = ['label', 'other_reference', 'year', 'index',
diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html
index add4f1d6c..ab2baf955 100644
--- a/ishtar_common/templates/base.html
+++ b/ishtar_common/templates/base.html
@@ -108,20 +108,28 @@
-
- {% if MESSAGES %}{% for message, message_type in MESSAGES %}
-
- {{message}}
-
- ×
-
-
- {% endfor %}{% endif %}
+ {% if messages %}
+ {% for message in messages %}
+
+ {{message|safe}}
+
+ ×
+
+
{% endfor %}
+ {% endif %}
+ {% if MESSAGES %}{% for message, message_type in MESSAGES %}
+
+ {{message}}
+
+ ×
+
+
+ {% endfor %}{% endif %}
{% if warnings %}{% for warning in warnings %}
@@ -130,6 +138,9 @@
{% endfor %}{% endif %}
+
{% block content %}{% endblock %}
--
cgit v1.2.3
From 3e14b1202b3435113d070fa53f93ab62b2833c8d Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Wed, 21 Nov 2018 10:22:04 +0100
Subject: Manage treatment with no creation new of item
---
archaeological_files/wizards.py | 4 +-
archaeological_finds/admin.py | 5 ++-
archaeological_finds/forms.py | 7 +--
.../migrations/0040_auto_20181120_1027.py | 33 ++++++++++++++
archaeological_finds/models_finds.py | 4 ++
archaeological_finds/models_treatments.py | 51 +++++++++++++++-------
archaeological_finds/wizards.py | 38 +++++++++++-----
archaeological_operations/wizards.py | 2 +-
archaeological_warehouse/wizards.py | 2 +-
ishtar_common/wizards.py | 8 ++--
10 files changed, 115 insertions(+), 39 deletions(-)
create mode 100644 archaeological_finds/migrations/0040_auto_20181120_1027.py
diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py
index 106008192..c9b1ba9c2 100644
--- a/archaeological_files/wizards.py
+++ b/archaeological_files/wizards.py
@@ -43,8 +43,8 @@ class FileWizard(OperationWizard):
town_step_keys = ['towns-']
wizard_done_window = reverse_lazy('show-file')
- def get_extra_model(self, dct, form_list):
- dct = super(FileWizard, self).get_extra_model(dct, form_list)
+ def get_extra_model(self, dct, m2m, form_list):
+ dct = super(FileWizard, self).get_extra_model(dct, m2m, form_list)
if not dct.get('numeric_reference'):
current_ref = models.File.objects.filter(year=dct['year'])\
.aggregate(Max('numeric_reference'))["numeric_reference__max"]
diff --git a/archaeological_finds/admin.py b/archaeological_finds/admin.py
index 1513c7eeb..033d5bb96 100644
--- a/archaeological_finds/admin.py
+++ b/archaeological_finds/admin.py
@@ -157,7 +157,10 @@ admin_site.register(models.CommunicabilityType, HierarchicalTypeAdmin)
class TreatmentTypeAdmin(GeneralTypeAdmin):
list_display = HierarchicalTypeAdmin.list_display + [
- 'order', 'virtual', 'upstream_is_many', 'downstream_is_many']
+ 'order', 'virtual', 'destructive', 'create_new_find',
+ 'upstream_is_many', 'downstream_is_many']
+ list_filter = ['virtual', 'destructive', 'create_new_find',
+ 'upstream_is_many', 'downstream_is_many']
model = models.TreatmentType
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index b95ac90c6..90e1390bf 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -532,19 +532,20 @@ class QAFindFormMulti(QAForm):
MULTI = True
REPLACE_FIELDS = [
- 'qa_ue', 'qa_manufacturing_place', 'qa_checked_type', 'qa_check_date'
+ 'qa_denomination', 'qa_ue', 'qa_manufacturing_place', 'qa_checked_type',
+ 'qa_check_date'
]
HEADERS = {
'qa_ue': FormHeader(_(u"Context record")),
- 'qa_label': FormHeader(_(u"Identification")),
+ 'qa_denomination': FormHeader(_(u"Identification")),
'qa_description': FormHeader(_(u"Description")),
'qa_checked_type': FormHeader(_(u"Sheet")),
'qa_period': FormHeader(_(u"Datation")),
}
SINGLE_FIELDS = [
- 'qa_label', 'qa_denomination', 'qa_previous_id',
+ 'qa_label', 'qa_previous_id',
'qa_get_first_base_find__excavation_id', 'qa_museum_id',
'qa_seal_number', 'qa_mark'
]
diff --git a/archaeological_finds/migrations/0040_auto_20181120_1027.py b/archaeological_finds/migrations/0040_auto_20181120_1027.py
new file mode 100644
index 000000000..fd649dd8f
--- /dev/null
+++ b/archaeological_finds/migrations/0040_auto_20181120_1027.py
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2018-11-20 10:27
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+def init_create_new_find(apps, schema):
+ TreatmentType = apps.get_model('archaeological_finds', 'TreatmentType')
+ for tp in TreatmentType.objects.all():
+ if (tp.upstream_is_many or tp.downstream_is_many) and not tp.virtual:
+ tp.create_new_find = True
+ tp.save()
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('archaeological_finds', '0039_auto_20181115_1649'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='treatment',
+ options={'ordering': ('start_date',), 'permissions': (('view_treatment', 'Can view all Treatments'), ('view_own_treatment', 'Can view own Treatment'), ('add_own_treatment', 'Can add own Treatment'), ('change_own_treatment', 'Can change own Treatment'), ('delete_own_treatment', 'Can delete own Treatment')), 'verbose_name': 'Treatment', 'verbose_name_plural': 'Treatments'},
+ ),
+ migrations.AddField(
+ model_name='treatmenttype',
+ name='create_new_find',
+ field=models.BooleanField(default=False, help_text='If True when this treatment is applied a new version of the object will be created.', verbose_name='Create a new find'),
+ ),
+ migrations.RunPython(init_create_new_find)
+ ]
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index e856cb8ca..c7bd3f64e 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -92,6 +92,10 @@ class TreatmentType(HierarchicalType):
order = models.IntegerField(_(u"Order"), default=10)
virtual = models.BooleanField(_(u"Virtual"))
destructive = models.BooleanField(_(u"Destructive"), default=False)
+ create_new_find = models.BooleanField(
+ _(u"Create a new find"), default=False,
+ help_text=_(u"If True when this treatment is applied a new version "
+ u"of the object will be created."))
upstream_is_many = models.BooleanField(
_(u"Upstream is many"), default=False,
help_text=_(
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index 68935f142..b1ad5fa41 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -74,7 +74,8 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
}
# extra keys than can be passed to save method
EXTRA_SAVED_KEYS = ('items', 'user', 'resulting_find', 'upstream_items',
- 'resulting_finds', 'upstream_item')
+ 'resulting_finds', 'upstream_item',
+ 'treatment_type_list')
# alternative names of fields for searches
ALT_NAMES = {
@@ -295,7 +296,8 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
if q.count():
self.index = q.all().aggregate(Max('index'))['index__max'] + 1
- def _create_n_1_resulting_find(self, resulting_find, upstream_items):
+ def _create_n_1_resulting_find(self, resulting_find, upstream_items,
+ treatment_types):
"""
Manage creation of n<->1 treatment
"""
@@ -319,6 +321,9 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
except TypeError:
m2m_field.add(m2m[k])
+ create_new_find = bool([tp for tp in treatment_types
+ if tp.create_new_find])
+
dating_keys = ["period", "start_date", "end_date", "dating_type",
"quality", "precise_dating"]
current_datings = []
@@ -361,14 +366,19 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
new_find.data = update_data(new_find.data, upstream_item.data,
merge=True)
- upstream_item.downstream_treatment = self
- upstream_item.history_modifier = self.history_modifier
- upstream_item.save()
+ if create_new_find:
+ upstream_item.downstream_treatment = self
+ upstream_item.history_modifier = self.history_modifier
+ upstream_item.save()
+ else:
+ self.finds.add(upstream_item)
+
new_find.upstream_treatment = self
new_find.skip_history_when_saving = True
new_find.save()
- def _create_1_n_resulting_find(self, resulting_finds, upstream_item, user):
+ def _create_1_n_resulting_find(self, resulting_finds, upstream_item, user,
+ treatment_types):
"""
Manage creation of 1<->n treatment
"""
@@ -384,9 +394,15 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
new_find.save()
new_items.append(new_find)
- upstream_item.downstream_treatment = self
- upstream_item.skip_history_when_saving = True
- upstream_item.save()
+ create_new_find = bool([tp for tp in treatment_types
+ if tp.create_new_find])
+
+ if create_new_find:
+ upstream_item.downstream_treatment = self
+ upstream_item.skip_history_when_saving = True
+ upstream_item.save()
+ else:
+ self.finds.add(upstream_item)
if getattr(user, 'ishtaruser', None):
b = FindBasket.objects.create(
@@ -397,6 +413,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
def save(self, *args, **kwargs):
items, user, extra_args_for_new, resulting_find = [], None, [], None
upstream_items, upstream_item, resulting_finds = [], None, None
+ treatment_types = []
if "items" in kwargs:
items = kwargs.pop('items')
if "resulting_find" in kwargs:
@@ -411,6 +428,8 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
user = kwargs.pop('user')
if "extra_args_for_new" in kwargs:
extra_args_for_new = kwargs.pop('extra_args_for_new')
+ if "treatment_type_list" in kwargs:
+ treatment_types = kwargs.pop('treatment_type_list')
self.pre_save()
super(Treatment, self).save(*args, **kwargs)
updated = []
@@ -421,18 +440,20 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
upstream_items = upstream_items.items.all()
if upstream_items and resulting_find:
- self._create_n_1_resulting_find(resulting_find, upstream_items)
+ self._create_n_1_resulting_find(resulting_find, upstream_items,
+ treatment_types)
return
if upstream_item and resulting_finds:
- self._create_1_n_resulting_find(resulting_finds, upstream_item,
- self.history_modifier)
+ self._create_1_n_resulting_find(
+ resulting_finds, upstream_item, self.history_modifier,
+ treatment_types)
return
- tps = list(self.treatment_types.all())
- has_destructive_tp = bool([tp for tp in tps if tp.destructive])
+ create_new_find = bool([tp for tp in treatment_types
+ if tp.create_new_find])
for item in items:
- if not has_destructive_tp:
+ if not create_new_find:
self.finds.add(item)
else:
new = item.duplicate(user)
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index bd16a55de..29ca50056 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -86,8 +86,8 @@ class FindWizard(Wizard):
(_(u"Context record"), unicode(current_cr)))
return context
- def get_extra_model(self, dct, form_list):
- dct = super(FindWizard, self).get_extra_model(dct, form_list)
+ def get_extra_model(self, dct, m2m, form_list):
+ dct = super(FindWizard, self).get_extra_model(dct, m2m, form_list)
dct['order'] = 1
if 'pk' in dct and type(dct['pk']) == ContextRecord:
dct['base_finds__context_record'] = dct.pop('pk')
@@ -125,6 +125,7 @@ class TreatmentBase(Wizard):
model = models.Treatment
wizard_done_window = reverse_lazy('show-treatment')
base_url = ""
+ saved_args = {"treatment_type_list": []}
def get_current_finds(self):
step = self.steps.current
@@ -158,10 +159,20 @@ class TreatmentBase(Wizard):
initial['location'] = locations[0]
return initial
+ def get_extra_model(self, dct, m2m, form_list):
+ dct = super(TreatmentBase, self).get_extra_model(dct, m2m, form_list)
+ dct['treatment_type_list'] = []
+ for k, v in m2m:
+ if k == 'treatment_type':
+ if type(v) not in (list, tuple):
+ v = [v]
+ dct['treatment_type_list'] += v
+ return dct
+
class TreatmentWizard(TreatmentBase):
basket_step = 'basetreatment-treatment_creation'
- saved_args = {"items": []}
+ saved_args = {"items": [], "treatment_type_list": []}
base_url = 'treatment_creation'
def get_form_kwargs(self, step, **kwargs):
@@ -171,11 +182,11 @@ class TreatmentWizard(TreatmentBase):
kwargs['user'] = self.request.user
return kwargs
- def get_extra_model(self, dct, form_list):
+ def get_extra_model(self, dct, m2m, form_list):
"""
Get items concerned by the treatment
"""
- dct = super(TreatmentWizard, self).get_extra_model(dct, form_list)
+ dct = super(TreatmentWizard, self).get_extra_model(dct, m2m, form_list)
if 'resulting_pk' in dct:
dct['items'] = []
pks = dct.pop('resulting_pk').split(u',')
@@ -203,7 +214,8 @@ class TreatmentModificationWizard(TreatmentWizard):
class TreatmentN1Wizard(TreatmentBase):
- saved_args = {"upstream_items": [], "resulting_find": None}
+ saved_args = {"upstream_items": [], "resulting_find": None,
+ "treatment_type_list": []}
base_url = 'treatment_creation_n1'
def _update_simple_initial_from_finds(self, initial, find, k):
@@ -282,11 +294,12 @@ class TreatmentN1Wizard(TreatmentBase):
initial.pop(k)
return initial
- def get_extra_model(self, dct, form_list):
+ def get_extra_model(self, dct, m2m, form_list):
"""
Get items concerned by the treatment
"""
- dct = super(TreatmentN1Wizard, self).get_extra_model(dct, form_list)
+ dct = super(TreatmentN1Wizard, self).get_extra_model(
+ dct, m2m, form_list)
if 'resulting_pk' not in dct:
return dct
@@ -318,7 +331,8 @@ class TreatmentN1Wizard(TreatmentBase):
class Treatment1NWizard(TreatmentBase):
- saved_args = {"upstream_item": None, "resulting_finds": None}
+ saved_args = {"upstream_item": None, "resulting_finds": None,
+ "treatment_type_list": []}
base_url = 'treatment_creation_1n'
def get_form_kwargs(self, step, **kwargs):
@@ -340,11 +354,12 @@ class Treatment1NWizard(TreatmentBase):
initial['resultings_label'] = lbl + u"-"
return initial
- def get_extra_model(self, dct, form_list):
+ def get_extra_model(self, dct, m2m, form_list):
"""
Get items concerned by the treatment
"""
- dct = super(Treatment1NWizard, self).get_extra_model(dct, form_list)
+ dct = super(Treatment1NWizard, self).get_extra_model(
+ dct, m2m, form_list)
if 'resulting_pk' not in dct:
return dct
@@ -373,7 +388,6 @@ class Treatment1NWizard(TreatmentBase):
u"resulting items. This search have been pinned.")
).format(dct["resulting_finds"]["basket_name"])
)
-
self.request.session["pin-search-find"] = u'{}="{}"'.format(
unicode(pgettext("key for text search", u"basket")),
dct["resulting_finds"]["basket_name"])
diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py
index de38beb95..798e622b4 100644
--- a/archaeological_operations/wizards.py
+++ b/archaeological_operations/wizards.py
@@ -332,7 +332,7 @@ class OperationAdministrativeActWizard(OperationWizard):
except models.AdministrativeAct.DoesNotExist:
return
- def get_extra_model(self, dct, form_list):
+ def get_extra_model(self, dct, m2m, form_list):
dct['history_modifier'] = self.request.user
return dct
diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py
index 8ee2c2972..a0d46e892 100644
--- a/archaeological_warehouse/wizards.py
+++ b/archaeological_warehouse/wizards.py
@@ -49,7 +49,7 @@ class PackagingWizard(TreatmentWizard):
def save_model(self, dct, m2m, whole_associated_models, form_list,
return_object):
- dct = self.get_extra_model(dct, form_list)
+ dct = self.get_extra_model(dct, m2m, form_list)
obj = self.get_current_saved_object()
dct['location'] = dct['container'].location
items = None
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index 7fd19f721..b3fc4b55a 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -439,7 +439,7 @@ class Wizard(IshtarWizard):
datas.append((form.form_label, form_datas))
return datas
- def get_extra_model(self, dct, form_list):
+ def get_extra_model(self, dct, m2m, form_list):
dct['history_modifier'] = self.request.user
return dct
@@ -552,7 +552,7 @@ class Wizard(IshtarWizard):
def save_model(self, dct, m2m, whole_associated_models, form_list,
return_object):
- dct = self.get_extra_model(dct, form_list)
+ dct = self.get_extra_model(dct, m2m, form_list)
obj = self.get_current_saved_object()
data = {}
if obj and hasattr(obj, 'data'):
@@ -1787,8 +1787,8 @@ class AccountWizard(Wizard):
class SourceWizard(Wizard):
model = None
- def get_extra_model(self, dct, form_list):
- dct = super(SourceWizard, self).get_extra_model(dct, form_list)
+ def get_extra_model(self, dct, m2m, form_list):
+ dct = super(SourceWizard, self).get_extra_model(dct, m2m, form_list)
if 'history_modifier' in dct:
dct.pop('history_modifier')
return dct
--
cgit v1.2.3
From 1d26450afa9124ca61397c46a91feff814c73582 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Wed, 21 Nov 2018 10:24:32 +0100
Subject: Update version
---
version.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/version.py b/version.py
index 8885edb48..2245b0c8d 100644
--- a/version.py
+++ b/version.py
@@ -1,5 +1,5 @@
-# 2.1.dev.17
-VERSION = (2, 1, 'dev', 17)
+# 2.1.dev.18
+VERSION = (2, 1, 'dev', 18)
def get_version():
--
cgit v1.2.3
From 59d1938d45346aea74746e56d634e81a53cb2015 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Wed, 21 Nov 2018 11:14:36 +0100
Subject: Update translations
---
archaeological_finds/locale/django.pot | 1050 ++++++++++++++------------
archaeological_warehouse/locale/django.pot | 118 +--
ishtar_common/locale/django.pot | 676 ++++++++---------
translations/de/ishtar_common.po | 674 ++++++++---------
translations/fr/archaeological_finds.po | 1073 +++++++++++++++------------
translations/fr/archaeological_warehouse.po | 118 +--
translations/fr/ishtar_common.po | 676 ++++++++---------
7 files changed, 2319 insertions(+), 2066 deletions(-)
diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot
index 4ca54a290..82d4bfd4c 100644
--- a/archaeological_finds/locale/django.pot
+++ b/archaeological_finds/locale/django.pot
@@ -9,607 +9,639 @@
msgid ""
msgstr ""
-#: admin.py:39 models_finds.py:288
+#: admin.py:39 models_finds.py:293
msgid "Point (2D)"
msgstr ""
-#: admin.py:41 models_finds.py:290
+#: admin.py:41 models_finds.py:295
msgid "Line"
msgstr ""
-#: admin.py:43 models_finds.py:291
+#: admin.py:43 models_finds.py:296
msgid "Multi polygon"
msgstr ""
-#: forms.py:91 forms.py:97 forms.py:340 forms.py:353 forms.py:631
-#: models_finds.py:660 models_finds.py:1213 wizards.py:75
+#: forms.py:95 forms.py:101 forms.py:540 forms.py:553 forms.py:831
+#: models_finds.py:674 models_finds.py:1233 wizards.py:86
msgid "Context record"
msgstr ""
-#: forms.py:92
+#: forms.py:96
msgid "Find - 010 - Context record choice"
msgstr ""
-#: forms.py:126 ishtar_menu.py:32 models_finds.py:1089 models_finds.py:1717
-#: models_treatments.py:349 templates/ishtar/sheet_find.html:4
+#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1106
+#: models_finds.py:1739 models_treatments.py:511
+#: templates/ishtar/sheet_find.html:4
msgid "Find"
msgstr ""
-#: forms.py:127
-msgid "Find - 020 - General"
+#: forms.py:134
+#| msgid "Find - 020 - General"
+msgid "Simple find - 020 - General"
msgstr ""
-#: forms.py:142 forms.py:341 templates/ishtar/sheet_find.html:40
+#: forms.py:156 forms.py:395 forms.py:541 templates/ishtar/sheet_find.html:110
msgid "Identification"
msgstr ""
-#: forms.py:145 forms.py:360 forms.py:600 forms.py:889 models_finds.py:253
-#: models_finds.py:968
+#: forms.py:159 forms.py:398 forms.py:560 forms.py:800 forms.py:1089
+#: models_finds.py:258 models_finds.py:985
msgid "Free ID"
msgstr ""
-#: forms.py:147 forms.py:362 forms.py:601 forms.py:932 models_finds.py:969
+#: forms.py:161 forms.py:400 forms.py:562 forms.py:801 forms.py:1154
+#: models_finds.py:986
msgid "Denomination"
msgstr ""
-#: forms.py:148 forms.py:363 models_finds.py:1042
+#: forms.py:162 forms.py:563 models_finds.py:1059
msgid "Previous ID"
msgstr ""
-#: forms.py:150 forms.py:365 models_finds.py:257
-msgid "Excavation ID"
-msgstr ""
-
-#: forms.py:151 forms.py:366 models_finds.py:970
+#: forms.py:163 forms.py:566 models_finds.py:987
msgid "Museum ID"
msgstr ""
-#: forms.py:152 forms.py:367 models_finds.py:965
+#: forms.py:164 forms.py:567 models_finds.py:982
msgid "Seal number"
msgstr ""
-#: forms.py:153 forms.py:368 models_finds.py:1038
+#: forms.py:165 forms.py:568 models_finds.py:1055
msgid "Mark"
msgstr ""
-#: forms.py:155 forms.py:156 forms.py:342 forms.py:371 forms.py:652
-#: forms_treatments.py:139 models_finds.py:258 models_finds.py:971
-#: models_treatments.py:146 templates/ishtar/sheet_find.html:58
+#: forms.py:167 forms.py:168 forms.py:403 forms.py:405 forms.py:542
+#: forms.py:571 forms.py:852 forms_treatments.py:143 models_finds.py:263
+#: models_finds.py:988 models_treatments.py:150
+#: templates/ishtar/sheet_find.html:128
msgid "Description"
msgstr ""
-#: forms.py:159 models_finds.py:265
-msgid "Discovery date (exact or TPQ)"
-msgstr ""
-
-#: forms.py:162 models_finds.py:267 templates/ishtar/sheet_basefind.html:29
-msgid "Discovery date (TAQ)"
-msgstr ""
-
-#: forms.py:164 forms.py:654 models_finds.py:269
-msgid "Batch/object"
-msgstr ""
-
-#: forms.py:166 models_finds.py:1003
+#: forms.py:170 forms.py:407 models_finds.py:1020
msgid "Is complete?"
msgstr ""
-#: forms.py:169 forms.py:373 models_finds.py:57 models_finds.py:685
-#: models_finds.py:977
+#: forms.py:173 forms.py:409 forms.py:573 models_finds.py:57
+#: models_finds.py:699 models_finds.py:994
msgid "Material types"
msgstr ""
-#: forms.py:172 models_finds.py:982
+#: forms.py:176 forms.py:412 models_finds.py:999
msgid "Material type quality"
msgstr ""
-#: forms.py:174 forms.py:376 models_finds.py:152 models_finds.py:686
-#: models_finds.py:1006
+#: forms.py:178 forms.py:414 forms.py:576 models_finds.py:157
+#: models_finds.py:700 models_finds.py:1023
msgid "Object types"
msgstr ""
-#: forms.py:177 models_finds.py:1011
+#: forms.py:181 forms.py:417 models_finds.py:1028
msgid "Object type quality"
msgstr ""
-#: forms.py:178 forms.py:896 models_finds.py:989
+#: forms.py:182 forms.py:419 forms.py:1096 models_finds.py:1006
msgid "Find number"
msgstr ""
-#: forms.py:180 models_finds.py:1024
+#: forms.py:184 forms.py:421 models_finds.py:1041
msgid "Minimum number of individuals (MNI)"
msgstr ""
-#: forms.py:182 models_finds.py:972
+#: forms.py:186 forms.py:424 models_finds.py:989
msgid "Decoration"
msgstr ""
-#: forms.py:184 models_finds.py:973
+#: forms.py:188 forms.py:426 models_finds.py:990
msgid "Inscription"
msgstr ""
-#: forms.py:187 forms.py:379 models_finds.py:975
+#: forms.py:191 forms.py:428 forms.py:579 models_finds.py:992
msgid "Manufacturing place"
msgstr ""
-#: forms.py:189 forms.py:381 models_finds.py:1021
+#: forms.py:193 forms.py:430 forms.py:581 models_finds.py:1038
msgid "Communicability"
msgstr ""
-#: forms.py:191 forms.py:384 forms.py:955 forms_treatments.py:141
-#: forms_treatments.py:578 models_finds.py:259 models_finds.py:1039
-#: models_treatments.py:145 models_treatments.py:609
+#: forms.py:195 forms.py:432 forms.py:584 forms.py:1177 forms_treatments.py:145
+#: forms_treatments.py:606 models_finds.py:264 models_finds.py:1056
+#: models_treatments.py:149 models_treatments.py:771
msgid "Comment"
msgstr ""
-#: forms.py:194 forms.py:394 models_finds.py:1040
+#: forms.py:198 forms.py:435 forms.py:594 models_finds.py:1057
msgid "Comment on dating"
msgstr ""
-#: forms.py:196 templates/ishtar/sheet_find.html:76
+#: forms.py:200 forms.py:437 templates/ishtar/sheet_find.html:146
msgid "Dimensions"
msgstr ""
-#: forms.py:197 models_finds.py:1025
+#: forms.py:201 forms.py:438 models_finds.py:1042
msgid "Length (cm)"
msgstr ""
-#: forms.py:198 models_finds.py:1026
+#: forms.py:202 forms.py:439 models_finds.py:1043
msgid "Width (cm)"
msgstr ""
-#: forms.py:199 models_finds.py:1027
+#: forms.py:203 forms.py:440 models_finds.py:1044
msgid "Height (cm)"
msgstr ""
-#: forms.py:200 models_finds.py:1028
+#: forms.py:204 forms.py:441 models_finds.py:1045
msgid "Diameter (cm)"
msgstr ""
-#: forms.py:201 models_finds.py:1029
+#: forms.py:205 forms.py:442 models_finds.py:1046
msgid "Thickness (cm)"
msgstr ""
-#: forms.py:202 forms.py:894 models_finds.py:985
+#: forms.py:206 forms.py:443 forms.py:1094 models_finds.py:1002
msgid "Volume (l)"
msgstr ""
-#: forms.py:203 forms.py:895 templates/ishtar/sheet_find.html:84
+#: forms.py:207 forms.py:444 forms.py:1095 templates/ishtar/sheet_find.html:154
msgid "Weight (g)"
msgstr ""
-#: forms.py:205
+#: forms.py:209 forms.py:446
msgid "Clutter long side (cm)"
msgstr ""
-#: forms.py:207
+#: forms.py:211 forms.py:448
msgid "Clutter short side (cm)"
msgstr ""
-#: forms.py:209
+#: forms.py:213 forms.py:450
msgid "Clutter height (cm)"
msgstr ""
-#: forms.py:211 models_finds.py:1036
+#: forms.py:215 forms.py:452 models_finds.py:1053
msgid "Dimensions comment"
msgstr ""
-#: forms.py:214 templates/ishtar/sheet_basefind.html:46
-#: templates/ishtar/sheet_basefind.html:50
+#: forms.py:217 forms.py:454 forms.py:543
+#: templates/ishtar/sheet_basefind.html:70 templates/ishtar/sheet_find.html:163
+msgid "Sheet"
+msgstr ""
+
+#: forms.py:218 forms.py:455 forms.py:587 forms.py:855 models_finds.py:1061
+msgid "Check"
+msgstr ""
+
+#: forms.py:220 forms.py:458 forms.py:589 models_finds.py:1063
+msgid "Check date"
+msgstr ""
+
+#: forms.py:247
+msgid "Clutter: short side cannot be bigger than the long side."
+msgstr ""
+
+#: forms.py:256
+msgid "Find - 020 - General"
+msgstr ""
+
+#: forms.py:285 forms.py:565 models_finds.py:262
+msgid "Excavation ID"
+msgstr ""
+
+#: forms.py:288 models_finds.py:270
+msgid "Discovery date (exact or TPQ)"
+msgstr ""
+
+#: forms.py:291 models_finds.py:272 templates/ishtar/sheet_basefind.html:33
+msgid "Discovery date (TAQ)"
+msgstr ""
+
+#: forms.py:293 forms.py:854 models_finds.py:274
+msgid "Batch/object"
+msgstr ""
+
+#: forms.py:296 templates/ishtar/sheet_basefind.html:50
+#: templates/ishtar/sheet_basefind.html:54
msgid "Coordinates"
msgstr ""
-#: forms.py:215 models_finds.py:276
+#: forms.py:297 models_finds.py:281
msgid "X"
msgstr ""
-#: forms.py:217 models_finds.py:279
+#: forms.py:299 models_finds.py:284
msgid "Estimated error for X"
msgstr ""
-#: forms.py:218 models_finds.py:277
+#: forms.py:300 models_finds.py:282
msgid "Y"
msgstr ""
-#: forms.py:220 models_finds.py:281
+#: forms.py:302 models_finds.py:286
msgid "Estimated error for Y"
msgstr ""
-#: forms.py:221 models_finds.py:278
+#: forms.py:303 models_finds.py:283
msgid "Z"
msgstr ""
-#: forms.py:223 models_finds.py:283
+#: forms.py:305 models_finds.py:288
msgid "Estimated error for Z"
msgstr ""
-#: forms.py:225 models_finds.py:286
+#: forms.py:307 models_finds.py:291
msgid "Spatial Reference System"
msgstr ""
-#: forms.py:228 models_finds.py:274
+#: forms.py:310 models_finds.py:279
msgid "Point of topographic reference"
msgstr ""
-#: forms.py:232 forms.py:343 templates/ishtar/sheet_basefind.html:66
-#: templates/ishtar/sheet_find.html:93
-msgid "Sheet"
+#: forms.py:338
+msgid ""
+"Discovery date: if a TAQ date is provided a TPQ date has to be informed. If "
+"you have a precise date fill only the TPQ - discovery date field."
msgstr ""
-#: forms.py:233 forms.py:387 forms.py:655 models_finds.py:1044
-msgid "Check"
+#: forms.py:344
+msgid "Discovery date: TAQ date must be older than TPQ date."
msgstr ""
-#: forms.py:235 forms.py:389 models_finds.py:1046
-msgid "Check date"
+#: forms.py:360
+msgid "You should at least provide X, Y and the spatial reference system used."
msgstr ""
-#: forms.py:274
-msgid ""
-"Discovery date: if a TAQ date is provided a TPQ date has to be informed. If "
-"you have a precise date fill only the TPQ - discovery date field."
+#: forms.py:369
+msgid "Coordinates are not relevant for the spatial reference system used: {}."
msgstr ""
-#: forms.py:280
-msgid "Discovery date: TAQ date must be older than TPQ date."
+#: forms.py:382 forms.py:1086
+msgid "Resulting find"
msgstr ""
-#: forms.py:290
-msgid "Clutter: short side cannot be bigger than the long side."
+#: forms.py:383
+#| msgid "Treatment - 010 - Request choice"
+msgid "Treatment n-1 - 030 - Resulting find"
msgstr ""
-#: forms.py:307
-msgid "You should at least provide X, Y and the spatial reference system used."
+#: forms.py:477 forms.py:1105
+msgid "Resulting finds"
msgstr ""
-#: forms.py:316
-msgid "Coordinates are not relevant for the spatial reference system used: {}."
+#: forms.py:478
+#| msgid "Treatment - 010 - Request choice"
+msgid "Treatment 1-n - 030 - Resulting finds"
+msgstr ""
+
+#: forms.py:483
+#| msgid "Resulting finds"
+msgid "Number of resulting finds"
+msgstr ""
+
+#: forms.py:487
+msgid "Prefix label for resulting finds"
msgstr ""
-#: forms.py:322
+#: forms.py:490
+msgid ""
+"E.g.: with a prefix \"item-\", each resulting item will be named \"item-1\", "
+"\"item-2\", \"item-3\""
+msgstr ""
+
+#: forms.py:494
+msgid "Numbering starting from"
+msgstr ""
+
+#: forms.py:497
+msgid "Name of the new basket containing the resulting items"
+msgstr ""
+
+#: forms.py:515 forms.py:681
+msgid "A basket with this label already exists."
+msgstr ""
+
+#: forms.py:521
msgid "Find - Quick action - Modify"
msgstr ""
-#: forms.py:344
+#: forms.py:544
msgid "Datation"
msgstr ""
-#: forms.py:392 forms.py:565 forms.py:641 templates/ishtar/sheet_find.html:123
+#: forms.py:592 forms.py:765 forms.py:841 templates/ishtar/sheet_find.html:195
msgid "Period"
msgstr ""
-#: forms.py:436
+#: forms.py:636
msgid "Find - Quick action - Modify single"
msgstr ""
-#: forms.py:449
+#: forms.py:649
msgid "Create"
msgstr ""
-#: forms.py:450
+#: forms.py:650
msgid "Update"
msgstr ""
-#: forms.py:452 forms.py:636 forms.py:982 forms.py:986 forms_treatments.py:180
-#: ishtar_menu.py:57 models_finds.py:926
-#: templates/ishtar/sheet_findbasket.html:4 views.py:646
+#: forms.py:652 forms.py:836 forms.py:1204 forms.py:1208 ishtar_menu.py:57
+#: models_finds.py:943 templates/ishtar/sheet_findbasket.html:4 views.py:694
+#: wizards.py:353
msgid "Basket"
msgstr ""
-#: forms.py:474
+#: forms.py:674
msgid "On update, you have to select a basket."
msgstr ""
-#: forms.py:478
+#: forms.py:678
msgid "A label is required."
msgstr ""
-#: forms.py:481
-msgid "A basket with this label already exists."
-msgstr ""
-
-#: forms.py:498 templates/ishtar/sheet_find.html:102
+#: forms.py:698 templates/ishtar/sheet_find.html:174
msgid "Preservation"
msgstr ""
-#: forms.py:499
+#: forms.py:699
msgid "Find - 030 - Preservation"
msgstr ""
-#: forms.py:513 forms.py:648 models_finds.py:1015
+#: forms.py:713 forms.py:848 models_finds.py:1032
msgid "Integrity / interest"
msgstr ""
-#: forms.py:516 forms.py:650 models_finds.py:1018
+#: forms.py:716 forms.py:850 models_finds.py:1035
msgid "Remarkability"
msgstr ""
-#: forms.py:518 forms.py:646 models_finds.py:1056
+#: forms.py:718 forms.py:846 models_finds.py:1073
msgid "Conservatory state"
msgstr ""
-#: forms.py:521 models_finds.py:1065
+#: forms.py:721 models_finds.py:1082
msgid "Alteration"
msgstr ""
-#: forms.py:524 models_finds.py:1069
+#: forms.py:724 models_finds.py:1086
msgid "Alteration cause"
msgstr ""
-#: forms.py:527 models_finds.py:1062
+#: forms.py:727 models_finds.py:1079
msgid "Recommended treatments"
msgstr ""
-#: forms.py:529 models_finds.py:1073
+#: forms.py:729 models_finds.py:1090
msgid "Treatment emergency"
msgstr ""
-#: forms.py:531 models_finds.py:1048
+#: forms.py:731 models_finds.py:1065
msgid "Estimated value"
msgstr ""
-#: forms.py:532 models_finds.py:1076
+#: forms.py:732 models_finds.py:1093
msgid "Insurance value"
msgstr ""
-#: forms.py:534 models_finds.py:1078
+#: forms.py:734 models_finds.py:1095
msgid "Appraisal date"
msgstr ""
-#: forms.py:536 models_finds.py:1058
+#: forms.py:736 models_finds.py:1075
msgid "Conservatory comment"
msgstr ""
-#: forms.py:560 forms.py:584 models_finds.py:997
-#: templates/ishtar/sheet_find.html:119
+#: forms.py:760 forms.py:784 models_finds.py:1014
+#: templates/ishtar/sheet_find.html:191
msgid "Dating"
msgstr ""
-#: forms.py:566 forms_treatments.py:143 forms_treatments.py:370
-#: forms_treatments.py:580 models_finds.py:1722 models_treatments.py:148
-#: models_treatments.py:360 templates/ishtar/sheet_find.html:124
-#: templates/ishtar/sheet_find.html:185 templates/ishtar/sheet_find.html:223
+#: forms.py:766 forms_treatments.py:131 forms_treatments.py:398
+#: forms_treatments.py:608 models_finds.py:1744 models_treatments.py:152
+#: models_treatments.py:522 templates/ishtar/sheet_find.html:196
+#: templates/ishtar/sheet_find.html:254 templates/ishtar/sheet_find.html:291
+#: templates/ishtar/sheet_find.html:329
msgid "Start date"
msgstr ""
-#: forms.py:568 models_finds.py:1723 models_treatments.py:361
-#: templates/ishtar/sheet_find.html:125 templates/ishtar/sheet_find.html:186
-#: templates/ishtar/sheet_find.html:224
+#: forms.py:768 models_finds.py:1745 models_treatments.py:523
+#: templates/ishtar/sheet_find.html:197 templates/ishtar/sheet_find.html:255
+#: templates/ishtar/sheet_find.html:292 templates/ishtar/sheet_find.html:330
msgid "End date"
msgstr ""
-#: forms.py:569 templates/ishtar/sheet_find.html:127
+#: forms.py:769 templates/ishtar/sheet_find.html:199
msgid "Quality"
msgstr ""
-#: forms.py:571 templates/ishtar/sheet_find.html:126
+#: forms.py:771 templates/ishtar/sheet_find.html:198
msgid "Dating type"
msgstr ""
-#: forms.py:573 templates/ishtar/sheet_find.html:128
+#: forms.py:773 templates/ishtar/sheet_find.html:200
msgid "Precise dating"
msgstr ""
-#: forms.py:585
+#: forms.py:785
msgid "Find - 040 - Dating"
msgstr ""
-#: forms.py:592
+#: forms.py:792
msgid "Find - 001 - Search"
msgstr ""
-#: forms.py:595 forms.py:928 forms_treatments.py:50 forms_treatments.py:419
-#: forms_treatments.py:493 forms_treatments.py:686
+#: forms.py:795 forms.py:1150 forms_treatments.py:50 forms_treatments.py:447
+#: forms_treatments.py:521 forms_treatments.py:714
msgid "Full text search"
msgstr ""
-#: forms.py:598 models_finds.py:294
+#: forms.py:798 models_finds.py:299
msgid "Short ID"
msgstr ""
-#: forms.py:599 models_finds.py:297
+#: forms.py:799 models_finds.py:302
msgid "Complete ID"
msgstr ""
-#: forms.py:604 forms_treatments.py:56 forms_treatments.py:101
-#: forms_treatments.py:295 forms_treatments.py:423 forms_treatments.py:498
-#: forms_treatments.py:550 forms_treatments.py:690 models_treatments.py:122
-#: models_treatments.py:582
+#: forms.py:804 forms_treatments.py:56 forms_treatments.py:102
+#: forms_treatments.py:323 forms_treatments.py:451 forms_treatments.py:526
+#: forms_treatments.py:578 forms_treatments.py:718 models_treatments.py:126
+#: models_treatments.py:744
msgid "Year"
msgstr ""
-#: forms.py:606
+#: forms.py:806
msgid "Operation's number (index by year)"
msgstr ""
-#: forms.py:609
+#: forms.py:809
msgid "Code PATRIARCHE"
msgstr ""
-#: forms.py:613
+#: forms.py:813
msgid "Operation type"
msgstr ""
-#: forms.py:616
+#: forms.py:816
msgid "Areas"
msgstr ""
-#: forms.py:619
+#: forms.py:819
msgid "Archaeological site (attached to the operation)"
msgstr ""
-#: forms.py:625
+#: forms.py:825
msgid "Archaeological site (attached to the context record)"
msgstr ""
-#: forms.py:638
+#: forms.py:838
msgid "Search within related operations"
msgstr ""
-#: forms.py:640
+#: forms.py:840
msgid "Search within related context records"
msgstr ""
-#: forms.py:642 forms.py:893 models_finds.py:56
+#: forms.py:842 forms.py:1093 models_finds.py:56
msgid "Material type"
msgstr ""
-#: forms.py:643 models_finds.py:151
+#: forms.py:843 models_finds.py:156
msgid "Object type"
msgstr ""
-#: forms.py:645
+#: forms.py:845
msgid "Preservation type"
msgstr ""
-#: forms.py:656 forms_treatments.py:59
+#: forms.py:856 forms_treatments.py:59
msgid "Has an image?"
msgstr ""
-#: forms.py:703
+#: forms.py:903
msgid "Warehouse (location)"
msgstr ""
-#: forms.py:709
+#: forms.py:909
msgid "Warehouse (responsible)"
msgstr ""
-#: forms.py:714
+#: forms.py:914
msgid "Container ID"
msgstr ""
-#: forms.py:715
+#: forms.py:915
msgid "Container ref."
msgstr ""
-#: forms.py:720 forms.py:744 views.py:185
+#: forms.py:920 forms.py:944 views.py:185
msgid "Find search"
msgstr ""
-#: forms.py:769 models_treatments.py:258
-#: templates/ishtar/sheet_treatment.html:56
+#: forms.py:969 forms.py:1114 models_treatments.py:271
+#: templates/ishtar/sheet_treatment.html:61
msgid "Upstream finds"
msgstr ""
-#: forms.py:771 models_finds.py:1090
+#: forms.py:971 models_finds.py:1107 models_treatments.py:156
#: templates/ishtar/forms/qa_find_treatment.html:11
msgid "Finds"
msgstr ""
-#: forms.py:783
+#: forms.py:983
msgid "You should at least select one archaeological find."
msgstr ""
-#: forms.py:886
-msgid "Resulting find"
-msgstr ""
-
-#: forms.py:891
+#: forms.py:1091
msgid "Precise description"
msgstr ""
-#: forms.py:905
-msgid "Resulting finds"
-msgstr ""
-
-#: forms.py:910
+#: forms.py:1110
msgid "Would you like to delete this find?"
msgstr ""
-#: forms.py:914 models_treatments.py:68
-msgid "Upstream find"
-msgstr ""
-
-#: forms.py:925
+#: forms.py:1147
msgid "Find basket - 001 - Search"
msgstr ""
-#: forms.py:937 views.py:122
+#: forms.py:1159 views.py:122
msgid "Basket search"
msgstr ""
-#: forms.py:951
+#: forms.py:1173
msgid "Find basket"
msgstr ""
-#: forms.py:953 forms_treatments.py:54 forms_treatments.py:97
-#: models_treatments.py:118 templates/ishtar/sheet_find.html:179
-#: templates/ishtar/sheet_find.html:217
+#: forms.py:1175 forms_treatments.py:54 forms_treatments.py:124
+#: models_treatments.py:122 templates/ishtar/sheet_find.html:248
+#: templates/ishtar/sheet_find.html:285 templates/ishtar/sheet_find.html:323
msgid "Label"
msgstr ""
-#: forms.py:972
+#: forms.py:1194
msgid "Another basket already exists with this name."
msgstr ""
-#: forms_treatments.py:55 forms_treatments.py:100 models_treatments.py:120
+#: forms_treatments.py:55 forms_treatments.py:127 models_treatments.py:124
msgid "Other ref."
msgstr ""
-#: forms_treatments.py:57 forms_treatments.py:232 forms_treatments.py:424
-#: forms_treatments.py:486 forms_treatments.py:499 forms_treatments.py:603
-#: forms_treatments.py:691 forms_treatments.py:758 models_treatments.py:123
-#: models_treatments.py:583
+#: forms_treatments.py:57 forms_treatments.py:260 forms_treatments.py:452
+#: forms_treatments.py:514 forms_treatments.py:527 forms_treatments.py:631
+#: forms_treatments.py:719 forms_treatments.py:786 models_treatments.py:127
+#: models_treatments.py:745
msgid "Index"
msgstr ""
-#: forms_treatments.py:58 forms_treatments.py:106 forms_treatments.py:378
-#: forms_treatments.py:440 models_finds.py:106 models_treatments.py:128
-#: models_treatments.py:359
+#: forms_treatments.py:58 forms_treatments.py:98 forms_treatments.py:406
+#: forms_treatments.py:468 models_finds.py:111 models_treatments.py:132
+#: models_treatments.py:521
msgid "Treatment type"
msgstr ""
-#: forms_treatments.py:71 views.py:420
+#: forms_treatments.py:71 views.py:439
msgid "Treatment search"
msgstr ""
-#: forms_treatments.py:83
-msgid "Base treatment"
+#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:178
+#: models_treatments.py:513 templates/ishtar/sheet_treatment.html:4
+msgid "Treatment"
msgstr ""
#: forms_treatments.py:84
msgid "Treatment - 020 - General"
msgstr ""
-#: forms_treatments.py:108 models_treatments.py:70 models_treatments.py:130
-#: templates/ishtar/sheet_find.html:181 templates/ishtar/sheet_find.html:219
+#: forms_treatments.py:100 models_treatments.py:72 models_treatments.py:134
+#: templates/ishtar/sheet_find.html:250 templates/ishtar/sheet_find.html:287
+#: templates/ishtar/sheet_find.html:325
msgid "State"
msgstr ""
-#: forms_treatments.py:110
-msgid "Target"
+#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:524
+msgid "Location"
msgstr ""
-#: forms_treatments.py:112 forms_treatments.py:301 forms_treatments.py:561
-#: models_treatments.py:71 models_treatments.py:138
+#: forms_treatments.py:113 forms_treatments.py:329 forms_treatments.py:589
+#: models_treatments.py:73 models_treatments.py:142
msgid "Responsible"
msgstr ""
-#: forms_treatments.py:118 forms_treatments.py:307 models_treatments.py:141
+#: forms_treatments.py:119 forms_treatments.py:335 models_treatments.py:145
msgid "Organization"
msgstr ""
-#: forms_treatments.py:124 models_treatments.py:133 models_treatments.py:362
-msgid "Location"
+#: forms_treatments.py:133 forms_treatments.py:398 forms_treatments.py:614
+#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:765
+msgid "Closing date"
msgstr ""
-#: forms_treatments.py:130
+#: forms_treatments.py:136
msgid "Container (relevant for packaging)"
msgstr ""
-#: forms_treatments.py:136 forms_treatments.py:557
-msgid "External ref."
-msgstr ""
-
-#: forms_treatments.py:137 models_treatments.py:147
+#: forms_treatments.py:141 models_treatments.py:151
msgid "Goal"
msgstr ""
-#: forms_treatments.py:145 forms_treatments.py:370 forms_treatments.py:586
-#: forms_treatments.py:639 models_treatments.py:149 models_treatments.py:603
-msgid "Closing date"
-msgstr ""
-
#: forms_treatments.py:147
#, python-brace-format
msgid "Estimated cost ({currency})"
@@ -630,232 +662,244 @@ msgstr ""
msgid "Insurance cost ({currency})"
msgstr ""
-#: forms_treatments.py:180
-msgid "Single find"
-msgstr ""
-
-#: forms_treatments.py:204
+#: forms_treatments.py:206
msgid ""
"The container field is attached to the treatment. If no packaging treatment "
"is done it is not relevant."
msgstr ""
-#: forms_treatments.py:209
+#: forms_treatments.py:211
msgid "If a packaging treatment is done, the container field must be filled."
msgstr ""
-#: forms_treatments.py:213
+#: forms_treatments.py:215
msgid "A responsible or an organization must be defined."
msgstr ""
-#: forms_treatments.py:256
+#: forms_treatments.py:234
+#| msgid "Treatment - 020 - General"
+msgid "Treatment n-1 - 020 - General"
+msgstr ""
+
+#: forms_treatments.py:247
+#| msgid "Treatment - 020 - General"
+msgid "Treatment 1-n - 020 - General"
+msgstr ""
+
+#: forms_treatments.py:284
msgid "Another treatment with this index exists for {}."
msgstr ""
-#: forms_treatments.py:262 models_treatments.py:126
+#: forms_treatments.py:290 models_treatments.py:130
msgid "Associated request"
msgstr ""
-#: forms_treatments.py:263
+#: forms_treatments.py:291
msgid "Treatment - 010 - Request choice"
msgstr ""
-#: forms_treatments.py:268 forms_treatments.py:541 ishtar_menu.py:95
-#: models_treatments.py:618 models_treatments.py:646
-#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:207
+#: forms_treatments.py:296 forms_treatments.py:569 ishtar_menu.py:95
+#: models_treatments.py:780 models_treatments.py:808
+#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:457
msgid "Treatment request"
msgstr ""
-#: forms_treatments.py:277
+#: forms_treatments.py:305
msgid ""
"Are you sure you want to delete this treatment? All changes made to the "
"associated finds since this treatment record will be lost!"
msgstr ""
-#: forms_treatments.py:280
+#: forms_treatments.py:308
msgid "Would you like to delete this treatment?"
msgstr ""
-#: forms_treatments.py:285 models_finds.py:683 models_finds.py:1000
-#: models_treatments.py:150 models_treatments.py:363
-#: templates/ishtar/sheet_find.html:184 templates/ishtar/sheet_find.html:222
+#: forms_treatments.py:313 models_finds.py:697 models_finds.py:1017
+#: models_treatments.py:158 models_treatments.py:525
+#: templates/ishtar/sheet_find.html:253 templates/ishtar/sheet_find.html:290
+#: templates/ishtar/sheet_find.html:328
msgid "Container"
msgstr ""
-#: forms_treatments.py:291
+#: forms_treatments.py:319
msgid "Create a treatment"
msgstr ""
-#: forms_treatments.py:298
+#: forms_treatments.py:326
msgid "Precise date"
msgstr ""
-#: forms_treatments.py:340
+#: forms_treatments.py:368
msgid "At least a year is required."
msgstr ""
-#: forms_treatments.py:369
+#: forms_treatments.py:397
msgid "months"
msgstr ""
-#: forms_treatments.py:369
+#: forms_treatments.py:397
msgid "years"
msgstr ""
-#: forms_treatments.py:374 forms_treatments.py:643
+#: forms_treatments.py:402 forms_treatments.py:671
msgid "Slicing"
msgstr ""
-#: forms_treatments.py:377 forms_treatments.py:646
+#: forms_treatments.py:405 forms_treatments.py:674
msgid "Date get from"
msgstr ""
-#: forms_treatments.py:380 forms_treatments.py:649
+#: forms_treatments.py:408 forms_treatments.py:677
msgid "Date after"
msgstr ""
-#: forms_treatments.py:382 forms_treatments.py:651
+#: forms_treatments.py:410 forms_treatments.py:679
msgid "Date before"
msgstr ""
-#: forms_treatments.py:425 forms_treatments.py:475 forms_treatments.py:692
-#: forms_treatments.py:747
+#: forms_treatments.py:453 forms_treatments.py:503 forms_treatments.py:720
+#: forms_treatments.py:775
msgid "Act type"
msgstr ""
-#: forms_treatments.py:426 forms_treatments.py:693
+#: forms_treatments.py:454 forms_treatments.py:721
msgid "Indexed?"
msgstr ""
-#: forms_treatments.py:427 forms_treatments.py:694
+#: forms_treatments.py:455 forms_treatments.py:722
msgid "Object"
msgstr ""
-#: forms_treatments.py:431 forms_treatments.py:698
+#: forms_treatments.py:459 forms_treatments.py:726
msgid "Signature date after"
msgstr ""
-#: forms_treatments.py:433 forms_treatments.py:700
+#: forms_treatments.py:461 forms_treatments.py:728
msgid "Signature date before"
msgstr ""
-#: forms_treatments.py:435
+#: forms_treatments.py:463
msgid "Treatment name"
msgstr ""
-#: forms_treatments.py:436
+#: forms_treatments.py:464
msgid "Treatment year"
msgstr ""
-#: forms_treatments.py:437
+#: forms_treatments.py:465
msgid "Treatment index"
msgstr ""
-#: forms_treatments.py:439
+#: forms_treatments.py:467
msgid "Treatment internal reference"
msgstr ""
-#: forms_treatments.py:443 forms_treatments.py:714
+#: forms_treatments.py:471 forms_treatments.py:742
msgid "Modified by"
msgstr ""
-#: forms_treatments.py:473
+#: forms_treatments.py:501
msgid "Treatment - Administrative act - General"
msgstr ""
-#: forms_treatments.py:496 forms_treatments.py:548 models_treatments.py:588
+#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:750
msgid "Name"
msgstr ""
-#: forms_treatments.py:497 forms_treatments.py:555
+#: forms_treatments.py:525 forms_treatments.py:583
msgid "Internal ref."
msgstr ""
-#: forms_treatments.py:500 forms_treatments.py:559 models_treatments.py:69
-#: templates/ishtar/sheet_find.html:180 templates/ishtar/sheet_find.html:218
+#: forms_treatments.py:528 forms_treatments.py:587 models_treatments.py:71
+#: templates/ishtar/sheet_find.html:249 templates/ishtar/sheet_find.html:286
+#: templates/ishtar/sheet_find.html:324
msgid "Type"
msgstr ""
-#: forms_treatments.py:503
+#: forms_treatments.py:531
msgid "In charge"
msgstr ""
-#: forms_treatments.py:509 forms_treatments.py:567 models_treatments.py:597
+#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:759
#: templates/ishtar/sheet_treatmentfile.html:45
msgid "Applicant"
msgstr ""
-#: forms_treatments.py:515 forms_treatments.py:573 models_treatments.py:601
+#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:763
#: templates/ishtar/sheet_treatmentfile.html:53
msgid "Applicant organisation"
msgstr ""
-#: forms_treatments.py:529 views.py:524
+#: forms_treatments.py:557 views.py:572
msgid "Treatment request search"
msgstr ""
-#: forms_treatments.py:584 forms_treatments.py:638 models_treatments.py:607
+#: forms_treatments.py:585
+msgid "External ref."
+msgstr ""
+
+#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:769
msgid "Reception date"
msgstr ""
-#: forms_treatments.py:626
+#: forms_treatments.py:654
msgid "Another treatment request with this index exists for {}."
msgstr ""
-#: forms_treatments.py:632
+#: forms_treatments.py:660
msgid "Are you sure you want to delete this treatment request?"
msgstr ""
-#: forms_treatments.py:633
+#: forms_treatments.py:661
msgid "Would you like to delete this treatment request?"
msgstr ""
-#: forms_treatments.py:637 models_treatments.py:605
+#: forms_treatments.py:665 models_treatments.py:767
msgid "Creation date"
msgstr ""
-#: forms_treatments.py:647 forms_treatments.py:711 models_treatments.py:519
-#: models_treatments.py:590
+#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:681
+#: models_treatments.py:752
msgid "Treatment request type"
msgstr ""
-#: forms_treatments.py:703
+#: forms_treatments.py:731
msgid "Treatment request name"
msgstr ""
-#: forms_treatments.py:705
+#: forms_treatments.py:733
msgid "Treatment request year"
msgstr ""
-#: forms_treatments.py:707
+#: forms_treatments.py:735
msgid "Treatment request index"
msgstr ""
-#: forms_treatments.py:709
+#: forms_treatments.py:737
msgid "Treatment request internal reference"
msgstr ""
-#: forms_treatments.py:745
+#: forms_treatments.py:773
msgid "Treatment request - Administrative act - General"
msgstr ""
#: ishtar_menu.py:37 ishtar_menu.py:60 ishtar_menu.py:100 ishtar_menu.py:123
-#: ishtar_menu.py:155 ishtar_menu.py:179
+#: ishtar_menu.py:152 ishtar_menu.py:191
msgid "Search"
msgstr ""
#: ishtar_menu.py:42 ishtar_menu.py:65 ishtar_menu.py:105 ishtar_menu.py:127
-#: ishtar_menu.py:160 ishtar_menu.py:183
+#: ishtar_menu.py:195
msgid "Creation"
msgstr ""
#: ishtar_menu.py:47 ishtar_menu.py:70 ishtar_menu.py:110 ishtar_menu.py:131
-#: ishtar_menu.py:165 ishtar_menu.py:188
+#: ishtar_menu.py:178 ishtar_menu.py:200
msgid "Modification"
msgstr ""
#: ishtar_menu.py:52 ishtar_menu.py:82 ishtar_menu.py:115 ishtar_menu.py:134
-#: ishtar_menu.py:170 ishtar_menu.py:191
+#: ishtar_menu.py:183 ishtar_menu.py:203
msgid "Deletion"
msgstr ""
@@ -863,22 +907,29 @@ msgstr ""
msgid "Manage items"
msgstr ""
-#: ishtar_menu.py:120 ishtar_menu.py:176 models_finds.py:1719
+#: ishtar_menu.py:120 ishtar_menu.py:188 models_finds.py:1741
msgid "Administrative act"
msgstr ""
-#: ishtar_menu.py:138 ishtar_menu.py:195 models_finds.py:1081
-#: models_treatments.py:163 models_treatments.py:611
+#: ishtar_menu.py:138 ishtar_menu.py:207 models_finds.py:1098
+#: models_treatments.py:171 models_treatments.py:773
+#: templates/ishtar/sheet_find.html:56
msgid "Documents"
msgstr ""
-#: ishtar_menu.py:147 models_treatments.py:170 models_treatments.py:351
-#: templates/ishtar/sheet_treatment.html:4
-msgid "Treatment"
+#: ishtar_menu.py:158
+msgid ""
+"Treatment 1 1 - creation"
msgstr ""
-#: ishtar_menu.py:152
-msgid "Simple treatments"
+#: ishtar_menu.py:165
+msgid ""
+"Treatment n 1 - creation"
+msgstr ""
+
+#: ishtar_menu.py:172
+msgid ""
+"Treatment 1 n - creation"
msgstr ""
#: models_finds.py:51
@@ -889,9 +940,9 @@ msgstr ""
msgid "Recommendation"
msgstr ""
-#: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:138
-#: models_finds.py:161 models_finds.py:218 models_finds.py:967
-#: models_treatments.py:355
+#: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:143
+#: models_finds.py:166 models_finds.py:223 models_finds.py:984
+#: models_treatments.py:517
msgid "Order"
msgstr ""
@@ -904,12 +955,10 @@ msgid "Material type quality types"
msgstr ""
#: models_finds.py:82
-#| msgid "Conservatory state"
msgid "Conservatory state type"
msgstr ""
#: models_finds.py:83
-#| msgid "Conservatory states"
msgid "Conservatory state types"
msgstr ""
@@ -917,570 +966,600 @@ msgstr ""
msgid "Virtual"
msgstr ""
-#: models_finds.py:95
-msgid "Upstream is many"
+#: models_finds.py:94
+msgid "Destructive"
+msgstr ""
+
+#: models_finds.py:96
+#| msgid "Create a treatment"
+msgid "Create a new find"
msgstr ""
#: models_finds.py:97
-msgid "Check this if for this treatment from many finds you'll get one."
+msgid ""
+"If True when this treatment is applied a new version of the object will be "
+"created."
msgstr ""
#: models_finds.py:100
-msgid "Downstream is many"
+msgid "Upstream is many"
msgstr ""
#: models_finds.py:102
+msgid "Check this if for this treatment from many finds you'll get one."
+msgstr ""
+
+#: models_finds.py:105
+msgid "Downstream is many"
+msgstr ""
+
+#: models_finds.py:107
msgid "Check this if for this treatment from one find you'll get many."
msgstr ""
-#: models_finds.py:107 models_treatments.py:240
+#: models_finds.py:112 models_treatments.py:253
msgid "Treatment types"
msgstr ""
-#: models_finds.py:117
+#: models_finds.py:122
msgid "Integrity / interest type"
msgstr ""
-#: models_finds.py:118
+#: models_finds.py:123
msgid "Integrity / interest types"
msgstr ""
-#: models_finds.py:128
+#: models_finds.py:133
msgid "Remarkability type"
msgstr ""
-#: models_finds.py:129
+#: models_finds.py:134
msgid "Remarkability types"
msgstr ""
-#: models_finds.py:140
+#: models_finds.py:145
msgid "Batch type"
msgstr ""
-#: models_finds.py:141
+#: models_finds.py:146
msgid "Batch types"
msgstr ""
-#: models_finds.py:164
+#: models_finds.py:169
msgid "Object type quality type"
msgstr ""
-#: models_finds.py:165
+#: models_finds.py:170
msgid "Object type quality types"
msgstr ""
-#: models_finds.py:175
+#: models_finds.py:180
msgid "Alteration type"
msgstr ""
-#: models_finds.py:176
+#: models_finds.py:181
msgid "Alteration types"
msgstr ""
-#: models_finds.py:186
+#: models_finds.py:191
msgid "Alteration cause type"
msgstr ""
-#: models_finds.py:187
+#: models_finds.py:192
msgid "Alteration cause types"
msgstr ""
-#: models_finds.py:197
+#: models_finds.py:202
msgid "Treatment emergency type"
msgstr ""
-#: models_finds.py:198
+#: models_finds.py:203
msgid "Treatment emergency types"
msgstr ""
-#: models_finds.py:208
+#: models_finds.py:213
msgid "Communicability type"
msgstr ""
-#: models_finds.py:209
+#: models_finds.py:214
msgid "Communicability types"
msgstr ""
-#: models_finds.py:221
+#: models_finds.py:226
msgid "Checked type"
msgstr ""
-#: models_finds.py:222
+#: models_finds.py:227
msgid "Checked types"
msgstr ""
-#: models_finds.py:254 models_finds.py:960 models_treatments.py:143
-#: models_treatments.py:586
+#: models_finds.py:259 models_finds.py:977 models_treatments.py:147
+#: models_treatments.py:748
msgid "External ID"
msgstr ""
-#: models_finds.py:256 models_finds.py:962
+#: models_finds.py:261 models_finds.py:979
msgid "External ID is set automatically"
msgstr ""
-#: models_finds.py:260
+#: models_finds.py:265
msgid "Special interest"
msgstr ""
-#: models_finds.py:264
+#: models_finds.py:269
msgid "Context Record"
msgstr ""
-#: models_finds.py:272
+#: models_finds.py:277
msgid "Material index"
msgstr ""
-#: models_finds.py:289
+#: models_finds.py:294
msgid "Point (3D)"
msgstr ""
-#: models_finds.py:295 models_finds.py:298
+#: models_finds.py:300 models_finds.py:303
msgid "Cached value - do not edit"
msgstr ""
-#: models_finds.py:308 models_finds.py:958
+#: models_finds.py:313 models_finds.py:975
msgid "Base find"
msgstr ""
-#: models_finds.py:309
+#: models_finds.py:314
msgid "Base finds"
msgstr ""
-#: models_finds.py:565
+#: models_finds.py:579
msgid "g"
msgstr ""
-#: models_finds.py:566
+#: models_finds.py:580
msgid "kg"
msgstr ""
-#: models_finds.py:592 views.py:301
+#: models_finds.py:606 views.py:323
msgid "Manage basket"
msgstr ""
-#: models_finds.py:661
+#: models_finds.py:675
msgid "Base find - Short ID"
msgstr ""
-#: models_finds.py:662
+#: models_finds.py:676
msgid "Base find - Complete ID"
msgstr ""
-#: models_finds.py:664
+#: models_finds.py:678
msgid "Operation (code)"
msgstr ""
-#: models_finds.py:666
+#: models_finds.py:680
msgid "Town"
msgstr ""
-#: models_finds.py:668
+#: models_finds.py:682
msgid "Operation (name)"
msgstr ""
-#: models_finds.py:672
+#: models_finds.py:686
msgid "Parcel"
msgstr ""
-#: models_finds.py:673
+#: models_finds.py:687
msgid "Batch"
msgstr ""
-#: models_finds.py:674
+#: models_finds.py:688
msgid "Base find - Comment"
msgstr ""
-#: models_finds.py:675
+#: models_finds.py:689
msgid "Base find - Description"
msgstr ""
-#: models_finds.py:676
+#: models_finds.py:690
msgid "Base find - Topographic localisation"
msgstr ""
-#: models_finds.py:678
+#: models_finds.py:692
msgid "Base find - Special interest"
msgstr ""
-#: models_finds.py:680
+#: models_finds.py:694
msgid "Base find - Discovery date (exact or TPQ)"
msgstr ""
-#: models_finds.py:682
+#: models_finds.py:696
msgid "Base find - Discovery date (TAQ)"
msgstr ""
-#: models_finds.py:684
+#: models_finds.py:698
msgid "Periods"
msgstr ""
-#: models_finds.py:760
+#: models_finds.py:774
msgctxt "key for text search"
msgid "short-id"
msgstr ""
-#: models_finds.py:764
+#: models_finds.py:778
msgctxt "key for text search"
msgid "complete-id"
msgstr ""
-#: models_finds.py:768
+#: models_finds.py:782
msgctxt "key for text search"
msgid "free-id"
msgstr ""
-#: models_finds.py:772
+#: models_finds.py:786
msgctxt "key for text search"
msgid "denomination"
msgstr ""
-#: models_finds.py:776
+#: models_finds.py:790
msgctxt "key for text search"
msgid "town"
msgstr ""
-#: models_finds.py:780 models_treatments.py:87 models_treatments.py:551
+#: models_finds.py:794 models_treatments.py:91 models_treatments.py:713
msgctxt "key for text search"
msgid "year"
msgstr ""
-#: models_finds.py:784
+#: models_finds.py:798
msgctxt "key for text search"
msgid "operation-code"
msgstr ""
-#: models_finds.py:788
+#: models_finds.py:802
msgctxt "key for text search"
msgid "code-patriarche"
msgstr ""
-#: models_finds.py:792
+#: models_finds.py:806
msgctxt "key for text search"
msgid "operation-type"
msgstr ""
-#: models_finds.py:797
+#: models_finds.py:811
msgctxt "key for text search"
msgid "area"
msgstr ""
-#: models_finds.py:801
+#: models_finds.py:815
msgctxt "key for text search"
msgid "site"
msgstr ""
-#: models_finds.py:806 models_finds.py:945
+#: models_finds.py:820 models_finds.py:962
msgctxt "key for text search"
msgid "context-record-site"
msgstr ""
-#: models_finds.py:811 models_finds.py:939
+#: models_finds.py:825 models_finds.py:956
msgctxt "key for text search"
msgid "context-record"
msgstr ""
-#: models_finds.py:815
+#: models_finds.py:829
msgctxt "key for text search"
msgid "operation-relation-type"
msgstr ""
-#: models_finds.py:819
+#: models_finds.py:833
msgctxt "key for text search"
msgid "context-record-relation-type"
msgstr ""
-#: models_finds.py:823
+#: models_finds.py:837
msgctxt "key for text search"
msgid "period"
msgstr ""
-#: models_finds.py:827
+#: models_finds.py:841
msgctxt "key for text search"
msgid "material"
msgstr ""
-#: models_finds.py:831
+#: models_finds.py:845
msgctxt "key for text search"
msgid "object-type"
msgstr ""
-#: models_finds.py:835
+#: models_finds.py:849
msgctxt "key for text search"
msgid "preservation"
msgstr ""
-#: models_finds.py:839
+#: models_finds.py:853
msgctxt "key for text search"
msgid "conservatory"
msgstr ""
-#: models_finds.py:843
+#: models_finds.py:857
msgctxt "key for text search"
msgid "integrity"
msgstr ""
-#: models_finds.py:847
+#: models_finds.py:861
msgctxt "key for text search"
msgid "remarkability"
msgstr ""
-#: models_finds.py:851
+#: models_finds.py:865
msgctxt "key for text search"
msgid "description"
msgstr ""
-#: models_finds.py:855
+#: models_finds.py:869
msgctxt "key for text search"
msgid "batch"
msgstr ""
-#: models_finds.py:859
+#: models_finds.py:873
msgctxt "key for text search"
msgid "checked"
msgstr ""
-#: models_finds.py:863 models_treatments.py:95
+#: models_finds.py:877 models_treatments.py:99
msgctxt "key for text search"
msgid "has-image"
msgstr ""
-#: models_finds.py:867 models_finds.py:942
+#: models_finds.py:881 models_finds.py:959
msgctxt "key for text search"
msgid "location"
msgstr ""
-#: models_finds.py:871
+#: models_finds.py:885
msgctxt "key for text search"
msgid "warehouse"
msgstr ""
-#: models_finds.py:875
+#: models_finds.py:889
msgctxt "key for text search"
msgid "container-index"
msgstr ""
-#: models_finds.py:879
+#: models_finds.py:893
msgctxt "key for text search"
msgid "container-ref"
msgstr ""
-#: models_finds.py:883
+#: models_finds.py:897 wizards.py:392
msgctxt "key for text search"
msgid "basket"
msgstr ""
-#: models_finds.py:887 models_finds.py:936
+#: models_finds.py:901 models_finds.py:953
msgctxt "key for text search"
msgid "operation"
msgstr ""
-#: models_finds.py:891
+#: models_finds.py:905
msgctxt "key for text search"
msgid "last-modified-by"
msgstr ""
-#: models_finds.py:895
+#: models_finds.py:909
msgctxt "key for text search"
msgid "modified-since"
msgstr ""
-#: models_finds.py:919
+#: models_finds.py:913
+#| msgid "Create"
+msgctxt "key for text search"
+msgid "created-by"
+msgstr ""
+
+#: models_finds.py:936
msgid "Bulk update"
msgstr ""
-#: models_finds.py:930 models_finds.py:1180
-#: templates/ishtar/forms/qa_find_treatment.html:16 views.py:666
+#: models_finds.py:947 models_finds.py:1200
+#: templates/ishtar/forms/qa_find_treatment.html:16 views.py:714
msgid "Packaging"
msgstr ""
-#: models_finds.py:986
+#: models_finds.py:1003
msgid "Weight"
msgstr ""
-#: models_finds.py:987
+#: models_finds.py:1004
msgid "Weight unit"
msgstr ""
-#: models_finds.py:993 templates/ishtar/sheet_find.html:174
+#: models_finds.py:1010 templates/ishtar/sheet_find.html:280
msgid "Upstream treatment"
msgstr ""
-#: models_finds.py:996 templates/ishtar/sheet_find.html:212
+#: models_finds.py:1013 templates/ishtar/sheet_find.html:318
msgid "Downstream treatment"
msgstr ""
-#: models_finds.py:1031
+#: models_finds.py:1048
msgid "Clutter - long side (cm)"
msgstr ""
-#: models_finds.py:1033
+#: models_finds.py:1050
msgid "Clutter - short side (cm)"
msgstr ""
-#: models_finds.py:1035
+#: models_finds.py:1052
msgid "Clutter - height (cm)"
msgstr ""
-#: models_finds.py:1051
+#: models_finds.py:1068
msgid "Collection"
msgstr ""
-#: models_finds.py:1083 models_treatments.py:165 models_treatments.py:613
+#: models_finds.py:1100 models_treatments.py:173 models_treatments.py:775
msgid "Cached name"
msgstr ""
-#: models_finds.py:1105
+#: models_finds.py:1122
msgid "FIND"
msgstr ""
-#: models_finds.py:1174
+#: models_finds.py:1194
msgid "Add to basket"
msgstr ""
-#: models_finds.py:1222 wizards.py:74 wizards.py:219
+#: models_finds.py:1242 wizards.py:85 wizards.py:469
msgid "Operation"
msgstr ""
-#: models_finds.py:1544
+#: models_finds.py:1566
msgid "No container have been set - the localisation cannot be set."
msgstr ""
-#: models_finds.py:1550
+#: models_finds.py:1572
msgid "The division number {} have not been set for the warehouse {}."
msgstr ""
-#: models_finds.py:1720
+#: models_finds.py:1742
msgid "Person"
msgstr ""
-#: models_finds.py:1726
+#: models_finds.py:1748
msgid "Property"
msgstr ""
-#: models_finds.py:1727
+#: models_finds.py:1749
msgid "Properties"
msgstr ""
-#: models_treatments.py:42
+#: models_treatments.py:44
msgid "Treatment state type"
msgstr ""
-#: models_treatments.py:43
+#: models_treatments.py:45
msgid "Treatment state types"
msgstr ""
-#: models_treatments.py:67
+#: models_treatments.py:69
msgid "Downstream find"
msgstr ""
-#: models_treatments.py:79
+#: models_treatments.py:70
+msgid "Upstream find"
+msgstr ""
+
+#: models_treatments.py:83
msgctxt "key for text search"
msgid "label"
msgstr ""
-#: models_treatments.py:83
+#: models_treatments.py:87
msgctxt "key for text search"
msgid "other-reference"
msgstr ""
-#: models_treatments.py:91 models_treatments.py:555
+#: models_treatments.py:95 models_treatments.py:717
msgctxt "key for text search"
msgid "index"
msgstr ""
-#: models_treatments.py:99 models_treatments.py:559
+#: models_treatments.py:103 models_treatments.py:721
msgctxt "key for text search"
msgid "type"
msgstr ""
-#: models_treatments.py:135
+#: models_treatments.py:139
msgid "Location where the treatment is done. Target warehouse for a move."
msgstr ""
-#: models_treatments.py:152
+#: models_treatments.py:157
+msgid "Related finds for non-destructive treatment"
+msgstr ""
+
+#: models_treatments.py:160
msgid "Estimated cost"
msgstr ""
-#: models_treatments.py:154
+#: models_treatments.py:162
msgid "Quoted cost"
msgstr ""
-#: models_treatments.py:156
+#: models_treatments.py:164
msgid "Realized cost"
msgstr ""
-#: models_treatments.py:158
+#: models_treatments.py:166
msgid "Insurance cost"
msgstr ""
-#: models_treatments.py:160
+#: models_treatments.py:168
msgid "Target a basket"
msgstr ""
-#: models_treatments.py:171 templates/ishtar/sheet_find.html:171
+#: models_treatments.py:179 templates/ishtar/sheet_find.html:243
#: templates/ishtar/sheet_treatmentfile.html:61
msgid "Treatments"
msgstr ""
-#: models_treatments.py:190
+#: models_treatments.py:199
msgid "TREATMENT"
msgstr ""
-#: models_treatments.py:249 templates/ishtar/sheet_treatment.html:61
+#: models_treatments.py:262 templates/ishtar/sheet_treatment.html:66
msgid "Downstream finds"
msgstr ""
-#: models_treatments.py:364 templates/ishtar/sheet_find.html:183
-#: templates/ishtar/sheet_find.html:221
+#: models_treatments.py:526 templates/ishtar/sheet_find.html:252
+#: templates/ishtar/sheet_find.html:289 templates/ishtar/sheet_find.html:327
msgid "Doer"
msgstr ""
-#: models_treatments.py:365 models_treatments.py:366
+#: models_treatments.py:527 models_treatments.py:528
+#: templates/ishtar/sheet_treatment.html:56
msgid "Related finds"
msgstr ""
-#: models_treatments.py:508
+#: models_treatments.py:670
msgid "Is upstream"
msgstr ""
-#: models_treatments.py:520
+#: models_treatments.py:682
msgid "Treatment request types"
msgstr ""
-#: models_treatments.py:543
+#: models_treatments.py:705
msgctxt "key for text search"
msgid "name"
msgstr ""
-#: models_treatments.py:547
+#: models_treatments.py:709
msgctxt "key for text search"
msgid "reference"
msgstr ""
-#: models_treatments.py:563
+#: models_treatments.py:725
msgctxt "key for text search"
msgid "in-charge"
msgstr ""
-#: models_treatments.py:567
+#: models_treatments.py:729
msgctxt "key for text search"
msgid "applicant"
msgstr ""
-#: models_treatments.py:571
+#: models_treatments.py:733
msgctxt "key for text search"
msgid "applicant-organisation"
msgstr ""
-#: models_treatments.py:584
+#: models_treatments.py:746
msgid "Internal reference"
msgstr ""
-#: models_treatments.py:593
+#: models_treatments.py:755
msgid "Person in charge"
msgstr ""
-#: models_treatments.py:619
+#: models_treatments.py:781
msgid "Treatment requests"
msgstr ""
@@ -1496,45 +1575,45 @@ msgstr ""
msgid "Associate a treatment"
msgstr ""
-#: templates/ishtar/sheet_basefind.html:6
+#: templates/ishtar/sheet_basefind.html:10
msgid "Internal ID"
msgstr ""
-#: templates/ishtar/sheet_basefind.html:21
+#: templates/ishtar/sheet_basefind.html:25
msgid "Discovery date"
msgstr ""
-#: templates/ishtar/sheet_basefind.html:24
+#: templates/ishtar/sheet_basefind.html:28
msgid "Discovery year"
msgstr ""
-#: templates/ishtar/sheet_basefind.html:27
+#: templates/ishtar/sheet_basefind.html:31
msgid "Discovery date (TPQ)"
msgstr ""
-#: templates/ishtar/sheet_basefind.html:52
+#: templates/ishtar/sheet_basefind.html:56
msgid "X:"
msgstr ""
-#: templates/ishtar/sheet_basefind.html:53
-#: templates/ishtar/sheet_basefind.html:55
#: templates/ishtar/sheet_basefind.html:57
+#: templates/ishtar/sheet_basefind.html:59
+#: templates/ishtar/sheet_basefind.html:61
msgid "error:"
msgstr ""
-#: templates/ishtar/sheet_basefind.html:54
+#: templates/ishtar/sheet_basefind.html:58
msgid "Y:"
msgstr ""
-#: templates/ishtar/sheet_basefind.html:56
+#: templates/ishtar/sheet_basefind.html:60
msgid "Z:"
msgstr ""
-#: templates/ishtar/sheet_basefind.html:60
+#: templates/ishtar/sheet_basefind.html:64
msgid "SRID"
msgstr ""
-#: templates/ishtar/sheet_basefind.html:75
+#: templates/ishtar/sheet_basefind.html:79
msgid "Last modified by"
msgstr ""
@@ -1544,39 +1623,60 @@ msgid ""
"the find."
msgstr ""
-#: templates/ishtar/sheet_find.html:29
-msgid "Associated base finds"
+#: templates/ishtar/sheet_find.html:23
+#| msgid "Base find"
+msgid "Image / Base find"
+msgstr ""
+
+#: templates/ishtar/sheet_find.html:30
+msgid "Identification / Description / Dimensions"
+msgstr ""
+
+#: templates/ishtar/sheet_find.html:38
+#| msgid "Preservation"
+msgid "Datings / Preservation"
+msgstr ""
+
+#: templates/ishtar/sheet_find.html:47
+#| msgid "Base treatment"
+msgid "Warehouse / Treatments"
msgstr ""
-#: templates/ishtar/sheet_find.html:53
+#: templates/ishtar/sheet_find.html:64
+msgid "Custom fields"
+msgstr ""
+
+#: templates/ishtar/sheet_find.html:123
msgid "Administrative index"
msgstr ""
-#: templates/ishtar/sheet_find.html:95
+#: templates/ishtar/sheet_find.html:165
msgid "Checked"
msgstr ""
-#: templates/ishtar/sheet_find.html:160
+#: templates/ishtar/sheet_find.html:232
msgid "Warehouse"
msgstr ""
-#: templates/ishtar/sheet_find.html:178 templates/ishtar/sheet_find.html:216
+#: templates/ishtar/sheet_find.html:247 templates/ishtar/sheet_find.html:284
+#: templates/ishtar/sheet_find.html:322
msgid "Year - index"
msgstr ""
-#: templates/ishtar/sheet_find.html:182 templates/ishtar/sheet_find.html:220
+#: templates/ishtar/sheet_find.html:251 templates/ishtar/sheet_find.html:288
+#: templates/ishtar/sheet_find.html:326
msgid "Related finds (max. 15 displayed)"
msgstr ""
-#: templates/ishtar/sheet_find.html:208
+#: templates/ishtar/sheet_find.html:314
msgid "Export as CSV"
msgstr ""
-#: templates/ishtar/sheet_find.html:208 templates/ishtar/sheet_find.html:247
+#: templates/ishtar/sheet_find.html:314 templates/ishtar/sheet_find.html:353
msgid "CSV"
msgstr ""
-#: templates/ishtar/sheet_find.html:252
+#: templates/ishtar/sheet_find.html:360
msgid "Associated documents"
msgstr ""
@@ -1594,11 +1694,11 @@ msgctxt "Treatment"
msgid "Active"
msgstr ""
-#: templates/ishtar/sheet_treatment.html:66
+#: templates/ishtar/sheet_treatment.html:71
msgid "Related operations"
msgstr ""
-#: templates/ishtar/sheet_treatment.html:77
+#: templates/ishtar/sheet_treatment.html:82
#: templates/ishtar/sheet_treatmentfile.html:73
msgid "Administrative acts"
msgstr ""
@@ -1613,6 +1713,12 @@ msgctxt "Treatment request"
msgid "Active"
msgstr ""
+#: templates/ishtar/wizard/wizard_simplefind.html:6
+msgid ""
+"This find is related to many base finds. To edit field related to base finds "
+"edit the corresponding find between theses:"
+msgstr ""
+
#: views.py:132
msgid "Basket modify"
msgstr ""
@@ -1621,78 +1727,84 @@ msgstr ""
msgid "New find"
msgstr ""
-#: views.py:209
+#: views.py:225
msgid "Find modification"
msgstr ""
-#: views.py:238
+#: views.py:260
msgid "Find deletion"
msgstr ""
-#: views.py:251
+#: views.py:273
msgid "New basket"
msgstr ""
-#: views.py:280
+#: views.py:302
msgid "Manage items in basket"
msgstr ""
-#: views.py:389
+#: views.py:411
msgid "Delete basket"
msgstr ""
-#: views.py:441
+#: views.py:463 views.py:476 views.py:489
msgid "New treatment"
msgstr ""
-#: views.py:449
+#: views.py:497
msgid "Treatment modification"
msgstr ""
-#: views.py:466
+#: views.py:514
msgid "Treatment deletion"
msgstr ""
-#: views.py:473
+#: views.py:521
msgid "Treatment: search administrative act"
msgstr ""
-#: views.py:482
+#: views.py:530
msgid "Treatment: new administrative act"
msgstr ""
-#: views.py:492
+#: views.py:540
msgid "Treatment: administrative act modification"
msgstr ""
-#: views.py:501
+#: views.py:549
msgid "Treatment: administrative act deletion"
msgstr ""
-#: views.py:534
+#: views.py:582
msgid "New treatment request"
msgstr ""
-#: views.py:541
+#: views.py:589
msgid "Treatment request modification"
msgstr ""
-#: views.py:557
+#: views.py:605
msgid "Treatment request deletion"
msgstr ""
-#: views.py:564
+#: views.py:612
msgid "Treatment request: search administrative act"
msgstr ""
-#: views.py:574
+#: views.py:622
msgid "Treatment request: new administrative act"
msgstr ""
-#: views.py:584
+#: views.py:632
msgid "Treatment request: administrative act modification"
msgstr ""
-#: views.py:593
+#: views.py:641
msgid "Treatment request: administrative act deletion"
msgstr ""
+
+#: wizards.py:387
+msgid ""
+"The new basket: \"{}\" have been created with the resulting items. This "
+"search have been pinned."
+msgstr ""
diff --git a/archaeological_warehouse/locale/django.pot b/archaeological_warehouse/locale/django.pot
index 139895395..afd2e351d 100644
--- a/archaeological_warehouse/locale/django.pot
+++ b/archaeological_warehouse/locale/django.pot
@@ -9,169 +9,169 @@
msgid ""
msgstr ""
-#: forms.py:41 forms.py:113 ishtar_menu.py:40 models.py:94 models.py:258
+#: forms.py:42 forms.py:114 ishtar_menu.py:40 models.py:94 models.py:258
#: templates/ishtar/sheet_warehouse.html:4
msgid "Warehouse"
msgstr ""
-#: forms.py:50 forms.py:55 models.py:622
+#: forms.py:51 forms.py:56 models.py:623
msgid "Division"
msgstr ""
-#: forms.py:57 models.py:286
+#: forms.py:58 models.py:286
msgid "Order"
msgstr ""
-#: forms.py:71
+#: forms.py:72
msgid "There are identical divisions."
msgstr ""
-#: forms.py:76 models.py:83
+#: forms.py:77 models.py:83
msgid "Divisions"
msgstr ""
-#: forms.py:77
+#: forms.py:78
msgid "Warehouse - 020 - Divisions"
msgstr ""
-#: forms.py:85 forms.py:254
+#: forms.py:86 forms.py:255
msgid "Full text search"
msgstr ""
-#: forms.py:88 forms.py:119 models.py:75 models.py:255
+#: forms.py:89 forms.py:120 models.py:75 models.py:255
msgid "Name"
msgstr ""
-#: forms.py:89 forms.py:121 models.py:39 models.py:77
+#: forms.py:90 forms.py:122 models.py:39 models.py:77
msgid "Warehouse type"
msgstr ""
-#: forms.py:101 views.py:108
+#: forms.py:102 views.py:108
msgid "Warehouse search"
msgstr ""
-#: forms.py:114
+#: forms.py:115
msgid "Warehouse - 010 - General"
msgstr ""
-#: forms.py:124 models.py:80
+#: forms.py:125 models.py:80
msgid "Person in charge"
msgstr ""
-#: forms.py:130 forms.py:198 models.py:81 models.py:381
+#: forms.py:131 forms.py:199 models.py:81 models.py:382
msgid "Comment"
msgstr ""
-#: forms.py:132
+#: forms.py:133
msgid "Address"
msgstr ""
-#: forms.py:134
+#: forms.py:135
msgid "Address complement"
msgstr ""
-#: forms.py:136
+#: forms.py:137
msgid "Postal code"
msgstr ""
-#: forms.py:138
+#: forms.py:139
msgid "Town"
msgstr ""
-#: forms.py:139
+#: forms.py:140
msgid "Country"
msgstr ""
-#: forms.py:141
+#: forms.py:142
msgid "Phone"
msgstr ""
-#: forms.py:142
+#: forms.py:143
msgid "Mobile phone"
msgstr ""
-#: forms.py:167 forms.py:168
+#: forms.py:168 forms.py:169
msgid "Would you like to delete this warehouse?"
msgstr ""
-#: forms.py:172 models.py:395 models.py:619
+#: forms.py:173 models.py:396 models.py:620
#: templates/ishtar/sheet_container.html:4
msgid "Container"
msgstr ""
-#: forms.py:173
+#: forms.py:174
msgid "Container - 010 - General"
msgstr ""
-#: forms.py:179 forms.py:261 models.py:301
+#: forms.py:180 forms.py:262 models.py:301
msgid "Ref."
msgstr ""
-#: forms.py:180 models.py:389
+#: forms.py:181 models.py:390
msgid "Old reference"
msgstr ""
-#: forms.py:182 forms.py:260 models.py:304 models.py:379
+#: forms.py:183 forms.py:261 models.py:305 models.py:380
msgid "Container type"
msgstr ""
-#: forms.py:184 forms.py:258
+#: forms.py:185 forms.py:259
msgid "Current location (warehouse)"
msgstr ""
-#: forms.py:190 forms.py:259 models.py:376
+#: forms.py:191 forms.py:260 models.py:377
msgid "Responsible warehouse"
msgstr ""
-#: forms.py:196
+#: forms.py:197
msgid "Image"
msgstr ""
-#: forms.py:223
+#: forms.py:224
msgid "ID"
msgstr ""
-#: forms.py:245
+#: forms.py:246
msgid "This ID already exists for this warehouse."
msgstr ""
-#: forms.py:272 forms.py:278 views.py:150
+#: forms.py:273 forms.py:279 views.py:150
msgid "Container search"
msgstr ""
-#: forms.py:274 forms.py:280
+#: forms.py:275 forms.py:281
msgid "You should select a container."
msgstr ""
-#: forms.py:275
+#: forms.py:276
msgid "Add a new container"
msgstr ""
-#: forms.py:285 ishtar_menu.py:36 views.py:103
+#: forms.py:286 ishtar_menu.py:36 views.py:103
msgid "Packaging"
msgstr ""
-#: forms.py:291
+#: forms.py:292
msgid "Packager"
msgstr ""
-#: forms.py:297
+#: forms.py:298
msgid "Date"
msgstr ""
-#: forms.py:301
+#: forms.py:304
msgid "Packaged finds"
msgstr ""
-#: forms.py:305
+#: forms.py:308
msgid "Container - 020 - Localisation"
msgstr ""
-#: forms.py:307 models.py:382
+#: forms.py:310 models.py:383
msgid "Localisation"
msgstr ""
-#: forms.py:331 forms.py:332
+#: forms.py:334 forms.py:335
msgid "Would you like to delete this container?"
msgstr ""
@@ -195,7 +195,7 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:57 models.py:396 templates/ishtar/sheet_warehouse.html:42
+#: ishtar_menu.py:57 models.py:397 templates/ishtar/sheet_warehouse.html:42
#: templates/ishtar/sheet_warehouse.html:87
msgid "Containers"
msgstr ""
@@ -209,7 +209,7 @@ msgctxt "key for text search"
msgid "name"
msgstr ""
-#: models.py:64 models.py:356
+#: models.py:64 models.py:357
msgctxt "key for text search"
msgid "type"
msgstr ""
@@ -218,11 +218,11 @@ msgstr ""
msgid "Documents"
msgstr ""
-#: models.py:89 models.py:390
+#: models.py:89 models.py:391
msgid "External ID"
msgstr ""
-#: models.py:91 models.py:392
+#: models.py:91 models.py:393
msgid "External ID is set automatically"
msgstr ""
@@ -262,62 +262,62 @@ msgstr ""
msgid "Volume (l)"
msgstr ""
-#: models.py:305
+#: models.py:306
msgid "Container types"
msgstr ""
-#: models.py:339
+#: models.py:340
msgid "Location - index"
msgstr ""
-#: models.py:340
+#: models.py:341
msgid "Precise localisation"
msgstr ""
-#: models.py:341
+#: models.py:342
msgid "Type"
msgstr ""
-#: models.py:348
+#: models.py:349
msgctxt "key for text search"
msgid "location"
msgstr ""
-#: models.py:352
+#: models.py:353
msgctxt "key for text search"
msgid "responsible-warehouse"
msgstr ""
-#: models.py:360
+#: models.py:361
msgctxt "key for text search"
msgid "reference"
msgstr ""
-#: models.py:373
+#: models.py:374
msgid "Location (warehouse)"
msgstr ""
-#: models.py:380
+#: models.py:381
msgid "Container ref."
msgstr ""
-#: models.py:384
+#: models.py:385
msgid "Cached location"
msgstr ""
-#: models.py:386
+#: models.py:387
msgid "Cached division"
msgstr ""
-#: models.py:623
+#: models.py:624
msgid "Reference"
msgstr ""
-#: models.py:626
+#: models.py:627
msgid "Container localisation"
msgstr ""
-#: models.py:627
+#: models.py:628
msgid "Container localisations"
msgstr ""
diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot
index 638f29f22..5f0f526fc 100644
--- a/ishtar_common/locale/django.pot
+++ b/ishtar_common/locale/django.pot
@@ -34,12 +34,12 @@ msgstr ""
msgid "Export selected as CSV file"
msgstr ""
-#: admin.py:207 models.py:1686 templates/navbar.html:31
+#: admin.py:207 models.py:1700 templates/navbar.html:31
msgid "Profile"
msgstr ""
#: admin.py:208 forms_common.py:782 forms_common.py:801 forms_common.py:802
-#: models.py:3039
+#: models.py:3056
msgid "Profiles"
msgstr ""
@@ -61,7 +61,7 @@ msgstr ""
msgid "These parents are missing: {}"
msgstr ""
-#: admin.py:386 admin.py:405 models.py:883 models.py:4141
+#: admin.py:386 admin.py:405 models.py:902 models.py:4158
msgid "Parent"
msgstr ""
@@ -69,11 +69,11 @@ msgstr ""
msgid "Center"
msgstr ""
-#: admin.py:395 models.py:4003
+#: admin.py:395 models.py:4020
msgid "Limit"
msgstr ""
-#: admin.py:398 models.py:4013
+#: admin.py:398 models.py:4030
msgid "Town children"
msgstr ""
@@ -121,16 +121,16 @@ msgstr ""
msgid "Hide selected"
msgstr ""
-#: admin.py:931 models.py:2080
+#: admin.py:931 models.py:2095
msgid "Form"
msgstr ""
-#: admin.py:933 models.py:2105 models_imports.py:127
+#: admin.py:933 models.py:2120 models_imports.py:127
#: templates/ishtar/dashboards/dashboard_main.html:39
msgid "Users"
msgstr ""
-#: admin.py:953 models.py:2180
+#: admin.py:953 models.py:2195
msgid "Field"
msgstr ""
@@ -326,36 +326,36 @@ msgstr ""
msgid "Are you sure you want to delete?"
msgstr ""
-#: forms.py:379
+#: forms.py:410
msgid "There are identical items."
msgstr ""
-#: forms.py:535
+#: forms.py:566
msgid "Last modified by"
msgstr ""
-#: forms.py:541
+#: forms.py:572
msgid "Modified since"
msgstr ""
-#: forms.py:565 forms.py:566
+#: forms.py:596 forms.py:597
msgid "Closing date"
msgstr ""
-#: forms.py:578 forms_common.py:1272
+#: forms.py:609 forms_common.py:1272
msgid "You should select an item."
msgstr ""
-#: forms.py:579
+#: forms.py:610
msgid "Add a new item"
msgstr ""
-#: forms.py:769 models.py:2434
+#: forms.py:800 models.py:2450
msgid "Template"
msgstr ""
#: forms_common.py:54 forms_common.py:72 forms_common.py:317
-#: forms_common.py:556 models.py:2568 models.py:4020
+#: forms_common.py:556 models.py:2584 models.py:4037
#: templates/blocks/JQueryAdvancedTown.html:19
msgid "Town"
msgstr ""
@@ -370,8 +370,8 @@ msgid ""
"french town Saint-Denis in the Seine-Saint-Denis department. "
msgstr ""
-#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2952
-#: models.py:3204 models.py:3332 models.py:3495
+#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2969
+#: models.py:3221 models.py:3349 models.py:3512
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr ""
@@ -423,16 +423,16 @@ msgid "all users"
msgstr ""
#: forms_common.py:305 forms_common.py:475 forms_common.py:609
-#: ishtar_menu.py:76 models.py:2773 models.py:2890 models.py:3292
+#: ishtar_menu.py:76 models.py:2789 models.py:2907 models.py:3309
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr ""
#: forms_common.py:308 forms_common.py:351 forms_common.py:470
#: forms_common.py:526 forms_common.py:604 forms_common.py:790
-#: forms_common.py:823 models.py:1056 models.py:1080 models.py:1879
-#: models.py:2079 models.py:2430 models.py:2765 models.py:2936 models.py:3192
-#: models.py:3999 models.py:4262 models_imports.py:98 models_imports.py:123
+#: forms_common.py:823 models.py:1075 models.py:1099 models.py:1894
+#: models.py:2094 models.py:2446 models.py:2781 models.py:2953 models.py:3209
+#: models.py:4016 models.py:4281 models_imports.py:98 models_imports.py:123
#: models_imports.py:445 models_imports.py:537 models_imports.py:827
#: templates/ishtar/import_step_by_step.html:102
#: templates/ishtar/import_step_by_step.html:270
@@ -441,40 +441,40 @@ msgstr ""
msgid "Name"
msgstr ""
-#: forms_common.py:309 models.py:2721 models_imports.py:630
+#: forms_common.py:309 models.py:2737 models_imports.py:630
#: models_imports.py:631
msgid "Organization type"
msgstr ""
-#: forms_common.py:311 forms_common.py:550 models.py:2563
+#: forms_common.py:311 forms_common.py:550 models.py:2579
#: templates/ishtar/blocks/sheet_address_section.html:4
msgid "Address"
msgstr ""
-#: forms_common.py:313 forms_common.py:553 models.py:2564
+#: forms_common.py:313 forms_common.py:553 models.py:2580
msgid "Address complement"
msgstr ""
-#: forms_common.py:315 forms_common.py:554 models.py:2566
+#: forms_common.py:315 forms_common.py:554 models.py:2582
msgid "Postal code"
msgstr ""
-#: forms_common.py:318 forms_common.py:557 models.py:2569
+#: forms_common.py:318 forms_common.py:557 models.py:2585
msgid "Country"
msgstr ""
#: forms_common.py:320 forms_common.py:472 forms_common.py:530
-#: forms_common.py:606 forms_common.py:731 models.py:2596
+#: forms_common.py:606 forms_common.py:731 models.py:2612
msgid "Email"
msgstr ""
-#: forms_common.py:321 forms_common.py:533 models.py:2581
+#: forms_common.py:321 forms_common.py:533 models.py:2597
#: templates/ishtar/sheet_person.html:27
#: templates/ishtar/wizard/wizard_person.html:33
msgid "Phone"
msgstr ""
-#: forms_common.py:322 forms_common.py:542 models.py:2593
+#: forms_common.py:322 forms_common.py:542 models.py:2609
#: templates/ishtar/sheet_person.html:45
#: templates/ishtar/wizard/wizard_person.html:54
msgid "Mobile phone"
@@ -486,7 +486,7 @@ msgid "Full text search"
msgstr ""
#: forms_common.py:352 forms_common.py:473 forms_common.py:607
-#: forms_common.py:788 models.py:1089 models.py:2767 models.py:3738
+#: forms_common.py:788 models.py:1108 models.py:2783 models.py:3755
#: models_imports.py:680 templates/ishtar/blocks/window_image_detail.html:24
#: templates/ishtar/blocks/window_tables/documents.html:8
#: templates/ishtar/import_table.html:28
@@ -510,7 +510,7 @@ msgstr ""
msgid "Organization to merge"
msgstr ""
-#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2934
+#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2951
#: templates/ishtar/sheet_organization.html:24
msgid "Surname"
msgstr ""
@@ -527,25 +527,25 @@ msgstr ""
msgid "Identity"
msgstr ""
-#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2928
-#: models.py:2930 models.py:3729 models_imports.py:632
+#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2945
+#: models.py:2947 models.py:3746 models_imports.py:632
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr ""
-#: forms_common.py:522 models.py:2932
+#: forms_common.py:522 models.py:2949
msgid "Salutation"
msgstr ""
-#: forms_common.py:528 models.py:2938
+#: forms_common.py:528 models.py:2955
msgid "Raw name"
msgstr ""
-#: forms_common.py:531 models.py:2582
+#: forms_common.py:531 models.py:2598
msgid "Phone description"
msgstr ""
-#: forms_common.py:534 models.py:2584 models.py:2586
+#: forms_common.py:534 models.py:2600 models.py:2602
msgid "Phone description 2"
msgstr ""
@@ -553,11 +553,11 @@ msgstr ""
msgid "Phone 2"
msgstr ""
-#: forms_common.py:538 models.py:2590
+#: forms_common.py:538 models.py:2606
msgid "Phone description 3"
msgstr ""
-#: forms_common.py:540 models.py:2588
+#: forms_common.py:540 models.py:2604
msgid "Phone 3"
msgstr ""
@@ -565,23 +565,23 @@ msgstr ""
msgid "Current organization"
msgstr ""
-#: forms_common.py:559 models.py:2571
+#: forms_common.py:559 models.py:2587
msgid "Other address: address"
msgstr ""
-#: forms_common.py:562 models.py:2574
+#: forms_common.py:562 models.py:2590
msgid "Other address: address complement"
msgstr ""
-#: forms_common.py:564 models.py:2575
+#: forms_common.py:564 models.py:2591
msgid "Other address: postal code"
msgstr ""
-#: forms_common.py:566 models.py:2577
+#: forms_common.py:566 models.py:2593
msgid "Other address: town"
msgstr ""
-#: forms_common.py:568 models.py:2579
+#: forms_common.py:568 models.py:2595
msgid "Other address: country"
msgstr ""
@@ -589,7 +589,7 @@ msgstr ""
msgid "Already has an account"
msgstr ""
-#: forms_common.py:603 models.py:3293
+#: forms_common.py:603 models.py:3310
msgid "Username"
msgstr ""
@@ -597,7 +597,7 @@ msgstr ""
msgid "Account search"
msgstr ""
-#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2829
+#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2846
msgid "Person type"
msgstr ""
@@ -625,7 +625,7 @@ msgstr ""
msgid "This username already exists."
msgstr ""
-#: forms_common.py:789 models.py:3195 models.py:4148
+#: forms_common.py:789 models.py:3212 models.py:4165
msgid "Areas"
msgstr ""
@@ -633,11 +633,11 @@ msgstr ""
msgid "Send the new password by email?"
msgstr ""
-#: forms_common.py:821 models.py:3197 views.py:968
+#: forms_common.py:821 models.py:3214 views.py:968
msgid "Current profile"
msgstr ""
-#: forms_common.py:824 models.py:3175 models.py:3194
+#: forms_common.py:824 models.py:3192 models.py:3211
msgid "Profile type"
msgstr ""
@@ -665,8 +665,8 @@ msgstr ""
msgid " (duplicate)"
msgstr ""
-#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4021
-#: models.py:4136
+#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4038
+#: models.py:4153
msgid "Towns"
msgstr ""
@@ -693,19 +693,19 @@ msgstr ""
msgid "Document - General"
msgstr ""
-#: forms_common.py:1098 forms_common.py:1218 models.py:3543
+#: forms_common.py:1098 forms_common.py:1218 models.py:3560
#: models_imports.py:633
msgid "Source type"
msgstr ""
#: forms_common.py:1101 forms_common.py:1152 forms_common.py:1333
-#: forms_common.py:1334 models.py:3504 models.py:3612 models.py:3748
+#: forms_common.py:1334 models.py:3521 models.py:3629 models.py:3765
#: templates/ishtar/blocks/window_image_detail.html:9
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
msgstr ""
-#: forms_common.py:1105 models.py:3754
+#: forms_common.py:1105 models.py:3771
msgid "Numerical ressource (web address)"
msgstr ""
@@ -718,7 +718,7 @@ msgctxt "Not directory"
msgid "File"
msgstr ""
-#: forms_common.py:1113 forms_common.py:1219 models.py:4138
+#: forms_common.py:1113 forms_common.py:1219 models.py:4155
msgid "Reference"
msgstr ""
@@ -726,38 +726,38 @@ msgstr ""
msgid "Internal reference"
msgstr ""
-#: forms_common.py:1118 models.py:3756
+#: forms_common.py:1118 models.py:3773
#: templates/ishtar/blocks/window_image_detail.html:150
msgid "Receipt date"
msgstr ""
-#: forms_common.py:1120 models.py:3758 models_imports.py:859
+#: forms_common.py:1120 models.py:3775 models_imports.py:859
#: templates/ishtar/blocks/window_image_detail.html:54
msgid "Creation date"
msgstr ""
-#: forms_common.py:1123 models.py:3761
+#: forms_common.py:1123 models.py:3778
#: templates/ishtar/blocks/window_image_detail.html:160
msgid "Receipt date in documentation"
msgstr ""
-#: forms_common.py:1125 forms_common.py:1222 models.py:473 models.py:2942
-#: models.py:3421 models.py:3764 models_imports.py:483
+#: forms_common.py:1125 forms_common.py:1222 models.py:493 models.py:2959
+#: models.py:3438 models.py:3781 models_imports.py:483
#: templates/ishtar/blocks/window_image_detail.html:170
msgid "Comment"
msgstr ""
-#: forms_common.py:1127 forms_common.py:1221 models.py:1884 models.py:3763
+#: forms_common.py:1127 forms_common.py:1221 models.py:1899 models.py:3780
#: models_imports.py:125 models_imports.py:372 models_imports.py:446
msgid "Description"
msgstr ""
-#: forms_common.py:1130 models.py:3765
+#: forms_common.py:1130 models.py:3782
#: templates/ishtar/blocks/window_image_detail.html:182
msgid "Additional information"
msgstr ""
-#: forms_common.py:1132 forms_common.py:1225 models.py:3767
+#: forms_common.py:1132 forms_common.py:1225 models.py:3784
#: templates/ishtar/blocks/window_image_detail.html:108
msgid "Has a duplicate"
msgstr ""
@@ -792,7 +792,7 @@ msgid "A document have to attached at least to one item"
msgstr ""
#: forms_common.py:1214 forms_common.py:1286 forms_common.py:1321
-#: models.py:3503 templates/ishtar/wizard/wizard_person_deletion.html:139
+#: models.py:3520 templates/ishtar/wizard/wizard_person_deletion.html:139
msgid "Author"
msgstr ""
@@ -820,7 +820,7 @@ msgstr ""
msgid "Would you like to delete this documentation?"
msgstr ""
-#: forms_common.py:1294 models.py:3468 models.py:3497 models_imports.py:634
+#: forms_common.py:1294 models.py:3485 models.py:3514 models_imports.py:634
msgid "Author type"
msgstr ""
@@ -832,11 +832,11 @@ msgstr ""
msgid "There are identical authors."
msgstr ""
-#: forms_common.py:1339 models.py:1683
+#: forms_common.py:1339 models.py:1697
msgid "Query"
msgstr ""
-#: forms_common.py:1344 models.py:1687
+#: forms_common.py:1344 models.py:1701
msgid "Is an alert"
msgstr ""
@@ -876,7 +876,7 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:40 models.py:2209 views.py:992
+#: ishtar_menu.py:40 models.py:2224 views.py:992
msgid "Global variables"
msgstr ""
@@ -933,35 +933,35 @@ msgstr ""
msgid "Not a valid item."
msgstr ""
-#: models.py:211
+#: models.py:212
msgid "A selected item is not a valid item."
msgstr ""
-#: models.py:222
+#: models.py:224
msgid "This item already exists."
msgstr ""
-#: models.py:465 models.py:1682 models.py:2191 models.py:2528 models.py:2544
-#: models.py:3420 models_imports.py:368
+#: models.py:485 models.py:1696 models.py:2206 models.py:2544 models.py:2560
+#: models.py:3437 models_imports.py:368
msgid "Label"
msgstr ""
-#: models.py:467
+#: models.py:487
msgid "Textual ID"
msgstr ""
-#: models.py:470
+#: models.py:490
msgid ""
"The slug is the standardized version of the name. It contains only lowercase "
"letters, numbers and hyphens. Each slug must be unique."
msgstr ""
-#: models.py:474 models.py:2081 models.py:2437 models.py:3425
+#: models.py:494 models.py:2096 models.py:2453 models.py:3442
#: models_imports.py:139 models_imports.py:542
msgid "Available"
msgstr ""
-#: models.py:898 models.py:1083 models_imports.py:563
+#: models.py:917 models.py:1102 models_imports.py:563
#: templates/ishtar/formset_import_match.html:21
#: templates/ishtar/import_step_by_step.html:171
#: templates/ishtar/import_step_by_step.html:199
@@ -970,56 +970,56 @@ msgstr ""
msgid "Key"
msgstr ""
-#: models.py:904
+#: models.py:923
msgid "Specific key to an import"
msgstr ""
-#: models.py:1043
+#: models.py:1062
msgid "Generated relation image (SVG)"
msgstr ""
-#: models.py:1057 models.py:1091 models.py:1604 models.py:2193 models.py:3465
-#: models.py:4165 models.py:4247
+#: models.py:1076 models.py:1110 models.py:1618 models.py:2208 models.py:3482
+#: models.py:4182 models.py:4264
msgid "Order"
msgstr ""
-#: models.py:1060
+#: models.py:1079
msgid "Json data - Menu"
msgstr ""
-#: models.py:1061
+#: models.py:1080
msgid "Json data - Menus"
msgstr ""
-#: models.py:1069
+#: models.py:1088
msgid "Text"
msgstr ""
-#: models.py:1070
+#: models.py:1089
msgid "Long text"
msgstr ""
-#: models.py:1071 models_imports.py:676
+#: models.py:1090 models_imports.py:676
msgid "Integer"
msgstr ""
-#: models.py:1072
+#: models.py:1091
msgid "Boolean"
msgstr ""
-#: models.py:1073 models_imports.py:677
+#: models.py:1092 models_imports.py:677
msgid "Float"
msgstr ""
-#: models.py:1074 models_imports.py:679
+#: models.py:1093 models_imports.py:679
msgid "Date"
msgstr ""
-#: models.py:1075
+#: models.py:1094
msgid "Choices"
msgstr ""
-#: models.py:1084
+#: models.py:1103
msgid ""
"Value of the key in the JSON schema. For hierarchical key use \"__\" to "
"explain it. For instance for the key 'my_subkey' with data such as "
@@ -1027,417 +1027,417 @@ msgid ""
"my_key__my_subkey."
msgstr ""
-#: models.py:1088
+#: models.py:1107
msgid "Display"
msgstr ""
-#: models.py:1092
+#: models.py:1111
msgid "Use in search indexes"
msgstr ""
-#: models.py:1099
+#: models.py:1118
msgid "Json data - Field"
msgstr ""
-#: models.py:1100
+#: models.py:1119
msgid "Json data - Fields"
msgstr ""
-#: models.py:1111
+#: models.py:1130
msgid "Content types of the field and of the menu do not match"
msgstr ""
-#: models.py:1171
+#: models.py:1190
msgid "Search vector"
msgstr ""
-#: models.py:1172
+#: models.py:1191
msgid "Auto filled at save"
msgstr ""
-#: models.py:1392
+#: models.py:1406
msgid "Add document/image"
msgstr ""
-#: models.py:1394
+#: models.py:1408
msgid "doc./image"
msgstr ""
-#: models.py:1413
+#: models.py:1427
msgid "Last editor"
msgstr ""
-#: models.py:1416
+#: models.py:1430
msgid "Creator"
msgstr ""
-#: models.py:1597
+#: models.py:1611
msgid "Above"
msgstr ""
-#: models.py:1598
+#: models.py:1612
msgid "Bellow"
msgstr ""
-#: models.py:1599
+#: models.py:1613
msgid "Equal"
msgstr ""
-#: models.py:1605
+#: models.py:1619
msgid "Symmetrical"
msgstr ""
-#: models.py:1606
+#: models.py:1620
msgid "Tiny label"
msgstr ""
-#: models.py:1609
+#: models.py:1623
msgid "Inverse relation"
msgstr ""
-#: models.py:1612
+#: models.py:1626
msgid "Logical relation"
msgstr ""
-#: models.py:1622
+#: models.py:1636
msgid "Cannot have symmetrical and an inverse_relation"
msgstr ""
-#: models.py:1685
+#: models.py:1699
msgid "Content type"
msgstr ""
-#: models.py:1690
+#: models.py:1704
msgid "Search query"
msgstr ""
-#: models.py:1691
+#: models.py:1705
msgid "Search queries"
msgstr ""
-#: models.py:1855
+#: models.py:1870
msgid "Euro"
msgstr ""
-#: models.py:1856
+#: models.py:1871
msgid "US dollar"
msgstr ""
-#: models.py:1857 views.py:742 views.py:803
+#: models.py:1872 views.py:742 views.py:803
msgid "Operations"
msgstr ""
-#: models.py:1858 views.py:744 views.py:807
+#: models.py:1873 views.py:744 views.py:807
msgid "Context records"
msgstr ""
-#: models.py:1859
+#: models.py:1874
msgid "Site"
msgstr ""
-#: models.py:1859
+#: models.py:1874
msgid "Archaeological entity"
msgstr ""
-#: models.py:1863
+#: models.py:1878
msgid "Site search"
msgstr ""
-#: models.py:1864
+#: models.py:1879
msgid "New site"
msgstr ""
-#: models.py:1865
+#: models.py:1880
msgid "Site modification"
msgstr ""
-#: models.py:1866
+#: models.py:1881
msgid "Site deletion"
msgstr ""
-#: models.py:1869
+#: models.py:1884
msgid "Archaeological entity search"
msgstr ""
-#: models.py:1870
+#: models.py:1885
msgid "New archaeological entity"
msgstr ""
-#: models.py:1871
+#: models.py:1886
msgid "Archaeological entity modification"
msgstr ""
-#: models.py:1872
+#: models.py:1887
msgid "Archaeological entity deletion"
msgstr ""
-#: models.py:1880 models.py:2431 models_imports.py:124
+#: models.py:1895 models.py:2447 models_imports.py:124
msgid "Slug"
msgstr ""
-#: models.py:1881
+#: models.py:1896
msgid "Current active"
msgstr ""
-#: models.py:1883
+#: models.py:1898
msgid "Activate experimental feature"
msgstr ""
-#: models.py:1886
+#: models.py:1901
msgid "Alternate configuration"
msgstr ""
-#: models.py:1888
+#: models.py:1903
msgid "Choose an alternate configuration for label, index management"
msgstr ""
-#: models.py:1892
+#: models.py:1907
msgid "Files module"
msgstr ""
-#: models.py:1894
+#: models.py:1909
msgid "Archaeological site module"
msgstr ""
-#: models.py:1896
+#: models.py:1911
msgid "Archaeological site type"
msgstr ""
-#: models.py:1900
+#: models.py:1915
msgid "Context records module"
msgstr ""
-#: models.py:1902
+#: models.py:1917
msgid "Finds module"
msgstr ""
-#: models.py:1903
+#: models.py:1918
msgid "Need context records module"
msgstr ""
-#: models.py:1905
+#: models.py:1920
msgid "Find index is based on"
msgstr ""
-#: models.py:1907
+#: models.py:1922
msgid ""
"To prevent irrelevant indexes, change this parameter only if there is no "
"find in the database"
msgstr ""
-#: models.py:1910
+#: models.py:1925
msgid "Warehouses module"
msgstr ""
-#: models.py:1911
+#: models.py:1926
msgid "Need finds module"
msgstr ""
-#: models.py:1912
+#: models.py:1927
msgid "Preservation module"
msgstr ""
-#: models.py:1914
+#: models.py:1929
msgid "Mapping module"
msgstr ""
-#: models.py:1915
+#: models.py:1930
msgid "Underwater module"
msgstr ""
-#: models.py:1917
+#: models.py:1932
msgid "Parcel are mandatory for context records"
msgstr ""
-#: models.py:1919
+#: models.py:1934
msgid "Home page"
msgstr ""
-#: models.py:1920
+#: models.py:1935
#, python-brace-format
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
"markdown syntax. {random_image} can be used to display a random image."
msgstr ""
-#: models.py:1924
+#: models.py:1939
msgid "Main operation code prefix"
msgstr ""
-#: models.py:1928
+#: models.py:1943
msgid "Default operation code prefix"
msgstr ""
-#: models.py:1932
+#: models.py:1947
msgid "Operation region code"
msgstr ""
-#: models.py:1936
+#: models.py:1951
msgid "File external id"
msgstr ""
-#: models.py:1938
+#: models.py:1953
msgid ""
"Formula to manage file external ID. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
"be destructive."
msgstr ""
-#: models.py:1943
+#: models.py:1958
msgid "Parcel external id"
msgstr ""
-#: models.py:1946
+#: models.py:1961
msgid ""
"Formula to manage parcel external ID. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
"be destructive."
msgstr ""
-#: models.py:1951
+#: models.py:1966
msgid "Context record external id"
msgstr ""
-#: models.py:1953
+#: models.py:1968
msgid ""
"Formula to manage context record external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
"data can be destructive."
msgstr ""
-#: models.py:1958
+#: models.py:1973
msgid "Base find external id"
msgstr ""
-#: models.py:1960
+#: models.py:1975
msgid ""
"Formula to manage base find external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
"data can be destructive."
msgstr ""
-#: models.py:1965
+#: models.py:1980
msgid "Find external id"
msgstr ""
-#: models.py:1967
+#: models.py:1982
msgid ""
"Formula to manage find external ID. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
"be destructive."
msgstr ""
-#: models.py:1972
+#: models.py:1987
msgid "Container external id"
msgstr ""
-#: models.py:1974
+#: models.py:1989
msgid ""
"Formula to manage container external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
"data can be destructive."
msgstr ""
-#: models.py:1979
+#: models.py:1994
msgid "Warehouse external id"
msgstr ""
-#: models.py:1981
+#: models.py:1996
msgid ""
"Formula to manage warehouse external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
"data can be destructive."
msgstr ""
-#: models.py:1986
+#: models.py:2001
msgid "Raw name for person"
msgstr ""
-#: models.py:1988
+#: models.py:2003
msgid ""
"Formula to manage person raw_name. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
"be destructive."
msgstr ""
-#: models.py:1992
+#: models.py:2007
msgid "Use auto index for finds"
msgstr ""
-#: models.py:1994
+#: models.py:2009
msgid "Currency"
msgstr ""
-#: models.py:1998
+#: models.py:2013
msgid "Ishtar site profile"
msgstr ""
-#: models.py:1999
+#: models.py:2014
msgid "Ishtar site profiles"
msgstr ""
-#: models.py:2083
+#: models.py:2098
msgid "Enable this form"
msgstr ""
-#: models.py:2084
+#: models.py:2099
msgid ""
"Disable with caution: disabling a form with mandatory fields may lead to "
"database errors."
msgstr ""
-#: models.py:2087
+#: models.py:2102
msgid "Apply to all"
msgstr ""
-#: models.py:2088
+#: models.py:2103
msgid ""
"Apply this form to all users. If set to True, selecting user and user type "
"is useless."
msgstr ""
-#: models.py:2094
+#: models.py:2109
msgid "Custom form"
msgstr ""
-#: models.py:2095
+#: models.py:2110
msgid "Custom forms"
msgstr ""
-#: models.py:2111
+#: models.py:2126
msgid "User types"
msgstr ""
-#: models.py:2183
+#: models.py:2198
msgid "Excluded field"
msgstr ""
-#: models.py:2184
+#: models.py:2199
msgid "Excluded fields"
msgstr ""
-#: models.py:2194 templates/blocks/form_flex_snippet.html:18
+#: models.py:2209 templates/blocks/form_flex_snippet.html:18
#: templates/blocks/table_form_snippet.html:9
msgid "Help"
msgstr ""
-#: models.py:2197
+#: models.py:2212
msgid "Custom form - Json data field"
msgstr ""
-#: models.py:2198
+#: models.py:2213
msgid "Custom form - Json data fields"
msgstr ""
-#: models.py:2202
+#: models.py:2217
msgid "Variable name"
msgstr ""
-#: models.py:2203
+#: models.py:2218
msgid "Description of the variable"
msgstr ""
-#: models.py:2205 models_imports.py:564
+#: models.py:2220 models_imports.py:564
#: templates/ishtar/formset_import_match.html:22
#: templates/ishtar/import_step_by_step.html:172
#: templates/ishtar/import_step_by_step.html:200
@@ -1445,559 +1445,559 @@ msgstr ""
msgid "Value"
msgstr ""
-#: models.py:2208
+#: models.py:2223
msgid "Global variable"
msgstr ""
-#: models.py:2335 models.py:2365
+#: models.py:2351 models.py:2381
msgid "Total"
msgstr ""
-#: models.py:2342 models.py:2529 models.py:2545
+#: models.py:2358 models.py:2545 models.py:2561
#: templates/ishtar/dashboards/dashboard_main_detail.html:211
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:5
#: templates/ishtar/sheet_person.html:30
msgid "Number"
msgstr ""
-#: models.py:2429
+#: models.py:2445
msgid "Administrative Act"
msgstr ""
-#: models.py:2436
+#: models.py:2452
msgid "Associated object"
msgstr ""
-#: models.py:2441
+#: models.py:2457
msgid "Document template"
msgstr ""
-#: models.py:2442
+#: models.py:2458
msgid "Document templates"
msgstr ""
-#: models.py:2533 models.py:2546 models.py:4285 models_imports.py:853
+#: models.py:2549 models.py:2562 models.py:4304 models_imports.py:853
msgid "State"
msgstr ""
-#: models.py:2551 models.py:4007 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:2567 models.py:4024 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr ""
-#: models.py:2552
+#: models.py:2568
msgid "Departments"
msgstr ""
-#: models.py:2592
+#: models.py:2608
msgid "Raw phone"
msgstr ""
-#: models.py:2598
+#: models.py:2614
msgid "Alternative address is prefered"
msgstr ""
-#: models.py:2637
+#: models.py:2653
msgid "Tel: "
msgstr ""
-#: models.py:2641
+#: models.py:2657
msgid "Mobile: "
msgstr ""
-#: models.py:2645
+#: models.py:2661
msgid "Email: "
msgstr ""
-#: models.py:2650
+#: models.py:2666
msgid "Merge key"
msgstr ""
-#: models.py:2722
+#: models.py:2738
msgid "Organization types"
msgstr ""
-#: models.py:2749 models.py:2896 models.py:3303
+#: models.py:2765 models.py:2913 models.py:3320
msgctxt "key for text search"
msgid "name"
msgstr ""
-#: models.py:2753 models.py:2908 models.py:3315 models.py:3639
+#: models.py:2769 models.py:2925 models.py:3332 models.py:3656
msgctxt "key for text search"
msgid "type"
msgstr ""
-#: models.py:2768 models.py:2947 models.py:3498 models.py:4015
+#: models.py:2784 models.py:2964 models.py:3515 models.py:4032
msgid "Cached name"
msgstr ""
-#: models.py:2774
+#: models.py:2790
msgid "Organizations"
msgstr ""
-#: models.py:2804
+#: models.py:2821
msgid "unknown organization"
msgstr ""
-#: models.py:2830
+#: models.py:2847
msgid "Person types"
msgstr ""
-#: models.py:2843 models_imports.py:670
+#: models.py:2860 models_imports.py:670
msgid "Title type"
msgstr ""
-#: models.py:2844
+#: models.py:2861
msgid "Title types"
msgstr ""
-#: models.py:2868
+#: models.py:2885
msgid "Mr"
msgstr ""
-#: models.py:2869
+#: models.py:2886
msgid "Miss"
msgstr ""
-#: models.py:2870
+#: models.py:2887
msgid "Mr and Mrs"
msgstr ""
-#: models.py:2871
+#: models.py:2888
msgid "Mrs"
msgstr ""
-#: models.py:2872
+#: models.py:2889
msgid "Doctor"
msgstr ""
-#: models.py:2900 models.py:3307
+#: models.py:2917 models.py:3324
msgctxt "key for text search"
msgid "surname"
msgstr ""
-#: models.py:2904 models.py:3311
+#: models.py:2921 models.py:3328
msgctxt "key for text search"
msgid "email"
msgstr ""
-#: models.py:2912 models.py:3319
+#: models.py:2929 models.py:3336
msgctxt "key for text search"
msgid "organization"
msgstr ""
-#: models.py:2916
+#: models.py:2933
msgctxt "key for text search"
msgid "has-account"
msgstr ""
-#: models.py:2940
+#: models.py:2957
msgid "Contact type"
msgstr ""
-#: models.py:2943 models.py:3033
+#: models.py:2960 models.py:3050
msgid "Types"
msgstr ""
-#: models.py:2946
+#: models.py:2963
msgid "Is attached to"
msgstr ""
-#: models.py:2953
+#: models.py:2970
msgid "Persons"
msgstr ""
-#: models.py:3171
+#: models.py:3188
msgid "Groups"
msgstr ""
-#: models.py:3176
+#: models.py:3193
msgid "Profile types"
msgstr ""
-#: models.py:3187
+#: models.py:3204
msgid "Profile type summary"
msgstr ""
-#: models.py:3188
+#: models.py:3205
msgid "Profile types summary"
msgstr ""
-#: models.py:3199
+#: models.py:3216
msgid "Show field number"
msgstr ""
-#: models.py:3200
+#: models.py:3217
msgid "Automatically pin"
msgstr ""
-#: models.py:3201
+#: models.py:3218
msgid "Display pin menu"
msgstr ""
-#: models.py:3207
+#: models.py:3224
msgid "User profile"
msgstr ""
-#: models.py:3208
+#: models.py:3225
msgid "User profiles"
msgstr ""
-#: models.py:3243
+#: models.py:3260
msgid " - duplicate"
msgstr ""
-#: models.py:3299
+#: models.py:3316
msgctxt "key for text search"
msgid "username"
msgstr ""
-#: models.py:3335
+#: models.py:3352
msgid "Advanced shortcut menu"
msgstr ""
-#: models.py:3338
+#: models.py:3355
msgid "Ishtar user"
msgstr ""
-#: models.py:3339
+#: models.py:3356
msgid "Ishtar users"
msgstr ""
-#: models.py:3424
+#: models.py:3441
msgid "Owner"
msgstr ""
-#: models.py:3427
+#: models.py:3444
msgid "Shared with"
msgstr ""
-#: models.py:3469
+#: models.py:3486
msgid "Author types"
msgstr ""
-#: models.py:3544
+#: models.py:3561
msgid "Source types"
msgstr ""
-#: models.py:3554 models_imports.py:669
+#: models.py:3571 models_imports.py:669
msgid "Support type"
msgstr ""
-#: models.py:3555
+#: models.py:3572
msgid "Support types"
msgstr ""
-#: models.py:3564
+#: models.py:3581
msgid "Format type"
msgstr ""
-#: models.py:3565
+#: models.py:3582
msgid "Format types"
msgstr ""
-#: models.py:3574
+#: models.py:3591
msgid "URL"
msgstr ""
-#: models.py:3577
+#: models.py:3594
msgid "License type"
msgstr ""
-#: models.py:3578
+#: models.py:3595
msgid "License types"
msgstr ""
-#: models.py:3631
+#: models.py:3648
msgctxt "key for text search"
msgid "author"
msgstr ""
-#: models.py:3635
+#: models.py:3652
msgctxt "key for text search"
msgid "title"
msgstr ""
-#: models.py:3643
+#: models.py:3660
msgctxt "key for text search"
msgid "reference"
msgstr ""
-#: models.py:3647
+#: models.py:3664
msgctxt "key for text search"
msgid "internal-reference"
msgstr ""
-#: models.py:3651
+#: models.py:3668
msgctxt "key for text search"
msgid "description"
msgstr ""
-#: models.py:3655
+#: models.py:3672
msgctxt "key for text search"
msgid "comment"
msgstr ""
-#: models.py:3659
+#: models.py:3676
msgctxt "key for text search"
msgid "additional-information"
msgstr ""
-#: models.py:3663
+#: models.py:3680
msgctxt "key for text search"
msgid "has-duplicate"
msgstr ""
-#: models.py:3667 models.py:3714
+#: models.py:3684 models.py:3731
msgctxt "key for text search"
msgid "operation"
msgstr ""
-#: models.py:3671 models.py:3717
+#: models.py:3688 models.py:3734
msgctxt "key for text search"
msgid "context-record"
msgstr ""
-#: models.py:3675 models.py:3719
+#: models.py:3692 models.py:3736
msgctxt "key for text search"
msgid "find"
msgstr ""
-#: models.py:3679 models.py:3718
+#: models.py:3696 models.py:3735
msgctxt "key for text search"
msgid "file"
msgstr ""
-#: models.py:3683 models.py:3720
+#: models.py:3700 models.py:3737
msgctxt "key for text search"
msgid "site"
msgstr ""
-#: models.py:3687 models.py:3721
+#: models.py:3704 models.py:3738
msgctxt "key for text search"
msgid "warehouse"
msgstr ""
-#: models.py:3723
+#: models.py:3740
msgctxt "key for text search"
msgid "treatment"
msgstr ""
-#: models.py:3726
+#: models.py:3743
msgctxt "key for text search"
msgid "treatment-file"
msgstr ""
-#: models.py:3732
+#: models.py:3749
msgid "Index"
msgstr ""
-#: models.py:3734
+#: models.py:3751
msgid "External ID"
msgstr ""
-#: models.py:3735 templates/ishtar/blocks/window_image_detail.html:34
+#: models.py:3752 templates/ishtar/blocks/window_image_detail.html:34
msgid "Ref."
msgstr ""
-#: models.py:3736 templates/ishtar/blocks/window_image_detail.html:44
+#: models.py:3753 templates/ishtar/blocks/window_image_detail.html:44
msgid "Internal ref."
msgstr ""
-#: models.py:3740
+#: models.py:3757
msgid "License"
msgstr ""
-#: models.py:3742 templates/ishtar/blocks/window_image_detail.html:78
+#: models.py:3759 templates/ishtar/blocks/window_image_detail.html:78
msgid "Support"
msgstr ""
-#: models.py:3744 models_imports.py:635
+#: models.py:3761 models_imports.py:635
#: templates/ishtar/blocks/window_image_detail.html:88
msgid "Format"
msgstr ""
-#: models.py:3746 templates/ishtar/blocks/window_image_detail.html:98
+#: models.py:3763 templates/ishtar/blocks/window_image_detail.html:98
msgid "Scale"
msgstr ""
-#: models.py:3750
+#: models.py:3767
msgid "Authors (raw)"
msgstr ""
-#: models.py:3762 templates/ishtar/blocks/window_image_detail.html:118
+#: models.py:3779 templates/ishtar/blocks/window_image_detail.html:118
msgid "Number of items"
msgstr ""
-#: models.py:3769
+#: models.py:3786
msgid "Symbolic links"
msgstr ""
-#: models.py:3772
+#: models.py:3789
msgid "Related"
msgstr ""
-#: models.py:3773
+#: models.py:3790
msgid "Cached value - do not edit"
msgstr ""
-#: models.py:3776 templates/ishtar/sheet_document.html:4
+#: models.py:3793 templates/ishtar/sheet_document.html:4
msgid "Document"
msgstr ""
-#: models.py:3777 templates/ishtar/sheet_person.html:113
+#: models.py:3794 templates/ishtar/sheet_person.html:113
msgid "Documents"
msgstr ""
-#: models.py:3781
+#: models.py:3798
msgid "Can view all Documents"
msgstr ""
-#: models.py:3783
+#: models.py:3800
msgid "Can view own Document"
msgstr ""
-#: models.py:3785
+#: models.py:3802
msgid "Can add own Document"
msgstr ""
-#: models.py:3787
+#: models.py:3804
msgid "Can change own Document"
msgstr ""
-#: models.py:3789
+#: models.py:3806
msgid "Can delete own Document"
msgstr ""
-#: models.py:4000
+#: models.py:4017
msgid "Surface (m2)"
msgstr ""
-#: models.py:4001
+#: models.py:4018
msgid "Localisation"
msgstr ""
-#: models.py:4009
+#: models.py:4026
msgid "Year of creation"
msgstr ""
-#: models.py:4010
+#: models.py:4027
msgid "Filling this field is relevant to distinguish old towns from new towns."
msgstr ""
-#: models.py:4142
+#: models.py:4159
msgid "Only four level of parent are managed."
msgstr ""
-#: models.py:4147
+#: models.py:4164
msgid "Area"
msgstr ""
-#: models.py:4166
+#: models.py:4183
msgid "Is preventive"
msgstr ""
-#: models.py:4167
+#: models.py:4184
msgid "Is judiciary"
msgstr ""
-#: models.py:4170 models_imports.py:636
+#: models.py:4187 models_imports.py:636
msgid "Operation type"
msgstr ""
-#: models.py:4171
+#: models.py:4188
msgid "Operation types"
msgstr ""
-#: models.py:4210
+#: models.py:4227
msgid "Judiciary"
msgstr ""
-#: models.py:4212
+#: models.py:4229
msgid "Preventive"
msgstr ""
-#: models.py:4214
+#: models.py:4231
msgid "Research"
msgstr ""
-#: models.py:4249
+#: models.py:4266
msgid "Authority name"
msgstr ""
-#: models.py:4250
+#: models.py:4267
msgid "Authority SRID"
msgstr ""
-#: models.py:4253 models_imports.py:668
+#: models.py:4270 models_imports.py:668
msgid "Spatial reference system"
msgstr ""
-#: models.py:4254
+#: models.py:4271
msgid "Spatial reference systems"
msgstr ""
-#: models.py:4261
+#: models.py:4280
msgid "Filename"
msgstr ""
-#: models.py:4266
+#: models.py:4285
msgid "Administration script"
msgstr ""
-#: models.py:4267
+#: models.py:4286
msgid "Administration scripts"
msgstr ""
-#: models.py:4274
+#: models.py:4293
msgid "Scheduled"
msgstr ""
-#: models.py:4275
+#: models.py:4294
msgid "In progress"
msgstr ""
-#: models.py:4276 models_imports.py:792
+#: models.py:4295 models_imports.py:792
msgid "Finished with errors"
msgstr ""
-#: models.py:4277 models_imports.py:793
+#: models.py:4296 models_imports.py:793
msgid "Finished"
msgstr ""
-#: models.py:4290
+#: models.py:4309
msgid "Result"
msgstr ""
-#: models.py:4293
+#: models.py:4312
msgid "Administration task"
msgstr ""
-#: models.py:4294
+#: models.py:4313
msgid "Administration tasks"
msgstr ""
-#: models.py:4298
+#: models.py:4317
msgid "Unknown"
msgstr ""
-#: models.py:4313
+#: models.py:4332
msgid ""
"ISHTAR_SCRIPT_DIR is not set in your local_settings. Contact your "
"administrator."
msgstr ""
-#: models.py:4322
+#: models.py:4341
msgid ""
"Your ISHTAR_SCRIPT_DIR is containing dots \"..\". As it can refer to "
"relative paths, it can be a security issue and this is not allowed. Only put "
"a full path."
msgstr ""
-#: models.py:4333
+#: models.py:4352
msgid "Your ISHTAR_SCRIPT_DIR: \"{}\" is not a valid directory."
msgstr ""
-#: models.py:4349
+#: models.py:4368
msgid ""
"Script \"{}\" is not available in your script directory. Check your "
"configuration."
@@ -2583,49 +2583,54 @@ msgid " items added."
msgstr ""
#: templates/base.html:47
-msgid "yes"
+#| msgid "Select all items"
+msgid "Select only one item."
msgstr ""
#: templates/base.html:48
-msgid "no"
+msgid "yes"
msgstr ""
#: templates/base.html:49
-msgid "Autorefresh start. The form is disabled."
+msgid "no"
msgstr ""
#: templates/base.html:50
+msgid "Autorefresh start. The form is disabled."
+msgstr ""
+
+#: templates/base.html:51
msgid "Autorefresh end. The form is re-enabled."
msgstr ""
-#: templates/base.html:81
+#: templates/base.html:82
msgid "Current items"
msgstr ""
-#: templates/base.html:83 templates/ishtar/forms/qa_base.html:34
+#: templates/base.html:84 templates/ishtar/forms/qa_base.html:34
#: templates/ishtar/forms/qa_form.html:21 templates/ishtar/manage_basket.html:4
#: templates/welcome.html:11 templates/welcome.html:12
#: templates/welcome.html:13 templates/welcome.html:14 wizards.py:423
msgid ":"
msgstr ""
-#: templates/base.html:96
+#: templates/base.html:97
msgid "Sheets"
msgstr ""
-#: templates/base.html:146
+#: templates/base.html:158
msgid "Processing..."
msgstr ""
-#: templates/base.html:148
+#: templates/base.html:160
msgid "This can be long."
msgstr ""
-#: templates/base.html:150
+#: templates/base.html:162
msgid "Time to take a coffee?"
msgstr ""
-#: templates/base.html:152
+#: templates/base.html:164
msgid "Time to take another coffee?"
msgstr ""
@@ -2832,6 +2837,11 @@ msgstr ""
msgid "Data"
msgstr ""
+#: templates/ishtar/blocks/sheet_json.html:9
+#| msgid "No data provided"
+msgid "No data"
+msgstr ""
+
#: templates/ishtar/blocks/window_image_detail.html:64
msgid "Licenses"
msgstr ""
@@ -3650,11 +3660,11 @@ msgstr ""
msgid "No"
msgstr ""
-#: templatetags/window_tables.py:88 widgets.py:1065
+#: templatetags/window_tables.py:88 widgets.py:1064
msgid "No results"
msgstr ""
-#: templatetags/window_tables.py:89 widgets.py:1066
+#: templatetags/window_tables.py:89 widgets.py:1065
msgid "Loading..."
msgstr ""
@@ -3662,15 +3672,15 @@ msgstr ""
msgid "You don't have sufficient permissions to do this action."
msgstr ""
-#: utils.py:338
+#: utils.py:344
msgid " (...)"
msgstr ""
-#: utils.py:418
+#: utils.py:424
msgid "Information"
msgstr ""
-#: utils.py:419
+#: utils.py:425
msgid "Load another random image?"
msgstr ""
@@ -3835,7 +3845,7 @@ msgstr ""
msgid "Previous value:"
msgstr ""
-#: widgets.py:1067
+#: widgets.py:1066
msgid "Remove"
msgstr ""
diff --git a/translations/de/ishtar_common.po b/translations/de/ishtar_common.po
index 46a8e7b7f..142632f42 100644
--- a/translations/de/ishtar_common.po
+++ b/translations/de/ishtar_common.po
@@ -36,12 +36,12 @@ msgstr ""
msgid "Export selected as CSV file"
msgstr ""
-#: admin.py:207 models.py:1686 templates/navbar.html:31
+#: admin.py:207 models.py:1700 templates/navbar.html:31
msgid "Profile"
msgstr ""
#: admin.py:208 forms_common.py:782 forms_common.py:801 forms_common.py:802
-#: models.py:3039
+#: models.py:3056
msgid "Profiles"
msgstr ""
@@ -63,7 +63,7 @@ msgstr ""
msgid "These parents are missing: {}"
msgstr ""
-#: admin.py:386 admin.py:405 models.py:883 models.py:4141
+#: admin.py:386 admin.py:405 models.py:902 models.py:4158
msgid "Parent"
msgstr ""
@@ -71,11 +71,11 @@ msgstr ""
msgid "Center"
msgstr ""
-#: admin.py:395 models.py:4003
+#: admin.py:395 models.py:4020
msgid "Limit"
msgstr ""
-#: admin.py:398 models.py:4013
+#: admin.py:398 models.py:4030
msgid "Town children"
msgstr ""
@@ -123,16 +123,16 @@ msgstr ""
msgid "Hide selected"
msgstr ""
-#: admin.py:931 models.py:2080
+#: admin.py:931 models.py:2095
msgid "Form"
msgstr ""
-#: admin.py:933 models.py:2105 models_imports.py:127
+#: admin.py:933 models.py:2120 models_imports.py:127
#: templates/ishtar/dashboards/dashboard_main.html:39
msgid "Users"
msgstr ""
-#: admin.py:953 models.py:2180
+#: admin.py:953 models.py:2195
msgid "Field"
msgstr ""
@@ -328,36 +328,36 @@ msgstr ""
msgid "Are you sure you want to delete?"
msgstr ""
-#: forms.py:379
+#: forms.py:410
msgid "There are identical items."
msgstr ""
-#: forms.py:535
+#: forms.py:566
msgid "Last modified by"
msgstr ""
-#: forms.py:541
+#: forms.py:572
msgid "Modified since"
msgstr ""
-#: forms.py:565 forms.py:566
+#: forms.py:596 forms.py:597
msgid "Closing date"
msgstr ""
-#: forms.py:578 forms_common.py:1272
+#: forms.py:609 forms_common.py:1272
msgid "You should select an item."
msgstr ""
-#: forms.py:579
+#: forms.py:610
msgid "Add a new item"
msgstr ""
-#: forms.py:769 models.py:2434
+#: forms.py:800 models.py:2450
msgid "Template"
msgstr ""
#: forms_common.py:54 forms_common.py:72 forms_common.py:317
-#: forms_common.py:556 models.py:2568 models.py:4020
+#: forms_common.py:556 models.py:2584 models.py:4037
#: templates/blocks/JQueryAdvancedTown.html:19
msgid "Town"
msgstr ""
@@ -372,8 +372,8 @@ msgid ""
"french town Saint-Denis in the Seine-Saint-Denis department."
msgstr ""
-#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2952
-#: models.py:3204 models.py:3332 models.py:3495
+#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2969
+#: models.py:3221 models.py:3349 models.py:3512
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr ""
@@ -425,16 +425,16 @@ msgid "all users"
msgstr ""
#: forms_common.py:305 forms_common.py:475 forms_common.py:609
-#: ishtar_menu.py:76 models.py:2773 models.py:2890 models.py:3292
+#: ishtar_menu.py:76 models.py:2789 models.py:2907 models.py:3309
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr ""
#: forms_common.py:308 forms_common.py:351 forms_common.py:470
#: forms_common.py:526 forms_common.py:604 forms_common.py:790
-#: forms_common.py:823 models.py:1056 models.py:1080 models.py:1879
-#: models.py:2079 models.py:2430 models.py:2765 models.py:2936 models.py:3192
-#: models.py:3999 models.py:4262 models_imports.py:98 models_imports.py:123
+#: forms_common.py:823 models.py:1075 models.py:1099 models.py:1894
+#: models.py:2094 models.py:2446 models.py:2781 models.py:2953 models.py:3209
+#: models.py:4016 models.py:4281 models_imports.py:98 models_imports.py:123
#: models_imports.py:445 models_imports.py:537 models_imports.py:827
#: templates/ishtar/import_step_by_step.html:102
#: templates/ishtar/import_step_by_step.html:270
@@ -443,40 +443,40 @@ msgstr ""
msgid "Name"
msgstr "Name"
-#: forms_common.py:309 models.py:2721 models_imports.py:630
+#: forms_common.py:309 models.py:2737 models_imports.py:630
#: models_imports.py:631
msgid "Organization type"
msgstr ""
-#: forms_common.py:311 forms_common.py:550 models.py:2563
+#: forms_common.py:311 forms_common.py:550 models.py:2579
#: templates/ishtar/blocks/sheet_address_section.html:4
msgid "Address"
msgstr ""
-#: forms_common.py:313 forms_common.py:553 models.py:2564
+#: forms_common.py:313 forms_common.py:553 models.py:2580
msgid "Address complement"
msgstr ""
-#: forms_common.py:315 forms_common.py:554 models.py:2566
+#: forms_common.py:315 forms_common.py:554 models.py:2582
msgid "Postal code"
msgstr "Postleitzahl"
-#: forms_common.py:318 forms_common.py:557 models.py:2569
+#: forms_common.py:318 forms_common.py:557 models.py:2585
msgid "Country"
msgstr ""
#: forms_common.py:320 forms_common.py:472 forms_common.py:530
-#: forms_common.py:606 forms_common.py:731 models.py:2596
+#: forms_common.py:606 forms_common.py:731 models.py:2612
msgid "Email"
msgstr "E-Mail-Adresse"
-#: forms_common.py:321 forms_common.py:533 models.py:2581
+#: forms_common.py:321 forms_common.py:533 models.py:2597
#: templates/ishtar/sheet_person.html:27
#: templates/ishtar/wizard/wizard_person.html:33
msgid "Phone"
msgstr ""
-#: forms_common.py:322 forms_common.py:542 models.py:2593
+#: forms_common.py:322 forms_common.py:542 models.py:2609
#: templates/ishtar/sheet_person.html:45
#: templates/ishtar/wizard/wizard_person.html:54
msgid "Mobile phone"
@@ -488,7 +488,7 @@ msgid "Full text search"
msgstr ""
#: forms_common.py:352 forms_common.py:473 forms_common.py:607
-#: forms_common.py:788 models.py:1089 models.py:2767 models.py:3738
+#: forms_common.py:788 models.py:1108 models.py:2783 models.py:3755
#: models_imports.py:680 templates/ishtar/blocks/window_image_detail.html:24
#: templates/ishtar/blocks/window_tables/documents.html:8
#: templates/ishtar/import_table.html:28
@@ -512,7 +512,7 @@ msgstr ""
msgid "Organization to merge"
msgstr ""
-#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2934
+#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2951
#: templates/ishtar/sheet_organization.html:24
msgid "Surname"
msgstr ""
@@ -529,25 +529,25 @@ msgstr ""
msgid "Identity"
msgstr ""
-#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2928
-#: models.py:2930 models.py:3729 models_imports.py:632
+#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2945
+#: models.py:2947 models.py:3746 models_imports.py:632
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr ""
-#: forms_common.py:522 models.py:2932
+#: forms_common.py:522 models.py:2949
msgid "Salutation"
msgstr ""
-#: forms_common.py:528 models.py:2938
+#: forms_common.py:528 models.py:2955
msgid "Raw name"
msgstr ""
-#: forms_common.py:531 models.py:2582
+#: forms_common.py:531 models.py:2598
msgid "Phone description"
msgstr ""
-#: forms_common.py:534 models.py:2584 models.py:2586
+#: forms_common.py:534 models.py:2600 models.py:2602
msgid "Phone description 2"
msgstr ""
@@ -555,11 +555,11 @@ msgstr ""
msgid "Phone 2"
msgstr ""
-#: forms_common.py:538 models.py:2590
+#: forms_common.py:538 models.py:2606
msgid "Phone description 3"
msgstr ""
-#: forms_common.py:540 models.py:2588
+#: forms_common.py:540 models.py:2604
msgid "Phone 3"
msgstr ""
@@ -567,23 +567,23 @@ msgstr ""
msgid "Current organization"
msgstr ""
-#: forms_common.py:559 models.py:2571
+#: forms_common.py:559 models.py:2587
msgid "Other address: address"
msgstr ""
-#: forms_common.py:562 models.py:2574
+#: forms_common.py:562 models.py:2590
msgid "Other address: address complement"
msgstr ""
-#: forms_common.py:564 models.py:2575
+#: forms_common.py:564 models.py:2591
msgid "Other address: postal code"
msgstr ""
-#: forms_common.py:566 models.py:2577
+#: forms_common.py:566 models.py:2593
msgid "Other address: town"
msgstr ""
-#: forms_common.py:568 models.py:2579
+#: forms_common.py:568 models.py:2595
msgid "Other address: country"
msgstr ""
@@ -591,7 +591,7 @@ msgstr ""
msgid "Already has an account"
msgstr ""
-#: forms_common.py:603 models.py:3293
+#: forms_common.py:603 models.py:3310
msgid "Username"
msgstr "Benutzername"
@@ -599,7 +599,7 @@ msgstr "Benutzername"
msgid "Account search"
msgstr ""
-#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2829
+#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2846
msgid "Person type"
msgstr ""
@@ -627,7 +627,7 @@ msgstr ""
msgid "This username already exists."
msgstr ""
-#: forms_common.py:789 models.py:3195 models.py:4148
+#: forms_common.py:789 models.py:3212 models.py:4165
msgid "Areas"
msgstr ""
@@ -635,11 +635,11 @@ msgstr ""
msgid "Send the new password by email?"
msgstr ""
-#: forms_common.py:821 models.py:3197 views.py:968
+#: forms_common.py:821 models.py:3214 views.py:968
msgid "Current profile"
msgstr ""
-#: forms_common.py:824 models.py:3175 models.py:3194
+#: forms_common.py:824 models.py:3192 models.py:3211
msgid "Profile type"
msgstr ""
@@ -667,8 +667,8 @@ msgstr ""
msgid " (duplicate)"
msgstr ""
-#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4021
-#: models.py:4136
+#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4038
+#: models.py:4153
msgid "Towns"
msgstr ""
@@ -695,19 +695,19 @@ msgstr ""
msgid "Document - General"
msgstr ""
-#: forms_common.py:1098 forms_common.py:1218 models.py:3543
+#: forms_common.py:1098 forms_common.py:1218 models.py:3560
#: models_imports.py:633
msgid "Source type"
msgstr ""
#: forms_common.py:1101 forms_common.py:1152 forms_common.py:1333
-#: forms_common.py:1334 models.py:3504 models.py:3612 models.py:3748
+#: forms_common.py:1334 models.py:3521 models.py:3629 models.py:3765
#: templates/ishtar/blocks/window_image_detail.html:9
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
msgstr ""
-#: forms_common.py:1105 models.py:3754
+#: forms_common.py:1105 models.py:3771
msgid "Numerical ressource (web address)"
msgstr ""
@@ -720,7 +720,7 @@ msgctxt "Not directory"
msgid "File"
msgstr ""
-#: forms_common.py:1113 forms_common.py:1219 models.py:4138
+#: forms_common.py:1113 forms_common.py:1219 models.py:4155
msgid "Reference"
msgstr ""
@@ -728,38 +728,38 @@ msgstr ""
msgid "Internal reference"
msgstr ""
-#: forms_common.py:1118 models.py:3756
+#: forms_common.py:1118 models.py:3773
#: templates/ishtar/blocks/window_image_detail.html:150
msgid "Receipt date"
msgstr ""
-#: forms_common.py:1120 models.py:3758 models_imports.py:859
+#: forms_common.py:1120 models.py:3775 models_imports.py:859
#: templates/ishtar/blocks/window_image_detail.html:54
msgid "Creation date"
msgstr "Gründungsdatum"
-#: forms_common.py:1123 models.py:3761
+#: forms_common.py:1123 models.py:3778
#: templates/ishtar/blocks/window_image_detail.html:160
msgid "Receipt date in documentation"
msgstr ""
-#: forms_common.py:1125 forms_common.py:1222 models.py:473 models.py:2942
-#: models.py:3421 models.py:3764 models_imports.py:483
+#: forms_common.py:1125 forms_common.py:1222 models.py:493 models.py:2959
+#: models.py:3438 models.py:3781 models_imports.py:483
#: templates/ishtar/blocks/window_image_detail.html:170
msgid "Comment"
msgstr ""
-#: forms_common.py:1127 forms_common.py:1221 models.py:1884 models.py:3763
+#: forms_common.py:1127 forms_common.py:1221 models.py:1899 models.py:3780
#: models_imports.py:125 models_imports.py:372 models_imports.py:446
msgid "Description"
msgstr "Beschreibung"
-#: forms_common.py:1130 models.py:3765
+#: forms_common.py:1130 models.py:3782
#: templates/ishtar/blocks/window_image_detail.html:182
msgid "Additional information"
msgstr ""
-#: forms_common.py:1132 forms_common.py:1225 models.py:3767
+#: forms_common.py:1132 forms_common.py:1225 models.py:3784
#: templates/ishtar/blocks/window_image_detail.html:108
msgid "Has a duplicate"
msgstr ""
@@ -794,7 +794,7 @@ msgid "A document have to attached at least to one item"
msgstr ""
#: forms_common.py:1214 forms_common.py:1286 forms_common.py:1321
-#: models.py:3503 templates/ishtar/wizard/wizard_person_deletion.html:139
+#: models.py:3520 templates/ishtar/wizard/wizard_person_deletion.html:139
msgid "Author"
msgstr ""
@@ -822,7 +822,7 @@ msgstr ""
msgid "Would you like to delete this documentation?"
msgstr ""
-#: forms_common.py:1294 models.py:3468 models.py:3497 models_imports.py:634
+#: forms_common.py:1294 models.py:3485 models.py:3514 models_imports.py:634
msgid "Author type"
msgstr ""
@@ -834,11 +834,11 @@ msgstr ""
msgid "There are identical authors."
msgstr ""
-#: forms_common.py:1339 models.py:1683
+#: forms_common.py:1339 models.py:1697
msgid "Query"
msgstr ""
-#: forms_common.py:1344 models.py:1687
+#: forms_common.py:1344 models.py:1701
msgid "Is an alert"
msgstr ""
@@ -878,7 +878,7 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:40 models.py:2209 views.py:992
+#: ishtar_menu.py:40 models.py:2224 views.py:992
msgid "Global variables"
msgstr ""
@@ -935,35 +935,35 @@ msgstr ""
msgid "Not a valid item."
msgstr ""
-#: models.py:211
+#: models.py:212
msgid "A selected item is not a valid item."
msgstr ""
-#: models.py:222
+#: models.py:224
msgid "This item already exists."
msgstr ""
-#: models.py:465 models.py:1682 models.py:2191 models.py:2528 models.py:2544
-#: models.py:3420 models_imports.py:368
+#: models.py:485 models.py:1696 models.py:2206 models.py:2544 models.py:2560
+#: models.py:3437 models_imports.py:368
msgid "Label"
msgstr ""
-#: models.py:467
+#: models.py:487
msgid "Textual ID"
msgstr ""
-#: models.py:470
+#: models.py:490
msgid ""
"The slug is the standardized version of the name. It contains only lowercase "
"letters, numbers and hyphens. Each slug must be unique."
msgstr ""
-#: models.py:474 models.py:2081 models.py:2437 models.py:3425
+#: models.py:494 models.py:2096 models.py:2453 models.py:3442
#: models_imports.py:139 models_imports.py:542
msgid "Available"
msgstr ""
-#: models.py:898 models.py:1083 models_imports.py:563
+#: models.py:917 models.py:1102 models_imports.py:563
#: templates/ishtar/formset_import_match.html:21
#: templates/ishtar/import_step_by_step.html:171
#: templates/ishtar/import_step_by_step.html:199
@@ -972,473 +972,473 @@ msgstr ""
msgid "Key"
msgstr ""
-#: models.py:904
+#: models.py:923
msgid "Specific key to an import"
msgstr ""
-#: models.py:1043
+#: models.py:1062
msgid "Generated relation image (SVG)"
msgstr ""
-#: models.py:1057 models.py:1091 models.py:1604 models.py:2193 models.py:3465
-#: models.py:4165 models.py:4247
+#: models.py:1076 models.py:1110 models.py:1618 models.py:2208 models.py:3482
+#: models.py:4182 models.py:4264
msgid "Order"
msgstr ""
-#: models.py:1060
+#: models.py:1079
msgid "Json data - Menu"
msgstr ""
-#: models.py:1061
+#: models.py:1080
msgid "Json data - Menus"
msgstr ""
-#: models.py:1069
+#: models.py:1088
msgid "Text"
msgstr ""
-#: models.py:1070
+#: models.py:1089
msgid "Long text"
msgstr ""
-#: models.py:1071 models_imports.py:676
+#: models.py:1090 models_imports.py:676
msgid "Integer"
msgstr ""
-#: models.py:1072
+#: models.py:1091
msgid "Boolean"
msgstr ""
-#: models.py:1073 models_imports.py:677
+#: models.py:1092 models_imports.py:677
msgid "Float"
msgstr ""
-#: models.py:1074 models_imports.py:679
+#: models.py:1093 models_imports.py:679
msgid "Date"
msgstr ""
-#: models.py:1075
+#: models.py:1094
msgid "Choices"
msgstr ""
-#: models.py:1084
+#: models.py:1103
msgid ""
"Value of the key in the JSON schema. For hierarchical key use \"__\" to "
"explain it. For instance for the key 'my_subkey' with data such as {'my_key':"
" {'my_subkey': 'value'}}, its value will be reached with my_key__my_subkey."
msgstr ""
-#: models.py:1088
+#: models.py:1107
msgid "Display"
msgstr ""
-#: models.py:1092
+#: models.py:1111
msgid "Use in search indexes"
msgstr ""
-#: models.py:1099
+#: models.py:1118
msgid "Json data - Field"
msgstr ""
-#: models.py:1100
+#: models.py:1119
msgid "Json data - Fields"
msgstr ""
-#: models.py:1111
+#: models.py:1130
msgid "Content types of the field and of the menu do not match"
msgstr ""
-#: models.py:1171
+#: models.py:1190
msgid "Search vector"
msgstr ""
-#: models.py:1172
+#: models.py:1191
msgid "Auto filled at save"
msgstr ""
-#: models.py:1392
+#: models.py:1406
msgid "Add document/image"
msgstr ""
-#: models.py:1394
+#: models.py:1408
msgid "doc./image"
msgstr ""
-#: models.py:1413
+#: models.py:1427
msgid "Last editor"
msgstr ""
-#: models.py:1416
+#: models.py:1430
msgid "Creator"
msgstr ""
-#: models.py:1597
+#: models.py:1611
msgid "Above"
msgstr ""
-#: models.py:1598
+#: models.py:1612
msgid "Bellow"
msgstr ""
-#: models.py:1599
+#: models.py:1613
msgid "Equal"
msgstr ""
-#: models.py:1605
+#: models.py:1619
msgid "Symmetrical"
msgstr ""
-#: models.py:1606
+#: models.py:1620
msgid "Tiny label"
msgstr ""
-#: models.py:1609
+#: models.py:1623
msgid "Inverse relation"
msgstr ""
-#: models.py:1612
+#: models.py:1626
msgid "Logical relation"
msgstr ""
-#: models.py:1622
+#: models.py:1636
msgid "Cannot have symmetrical and an inverse_relation"
msgstr ""
-#: models.py:1685
+#: models.py:1699
msgid "Content type"
msgstr ""
-#: models.py:1690
+#: models.py:1704
msgid "Search query"
msgstr ""
-#: models.py:1691
+#: models.py:1705
msgid "Search queries"
msgstr ""
-#: models.py:1855
+#: models.py:1870
msgid "Euro"
msgstr ""
-#: models.py:1856
+#: models.py:1871
msgid "US dollar"
msgstr ""
-#: models.py:1857 views.py:742 views.py:803
+#: models.py:1872 views.py:742 views.py:803
msgid "Operations"
msgstr ""
-#: models.py:1858 views.py:744 views.py:807
+#: models.py:1873 views.py:744 views.py:807
msgid "Context records"
msgstr ""
-#: models.py:1859
+#: models.py:1874
msgid "Site"
msgstr ""
-#: models.py:1859
+#: models.py:1874
msgid "Archaeological entity"
msgstr ""
-#: models.py:1863
+#: models.py:1878
msgid "Site search"
msgstr ""
-#: models.py:1864
+#: models.py:1879
msgid "New site"
msgstr ""
-#: models.py:1865
+#: models.py:1880
msgid "Site modification"
msgstr ""
-#: models.py:1866
+#: models.py:1881
msgid "Site deletion"
msgstr ""
-#: models.py:1869
+#: models.py:1884
msgid "Archaeological entity search"
msgstr ""
-#: models.py:1870
+#: models.py:1885
msgid "New archaeological entity"
msgstr ""
-#: models.py:1871
+#: models.py:1886
msgid "Archaeological entity modification"
msgstr ""
-#: models.py:1872
+#: models.py:1887
msgid "Archaeological entity deletion"
msgstr ""
-#: models.py:1880 models.py:2431 models_imports.py:124
+#: models.py:1895 models.py:2447 models_imports.py:124
msgid "Slug"
msgstr ""
-#: models.py:1881
+#: models.py:1896
msgid "Current active"
msgstr ""
-#: models.py:1883
+#: models.py:1898
msgid "Activate experimental feature"
msgstr ""
-#: models.py:1886
+#: models.py:1901
msgid "Alternate configuration"
msgstr ""
-#: models.py:1888
+#: models.py:1903
msgid "Choose an alternate configuration for label, index management"
msgstr ""
-#: models.py:1892
+#: models.py:1907
msgid "Files module"
msgstr ""
-#: models.py:1894
+#: models.py:1909
msgid "Archaeological site module"
msgstr ""
-#: models.py:1896
+#: models.py:1911
msgid "Archaeological site type"
msgstr ""
-#: models.py:1900
+#: models.py:1915
msgid "Context records module"
msgstr ""
-#: models.py:1902
+#: models.py:1917
msgid "Finds module"
msgstr ""
-#: models.py:1903
+#: models.py:1918
msgid "Need context records module"
msgstr ""
-#: models.py:1905
+#: models.py:1920
msgid "Find index is based on"
msgstr ""
-#: models.py:1907
+#: models.py:1922
msgid ""
"To prevent irrelevant indexes, change this parameter only if there is no "
"find in the database"
msgstr ""
-#: models.py:1910
+#: models.py:1925
msgid "Warehouses module"
msgstr ""
-#: models.py:1911
+#: models.py:1926
msgid "Need finds module"
msgstr ""
-#: models.py:1912
+#: models.py:1927
msgid "Preservation module"
msgstr ""
-#: models.py:1914
+#: models.py:1929
msgid "Mapping module"
msgstr ""
-#: models.py:1915
+#: models.py:1930
msgid "Underwater module"
msgstr ""
-#: models.py:1917
+#: models.py:1932
msgid "Parcel are mandatory for context records"
msgstr ""
-#: models.py:1919
+#: models.py:1934
msgid "Home page"
msgstr ""
-#: models.py:1920
+#: models.py:1935
#, python-brace-format
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
"markdown syntax. {random_image} can be used to display a random image."
msgstr ""
-#: models.py:1924
+#: models.py:1939
msgid "Main operation code prefix"
msgstr ""
-#: models.py:1928
+#: models.py:1943
msgid "Default operation code prefix"
msgstr ""
-#: models.py:1932
+#: models.py:1947
msgid "Operation region code"
msgstr ""
-#: models.py:1936
+#: models.py:1951
msgid "File external id"
msgstr ""
-#: models.py:1938
+#: models.py:1953
msgid ""
"Formula to manage file external ID. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
"be destructive."
msgstr ""
-#: models.py:1943
+#: models.py:1958
msgid "Parcel external id"
msgstr ""
-#: models.py:1946
+#: models.py:1961
msgid ""
"Formula to manage parcel external ID. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
"be destructive."
msgstr ""
-#: models.py:1951
+#: models.py:1966
msgid "Context record external id"
msgstr ""
-#: models.py:1953
+#: models.py:1968
msgid ""
"Formula to manage context record external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
"data can be destructive."
msgstr ""
-#: models.py:1958
+#: models.py:1973
msgid "Base find external id"
msgstr ""
-#: models.py:1960
+#: models.py:1975
msgid ""
"Formula to manage base find external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
"data can be destructive."
msgstr ""
-#: models.py:1965
+#: models.py:1980
msgid "Find external id"
msgstr ""
-#: models.py:1967
+#: models.py:1982
msgid ""
"Formula to manage find external ID. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
"be destructive."
msgstr ""
-#: models.py:1972
+#: models.py:1987
msgid "Container external id"
msgstr ""
-#: models.py:1974
+#: models.py:1989
msgid ""
"Formula to manage container external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
"data can be destructive."
msgstr ""
-#: models.py:1979
+#: models.py:1994
msgid "Warehouse external id"
msgstr ""
-#: models.py:1981
+#: models.py:1996
msgid ""
"Formula to manage warehouse external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
"data can be destructive."
msgstr ""
-#: models.py:1986
+#: models.py:2001
msgid "Raw name for person"
msgstr ""
-#: models.py:1988
+#: models.py:2003
msgid ""
"Formula to manage person raw_name. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
"be destructive."
msgstr ""
-#: models.py:1992
+#: models.py:2007
msgid "Use auto index for finds"
msgstr ""
-#: models.py:1994
+#: models.py:2009
msgid "Currency"
msgstr ""
-#: models.py:1998
+#: models.py:2013
msgid "Ishtar site profile"
msgstr ""
-#: models.py:1999
+#: models.py:2014
msgid "Ishtar site profiles"
msgstr ""
-#: models.py:2083
+#: models.py:2098
msgid "Enable this form"
msgstr ""
-#: models.py:2084
+#: models.py:2099
msgid ""
"Disable with caution: disabling a form with mandatory fields may lead to "
"database errors."
msgstr ""
-#: models.py:2087
+#: models.py:2102
msgid "Apply to all"
msgstr ""
-#: models.py:2088
+#: models.py:2103
msgid ""
"Apply this form to all users. If set to True, selecting user and user type "
"is useless."
msgstr ""
-#: models.py:2094
+#: models.py:2109
msgid "Custom form"
msgstr ""
-#: models.py:2095
+#: models.py:2110
msgid "Custom forms"
msgstr ""
-#: models.py:2111
+#: models.py:2126
msgid "User types"
msgstr ""
-#: models.py:2183
+#: models.py:2198
msgid "Excluded field"
msgstr ""
-#: models.py:2184
+#: models.py:2199
msgid "Excluded fields"
msgstr ""
-#: models.py:2194 templates/blocks/form_flex_snippet.html:18
+#: models.py:2209 templates/blocks/form_flex_snippet.html:18
#: templates/blocks/table_form_snippet.html:9
msgid "Help"
msgstr ""
-#: models.py:2197
+#: models.py:2212
msgid "Custom form - Json data field"
msgstr ""
-#: models.py:2198
+#: models.py:2213
msgid "Custom form - Json data fields"
msgstr ""
-#: models.py:2202
+#: models.py:2217
msgid "Variable name"
msgstr ""
-#: models.py:2203
+#: models.py:2218
msgid "Description of the variable"
msgstr ""
-#: models.py:2205 models_imports.py:564
+#: models.py:2220 models_imports.py:564
#: templates/ishtar/formset_import_match.html:22
#: templates/ishtar/import_step_by_step.html:172
#: templates/ishtar/import_step_by_step.html:200
@@ -1446,560 +1446,560 @@ msgstr ""
msgid "Value"
msgstr ""
-#: models.py:2208
+#: models.py:2223
msgid "Global variable"
msgstr ""
-#: models.py:2335 models.py:2365
+#: models.py:2351 models.py:2381
msgid "Total"
msgstr ""
-#: models.py:2342 models.py:2529 models.py:2545
+#: models.py:2358 models.py:2545 models.py:2561
#: templates/ishtar/dashboards/dashboard_main_detail.html:211
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:5
#: templates/ishtar/sheet_person.html:30
msgid "Number"
msgstr ""
-#: models.py:2429
+#: models.py:2445
msgid "Administrative Act"
msgstr ""
-#: models.py:2436
+#: models.py:2452
msgid "Associated object"
msgstr ""
-#: models.py:2441
+#: models.py:2457
msgid "Document template"
msgstr ""
-#: models.py:2442
+#: models.py:2458
msgid "Document templates"
msgstr ""
-#: models.py:2533 models.py:2546 models.py:4285 models_imports.py:853
+#: models.py:2549 models.py:2562 models.py:4304 models_imports.py:853
msgid "State"
msgstr ""
-#: models.py:2551 models.py:4007 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:2567 models.py:4024 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr ""
-#: models.py:2552
+#: models.py:2568
msgid "Departments"
msgstr ""
-#: models.py:2592
+#: models.py:2608
msgid "Raw phone"
msgstr ""
-#: models.py:2598
+#: models.py:2614
msgid "Alternative address is prefered"
msgstr ""
-#: models.py:2637
+#: models.py:2653
msgid "Tel: "
msgstr ""
-#: models.py:2641
+#: models.py:2657
msgid "Mobile: "
msgstr ""
-#: models.py:2645
+#: models.py:2661
msgid "Email: "
msgstr "E-Mail-Adresse:"
-#: models.py:2650
+#: models.py:2666
msgid "Merge key"
msgstr ""
-#: models.py:2722
+#: models.py:2738
msgid "Organization types"
msgstr ""
-#: models.py:2749 models.py:2896 models.py:3303
+#: models.py:2765 models.py:2913 models.py:3320
msgctxt "key for text search"
msgid "name"
msgstr ""
-#: models.py:2753 models.py:2908 models.py:3315 models.py:3639
+#: models.py:2769 models.py:2925 models.py:3332 models.py:3656
msgctxt "key for text search"
msgid "type"
msgstr ""
-#: models.py:2768 models.py:2947 models.py:3498 models.py:4015
+#: models.py:2784 models.py:2964 models.py:3515 models.py:4032
msgid "Cached name"
msgstr ""
-#: models.py:2774
+#: models.py:2790
msgid "Organizations"
msgstr ""
-#: models.py:2804
+#: models.py:2821
msgid "unknown organization"
msgstr ""
-#: models.py:2830
+#: models.py:2847
msgid "Person types"
msgstr ""
-#: models.py:2843 models_imports.py:670
+#: models.py:2860 models_imports.py:670
msgid "Title type"
msgstr ""
-#: models.py:2844
+#: models.py:2861
msgid "Title types"
msgstr ""
-#: models.py:2868
+#: models.py:2885
msgid "Mr"
msgstr ""
-#: models.py:2869
+#: models.py:2886
msgid "Miss"
msgstr ""
-#: models.py:2870
+#: models.py:2887
msgid "Mr and Mrs"
msgstr ""
-#: models.py:2871
+#: models.py:2888
msgid "Mrs"
msgstr ""
-#: models.py:2872
+#: models.py:2889
msgid "Doctor"
msgstr ""
-#: models.py:2900 models.py:3307
+#: models.py:2917 models.py:3324
msgctxt "key for text search"
msgid "surname"
msgstr ""
-#: models.py:2904 models.py:3311
+#: models.py:2921 models.py:3328
msgctxt "key for text search"
msgid "email"
msgstr ""
-#: models.py:2912 models.py:3319
+#: models.py:2929 models.py:3336
msgctxt "key for text search"
msgid "organization"
msgstr ""
-#: models.py:2916
+#: models.py:2933
msgctxt "key for text search"
msgid "has-account"
msgstr ""
-#: models.py:2940
+#: models.py:2957
msgid "Contact type"
msgstr ""
-#: models.py:2943 models.py:3033
+#: models.py:2960 models.py:3050
msgid "Types"
msgstr ""
-#: models.py:2946
+#: models.py:2963
msgid "Is attached to"
msgstr ""
-#: models.py:2953
+#: models.py:2970
msgid "Persons"
msgstr ""
-#: models.py:3171
+#: models.py:3188
msgid "Groups"
msgstr ""
-#: models.py:3176
+#: models.py:3193
msgid "Profile types"
msgstr ""
-#: models.py:3187
+#: models.py:3204
msgid "Profile type summary"
msgstr ""
-#: models.py:3188
+#: models.py:3205
msgid "Profile types summary"
msgstr ""
-#: models.py:3199
+#: models.py:3216
msgid "Show field number"
msgstr ""
-#: models.py:3200
+#: models.py:3217
msgid "Automatically pin"
msgstr ""
-#: models.py:3201
+#: models.py:3218
msgid "Display pin menu"
msgstr ""
-#: models.py:3207
+#: models.py:3224
msgid "User profile"
msgstr ""
-#: models.py:3208
+#: models.py:3225
msgid "User profiles"
msgstr ""
-#: models.py:3243
+#: models.py:3260
msgid " - duplicate"
msgstr ""
-#: models.py:3299
+#: models.py:3316
msgctxt "key for text search"
msgid "username"
msgstr ""
-#: models.py:3335
+#: models.py:3352
msgid "Advanced shortcut menu"
msgstr ""
-#: models.py:3338
+#: models.py:3355
msgid "Ishtar user"
msgstr ""
-#: models.py:3339
+#: models.py:3356
msgid "Ishtar users"
msgstr ""
-#: models.py:3424
+#: models.py:3441
msgid "Owner"
msgstr ""
-#: models.py:3427
+#: models.py:3444
msgid "Shared with"
msgstr ""
-#: models.py:3469
+#: models.py:3486
msgid "Author types"
msgstr ""
-#: models.py:3544
+#: models.py:3561
msgid "Source types"
msgstr ""
-#: models.py:3554 models_imports.py:669
+#: models.py:3571 models_imports.py:669
msgid "Support type"
msgstr ""
-#: models.py:3555
+#: models.py:3572
msgid "Support types"
msgstr ""
-#: models.py:3564
+#: models.py:3581
msgid "Format type"
msgstr ""
-#: models.py:3565
+#: models.py:3582
msgid "Format types"
msgstr ""
-#: models.py:3574
+#: models.py:3591
msgid "URL"
msgstr ""
-#: models.py:3577
+#: models.py:3594
msgid "License type"
msgstr ""
-#: models.py:3578
+#: models.py:3595
msgid "License types"
msgstr ""
-#: models.py:3631
+#: models.py:3648
msgctxt "key for text search"
msgid "author"
msgstr ""
-#: models.py:3635
+#: models.py:3652
msgctxt "key for text search"
msgid "title"
msgstr ""
-#: models.py:3643
+#: models.py:3660
msgctxt "key for text search"
msgid "reference"
msgstr ""
-#: models.py:3647
+#: models.py:3664
msgctxt "key for text search"
msgid "internal-reference"
msgstr ""
-#: models.py:3651
+#: models.py:3668
msgctxt "key for text search"
msgid "description"
msgstr ""
-#: models.py:3655
+#: models.py:3672
msgctxt "key for text search"
msgid "comment"
msgstr ""
-#: models.py:3659
+#: models.py:3676
msgctxt "key for text search"
msgid "additional-information"
msgstr ""
-#: models.py:3663
+#: models.py:3680
msgctxt "key for text search"
msgid "has-duplicate"
msgstr ""
-#: models.py:3667 models.py:3714
+#: models.py:3684 models.py:3731
msgctxt "key for text search"
msgid "operation"
msgstr ""
-#: models.py:3671 models.py:3717
+#: models.py:3688 models.py:3734
msgctxt "key for text search"
msgid "context-record"
msgstr ""
-#: models.py:3675 models.py:3719
+#: models.py:3692 models.py:3736
msgctxt "key for text search"
msgid "find"
msgstr ""
-#: models.py:3679 models.py:3718
+#: models.py:3696 models.py:3735
msgctxt "key for text search"
msgid "file"
msgstr ""
-#: models.py:3683 models.py:3720
+#: models.py:3700 models.py:3737
msgctxt "key for text search"
msgid "site"
msgstr ""
-#: models.py:3687 models.py:3721
+#: models.py:3704 models.py:3738
msgctxt "key for text search"
msgid "warehouse"
msgstr ""
-#: models.py:3723
+#: models.py:3740
msgctxt "key for text search"
msgid "treatment"
msgstr ""
-#: models.py:3726
+#: models.py:3743
msgctxt "key for text search"
msgid "treatment-file"
msgstr ""
-#: models.py:3732
+#: models.py:3749
msgid "Index"
msgstr ""
-#: models.py:3734
+#: models.py:3751
msgid "External ID"
msgstr ""
-#: models.py:3735 templates/ishtar/blocks/window_image_detail.html:34
+#: models.py:3752 templates/ishtar/blocks/window_image_detail.html:34
msgid "Ref."
msgstr ""
-#: models.py:3736 templates/ishtar/blocks/window_image_detail.html:44
+#: models.py:3753 templates/ishtar/blocks/window_image_detail.html:44
msgid "Internal ref."
msgstr ""
-#: models.py:3740
+#: models.py:3757
msgid "License"
msgstr ""
-#: models.py:3742 templates/ishtar/blocks/window_image_detail.html:78
+#: models.py:3759 templates/ishtar/blocks/window_image_detail.html:78
msgid "Support"
msgstr ""
-#: models.py:3744 models_imports.py:635
+#: models.py:3761 models_imports.py:635
#: templates/ishtar/blocks/window_image_detail.html:88
msgid "Format"
msgstr ""
-#: models.py:3746 templates/ishtar/blocks/window_image_detail.html:98
+#: models.py:3763 templates/ishtar/blocks/window_image_detail.html:98
msgid "Scale"
msgstr ""
-#: models.py:3750
+#: models.py:3767
msgid "Authors (raw)"
msgstr ""
-#: models.py:3762 templates/ishtar/blocks/window_image_detail.html:118
+#: models.py:3779 templates/ishtar/blocks/window_image_detail.html:118
msgid "Number of items"
msgstr ""
-#: models.py:3769
+#: models.py:3786
msgid "Symbolic links"
msgstr ""
-#: models.py:3772
+#: models.py:3789
msgid "Related"
msgstr ""
-#: models.py:3773
+#: models.py:3790
msgid "Cached value - do not edit"
msgstr ""
-#: models.py:3776 templates/ishtar/sheet_document.html:4
+#: models.py:3793 templates/ishtar/sheet_document.html:4
msgid "Document"
msgstr ""
-#: models.py:3777 templates/ishtar/sheet_person.html:113
+#: models.py:3794 templates/ishtar/sheet_person.html:113
msgid "Documents"
msgstr ""
-#: models.py:3781
+#: models.py:3798
msgid "Can view all Documents"
msgstr ""
-#: models.py:3783
+#: models.py:3800
msgid "Can view own Document"
msgstr ""
-#: models.py:3785
+#: models.py:3802
msgid "Can add own Document"
msgstr ""
-#: models.py:3787
+#: models.py:3804
msgid "Can change own Document"
msgstr ""
-#: models.py:3789
+#: models.py:3806
msgid "Can delete own Document"
msgstr ""
-#: models.py:4000
+#: models.py:4017
msgid "Surface (m2)"
msgstr ""
-#: models.py:4001
+#: models.py:4018
msgid "Localisation"
msgstr "Lokalisierung"
-#: models.py:4009
+#: models.py:4026
msgid "Year of creation"
msgstr ""
-#: models.py:4010
+#: models.py:4027
msgid ""
"Filling this field is relevant to distinguish old towns from new towns."
msgstr ""
-#: models.py:4142
+#: models.py:4159
msgid "Only four level of parent are managed."
msgstr ""
-#: models.py:4147
+#: models.py:4164
msgid "Area"
msgstr ""
-#: models.py:4166
+#: models.py:4183
msgid "Is preventive"
msgstr ""
-#: models.py:4167
+#: models.py:4184
msgid "Is judiciary"
msgstr ""
-#: models.py:4170 models_imports.py:636
+#: models.py:4187 models_imports.py:636
msgid "Operation type"
msgstr ""
-#: models.py:4171
+#: models.py:4188
msgid "Operation types"
msgstr ""
-#: models.py:4210
+#: models.py:4227
msgid "Judiciary"
msgstr ""
-#: models.py:4212
+#: models.py:4229
msgid "Preventive"
msgstr ""
-#: models.py:4214
+#: models.py:4231
msgid "Research"
msgstr ""
-#: models.py:4249
+#: models.py:4266
msgid "Authority name"
msgstr ""
-#: models.py:4250
+#: models.py:4267
msgid "Authority SRID"
msgstr ""
-#: models.py:4253 models_imports.py:668
+#: models.py:4270 models_imports.py:668
msgid "Spatial reference system"
msgstr ""
-#: models.py:4254
+#: models.py:4271
msgid "Spatial reference systems"
msgstr ""
-#: models.py:4261
+#: models.py:4280
msgid "Filename"
msgstr ""
-#: models.py:4266
+#: models.py:4285
msgid "Administration script"
msgstr ""
-#: models.py:4267
+#: models.py:4286
msgid "Administration scripts"
msgstr ""
-#: models.py:4274
+#: models.py:4293
msgid "Scheduled"
msgstr ""
-#: models.py:4275
+#: models.py:4294
msgid "In progress"
msgstr ""
-#: models.py:4276 models_imports.py:792
+#: models.py:4295 models_imports.py:792
msgid "Finished with errors"
msgstr ""
-#: models.py:4277 models_imports.py:793
+#: models.py:4296 models_imports.py:793
msgid "Finished"
msgstr ""
-#: models.py:4290
+#: models.py:4309
msgid "Result"
msgstr ""
-#: models.py:4293
+#: models.py:4312
msgid "Administration task"
msgstr ""
-#: models.py:4294
+#: models.py:4313
msgid "Administration tasks"
msgstr ""
-#: models.py:4298
+#: models.py:4317
msgid "Unknown"
msgstr ""
-#: models.py:4313
+#: models.py:4332
msgid ""
"ISHTAR_SCRIPT_DIR is not set in your local_settings. Contact your "
"administrator."
msgstr ""
-#: models.py:4322
+#: models.py:4341
msgid ""
"Your ISHTAR_SCRIPT_DIR is containing dots \"..\". As it can refer to "
"relative paths, it can be a security issue and this is not allowed. Only put "
"a full path."
msgstr ""
-#: models.py:4333
+#: models.py:4352
msgid "Your ISHTAR_SCRIPT_DIR: \"{}\" is not a valid directory."
msgstr ""
-#: models.py:4349
+#: models.py:4368
msgid ""
"Script \"{}\" is not available in your script directory. Check your "
"configuration."
@@ -2585,49 +2585,53 @@ msgid " items added."
msgstr ""
#: templates/base.html:47
-msgid "yes"
+msgid "Select only one item."
msgstr ""
#: templates/base.html:48
-msgid "no"
+msgid "yes"
msgstr ""
#: templates/base.html:49
-msgid "Autorefresh start. The form is disabled."
+msgid "no"
msgstr ""
#: templates/base.html:50
+msgid "Autorefresh start. The form is disabled."
+msgstr ""
+
+#: templates/base.html:51
msgid "Autorefresh end. The form is re-enabled."
msgstr ""
-#: templates/base.html:81
+#: templates/base.html:82
msgid "Current items"
msgstr ""
-#: templates/base.html:83 templates/ishtar/forms/qa_base.html:34
+#: templates/base.html:84 templates/ishtar/forms/qa_base.html:34
#: templates/ishtar/forms/qa_form.html:21 templates/ishtar/manage_basket.html:4
#: templates/welcome.html:11 templates/welcome.html:12
#: templates/welcome.html:13 templates/welcome.html:14 wizards.py:423
msgid ":"
msgstr ""
-#: templates/base.html:96
+#: templates/base.html:97
msgid "Sheets"
msgstr ""
-#: templates/base.html:146
+#: templates/base.html:158
msgid "Processing..."
msgstr ""
-#: templates/base.html:148
+#: templates/base.html:160
msgid "This can be long."
msgstr ""
-#: templates/base.html:150
+#: templates/base.html:162
msgid "Time to take a coffee?"
msgstr ""
-#: templates/base.html:152
+#: templates/base.html:164
msgid "Time to take another coffee?"
msgstr ""
@@ -2834,6 +2838,10 @@ msgstr ""
msgid "Data"
msgstr ""
+#: templates/ishtar/blocks/sheet_json.html:9
+msgid "No data"
+msgstr ""
+
#: templates/ishtar/blocks/window_image_detail.html:64
msgid "Licenses"
msgstr ""
@@ -3652,11 +3660,11 @@ msgstr ""
msgid "No"
msgstr ""
-#: templatetags/window_tables.py:88 widgets.py:1065
+#: templatetags/window_tables.py:88 widgets.py:1064
msgid "No results"
msgstr ""
-#: templatetags/window_tables.py:89 widgets.py:1066
+#: templatetags/window_tables.py:89 widgets.py:1065
msgid "Loading..."
msgstr ""
@@ -3664,15 +3672,15 @@ msgstr ""
msgid "You don't have sufficient permissions to do this action."
msgstr ""
-#: utils.py:338
+#: utils.py:344
msgid " (...)"
msgstr ""
-#: utils.py:418
+#: utils.py:424
msgid "Information"
msgstr ""
-#: utils.py:419
+#: utils.py:425
msgid "Load another random image?"
msgstr ""
@@ -3837,7 +3845,7 @@ msgstr ""
msgid "Previous value:"
msgstr ""
-#: widgets.py:1067
+#: widgets.py:1066
msgid "Remove"
msgstr ""
diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po
index 996b61dca..ae08f3f62 100644
--- a/translations/fr/archaeological_finds.po
+++ b/translations/fr/archaeological_finds.po
@@ -11,249 +11,262 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2018-11-12 03:35+0000\n"
+"PO-Revision-Date: 2018-11-21 10:10+0000\n"
"Last-Translator: Étienne Loks \n"
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
"X-Generator: Zanata 4.6.2\n"
-#: admin.py:39 models_finds.py:288
+#: admin.py:39 models_finds.py:293
msgid "Point (2D)"
msgstr "Point (2D)"
-#: admin.py:41 models_finds.py:290
+#: admin.py:41 models_finds.py:295
msgid "Line"
msgstr "Ligne"
-#: admin.py:43 models_finds.py:291
+#: admin.py:43 models_finds.py:296
msgid "Multi polygon"
msgstr "Polygones multi-parties"
-#: forms.py:91 forms.py:97 forms.py:340 forms.py:353 forms.py:631
-#: models_finds.py:660 models_finds.py:1213 wizards.py:75
+#: forms.py:95 forms.py:101 forms.py:540 forms.py:553 forms.py:831
+#: models_finds.py:674 models_finds.py:1233 wizards.py:86
msgid "Context record"
msgstr "Unité d'Enregistrement"
-#: forms.py:92
+#: forms.py:96
msgid "Find - 010 - Context record choice"
msgstr "Mobilier - 010 - Choix de l'unité d'enregistrement"
-#: forms.py:126 ishtar_menu.py:32 models_finds.py:1089 models_finds.py:1717
-#: models_treatments.py:349 templates/ishtar/sheet_find.html:4
+#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1106
+#: models_finds.py:1739 models_treatments.py:511
+#: templates/ishtar/sheet_find.html:4
msgid "Find"
msgstr "Mobilier"
-#: forms.py:127
-msgid "Find - 020 - General"
-msgstr "Mobilier - 020 - Général"
+#: forms.py:134
+msgid "Simple find - 020 - General"
+msgstr "Mobilier simple - 020 - Général"
-#: forms.py:142 forms.py:341 templates/ishtar/sheet_find.html:40
+#: forms.py:156 forms.py:395 forms.py:541 templates/ishtar/sheet_find.html:110
msgid "Identification"
msgstr "Identification"
-#: forms.py:145 forms.py:360 forms.py:600 forms.py:889 models_finds.py:253
-#: models_finds.py:968
+#: forms.py:159 forms.py:398 forms.py:560 forms.py:800 forms.py:1089
+#: models_finds.py:258 models_finds.py:985
msgid "Free ID"
msgstr "Identifiant libre"
-#: forms.py:147 forms.py:362 forms.py:601 forms.py:932 models_finds.py:969
+#: forms.py:161 forms.py:400 forms.py:562 forms.py:801 forms.py:1154
+#: models_finds.py:986
msgid "Denomination"
msgstr "Dénomination"
-#: forms.py:148 forms.py:363 models_finds.py:1042
+#: forms.py:162 forms.py:563 models_finds.py:1059
msgid "Previous ID"
msgstr "Identifiant précédent"
-#: forms.py:150 forms.py:365 models_finds.py:257
-msgid "Excavation ID"
-msgstr "Identifiant fouille"
-
-#: forms.py:151 forms.py:366 models_finds.py:970
+#: forms.py:163 forms.py:566 models_finds.py:987
msgid "Museum ID"
msgstr "Identifiant musée"
-#: forms.py:152 forms.py:367 models_finds.py:965
+#: forms.py:164 forms.py:567 models_finds.py:982
msgid "Seal number"
msgstr "Numéro de scellé"
-#: forms.py:153 forms.py:368 models_finds.py:1038
+#: forms.py:165 forms.py:568 models_finds.py:1055
msgid "Mark"
msgstr "Marquage"
-#: forms.py:155 forms.py:156 forms.py:342 forms.py:371 forms.py:652
-#: forms_treatments.py:139 models_finds.py:258 models_finds.py:971
-#: models_treatments.py:146 templates/ishtar/sheet_find.html:58
+#: forms.py:167 forms.py:168 forms.py:403 forms.py:405 forms.py:542
+#: forms.py:571 forms.py:852 forms_treatments.py:143 models_finds.py:263
+#: models_finds.py:988 models_treatments.py:150
+#: templates/ishtar/sheet_find.html:128
msgid "Description"
msgstr "Description"
-#: forms.py:159 models_finds.py:265
-msgid "Discovery date (exact or TPQ)"
-msgstr "Date de découverte (exacte ou TPQ)"
-
-#: forms.py:162 models_finds.py:267 templates/ishtar/sheet_basefind.html:29
-msgid "Discovery date (TAQ)"
-msgstr "Date de découverte (TAQ)"
-
-#: forms.py:164 forms.py:654 models_finds.py:269
-msgid "Batch/object"
-msgstr "Lot/objet"
-
-#: forms.py:166 models_finds.py:1003
+#: forms.py:170 forms.py:407 models_finds.py:1020
msgid "Is complete?"
msgstr "Est complet ?"
-#: forms.py:169 forms.py:373 models_finds.py:57 models_finds.py:685
-#: models_finds.py:977
+#: forms.py:173 forms.py:409 forms.py:573 models_finds.py:57
+#: models_finds.py:699 models_finds.py:994
msgid "Material types"
msgstr "Types de matériau"
-#: forms.py:172 models_finds.py:982
+#: forms.py:176 forms.py:412 models_finds.py:999
msgid "Material type quality"
msgstr "Qualité du type de matériaux"
-#: forms.py:174 forms.py:376 models_finds.py:152 models_finds.py:686
-#: models_finds.py:1006
+#: forms.py:178 forms.py:414 forms.py:576 models_finds.py:157
+#: models_finds.py:700 models_finds.py:1023
msgid "Object types"
msgstr "Types d'objet"
-#: forms.py:177 models_finds.py:1011
+#: forms.py:181 forms.py:417 models_finds.py:1028
msgid "Object type quality"
msgstr "Qualité du type d'objet"
-#: forms.py:178 forms.py:896 models_finds.py:989
+#: forms.py:182 forms.py:419 forms.py:1096 models_finds.py:1006
msgid "Find number"
msgstr "Mobilier (en nombre)"
-#: forms.py:180 models_finds.py:1024
+#: forms.py:184 forms.py:421 models_finds.py:1041
msgid "Minimum number of individuals (MNI)"
msgstr "Nombre minimum d'individus (NMI)"
-#: forms.py:182 models_finds.py:972
+#: forms.py:186 forms.py:424 models_finds.py:989
msgid "Decoration"
msgstr "Décor"
-#: forms.py:184 models_finds.py:973
+#: forms.py:188 forms.py:426 models_finds.py:990
msgid "Inscription"
msgstr "Inscription"
-#: forms.py:187 forms.py:379 models_finds.py:975
+#: forms.py:191 forms.py:428 forms.py:579 models_finds.py:992
msgid "Manufacturing place"
msgstr "Lieu de fabrication"
-#: forms.py:189 forms.py:381 models_finds.py:1021
+#: forms.py:193 forms.py:430 forms.py:581 models_finds.py:1038
msgid "Communicability"
msgstr "Communicabilité"
-#: forms.py:191 forms.py:384 forms.py:955 forms_treatments.py:141
-#: forms_treatments.py:578 models_finds.py:259 models_finds.py:1039
-#: models_treatments.py:145 models_treatments.py:609
+#: forms.py:195 forms.py:432 forms.py:584 forms.py:1177 forms_treatments.py:145
+#: forms_treatments.py:606 models_finds.py:264 models_finds.py:1056
+#: models_treatments.py:149 models_treatments.py:771
msgid "Comment"
msgstr "Commentaire général"
-#: forms.py:194 forms.py:394 models_finds.py:1040
+#: forms.py:198 forms.py:435 forms.py:594 models_finds.py:1057
msgid "Comment on dating"
msgstr "Commentaire relatif aux datations"
-#: forms.py:196 templates/ishtar/sheet_find.html:76
+#: forms.py:200 forms.py:437 templates/ishtar/sheet_find.html:146
msgid "Dimensions"
msgstr "Dimensions"
-#: forms.py:197 models_finds.py:1025
+#: forms.py:201 forms.py:438 models_finds.py:1042
msgid "Length (cm)"
msgstr "Longueur (cm)"
-#: forms.py:198 models_finds.py:1026
+#: forms.py:202 forms.py:439 models_finds.py:1043
msgid "Width (cm)"
msgstr "Largeur (cm)"
-#: forms.py:199 models_finds.py:1027
+#: forms.py:203 forms.py:440 models_finds.py:1044
msgid "Height (cm)"
msgstr "Hauteur (cm)"
-#: forms.py:200 models_finds.py:1028
+#: forms.py:204 forms.py:441 models_finds.py:1045
msgid "Diameter (cm)"
msgstr "Diamètre (cm)"
-#: forms.py:201 models_finds.py:1029
+#: forms.py:205 forms.py:442 models_finds.py:1046
msgid "Thickness (cm)"
msgstr "Épaisseur (cm)"
-#: forms.py:202 forms.py:894 models_finds.py:985
+#: forms.py:206 forms.py:443 forms.py:1094 models_finds.py:1002
msgid "Volume (l)"
msgstr "Volume (l)"
-#: forms.py:203 forms.py:895 templates/ishtar/sheet_find.html:84
+#: forms.py:207 forms.py:444 forms.py:1095 templates/ishtar/sheet_find.html:154
msgid "Weight (g)"
msgstr "Poids (g)"
-#: forms.py:205
+#: forms.py:209 forms.py:446
msgid "Clutter long side (cm)"
msgstr "Encombrement grand côté (cm)"
-#: forms.py:207
+#: forms.py:211 forms.py:448
msgid "Clutter short side (cm)"
msgstr "Encombrement petit côté (cm)"
-#: forms.py:209
+#: forms.py:213 forms.py:450
msgid "Clutter height (cm)"
msgstr "Encombrement hauteur (cm)"
-#: forms.py:211 models_finds.py:1036
+#: forms.py:215 forms.py:452 models_finds.py:1053
msgid "Dimensions comment"
msgstr "Commentaire relatif aux dimensions"
-#: forms.py:214 templates/ishtar/sheet_basefind.html:46
-#: templates/ishtar/sheet_basefind.html:50
+#: forms.py:217 forms.py:454 forms.py:543
+#: templates/ishtar/sheet_basefind.html:70 templates/ishtar/sheet_find.html:163
+msgid "Sheet"
+msgstr "Fiche"
+
+#: forms.py:218 forms.py:455 forms.py:587 forms.py:855 models_finds.py:1061
+msgid "Check"
+msgstr "Vérification"
+
+#: forms.py:220 forms.py:458 forms.py:589 models_finds.py:1063
+msgid "Check date"
+msgstr "Date de vérification"
+
+#: forms.py:247
+msgid "Clutter: short side cannot be bigger than the long side."
+msgstr ""
+"Encombrement : le petit côté court ne peut pas être plus grand que le grand "
+"côté."
+
+#: forms.py:256
+msgid "Find - 020 - General"
+msgstr "Mobilier - 020 - Général"
+
+#: forms.py:285 forms.py:565 models_finds.py:262
+msgid "Excavation ID"
+msgstr "Identifiant fouille"
+
+#: forms.py:288 models_finds.py:270
+msgid "Discovery date (exact or TPQ)"
+msgstr "Date de découverte (exacte ou TPQ)"
+
+#: forms.py:291 models_finds.py:272 templates/ishtar/sheet_basefind.html:33
+msgid "Discovery date (TAQ)"
+msgstr "Date de découverte (TAQ)"
+
+#: forms.py:293 forms.py:854 models_finds.py:274
+msgid "Batch/object"
+msgstr "Lot/objet"
+
+#: forms.py:296 templates/ishtar/sheet_basefind.html:50
+#: templates/ishtar/sheet_basefind.html:54
msgid "Coordinates"
msgstr "Coordonnées"
-#: forms.py:215 models_finds.py:276
+#: forms.py:297 models_finds.py:281
msgid "X"
msgstr "X"
-#: forms.py:217 models_finds.py:279
+#: forms.py:299 models_finds.py:284
msgid "Estimated error for X"
msgstr "Erreur estimée pour X"
-#: forms.py:218 models_finds.py:277
+#: forms.py:300 models_finds.py:282
msgid "Y"
msgstr "Y"
-#: forms.py:220 models_finds.py:281
+#: forms.py:302 models_finds.py:286
msgid "Estimated error for Y"
msgstr "Erreur estimée pour Y"
-#: forms.py:221 models_finds.py:278
+#: forms.py:303 models_finds.py:283
msgid "Z"
msgstr "Z"
-#: forms.py:223 models_finds.py:283
+#: forms.py:305 models_finds.py:288
msgid "Estimated error for Z"
msgstr "Erreur estimée pour Z"
-#: forms.py:225 models_finds.py:286
+#: forms.py:307 models_finds.py:291
msgid "Spatial Reference System"
msgstr "Système de référence spatiale"
-#: forms.py:228 models_finds.py:274
+#: forms.py:310 models_finds.py:279
msgid "Point of topographic reference"
msgstr "Point topographique"
-#: forms.py:232 forms.py:343 templates/ishtar/sheet_basefind.html:66
-#: templates/ishtar/sheet_find.html:93
-msgid "Sheet"
-msgstr "Fiche"
-
-#: forms.py:233 forms.py:387 forms.py:655 models_finds.py:1044
-msgid "Check"
-msgstr "Vérification"
-
-#: forms.py:235 forms.py:389 models_finds.py:1046
-msgid "Check date"
-msgstr "Date de vérification"
-
-#: forms.py:274
+#: forms.py:338
msgid ""
"Discovery date: if a TAQ date is provided a TPQ date has to be informed. If "
"you have a precise date fill only the TPQ - discovery date field."
@@ -262,374 +275,391 @@ msgstr ""
"renseignée. Si vous avez une date précise, remplissez seulement le champ « "
"date de découverte (exacte ou TPQ) »."
-#: forms.py:280
+#: forms.py:344
msgid "Discovery date: TAQ date must be older than TPQ date."
msgstr "Date de découverte : la date TAQ doit être postérieure à la date TPQ."
-#: forms.py:290
-msgid "Clutter: short side cannot be bigger than the long side."
-msgstr ""
-"Encombrement : le petit côté court ne peut pas être plus grand que le grand "
-"côté."
-
-#: forms.py:307
+#: forms.py:360
msgid ""
"You should at least provide X, Y and the spatial reference system used."
msgstr ""
"Vous devez au minimum fournir X, Y et le système de référence spatiale "
"utilisé."
-#: forms.py:316
+#: forms.py:369
msgid ""
"Coordinates are not relevant for the spatial reference system used: {}."
msgstr ""
"Les coordonnées ne sont pas pertinentes pour le système de référence "
"spatiale utilisé : {}."
-#: forms.py:322
+#: forms.py:382 forms.py:1086
+msgid "Resulting find"
+msgstr "Mobilier résultant"
+
+#: forms.py:383
+msgid "Treatment n-1 - 030 - Resulting find"
+msgstr "Traitement n-1 - 030 - Mobilier résultant"
+
+#: forms.py:477 forms.py:1105
+msgid "Resulting finds"
+msgstr "Mobiliers résultants"
+
+#: forms.py:478
+msgid "Treatment 1-n - 030 - Resulting finds"
+msgstr "Traitement 1-n - 030 - Mobiliers résultants"
+
+#: forms.py:483
+msgid "Number of resulting finds"
+msgstr "Nombre de mobiliers résultants"
+
+#: forms.py:487
+msgid "Prefix label for resulting finds"
+msgstr "Préfixe du libellé des mobiliers résultants"
+
+#: forms.py:490
+msgid ""
+"E.g.: with a prefix \"item-\", each resulting item will be named \"item-1\", "
+"\"item-2\", \"item-3\""
+msgstr ""
+"Par exemple : avec un préfixe « élément- », chaque élément résultant sera "
+"nommé « élément-1 », « élément-2 », « élément-3 »..."
+
+#: forms.py:494
+msgid "Numbering starting from"
+msgstr "Numérotation commençant depuis"
+
+#: forms.py:497
+msgid "Name of the new basket containing the resulting items"
+msgstr "Nom du nouveau panier contenant les éléments résultants"
+
+#: forms.py:515 forms.py:681
+msgid "A basket with this label already exists."
+msgstr "Un panier avec ce libellé existe déjà."
+
+#: forms.py:521
msgid "Find - Quick action - Modify"
msgstr "Mobilier - Action rapide - Modification"
-#: forms.py:344
+#: forms.py:544
msgid "Datation"
msgstr "Datation"
-#: forms.py:392 forms.py:565 forms.py:641 templates/ishtar/sheet_find.html:123
+#: forms.py:592 forms.py:765 forms.py:841 templates/ishtar/sheet_find.html:195
msgid "Period"
msgstr "Période"
-#: forms.py:436
+#: forms.py:636
msgid "Find - Quick action - Modify single"
msgstr "Mobilier - Action rapide - Modification simpe"
-#: forms.py:449
+#: forms.py:649
msgid "Create"
msgstr "Création"
-#: forms.py:450
+#: forms.py:650
msgid "Update"
msgstr "Mise à jour"
-#: forms.py:452 forms.py:636 forms.py:982 forms.py:986 forms_treatments.py:180
-#: ishtar_menu.py:57 models_finds.py:926
-#: templates/ishtar/sheet_findbasket.html:4 views.py:646
+#: forms.py:652 forms.py:836 forms.py:1204 forms.py:1208 ishtar_menu.py:57
+#: models_finds.py:943 templates/ishtar/sheet_findbasket.html:4 views.py:694
+#: wizards.py:353
msgid "Basket"
msgstr "Panier"
-#: forms.py:474
+#: forms.py:674
msgid "On update, you have to select a basket."
msgstr "Pour la mise à jour, vous avez à sélectionner un panier."
-#: forms.py:478
+#: forms.py:678
msgid "A label is required."
msgstr "Un libellé est obligatoire"
-#: forms.py:481
-msgid "A basket with this label already exists."
-msgstr "Un panier avec ce libellé existe déjà."
-
-#: forms.py:498 templates/ishtar/sheet_find.html:102
+#: forms.py:698 templates/ishtar/sheet_find.html:174
msgid "Preservation"
msgstr "Conservation"
-#: forms.py:499
+#: forms.py:699
msgid "Find - 030 - Preservation"
msgstr "Mobilier - 030 - Conservation"
-#: forms.py:513 forms.py:648 models_finds.py:1015
+#: forms.py:713 forms.py:848 models_finds.py:1032
msgid "Integrity / interest"
msgstr "Intégrité / intérêt"
-#: forms.py:516 forms.py:650 models_finds.py:1018
+#: forms.py:716 forms.py:850 models_finds.py:1035
msgid "Remarkability"
msgstr "Remarquabilité"
-#: forms.py:518 forms.py:646 models_finds.py:1056
+#: forms.py:718 forms.py:846 models_finds.py:1073
msgid "Conservatory state"
msgstr "État sanitaire"
-#: forms.py:521 models_finds.py:1065
+#: forms.py:721 models_finds.py:1082
msgid "Alteration"
msgstr "Altération"
-#: forms.py:524 models_finds.py:1069
+#: forms.py:724 models_finds.py:1086
msgid "Alteration cause"
msgstr "Cause d'altération"
-#: forms.py:527 models_finds.py:1062
+#: forms.py:727 models_finds.py:1079
msgid "Recommended treatments"
msgstr "Traitements recommandés"
-#: forms.py:529 models_finds.py:1073
+#: forms.py:729 models_finds.py:1090
msgid "Treatment emergency"
msgstr "Urgence du traitement"
-#: forms.py:531 models_finds.py:1048
+#: forms.py:731 models_finds.py:1065
msgid "Estimated value"
msgstr "Valeur estimée"
-#: forms.py:532 models_finds.py:1076
+#: forms.py:732 models_finds.py:1093
msgid "Insurance value"
msgstr "Valeur d'assurance"
-#: forms.py:534 models_finds.py:1078
+#: forms.py:734 models_finds.py:1095
msgid "Appraisal date"
msgstr "Date d'évaluation"
-#: forms.py:536 models_finds.py:1058
+#: forms.py:736 models_finds.py:1075
msgid "Conservatory comment"
msgstr "Commentaire relatif à la conservation"
-#: forms.py:560 forms.py:584 models_finds.py:997
-#: templates/ishtar/sheet_find.html:119
+#: forms.py:760 forms.py:784 models_finds.py:1014
+#: templates/ishtar/sheet_find.html:191
msgid "Dating"
msgstr "Datation"
-#: forms.py:566 forms_treatments.py:143 forms_treatments.py:370
-#: forms_treatments.py:580 models_finds.py:1722 models_treatments.py:148
-#: models_treatments.py:360 templates/ishtar/sheet_find.html:124
-#: templates/ishtar/sheet_find.html:185 templates/ishtar/sheet_find.html:223
+#: forms.py:766 forms_treatments.py:131 forms_treatments.py:398
+#: forms_treatments.py:608 models_finds.py:1744 models_treatments.py:152
+#: models_treatments.py:522 templates/ishtar/sheet_find.html:196
+#: templates/ishtar/sheet_find.html:254 templates/ishtar/sheet_find.html:291
+#: templates/ishtar/sheet_find.html:329
msgid "Start date"
msgstr "Date de début"
-#: forms.py:568 models_finds.py:1723 models_treatments.py:361
-#: templates/ishtar/sheet_find.html:125 templates/ishtar/sheet_find.html:186
-#: templates/ishtar/sheet_find.html:224
+#: forms.py:768 models_finds.py:1745 models_treatments.py:523
+#: templates/ishtar/sheet_find.html:197 templates/ishtar/sheet_find.html:255
+#: templates/ishtar/sheet_find.html:292 templates/ishtar/sheet_find.html:330
msgid "End date"
msgstr "Date de fin"
-#: forms.py:569 templates/ishtar/sheet_find.html:127
+#: forms.py:769 templates/ishtar/sheet_find.html:199
msgid "Quality"
msgstr "Qualité"
-#: forms.py:571 templates/ishtar/sheet_find.html:126
+#: forms.py:771 templates/ishtar/sheet_find.html:198
msgid "Dating type"
msgstr "Type de datation"
-#: forms.py:573 templates/ishtar/sheet_find.html:128
+#: forms.py:773 templates/ishtar/sheet_find.html:200
msgid "Precise dating"
msgstr "Datation précise"
-#: forms.py:585
+#: forms.py:785
msgid "Find - 040 - Dating"
msgstr "Mobilier - 040 - Datation"
-#: forms.py:592
+#: forms.py:792
msgid "Find - 001 - Search"
msgstr "Mobilier - 001 - Recherche"
-#: forms.py:595 forms.py:928 forms_treatments.py:50 forms_treatments.py:419
-#: forms_treatments.py:493 forms_treatments.py:686
+#: forms.py:795 forms.py:1150 forms_treatments.py:50 forms_treatments.py:447
+#: forms_treatments.py:521 forms_treatments.py:714
msgid "Full text search"
msgstr "Recherche en texte intégral"
-#: forms.py:598 models_finds.py:294
+#: forms.py:798 models_finds.py:299
msgid "Short ID"
msgstr "Identifiant court"
-#: forms.py:599 models_finds.py:297
+#: forms.py:799 models_finds.py:302
msgid "Complete ID"
msgstr "Identifiant complet"
-#: forms.py:604 forms_treatments.py:56 forms_treatments.py:101
-#: forms_treatments.py:295 forms_treatments.py:423 forms_treatments.py:498
-#: forms_treatments.py:550 forms_treatments.py:690 models_treatments.py:122
-#: models_treatments.py:582
+#: forms.py:804 forms_treatments.py:56 forms_treatments.py:102
+#: forms_treatments.py:323 forms_treatments.py:451 forms_treatments.py:526
+#: forms_treatments.py:578 forms_treatments.py:718 models_treatments.py:126
+#: models_treatments.py:744
msgid "Year"
msgstr "Année"
-#: forms.py:606
+#: forms.py:806
msgid "Operation's number (index by year)"
msgstr "Numéro de l'opération (index par année)"
-#: forms.py:609
+#: forms.py:809
msgid "Code PATRIARCHE"
msgstr "Code PATRIARCHE"
-#: forms.py:613
+#: forms.py:813
msgid "Operation type"
msgstr "Type d'opération"
-#: forms.py:616
+#: forms.py:816
msgid "Areas"
msgstr "Zones"
-#: forms.py:619
+#: forms.py:819
msgid "Archaeological site (attached to the operation)"
msgstr "Site archéologique (attaché à l'opération)"
-#: forms.py:625
+#: forms.py:825
msgid "Archaeological site (attached to the context record)"
msgstr "Site archéologique (attaché à l'UE)"
-#: forms.py:638
+#: forms.py:838
msgid "Search within related operations"
msgstr "Rechercher parmi les opérations liées"
-#: forms.py:640
+#: forms.py:840
msgid "Search within related context records"
msgstr "Recherche parmi les Unités d'Enregistrement associées"
-#: forms.py:642 forms.py:893 models_finds.py:56
+#: forms.py:842 forms.py:1093 models_finds.py:56
msgid "Material type"
msgstr "Type de matériau"
-#: forms.py:643 models_finds.py:151
+#: forms.py:843 models_finds.py:156
msgid "Object type"
msgstr "Type d'objet"
-#: forms.py:645
+#: forms.py:845
msgid "Preservation type"
msgstr "Type de conservation"
-#: forms.py:656 forms_treatments.py:59
+#: forms.py:856 forms_treatments.py:59
msgid "Has an image?"
msgstr "Dispose d'une image ?"
-#: forms.py:703
+#: forms.py:903
msgid "Warehouse (location)"
msgstr "Lieu de conservation (localisation)"
-#: forms.py:709
+#: forms.py:909
msgid "Warehouse (responsible)"
msgstr "Lieu de conservation (responsable)"
-#: forms.py:714
+#: forms.py:914
msgid "Container ID"
msgstr "Identifiant du contenant"
-#: forms.py:715
+#: forms.py:915
msgid "Container ref."
msgstr "Réf. contenant"
-#: forms.py:720 forms.py:744 views.py:185
+#: forms.py:920 forms.py:944 views.py:185
msgid "Find search"
msgstr "Rechercher un mobilier"
-#: forms.py:769 models_treatments.py:258
-#: templates/ishtar/sheet_treatment.html:56
+#: forms.py:969 forms.py:1114 models_treatments.py:271
+#: templates/ishtar/sheet_treatment.html:61
msgid "Upstream finds"
msgstr "Mobilier amont"
-#: forms.py:771 models_finds.py:1090
+#: forms.py:971 models_finds.py:1107 models_treatments.py:156
#: templates/ishtar/forms/qa_find_treatment.html:11
msgid "Finds"
msgstr "Mobilier"
-#: forms.py:783
+#: forms.py:983
msgid "You should at least select one archaeological find."
msgstr "Vous devez sélectionner au moins un mobilier archéologique."
-#: forms.py:886
-msgid "Resulting find"
-msgstr "Mobilier résultant"
-
-#: forms.py:891
+#: forms.py:1091
msgid "Precise description"
msgstr "Description précise"
-#: forms.py:905
-msgid "Resulting finds"
-msgstr "Mobiliers résultants"
-
-#: forms.py:910
+#: forms.py:1110
msgid "Would you like to delete this find?"
msgstr "Voulez-vous supprimer ce mobilier ?"
-#: forms.py:914 models_treatments.py:68
-msgid "Upstream find"
-msgstr "Mobilier amont"
-
-#: forms.py:925
+#: forms.py:1147
msgid "Find basket - 001 - Search"
msgstr "Panier mobilier - 001 - Recherche"
-#: forms.py:937 views.py:122
+#: forms.py:1159 views.py:122
msgid "Basket search"
msgstr "Recherche de panier"
-#: forms.py:951
+#: forms.py:1173
msgid "Find basket"
msgstr "Panier de mobilier"
-#: forms.py:953 forms_treatments.py:54 forms_treatments.py:97
-#: models_treatments.py:118 templates/ishtar/sheet_find.html:179
-#: templates/ishtar/sheet_find.html:217
+#: forms.py:1175 forms_treatments.py:54 forms_treatments.py:124
+#: models_treatments.py:122 templates/ishtar/sheet_find.html:248
+#: templates/ishtar/sheet_find.html:285 templates/ishtar/sheet_find.html:323
msgid "Label"
msgstr "Dénomination"
-#: forms.py:972
+#: forms.py:1194
msgid "Another basket already exists with this name."
msgstr "Un autre panier existant utilise déjà ce nom."
-#: forms_treatments.py:55 forms_treatments.py:100 models_treatments.py:120
+#: forms_treatments.py:55 forms_treatments.py:127 models_treatments.py:124
msgid "Other ref."
msgstr "Autre réf."
-#: forms_treatments.py:57 forms_treatments.py:232 forms_treatments.py:424
-#: forms_treatments.py:486 forms_treatments.py:499 forms_treatments.py:603
-#: forms_treatments.py:691 forms_treatments.py:758 models_treatments.py:123
-#: models_treatments.py:583
+#: forms_treatments.py:57 forms_treatments.py:260 forms_treatments.py:452
+#: forms_treatments.py:514 forms_treatments.py:527 forms_treatments.py:631
+#: forms_treatments.py:719 forms_treatments.py:786 models_treatments.py:127
+#: models_treatments.py:745
msgid "Index"
msgstr "Index"
-#: forms_treatments.py:58 forms_treatments.py:106 forms_treatments.py:378
-#: forms_treatments.py:440 models_finds.py:106 models_treatments.py:128
-#: models_treatments.py:359
+#: forms_treatments.py:58 forms_treatments.py:98 forms_treatments.py:406
+#: forms_treatments.py:468 models_finds.py:111 models_treatments.py:132
+#: models_treatments.py:521
msgid "Treatment type"
msgstr "Type de traitement"
-#: forms_treatments.py:71 views.py:420
+#: forms_treatments.py:71 views.py:439
msgid "Treatment search"
msgstr "Rechercher un traitement"
-#: forms_treatments.py:83
-msgid "Base treatment"
-msgstr "Traitement de base"
+#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:178
+#: models_treatments.py:513 templates/ishtar/sheet_treatment.html:4
+msgid "Treatment"
+msgstr "Traitement"
#: forms_treatments.py:84
msgid "Treatment - 020 - General"
msgstr "Traitement - 020 - Général"
-#: forms_treatments.py:108 models_treatments.py:70 models_treatments.py:130
-#: templates/ishtar/sheet_find.html:181 templates/ishtar/sheet_find.html:219
+#: forms_treatments.py:100 models_treatments.py:72 models_treatments.py:134
+#: templates/ishtar/sheet_find.html:250 templates/ishtar/sheet_find.html:287
+#: templates/ishtar/sheet_find.html:325
msgid "State"
msgstr "État"
-#: forms_treatments.py:110
-msgid "Target"
-msgstr "Destination"
+#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:524
+msgid "Location"
+msgstr "Localisation"
-#: forms_treatments.py:112 forms_treatments.py:301 forms_treatments.py:561
-#: models_treatments.py:71 models_treatments.py:138
+#: forms_treatments.py:113 forms_treatments.py:329 forms_treatments.py:589
+#: models_treatments.py:73 models_treatments.py:142
msgid "Responsible"
msgstr "Responsable"
-#: forms_treatments.py:118 forms_treatments.py:307 models_treatments.py:141
+#: forms_treatments.py:119 forms_treatments.py:335 models_treatments.py:145
msgid "Organization"
msgstr "Organisation"
-#: forms_treatments.py:124 models_treatments.py:133 models_treatments.py:362
-msgid "Location"
-msgstr "Localisation"
+#: forms_treatments.py:133 forms_treatments.py:398 forms_treatments.py:614
+#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:765
+msgid "Closing date"
+msgstr "Date de clôture"
-#: forms_treatments.py:130
+#: forms_treatments.py:136
msgid "Container (relevant for packaging)"
msgstr "Contenant (pertinent dans le cadre du conditionnement)"
-#: forms_treatments.py:136 forms_treatments.py:557
-msgid "External ref."
-msgstr "Référence"
-
-#: forms_treatments.py:137 models_treatments.py:147
+#: forms_treatments.py:141 models_treatments.py:151
msgid "Goal"
msgstr "But"
-#: forms_treatments.py:145 forms_treatments.py:370 forms_treatments.py:586
-#: forms_treatments.py:639 models_treatments.py:149 models_treatments.py:603
-msgid "Closing date"
-msgstr "Date de clôture"
-
#: forms_treatments.py:147
#, python-brace-format
msgid "Estimated cost ({currency})"
@@ -650,11 +680,7 @@ msgstr "Coût réalisé ({currency})"
msgid "Insurance cost ({currency})"
msgstr "Coût d''assurance ({currency})"
-#: forms_treatments.py:180
-msgid "Single find"
-msgstr "Mobilier isolé"
-
-#: forms_treatments.py:204
+#: forms_treatments.py:206
msgid ""
"The container field is attached to the treatment. If no packaging treatment "
"is done it is not relevant."
@@ -662,34 +688,42 @@ msgstr ""
"Le champ concernant le contenant est rattaché au traitement. Si aucun "
"conditionnement n'est réalisé, il n'est pas pertinent."
-#: forms_treatments.py:209
+#: forms_treatments.py:211
msgid "If a packaging treatment is done, the container field must be filled."
msgstr ""
"Si un conditionnement est fait, le champ du contenant doit être rempli."
-#: forms_treatments.py:213
+#: forms_treatments.py:215
msgid "A responsible or an organization must be defined."
msgstr "Un responsable ou une organisation doit être défini."
-#: forms_treatments.py:256
+#: forms_treatments.py:234
+msgid "Treatment n-1 - 020 - General"
+msgstr "Traitement n-1 - 020 - Général"
+
+#: forms_treatments.py:247
+msgid "Treatment 1-n - 020 - General"
+msgstr "Traitement 1-n - 020 - Général"
+
+#: forms_treatments.py:284
msgid "Another treatment with this index exists for {}."
msgstr "Un autre traitement avec cet index existe pour {}."
-#: forms_treatments.py:262 models_treatments.py:126
+#: forms_treatments.py:290 models_treatments.py:130
msgid "Associated request"
msgstr "Demande associée"
-#: forms_treatments.py:263
+#: forms_treatments.py:291
msgid "Treatment - 010 - Request choice"
msgstr "Traitement - 010 - Choix de la demande de traitement"
-#: forms_treatments.py:268 forms_treatments.py:541 ishtar_menu.py:95
-#: models_treatments.py:618 models_treatments.py:646
-#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:207
+#: forms_treatments.py:296 forms_treatments.py:569 ishtar_menu.py:95
+#: models_treatments.py:780 models_treatments.py:808
+#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:457
msgid "Treatment request"
msgstr "Demande de traitement"
-#: forms_treatments.py:277
+#: forms_treatments.py:305
msgid ""
"Are you sure you want to delete this treatment? All changes made to the "
"associated finds since this treatment record will be lost!"
@@ -698,190 +732,196 @@ msgstr ""
"sur le mobilier associé réalisées depuis l'enregistrement de ce traitement "
"seront perdues !"
-#: forms_treatments.py:280
+#: forms_treatments.py:308
msgid "Would you like to delete this treatment?"
msgstr "Voulez-vous supprimer ce traitement ?"
-#: forms_treatments.py:285 models_finds.py:683 models_finds.py:1000
-#: models_treatments.py:150 models_treatments.py:363
-#: templates/ishtar/sheet_find.html:184 templates/ishtar/sheet_find.html:222
+#: forms_treatments.py:313 models_finds.py:697 models_finds.py:1017
+#: models_treatments.py:158 models_treatments.py:525
+#: templates/ishtar/sheet_find.html:253 templates/ishtar/sheet_find.html:290
+#: templates/ishtar/sheet_find.html:328
msgid "Container"
msgstr "Contenant"
-#: forms_treatments.py:291
+#: forms_treatments.py:319
msgid "Create a treatment"
msgstr "Créer un traitement"
-#: forms_treatments.py:298
+#: forms_treatments.py:326
msgid "Precise date"
msgstr "Date précise"
-#: forms_treatments.py:340
+#: forms_treatments.py:368
msgid "At least a year is required."
msgstr "Au minimum une année doit être précisée."
-#: forms_treatments.py:369
+#: forms_treatments.py:397
msgid "months"
msgstr "mois"
-#: forms_treatments.py:369
+#: forms_treatments.py:397
msgid "years"
msgstr "années"
-#: forms_treatments.py:374 forms_treatments.py:643
+#: forms_treatments.py:402 forms_treatments.py:671
msgid "Slicing"
msgstr "Découpage"
-#: forms_treatments.py:377 forms_treatments.py:646
+#: forms_treatments.py:405 forms_treatments.py:674
msgid "Date get from"
msgstr "Date utilisée"
-#: forms_treatments.py:380 forms_treatments.py:649
+#: forms_treatments.py:408 forms_treatments.py:677
msgid "Date after"
msgstr "Date après"
-#: forms_treatments.py:382 forms_treatments.py:651
+#: forms_treatments.py:410 forms_treatments.py:679
msgid "Date before"
msgstr "Date avant"
-#: forms_treatments.py:425 forms_treatments.py:475 forms_treatments.py:692
-#: forms_treatments.py:747
+#: forms_treatments.py:453 forms_treatments.py:503 forms_treatments.py:720
+#: forms_treatments.py:775
msgid "Act type"
msgstr "Type d'acte"
-#: forms_treatments.py:426 forms_treatments.py:693
+#: forms_treatments.py:454 forms_treatments.py:721
msgid "Indexed?"
msgstr "Indexé ?"
-#: forms_treatments.py:427 forms_treatments.py:694
+#: forms_treatments.py:455 forms_treatments.py:722
msgid "Object"
msgstr "Objet"
-#: forms_treatments.py:431 forms_treatments.py:698
+#: forms_treatments.py:459 forms_treatments.py:726
msgid "Signature date after"
msgstr "Date de signature après"
-#: forms_treatments.py:433 forms_treatments.py:700
+#: forms_treatments.py:461 forms_treatments.py:728
msgid "Signature date before"
msgstr "Date de signature avant"
-#: forms_treatments.py:435
+#: forms_treatments.py:463
msgid "Treatment name"
msgstr "Nom du traitement"
-#: forms_treatments.py:436
+#: forms_treatments.py:464
msgid "Treatment year"
msgstr "Année du traitement"
-#: forms_treatments.py:437
+#: forms_treatments.py:465
msgid "Treatment index"
msgstr "Index du traitement"
-#: forms_treatments.py:439
+#: forms_treatments.py:467
msgid "Treatment internal reference"
msgstr "Référence interne du traitement"
-#: forms_treatments.py:443 forms_treatments.py:714
+#: forms_treatments.py:471 forms_treatments.py:742
msgid "Modified by"
msgstr "Modifié par"
-#: forms_treatments.py:473
+#: forms_treatments.py:501
msgid "Treatment - Administrative act - General"
msgstr "Traitement - Acte administratif - Général"
-#: forms_treatments.py:496 forms_treatments.py:548 models_treatments.py:588
+#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:750
msgid "Name"
msgstr "Nom"
-#: forms_treatments.py:497 forms_treatments.py:555
+#: forms_treatments.py:525 forms_treatments.py:583
msgid "Internal ref."
msgstr "Réf. interne"
-#: forms_treatments.py:500 forms_treatments.py:559 models_treatments.py:69
-#: templates/ishtar/sheet_find.html:180 templates/ishtar/sheet_find.html:218
+#: forms_treatments.py:528 forms_treatments.py:587 models_treatments.py:71
+#: templates/ishtar/sheet_find.html:249 templates/ishtar/sheet_find.html:286
+#: templates/ishtar/sheet_find.html:324
msgid "Type"
msgstr "Type"
-#: forms_treatments.py:503
+#: forms_treatments.py:531
msgid "In charge"
msgstr "Responsable"
-#: forms_treatments.py:509 forms_treatments.py:567 models_treatments.py:597
+#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:759
#: templates/ishtar/sheet_treatmentfile.html:45
msgid "Applicant"
msgstr "Demandeur"
-#: forms_treatments.py:515 forms_treatments.py:573 models_treatments.py:601
+#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:763
#: templates/ishtar/sheet_treatmentfile.html:53
msgid "Applicant organisation"
msgstr "Organisation du demandeur"
-#: forms_treatments.py:529 views.py:524
+#: forms_treatments.py:557 views.py:572
msgid "Treatment request search"
msgstr "Rechercher une demande de traitement"
-#: forms_treatments.py:584 forms_treatments.py:638 models_treatments.py:607
+#: forms_treatments.py:585
+msgid "External ref."
+msgstr "Référence"
+
+#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:769
msgid "Reception date"
msgstr "Date de réception"
-#: forms_treatments.py:626
+#: forms_treatments.py:654
msgid "Another treatment request with this index exists for {}."
msgstr "Une autre demande de traitement avec cet index existe pour {}."
-#: forms_treatments.py:632
+#: forms_treatments.py:660
msgid "Are you sure you want to delete this treatment request?"
msgstr "Êtes-vous sûr de vouloir supprimer cette demande de traitement ? "
-#: forms_treatments.py:633
+#: forms_treatments.py:661
msgid "Would you like to delete this treatment request?"
msgstr "Voulez-vous supprimer cette demande de traitement ?"
-#: forms_treatments.py:637 models_treatments.py:605
+#: forms_treatments.py:665 models_treatments.py:767
msgid "Creation date"
msgstr "Date de création"
-#: forms_treatments.py:647 forms_treatments.py:711 models_treatments.py:519
-#: models_treatments.py:590
+#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:681
+#: models_treatments.py:752
msgid "Treatment request type"
msgstr "Type de demande de traitement"
-#: forms_treatments.py:703
+#: forms_treatments.py:731
msgid "Treatment request name"
msgstr "Nom du dossier de traitement"
-#: forms_treatments.py:705
+#: forms_treatments.py:733
msgid "Treatment request year"
msgstr "Année du dossier de traitement"
-#: forms_treatments.py:707
+#: forms_treatments.py:735
msgid "Treatment request index"
msgstr "Index de la demande de traitement"
-#: forms_treatments.py:709
+#: forms_treatments.py:737
msgid "Treatment request internal reference"
msgstr "Référence interne de la demande de traitement"
-#: forms_treatments.py:745
+#: forms_treatments.py:773
msgid "Treatment request - Administrative act - General"
msgstr "Demande de traitement - Acte administratif - Général"
#: ishtar_menu.py:37 ishtar_menu.py:60 ishtar_menu.py:100 ishtar_menu.py:123
-#: ishtar_menu.py:155 ishtar_menu.py:179
+#: ishtar_menu.py:152 ishtar_menu.py:191
msgid "Search"
msgstr "Recherche"
#: ishtar_menu.py:42 ishtar_menu.py:65 ishtar_menu.py:105 ishtar_menu.py:127
-#: ishtar_menu.py:160 ishtar_menu.py:183
+#: ishtar_menu.py:195
msgid "Creation"
msgstr "Ajout"
#: ishtar_menu.py:47 ishtar_menu.py:70 ishtar_menu.py:110 ishtar_menu.py:131
-#: ishtar_menu.py:165 ishtar_menu.py:188
+#: ishtar_menu.py:178 ishtar_menu.py:200
msgid "Modification"
msgstr "Modification"
#: ishtar_menu.py:52 ishtar_menu.py:82 ishtar_menu.py:115 ishtar_menu.py:134
-#: ishtar_menu.py:170 ishtar_menu.py:191
+#: ishtar_menu.py:183 ishtar_menu.py:203
msgid "Deletion"
msgstr "Suppression"
@@ -889,23 +929,33 @@ msgstr "Suppression"
msgid "Manage items"
msgstr "Gestion des éléments"
-#: ishtar_menu.py:120 ishtar_menu.py:176 models_finds.py:1719
+#: ishtar_menu.py:120 ishtar_menu.py:188 models_finds.py:1741
msgid "Administrative act"
msgstr "Acte administratif"
-#: ishtar_menu.py:138 ishtar_menu.py:195 models_finds.py:1081
-#: models_treatments.py:163 models_treatments.py:611
+#: ishtar_menu.py:138 ishtar_menu.py:207 models_finds.py:1098
+#: models_treatments.py:171 models_treatments.py:773
+#: templates/ishtar/sheet_find.html:56
msgid "Documents"
msgstr "Documents"
-#: ishtar_menu.py:147 models_treatments.py:170 models_treatments.py:351
-#: templates/ishtar/sheet_treatment.html:4
-msgid "Treatment"
-msgstr "Traitement"
+#: ishtar_menu.py:158
+msgid ""
+"Treatment 1 1 - creation"
+msgstr ""
+"Traitement 1 1 - création"
+
+#: ishtar_menu.py:165
+msgid ""
+"Treatment n 1 - creation"
+msgstr ""
+"Traitement n 1 - création"
-#: ishtar_menu.py:152
-msgid "Simple treatments"
-msgstr "Traitements simples"
+#: ishtar_menu.py:172
+msgid ""
+"Treatment 1 n - creation"
+msgstr ""
+"Traitement 1 n - création"
#: models_finds.py:51
msgid "Code"
@@ -915,9 +965,9 @@ msgstr "Code"
msgid "Recommendation"
msgstr "Recommandation"
-#: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:138
-#: models_finds.py:161 models_finds.py:218 models_finds.py:967
-#: models_treatments.py:355
+#: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:143
+#: models_finds.py:166 models_finds.py:223 models_finds.py:984
+#: models_treatments.py:517
msgid "Order"
msgstr "Ordre"
@@ -941,578 +991,608 @@ msgstr "Types d'état de conservation"
msgid "Virtual"
msgstr "Virtuel"
-#: models_finds.py:95
+#: models_finds.py:94
+msgid "Destructive"
+msgstr "Destructif"
+
+#: models_finds.py:96
+msgid "Create a new find"
+msgstr "Créer un nouvel élément"
+
+#: models_finds.py:97
+msgid ""
+"If True when this treatment is applied a new version of the object will be "
+"created."
+msgstr ""
+"Si mis à Vrai quand le traitement est appliqué une nouvelle version de "
+"l'objet sera créé."
+
+#: models_finds.py:100
msgid "Upstream is many"
msgstr "Les éléments amont sont multiples"
-#: models_finds.py:97
+#: models_finds.py:102
msgid "Check this if for this treatment from many finds you'll get one."
msgstr ""
"Cochez cela si, pour ce traitement, à partir de plusieurs éléments vous en "
"obtenez un seul."
-#: models_finds.py:100
+#: models_finds.py:105
msgid "Downstream is many"
msgstr "Les éléments aval sont multiples"
-#: models_finds.py:102
+#: models_finds.py:107
msgid "Check this if for this treatment from one find you'll get many."
msgstr ""
"Cochez cela si, pour ce traitement, à partir d'un seul élément vous en "
"obtenez plusieurs."
-#: models_finds.py:107 models_treatments.py:240
+#: models_finds.py:112 models_treatments.py:253
msgid "Treatment types"
msgstr "Types de traitement"
-#: models_finds.py:117
+#: models_finds.py:122
msgid "Integrity / interest type"
msgstr "Type d'intégrité / intérêt"
-#: models_finds.py:118
+#: models_finds.py:123
msgid "Integrity / interest types"
msgstr "Types d'intégrité / intérêt"
-#: models_finds.py:128
+#: models_finds.py:133
msgid "Remarkability type"
msgstr "Type de remarquabilité"
-#: models_finds.py:129
+#: models_finds.py:134
msgid "Remarkability types"
msgstr "Types de remarquabilité"
-#: models_finds.py:140
+#: models_finds.py:145
msgid "Batch type"
msgstr "Type de lot"
-#: models_finds.py:141
+#: models_finds.py:146
msgid "Batch types"
msgstr "Types de lot"
-#: models_finds.py:164
+#: models_finds.py:169
msgid "Object type quality type"
msgstr "Type de qualité du type d'objet"
-#: models_finds.py:165
+#: models_finds.py:170
msgid "Object type quality types"
msgstr "Types de qualité du type d'objet"
-#: models_finds.py:175
+#: models_finds.py:180
msgid "Alteration type"
msgstr "Type d'altération"
-#: models_finds.py:176
+#: models_finds.py:181
msgid "Alteration types"
msgstr "Types d'altération"
-#: models_finds.py:186
+#: models_finds.py:191
msgid "Alteration cause type"
msgstr "Type de cause d'altération"
-#: models_finds.py:187
+#: models_finds.py:192
msgid "Alteration cause types"
msgstr "Types de cause d'altération"
-#: models_finds.py:197
+#: models_finds.py:202
msgid "Treatment emergency type"
msgstr "Type d'urgence du traitement"
-#: models_finds.py:198
+#: models_finds.py:203
msgid "Treatment emergency types"
msgstr "Types d'urgence du traitement"
-#: models_finds.py:208
+#: models_finds.py:213
msgid "Communicability type"
msgstr "Type de communicabilité"
-#: models_finds.py:209
+#: models_finds.py:214
msgid "Communicability types"
msgstr "Types de communicabilité"
-#: models_finds.py:221
+#: models_finds.py:226
msgid "Checked type"
msgstr "Type de vérification"
-#: models_finds.py:222
+#: models_finds.py:227
msgid "Checked types"
msgstr "Types de vérification"
-#: models_finds.py:254 models_finds.py:960 models_treatments.py:143
-#: models_treatments.py:586
+#: models_finds.py:259 models_finds.py:977 models_treatments.py:147
+#: models_treatments.py:748
msgid "External ID"
msgstr "Identifiant"
-#: models_finds.py:256 models_finds.py:962
+#: models_finds.py:261 models_finds.py:979
msgid "External ID is set automatically"
msgstr "L'identifiant est attribué automatiquement"
-#: models_finds.py:260
+#: models_finds.py:265
msgid "Special interest"
msgstr "Intérêt spécifique"
-#: models_finds.py:264
+#: models_finds.py:269
msgid "Context Record"
msgstr "Unité d'Enregistrement"
-#: models_finds.py:272
+#: models_finds.py:277
msgid "Material index"
msgstr "Index matériel"
-#: models_finds.py:289
+#: models_finds.py:294
msgid "Point (3D)"
msgstr "Point (3D)"
-#: models_finds.py:295 models_finds.py:298
+#: models_finds.py:300 models_finds.py:303
msgid "Cached value - do not edit"
msgstr "Valeur en cache - ne pas éditer"
-#: models_finds.py:308 models_finds.py:958
+#: models_finds.py:313 models_finds.py:975
msgid "Base find"
msgstr "Mobilier d'origine"
-#: models_finds.py:309
+#: models_finds.py:314
msgid "Base finds"
msgstr "Mobilier d'origine"
-#: models_finds.py:565
+#: models_finds.py:579
msgid "g"
msgstr "g"
-#: models_finds.py:566
+#: models_finds.py:580
msgid "kg"
msgstr "kg"
-#: models_finds.py:592 views.py:301
+#: models_finds.py:606 views.py:323
msgid "Manage basket"
msgstr "Gérer un panier"
-#: models_finds.py:661
+#: models_finds.py:675
msgid "Base find - Short ID"
msgstr "Mobilier d'origine - ID court"
-#: models_finds.py:662
+#: models_finds.py:676
msgid "Base find - Complete ID"
msgstr "Mobilier d'origine - ID complet"
-#: models_finds.py:664
+#: models_finds.py:678
msgid "Operation (code)"
msgstr "Opération (code)"
-#: models_finds.py:666
+#: models_finds.py:680
msgid "Town"
msgstr "Ville"
-#: models_finds.py:668
+#: models_finds.py:682
msgid "Operation (name)"
msgstr "Opération (nom)"
-#: models_finds.py:672
+#: models_finds.py:686
msgid "Parcel"
msgstr "Parcelle"
-#: models_finds.py:673
+#: models_finds.py:687
msgid "Batch"
msgstr "Lot"
-#: models_finds.py:674
+#: models_finds.py:688
msgid "Base find - Comment"
msgstr "Mobilier d'origine - Commentaires"
-#: models_finds.py:675
+#: models_finds.py:689
msgid "Base find - Description"
msgstr "Mobilier d'origine - Description"
-#: models_finds.py:676
+#: models_finds.py:690
msgid "Base find - Topographic localisation"
msgstr "Mobilier d'origine - Localisation topographique"
-#: models_finds.py:678
+#: models_finds.py:692
msgid "Base find - Special interest"
msgstr "Mobilier d'origine - Intérêt spécifique"
-#: models_finds.py:680
+#: models_finds.py:694
msgid "Base find - Discovery date (exact or TPQ)"
msgstr "Mobilier d'origine - Date de découverte (exacte ou TPQ)"
-#: models_finds.py:682
+#: models_finds.py:696
msgid "Base find - Discovery date (TAQ)"
msgstr "Mobilier d'origine - Date de découverte (TAQ)"
-#: models_finds.py:684
+#: models_finds.py:698
msgid "Periods"
msgstr "Périodes"
-#: models_finds.py:760
+#: models_finds.py:774
msgctxt "key for text search"
msgid "short-id"
msgstr "id-court"
-#: models_finds.py:764
+#: models_finds.py:778
msgctxt "key for text search"
msgid "complete-id"
msgstr "id-complet"
-#: models_finds.py:768
+#: models_finds.py:782
msgctxt "key for text search"
msgid "free-id"
msgstr "id-libre"
-#: models_finds.py:772
+#: models_finds.py:786
msgctxt "key for text search"
msgid "denomination"
msgstr "denomination"
-#: models_finds.py:776
+#: models_finds.py:790
msgctxt "key for text search"
msgid "town"
msgstr "commune"
-#: models_finds.py:780 models_treatments.py:87 models_treatments.py:551
+#: models_finds.py:794 models_treatments.py:91 models_treatments.py:713
msgctxt "key for text search"
msgid "year"
msgstr "annee"
-#: models_finds.py:784
+#: models_finds.py:798
msgctxt "key for text search"
msgid "operation-code"
msgstr "operation-code"
-#: models_finds.py:788
+#: models_finds.py:802
msgctxt "key for text search"
msgid "code-patriarche"
msgstr "code-patriarche"
-#: models_finds.py:792
+#: models_finds.py:806
msgctxt "key for text search"
msgid "operation-type"
msgstr "operation-type"
-#: models_finds.py:797
+#: models_finds.py:811
msgctxt "key for text search"
msgid "area"
msgstr "zone"
-#: models_finds.py:801
+#: models_finds.py:815
msgctxt "key for text search"
msgid "site"
msgstr "site"
-#: models_finds.py:806 models_finds.py:945
+#: models_finds.py:820 models_finds.py:962
msgctxt "key for text search"
msgid "context-record-site"
msgstr "ue-site"
-#: models_finds.py:811 models_finds.py:939
+#: models_finds.py:825 models_finds.py:956
msgctxt "key for text search"
msgid "context-record"
msgstr "ue"
-#: models_finds.py:815
+#: models_finds.py:829
msgctxt "key for text search"
msgid "operation-relation-type"
msgstr "operation-type-relation"
-#: models_finds.py:819
+#: models_finds.py:833
msgctxt "key for text search"
msgid "context-record-relation-type"
msgstr "ue-type-relation"
-#: models_finds.py:823
+#: models_finds.py:837
msgctxt "key for text search"
msgid "period"
msgstr "periode"
-#: models_finds.py:827
+#: models_finds.py:841
msgctxt "key for text search"
msgid "material"
msgstr "materiau"
-#: models_finds.py:831
+#: models_finds.py:845
msgctxt "key for text search"
msgid "object-type"
msgstr "type-objet"
-#: models_finds.py:835
+#: models_finds.py:849
msgctxt "key for text search"
msgid "preservation"
msgstr "preservation"
-#: models_finds.py:839
+#: models_finds.py:853
msgctxt "key for text search"
msgid "conservatory"
msgstr "conservation"
-#: models_finds.py:843
+#: models_finds.py:857
msgctxt "key for text search"
msgid "integrity"
msgstr "integrite"
-#: models_finds.py:847
+#: models_finds.py:861
msgctxt "key for text search"
msgid "remarkability"
msgstr "remarquabilite"
-#: models_finds.py:851
+#: models_finds.py:865
msgctxt "key for text search"
msgid "description"
msgstr "description"
-#: models_finds.py:855
+#: models_finds.py:869
msgctxt "key for text search"
msgid "batch"
msgstr "lot"
-#: models_finds.py:859
+#: models_finds.py:873
msgctxt "key for text search"
msgid "checked"
msgstr "verifie"
-#: models_finds.py:863 models_treatments.py:95
+#: models_finds.py:877 models_treatments.py:99
msgctxt "key for text search"
msgid "has-image"
msgstr "a-une-image"
-#: models_finds.py:867 models_finds.py:942
+#: models_finds.py:881 models_finds.py:959
msgctxt "key for text search"
msgid "location"
msgstr "localisation"
-#: models_finds.py:871
+#: models_finds.py:885
msgctxt "key for text search"
msgid "warehouse"
msgstr "depot"
-#: models_finds.py:875
+#: models_finds.py:889
msgctxt "key for text search"
msgid "container-index"
msgstr "contenant-index"
-#: models_finds.py:879
+#: models_finds.py:893
msgctxt "key for text search"
msgid "container-ref"
msgstr "contenant-ref"
-#: models_finds.py:883
+#: models_finds.py:897 wizards.py:392
msgctxt "key for text search"
msgid "basket"
msgstr "panier"
-#: models_finds.py:887 models_finds.py:936
+#: models_finds.py:901 models_finds.py:953
msgctxt "key for text search"
msgid "operation"
msgstr "operation"
-#: models_finds.py:891
+#: models_finds.py:905
msgctxt "key for text search"
msgid "last-modified-by"
msgstr "modifie-en-dernier-par"
-#: models_finds.py:895
+#: models_finds.py:909
msgctxt "key for text search"
msgid "modified-since"
msgstr "modifie-depuis"
-#: models_finds.py:919
+#: models_finds.py:913
+msgctxt "key for text search"
+msgid "created-by"
+msgstr "cree-par"
+
+#: models_finds.py:936
msgid "Bulk update"
msgstr "Mise à jour multiple"
-#: models_finds.py:930 models_finds.py:1180
-#: templates/ishtar/forms/qa_find_treatment.html:16 views.py:666
+#: models_finds.py:947 models_finds.py:1200
+#: templates/ishtar/forms/qa_find_treatment.html:16 views.py:714
msgid "Packaging"
msgstr "Conditionnement"
-#: models_finds.py:986
+#: models_finds.py:1003
msgid "Weight"
msgstr "Poids"
-#: models_finds.py:987
+#: models_finds.py:1004
msgid "Weight unit"
msgstr "Unité de poids"
-#: models_finds.py:993 templates/ishtar/sheet_find.html:174
+#: models_finds.py:1010 templates/ishtar/sheet_find.html:280
msgid "Upstream treatment"
msgstr "Traitement amont"
-#: models_finds.py:996 templates/ishtar/sheet_find.html:212
+#: models_finds.py:1013 templates/ishtar/sheet_find.html:318
msgid "Downstream treatment"
msgstr "Traitement aval"
-#: models_finds.py:1031
+#: models_finds.py:1048
msgid "Clutter - long side (cm)"
msgstr "Encombrement - grand côté (cm)"
-#: models_finds.py:1033
+#: models_finds.py:1050
msgid "Clutter - short side (cm)"
msgstr "Encombrement - petit côté (cm)"
-#: models_finds.py:1035
+#: models_finds.py:1052
msgid "Clutter - height (cm)"
msgstr "Encombrement - hauteur (cm)"
-#: models_finds.py:1051
+#: models_finds.py:1068
msgid "Collection"
msgstr "Collection"
-#: models_finds.py:1083 models_treatments.py:165 models_treatments.py:613
+#: models_finds.py:1100 models_treatments.py:173 models_treatments.py:775
msgid "Cached name"
msgstr "Nom en cache"
-#: models_finds.py:1105
+#: models_finds.py:1122
msgid "FIND"
msgstr "MOBILIER"
-#: models_finds.py:1174
+#: models_finds.py:1194
msgid "Add to basket"
msgstr "Ajouter au panier"
-#: models_finds.py:1222 wizards.py:74 wizards.py:219
+#: models_finds.py:1242 wizards.py:85 wizards.py:469
msgid "Operation"
msgstr "Opération (OA)"
-#: models_finds.py:1544
+#: models_finds.py:1566
msgid "No container have been set - the localisation cannot be set."
msgstr ""
"Aucun contenant n'a été défini - la localisation ne peut être définie."
-#: models_finds.py:1550
+#: models_finds.py:1572
msgid "The division number {} have not been set for the warehouse {}."
msgstr ""
"La division numéro {} n'a pas été définie pour le lieu de conservation {}."
-#: models_finds.py:1720
+#: models_finds.py:1742
msgid "Person"
msgstr "Individu"
-#: models_finds.py:1726
+#: models_finds.py:1748
msgid "Property"
msgstr "Propriété"
-#: models_finds.py:1727
+#: models_finds.py:1749
msgid "Properties"
msgstr "Propriétés"
-#: models_treatments.py:42
+#: models_treatments.py:44
msgid "Treatment state type"
msgstr "Type d'état de traitement"
-#: models_treatments.py:43
+#: models_treatments.py:45
msgid "Treatment state types"
msgstr "Types d'état de traitement"
-#: models_treatments.py:67
+#: models_treatments.py:69
msgid "Downstream find"
msgstr "Mobilier aval"
-#: models_treatments.py:79
+#: models_treatments.py:70
+msgid "Upstream find"
+msgstr "Mobilier amont"
+
+#: models_treatments.py:83
msgctxt "key for text search"
msgid "label"
msgstr "libelle"
-#: models_treatments.py:83
+#: models_treatments.py:87
msgctxt "key for text search"
msgid "other-reference"
msgstr "autre-reference"
-#: models_treatments.py:91 models_treatments.py:555
+#: models_treatments.py:95 models_treatments.py:717
msgctxt "key for text search"
msgid "index"
msgstr "index"
-#: models_treatments.py:99 models_treatments.py:559
+#: models_treatments.py:103 models_treatments.py:721
msgctxt "key for text search"
msgid "type"
msgstr "type"
-#: models_treatments.py:135
+#: models_treatments.py:139
msgid "Location where the treatment is done. Target warehouse for a move."
msgstr ""
"Endroit où le traitement est réalisé. Renseignez le lieu de conservation de "
"destination pour un déplacement."
-#: models_treatments.py:152
+#: models_treatments.py:157
+msgid "Related finds for non-destructive treatment"
+msgstr "Mobilier associé pour les traitements non-destructifs"
+
+#: models_treatments.py:160
msgid "Estimated cost"
msgstr "Coût estimé"
-#: models_treatments.py:154
+#: models_treatments.py:162
msgid "Quoted cost"
msgstr "Coût devisé"
-#: models_treatments.py:156
+#: models_treatments.py:164
msgid "Realized cost"
msgstr "Coût réalisé"
-#: models_treatments.py:158
+#: models_treatments.py:166
msgid "Insurance cost"
msgstr "Coût d'assurance"
-#: models_treatments.py:160
+#: models_treatments.py:168
msgid "Target a basket"
msgstr "Appliquer à un panier"
-#: models_treatments.py:171 templates/ishtar/sheet_find.html:171
+#: models_treatments.py:179 templates/ishtar/sheet_find.html:243
#: templates/ishtar/sheet_treatmentfile.html:61
msgid "Treatments"
msgstr "Traitements"
-#: models_treatments.py:190
+#: models_treatments.py:199
msgid "TREATMENT"
msgstr "TRAITEMENT"
-#: models_treatments.py:249 templates/ishtar/sheet_treatment.html:61
+#: models_treatments.py:262 templates/ishtar/sheet_treatment.html:66
msgid "Downstream finds"
msgstr "Mobilier aval"
-#: models_treatments.py:364 templates/ishtar/sheet_find.html:183
-#: templates/ishtar/sheet_find.html:221
+#: models_treatments.py:526 templates/ishtar/sheet_find.html:252
+#: templates/ishtar/sheet_find.html:289 templates/ishtar/sheet_find.html:327
msgid "Doer"
msgstr "Opérateur"
-#: models_treatments.py:365 models_treatments.py:366
+#: models_treatments.py:527 models_treatments.py:528
+#: templates/ishtar/sheet_treatment.html:56
msgid "Related finds"
msgstr "Mobilier associé"
-#: models_treatments.py:508
+#: models_treatments.py:670
msgid "Is upstream"
msgstr "Est en amont"
-#: models_treatments.py:520
+#: models_treatments.py:682
msgid "Treatment request types"
msgstr "Types de demande de traitement"
-#: models_treatments.py:543
+#: models_treatments.py:705
msgctxt "key for text search"
msgid "name"
msgstr "nom"
-#: models_treatments.py:547
+#: models_treatments.py:709
msgctxt "key for text search"
msgid "reference"
msgstr "reference"
-#: models_treatments.py:563
+#: models_treatments.py:725
msgctxt "key for text search"
msgid "in-charge"
msgstr "responsable"
-#: models_treatments.py:567
+#: models_treatments.py:729
msgctxt "key for text search"
msgid "applicant"
msgstr "demandeur"
-#: models_treatments.py:571
+#: models_treatments.py:733
msgctxt "key for text search"
msgid "applicant-organisation"
msgstr "demandeur-organisation"
-#: models_treatments.py:584
+#: models_treatments.py:746
msgid "Internal reference"
msgstr "Référence interne"
-#: models_treatments.py:593
+#: models_treatments.py:755
msgid "Person in charge"
msgstr "Personne responsable"
-#: models_treatments.py:619
+#: models_treatments.py:781
msgid "Treatment requests"
msgstr "Demandes de traitement"
@@ -1528,45 +1608,45 @@ msgstr "Ajout"
msgid "Associate a treatment"
msgstr "Associer un traitement"
-#: templates/ishtar/sheet_basefind.html:6
+#: templates/ishtar/sheet_basefind.html:10
msgid "Internal ID"
msgstr "ID interne"
-#: templates/ishtar/sheet_basefind.html:21
+#: templates/ishtar/sheet_basefind.html:25
msgid "Discovery date"
msgstr "Date de découverte"
-#: templates/ishtar/sheet_basefind.html:24
+#: templates/ishtar/sheet_basefind.html:28
msgid "Discovery year"
msgstr "Date de découverte"
-#: templates/ishtar/sheet_basefind.html:27
+#: templates/ishtar/sheet_basefind.html:31
msgid "Discovery date (TPQ)"
msgstr "Date de découverte (TPQ)"
-#: templates/ishtar/sheet_basefind.html:52
+#: templates/ishtar/sheet_basefind.html:56
msgid "X:"
msgstr "X :"
-#: templates/ishtar/sheet_basefind.html:53
-#: templates/ishtar/sheet_basefind.html:55
#: templates/ishtar/sheet_basefind.html:57
+#: templates/ishtar/sheet_basefind.html:59
+#: templates/ishtar/sheet_basefind.html:61
msgid "error:"
msgstr "erreur :"
-#: templates/ishtar/sheet_basefind.html:54
+#: templates/ishtar/sheet_basefind.html:58
msgid "Y:"
msgstr "Y :"
-#: templates/ishtar/sheet_basefind.html:56
+#: templates/ishtar/sheet_basefind.html:60
msgid "Z:"
msgstr "Z :"
-#: templates/ishtar/sheet_basefind.html:60
+#: templates/ishtar/sheet_basefind.html:64
msgid "SRID"
msgstr "SRID"
-#: templates/ishtar/sheet_basefind.html:75
+#: templates/ishtar/sheet_basefind.html:79
msgid "Last modified by"
msgstr "Modifié en dernier par"
@@ -1578,39 +1658,57 @@ msgstr ""
"Cette fiche a un traitement aval associé, elle concerne une vieille version "
"de ce mobilier."
-#: templates/ishtar/sheet_find.html:29
-msgid "Associated base finds"
-msgstr "Mobilier d'origine associé"
+#: templates/ishtar/sheet_find.html:23
+msgid "Image / Base find"
+msgstr "Image / Mobilier d'origine"
-#: templates/ishtar/sheet_find.html:53
+#: templates/ishtar/sheet_find.html:30
+msgid "Identification / Description / Dimensions"
+msgstr "Identification / Description / Dimensions"
+
+#: templates/ishtar/sheet_find.html:38
+msgid "Datings / Preservation"
+msgstr "Datations / Préservation"
+
+#: templates/ishtar/sheet_find.html:47
+msgid "Warehouse / Treatments"
+msgstr "Lieu de conservation / Traitements"
+
+#: templates/ishtar/sheet_find.html:64
+msgid "Custom fields"
+msgstr "Champs personnalisés"
+
+#: templates/ishtar/sheet_find.html:123
msgid "Administrative index"
msgstr "Index administratif"
-#: templates/ishtar/sheet_find.html:95
+#: templates/ishtar/sheet_find.html:165
msgid "Checked"
msgstr "Vérifié"
-#: templates/ishtar/sheet_find.html:160
+#: templates/ishtar/sheet_find.html:232
msgid "Warehouse"
msgstr "Lieu de conservation"
-#: templates/ishtar/sheet_find.html:178 templates/ishtar/sheet_find.html:216
+#: templates/ishtar/sheet_find.html:247 templates/ishtar/sheet_find.html:284
+#: templates/ishtar/sheet_find.html:322
msgid "Year - index"
msgstr "Année - index"
-#: templates/ishtar/sheet_find.html:182 templates/ishtar/sheet_find.html:220
+#: templates/ishtar/sheet_find.html:251 templates/ishtar/sheet_find.html:288
+#: templates/ishtar/sheet_find.html:326
msgid "Related finds (max. 15 displayed)"
msgstr "Mobilier associé (max. 15 affichés)"
-#: templates/ishtar/sheet_find.html:208
+#: templates/ishtar/sheet_find.html:314
msgid "Export as CSV"
msgstr "Export en CSV"
-#: templates/ishtar/sheet_find.html:208 templates/ishtar/sheet_find.html:247
+#: templates/ishtar/sheet_find.html:314 templates/ishtar/sheet_find.html:353
msgid "CSV"
msgstr "CSV"
-#: templates/ishtar/sheet_find.html:252
+#: templates/ishtar/sheet_find.html:360
msgid "Associated documents"
msgstr "Documents associés"
@@ -1628,11 +1726,11 @@ msgctxt "Treatment"
msgid "Active"
msgstr "Actif"
-#: templates/ishtar/sheet_treatment.html:66
+#: templates/ishtar/sheet_treatment.html:71
msgid "Related operations"
msgstr "Opérations associées"
-#: templates/ishtar/sheet_treatment.html:77
+#: templates/ishtar/sheet_treatment.html:82
#: templates/ishtar/sheet_treatmentfile.html:73
msgid "Administrative acts"
msgstr "Actes administratifs"
@@ -1647,6 +1745,15 @@ msgctxt "Treatment request"
msgid "Active"
msgstr "Active"
+#: templates/ishtar/wizard/wizard_simplefind.html:6
+msgid ""
+"This find is related to many base finds. To edit field related to base finds "
+"edit the corresponding find between theses:"
+msgstr ""
+"Ce mobilier est associé à plusieurs mobiliers d'origine. Pour modifier les "
+"champs associés aux mobiliers d'origines, modifiez le mobilier correspondant "
+"parmi ceux-ci :"
+
#: views.py:132
msgid "Basket modify"
msgstr "Modification de panier"
@@ -1655,78 +1762,86 @@ msgstr "Modification de panier"
msgid "New find"
msgstr "Ajouter un mobilier"
-#: views.py:209
+#: views.py:225
msgid "Find modification"
msgstr "Modifier un mobilier"
-#: views.py:238
+#: views.py:260
msgid "Find deletion"
msgstr "Supprimer un mobilier"
-#: views.py:251
+#: views.py:273
msgid "New basket"
msgstr "Ajouter un panier"
-#: views.py:280
+#: views.py:302
msgid "Manage items in basket"
msgstr "Gérer les éléments dans un panier"
-#: views.py:389
+#: views.py:411
msgid "Delete basket"
msgstr "Supprimer un panier"
-#: views.py:441
+#: views.py:463 views.py:476 views.py:489
msgid "New treatment"
msgstr "Ajouter un traitement"
-#: views.py:449
+#: views.py:497
msgid "Treatment modification"
msgstr "Modifier un traitement"
-#: views.py:466
+#: views.py:514
msgid "Treatment deletion"
msgstr "Supprimer un traitement"
-#: views.py:473
+#: views.py:521
msgid "Treatment: search administrative act"
msgstr "Traitement : rechercher un acte administratif"
-#: views.py:482
+#: views.py:530
msgid "Treatment: new administrative act"
msgstr "Traitement : ajouter un acte administratif"
-#: views.py:492
+#: views.py:540
msgid "Treatment: administrative act modification"
msgstr "Traitement : modifier un acte administratif"
-#: views.py:501
+#: views.py:549
msgid "Treatment: administrative act deletion"
msgstr "Traitement : supprimer un acte administratif"
-#: views.py:534
+#: views.py:582
msgid "New treatment request"
msgstr "Ajouter une demande de traitement"
-#: views.py:541
+#: views.py:589
msgid "Treatment request modification"
msgstr "Modifier une demande de traitement"
-#: views.py:557
+#: views.py:605
msgid "Treatment request deletion"
msgstr "Supprimer une demande de traitement"
-#: views.py:564
+#: views.py:612
msgid "Treatment request: search administrative act"
msgstr "Demande de traitement : rechercher un acte administratif"
-#: views.py:574
+#: views.py:622
msgid "Treatment request: new administrative act"
msgstr "Demande de traitement : ajouter un acte administratif"
-#: views.py:584
+#: views.py:632
msgid "Treatment request: administrative act modification"
msgstr "Demande de traitement : modifier un acte administratif"
-#: views.py:593
+#: views.py:641
msgid "Treatment request: administrative act deletion"
msgstr "Demande de traitement : supprimer un acte administratif"
+
+#: wizards.py:387
+msgid ""
+"The new basket: \"{}\" have been created with the resulting items. This "
+"search have been pinned."
+msgstr ""
+"Le nouveau panier « {} » a été créé avec les éléments résultants. Cette "
+"recherche a été épinglée."
diff --git a/translations/fr/archaeological_warehouse.po b/translations/fr/archaeological_warehouse.po
index 6b2c7ae8e..c390110e4 100644
--- a/translations/fr/archaeological_warehouse.po
+++ b/translations/fr/archaeological_warehouse.po
@@ -18,169 +18,169 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n>1;\n"
"X-Generator: Zanata 4.6.2\n"
-#: forms.py:41 forms.py:113 ishtar_menu.py:40 models.py:94 models.py:258
+#: forms.py:42 forms.py:114 ishtar_menu.py:40 models.py:94 models.py:258
#: templates/ishtar/sheet_warehouse.html:4
msgid "Warehouse"
msgstr "Lieu de conservation"
-#: forms.py:50 forms.py:55 models.py:622
+#: forms.py:51 forms.py:56 models.py:623
msgid "Division"
msgstr "Division"
-#: forms.py:57 models.py:286
+#: forms.py:58 models.py:286
msgid "Order"
msgstr "Ordre"
-#: forms.py:71
+#: forms.py:72
msgid "There are identical divisions."
msgstr "Il y a des divisions identiques"
-#: forms.py:76 models.py:83
+#: forms.py:77 models.py:83
msgid "Divisions"
msgstr "Divisions"
-#: forms.py:77
+#: forms.py:78
msgid "Warehouse - 020 - Divisions"
msgstr "Lieu de conservation - 020 - Divisions"
-#: forms.py:85 forms.py:254
+#: forms.py:86 forms.py:255
msgid "Full text search"
msgstr "Recherche en texte intégral"
-#: forms.py:88 forms.py:119 models.py:75 models.py:255
+#: forms.py:89 forms.py:120 models.py:75 models.py:255
msgid "Name"
msgstr "Nom"
-#: forms.py:89 forms.py:121 models.py:39 models.py:77
+#: forms.py:90 forms.py:122 models.py:39 models.py:77
msgid "Warehouse type"
msgstr "Type de lieu de conservation"
-#: forms.py:101 views.py:108
+#: forms.py:102 views.py:108
msgid "Warehouse search"
msgstr "Rechercher un lieu de conservation"
-#: forms.py:114
+#: forms.py:115
msgid "Warehouse - 010 - General"
msgstr "Lieu de conservation - 010 - Général"
-#: forms.py:124 models.py:80
+#: forms.py:125 models.py:80
msgid "Person in charge"
msgstr "Responsable"
-#: forms.py:130 forms.py:198 models.py:81 models.py:381
+#: forms.py:131 forms.py:199 models.py:81 models.py:382
msgid "Comment"
msgstr "Commentaire"
-#: forms.py:132
+#: forms.py:133
msgid "Address"
msgstr "Adresse"
-#: forms.py:134
+#: forms.py:135
msgid "Address complement"
msgstr "Complément d'adresse"
-#: forms.py:136
+#: forms.py:137
msgid "Postal code"
msgstr "Code postal"
-#: forms.py:138
+#: forms.py:139
msgid "Town"
msgstr "Commune"
-#: forms.py:139
+#: forms.py:140
msgid "Country"
msgstr "Pays"
-#: forms.py:141
+#: forms.py:142
msgid "Phone"
msgstr "Téléphone"
-#: forms.py:142
+#: forms.py:143
msgid "Mobile phone"
msgstr "Téléphone mobile"
-#: forms.py:167 forms.py:168
+#: forms.py:168 forms.py:169
msgid "Would you like to delete this warehouse?"
msgstr "Voulez-vous supprimer ce lieu de conservation?"
-#: forms.py:172 models.py:395 models.py:619
+#: forms.py:173 models.py:396 models.py:620
#: templates/ishtar/sheet_container.html:4
msgid "Container"
msgstr "Contenant"
-#: forms.py:173
+#: forms.py:174
msgid "Container - 010 - General"
msgstr "Contenant - 010 - Général"
-#: forms.py:179 forms.py:261 models.py:301
+#: forms.py:180 forms.py:262 models.py:301
msgid "Ref."
msgstr "Réf."
-#: forms.py:180 models.py:389
+#: forms.py:181 models.py:390
msgid "Old reference"
msgstr "Ancienne référence"
-#: forms.py:182 forms.py:260 models.py:304 models.py:379
+#: forms.py:183 forms.py:261 models.py:305 models.py:380
msgid "Container type"
msgstr "Type de contenant"
-#: forms.py:184 forms.py:258
+#: forms.py:185 forms.py:259
msgid "Current location (warehouse)"
msgstr "Localisation actuelle (lieu de conservation)"
-#: forms.py:190 forms.py:259 models.py:376
+#: forms.py:191 forms.py:260 models.py:377
msgid "Responsible warehouse"
msgstr "Lieu de conservation responsable"
-#: forms.py:196
+#: forms.py:197
msgid "Image"
msgstr "Image"
-#: forms.py:223
+#: forms.py:224
msgid "ID"
msgstr "Identifiant"
-#: forms.py:245
+#: forms.py:246
msgid "This ID already exists for this warehouse."
msgstr "Cet identifiant existe déjà pour ce lieu de conservation."
-#: forms.py:272 forms.py:278 views.py:150
+#: forms.py:273 forms.py:279 views.py:150
msgid "Container search"
msgstr "Rechercher un contenant"
-#: forms.py:274 forms.py:280
+#: forms.py:275 forms.py:281
msgid "You should select a container."
msgstr "Vous devez sélectionner un contenant."
-#: forms.py:275
+#: forms.py:276
msgid "Add a new container"
msgstr "Ajouter un nouveau contenant"
-#: forms.py:285 ishtar_menu.py:36 views.py:103
+#: forms.py:286 ishtar_menu.py:36 views.py:103
msgid "Packaging"
msgstr "Conditionnement"
-#: forms.py:291
+#: forms.py:292
msgid "Packager"
msgstr "Personne assurant le conditionnement"
-#: forms.py:297
+#: forms.py:298
msgid "Date"
msgstr "Date"
-#: forms.py:301
+#: forms.py:304
msgid "Packaged finds"
msgstr "Mobilier conditionné"
-#: forms.py:305
+#: forms.py:308
msgid "Container - 020 - Localisation"
msgstr "Contenant - 020 - Localisation"
-#: forms.py:307 models.py:382
+#: forms.py:310 models.py:383
msgid "Localisation"
msgstr "Localisation"
-#: forms.py:331 forms.py:332
+#: forms.py:334 forms.py:335
msgid "Would you like to delete this container?"
msgstr "Voulez-vous supprimer ce contenant ?"
@@ -204,7 +204,7 @@ msgstr "Modification"
msgid "Deletion"
msgstr "Suppression"
-#: ishtar_menu.py:57 models.py:396 templates/ishtar/sheet_warehouse.html:42
+#: ishtar_menu.py:57 models.py:397 templates/ishtar/sheet_warehouse.html:42
#: templates/ishtar/sheet_warehouse.html:87
msgid "Containers"
msgstr "Contenants"
@@ -218,7 +218,7 @@ msgctxt "key for text search"
msgid "name"
msgstr "nom"
-#: models.py:64 models.py:356
+#: models.py:64 models.py:357
msgctxt "key for text search"
msgid "type"
msgstr "type"
@@ -227,11 +227,11 @@ msgstr "type"
msgid "Documents"
msgstr "Documents"
-#: models.py:89 models.py:390
+#: models.py:89 models.py:391
msgid "External ID"
msgstr "Identifiant"
-#: models.py:91 models.py:392
+#: models.py:91 models.py:393
msgid "External ID is set automatically"
msgstr "L'identifiant est attribué automatiquement"
@@ -271,62 +271,62 @@ msgstr "Hauteur (mm)"
msgid "Volume (l)"
msgstr "Volume (l)"
-#: models.py:305
+#: models.py:306
msgid "Container types"
msgstr "Types de contenant"
-#: models.py:339
+#: models.py:340
msgid "Location - index"
msgstr "Localisation - index"
-#: models.py:340
+#: models.py:341
msgid "Precise localisation"
msgstr "Localisation précise"
-#: models.py:341
+#: models.py:342
msgid "Type"
msgstr "Type"
-#: models.py:348
+#: models.py:349
msgctxt "key for text search"
msgid "location"
msgstr "localisation"
-#: models.py:352
+#: models.py:353
msgctxt "key for text search"
msgid "responsible-warehouse"
msgstr "lieu-de-conservation-responsable"
-#: models.py:360
+#: models.py:361
msgctxt "key for text search"
msgid "reference"
msgstr "reference"
-#: models.py:373
+#: models.py:374
msgid "Location (warehouse)"
msgstr "Localisation (lieu de conservation)"
-#: models.py:380
+#: models.py:381
msgid "Container ref."
msgstr "Réf. du contenant"
-#: models.py:384
+#: models.py:385
msgid "Cached location"
msgstr "Localisation - en cache"
-#: models.py:386
+#: models.py:387
msgid "Cached division"
msgstr "Division mise en cache"
-#: models.py:623
+#: models.py:624
msgid "Reference"
msgstr "Référence"
-#: models.py:626
+#: models.py:627
msgid "Container localisation"
msgstr "Localisation de contenant"
-#: models.py:627
+#: models.py:628
msgid "Container localisations"
msgstr "Localisations de contenant"
diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po
index 0c15c6cf7..2f37fbc77 100644
--- a/translations/fr/ishtar_common.po
+++ b/translations/fr/ishtar_common.po
@@ -12,7 +12,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2018-11-12 10:08+0000\n"
+"PO-Revision-Date: 2018-11-21 09:53+0000\n"
"Last-Translator: Étienne Loks \n"
"Language-Team: \n"
"Language: fr\n"
@@ -43,12 +43,12 @@ msgstr "Seul l'unicode est géré - convertissez votre fichier d'abord"
msgid "Export selected as CSV file"
msgstr "Exporter la sélection en fichier CSV"
-#: admin.py:207 models.py:1686 templates/navbar.html:31
+#: admin.py:207 models.py:1700 templates/navbar.html:31
msgid "Profile"
msgstr "Profil"
#: admin.py:208 forms_common.py:782 forms_common.py:801 forms_common.py:802
-#: models.py:3039
+#: models.py:3056
msgid "Profiles"
msgstr "Profils"
@@ -70,7 +70,7 @@ msgstr "%d élément(s) mis à jour."
msgid "These parents are missing: {}"
msgstr "Ces parents sont manquants : {}"
-#: admin.py:386 admin.py:405 models.py:883 models.py:4141
+#: admin.py:386 admin.py:405 models.py:902 models.py:4158
msgid "Parent"
msgstr "Parent"
@@ -78,11 +78,11 @@ msgstr "Parent"
msgid "Center"
msgstr "Centre"
-#: admin.py:395 models.py:4003
+#: admin.py:395 models.py:4020
msgid "Limit"
msgstr "Limite"
-#: admin.py:398 models.py:4013
+#: admin.py:398 models.py:4030
msgid "Town children"
msgstr "Communes enfants"
@@ -131,16 +131,16 @@ msgstr "Afficher les éléments sélectionnés"
msgid "Hide selected"
msgstr "Cacher les éléments sélectionnés"
-#: admin.py:931 models.py:2080
+#: admin.py:931 models.py:2095
msgid "Form"
msgstr "Formulaire"
-#: admin.py:933 models.py:2105 models_imports.py:127
+#: admin.py:933 models.py:2120 models_imports.py:127
#: templates/ishtar/dashboards/dashboard_main.html:39
msgid "Users"
msgstr "Utilisateurs"
-#: admin.py:953 models.py:2180
+#: admin.py:953 models.py:2195
msgid "Field"
msgstr "Champ"
@@ -347,36 +347,36 @@ msgstr "Confirmer"
msgid "Are you sure you want to delete?"
msgstr "Êtes-vous sûr de vouloir supprimer ?"
-#: forms.py:379
+#: forms.py:410
msgid "There are identical items."
msgstr "Il y a des éléments identiques."
-#: forms.py:535
+#: forms.py:566
msgid "Last modified by"
msgstr "Modifié en dernier par"
-#: forms.py:541
+#: forms.py:572
msgid "Modified since"
msgstr "Modifié depuis"
-#: forms.py:565 forms.py:566
+#: forms.py:596 forms.py:597
msgid "Closing date"
msgstr "Date de clôture"
-#: forms.py:578 forms_common.py:1272
+#: forms.py:609 forms_common.py:1272
msgid "You should select an item."
msgstr "Vous devez sélectionner un élément."
-#: forms.py:579
+#: forms.py:610
msgid "Add a new item"
msgstr "Ajouter un nouvel élément"
-#: forms.py:769 models.py:2434
+#: forms.py:800 models.py:2450
msgid "Template"
msgstr "Patron"
#: forms_common.py:54 forms_common.py:72 forms_common.py:317
-#: forms_common.py:556 models.py:2568 models.py:4020
+#: forms_common.py:556 models.py:2584 models.py:4037
#: templates/blocks/JQueryAdvancedTown.html:19
msgid "Town"
msgstr "Commune"
@@ -398,8 +398,8 @@ msgstr ""
"Par exemple tapez « saint denis 93 » pour obtenir la "
"commune Saint-Denis dans le département français de Seine-Saint-Denis.
"
-#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2952
-#: models.py:3204 models.py:3332 models.py:3495
+#: forms_common.py:81 forms_common.py:1293 ishtar_menu.py:48 models.py:2969
+#: models.py:3221 models.py:3349 models.py:3512
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr "Personne"
@@ -455,16 +455,16 @@ msgid "all users"
msgstr "tous les utilisateurs"
#: forms_common.py:305 forms_common.py:475 forms_common.py:609
-#: ishtar_menu.py:76 models.py:2773 models.py:2890 models.py:3292
+#: ishtar_menu.py:76 models.py:2789 models.py:2907 models.py:3309
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr "Organisation"
#: forms_common.py:308 forms_common.py:351 forms_common.py:470
#: forms_common.py:526 forms_common.py:604 forms_common.py:790
-#: forms_common.py:823 models.py:1056 models.py:1080 models.py:1879
-#: models.py:2079 models.py:2430 models.py:2765 models.py:2936 models.py:3192
-#: models.py:3999 models.py:4262 models_imports.py:98 models_imports.py:123
+#: forms_common.py:823 models.py:1075 models.py:1099 models.py:1894
+#: models.py:2094 models.py:2446 models.py:2781 models.py:2953 models.py:3209
+#: models.py:4016 models.py:4281 models_imports.py:98 models_imports.py:123
#: models_imports.py:445 models_imports.py:537 models_imports.py:827
#: templates/ishtar/import_step_by_step.html:102
#: templates/ishtar/import_step_by_step.html:270
@@ -473,40 +473,40 @@ msgstr "Organisation"
msgid "Name"
msgstr "Nom"
-#: forms_common.py:309 models.py:2721 models_imports.py:630
+#: forms_common.py:309 models.py:2737 models_imports.py:630
#: models_imports.py:631
msgid "Organization type"
msgstr "Type d'organisation"
-#: forms_common.py:311 forms_common.py:550 models.py:2563
+#: forms_common.py:311 forms_common.py:550 models.py:2579
#: templates/ishtar/blocks/sheet_address_section.html:4
msgid "Address"
msgstr "Adresse"
-#: forms_common.py:313 forms_common.py:553 models.py:2564
+#: forms_common.py:313 forms_common.py:553 models.py:2580
msgid "Address complement"
msgstr "Complément d'adresse"
-#: forms_common.py:315 forms_common.py:554 models.py:2566
+#: forms_common.py:315 forms_common.py:554 models.py:2582
msgid "Postal code"
msgstr "Code postal"
-#: forms_common.py:318 forms_common.py:557 models.py:2569
+#: forms_common.py:318 forms_common.py:557 models.py:2585
msgid "Country"
msgstr "Pays"
#: forms_common.py:320 forms_common.py:472 forms_common.py:530
-#: forms_common.py:606 forms_common.py:731 models.py:2596
+#: forms_common.py:606 forms_common.py:731 models.py:2612
msgid "Email"
msgstr "Courriel"
-#: forms_common.py:321 forms_common.py:533 models.py:2581
+#: forms_common.py:321 forms_common.py:533 models.py:2597
#: templates/ishtar/sheet_person.html:27
#: templates/ishtar/wizard/wizard_person.html:33
msgid "Phone"
msgstr "Téléphone"
-#: forms_common.py:322 forms_common.py:542 models.py:2593
+#: forms_common.py:322 forms_common.py:542 models.py:2609
#: templates/ishtar/sheet_person.html:45
#: templates/ishtar/wizard/wizard_person.html:54
msgid "Mobile phone"
@@ -518,7 +518,7 @@ msgid "Full text search"
msgstr "Recherche en texte intégral"
#: forms_common.py:352 forms_common.py:473 forms_common.py:607
-#: forms_common.py:788 models.py:1089 models.py:2767 models.py:3738
+#: forms_common.py:788 models.py:1108 models.py:2783 models.py:3755
#: models_imports.py:680 templates/ishtar/blocks/window_image_detail.html:24
#: templates/ishtar/blocks/window_tables/documents.html:8
#: templates/ishtar/import_table.html:28
@@ -542,7 +542,7 @@ msgstr "Fusionner tous les éléments dans"
msgid "Organization to merge"
msgstr "Organisation à fusionner"
-#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2934
+#: forms_common.py:471 forms_common.py:524 forms_common.py:605 models.py:2951
#: templates/ishtar/sheet_organization.html:24
msgid "Surname"
msgstr "Prénom"
@@ -559,25 +559,25 @@ msgstr "Personne à fusionner"
msgid "Identity"
msgstr "Identité"
-#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2928
-#: models.py:2930 models.py:3729 models_imports.py:632
+#: forms_common.py:521 forms_common.py:1095 forms_common.py:1217 models.py:2945
+#: models.py:2947 models.py:3746 models_imports.py:632
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr "Titre"
-#: forms_common.py:522 models.py:2932
+#: forms_common.py:522 models.py:2949
msgid "Salutation"
msgstr "Formule d'appel"
-#: forms_common.py:528 models.py:2938
+#: forms_common.py:528 models.py:2955
msgid "Raw name"
msgstr "Nom brut"
-#: forms_common.py:531 models.py:2582
+#: forms_common.py:531 models.py:2598
msgid "Phone description"
msgstr "Type de téléphone"
-#: forms_common.py:534 models.py:2584 models.py:2586
+#: forms_common.py:534 models.py:2600 models.py:2602
msgid "Phone description 2"
msgstr "Type de téléphone 2"
@@ -585,11 +585,11 @@ msgstr "Type de téléphone 2"
msgid "Phone 2"
msgstr "Téléphone 2"
-#: forms_common.py:538 models.py:2590
+#: forms_common.py:538 models.py:2606
msgid "Phone description 3"
msgstr "Type de téléphone 3"
-#: forms_common.py:540 models.py:2588
+#: forms_common.py:540 models.py:2604
msgid "Phone 3"
msgstr "Téléphone 3"
@@ -597,23 +597,23 @@ msgstr "Téléphone 3"
msgid "Current organization"
msgstr "Organisation actuelle"
-#: forms_common.py:559 models.py:2571
+#: forms_common.py:559 models.py:2587
msgid "Other address: address"
msgstr "Autre adresse : adresse"
-#: forms_common.py:562 models.py:2574
+#: forms_common.py:562 models.py:2590
msgid "Other address: address complement"
msgstr "Autre adresse : complément d'adresse"
-#: forms_common.py:564 models.py:2575
+#: forms_common.py:564 models.py:2591
msgid "Other address: postal code"
msgstr "Autre adresse : code postal"
-#: forms_common.py:566 models.py:2577
+#: forms_common.py:566 models.py:2593
msgid "Other address: town"
msgstr "Autre adresse : ville"
-#: forms_common.py:568 models.py:2579
+#: forms_common.py:568 models.py:2595
msgid "Other address: country"
msgstr "Autre adresse : pays"
@@ -621,7 +621,7 @@ msgstr "Autre adresse : pays"
msgid "Already has an account"
msgstr "A déjà un compte"
-#: forms_common.py:603 models.py:3293
+#: forms_common.py:603 models.py:3310
msgid "Username"
msgstr "Nom d'utilisateur"
@@ -629,7 +629,7 @@ msgstr "Nom d'utilisateur"
msgid "Account search"
msgstr "Rechercher un compte"
-#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2829
+#: forms_common.py:669 forms_common.py:709 forms_common.py:713 models.py:2846
msgid "Person type"
msgstr "Type de personne"
@@ -657,7 +657,7 @@ msgstr "Vous devez fournir un mot de passe correct."
msgid "This username already exists."
msgstr "Ce nom d'utilisateur existe déjà."
-#: forms_common.py:789 models.py:3195 models.py:4148
+#: forms_common.py:789 models.py:3212 models.py:4165
msgid "Areas"
msgstr "Zones"
@@ -665,11 +665,11 @@ msgstr "Zones"
msgid "Send the new password by email?"
msgstr "Envoyer le nouveau mot de passe par courriel ?"
-#: forms_common.py:821 models.py:3197 views.py:968
+#: forms_common.py:821 models.py:3214 views.py:968
msgid "Current profile"
msgstr "Profil actuel"
-#: forms_common.py:824 models.py:3175 models.py:3194
+#: forms_common.py:824 models.py:3192 models.py:3211
msgid "Profile type"
msgstr "Type de profil"
@@ -698,8 +698,8 @@ msgstr "Un profil avec un nom identique existe"
msgid " (duplicate)"
msgstr "(copie)"
-#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4021
-#: models.py:4136
+#: forms_common.py:932 forms_common.py:946 forms_common.py:947 models.py:4038
+#: models.py:4153
msgid "Towns"
msgstr "Communes"
@@ -728,19 +728,19 @@ msgstr "Documentation"
msgid "Document - General"
msgstr "Document - Général"
-#: forms_common.py:1098 forms_common.py:1218 models.py:3543
+#: forms_common.py:1098 forms_common.py:1218 models.py:3560
#: models_imports.py:633
msgid "Source type"
msgstr "Type de document"
#: forms_common.py:1101 forms_common.py:1152 forms_common.py:1333
-#: forms_common.py:1334 models.py:3504 models.py:3612 models.py:3748
+#: forms_common.py:1334 models.py:3521 models.py:3629 models.py:3765
#: templates/ishtar/blocks/window_image_detail.html:9
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
msgstr "Auteurs"
-#: forms_common.py:1105 models.py:3754
+#: forms_common.py:1105 models.py:3771
msgid "Numerical ressource (web address)"
msgstr "Ressource numérique (adresse web)"
@@ -753,7 +753,7 @@ msgctxt "Not directory"
msgid "File"
msgstr "Fichier"
-#: forms_common.py:1113 forms_common.py:1219 models.py:4138
+#: forms_common.py:1113 forms_common.py:1219 models.py:4155
msgid "Reference"
msgstr "Référence"
@@ -761,38 +761,38 @@ msgstr "Référence"
msgid "Internal reference"
msgstr "Référence interne"
-#: forms_common.py:1118 models.py:3756
+#: forms_common.py:1118 models.py:3773
#: templates/ishtar/blocks/window_image_detail.html:150
msgid "Receipt date"
msgstr "Date de réception"
-#: forms_common.py:1120 models.py:3758 models_imports.py:859
+#: forms_common.py:1120 models.py:3775 models_imports.py:859
#: templates/ishtar/blocks/window_image_detail.html:54
msgid "Creation date"
msgstr "Date de création"
-#: forms_common.py:1123 models.py:3761
+#: forms_common.py:1123 models.py:3778
#: templates/ishtar/blocks/window_image_detail.html:160
msgid "Receipt date in documentation"
msgstr "Date de réception en documentation"
-#: forms_common.py:1125 forms_common.py:1222 models.py:473 models.py:2942
-#: models.py:3421 models.py:3764 models_imports.py:483
+#: forms_common.py:1125 forms_common.py:1222 models.py:493 models.py:2959
+#: models.py:3438 models.py:3781 models_imports.py:483
#: templates/ishtar/blocks/window_image_detail.html:170
msgid "Comment"
msgstr "Commentaire"
-#: forms_common.py:1127 forms_common.py:1221 models.py:1884 models.py:3763
+#: forms_common.py:1127 forms_common.py:1221 models.py:1899 models.py:3780
#: models_imports.py:125 models_imports.py:372 models_imports.py:446
msgid "Description"
msgstr "Description"
-#: forms_common.py:1130 models.py:3765
+#: forms_common.py:1130 models.py:3782
#: templates/ishtar/blocks/window_image_detail.html:182
msgid "Additional information"
msgstr "Information supplémentaire"
-#: forms_common.py:1132 forms_common.py:1225 models.py:3767
+#: forms_common.py:1132 forms_common.py:1225 models.py:3784
#: templates/ishtar/blocks/window_image_detail.html:108
msgid "Has a duplicate"
msgstr "Existe en doublon"
@@ -829,7 +829,7 @@ msgid "A document have to attached at least to one item"
msgstr "Un document doit être rattaché au minimum à un élément"
#: forms_common.py:1214 forms_common.py:1286 forms_common.py:1321
-#: models.py:3503 templates/ishtar/wizard/wizard_person_deletion.html:139
+#: models.py:3520 templates/ishtar/wizard/wizard_person_deletion.html:139
msgid "Author"
msgstr "Auteur"
@@ -857,7 +857,7 @@ msgstr "Recherche document"
msgid "Would you like to delete this documentation?"
msgstr "Voulez-vous supprimer ce document ?"
-#: forms_common.py:1294 models.py:3468 models.py:3497 models_imports.py:634
+#: forms_common.py:1294 models.py:3485 models.py:3514 models_imports.py:634
msgid "Author type"
msgstr "Type d'auteur"
@@ -869,11 +869,11 @@ msgstr "Sélection d'auteur"
msgid "There are identical authors."
msgstr "Il y a des auteurs identiques."
-#: forms_common.py:1339 models.py:1683
+#: forms_common.py:1339 models.py:1697
msgid "Query"
msgstr "Requête"
-#: forms_common.py:1344 models.py:1687
+#: forms_common.py:1344 models.py:1701
msgid "Is an alert"
msgstr "Est une alerte"
@@ -913,7 +913,7 @@ msgstr "Ajout/modification"
msgid "Deletion"
msgstr "Suppression"
-#: ishtar_menu.py:40 models.py:2209 views.py:992
+#: ishtar_menu.py:40 models.py:2224 views.py:992
msgid "Global variables"
msgstr "Variables globales"
@@ -970,24 +970,24 @@ msgstr "Documentation / Images"
msgid "Not a valid item."
msgstr "Élément invalide."
-#: models.py:211
+#: models.py:212
msgid "A selected item is not a valid item."
msgstr "Un élément sélectionné n'est pas valide."
-#: models.py:222
+#: models.py:224
msgid "This item already exists."
msgstr "Cet élément existe déjà."
-#: models.py:465 models.py:1682 models.py:2191 models.py:2528 models.py:2544
-#: models.py:3420 models_imports.py:368
+#: models.py:485 models.py:1696 models.py:2206 models.py:2544 models.py:2560
+#: models.py:3437 models_imports.py:368
msgid "Label"
msgstr "Dénomination"
-#: models.py:467
+#: models.py:487
msgid "Textual ID"
msgstr "Identifiant textuel"
-#: models.py:470
+#: models.py:490
msgid ""
"The slug is the standardized version of the name. It contains only lowercase "
"letters, numbers and hyphens. Each slug must be unique."
@@ -996,12 +996,12 @@ msgstr ""
"lettres en minuscule, des nombres et des tirets (-). Chaque \"slug\" doit "
"être unique dans la typologie."
-#: models.py:474 models.py:2081 models.py:2437 models.py:3425
+#: models.py:494 models.py:2096 models.py:2453 models.py:3442
#: models_imports.py:139 models_imports.py:542
msgid "Available"
msgstr "Disponible"
-#: models.py:898 models.py:1083 models_imports.py:563
+#: models.py:917 models.py:1102 models_imports.py:563
#: templates/ishtar/formset_import_match.html:21
#: templates/ishtar/import_step_by_step.html:171
#: templates/ishtar/import_step_by_step.html:199
@@ -1010,56 +1010,56 @@ msgstr "Disponible"
msgid "Key"
msgstr "Clé"
-#: models.py:904
+#: models.py:923
msgid "Specific key to an import"
msgstr "Clé spécifique à un import"
-#: models.py:1043
+#: models.py:1062
msgid "Generated relation image (SVG)"
msgstr "Image des relations (SVG généré)"
-#: models.py:1057 models.py:1091 models.py:1604 models.py:2193 models.py:3465
-#: models.py:4165 models.py:4247
+#: models.py:1076 models.py:1110 models.py:1618 models.py:2208 models.py:3482
+#: models.py:4182 models.py:4264
msgid "Order"
msgstr "Ordre"
-#: models.py:1060
+#: models.py:1079
msgid "Json data - Menu"
msgstr "Données JSON - Menu"
-#: models.py:1061
+#: models.py:1080
msgid "Json data - Menus"
msgstr "Données JSON - Menus"
-#: models.py:1069
+#: models.py:1088
msgid "Text"
msgstr "Texte"
-#: models.py:1070
+#: models.py:1089
msgid "Long text"
msgstr "Texte long"
-#: models.py:1071 models_imports.py:676
+#: models.py:1090 models_imports.py:676
msgid "Integer"
msgstr "Entier"
-#: models.py:1072
+#: models.py:1091
msgid "Boolean"
msgstr "Booléen"
-#: models.py:1073 models_imports.py:677
+#: models.py:1092 models_imports.py:677
msgid "Float"
msgstr "Nombre à virgule"
-#: models.py:1074 models_imports.py:679
+#: models.py:1093 models_imports.py:679
msgid "Date"
msgstr "Date"
-#: models.py:1075
+#: models.py:1094
msgid "Choices"
msgstr "Choix"
-#: models.py:1084
+#: models.py:1103
msgid ""
"Value of the key in the JSON schema. For hierarchical key use \"__\" to "
"explain it. For instance for the key 'my_subkey' with data such as {'my_key':"
@@ -1070,200 +1070,200 @@ msgstr ""
"{'ma_clef': {'ma_sousclef': 'valeur'}}, sa valeur sera atteinte avec : "
"ma_clef__ma_sousclef."
-#: models.py:1088
+#: models.py:1107
msgid "Display"
msgstr "Afficher"
-#: models.py:1092
+#: models.py:1111
msgid "Use in search indexes"
msgstr "Utiliser dans les index de recherche"
-#: models.py:1099
+#: models.py:1118
msgid "Json data - Field"
msgstr "Donnée JSON - Champ"
-#: models.py:1100
+#: models.py:1119
msgid "Json data - Fields"
msgstr "Donnée JSON - Champs"
-#: models.py:1111
+#: models.py:1130
msgid "Content types of the field and of the menu do not match"
msgstr "Les types de contenu du champ et du menu ne correspondent pas"
-#: models.py:1171
+#: models.py:1190
msgid "Search vector"
msgstr "Vecteur de recherche"
-#: models.py:1172
+#: models.py:1191
msgid "Auto filled at save"
msgstr "Auto-rempli à la sauvegarde"
-#: models.py:1392
+#: models.py:1406
msgid "Add document/image"
msgstr "Ajouter un document / une image"
-#: models.py:1394
+#: models.py:1408
msgid "doc./image"
msgstr "doc./image"
-#: models.py:1413
+#: models.py:1427
msgid "Last editor"
msgstr "Dernier éditeur"
-#: models.py:1416
+#: models.py:1430
msgid "Creator"
msgstr "Créateur"
-#: models.py:1597
+#: models.py:1611
msgid "Above"
msgstr "Au-dessus"
-#: models.py:1598
+#: models.py:1612
msgid "Bellow"
msgstr "En dessous"
-#: models.py:1599
+#: models.py:1613
msgid "Equal"
msgstr "Égal"
-#: models.py:1605
+#: models.py:1619
msgid "Symmetrical"
msgstr "Symétrique"
-#: models.py:1606
+#: models.py:1620
msgid "Tiny label"
msgstr "Dénomination courte"
-#: models.py:1609
+#: models.py:1623
msgid "Inverse relation"
msgstr "Relation inverse"
-#: models.py:1612
+#: models.py:1626
msgid "Logical relation"
msgstr "Relation logique"
-#: models.py:1622
+#: models.py:1636
msgid "Cannot have symmetrical and an inverse_relation"
msgstr "Ne peut pas être symétrique et avoir une relation inverse"
-#: models.py:1685
+#: models.py:1699
msgid "Content type"
msgstr "Type de contenu"
-#: models.py:1690
+#: models.py:1704
msgid "Search query"
msgstr "Requête de recherche"
-#: models.py:1691
+#: models.py:1705
msgid "Search queries"
msgstr "Requêtes de recherche"
-#: models.py:1855
+#: models.py:1870
msgid "Euro"
msgstr "Euro"
-#: models.py:1856
+#: models.py:1871
msgid "US dollar"
msgstr "Dollar US"
-#: models.py:1857 views.py:742 views.py:803
+#: models.py:1872 views.py:742 views.py:803
msgid "Operations"
msgstr "Opérations"
-#: models.py:1858 views.py:744 views.py:807
+#: models.py:1873 views.py:744 views.py:807
msgid "Context records"
msgstr "Unités d'Enregistrement"
-#: models.py:1859
+#: models.py:1874
msgid "Site"
msgstr "Site"
-#: models.py:1859
+#: models.py:1874
msgid "Archaeological entity"
msgstr "Entité (EA)"
-#: models.py:1863
+#: models.py:1878
msgid "Site search"
msgstr "Rechercher un site"
-#: models.py:1864
+#: models.py:1879
msgid "New site"
msgstr "Ajouter un site"
-#: models.py:1865
+#: models.py:1880
msgid "Site modification"
msgstr "Modifier un site"
-#: models.py:1866
+#: models.py:1881
msgid "Site deletion"
msgstr "Supprimer un site"
-#: models.py:1869
+#: models.py:1884
msgid "Archaeological entity search"
msgstr "Rechercher une entité archéologique"
-#: models.py:1870
+#: models.py:1885
msgid "New archaeological entity"
msgstr "Nouvelle entité archéologique"
-#: models.py:1871
+#: models.py:1886
msgid "Archaeological entity modification"
msgstr "Modifier une entité archéologique"
-#: models.py:1872
+#: models.py:1887
msgid "Archaeological entity deletion"
msgstr "Supprimer une entité archéologique"
-#: models.py:1880 models.py:2431 models_imports.py:124
+#: models.py:1895 models.py:2447 models_imports.py:124
msgid "Slug"
msgstr "Identifiant texte"
-#: models.py:1881
+#: models.py:1896
msgid "Current active"
msgstr "Actuellement utilisé"
-#: models.py:1883
+#: models.py:1898
msgid "Activate experimental feature"
msgstr "Activer les fonctionnalités expérimentales"
-#: models.py:1886
+#: models.py:1901
msgid "Alternate configuration"
msgstr "Configuration alternative"
-#: models.py:1888
+#: models.py:1903
msgid "Choose an alternate configuration for label, index management"
msgstr ""
"Choisir une configuration alternative pour les libellés, gestion des indexes"
-#: models.py:1892
+#: models.py:1907
msgid "Files module"
msgstr "Module Dossiers"
-#: models.py:1894
+#: models.py:1909
msgid "Archaeological site module"
msgstr "Module Site archéologique"
-#: models.py:1896
+#: models.py:1911
msgid "Archaeological site type"
msgstr "Type de site archéologique"
-#: models.py:1900
+#: models.py:1915
msgid "Context records module"
msgstr "Module Unités d'Enregistrement"
-#: models.py:1902
+#: models.py:1917
msgid "Finds module"
msgstr "Module Mobilier"
-#: models.py:1903
+#: models.py:1918
msgid "Need context records module"
msgstr "Nécessite le module Unités d'Enregistrement"
-#: models.py:1905
+#: models.py:1920
msgid "Find index is based on"
msgstr "Index mobilier basé sur"
-#: models.py:1907
+#: models.py:1922
msgid ""
"To prevent irrelevant indexes, change this parameter only if there is no "
"find in the database"
@@ -1271,35 +1271,35 @@ msgstr ""
"Pour éviter des index non pertinents, ne changer ce paramètre que s'il n'y a "
"pas encore de mobilier dans cette base de données"
-#: models.py:1910
+#: models.py:1925
msgid "Warehouses module"
msgstr "Module Lieu de conservation"
-#: models.py:1911
+#: models.py:1926
msgid "Need finds module"
msgstr "Nécessite le module mobilier"
-#: models.py:1912
+#: models.py:1927
msgid "Preservation module"
msgstr "Module de conservation"
-#: models.py:1914
+#: models.py:1929
msgid "Mapping module"
msgstr "Module cartographique"
-#: models.py:1915
+#: models.py:1930
msgid "Underwater module"
msgstr "Module sous-marin / subaquatique"
-#: models.py:1917
+#: models.py:1932
msgid "Parcel are mandatory for context records"
msgstr "Parcelles cadastrales obligatoires pour les Unités d'Enregistrement"
-#: models.py:1919
+#: models.py:1934
msgid "Home page"
msgstr "Page d'accueil"
-#: models.py:1920
+#: models.py:1935
#, python-brace-format
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
@@ -1309,23 +1309,23 @@ msgstr ""
"défaut apparaît. Utiliser la syntaxe Markdown. {random_image} peut être "
"utilisé pour afficher une image au hasard."
-#: models.py:1924
+#: models.py:1939
msgid "Main operation code prefix"
msgstr "Préfixe principal pour le code opération"
-#: models.py:1928
+#: models.py:1943
msgid "Default operation code prefix"
msgstr "Préfixe par défaut pour le code opération"
-#: models.py:1932
+#: models.py:1947
msgid "Operation region code"
msgstr "Code région des opérations"
-#: models.py:1936
+#: models.py:1951
msgid "File external id"
msgstr "Identifiant de fichier"
-#: models.py:1938
+#: models.py:1953
msgid ""
"Formula to manage file external ID. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
@@ -1335,11 +1335,11 @@ msgstr ""
" Une formule incorrecte peut rendre l'application inutilisable et l'import "
"de données externes peut alors être destructif."
-#: models.py:1943
+#: models.py:1958
msgid "Parcel external id"
msgstr "Identifiant de parcelle"
-#: models.py:1946
+#: models.py:1961
msgid ""
"Formula to manage parcel external ID. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
@@ -1349,11 +1349,11 @@ msgstr ""
"précaution. Une formule incorrecte peut rendre l'application inutilisable et "
"l'import de données externes peut alors être destructif."
-#: models.py:1951
+#: models.py:1966
msgid "Context record external id"
msgstr "Identifiant d'unité d'enregistrement"
-#: models.py:1953
+#: models.py:1968
msgid ""
"Formula to manage context record external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
@@ -1363,11 +1363,11 @@ msgstr ""
"avec précaution. Une formule incorrecte peut rendre l'application "
"inutilisable et l'import de données externes peut alors être destructif."
-#: models.py:1958
+#: models.py:1973
msgid "Base find external id"
msgstr "Identifiant de mobilier d'origine"
-#: models.py:1960
+#: models.py:1975
msgid ""
"Formula to manage base find external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
@@ -1377,11 +1377,11 @@ msgstr ""
"précaution. Une formule incorrecte peut rendre l'application inutilisable et "
"l'import de données externes peut alors être destructif."
-#: models.py:1965
+#: models.py:1980
msgid "Find external id"
msgstr "Identifiant de mobilier"
-#: models.py:1967
+#: models.py:1982
msgid ""
"Formula to manage find external ID. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
@@ -1391,11 +1391,11 @@ msgstr ""
" Une formule incorrecte peut rendre l'application inutilisable et l'import "
"de données externes peut alors être destructif."
-#: models.py:1972
+#: models.py:1987
msgid "Container external id"
msgstr "ID du contenant"
-#: models.py:1974
+#: models.py:1989
msgid ""
"Formula to manage container external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
@@ -1405,11 +1405,11 @@ msgstr ""
"précaution. Une formule incorrecte peut rendre l'application inutilisable et "
"l'import de données externes peut alors être destructif."
-#: models.py:1979
+#: models.py:1994
msgid "Warehouse external id"
msgstr "Identifiant du lieu de conservation"
-#: models.py:1981
+#: models.py:1996
msgid ""
"Formula to manage warehouse external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
@@ -1419,11 +1419,11 @@ msgstr ""
"avec précaution. Une formule incorrecte peut rendre l'application "
"inutilisable et l'import de données externes peut alors être destructif."
-#: models.py:1986
+#: models.py:2001
msgid "Raw name for person"
msgstr "Nom brut pour une personne"
-#: models.py:1988
+#: models.py:2003
msgid ""
"Formula to manage person raw_name. Change this with care. With incorrect "
"formula, the application might be unusable and import of external data can "
@@ -1433,27 +1433,27 @@ msgstr ""
"Une formule incorrecte peut rendre l'application inutilisable et l'import de "
"données externes peut alors être destructif."
-#: models.py:1992
+#: models.py:2007
msgid "Use auto index for finds"
msgstr "Utiliser les indexes automatique pour le mobilier"
-#: models.py:1994
+#: models.py:2009
msgid "Currency"
msgstr "Devise"
-#: models.py:1998
+#: models.py:2013
msgid "Ishtar site profile"
msgstr "Profil d'instance Ishtar"
-#: models.py:1999
+#: models.py:2014
msgid "Ishtar site profiles"
msgstr "Profils d'instance Ishtar"
-#: models.py:2083
+#: models.py:2098
msgid "Enable this form"
msgstr "Activer ce formulaire"
-#: models.py:2084
+#: models.py:2099
msgid ""
"Disable with caution: disabling a form with mandatory fields may lead to "
"database errors."
@@ -1461,11 +1461,11 @@ msgstr ""
"Désactiver avec précaution : désactiver un formulaire avec des champs "
"obligatoires peut entraîner des erreurs dans la base de données."
-#: models.py:2087
+#: models.py:2102
msgid "Apply to all"
msgstr "S'applique à tous"
-#: models.py:2088
+#: models.py:2103
msgid ""
"Apply this form to all users. If set to True, selecting user and user type "
"is useless."
@@ -1473,48 +1473,48 @@ msgstr ""
"Activer ce formulaire pour tous les utilisateurs. Si mis à Vrai, "
"sélectionner des utilisateurs ou des types d'utilisateurs est inutile."
-#: models.py:2094
+#: models.py:2109
msgid "Custom form"
msgstr "Formulaire personnalisé"
-#: models.py:2095
+#: models.py:2110
msgid "Custom forms"
msgstr "Formulaires personnalisés"
-#: models.py:2111
+#: models.py:2126
msgid "User types"
msgstr "Types d'utilisateur"
-#: models.py:2183
+#: models.py:2198
msgid "Excluded field"
msgstr "Champ exclus"
-#: models.py:2184
+#: models.py:2199
msgid "Excluded fields"
msgstr "Champs exclus"
-#: models.py:2194 templates/blocks/form_flex_snippet.html:18
+#: models.py:2209 templates/blocks/form_flex_snippet.html:18
#: templates/blocks/table_form_snippet.html:9
msgid "Help"
msgstr "Aide"
-#: models.py:2197
+#: models.py:2212
msgid "Custom form - Json data field"
msgstr "Formulaire personnalisé - Champ de donnée Json"
-#: models.py:2198
+#: models.py:2213
msgid "Custom form - Json data fields"
msgstr "Formulaire personnalisé - Champs de donnée Json"
-#: models.py:2202
+#: models.py:2217
msgid "Variable name"
msgstr "Nom de la variable"
-#: models.py:2203
+#: models.py:2218
msgid "Description of the variable"
msgstr "Description de la variable"
-#: models.py:2205 models_imports.py:564
+#: models.py:2220 models_imports.py:564
#: templates/ishtar/formset_import_match.html:22
#: templates/ishtar/import_step_by_step.html:172
#: templates/ishtar/import_step_by_step.html:200
@@ -1522,545 +1522,545 @@ msgstr "Description de la variable"
msgid "Value"
msgstr "Valeur"
-#: models.py:2208
+#: models.py:2223
msgid "Global variable"
msgstr "Variable globale"
-#: models.py:2335 models.py:2365
+#: models.py:2351 models.py:2381
msgid "Total"
msgstr "Total"
-#: models.py:2342 models.py:2529 models.py:2545
+#: models.py:2358 models.py:2545 models.py:2561
#: templates/ishtar/dashboards/dashboard_main_detail.html:211
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:5
#: templates/ishtar/sheet_person.html:30
msgid "Number"
msgstr "Nombre"
-#: models.py:2429
+#: models.py:2445
msgid "Administrative Act"
msgstr "Acte administratif"
-#: models.py:2436
+#: models.py:2452
msgid "Associated object"
msgstr "Objet associé"
-#: models.py:2441
+#: models.py:2457
msgid "Document template"
msgstr "Patron de document"
-#: models.py:2442
+#: models.py:2458
msgid "Document templates"
msgstr "Patrons de document"
-#: models.py:2533 models.py:2546 models.py:4285 models_imports.py:853
+#: models.py:2549 models.py:2562 models.py:4304 models_imports.py:853
msgid "State"
msgstr "État"
-#: models.py:2551 models.py:4007 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:2567 models.py:4024 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr "Département"
-#: models.py:2552
+#: models.py:2568
msgid "Departments"
msgstr "Départements"
-#: models.py:2592
+#: models.py:2608
msgid "Raw phone"
msgstr "Téléphone brut"
-#: models.py:2598
+#: models.py:2614
msgid "Alternative address is prefered"
msgstr "L'adresse alternative est préférée"
-#: models.py:2637
+#: models.py:2653
msgid "Tel: "
msgstr "Tél :"
-#: models.py:2641
+#: models.py:2657
msgid "Mobile: "
msgstr "Mobile :"
-#: models.py:2645
+#: models.py:2661
msgid "Email: "
msgstr "Courriel :"
-#: models.py:2650
+#: models.py:2666
msgid "Merge key"
msgstr "Clé de fusion"
-#: models.py:2722
+#: models.py:2738
msgid "Organization types"
msgstr "Types d'organisation"
-#: models.py:2749 models.py:2896 models.py:3303
+#: models.py:2765 models.py:2913 models.py:3320
msgctxt "key for text search"
msgid "name"
msgstr "nom"
-#: models.py:2753 models.py:2908 models.py:3315 models.py:3639
+#: models.py:2769 models.py:2925 models.py:3332 models.py:3656
msgctxt "key for text search"
msgid "type"
msgstr "type"
-#: models.py:2768 models.py:2947 models.py:3498 models.py:4015
+#: models.py:2784 models.py:2964 models.py:3515 models.py:4032
msgid "Cached name"
msgstr "Nom en cache"
-#: models.py:2774
+#: models.py:2790
msgid "Organizations"
msgstr "Organisations"
-#: models.py:2804
+#: models.py:2821
msgid "unknown organization"
msgstr "organisation inconnue"
-#: models.py:2830
+#: models.py:2847
msgid "Person types"
msgstr "Types de personne"
-#: models.py:2843 models_imports.py:670
+#: models.py:2860 models_imports.py:670
msgid "Title type"
msgstr "Type de titre"
-#: models.py:2844
+#: models.py:2861
msgid "Title types"
msgstr "Types de titre"
-#: models.py:2868
+#: models.py:2885
msgid "Mr"
msgstr "M."
-#: models.py:2869
+#: models.py:2886
msgid "Miss"
msgstr "Mlle"
-#: models.py:2870
+#: models.py:2887
msgid "Mr and Mrs"
msgstr "M. et Mme"
-#: models.py:2871
+#: models.py:2888
msgid "Mrs"
msgstr "Mme"
-#: models.py:2872
+#: models.py:2889
msgid "Doctor"
msgstr "Dr."
-#: models.py:2900 models.py:3307
+#: models.py:2917 models.py:3324
msgctxt "key for text search"
msgid "surname"
msgstr "prenom"
-#: models.py:2904 models.py:3311
+#: models.py:2921 models.py:3328
msgctxt "key for text search"
msgid "email"
msgstr "courriel"
-#: models.py:2912 models.py:3319
+#: models.py:2929 models.py:3336
msgctxt "key for text search"
msgid "organization"
msgstr "organisation"
-#: models.py:2916
+#: models.py:2933
msgctxt "key for text search"
msgid "has-account"
msgstr "a-un-compte"
-#: models.py:2940
+#: models.py:2957
msgid "Contact type"
msgstr "Type de contact"
-#: models.py:2943 models.py:3033
+#: models.py:2960 models.py:3050
msgid "Types"
msgstr "Types"
-#: models.py:2946
+#: models.py:2963
msgid "Is attached to"
msgstr "Est rattaché à"
-#: models.py:2953
+#: models.py:2970
msgid "Persons"
msgstr "Personnes"
-#: models.py:3171
+#: models.py:3188
msgid "Groups"
msgstr "Groupes"
-#: models.py:3176
+#: models.py:3193
msgid "Profile types"
msgstr "Types de profil"
-#: models.py:3187
+#: models.py:3204
msgid "Profile type summary"
msgstr "Résumé du type de profil"
-#: models.py:3188
+#: models.py:3205
msgid "Profile types summary"
msgstr "Résumés des types de profil"
-#: models.py:3199
+#: models.py:3216
msgid "Show field number"
msgstr "Afficher les numéros des champs"
-#: models.py:3200
+#: models.py:3217
msgid "Automatically pin"
msgstr "Épingler automatiquement"
-#: models.py:3201
+#: models.py:3218
msgid "Display pin menu"
msgstr "Montrer le menu d'épinglage"
-#: models.py:3207
+#: models.py:3224
msgid "User profile"
msgstr "Profil d'utilisateur"
-#: models.py:3208
+#: models.py:3225
msgid "User profiles"
msgstr "Profils d'utilisateurs"
-#: models.py:3243
+#: models.py:3260
msgid " - duplicate"
msgstr "- copie"
-#: models.py:3299
+#: models.py:3316
msgctxt "key for text search"
msgid "username"
msgstr "nom-utilisateur"
-#: models.py:3335
+#: models.py:3352
msgid "Advanced shortcut menu"
msgstr "Menu de raccourci (avancé)"
-#: models.py:3338
+#: models.py:3355
msgid "Ishtar user"
msgstr "Utilisateur d'Ishtar"
-#: models.py:3339
+#: models.py:3356
msgid "Ishtar users"
msgstr "Utilisateurs d'Ishtar"
-#: models.py:3424
+#: models.py:3441
msgid "Owner"
msgstr "Propriétaire"
-#: models.py:3427
+#: models.py:3444
msgid "Shared with"
msgstr "Partagé avec"
-#: models.py:3469
+#: models.py:3486
msgid "Author types"
msgstr "Types d'auteur"
-#: models.py:3544
+#: models.py:3561
msgid "Source types"
msgstr "Types de document"
-#: models.py:3554 models_imports.py:669
+#: models.py:3571 models_imports.py:669
msgid "Support type"
msgstr "Type de support"
-#: models.py:3555
+#: models.py:3572
msgid "Support types"
msgstr "Types de support"
-#: models.py:3564
+#: models.py:3581
msgid "Format type"
msgstr "Type de format"
-#: models.py:3565
+#: models.py:3582
msgid "Format types"
msgstr "Types de format"
-#: models.py:3574
+#: models.py:3591
msgid "URL"
msgstr "URL"
-#: models.py:3577
+#: models.py:3594
msgid "License type"
msgstr "Type de licence"
-#: models.py:3578
+#: models.py:3595
msgid "License types"
msgstr "Types de licence"
-#: models.py:3631
+#: models.py:3648
msgctxt "key for text search"
msgid "author"
msgstr "auteur"
-#: models.py:3635
+#: models.py:3652
msgctxt "key for text search"
msgid "title"
msgstr "titre"
-#: models.py:3643
+#: models.py:3660
msgctxt "key for text search"
msgid "reference"
msgstr "reference"
-#: models.py:3647
+#: models.py:3664
msgctxt "key for text search"
msgid "internal-reference"
msgstr "reference-interne"
-#: models.py:3651
+#: models.py:3668
msgctxt "key for text search"
msgid "description"
msgstr "description"
-#: models.py:3655
+#: models.py:3672
msgctxt "key for text search"
msgid "comment"
msgstr "commentaire"
-#: models.py:3659
+#: models.py:3676
msgctxt "key for text search"
msgid "additional-information"
msgstr "informations-supplementaires"
-#: models.py:3663
+#: models.py:3680
msgctxt "key for text search"
msgid "has-duplicate"
msgstr "existe-en-doublon"
-#: models.py:3667 models.py:3714
+#: models.py:3684 models.py:3731
msgctxt "key for text search"
msgid "operation"
msgstr "operation"
-#: models.py:3671 models.py:3717
+#: models.py:3688 models.py:3734
msgctxt "key for text search"
msgid "context-record"
msgstr "ue"
-#: models.py:3675 models.py:3719
+#: models.py:3692 models.py:3736
msgctxt "key for text search"
msgid "find"
msgstr "mobilier"
-#: models.py:3679 models.py:3718
+#: models.py:3696 models.py:3735
msgctxt "key for text search"
msgid "file"
msgstr "dossier"
-#: models.py:3683 models.py:3720
+#: models.py:3700 models.py:3737
msgctxt "key for text search"
msgid "site"
msgstr "site"
-#: models.py:3687 models.py:3721
+#: models.py:3704 models.py:3738
msgctxt "key for text search"
msgid "warehouse"
msgstr "depot"
-#: models.py:3723
+#: models.py:3740
msgctxt "key for text search"
msgid "treatment"
msgstr "traitement"
-#: models.py:3726
+#: models.py:3743
msgctxt "key for text search"
msgid "treatment-file"
msgstr "dossier-traitement"
-#: models.py:3732
+#: models.py:3749
msgid "Index"
msgstr "Index"
-#: models.py:3734
+#: models.py:3751
msgid "External ID"
msgstr "Identifiant"
-#: models.py:3735 templates/ishtar/blocks/window_image_detail.html:34
+#: models.py:3752 templates/ishtar/blocks/window_image_detail.html:34
msgid "Ref."
msgstr "Réf."
-#: models.py:3736 templates/ishtar/blocks/window_image_detail.html:44
+#: models.py:3753 templates/ishtar/blocks/window_image_detail.html:44
msgid "Internal ref."
msgstr "Réf. interne"
-#: models.py:3740
+#: models.py:3757
msgid "License"
msgstr "Licence"
-#: models.py:3742 templates/ishtar/blocks/window_image_detail.html:78
+#: models.py:3759 templates/ishtar/blocks/window_image_detail.html:78
msgid "Support"
msgstr "Support"
-#: models.py:3744 models_imports.py:635
+#: models.py:3761 models_imports.py:635
#: templates/ishtar/blocks/window_image_detail.html:88
msgid "Format"
msgstr "Format"
-#: models.py:3746 templates/ishtar/blocks/window_image_detail.html:98
+#: models.py:3763 templates/ishtar/blocks/window_image_detail.html:98
msgid "Scale"
msgstr "Échelle"
-#: models.py:3750
+#: models.py:3767
msgid "Authors (raw)"
msgstr "Auteurs (brut)"
-#: models.py:3762 templates/ishtar/blocks/window_image_detail.html:118
+#: models.py:3779 templates/ishtar/blocks/window_image_detail.html:118
msgid "Number of items"
msgstr "Nombre d'éléments"
-#: models.py:3769
+#: models.py:3786
msgid "Symbolic links"
msgstr "Liens symboliques"
-#: models.py:3772
+#: models.py:3789
msgid "Related"
msgstr "Lié"
-#: models.py:3773
+#: models.py:3790
msgid "Cached value - do not edit"
msgstr "Valeur en cache - ne pas éditer"
-#: models.py:3776 templates/ishtar/sheet_document.html:4
+#: models.py:3793 templates/ishtar/sheet_document.html:4
msgid "Document"
msgstr "Document"
-#: models.py:3777 templates/ishtar/sheet_person.html:113
+#: models.py:3794 templates/ishtar/sheet_person.html:113
msgid "Documents"
msgstr "Documents"
-#: models.py:3781
+#: models.py:3798
msgid "Can view all Documents"
msgstr "Peut voir tous les Documents"
-#: models.py:3783
+#: models.py:3800
msgid "Can view own Document"
msgstr "Peut voir ses propres Documents"
-#: models.py:3785
+#: models.py:3802
msgid "Can add own Document"
msgstr "Peut ajouter son propre Document"
-#: models.py:3787
+#: models.py:3804
msgid "Can change own Document"
msgstr "Peut modifier ses propres documents"
-#: models.py:3789
+#: models.py:3806
msgid "Can delete own Document"
msgstr "Peut supprimer ses propres Documents"
-#: models.py:4000
+#: models.py:4017
msgid "Surface (m2)"
msgstr "Surface (m2)"
-#: models.py:4001
+#: models.py:4018
msgid "Localisation"
msgstr "Localisation"
-#: models.py:4009
+#: models.py:4026
msgid "Year of creation"
msgstr "Année de création"
-#: models.py:4010
+#: models.py:4027
msgid ""
"Filling this field is relevant to distinguish old towns from new towns."
msgstr ""
"Remplir ce champ est nécessaire pour distinguer les anciennes communes des "
"nouvelles communes."
-#: models.py:4142
+#: models.py:4159
msgid "Only four level of parent are managed."
msgstr "Seulement quatre niveaux de parents sont gérés."
-#: models.py:4147
+#: models.py:4164
msgid "Area"
msgstr "Zone"
-#: models.py:4166
+#: models.py:4183
msgid "Is preventive"
msgstr "Est du préventif"
-#: models.py:4167
+#: models.py:4184
msgid "Is judiciary"
msgstr "Est judiciaire"
-#: models.py:4170 models_imports.py:636
+#: models.py:4187 models_imports.py:636
msgid "Operation type"
msgstr "Type d'opération"
-#: models.py:4171
+#: models.py:4188
msgid "Operation types"
msgstr "Types d'opération"
-#: models.py:4210
+#: models.py:4227
msgid "Judiciary"
msgstr "Judiciaire"
-#: models.py:4212
+#: models.py:4229
msgid "Preventive"
msgstr "Préventif"
-#: models.py:4214
+#: models.py:4231
msgid "Research"
msgstr "Programmé"
-#: models.py:4249
+#: models.py:4266
msgid "Authority name"
msgstr "Registre"
-#: models.py:4250
+#: models.py:4267
msgid "Authority SRID"
msgstr "SRID"
-#: models.py:4253 models_imports.py:668
+#: models.py:4270 models_imports.py:668
msgid "Spatial reference system"
msgstr "Système de référence spatiale"
-#: models.py:4254
+#: models.py:4271
msgid "Spatial reference systems"
msgstr "Systèmes de référence spatiale"
-#: models.py:4261
+#: models.py:4280
msgid "Filename"
msgstr "Nom de fichier"
-#: models.py:4266
+#: models.py:4285
msgid "Administration script"
msgstr "Script d'administration"
-#: models.py:4267
+#: models.py:4286
msgid "Administration scripts"
msgstr "Scripts d'administration"
-#: models.py:4274
+#: models.py:4293
msgid "Scheduled"
msgstr "Planifié"
-#: models.py:4275
+#: models.py:4294
msgid "In progress"
msgstr "En cours"
-#: models.py:4276 models_imports.py:792
+#: models.py:4295 models_imports.py:792
msgid "Finished with errors"
msgstr "Terminé avec des erreurs"
-#: models.py:4277 models_imports.py:793
+#: models.py:4296 models_imports.py:793
msgid "Finished"
msgstr "Terminé"
-#: models.py:4290
+#: models.py:4309
msgid "Result"
msgstr "Résultat"
-#: models.py:4293
+#: models.py:4312
msgid "Administration task"
msgstr "Tâche d'administration"
-#: models.py:4294
+#: models.py:4313
msgid "Administration tasks"
msgstr "Tâches d'administration"
-#: models.py:4298
+#: models.py:4317
msgid "Unknown"
msgstr "Inconnu"
-#: models.py:4313
+#: models.py:4332
msgid ""
"ISHTAR_SCRIPT_DIR is not set in your local_settings. Contact your "
"administrator."
@@ -2068,7 +2068,7 @@ msgstr ""
"ISHTAR_SCRIPT_DIR n'est pas défini dans votre fichier local_settings. "
"Contactez l'administrateur."
-#: models.py:4322
+#: models.py:4341
msgid ""
"Your ISHTAR_SCRIPT_DIR is containing dots \"..\". As it can refer to "
"relative paths, it can be a security issue and this is not allowed. Only put "
@@ -2079,11 +2079,11 @@ msgstr ""
"problème de sécurité et cela n'est pas permis. Seul un chemin complet est "
"permis."
-#: models.py:4333
+#: models.py:4352
msgid "Your ISHTAR_SCRIPT_DIR: \"{}\" is not a valid directory."
msgstr "ISHTAR_SCRIPT_DIR: « {} » n'est pas un répertoire valable."
-#: models.py:4349
+#: models.py:4368
msgid ""
"Script \"{}\" is not available in your script directory. Check your "
"configuration."
@@ -2679,49 +2679,53 @@ msgid " items added."
msgstr "Éléments ajoutés."
#: templates/base.html:47
+msgid "Select only one item."
+msgstr "Sélectionnez seulement un seul élément."
+
+#: templates/base.html:48
msgid "yes"
msgstr "oui"
-#: templates/base.html:48
+#: templates/base.html:49
msgid "no"
msgstr "non"
-#: templates/base.html:49
+#: templates/base.html:50
msgid "Autorefresh start. The form is disabled."
msgstr "Rafraîchissement automatique activé. Le formulaire est désactivé."
-#: templates/base.html:50
+#: templates/base.html:51
msgid "Autorefresh end. The form is re-enabled."
msgstr "Rafraîchissement automatique désactivé. Le formulaire est ré-activé."
-#: templates/base.html:81
+#: templates/base.html:82
msgid "Current items"
msgstr "Éléments courants"
-#: templates/base.html:83 templates/ishtar/forms/qa_base.html:34
+#: templates/base.html:84 templates/ishtar/forms/qa_base.html:34
#: templates/ishtar/forms/qa_form.html:21 templates/ishtar/manage_basket.html:4
#: templates/welcome.html:11 templates/welcome.html:12
#: templates/welcome.html:13 templates/welcome.html:14 wizards.py:423
msgid ":"
msgstr " :"
-#: templates/base.html:96
+#: templates/base.html:97
msgid "Sheets"
msgstr "Fiches"
-#: templates/base.html:146
+#: templates/base.html:158
msgid "Processing..."
msgstr "En traitement..."
-#: templates/base.html:148
+#: templates/base.html:160
msgid "This can be long."
msgstr "Cela peut être long."
-#: templates/base.html:150
+#: templates/base.html:162
msgid "Time to take a coffee?"
msgstr "Il est peut-être temps de prendre un café ?"
-#: templates/base.html:152
+#: templates/base.html:164
msgid "Time to take another coffee?"
msgstr "Pourquoi pas un autre café ?"
@@ -2937,6 +2941,10 @@ msgstr "ID interne"
msgid "Data"
msgstr "Données"
+#: templates/ishtar/blocks/sheet_json.html:9
+msgid "No data"
+msgstr "Pas de données"
+
#: templates/ishtar/blocks/window_image_detail.html:64
msgid "Licenses"
msgstr "Licences"
@@ -3779,11 +3787,11 @@ msgstr "Marque-pages"
msgid "No"
msgstr "Non"
-#: templatetags/window_tables.py:88 widgets.py:1065
+#: templatetags/window_tables.py:88 widgets.py:1064
msgid "No results"
msgstr "Pas de résultats"
-#: templatetags/window_tables.py:89 widgets.py:1066
+#: templatetags/window_tables.py:89 widgets.py:1065
msgid "Loading..."
msgstr "Chargement..."
@@ -3792,15 +3800,15 @@ msgid "You don't have sufficient permissions to do this action."
msgstr ""
"Vous n'avez pas les permissions suffisantes pour effectuer cette action."
-#: utils.py:338
+#: utils.py:344
msgid " (...)"
msgstr " (...)"
-#: utils.py:418
+#: utils.py:424
msgid "Information"
msgstr "Information"
-#: utils.py:419
+#: utils.py:425
msgid "Load another random image?"
msgstr "Charger une autre image au hasard ?"
@@ -3970,7 +3978,7 @@ msgstr "Recherche..."
msgid "Previous value:"
msgstr "Valeur précédente :"
-#: widgets.py:1067
+#: widgets.py:1066
msgid "Remove"
msgstr "Enlever"
--
cgit v1.2.3
From 71f84bfa3da9db01215cc61318d6a1e3f8536c28 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Wed, 21 Nov 2018 12:25:35 +0100
Subject: Fix imports logic
---
.../migrations/0041_auto_20181121_1225.py | 24 ++++++++++++++++++++++
archaeological_finds/models_finds.py | 4 ++++
archaeological_finds/models_treatments.py | 3 ---
3 files changed, 28 insertions(+), 3 deletions(-)
create mode 100644 archaeological_finds/migrations/0041_auto_20181121_1225.py
diff --git a/archaeological_finds/migrations/0041_auto_20181121_1225.py b/archaeological_finds/migrations/0041_auto_20181121_1225.py
new file mode 100644
index 000000000..248dc6499
--- /dev/null
+++ b/archaeological_finds/migrations/0041_auto_20181121_1225.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2018-11-21 12:25
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('archaeological_finds', '0040_auto_20181120_1027'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='treatment',
+ name='finds',
+ ),
+ migrations.AddField(
+ model_name='find',
+ name='treatments',
+ field=models.ManyToManyField(blank=True, help_text='Related treatments when no new find is created', related_name='finds', to='archaeological_finds.Treatment', verbose_name='Treatments'),
+ ),
+ ]
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index c7bd3f64e..a3aaae50d 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -1097,6 +1097,10 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,
documents = models.ManyToManyField(
Document, related_name='finds', verbose_name=_(u"Documents"),
blank=True)
+ treatments = models.ManyToManyField(
+ "Treatment", verbose_name=_(u"Treatments"),
+ related_name='finds', blank=True,
+ help_text=_(u"Related treatments when no new find is created"))
cached_label = models.TextField(_(u"Cached name"), null=True, blank=True,
db_index=True)
history = HistoricalRecords()
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index b1ad5fa41..48da7c8ec 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -152,9 +152,6 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
start_date = models.DateField(_(u"Start date"), blank=True, null=True)
end_date = models.DateField(_(u"Closing date"), blank=True, null=True)
creation_date = models.DateTimeField(default=datetime.datetime.now)
- finds = models.ManyToManyField(
- "Find", verbose_name=_(u"Finds"), related_name='treatments', blank=True,
- help_text=_(u"Related finds for non-destructive treatment"))
container = models.ForeignKey(Container, verbose_name=_(u"Container"),
blank=True, null=True)
estimated_cost = models.FloatField(_(u"Estimated cost"),
--
cgit v1.2.3
From 50c110423360b4fe5b44409ebeb26721e929623a Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Thu, 22 Nov 2018 12:52:11 +0100
Subject: Fix packaging creation and treatment tests
---
archaeological_finds/models_treatments.py | 6 +++++-
archaeological_finds/tests.py | 28 +++++++++++++++++++++-------
archaeological_warehouse/urls.py | 3 ++-
archaeological_warehouse/wizards.py | 2 ++
4 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index 48da7c8ec..bc5eace58 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -470,7 +470,11 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,
# manage containers
if not self.container:
return
- for find in Find.objects.filter(upstream_treatment=self).all():
+ if create_new_find:
+ q = Find.objects.filter(upstream_treatment=self)
+ else:
+ q = Find.objects.filter(treatments=self)
+ for find in q.all():
if find.container != self.container:
find.container = self.container
if find.pk in updated:
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py
index a55e075b7..b5ec5de83 100644
--- a/archaeological_finds/tests.py
+++ b/archaeological_finds/tests.py
@@ -258,9 +258,10 @@ class TreatmentWizardCreationTest(WizardTest, FindInit, TestCase):
treat = models.Treatment.objects.order_by('-pk').all()[0]
self.find = models.Find.objects.get(pk=self.find.pk)
self.assertEqual(models.Find.objects.filter(
- upstream_treatment=treat).count(), 1)
- self.assertEqual(self.find.downstream_treatment,
- treat)
+ treatments=treat).count(), 1)
+ # TODO: test treatment with new find creation
+ # self.assertEqual(self.find.downstream_treatment,
+ # treat)
class ImportFindTest(ImportTest, TestCase):
@@ -832,18 +833,26 @@ class PackagingTest(FindInit, TestCase):
self.basket.items.add(find)
self.other_basket.items.add(find)
- def testPackaging(self):
+ def test_packaging_with_new_find_creation(self):
treatment_type = models.TreatmentType.objects.get(txt_idx='packaging')
+ # make packaging a treatment with a new version of the find created
+ treatment_type.create_new_find = True
+ treatment_type.save()
+
treatment = models.Treatment()
items_nb = models.Find.objects.count()
first_find = self.finds[0]
- treatment.save(user=self.get_default_user(), items=self.basket)
+ treatment.save(user=self.get_default_user(), items=self.basket,
+ treatment_type_list=[treatment_type])
+ treatment.treatment_types.add(treatment_type)
+
+
+
self.assertEqual(items_nb + self.basket.items.count(),
models.Find.objects.count(),
msg="Packaging doesn't generate enough new finds")
- treatment.treatment_types.add(treatment_type)
resulting_find = models.Find.objects.get(
upstream_treatment__upstream=first_find,
@@ -869,10 +878,15 @@ class PackagingTest(FindInit, TestCase):
def test_delete(self):
# manage treatment deletion
treatment_type = models.TreatmentType.objects.get(txt_idx='packaging')
+ # make packaging a treatment with a new version of the find created
+ treatment_type.create_new_find = True
+ treatment_type.save()
+
treatment = models.Treatment()
initial_find = self.finds[0]
- treatment.save(user=self.get_default_user(), items=self.basket)
+ treatment.save(user=self.get_default_user(), items=self.basket,
+ treatment_type_list=[treatment_type])
treatment.treatment_types.add(treatment_type)
resulting_find = models.Find.objects.get(
diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py
index fa895b7c4..947129c82 100644
--- a/archaeological_warehouse/urls.py
+++ b/archaeological_warehouse/urls.py
@@ -29,7 +29,8 @@ from archaeological_warehouse import models
# forms
urlpatterns = [
url(r'warehouse_packaging/(?P.+)?$',
- views.warehouse_packaging_wizard, name='warehouse_packaging'),
+ check_rights(['change_find', 'change_own_find'])(
+ views.warehouse_packaging_wizard), name='warehouse_packaging'),
url(r'new-warehouse/(?P.+)?/$',
views.new_warehouse, name='new-warehouse'),
diff --git a/archaeological_warehouse/wizards.py b/archaeological_warehouse/wizards.py
index a0d46e892..03258f1e2 100644
--- a/archaeological_warehouse/wizards.py
+++ b/archaeological_warehouse/wizards.py
@@ -60,6 +60,8 @@ class PackagingWizard(TreatmentWizard):
items = dct.pop('basket')
else:
dct.pop('basket')
+ if 'treatment_type_list' in dct:
+ dct.pop('treatment_type_list')
treatment = Treatment(**dct)
extra_args_for_new = {"container": dct['container']}
treatment.save(items=items, user=self.request.user,
--
cgit v1.2.3
From 2368d17bed1813b958b97f173426ed35acdf1afc Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Thu, 22 Nov 2018 22:39:27 +0100
Subject: Sheet: fix treatment file edit
---
archaeological_finds/ishtar_menu.py | 16 +++---
archaeological_finds/models_treatments.py | 16 ++----
fixtures/initial_data-auth-fr.json | 65 ++++++----------------
.../0076_migrate_treatmentfile_permissions.py | 34 +++++++++++
4 files changed, 63 insertions(+), 68 deletions(-)
create mode 100644 ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py
diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py
index 2f37f4c4b..cf903e2f5 100644
--- a/archaeological_finds/ishtar_menu.py
+++ b/archaeological_finds/ishtar_menu.py
@@ -99,23 +99,23 @@ MENU_SECTIONS = [
MenuItem('treatmentfle_search',
_(u"Search"),
model=models.TreatmentFile,
- access_controls=['view_filetreatment',
- 'view_own_filetreatment']),
+ access_controls=['view_treatmentfile',
+ 'view_own_treatmentfile']),
MenuItem('treatmentfle_creation',
_(u"Creation"),
model=models.TreatmentFile,
- access_controls=['change_filetreatment',
- 'change_own_filetreatment']),
+ access_controls=['change_treatmentfile',
+ 'change_own_treatmentfile']),
MenuItem('treatmentfle_modification',
_(u"Modification"),
model=models.TreatmentFile,
- access_controls=['change_filetreatment',
- 'change_own_filetreatment']),
+ access_controls=['change_treatmentfile',
+ 'change_own_treatmentfile']),
MenuItem('treatmentfle_deletion',
_(u"Deletion"),
model=models.TreatmentFile,
- access_controls=['change_filetreatment',
- 'change_own_filetreatment']),
+ access_controls=['change_treatmentfile',
+ 'change_own_treatmentfile']),
SectionItem(
'admin_act_fletreatments', _(u"Administrative act"),
childs=[
diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py
index bc5eace58..a902741a3 100644
--- a/archaeological_finds/models_treatments.py
+++ b/archaeological_finds/models_treatments.py
@@ -782,21 +782,15 @@ class TreatmentFile(DashboardFormItem, ClosedItem, BaseHistorizedItem,
verbose_name_plural = _(u"Treatment requests")
unique_together = ('year', 'index')
permissions = (
- ("view_filetreatment",
+ ("view_treatmentfile",
u"Can view all Treatment requests"),
- ("add_filetreatment",
- u"Can add Treatment request"),
- ("change_filetreatment",
- u"Can change Treatment request"),
- ("delete_filetreatment",
- u"Can delete Treatment request"),
- ("view_own_filetreatment",
+ ("view_own_treatmentfile",
u"Can view own Treatment request"),
- ("add_own_filetreatment",
+ ("add_own_treatmentfile",
u"Can add own Treatment request"),
- ("change_own_filetreatment",
+ ("change_own_treatmentfile",
u"Can change own Treatment request"),
- ("delete_own_filetreatment",
+ ("delete_own_treatmentfile",
u"Can delete own Treatment request"),
)
ordering = ('cached_label',)
diff --git a/fixtures/initial_data-auth-fr.json b/fixtures/initial_data-auth-fr.json
index feecf1e8a..64fbd8051 100644
--- a/fixtures/initial_data-auth-fr.json
+++ b/fixtures/initial_data-auth-fr.json
@@ -3849,39 +3849,6 @@
"codename": "delete_historicaltreatmentfile"
}
},
-{
- "model": "auth.permission",
- "fields": {
- "name": "Can add Treatment file",
- "content_type": [
- "archaeological_finds",
- "treatmentfile"
- ],
- "codename": "add_treatmentfile"
- }
-},
-{
- "model": "auth.permission",
- "fields": {
- "name": "Can change Treatment file",
- "content_type": [
- "archaeological_finds",
- "treatmentfile"
- ],
- "codename": "change_treatmentfile"
- }
-},
-{
- "model": "auth.permission",
- "fields": {
- "name": "Can delete Treatment file",
- "content_type": [
- "archaeological_finds",
- "treatmentfile"
- ],
- "codename": "delete_treatmentfile"
- }
-},
{
"model": "auth.permission",
"fields": {
@@ -4121,7 +4088,7 @@
"archaeological_finds",
"treatmentfile"
],
- "codename": "view_filetreatment"
+ "codename": "view_treatmentfile"
}
},
{
@@ -4132,7 +4099,7 @@
"archaeological_finds",
"treatmentfile"
],
- "codename": "view_own_filetreatment"
+ "codename": "view_own_treatmentfile"
}
},
{
@@ -4143,7 +4110,7 @@
"archaeological_finds",
"treatmentfile"
],
- "codename": "add_own_filetreatment"
+ "codename": "add_own_treatmentfile"
}
},
{
@@ -4154,7 +4121,7 @@
"archaeological_finds",
"treatmentfile"
],
- "codename": "change_own_filetreatment"
+ "codename": "change_own_treatmentfile"
}
},
{
@@ -4165,7 +4132,7 @@
"archaeological_finds",
"treatmentfile"
],
- "codename": "delete_own_filetreatment"
+ "codename": "delete_own_treatmentfile"
}
},
{
@@ -4308,7 +4275,7 @@
"archaeological_finds",
"treatmentfile"
],
- "codename": "add_filetreatment"
+ "codename": "add_treatmentfile"
}
},
{
@@ -4319,7 +4286,7 @@
"archaeological_finds",
"treatmentfile"
],
- "codename": "change_filetreatment"
+ "codename": "change_treatmentfile"
}
},
{
@@ -4330,7 +4297,7 @@
"archaeological_finds",
"treatmentfile"
],
- "codename": "delete_filetreatment"
+ "codename": "delete_treatmentfile"
}
},
{
@@ -5935,7 +5902,7 @@
"name": "Demandes de traitement : ajout",
"permissions": [
[
- "add_filetreatment",
+ "add_treatmentfile",
"archaeological_finds",
"treatmentfile"
]
@@ -5948,12 +5915,12 @@
"name": "Demandes de traitement : modification/suppression",
"permissions": [
[
- "change_filetreatment",
+ "change_treatmentfile",
"archaeological_finds",
"treatmentfile"
],
[
- "delete_filetreatment",
+ "delete_treatmentfile",
"archaeological_finds",
"treatmentfile"
]
@@ -5966,7 +5933,7 @@
"name": "Demandes de traitement : lecture",
"permissions": [
[
- "view_filetreatment",
+ "view_treatmentfile",
"archaeological_finds",
"treatmentfile"
]
@@ -5979,7 +5946,7 @@
"name": "Demandes de traitement rattach\u00e9es : ajout",
"permissions": [
[
- "add_own_filetreatment",
+ "add_own_treatmentfile",
"archaeological_finds",
"treatmentfile"
]
@@ -5992,7 +5959,7 @@
"name": "Demandes de traitement rattach\u00e9es : lecture",
"permissions": [
[
- "view_own_filetreatment",
+ "view_own_treatmentfile",
"archaeological_finds",
"treatmentfile"
]
@@ -6005,12 +5972,12 @@
"name": "Demandes de traitement rattach\u00e9es : modification/suppression",
"permissions": [
[
- "change_own_filetreatment",
+ "change_own_treatmentfile",
"archaeological_finds",
"treatmentfile"
],
[
- "delete_own_filetreatment",
+ "delete_own_treatmentfile",
"archaeological_finds",
"treatmentfile"
]
diff --git a/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py b/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py
new file mode 100644
index 000000000..0defa4efe
--- /dev/null
+++ b/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2018-11-22 22:17
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+def migrate_perm(apps, schema_editor):
+ Permission = apps.get_model('auth', 'Permission')
+ Group = apps.get_model('auth', 'Group')
+ for perm in Permission.objects.filter(
+ codename__icontains='filetreatment').exclude(
+ codename__icontains='source').all():
+ new_codename = perm.codename.replace('filetreatment', 'treatmentfile')
+ q = Permission.objects.filter(
+ codename=new_codename).exclude(pk=perm.pk)
+ if q.count():
+ for gp in Group.objects.filter(permissions=q.all()[0]):
+ gp.permissions.add(perm)
+ q.all()[0].delete()
+ print(new_codename)
+ perm.codename = new_codename
+ perm.save()
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0075_auto_20181108_1908'),
+ ]
+
+ operations = [
+ migrations.RunPython(migrate_perm)
+ ]
--
cgit v1.2.3
From 49d001f7620ad4bf6ca8a12cfc2d55109d3f6358 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Thu, 22 Nov 2018 22:51:32 +0100
Subject: Fix modify link on site sheet (refs #4328)
---
archaeological_operations/models.py | 1 +
ishtar_common/templatetags/window_header.py | 10 ++++++++--
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 872d2bf4e..8d2c4e376 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -108,6 +108,7 @@ class ArchaeologicalSite(BaseHistorizedItem, OwnPerms, ValueGetter,
SHOW_URL = 'show-site'
TABLE_COLS = ['reference', 'name', 'towns_label', 'periods', 'remains']
SLUG = 'site'
+ LONG_SLUG = 'archaeologicalsite'
BASE_SEARCH_VECTORS = [
"comment",
diff --git a/ishtar_common/templatetags/window_header.py b/ishtar_common/templatetags/window_header.py
index 18dc793bf..f6fc27082 100644
--- a/ishtar_common/templatetags/window_header.py
+++ b/ishtar_common/templatetags/window_header.py
@@ -10,8 +10,14 @@ def window_nav(context, item, window_id, show_url, modify_url='', histo_url='',
extra_actions = []
if hasattr(item, 'get_extra_actions'):
extra_actions = item.get_extra_actions(context['request'])
- if modify_url and hasattr(item, 'can_do') and hasattr(item, 'SLUG') and \
- not item.can_do(context['request'], 'change_' + item.SLUG):
+
+ slug = None
+ if hasattr(item, "LONG_SLUG"):
+ slug = item.LONG_SLUG
+ elif hasattr(item, "SLUG"):
+ slug = item.SLUG
+ if modify_url and hasattr(item, 'can_do') and slug and \
+ not item.can_do(context['request'], 'change_' + slug):
modify_url = ""
return {
'show_url': show_url,
--
cgit v1.2.3
From bba3881e7f11a27ff9d2f08f92542a2d24cac7c6 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Mon, 26 Nov 2018 20:52:00 +0100
Subject: Sheet treatment: fix document list - improve display with tabs
---
.../templates/ishtar/sheet_treatment.html | 176 +++++++++++++--------
.../0076_migrate_treatmentfile_permissions.py | 1 -
2 files changed, 113 insertions(+), 64 deletions(-)
diff --git a/archaeological_finds/templates/ishtar/sheet_treatment.html b/archaeological_finds/templates/ishtar/sheet_treatment.html
index 94569b5f6..ced305798 100644
--- a/archaeological_finds/templates/ishtar/sheet_treatment.html
+++ b/archaeological_finds/templates/ishtar/sheet_treatment.html
@@ -9,78 +9,128 @@
{% block content %}
-
-
-
- {% include "ishtar/blocks/window_image.html" %}
-
-
-
{{ item.label|default:"" }}
- {% if item.other_reference %}
-
{{ item.other_reference }}
{% endif %}
-
{{ item.year }} - {{ item.index }}
- {% if item.external_id %}
-
{{ item.external_id }}
{% endif %}
- {% if item.end_date %}
-
{% trans "Closed" context "Treatment" %} ({{item.end_date}})
- {% else %}
-
{% trans "Active" context "Treatment" %}
- {% endif %}
-
+
+
+
+
+
+
+
+ {% include "ishtar/blocks/window_image.html" %}
+
+
+
{{ item.label|default:"" }}
+ {% if item.other_reference %}
+
{{ item.other_reference }}
{% endif %}
+
{{ item.year }} - {{ item.index }}
+ {% if item.external_id %}
+
{{ item.external_id }}
{% endif %}
+ {% if item.end_date %}
+
{% trans "Closed" context "Treatment" %} ({{item.end_date}})
+ {% else %}
+
{% trans "Active" context "Treatment" %}
+ {% endif %}
+
+
+
+
+
+ {% field_flex_multiple "Treatment type" item.treatment_types %}
+ {% field_flex "State" item.treatment_state %}
+ {% field_flex_detail "Associated request" item.file %}
+ {% field_flex "Location" item.location %}
+ {% field_flex "Container" item.container %}
+ {% field_flex "Responsible" item.person %}
+ {% field_flex "Organization" item.organization %}
+ {% field_flex "Start date" item.start_date %}
+ {% field_flex "Closing date" item.end_date %}
+ {% field_flex "Estimated cost" item.estimated_cost|intcomma '' " "|add:CURRENCY %}
+ {% field_flex "Quoted cost" item.quoted_cost|intcomma '' " "|add:CURRENCY %}
+ {% field_flex "Realized cost" item.realized_cost|intcomma '' " "|add:CURRENCY %}
+ {% field_flex "Insurance cost" item.insurance_cost|intcomma '' " "|add:CURRENCY %}
+ {% field_flex_full "Comment" item.comment "
" " " %}
+ {% field_flex_full "Description" item.description "
" " " %}
+ {% field_flex_full "Goal" item.goal "
" " " %}
+
+ {% include "ishtar/blocks/sheet_json.html" %}
+
-
-
- {% field_flex_multiple "Treatment type" item.treatment_types %}
- {% field_flex "State" item.treatment_state %}
- {% field_flex_detail "Associated request" item.file %}
- {% field_flex "Location" item.location %}
- {% field_flex "Container" item.container %}
- {% field_flex "Responsible" item.person %}
- {% field_flex "Organization" item.organization %}
- {% field_flex "Start date" item.start_date %}
- {% field_flex "Closing date" item.end_date %}
- {% field_flex "Estimated cost" item.estimated_cost|intcomma '' " "|add:CURRENCY %}
- {% field_flex "Quoted cost" item.quoted_cost|intcomma '' " "|add:CURRENCY %}
- {% field_flex "Realized cost" item.realized_cost|intcomma '' " "|add:CURRENCY %}
- {% field_flex "Insurance cost" item.insurance_cost|intcomma '' " "|add:CURRENCY %}
- {% field_flex_full "Comment" item.comment "
" " " %}
- {% field_flex_full "Description" item.description "
" " " %}
- {% field_flex_full "Goal" item.goal "
" " " %}
-
- {% include "ishtar/blocks/sheet_json.html" %}
-
+
+ {% trans "Related finds" as finds %}
+ {% if item.finds.count %}
+ {% dynamic_table_document finds 'finds_for_treatment' 'treatments' item.pk 'TABLE_COLS_FOR_OPE' output %}
+ {% endif %}
-{% trans "Related finds" as finds %}
-{% if item.finds.count %}
-{% dynamic_table_document finds 'finds_for_treatment' 'treatments' item.pk 'TABLE_COLS_FOR_OPE' output %}
-{% endif %}
+ {% trans "Upstream finds" as finds %}
+ {% if item.upstream.count %}
+ {% dynamic_table_document finds 'finds_for_treatment' 'downstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %}
+ {% endif %}
-{% trans "Upstream finds" as finds %}
-{% if item.upstream.count %}
-{% dynamic_table_document finds 'finds_for_treatment' 'downstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %}
-{% endif %}
+ {% trans "Downstream finds" as finds %}
+ {% if item.downstream.count %}
+ {% dynamic_table_document finds 'finds_for_treatment' 'upstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %}
+ {% endif %}
-{% trans "Downstream finds" as finds %}
-{% if item.downstream.count %}
-{% dynamic_table_document finds 'finds_for_treatment' 'upstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %}
-{% endif %}
+ {% trans "Related operations" as related_operations %}
+ {% dynamic_table_document related_operations 'operations' 'related_treatment' item.pk 'TABLE_COLS' output %}
-{% trans "Related operations" as related_operations %}
-{% dynamic_table_document related_operations 'operations' 'related_treatment' item.pk 'TABLE_COLS' output %}
-{% comment %}
-{% if item.source.count %}
-{% trans "Associated documents" as associated_docs %}
-{% dynamic_table_document associated_docs 'treatments_docs' 'treatment' item.pk '' output %}
-{% endif %}
-{% endcomment %}
+
+
+ {% if item.documents.count %}
+
+ {% trans "Associated documents" as treat_docs %}
+ {% dynamic_table_document treat_docs 'documents' 'treatments' item.pk '' output %}
+
+ {% endif %}
+
+ {% if item.administrative_act.count %}
+
+ {% trans "Administrative acts" as admact_lbl %}
+ {% table_administrativact admact_lbl item.administrative_act.all %}
+
+ {% endif %}
-{% if item.administrative_act.count %}
-{% trans "Administrative acts" as admact_lbl %}
-{% table_administrativact admact_lbl item.administrative_act.all %}
-{% endif %}
+
{% endblock %}
diff --git a/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py b/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py
index 0defa4efe..4edef4a44 100644
--- a/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py
+++ b/ishtar_common/migrations/0076_migrate_treatmentfile_permissions.py
@@ -18,7 +18,6 @@ def migrate_perm(apps, schema_editor):
for gp in Group.objects.filter(permissions=q.all()[0]):
gp.permissions.add(perm)
q.all()[0].delete()
- print(new_codename)
perm.codename = new_codename
perm.save()
--
cgit v1.2.3
From 9020e74bb8b8d49ae739a3215eeaf7861ab85bd4 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Tue, 27 Nov 2018 12:21:50 +0100
Subject: Commands: import management fix
---
ishtar_common/management/commands/ishtar_import.py | 37 ++++++++++++++++------
1 file changed, 28 insertions(+), 9 deletions(-)
diff --git a/ishtar_common/management/commands/ishtar_import.py b/ishtar_common/management/commands/ishtar_import.py
index aba1e45d5..3b04528f0 100644
--- a/ishtar_common/management/commands/ishtar_import.py
+++ b/ishtar_common/management/commands/ishtar_import.py
@@ -3,22 +3,41 @@
from django.core.management.base import BaseCommand, CommandError
-from ishtar_common import models
+from ishtar_common import models, models_imports
class Command(BaseCommand):
help = "./manage.py ishtar_import \n\n"\
"Launch the importation a configured import.\n"\
- " must be: \"analyse\", \"import\" or \"archive\"."
+ " must be: \"list\", \"analyse\", \"import\" or " \
+ "\"archive\"."
+
+ def add_arguments(self, parser):
+ parser.add_argument('command', choices=["list", "analyse", "import",
+ "archive"])
+ parser.add_argument('import_id', nargs='?', default=None)
def handle(self, *args, **options):
- if not args or len(args) < 2:
- raise CommandError(" and are mandatory")
- command = args[0]
- if args[0] not in ["analyse", "import", "archive"]:
- raise CommandError(
- " must be: \"analyse\", \"import\" or \"archive\"."
- )
+ command = options['command']
+ import_id = options['import_id']
+ if command != "list" and not import_id:
+ raise CommandError("With {} is mandatory".format(
+ command))
+ if command == 'list':
+ state = dict(models_imports.IMPORT_STATE)
+ self.stdout.write("*" * 80 + "\n")
+ self.stdout.write(
+ "| pk | type | state "
+ "| name\n")
+ self.stdout.write("*" * 80 + "\n")
+ for imp in models.Import.objects.exclude(state="AC").all():
+ self.stdout.write(u"|{: ^6}| {: ^32} | {: ^12} | {}\n".format(
+ imp.pk, unicode(imp.importer_type)[:32],
+ state[imp.state][:12],
+ imp.name[:128]))
+ self.stdout.write("*" * 80 + "\n")
+ self.stdout.flush()
+ return
try:
imp = models.Import.objects.get(pk=args[1])
except (ValueError, models.Import.DoesNotExist):
--
cgit v1.2.3
From 264ee9454910afaa1506c23fea5ca113649b7b4c Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Tue, 27 Nov 2018 22:54:06 +0100
Subject: Menu: change label
---
archaeological_finds/ishtar_menu.py | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py
index cf903e2f5..38110edad 100644
--- a/archaeological_finds/ishtar_menu.py
+++ b/archaeological_finds/ishtar_menu.py
@@ -155,23 +155,17 @@ MENU_SECTIONS = [
'view_own_treatment']),
MenuItem(
'treatment_creation',
- _(u"Treatment "
- u"1 1 "
- u"- creation"),
+ _(u"Simple treatment - creation"),
model=models.Treatment,
access_controls=['change_find', 'change_own_find']),
MenuItem(
'treatment_creation_n1',
- _(u"Treatment "
- u"n 1 "
- u"- creation"),
+ _(u"Treatment many to one - creation"),
model=models.Treatment,
access_controls=['change_find', 'change_own_find']),
MenuItem(
'treatment_creation_1n',
- _(u"Treatment "
- u"1 n "
- u"- creation"),
+ _(u"Treatment one to many - creation"),
model=models.Treatment,
access_controls=['change_find', 'change_own_find']),
MenuItem('treatment_modification',
--
cgit v1.2.3
From ca5a1d61a9a74705265d746c1fc5f48cb1844277 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Tue, 27 Nov 2018 23:04:05 +0100
Subject: Update translations
---
archaeological_finds/locale/django.pot | 204 ++++++-----
archaeological_operations/locale/django.pot | 494 +++++++++++++--------------
ishtar_common/locale/django.pot | 21 +-
translations/de/ishtar_common.po | 19 +-
translations/fr/archaeological_finds.po | 202 +++++------
translations/fr/archaeological_operations.po | 494 +++++++++++++--------------
translations/fr/ishtar_common.po | 19 +-
7 files changed, 724 insertions(+), 729 deletions(-)
diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot
index 82d4bfd4c..d051e96a3 100644
--- a/archaeological_finds/locale/django.pot
+++ b/archaeological_finds/locale/django.pot
@@ -22,7 +22,7 @@ msgid "Multi polygon"
msgstr ""
#: forms.py:95 forms.py:101 forms.py:540 forms.py:553 forms.py:831
-#: models_finds.py:674 models_finds.py:1233 wizards.py:86
+#: models_finds.py:674 models_finds.py:1237 wizards.py:86
msgid "Context record"
msgstr ""
@@ -30,14 +30,13 @@ msgstr ""
msgid "Find - 010 - Context record choice"
msgstr ""
-#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1106
-#: models_finds.py:1739 models_treatments.py:511
+#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1110
+#: models_finds.py:1743 models_treatments.py:512
#: templates/ishtar/sheet_find.html:4
msgid "Find"
msgstr ""
#: forms.py:134
-#| msgid "Find - 020 - General"
msgid "Simple find - 020 - General"
msgstr ""
@@ -126,7 +125,7 @@ msgstr ""
#: forms.py:195 forms.py:432 forms.py:584 forms.py:1177 forms_treatments.py:145
#: forms_treatments.py:606 models_finds.py:264 models_finds.py:1056
-#: models_treatments.py:149 models_treatments.py:771
+#: models_treatments.py:149 models_treatments.py:772
msgid "Comment"
msgstr ""
@@ -279,7 +278,6 @@ msgid "Resulting find"
msgstr ""
#: forms.py:383
-#| msgid "Treatment - 010 - Request choice"
msgid "Treatment n-1 - 030 - Resulting find"
msgstr ""
@@ -288,12 +286,10 @@ msgid "Resulting finds"
msgstr ""
#: forms.py:478
-#| msgid "Treatment - 010 - Request choice"
msgid "Treatment 1-n - 030 - Resulting finds"
msgstr ""
#: forms.py:483
-#| msgid "Resulting finds"
msgid "Number of resulting finds"
msgstr ""
@@ -415,14 +411,14 @@ msgid "Dating"
msgstr ""
#: forms.py:766 forms_treatments.py:131 forms_treatments.py:398
-#: forms_treatments.py:608 models_finds.py:1744 models_treatments.py:152
-#: models_treatments.py:522 templates/ishtar/sheet_find.html:196
+#: forms_treatments.py:608 models_finds.py:1748 models_treatments.py:152
+#: models_treatments.py:523 templates/ishtar/sheet_find.html:196
#: templates/ishtar/sheet_find.html:254 templates/ishtar/sheet_find.html:291
#: templates/ishtar/sheet_find.html:329
msgid "Start date"
msgstr ""
-#: forms.py:768 models_finds.py:1745 models_treatments.py:523
+#: forms.py:768 models_finds.py:1749 models_treatments.py:524
#: templates/ishtar/sheet_find.html:197 templates/ishtar/sheet_find.html:255
#: templates/ishtar/sheet_find.html:292 templates/ishtar/sheet_find.html:330
msgid "End date"
@@ -464,7 +460,7 @@ msgstr ""
#: forms.py:804 forms_treatments.py:56 forms_treatments.py:102
#: forms_treatments.py:323 forms_treatments.py:451 forms_treatments.py:526
#: forms_treatments.py:578 forms_treatments.py:718 models_treatments.py:126
-#: models_treatments.py:744
+#: models_treatments.py:745
msgid "Year"
msgstr ""
@@ -536,13 +532,14 @@ msgstr ""
msgid "Find search"
msgstr ""
-#: forms.py:969 forms.py:1114 models_treatments.py:271
-#: templates/ishtar/sheet_treatment.html:61
+#: forms.py:969 forms.py:1114 models_treatments.py:268
+#: templates/ishtar/sheet_treatment.html:102
msgid "Upstream finds"
msgstr ""
-#: forms.py:971 models_finds.py:1107 models_treatments.py:156
+#: forms.py:971 models_finds.py:1111
#: templates/ishtar/forms/qa_find_treatment.html:11
+#: templates/ishtar/sheet_treatment.html:24
msgid "Finds"
msgstr ""
@@ -587,13 +584,13 @@ msgstr ""
#: forms_treatments.py:57 forms_treatments.py:260 forms_treatments.py:452
#: forms_treatments.py:514 forms_treatments.py:527 forms_treatments.py:631
#: forms_treatments.py:719 forms_treatments.py:786 models_treatments.py:127
-#: models_treatments.py:745
+#: models_treatments.py:746
msgid "Index"
msgstr ""
#: forms_treatments.py:58 forms_treatments.py:98 forms_treatments.py:406
#: forms_treatments.py:468 models_finds.py:111 models_treatments.py:132
-#: models_treatments.py:521
+#: models_treatments.py:522
msgid "Treatment type"
msgstr ""
@@ -601,8 +598,9 @@ msgstr ""
msgid "Treatment search"
msgstr ""
-#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:178
-#: models_treatments.py:513 templates/ishtar/sheet_treatment.html:4
+#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:175
+#: models_treatments.py:514 templates/ishtar/sheet_treatment.html:4
+#: templates/ishtar/sheet_treatment.html:17
msgid "Treatment"
msgstr ""
@@ -616,7 +614,7 @@ msgstr ""
msgid "State"
msgstr ""
-#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:524
+#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:525
msgid "Location"
msgstr ""
@@ -630,7 +628,7 @@ msgid "Organization"
msgstr ""
#: forms_treatments.py:133 forms_treatments.py:398 forms_treatments.py:614
-#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:765
+#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:766
msgid "Closing date"
msgstr ""
@@ -677,12 +675,10 @@ msgid "A responsible or an organization must be defined."
msgstr ""
#: forms_treatments.py:234
-#| msgid "Treatment - 020 - General"
msgid "Treatment n-1 - 020 - General"
msgstr ""
#: forms_treatments.py:247
-#| msgid "Treatment - 020 - General"
msgid "Treatment 1-n - 020 - General"
msgstr ""
@@ -699,7 +695,7 @@ msgid "Treatment - 010 - Request choice"
msgstr ""
#: forms_treatments.py:296 forms_treatments.py:569 ishtar_menu.py:95
-#: models_treatments.py:780 models_treatments.py:808
+#: models_treatments.py:781 models_treatments.py:803
#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:457
msgid "Treatment request"
msgstr ""
@@ -715,7 +711,7 @@ msgid "Would you like to delete this treatment?"
msgstr ""
#: forms_treatments.py:313 models_finds.py:697 models_finds.py:1017
-#: models_treatments.py:158 models_treatments.py:525
+#: models_treatments.py:155 models_treatments.py:526
#: templates/ishtar/sheet_find.html:253 templates/ishtar/sheet_find.html:290
#: templates/ishtar/sheet_find.html:328
msgid "Container"
@@ -802,7 +798,7 @@ msgstr ""
msgid "Treatment - Administrative act - General"
msgstr ""
-#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:750
+#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:751
msgid "Name"
msgstr ""
@@ -820,12 +816,12 @@ msgstr ""
msgid "In charge"
msgstr ""
-#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:759
+#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:760
#: templates/ishtar/sheet_treatmentfile.html:45
msgid "Applicant"
msgstr ""
-#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:763
+#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:764
#: templates/ishtar/sheet_treatmentfile.html:53
msgid "Applicant organisation"
msgstr ""
@@ -838,7 +834,7 @@ msgstr ""
msgid "External ref."
msgstr ""
-#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:769
+#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:770
msgid "Reception date"
msgstr ""
@@ -854,12 +850,12 @@ msgstr ""
msgid "Would you like to delete this treatment request?"
msgstr ""
-#: forms_treatments.py:665 models_treatments.py:767
+#: forms_treatments.py:665 models_treatments.py:768
msgid "Creation date"
msgstr ""
-#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:681
-#: models_treatments.py:752
+#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:682
+#: models_treatments.py:753
msgid "Treatment request type"
msgstr ""
@@ -884,22 +880,22 @@ msgid "Treatment request - Administrative act - General"
msgstr ""
#: ishtar_menu.py:37 ishtar_menu.py:60 ishtar_menu.py:100 ishtar_menu.py:123
-#: ishtar_menu.py:152 ishtar_menu.py:191
+#: ishtar_menu.py:152 ishtar_menu.py:185
msgid "Search"
msgstr ""
#: ishtar_menu.py:42 ishtar_menu.py:65 ishtar_menu.py:105 ishtar_menu.py:127
-#: ishtar_menu.py:195
+#: ishtar_menu.py:189
msgid "Creation"
msgstr ""
#: ishtar_menu.py:47 ishtar_menu.py:70 ishtar_menu.py:110 ishtar_menu.py:131
-#: ishtar_menu.py:178 ishtar_menu.py:200
+#: ishtar_menu.py:172 ishtar_menu.py:194
msgid "Modification"
msgstr ""
#: ishtar_menu.py:52 ishtar_menu.py:82 ishtar_menu.py:115 ishtar_menu.py:134
-#: ishtar_menu.py:183 ishtar_menu.py:203
+#: ishtar_menu.py:177 ishtar_menu.py:197
msgid "Deletion"
msgstr ""
@@ -907,29 +903,29 @@ msgstr ""
msgid "Manage items"
msgstr ""
-#: ishtar_menu.py:120 ishtar_menu.py:188 models_finds.py:1741
+#: ishtar_menu.py:120 ishtar_menu.py:182 models_finds.py:1745
msgid "Administrative act"
msgstr ""
-#: ishtar_menu.py:138 ishtar_menu.py:207 models_finds.py:1098
-#: models_treatments.py:171 models_treatments.py:773
-#: templates/ishtar/sheet_find.html:56
+#: ishtar_menu.py:138 ishtar_menu.py:201 models_finds.py:1098
+#: models_treatments.py:168 models_treatments.py:774
+#: templates/ishtar/sheet_find.html:56 templates/ishtar/sheet_treatment.html:32
msgid "Documents"
msgstr ""
#: ishtar_menu.py:158
-msgid ""
-"Treatment 1 1 - creation"
+#| msgid "New treatment request"
+msgid "Simple treatment - creation"
msgstr ""
-#: ishtar_menu.py:165
-msgid ""
-"Treatment n 1 - creation"
+#: ishtar_menu.py:163
+#| msgid "Treatment modification"
+msgid "Treatment many to one - creation"
msgstr ""
-#: ishtar_menu.py:172
-msgid ""
-"Treatment 1 n - creation"
+#: ishtar_menu.py:168
+#| msgid "Treatment request modification"
+msgid "Treatment one to many - creation"
msgstr ""
#: models_finds.py:51
@@ -942,7 +938,7 @@ msgstr ""
#: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:143
#: models_finds.py:166 models_finds.py:223 models_finds.py:984
-#: models_treatments.py:517
+#: models_treatments.py:518
msgid "Order"
msgstr ""
@@ -971,7 +967,6 @@ msgid "Destructive"
msgstr ""
#: models_finds.py:96
-#| msgid "Create a treatment"
msgid "Create a new find"
msgstr ""
@@ -997,7 +992,7 @@ msgstr ""
msgid "Check this if for this treatment from one find you'll get many."
msgstr ""
-#: models_finds.py:112 models_treatments.py:253
+#: models_finds.py:112 models_treatments.py:250
msgid "Treatment types"
msgstr ""
@@ -1074,7 +1069,7 @@ msgid "Checked types"
msgstr ""
#: models_finds.py:259 models_finds.py:977 models_treatments.py:147
-#: models_treatments.py:748
+#: models_treatments.py:749
msgid "External ID"
msgstr ""
@@ -1203,7 +1198,7 @@ msgctxt "key for text search"
msgid "town"
msgstr ""
-#: models_finds.py:794 models_treatments.py:91 models_treatments.py:713
+#: models_finds.py:794 models_treatments.py:91 models_treatments.py:714
msgctxt "key for text search"
msgid "year"
msgstr ""
@@ -1349,7 +1344,6 @@ msgid "modified-since"
msgstr ""
#: models_finds.py:913
-#| msgid "Create"
msgctxt "key for text search"
msgid "created-by"
msgstr ""
@@ -1358,7 +1352,7 @@ msgstr ""
msgid "Bulk update"
msgstr ""
-#: models_finds.py:947 models_finds.py:1200
+#: models_finds.py:947 models_finds.py:1204
#: templates/ishtar/forms/qa_find_treatment.html:16 views.py:714
msgid "Packaging"
msgstr ""
@@ -1395,39 +1389,49 @@ msgstr ""
msgid "Collection"
msgstr ""
-#: models_finds.py:1100 models_treatments.py:173 models_treatments.py:775
+#: models_finds.py:1101 models_treatments.py:176
+#: templates/ishtar/sheet_find.html:243
+#: templates/ishtar/sheet_treatmentfile.html:61
+msgid "Treatments"
+msgstr ""
+
+#: models_finds.py:1103
+msgid "Related treatments when no new find is created"
+msgstr ""
+
+#: models_finds.py:1104 models_treatments.py:170 models_treatments.py:776
msgid "Cached name"
msgstr ""
-#: models_finds.py:1122
+#: models_finds.py:1126
msgid "FIND"
msgstr ""
-#: models_finds.py:1194
+#: models_finds.py:1198
msgid "Add to basket"
msgstr ""
-#: models_finds.py:1242 wizards.py:85 wizards.py:469
+#: models_finds.py:1246 wizards.py:85 wizards.py:469
msgid "Operation"
msgstr ""
-#: models_finds.py:1566
+#: models_finds.py:1570
msgid "No container have been set - the localisation cannot be set."
msgstr ""
-#: models_finds.py:1572
+#: models_finds.py:1576
msgid "The division number {} have not been set for the warehouse {}."
msgstr ""
-#: models_finds.py:1742
+#: models_finds.py:1746
msgid "Person"
msgstr ""
-#: models_finds.py:1748
+#: models_finds.py:1752
msgid "Property"
msgstr ""
-#: models_finds.py:1749
+#: models_finds.py:1753
msgid "Properties"
msgstr ""
@@ -1457,12 +1461,12 @@ msgctxt "key for text search"
msgid "other-reference"
msgstr ""
-#: models_treatments.py:95 models_treatments.py:717
+#: models_treatments.py:95 models_treatments.py:718
msgctxt "key for text search"
msgid "index"
msgstr ""
-#: models_treatments.py:103 models_treatments.py:721
+#: models_treatments.py:103 models_treatments.py:722
msgctxt "key for text search"
msgid "type"
msgstr ""
@@ -1472,94 +1476,85 @@ msgid "Location where the treatment is done. Target warehouse for a move."
msgstr ""
#: models_treatments.py:157
-msgid "Related finds for non-destructive treatment"
-msgstr ""
-
-#: models_treatments.py:160
msgid "Estimated cost"
msgstr ""
-#: models_treatments.py:162
+#: models_treatments.py:159
msgid "Quoted cost"
msgstr ""
-#: models_treatments.py:164
+#: models_treatments.py:161
msgid "Realized cost"
msgstr ""
-#: models_treatments.py:166
+#: models_treatments.py:163
msgid "Insurance cost"
msgstr ""
-#: models_treatments.py:168
+#: models_treatments.py:165
msgid "Target a basket"
msgstr ""
-#: models_treatments.py:179 templates/ishtar/sheet_find.html:243
-#: templates/ishtar/sheet_treatmentfile.html:61
-msgid "Treatments"
-msgstr ""
-
-#: models_treatments.py:199
+#: models_treatments.py:196
msgid "TREATMENT"
msgstr ""
-#: models_treatments.py:262 templates/ishtar/sheet_treatment.html:66
+#: models_treatments.py:259 templates/ishtar/sheet_treatment.html:107
msgid "Downstream finds"
msgstr ""
-#: models_treatments.py:526 templates/ishtar/sheet_find.html:252
+#: models_treatments.py:527 templates/ishtar/sheet_find.html:252
#: templates/ishtar/sheet_find.html:289 templates/ishtar/sheet_find.html:327
msgid "Doer"
msgstr ""
-#: models_treatments.py:527 models_treatments.py:528
-#: templates/ishtar/sheet_treatment.html:56
+#: models_treatments.py:528 models_treatments.py:529
+#: templates/ishtar/sheet_treatment.html:97
msgid "Related finds"
msgstr ""
-#: models_treatments.py:670
+#: models_treatments.py:671
msgid "Is upstream"
msgstr ""
-#: models_treatments.py:682
+#: models_treatments.py:683
msgid "Treatment request types"
msgstr ""
-#: models_treatments.py:705
+#: models_treatments.py:706
msgctxt "key for text search"
msgid "name"
msgstr ""
-#: models_treatments.py:709
+#: models_treatments.py:710
msgctxt "key for text search"
msgid "reference"
msgstr ""
-#: models_treatments.py:725
+#: models_treatments.py:726
msgctxt "key for text search"
msgid "in-charge"
msgstr ""
-#: models_treatments.py:729
+#: models_treatments.py:730
msgctxt "key for text search"
msgid "applicant"
msgstr ""
-#: models_treatments.py:733
+#: models_treatments.py:734
msgctxt "key for text search"
msgid "applicant-organisation"
msgstr ""
-#: models_treatments.py:746
+#: models_treatments.py:747
msgid "Internal reference"
msgstr ""
-#: models_treatments.py:755
+#: models_treatments.py:756
msgid "Person in charge"
msgstr ""
-#: models_treatments.py:781
+#: models_treatments.py:782
msgid "Treatment requests"
msgstr ""
@@ -1624,7 +1619,6 @@ msgid ""
msgstr ""
#: templates/ishtar/sheet_find.html:23
-#| msgid "Base find"
msgid "Image / Base find"
msgstr ""
@@ -1633,12 +1627,10 @@ msgid "Identification / Description / Dimensions"
msgstr ""
#: templates/ishtar/sheet_find.html:38
-#| msgid "Preservation"
msgid "Datings / Preservation"
msgstr ""
#: templates/ishtar/sheet_find.html:47
-#| msgid "Base treatment"
msgid "Warehouse / Treatments"
msgstr ""
@@ -1677,6 +1669,7 @@ msgid "CSV"
msgstr ""
#: templates/ishtar/sheet_find.html:360
+#: templates/ishtar/sheet_treatment.html:121
msgid "Associated documents"
msgstr ""
@@ -1684,25 +1677,26 @@ msgstr ""
msgid "Content"
msgstr ""
-#: templates/ishtar/sheet_treatment.html:25
+#: templates/ishtar/sheet_treatment.html:41
+#: templates/ishtar/sheet_treatment.html:129
+#: templates/ishtar/sheet_treatmentfile.html:73
+msgid "Administrative acts"
+msgstr ""
+
+#: templates/ishtar/sheet_treatment.html:63
msgctxt "Treatment"
msgid "Closed"
msgstr ""
-#: templates/ishtar/sheet_treatment.html:27
+#: templates/ishtar/sheet_treatment.html:65
msgctxt "Treatment"
msgid "Active"
msgstr ""
-#: templates/ishtar/sheet_treatment.html:71
+#: templates/ishtar/sheet_treatment.html:112
msgid "Related operations"
msgstr ""
-#: templates/ishtar/sheet_treatment.html:82
-#: templates/ishtar/sheet_treatmentfile.html:73
-msgid "Administrative acts"
-msgstr ""
-
#: templates/ishtar/sheet_treatmentfile.html:24
msgctxt "Treatment request"
msgid "Closed"
diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot
index 83373847b..fea311997 100644
--- a/archaeological_operations/locale/django.pot
+++ b/archaeological_operations/locale/django.pot
@@ -9,21 +9,21 @@
msgid ""
msgstr ""
-#: admin.py:91 models.py:244 models.py:836
+#: admin.py:91 models.py:245 models.py:852
msgid "Point"
msgstr ""
-#: admin.py:93 models.py:245 models.py:837
+#: admin.py:93 models.py:246 models.py:853
msgid "Multi polygon"
msgstr ""
-#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1931
+#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1955
#: templates/ishtar/blocks/window_tables/parcels.html:9
-#: templates/ishtar/sheet_operation.html:250
+#: templates/ishtar/sheet_operation.html:254
msgid "Parcels"
msgstr ""
-#: forms.py:67 forms.py:200 forms.py:1036 models.py:1915
+#: forms.py:67 forms.py:200 forms.py:1036 models.py:1939
#: templates/ishtar/blocks/window_tables/parcels.html:6
#: templates/ishtar/dashboards/dashboard_operation.html:432
#: templates/ishtar/dashboards/dashboard_operation.html:446
@@ -32,22 +32,22 @@ msgstr ""
msgid "Town"
msgstr ""
-#: forms.py:69 forms.py:480 forms.py:763 forms.py:1400 models.py:734
-#: models.py:1489 models.py:1696 models.py:1913
+#: forms.py:69 forms.py:480 forms.py:763 forms.py:1400 models.py:750
+#: models.py:1513 models.py:1720 models.py:1937
#: templates/ishtar/blocks/window_tables/parcels.html:7
msgid "Year"
msgstr ""
-#: forms.py:72 models.py:1916
+#: forms.py:72 models.py:1940
#: templates/ishtar/blocks/window_tables/parcels.html:8
msgid "Section"
msgstr ""
-#: forms.py:75 models.py:1918
+#: forms.py:75 models.py:1942
msgid "Parcel number"
msgstr ""
-#: forms.py:77 models.py:1920 models.py:1939 models.py:2000
+#: forms.py:77 models.py:1944 models.py:1963 models.py:2024
msgid "Public domain"
msgstr ""
@@ -83,8 +83,8 @@ msgstr ""
msgid "Relation type"
msgstr ""
-#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:842 models.py:1394
-#: models.py:1405 models.py:1491 models.py:1678 models.py:1912
+#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:858 models.py:1418
+#: models.py:1429 models.py:1515 models.py:1702 models.py:1936
#: templates/ishtar/sheet_operation.html:4 wizards.py:320 wizards.py:331
msgid "Operation"
msgstr ""
@@ -125,15 +125,15 @@ msgstr ""
msgid "Full text search"
msgstr ""
-#: forms.py:481 models.py:735
+#: forms.py:481 models.py:751
msgid "Numeric reference"
msgstr ""
-#: forms.py:488 forms.py:1064 forms.py:1412 models.py:1930 models.py:2142
+#: forms.py:488 forms.py:1064 forms.py:1412 models.py:1954 models.py:2166
msgid "Parcel"
msgstr ""
-#: forms.py:491 forms.py:1415 models.py:1395
+#: forms.py:491 forms.py:1415 models.py:1419
#: templates/ishtar/dashboards/dashboard_operation.html:390
#: templates/ishtar/dashboards/dashboard_operation.html:411
#: templates/ishtar/dashboards/dashboard_operation.html:643
@@ -142,17 +142,17 @@ msgstr ""
msgid "Department"
msgstr ""
-#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1325 models.py:213
+#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1325 models.py:214
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7
#: templates/ishtar/sheet_operation.html:29
msgid "Name"
msgstr ""
-#: forms.py:493 forms.py:761 models.py:797
+#: forms.py:493 forms.py:761 models.py:813
msgid "Address / Locality"
msgstr ""
-#: forms.py:494 forms.py:678 forms.py:757 models.py:742
+#: forms.py:494 forms.py:678 forms.py:757 models.py:758
msgid "Operation type"
msgstr ""
@@ -160,26 +160,26 @@ msgstr ""
msgid "Is open?"
msgstr ""
-#: forms.py:503 forms.py:793 models.py:727
+#: forms.py:503 forms.py:793 models.py:743
msgid "In charge"
msgstr ""
-#: forms.py:510 models.py:1672
+#: forms.py:510 models.py:1696
msgid "Scientist in charge"
msgstr ""
-#: forms.py:512 forms.py:680 forms.py:783 models.py:725
+#: forms.py:512 forms.py:680 forms.py:783 models.py:741
msgid "Operator"
msgstr ""
-#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1330 models.py:217
-#: models.py:744
+#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1330 models.py:218
+#: models.py:760
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9
msgid "Remains"
msgstr ""
#: forms.py:522 forms.py:1131 forms.py:1150 forms.py:1242 forms.py:1327
-#: models.py:215 models.py:750
+#: models.py:216 models.py:766
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8
msgid "Periods"
msgstr ""
@@ -204,8 +204,8 @@ msgstr ""
msgid "Search within relations"
msgstr ""
-#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1340 models.py:221
-#: models.py:798
+#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1340 models.py:222
+#: models.py:814
msgid "Comment"
msgstr ""
@@ -213,23 +213,23 @@ msgstr ""
msgid "Abstract (full text search)"
msgstr ""
-#: forms.py:532 forms.py:844 models.py:800
+#: forms.py:532 forms.py:844 models.py:816
msgid "Comment about scientific documentation"
msgstr ""
-#: forms.py:533 forms.py:846 models.py:815
+#: forms.py:533 forms.py:846 models.py:831
msgid "Record quality"
msgstr ""
-#: forms.py:534 forms.py:812 models.py:762
+#: forms.py:534 forms.py:812 models.py:778
msgid "Report processing"
msgstr ""
-#: forms.py:536 forms.py:849 models.py:810
+#: forms.py:536 forms.py:849 models.py:826
msgid "Virtual operation"
msgstr ""
-#: forms.py:538 forms.py:1188 forms.py:1192 models.py:257
+#: forms.py:538 forms.py:1188 forms.py:1192 models.py:258
msgid "Archaeological site"
msgstr ""
@@ -241,7 +241,7 @@ msgstr ""
msgid "Modified by"
msgstr ""
-#: forms.py:557 forms.py:834 models.py:822
+#: forms.py:557 forms.py:834 models.py:838
msgid "Documentation received"
msgstr ""
@@ -253,7 +253,7 @@ msgstr ""
msgid "Documentation deadline after"
msgstr ""
-#: forms.py:563 forms.py:839 models.py:826
+#: forms.py:563 forms.py:839 models.py:842
msgid "Finds received"
msgstr ""
@@ -273,12 +273,12 @@ msgstr ""
msgid "Associated file"
msgstr ""
-#: forms.py:643 forms.py:937 models.py:1023 models.py:1404 models.py:1490
-#: models.py:1683 wizards.py:83
+#: forms.py:643 forms.py:937 models.py:1039 models.py:1428 models.py:1514
+#: models.py:1707 wizards.py:83
msgid "Archaeological file"
msgstr ""
-#: forms.py:650 forms.py:654 models.py:817
+#: forms.py:650 forms.py:654 models.py:833
msgid "Abstract"
msgstr ""
@@ -294,7 +294,7 @@ msgstr ""
msgid "years"
msgstr ""
-#: forms.py:660 models.py:711
+#: forms.py:660 models.py:727
msgid "Creation date"
msgstr ""
@@ -356,11 +356,11 @@ msgstr ""
msgid "Operation - 010 - General"
msgstr ""
-#: forms.py:759 models.py:796
+#: forms.py:759 models.py:812
msgid "Generic name"
msgstr ""
-#: forms.py:768 models.py:764
+#: forms.py:768 models.py:780
msgid "Old code"
msgstr ""
@@ -368,7 +368,7 @@ msgstr ""
msgid "Head scientist"
msgstr ""
-#: forms.py:790 models.py:795
+#: forms.py:790 models.py:811
msgid "Operator reference"
msgstr ""
@@ -376,23 +376,23 @@ msgstr ""
msgid "Total surface (m2)"
msgstr ""
-#: forms.py:807 models.py:57 models.py:714 models.py:2144
+#: forms.py:807 models.py:57 models.py:730 models.py:2168
msgid "Start date"
msgstr ""
-#: forms.py:808 models.py:716
+#: forms.py:808 models.py:732
msgid "Excavation end date"
msgstr ""
-#: forms.py:810 models.py:717
+#: forms.py:810 models.py:733
msgid "Report delivery date"
msgstr ""
-#: forms.py:831 models.py:819
+#: forms.py:831 models.py:835
msgid "Deadline for submission of the documentation"
msgstr ""
-#: forms.py:836 models.py:824
+#: forms.py:836 models.py:840
msgid "Deadline for submission of the finds"
msgstr ""
@@ -416,7 +416,7 @@ msgstr ""
msgid "Bad operation code"
msgstr ""
-#: forms.py:933 models.py:1038
+#: forms.py:933 models.py:1054
msgid "Operation code"
msgstr ""
@@ -428,19 +428,19 @@ msgstr ""
msgid "Operation - 015 - Court-ordered seizure"
msgstr ""
-#: forms.py:973 models.py:829
+#: forms.py:973 models.py:845
msgid "Seizure name"
msgstr ""
-#: forms.py:976 models.py:830
+#: forms.py:976 models.py:846
msgid "Official report number"
msgstr ""
-#: forms.py:979 models.py:832
+#: forms.py:979 models.py:848
msgid "Name of the protagonist"
msgstr ""
-#: forms.py:984 forms.py:991 models.py:731
+#: forms.py:984 forms.py:991 models.py:747
msgid "Collaborators"
msgstr ""
@@ -456,20 +456,20 @@ msgstr ""
msgid "Operation - 033 - Preventive - Excavation"
msgstr ""
-#: forms.py:1004 models.py:748
+#: forms.py:1004 models.py:764
#: templates/ishtar/dashboards/dashboard_operation.html:701
msgid "Cost (euros)"
msgstr ""
-#: forms.py:1005 models.py:753
+#: forms.py:1005 models.py:769
msgid "Scheduled man-days"
msgstr ""
-#: forms.py:1007 models.py:756
+#: forms.py:1007 models.py:772
msgid "Optional man-days"
msgstr ""
-#: forms.py:1009 models.py:759
+#: forms.py:1009 models.py:775
msgid "Effective man-days"
msgstr ""
@@ -481,20 +481,20 @@ msgstr ""
msgid "Operation - 037 - Preventive - Diagnostic"
msgstr ""
-#: forms.py:1025 models.py:779
+#: forms.py:1025 models.py:795
msgid "Prescription on zoning"
msgstr ""
-#: forms.py:1027 models.py:782
+#: forms.py:1027 models.py:798
msgid "Prescription on large area"
msgstr ""
-#: forms.py:1030 models.py:784
+#: forms.py:1030 models.py:800
msgid "Prescription on geoarchaeological context"
msgstr ""
-#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1359 models.py:128
-#: models.py:219 models.py:506 models.py:746 models.py:1706
+#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1359 models.py:129
+#: models.py:220 models.py:522 models.py:762 models.py:1730
msgid "Towns"
msgstr ""
@@ -530,12 +530,12 @@ msgstr ""
msgid "Operation - 070 - Periods"
msgstr ""
-#: forms.py:1138 templates/ishtar/sheet_operation.html:273
-#: templates/ishtar/sheet_operation.html:310
+#: forms.py:1138 templates/ishtar/sheet_operation.html:277
+#: templates/ishtar/sheet_operation.html:314
msgid "Period"
msgstr ""
-#: forms.py:1147 forms.py:1239 forms.py:1324 models.py:212
+#: forms.py:1147 forms.py:1239 forms.py:1324 models.py:213
msgid "Reference"
msgstr ""
@@ -543,7 +543,7 @@ msgstr ""
msgid "This reference already exists."
msgstr ""
-#: forms.py:1203 models.py:258 models.py:807
+#: forms.py:1203 models.py:259 models.py:823
#: templates/ishtar/sheet_operation.html:194
msgid "Archaeological sites"
msgstr ""
@@ -568,35 +568,35 @@ msgstr ""
msgid "Would you like to delete this operation?"
msgstr ""
-#: forms.py:1248 models.py:223
+#: forms.py:1248 models.py:224
msgid "Top operation"
msgstr ""
-#: forms.py:1260 forms.py:1333 models.py:226
+#: forms.py:1260 forms.py:1333 models.py:227
msgid "National Geographic Institute locality"
msgstr ""
-#: forms.py:1263 forms.py:1337 models.py:229
+#: forms.py:1263 forms.py:1337 models.py:230
msgid "Cadastral locality"
msgstr ""
-#: forms.py:1266 forms.py:1374 models.py:233
+#: forms.py:1266 forms.py:1374 models.py:234
msgid "Shipwreck name"
msgstr ""
-#: forms.py:1269 forms.py:1382 models.py:235
+#: forms.py:1269 forms.py:1382 models.py:236
msgid "Oceanographic service localisation"
msgstr ""
-#: forms.py:1272 forms.py:1376 models.py:237
+#: forms.py:1272 forms.py:1376 models.py:238
msgid "Shipwreck code"
msgstr ""
-#: forms.py:1274 forms.py:1378 models.py:239
+#: forms.py:1274 forms.py:1378 models.py:240
msgid "Sinking date"
msgstr ""
-#: forms.py:1276 forms.py:1380 models.py:241
+#: forms.py:1276 forms.py:1380 models.py:242
msgid "Discovery area"
msgstr ""
@@ -620,11 +620,11 @@ msgstr ""
msgid "Archaeological site - 030 - Underwater"
msgstr ""
-#: forms.py:1401 forms.py:1535 models.py:1663
+#: forms.py:1401 forms.py:1535 models.py:1687
msgid "Index"
msgstr ""
-#: forms.py:1409 forms.py:1469 models.py:1418 models.py:1657
+#: forms.py:1409 forms.py:1469 models.py:1442 models.py:1681
msgid "Act type"
msgstr ""
@@ -632,7 +632,7 @@ msgstr ""
msgid "Indexed?"
msgstr ""
-#: forms.py:1416 forms.py:1474 models.py:1697
+#: forms.py:1416 forms.py:1474 models.py:1721
#: templates/ishtar/blocks/window_tables/administrativacts.html:9
msgid "Object"
msgstr ""
@@ -645,7 +645,7 @@ msgstr ""
msgid "You should select an administrative act."
msgstr ""
-#: forms.py:1477 models.py:1694
+#: forms.py:1477 models.py:1718
msgid "Signature date"
msgstr ""
@@ -705,12 +705,12 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:61 models.py:1713
+#: ishtar_menu.py:61 models.py:1737
#: templates/ishtar/sheet_administrativeact.html:4
msgid "Administrative act"
msgstr ""
-#: ishtar_menu.py:87 models.py:249 models.py:802
+#: ishtar_menu.py:87 models.py:250 models.py:818
msgid "Documents"
msgstr ""
@@ -726,17 +726,17 @@ msgstr ""
msgid "General informations"
msgstr ""
-#: ishtar_menu.py:143 models.py:843
+#: ishtar_menu.py:143 models.py:859
#: templates/ishtar/dashboards/dashboard_operation.html:8
#: templates/ishtar/sheet_site.html:65
msgid "Operations"
msgstr ""
-#: models.py:56 models.py:76 models.py:94 models.py:2622
+#: models.py:56 models.py:76 models.py:94 models.py:2646
msgid "Order"
msgstr ""
-#: models.py:58 models.py:2145
+#: models.py:58 models.py:2169
msgid "End date"
msgstr ""
@@ -768,665 +768,665 @@ msgstr ""
msgid "Types of record quality"
msgstr ""
-#: models.py:135
+#: models.py:136
msgctxt "key for text search"
msgid "reference"
msgstr ""
-#: models.py:139 models.py:569
+#: models.py:140 models.py:585
msgctxt "key for text search"
msgid "name"
msgstr ""
-#: models.py:143 models.py:601 tests.py:1625
+#: models.py:144 models.py:617 tests.py:1625
msgctxt "key for text search"
msgid "period"
msgstr ""
-#: models.py:147 models.py:597 tests.py:1656
+#: models.py:148 models.py:613 tests.py:1656
msgctxt "key for text search"
msgid "remain"
msgstr ""
-#: models.py:151 models.py:557 tests.py:1633
+#: models.py:152 models.py:573 tests.py:1633
msgctxt "key for text search"
msgid "town"
msgstr ""
-#: models.py:155 models.py:625
+#: models.py:156 models.py:641
msgctxt "key for text search"
msgid "comment"
msgstr ""
-#: models.py:159
+#: models.py:160
msgctxt "key for text search"
msgid "locality-ngi"
msgstr ""
-#: models.py:163
+#: models.py:164
msgctxt "key for text search"
msgid "locality-cadastral"
msgstr ""
-#: models.py:167
+#: models.py:168
msgctxt "key for text search"
msgid "shipwreck-name"
msgstr ""
-#: models.py:172
+#: models.py:173
msgctxt "key for text search"
msgid "oceanographic-service-localisation"
msgstr ""
-#: models.py:176
+#: models.py:177
msgctxt "key for text search"
msgid "shipwreck-code"
msgstr ""
-#: models.py:180
+#: models.py:181
msgctxt "key for text search"
msgid "sinking-date"
msgstr ""
-#: models.py:184
+#: models.py:185
msgctxt "key for text search"
msgid "discovery-area"
msgstr ""
-#: models.py:188 models.py:203
+#: models.py:189 models.py:204
msgctxt "key for text search"
msgid "operation"
msgstr ""
-#: models.py:192
+#: models.py:193
msgctxt "key for text search"
msgid "top-operation"
msgstr ""
-#: models.py:251 models.py:804 models.py:1926
+#: models.py:252 models.py:820 models.py:1950
msgid "Cached name"
msgstr ""
-#: models.py:280
+#: models.py:281
msgid "SITE"
msgstr ""
-#: models.py:345
+#: models.py:361
msgid "Unknown"
msgstr ""
-#: models.py:348
+#: models.py:364
msgid "Virtual operation of site: {}"
msgstr ""
-#: models.py:488
+#: models.py:504
msgid "Associated file (label)"
msgstr ""
-#: models.py:489
+#: models.py:505
msgid "Operator name"
msgstr ""
-#: models.py:490
+#: models.py:506
msgid "Scientist (full name)"
msgstr ""
-#: models.py:491
+#: models.py:507
msgid "Associated file (external ID)"
msgstr ""
-#: models.py:492
+#: models.py:508
msgid "Scientist (title)"
msgstr ""
-#: models.py:493
+#: models.py:509
msgid "Scientist (surname)"
msgstr ""
-#: models.py:494
+#: models.py:510
msgid "Scientist (name)"
msgstr ""
-#: models.py:495
+#: models.py:511
msgid "Scientist - Organization (name)"
msgstr ""
-#: models.py:496
+#: models.py:512
msgid "In charge (title)"
msgstr ""
-#: models.py:497
+#: models.py:513
msgid "In charge (surname)"
msgstr ""
-#: models.py:498
+#: models.py:514
msgid "In charge (name)"
msgstr ""
-#: models.py:499
+#: models.py:515
msgid "In charge - Organization (name)"
msgstr ""
-#: models.py:504
+#: models.py:520
msgid "Archaeological sites (reference)"
msgstr ""
-#: models.py:545 models.py:1502 tests.py:1628 tests.py:1673
+#: models.py:561 models.py:1526 tests.py:1628 tests.py:1673
msgctxt "key for text search"
msgid "year"
msgstr ""
-#: models.py:549
+#: models.py:565
msgctxt "key for text search"
msgid "operation-code"
msgstr ""
-#: models.py:553 models.py:1514
+#: models.py:569 models.py:1538
msgctxt "key for text search"
msgid "patriarche"
msgstr ""
-#: models.py:561 models.py:1534
+#: models.py:577 models.py:1558
msgctxt "key for text search"
msgid "parcel"
msgstr ""
-#: models.py:565
+#: models.py:581
msgctxt "key for text search"
msgid "department"
msgstr ""
-#: models.py:573
+#: models.py:589
msgctxt "key for text search"
msgid "address"
msgstr ""
-#: models.py:577 models.py:1518
+#: models.py:593 models.py:1542
msgctxt "key for text search"
msgid "type"
msgstr ""
-#: models.py:581 tests.py:1661
+#: models.py:597 tests.py:1661
msgctxt "key for text search"
msgid "is-open"
msgstr ""
-#: models.py:585
+#: models.py:601
msgctxt "key for text search"
msgid "in-charge"
msgstr ""
-#: models.py:589
+#: models.py:605
msgctxt "key for text search"
msgid "scientist"
msgstr ""
-#: models.py:593
+#: models.py:609
msgctxt "key for text search"
msgid "operator"
msgstr ""
-#: models.py:605
+#: models.py:621
msgctxt "key for text search"
msgid "start-before"
msgstr ""
-#: models.py:609
+#: models.py:625
msgctxt "key for text search"
msgid "start-after"
msgstr ""
-#: models.py:613
+#: models.py:629
msgctxt "key for text search"
msgid "end-before"
msgstr ""
-#: models.py:617
+#: models.py:633
msgctxt "key for text search"
msgid "end-after"
msgstr ""
-#: models.py:621
+#: models.py:637
msgctxt "key for text search"
msgid "relation-types"
msgstr ""
-#: models.py:629
+#: models.py:645
msgctxt "key for text search"
msgid "abstract"
msgstr ""
-#: models.py:634
+#: models.py:650
msgctxt "key for text search"
msgid "scientific-documentation-comment"
msgstr ""
-#: models.py:638
+#: models.py:654
msgctxt "key for text search"
msgid "record-quality"
msgstr ""
-#: models.py:643
+#: models.py:659
msgctxt "key for text search"
msgid "report-processing"
msgstr ""
-#: models.py:648
+#: models.py:664
msgctxt "key for text search"
msgid "virtual-operation"
msgstr ""
-#: models.py:653 models.py:696
+#: models.py:669 models.py:712
msgctxt "key for text search"
msgid "site"
msgstr ""
-#: models.py:657 models.py:1552
+#: models.py:673 models.py:1576
msgctxt "key for text search"
msgid "created-by"
msgstr ""
-#: models.py:661 models.py:1556
+#: models.py:677 models.py:1580
msgctxt "key for text search"
msgid "modified-by"
msgstr ""
-#: models.py:665
+#: models.py:681
msgctxt "key for text search"
msgid "documentation-received"
msgstr ""
-#: models.py:669
+#: models.py:685
msgctxt "key for text search"
msgid "documentation-deadline-before"
msgstr ""
-#: models.py:673
+#: models.py:689
msgctxt "key for text search"
msgid "documentation-deadline-after"
msgstr ""
-#: models.py:677
+#: models.py:693
msgctxt "key for text search"
msgid "finds-received"
msgstr ""
-#: models.py:681
+#: models.py:697
msgctxt "key for text search"
msgid "finds-deadline-before"
msgstr ""
-#: models.py:685
+#: models.py:701
msgctxt "key for text search"
msgid "finds-deadline-after"
msgstr ""
-#: models.py:698
+#: models.py:714
msgctxt "key for text search"
msgid "file"
msgstr ""
-#: models.py:713 templates/ishtar/sheet_operation.html:60
+#: models.py:729 templates/ishtar/sheet_operation.html:60
msgid "Closing date"
msgstr ""
-#: models.py:720
+#: models.py:736
msgid "In charge scientist"
msgstr ""
-#: models.py:739 models.py:1908
+#: models.py:755 models.py:1932
msgid "File"
msgstr ""
-#: models.py:743
+#: models.py:759
msgid "Surface (m2)"
msgstr ""
-#: models.py:812
+#: models.py:828
msgid ""
"If checked, it means that this operation have not been officialy registered."
msgstr ""
-#: models.py:891
+#: models.py:907
msgid "OPE"
msgstr ""
-#: models.py:988
+#: models.py:1004
msgid "Intercommunal"
msgstr ""
-#: models.py:1024
+#: models.py:1040
msgid "Code patriarche"
msgstr ""
-#: models.py:1066
+#: models.py:1082
msgid "This operation code already exists for this year"
msgstr ""
-#: models.py:1111
+#: models.py:1135
msgid "Number of parcels"
msgstr ""
-#: models.py:1121
+#: models.py:1145
msgid "Number of administrative acts"
msgstr ""
-#: models.py:1129
+#: models.py:1153
msgid "Number of indexed administrative acts"
msgstr ""
-#: models.py:1137
+#: models.py:1161
msgid "Number of context records"
msgstr ""
-#: models.py:1173
+#: models.py:1197
msgid "Number of finds"
msgstr ""
-#: models.py:1218
+#: models.py:1242
msgid "No type"
msgstr ""
-#: models.py:1249
+#: models.py:1273
msgid "Number of sources"
msgstr ""
-#: models.py:1287 templates/ishtar/dashboards/dashboard_operation.html:309
+#: models.py:1311 templates/ishtar/dashboards/dashboard_operation.html:309
#: templates/ishtar/dashboards/dashboard_operation.html:575
#: templates/ishtar/dashboards/dashboard_operation.html:611
msgid "Mean"
msgstr ""
-#: models.py:1349
+#: models.py:1373
msgid "Operation relation type"
msgstr ""
-#: models.py:1350
+#: models.py:1374
msgid "Operation relation types"
msgstr ""
-#: models.py:1363
+#: models.py:1387
msgid "Operation record relation"
msgstr ""
-#: models.py:1364
+#: models.py:1388
msgid "Operation record relations"
msgstr ""
-#: models.py:1406 models.py:1688
+#: models.py:1430 models.py:1712
msgid "Treatment request"
msgstr ""
-#: models.py:1407 models.py:1693
+#: models.py:1431 models.py:1717
msgid "Treatment"
msgstr ""
-#: models.py:1409
+#: models.py:1433
msgid "Intended to"
msgstr ""
-#: models.py:1411
+#: models.py:1435
msgid "Code"
msgstr ""
-#: models.py:1414
+#: models.py:1438
msgid "Associated template"
msgstr ""
-#: models.py:1415
+#: models.py:1439
msgid "Indexed"
msgstr ""
-#: models.py:1419
+#: models.py:1443
msgid "Act types"
msgstr ""
-#: models.py:1489 models.py:1734
+#: models.py:1513 models.py:1758
#: templates/ishtar/blocks/window_tables/administrativacts.html:6
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:6
msgid "Ref."
msgstr ""
-#: models.py:1506
+#: models.py:1530
msgctxt "key for text search"
msgid "index"
msgstr ""
-#: models.py:1510
+#: models.py:1534
msgctxt "key for text search"
msgid "other-ref"
msgstr ""
-#: models.py:1522
+#: models.py:1546
msgctxt "key for text search"
msgid "indexed"
msgstr ""
-#: models.py:1526
+#: models.py:1550
msgctxt "key for text search"
msgid "operation-town"
msgstr ""
-#: models.py:1530
+#: models.py:1554
msgctxt "key for text search"
msgid "file-town"
msgstr ""
-#: models.py:1540
+#: models.py:1564
msgctxt "key for text search"
msgid "operation-department"
msgstr ""
-#: models.py:1544
+#: models.py:1568
msgctxt "key for text search"
msgid "file-department"
msgstr ""
-#: models.py:1548
+#: models.py:1572
msgctxt "key for text search"
msgid "object"
msgstr ""
-#: models.py:1560
+#: models.py:1584
msgctxt "key for text search"
msgid "signature-before"
msgstr ""
-#: models.py:1564
+#: models.py:1588
msgctxt "key for text search"
msgid "signature-after"
msgstr ""
-#: models.py:1568
+#: models.py:1592
msgctxt "key for text search"
msgid "file-name"
msgstr ""
-#: models.py:1572
+#: models.py:1596
msgctxt "key for text search"
msgid "general-contractor"
msgstr ""
-#: models.py:1577
+#: models.py:1601
msgctxt "key for text search"
msgid "general-contractor-organization"
msgstr ""
-#: models.py:1582
+#: models.py:1606
msgctxt "key for text search"
msgid "file-reference"
msgstr ""
-#: models.py:1586
+#: models.py:1610
msgctxt "key for text search"
msgid "file-year"
msgstr ""
-#: models.py:1590
+#: models.py:1614
msgctxt "key for text search"
msgid "file-other-reference"
msgstr ""
-#: models.py:1594
+#: models.py:1618
msgctxt "key for text search"
msgid "file-in-charge"
msgstr ""
-#: models.py:1598
+#: models.py:1622
msgctxt "key for text search"
msgid "file-permit-reference"
msgstr ""
-#: models.py:1602
+#: models.py:1626
msgctxt "key for text search"
msgid "treatment-name"
msgstr ""
-#: models.py:1606
+#: models.py:1630
msgctxt "key for text search"
msgid "treatment-reference"
msgstr ""
-#: models.py:1610
+#: models.py:1634
msgctxt "key for text search"
msgid "treatment-year"
msgstr ""
-#: models.py:1614
+#: models.py:1638
msgctxt "key for text search"
msgid "treatment-index"
msgstr ""
-#: models.py:1618
+#: models.py:1642
msgctxt "key for text search"
msgid "treatment-type"
msgstr ""
-#: models.py:1622
+#: models.py:1646
msgctxt "key for text search"
msgid "treatment-file-name"
msgstr ""
-#: models.py:1626
+#: models.py:1650
msgctxt "key for text search"
msgid "treatment-file-reference"
msgstr ""
-#: models.py:1630
+#: models.py:1654
msgctxt "key for text search"
msgid "treatment-file-year"
msgstr ""
-#: models.py:1634
+#: models.py:1658
msgctxt "key for text search"
msgid "treatment-file-index"
msgstr ""
-#: models.py:1638
+#: models.py:1662
msgctxt "key for text search"
msgid "treatment-file-type"
msgstr ""
-#: models.py:1661
+#: models.py:1685
msgid "Person in charge of the operation"
msgstr ""
-#: models.py:1667
+#: models.py:1691
msgid "Archaeological preventive operator"
msgstr ""
-#: models.py:1675
+#: models.py:1699
msgid "Signatory"
msgstr ""
-#: models.py:1703
+#: models.py:1727
msgid "Departments"
msgstr ""
-#: models.py:1704
+#: models.py:1728
msgid "Cached values get from associated departments"
msgstr ""
-#: models.py:1707
+#: models.py:1731
msgid "Cached values get from associated towns"
msgstr ""
-#: models.py:1714 templates/ishtar/sheet_operation.html:202
-#: templates/ishtar/sheet_operation.html:244
+#: models.py:1738 templates/ishtar/sheet_operation.html:202
+#: templates/ishtar/sheet_operation.html:248
msgid "Administrative acts"
msgstr ""
-#: models.py:1837
+#: models.py:1861
msgid "This index already exists for this year"
msgstr ""
-#: models.py:1921
+#: models.py:1945
msgid "External ID"
msgstr ""
-#: models.py:1924
+#: models.py:1948
msgid "External ID is set automatically"
msgstr ""
-#: models.py:1925
+#: models.py:1949
msgid "Address - Locality"
msgstr ""
-#: models.py:2140
+#: models.py:2164
msgid "Owner"
msgstr ""
-#: models.py:2148
+#: models.py:2172
msgid "Parcel owner"
msgstr ""
-#: models.py:2149
+#: models.py:2173
msgid "Parcel owners"
msgstr ""
-#: models.py:2183
+#: models.py:2207
msgid "Recorded"
msgstr ""
-#: models.py:2184
+#: models.py:2208
msgid "Effective"
msgstr ""
-#: models.py:2185
+#: models.py:2209
msgid "Active"
msgstr ""
-#: models.py:2186
+#: models.py:2210
msgid "Field completed"
msgstr ""
-#: models.py:2187
+#: models.py:2211
msgid "Associated report"
msgstr ""
-#: models.py:2188
+#: models.py:2212
msgid "Closed"
msgstr ""
-#: models.py:2189
+#: models.py:2213
msgid "Documented and closed"
msgstr ""
-#: models.py:2623
+#: models.py:2647
msgid "Is preventive"
msgstr ""
-#: models.py:2626
+#: models.py:2650
msgid "Operation type old"
msgstr ""
-#: models.py:2627
+#: models.py:2651
msgid "Operation types old"
msgstr ""
#: templates/ishtar/blocks/window_tables/administrativacts.html:7
-#: templates/ishtar/sheet_operation.html:263
-#: templates/ishtar/sheet_operation.html:327
+#: templates/ishtar/sheet_operation.html:267
+#: templates/ishtar/sheet_operation.html:331
msgid "Type"
msgstr ""
@@ -1470,12 +1470,12 @@ msgstr ""
#: templates/ishtar/dashboards/dashboard_operation.html:432
#: templates/ishtar/dashboards/dashboard_operation.html:463
#: templates/ishtar/dashboards/dashboard_operation.html:687
-#: templates/ishtar/sheet_operation.html:263
-#: templates/ishtar/sheet_operation.html:273
-#: templates/ishtar/sheet_operation.html:290
-#: templates/ishtar/sheet_operation.html:300
-#: templates/ishtar/sheet_operation.html:310
-#: templates/ishtar/sheet_operation.html:327
+#: templates/ishtar/sheet_operation.html:267
+#: templates/ishtar/sheet_operation.html:277
+#: templates/ishtar/sheet_operation.html:294
+#: templates/ishtar/sheet_operation.html:304
+#: templates/ishtar/sheet_operation.html:314
+#: templates/ishtar/sheet_operation.html:331
msgid "Number"
msgstr ""
@@ -1734,54 +1734,54 @@ msgstr ""
msgid "Document from this operation"
msgstr ""
-#: templates/ishtar/sheet_operation.html:212
-#: templates/ishtar/sheet_operation.html:255
+#: templates/ishtar/sheet_operation.html:213
+#: templates/ishtar/sheet_operation.html:259
msgid "Context records"
msgstr ""
-#: templates/ishtar/sheet_operation.html:217
+#: templates/ishtar/sheet_operation.html:218
msgid "Context record relations"
msgstr ""
-#: templates/ishtar/sheet_operation.html:222
+#: templates/ishtar/sheet_operation.html:223
msgid "Documents from associated context records"
msgstr ""
-#: templates/ishtar/sheet_operation.html:227
-#: templates/ishtar/sheet_operation.html:282
+#: templates/ishtar/sheet_operation.html:229
+#: templates/ishtar/sheet_operation.html:286
#: templates/ishtar/sheet_site.html:70
msgid "Finds"
msgstr ""
-#: templates/ishtar/sheet_operation.html:232
+#: templates/ishtar/sheet_operation.html:234
msgid "Documents from associated finds"
msgstr ""
-#: templates/ishtar/sheet_operation.html:237
+#: templates/ishtar/sheet_operation.html:240
msgid "Associated containers"
msgstr ""
-#: templates/ishtar/sheet_operation.html:241
+#: templates/ishtar/sheet_operation.html:245
msgid "Statistics"
msgstr ""
-#: templates/ishtar/sheet_operation.html:242
+#: templates/ishtar/sheet_operation.html:246
msgid "These numbers are updated hourly"
msgstr ""
-#: templates/ishtar/sheet_operation.html:290
+#: templates/ishtar/sheet_operation.html:294
msgid "Material type"
msgstr ""
-#: templates/ishtar/sheet_operation.html:300
+#: templates/ishtar/sheet_operation.html:304
msgid "Object type"
msgstr ""
-#: templates/ishtar/sheet_operation.html:319
+#: templates/ishtar/sheet_operation.html:323
msgid "Sources"
msgstr ""
-#: templates/ishtar/sheet_operation.html:337
+#: templates/ishtar/sheet_operation.html:341
msgid "Finds by context records"
msgstr ""
diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot
index 5f0f526fc..7435f077a 100644
--- a/ishtar_common/locale/django.pot
+++ b/ishtar_common/locale/django.pot
@@ -2136,11 +2136,11 @@ msgstr ""
msgid "Importer - Targets"
msgstr ""
-#: models_imports.py:525 views_item.py:847
+#: models_imports.py:525 views_item.py:867
msgid "True"
msgstr ""
-#: models_imports.py:526 views_item.py:849
+#: models_imports.py:526 views_item.py:869
msgid "False"
msgstr ""
@@ -2583,7 +2583,6 @@ msgid " items added."
msgstr ""
#: templates/base.html:47
-#| msgid "Select all items"
msgid "Select only one item."
msgstr ""
@@ -2838,7 +2837,6 @@ msgid "Data"
msgstr ""
#: templates/ishtar/blocks/sheet_json.html:9
-#| msgid "No data provided"
msgid "No data"
msgstr ""
@@ -2848,7 +2846,7 @@ msgstr ""
#: templates/ishtar/blocks/window_image_detail.html:111
#: templates/ishtar/import_delete.html:20 templatetags/window_field.py:17
-#: views_item.py:486 wizards.py:393
+#: views_item.py:506 wizards.py:393
msgid "Yes"
msgstr ""
@@ -2861,6 +2859,11 @@ msgstr ""
msgid "Web"
msgstr ""
+#: templates/ishtar/blocks/window_image_detail.html:193
+#: templates/ishtar/blocks/window_tables/documents.html:10
+msgid "Related to"
+msgstr ""
+
#: templates/ishtar/blocks/window_nav.html:17
msgid ""
"Are you sure to restore to this version? All changes made since this version "
@@ -2896,10 +2899,6 @@ msgstr ""
msgid "Relation between items are not historized."
msgstr ""
-#: templates/ishtar/blocks/window_tables/documents.html:10
-msgid "Related to"
-msgstr ""
-
#: templates/ishtar/blocks/window_tables/documents.html:11
#: templates/ishtar/blocks/window_tables/documents.html:19
msgid "Link"
@@ -3744,7 +3743,7 @@ msgstr ""
msgid "Treatment"
msgstr ""
-#: views.py:724 views_item.py:103
+#: views.py:724 views_item.py:104
msgid "Operation not permitted."
msgstr ""
@@ -3824,7 +3823,7 @@ msgstr ""
msgid "Bookmark - Delete"
msgstr ""
-#: views_item.py:105
+#: views_item.py:106
#, python-format
msgid "New %s"
msgstr ""
diff --git a/translations/de/ishtar_common.po b/translations/de/ishtar_common.po
index 142632f42..d8e6d4cdb 100644
--- a/translations/de/ishtar_common.po
+++ b/translations/de/ishtar_common.po
@@ -2138,11 +2138,11 @@ msgstr ""
msgid "Importer - Targets"
msgstr ""
-#: models_imports.py:525 views_item.py:847
+#: models_imports.py:525 views_item.py:867
msgid "True"
msgstr ""
-#: models_imports.py:526 views_item.py:849
+#: models_imports.py:526 views_item.py:869
msgid "False"
msgstr ""
@@ -2848,7 +2848,7 @@ msgstr ""
#: templates/ishtar/blocks/window_image_detail.html:111
#: templates/ishtar/import_delete.html:20 templatetags/window_field.py:17
-#: views_item.py:486 wizards.py:393
+#: views_item.py:506 wizards.py:393
msgid "Yes"
msgstr ""
@@ -2861,6 +2861,11 @@ msgstr ""
msgid "Web"
msgstr ""
+#: templates/ishtar/blocks/window_image_detail.html:193
+#: templates/ishtar/blocks/window_tables/documents.html:10
+msgid "Related to"
+msgstr ""
+
#: templates/ishtar/blocks/window_nav.html:17
msgid ""
"Are you sure to restore to this version? All changes made since this version "
@@ -2896,10 +2901,6 @@ msgstr ""
msgid "Relation between items are not historized."
msgstr ""
-#: templates/ishtar/blocks/window_tables/documents.html:10
-msgid "Related to"
-msgstr ""
-
#: templates/ishtar/blocks/window_tables/documents.html:11
#: templates/ishtar/blocks/window_tables/documents.html:19
msgid "Link"
@@ -3744,7 +3745,7 @@ msgstr ""
msgid "Treatment"
msgstr ""
-#: views.py:724 views_item.py:103
+#: views.py:724 views_item.py:104
msgid "Operation not permitted."
msgstr ""
@@ -3824,7 +3825,7 @@ msgstr ""
msgid "Bookmark - Delete"
msgstr ""
-#: views_item.py:105
+#: views_item.py:106
#, python-format
msgid "New %s"
msgstr ""
diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po
index ae08f3f62..3d81efbca 100644
--- a/translations/fr/archaeological_finds.po
+++ b/translations/fr/archaeological_finds.po
@@ -11,7 +11,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2018-11-21 10:10+0000\n"
+"PO-Revision-Date: 2018-11-27 10:00+0000\n"
"Last-Translator: Étienne Loks \n"
"Language-Team: \n"
"Language: fr\n"
@@ -31,7 +31,7 @@ msgid "Multi polygon"
msgstr "Polygones multi-parties"
#: forms.py:95 forms.py:101 forms.py:540 forms.py:553 forms.py:831
-#: models_finds.py:674 models_finds.py:1233 wizards.py:86
+#: models_finds.py:674 models_finds.py:1237 wizards.py:86
msgid "Context record"
msgstr "Unité d'Enregistrement"
@@ -39,8 +39,8 @@ msgstr "Unité d'Enregistrement"
msgid "Find - 010 - Context record choice"
msgstr "Mobilier - 010 - Choix de l'unité d'enregistrement"
-#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1106
-#: models_finds.py:1739 models_treatments.py:511
+#: forms.py:133 forms.py:255 ishtar_menu.py:32 models_finds.py:1110
+#: models_finds.py:1743 models_treatments.py:512
#: templates/ishtar/sheet_find.html:4
msgid "Find"
msgstr "Mobilier"
@@ -134,7 +134,7 @@ msgstr "Communicabilité"
#: forms.py:195 forms.py:432 forms.py:584 forms.py:1177 forms_treatments.py:145
#: forms_treatments.py:606 models_finds.py:264 models_finds.py:1056
-#: models_treatments.py:149 models_treatments.py:771
+#: models_treatments.py:149 models_treatments.py:772
msgid "Comment"
msgstr "Commentaire général"
@@ -433,14 +433,14 @@ msgid "Dating"
msgstr "Datation"
#: forms.py:766 forms_treatments.py:131 forms_treatments.py:398
-#: forms_treatments.py:608 models_finds.py:1744 models_treatments.py:152
-#: models_treatments.py:522 templates/ishtar/sheet_find.html:196
+#: forms_treatments.py:608 models_finds.py:1748 models_treatments.py:152
+#: models_treatments.py:523 templates/ishtar/sheet_find.html:196
#: templates/ishtar/sheet_find.html:254 templates/ishtar/sheet_find.html:291
#: templates/ishtar/sheet_find.html:329
msgid "Start date"
msgstr "Date de début"
-#: forms.py:768 models_finds.py:1745 models_treatments.py:523
+#: forms.py:768 models_finds.py:1749 models_treatments.py:524
#: templates/ishtar/sheet_find.html:197 templates/ishtar/sheet_find.html:255
#: templates/ishtar/sheet_find.html:292 templates/ishtar/sheet_find.html:330
msgid "End date"
@@ -482,7 +482,7 @@ msgstr "Identifiant complet"
#: forms.py:804 forms_treatments.py:56 forms_treatments.py:102
#: forms_treatments.py:323 forms_treatments.py:451 forms_treatments.py:526
#: forms_treatments.py:578 forms_treatments.py:718 models_treatments.py:126
-#: models_treatments.py:744
+#: models_treatments.py:745
msgid "Year"
msgstr "Année"
@@ -554,13 +554,14 @@ msgstr "Réf. contenant"
msgid "Find search"
msgstr "Rechercher un mobilier"
-#: forms.py:969 forms.py:1114 models_treatments.py:271
-#: templates/ishtar/sheet_treatment.html:61
+#: forms.py:969 forms.py:1114 models_treatments.py:268
+#: templates/ishtar/sheet_treatment.html:102
msgid "Upstream finds"
msgstr "Mobilier amont"
-#: forms.py:971 models_finds.py:1107 models_treatments.py:156
+#: forms.py:971 models_finds.py:1111
#: templates/ishtar/forms/qa_find_treatment.html:11
+#: templates/ishtar/sheet_treatment.html:24
msgid "Finds"
msgstr "Mobilier"
@@ -605,13 +606,13 @@ msgstr "Autre réf."
#: forms_treatments.py:57 forms_treatments.py:260 forms_treatments.py:452
#: forms_treatments.py:514 forms_treatments.py:527 forms_treatments.py:631
#: forms_treatments.py:719 forms_treatments.py:786 models_treatments.py:127
-#: models_treatments.py:745
+#: models_treatments.py:746
msgid "Index"
msgstr "Index"
#: forms_treatments.py:58 forms_treatments.py:98 forms_treatments.py:406
#: forms_treatments.py:468 models_finds.py:111 models_treatments.py:132
-#: models_treatments.py:521
+#: models_treatments.py:522
msgid "Treatment type"
msgstr "Type de traitement"
@@ -619,8 +620,9 @@ msgstr "Type de traitement"
msgid "Treatment search"
msgstr "Rechercher un traitement"
-#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:178
-#: models_treatments.py:513 templates/ishtar/sheet_treatment.html:4
+#: forms_treatments.py:83 ishtar_menu.py:147 models_treatments.py:175
+#: models_treatments.py:514 templates/ishtar/sheet_treatment.html:4
+#: templates/ishtar/sheet_treatment.html:17
msgid "Treatment"
msgstr "Traitement"
@@ -634,7 +636,7 @@ msgstr "Traitement - 020 - Général"
msgid "State"
msgstr "État"
-#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:524
+#: forms_treatments.py:107 models_treatments.py:137 models_treatments.py:525
msgid "Location"
msgstr "Localisation"
@@ -648,7 +650,7 @@ msgid "Organization"
msgstr "Organisation"
#: forms_treatments.py:133 forms_treatments.py:398 forms_treatments.py:614
-#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:765
+#: forms_treatments.py:667 models_treatments.py:153 models_treatments.py:766
msgid "Closing date"
msgstr "Date de clôture"
@@ -718,7 +720,7 @@ msgid "Treatment - 010 - Request choice"
msgstr "Traitement - 010 - Choix de la demande de traitement"
#: forms_treatments.py:296 forms_treatments.py:569 ishtar_menu.py:95
-#: models_treatments.py:780 models_treatments.py:808
+#: models_treatments.py:781 models_treatments.py:803
#: templates/ishtar/sheet_treatmentfile.html:4 wizards.py:457
msgid "Treatment request"
msgstr "Demande de traitement"
@@ -737,7 +739,7 @@ msgid "Would you like to delete this treatment?"
msgstr "Voulez-vous supprimer ce traitement ?"
#: forms_treatments.py:313 models_finds.py:697 models_finds.py:1017
-#: models_treatments.py:158 models_treatments.py:525
+#: models_treatments.py:155 models_treatments.py:526
#: templates/ishtar/sheet_find.html:253 templates/ishtar/sheet_find.html:290
#: templates/ishtar/sheet_find.html:328
msgid "Container"
@@ -824,7 +826,7 @@ msgstr "Modifié par"
msgid "Treatment - Administrative act - General"
msgstr "Traitement - Acte administratif - Général"
-#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:750
+#: forms_treatments.py:524 forms_treatments.py:576 models_treatments.py:751
msgid "Name"
msgstr "Nom"
@@ -842,12 +844,12 @@ msgstr "Type"
msgid "In charge"
msgstr "Responsable"
-#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:759
+#: forms_treatments.py:537 forms_treatments.py:595 models_treatments.py:760
#: templates/ishtar/sheet_treatmentfile.html:45
msgid "Applicant"
msgstr "Demandeur"
-#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:763
+#: forms_treatments.py:543 forms_treatments.py:601 models_treatments.py:764
#: templates/ishtar/sheet_treatmentfile.html:53
msgid "Applicant organisation"
msgstr "Organisation du demandeur"
@@ -860,7 +862,7 @@ msgstr "Rechercher une demande de traitement"
msgid "External ref."
msgstr "Référence"
-#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:769
+#: forms_treatments.py:612 forms_treatments.py:666 models_treatments.py:770
msgid "Reception date"
msgstr "Date de réception"
@@ -876,12 +878,12 @@ msgstr "Êtes-vous sûr de vouloir supprimer cette demande de traitement ? "
msgid "Would you like to delete this treatment request?"
msgstr "Voulez-vous supprimer cette demande de traitement ?"
-#: forms_treatments.py:665 models_treatments.py:767
+#: forms_treatments.py:665 models_treatments.py:768
msgid "Creation date"
msgstr "Date de création"
-#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:681
-#: models_treatments.py:752
+#: forms_treatments.py:675 forms_treatments.py:739 models_treatments.py:682
+#: models_treatments.py:753
msgid "Treatment request type"
msgstr "Type de demande de traitement"
@@ -906,22 +908,22 @@ msgid "Treatment request - Administrative act - General"
msgstr "Demande de traitement - Acte administratif - Général"
#: ishtar_menu.py:37 ishtar_menu.py:60 ishtar_menu.py:100 ishtar_menu.py:123
-#: ishtar_menu.py:152 ishtar_menu.py:191
+#: ishtar_menu.py:152 ishtar_menu.py:185
msgid "Search"
msgstr "Recherche"
#: ishtar_menu.py:42 ishtar_menu.py:65 ishtar_menu.py:105 ishtar_menu.py:127
-#: ishtar_menu.py:195
+#: ishtar_menu.py:189
msgid "Creation"
msgstr "Ajout"
#: ishtar_menu.py:47 ishtar_menu.py:70 ishtar_menu.py:110 ishtar_menu.py:131
-#: ishtar_menu.py:178 ishtar_menu.py:200
+#: ishtar_menu.py:172 ishtar_menu.py:194
msgid "Modification"
msgstr "Modification"
#: ishtar_menu.py:52 ishtar_menu.py:82 ishtar_menu.py:115 ishtar_menu.py:134
-#: ishtar_menu.py:183 ishtar_menu.py:203
+#: ishtar_menu.py:177 ishtar_menu.py:197
msgid "Deletion"
msgstr "Suppression"
@@ -929,33 +931,27 @@ msgstr "Suppression"
msgid "Manage items"
msgstr "Gestion des éléments"
-#: ishtar_menu.py:120 ishtar_menu.py:188 models_finds.py:1741
+#: ishtar_menu.py:120 ishtar_menu.py:182 models_finds.py:1745
msgid "Administrative act"
msgstr "Acte administratif"
-#: ishtar_menu.py:138 ishtar_menu.py:207 models_finds.py:1098
-#: models_treatments.py:171 models_treatments.py:773
-#: templates/ishtar/sheet_find.html:56
+#: ishtar_menu.py:138 ishtar_menu.py:201 models_finds.py:1098
+#: models_treatments.py:168 models_treatments.py:774
+#: templates/ishtar/sheet_find.html:56 templates/ishtar/sheet_treatment.html:32
msgid "Documents"
msgstr "Documents"
#: ishtar_menu.py:158
-msgid ""
-"Treatment 1 1 - creation"
-msgstr ""
-"Traitement 1 1 - création"
+msgid "Simple treatment - creation"
+msgstr "Traitement simple - création"
-#: ishtar_menu.py:165
-msgid ""
-"Treatment n 1 - creation"
-msgstr ""
-"Traitement n 1 - création"
+#: ishtar_menu.py:163
+msgid "Treatment many to one - creation"
+msgstr "Traitement de plusieurs à un - création"
-#: ishtar_menu.py:172
-msgid ""
-"Treatment 1 n - creation"
-msgstr ""
-"Traitement 1 n - création"
+#: ishtar_menu.py:168
+msgid "Treatment one to many - creation"
+msgstr "Traitement de un à plusieurs - création"
#: models_finds.py:51
msgid "Code"
@@ -967,7 +963,7 @@ msgstr "Recommandation"
#: models_finds.py:66 models_finds.py:79 models_finds.py:92 models_finds.py:143
#: models_finds.py:166 models_finds.py:223 models_finds.py:984
-#: models_treatments.py:517
+#: models_treatments.py:518
msgid "Order"
msgstr "Ordre"
@@ -1027,7 +1023,7 @@ msgstr ""
"Cochez cela si, pour ce traitement, à partir d'un seul élément vous en "
"obtenez plusieurs."
-#: models_finds.py:112 models_treatments.py:253
+#: models_finds.py:112 models_treatments.py:250
msgid "Treatment types"
msgstr "Types de traitement"
@@ -1104,7 +1100,7 @@ msgid "Checked types"
msgstr "Types de vérification"
#: models_finds.py:259 models_finds.py:977 models_treatments.py:147
-#: models_treatments.py:748
+#: models_treatments.py:749
msgid "External ID"
msgstr "Identifiant"
@@ -1233,7 +1229,7 @@ msgctxt "key for text search"
msgid "town"
msgstr "commune"
-#: models_finds.py:794 models_treatments.py:91 models_treatments.py:713
+#: models_finds.py:794 models_treatments.py:91 models_treatments.py:714
msgctxt "key for text search"
msgid "year"
msgstr "annee"
@@ -1387,7 +1383,7 @@ msgstr "cree-par"
msgid "Bulk update"
msgstr "Mise à jour multiple"
-#: models_finds.py:947 models_finds.py:1200
+#: models_finds.py:947 models_finds.py:1204
#: templates/ishtar/forms/qa_find_treatment.html:16 views.py:714
msgid "Packaging"
msgstr "Conditionnement"
@@ -1424,41 +1420,52 @@ msgstr "Encombrement - hauteur (cm)"
msgid "Collection"
msgstr "Collection"
-#: models_finds.py:1100 models_treatments.py:173 models_treatments.py:775
+#: models_finds.py:1101 models_treatments.py:176
+#: templates/ishtar/sheet_find.html:243
+#: templates/ishtar/sheet_treatmentfile.html:61
+msgid "Treatments"
+msgstr "Traitements"
+
+#: models_finds.py:1103
+msgid "Related treatments when no new find is created"
+msgstr ""
+"Traitements associés quand il n'y a pas de création de nouveau mobilier"
+
+#: models_finds.py:1104 models_treatments.py:170 models_treatments.py:776
msgid "Cached name"
msgstr "Nom en cache"
-#: models_finds.py:1122
+#: models_finds.py:1126
msgid "FIND"
msgstr "MOBILIER"
-#: models_finds.py:1194
+#: models_finds.py:1198
msgid "Add to basket"
msgstr "Ajouter au panier"
-#: models_finds.py:1242 wizards.py:85 wizards.py:469
+#: models_finds.py:1246 wizards.py:85 wizards.py:469
msgid "Operation"
msgstr "Opération (OA)"
-#: models_finds.py:1566
+#: models_finds.py:1570
msgid "No container have been set - the localisation cannot be set."
msgstr ""
"Aucun contenant n'a été défini - la localisation ne peut être définie."
-#: models_finds.py:1572
+#: models_finds.py:1576
msgid "The division number {} have not been set for the warehouse {}."
msgstr ""
"La division numéro {} n'a pas été définie pour le lieu de conservation {}."
-#: models_finds.py:1742
+#: models_finds.py:1746
msgid "Person"
msgstr "Individu"
-#: models_finds.py:1748
+#: models_finds.py:1752
msgid "Property"
msgstr "Propriété"
-#: models_finds.py:1749
+#: models_finds.py:1753
msgid "Properties"
msgstr "Propriétés"
@@ -1488,12 +1495,12 @@ msgctxt "key for text search"
msgid "other-reference"
msgstr "autre-reference"
-#: models_treatments.py:95 models_treatments.py:717
+#: models_treatments.py:95 models_treatments.py:718
msgctxt "key for text search"
msgid "index"
msgstr "index"
-#: models_treatments.py:103 models_treatments.py:721
+#: models_treatments.py:103 models_treatments.py:722
msgctxt "key for text search"
msgid "type"
msgstr "type"
@@ -1505,94 +1512,85 @@ msgstr ""
"destination pour un déplacement."
#: models_treatments.py:157
-msgid "Related finds for non-destructive treatment"
-msgstr "Mobilier associé pour les traitements non-destructifs"
-
-#: models_treatments.py:160
msgid "Estimated cost"
msgstr "Coût estimé"
-#: models_treatments.py:162
+#: models_treatments.py:159
msgid "Quoted cost"
msgstr "Coût devisé"
-#: models_treatments.py:164
+#: models_treatments.py:161
msgid "Realized cost"
msgstr "Coût réalisé"
-#: models_treatments.py:166
+#: models_treatments.py:163
msgid "Insurance cost"
msgstr "Coût d'assurance"
-#: models_treatments.py:168
+#: models_treatments.py:165
msgid "Target a basket"
msgstr "Appliquer à un panier"
-#: models_treatments.py:179 templates/ishtar/sheet_find.html:243
-#: templates/ishtar/sheet_treatmentfile.html:61
-msgid "Treatments"
-msgstr "Traitements"
-
-#: models_treatments.py:199
+#: models_treatments.py:196
msgid "TREATMENT"
msgstr "TRAITEMENT"
-#: models_treatments.py:262 templates/ishtar/sheet_treatment.html:66
+#: models_treatments.py:259 templates/ishtar/sheet_treatment.html:107
msgid "Downstream finds"
msgstr "Mobilier aval"
-#: models_treatments.py:526 templates/ishtar/sheet_find.html:252
+#: models_treatments.py:527 templates/ishtar/sheet_find.html:252
#: templates/ishtar/sheet_find.html:289 templates/ishtar/sheet_find.html:327
msgid "Doer"
msgstr "Opérateur"
-#: models_treatments.py:527 models_treatments.py:528
-#: templates/ishtar/sheet_treatment.html:56
+#: models_treatments.py:528 models_treatments.py:529
+#: templates/ishtar/sheet_treatment.html:97
msgid "Related finds"
msgstr "Mobilier associé"
-#: models_treatments.py:670
+#: models_treatments.py:671
msgid "Is upstream"
msgstr "Est en amont"
-#: models_treatments.py:682
+#: models_treatments.py:683
msgid "Treatment request types"
msgstr "Types de demande de traitement"
-#: models_treatments.py:705
+#: models_treatments.py:706
msgctxt "key for text search"
msgid "name"
msgstr "nom"
-#: models_treatments.py:709
+#: models_treatments.py:710
msgctxt "key for text search"
msgid "reference"
msgstr "reference"
-#: models_treatments.py:725
+#: models_treatments.py:726
msgctxt "key for text search"
msgid "in-charge"
msgstr "responsable"
-#: models_treatments.py:729
+#: models_treatments.py:730
msgctxt "key for text search"
msgid "applicant"
msgstr "demandeur"
-#: models_treatments.py:733
+#: models_treatments.py:734
msgctxt "key for text search"
msgid "applicant-organisation"
msgstr "demandeur-organisation"
-#: models_treatments.py:746
+#: models_treatments.py:747
msgid "Internal reference"
msgstr "Référence interne"
-#: models_treatments.py:755
+#: models_treatments.py:756
msgid "Person in charge"
msgstr "Personne responsable"
-#: models_treatments.py:781
+#: models_treatments.py:782
msgid "Treatment requests"
msgstr "Demandes de traitement"
@@ -1709,6 +1707,7 @@ msgid "CSV"
msgstr "CSV"
#: templates/ishtar/sheet_find.html:360
+#: templates/ishtar/sheet_treatment.html:121
msgid "Associated documents"
msgstr "Documents associés"
@@ -1716,25 +1715,26 @@ msgstr "Documents associés"
msgid "Content"
msgstr "Contenu"
-#: templates/ishtar/sheet_treatment.html:25
+#: templates/ishtar/sheet_treatment.html:41
+#: templates/ishtar/sheet_treatment.html:129
+#: templates/ishtar/sheet_treatmentfile.html:73
+msgid "Administrative acts"
+msgstr "Actes administratifs"
+
+#: templates/ishtar/sheet_treatment.html:63
msgctxt "Treatment"
msgid "Closed"
msgstr "Close"
-#: templates/ishtar/sheet_treatment.html:27
+#: templates/ishtar/sheet_treatment.html:65
msgctxt "Treatment"
msgid "Active"
msgstr "Actif"
-#: templates/ishtar/sheet_treatment.html:71
+#: templates/ishtar/sheet_treatment.html:112
msgid "Related operations"
msgstr "Opérations associées"
-#: templates/ishtar/sheet_treatment.html:82
-#: templates/ishtar/sheet_treatmentfile.html:73
-msgid "Administrative acts"
-msgstr "Actes administratifs"
-
#: templates/ishtar/sheet_treatmentfile.html:24
msgctxt "Treatment request"
msgid "Closed"
diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po
index 5d4bd0631..abd3b3e89 100644
--- a/translations/fr/archaeological_operations.po
+++ b/translations/fr/archaeological_operations.po
@@ -18,21 +18,21 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n>1;\n"
"X-Generator: Zanata 4.6.2\n"
-#: admin.py:91 models.py:244 models.py:836
+#: admin.py:91 models.py:245 models.py:852
msgid "Point"
msgstr "Point"
-#: admin.py:93 models.py:245 models.py:837
+#: admin.py:93 models.py:246 models.py:853
msgid "Multi polygon"
msgstr "Polygones multi-parties"
-#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1931
+#: forms.py:64 forms.py:1061 forms.py:1077 forms.py:1083 models.py:1955
#: templates/ishtar/blocks/window_tables/parcels.html:9
-#: templates/ishtar/sheet_operation.html:250
+#: templates/ishtar/sheet_operation.html:254
msgid "Parcels"
msgstr "Parcelles"
-#: forms.py:67 forms.py:200 forms.py:1036 models.py:1915
+#: forms.py:67 forms.py:200 forms.py:1036 models.py:1939
#: templates/ishtar/blocks/window_tables/parcels.html:6
#: templates/ishtar/dashboards/dashboard_operation.html:432
#: templates/ishtar/dashboards/dashboard_operation.html:446
@@ -41,22 +41,22 @@ msgstr "Parcelles"
msgid "Town"
msgstr "Commune"
-#: forms.py:69 forms.py:480 forms.py:763 forms.py:1400 models.py:734
-#: models.py:1489 models.py:1696 models.py:1913
+#: forms.py:69 forms.py:480 forms.py:763 forms.py:1400 models.py:750
+#: models.py:1513 models.py:1720 models.py:1937
#: templates/ishtar/blocks/window_tables/parcels.html:7
msgid "Year"
msgstr "Année"
-#: forms.py:72 models.py:1916
+#: forms.py:72 models.py:1940
#: templates/ishtar/blocks/window_tables/parcels.html:8
msgid "Section"
msgstr "Section"
-#: forms.py:75 models.py:1918
+#: forms.py:75 models.py:1942
msgid "Parcel number"
msgstr "Numéro de parcelle"
-#: forms.py:77 models.py:1920 models.py:1939 models.py:2000
+#: forms.py:77 models.py:1944 models.py:1963 models.py:2024
msgid "Public domain"
msgstr "Domaine public"
@@ -92,8 +92,8 @@ msgstr "Il y a des parcelles identiques."
msgid "Relation type"
msgstr "Type de relation"
-#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:842 models.py:1394
-#: models.py:1405 models.py:1491 models.py:1678 models.py:1912
+#: forms.py:373 forms.py:1254 ishtar_menu.py:32 models.py:858 models.py:1418
+#: models.py:1429 models.py:1515 models.py:1702 models.py:1936
#: templates/ishtar/sheet_operation.html:4 wizards.py:320 wizards.py:331
msgid "Operation"
msgstr "Opération (OA)"
@@ -134,15 +134,15 @@ msgstr "Opération - 080 - Relations"
msgid "Full text search"
msgstr "Recherche en texte intégral"
-#: forms.py:481 models.py:735
+#: forms.py:481 models.py:751
msgid "Numeric reference"
msgstr "Identifiant numérique"
-#: forms.py:488 forms.py:1064 forms.py:1412 models.py:1930 models.py:2142
+#: forms.py:488 forms.py:1064 forms.py:1412 models.py:1954 models.py:2166
msgid "Parcel"
msgstr "Parcelle"
-#: forms.py:491 forms.py:1415 models.py:1395
+#: forms.py:491 forms.py:1415 models.py:1419
#: templates/ishtar/dashboards/dashboard_operation.html:390
#: templates/ishtar/dashboards/dashboard_operation.html:411
#: templates/ishtar/dashboards/dashboard_operation.html:643
@@ -151,17 +151,17 @@ msgstr "Parcelle"
msgid "Department"
msgstr "Département"
-#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1325 models.py:213
+#: forms.py:492 forms.py:1148 forms.py:1241 forms.py:1325 models.py:214
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7
#: templates/ishtar/sheet_operation.html:29
msgid "Name"
msgstr "Nom"
-#: forms.py:493 forms.py:761 models.py:797
+#: forms.py:493 forms.py:761 models.py:813
msgid "Address / Locality"
msgstr "Adresse / Lieu-dit"
-#: forms.py:494 forms.py:678 forms.py:757 models.py:742
+#: forms.py:494 forms.py:678 forms.py:757 models.py:758
msgid "Operation type"
msgstr "Type d'opération"
@@ -169,26 +169,26 @@ msgstr "Type d'opération"
msgid "Is open?"
msgstr "Est ouvert ?"
-#: forms.py:503 forms.py:793 models.py:727
+#: forms.py:503 forms.py:793 models.py:743
msgid "In charge"
msgstr "Responsable du suivi scientifique"
-#: forms.py:510 models.py:1672
+#: forms.py:510 models.py:1696
msgid "Scientist in charge"
msgstr "Responsable scientifique"
-#: forms.py:512 forms.py:680 forms.py:783 models.py:725
+#: forms.py:512 forms.py:680 forms.py:783 models.py:741
msgid "Operator"
msgstr "Opérateur"
-#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1330 models.py:217
-#: models.py:744
+#: forms.py:521 forms.py:1153 forms.py:1243 forms.py:1330 models.py:218
+#: models.py:760
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9
msgid "Remains"
msgstr "Vestiges"
#: forms.py:522 forms.py:1131 forms.py:1150 forms.py:1242 forms.py:1327
-#: models.py:215 models.py:750
+#: models.py:216 models.py:766
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8
msgid "Periods"
msgstr "Périodes"
@@ -213,8 +213,8 @@ msgstr "Terminé après"
msgid "Search within relations"
msgstr "Rechercher parmi les relations"
-#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1340 models.py:221
-#: models.py:798
+#: forms.py:529 forms.py:841 forms.py:1245 forms.py:1340 models.py:222
+#: models.py:814
msgid "Comment"
msgstr "Commentaire"
@@ -222,23 +222,23 @@ msgstr "Commentaire"
msgid "Abstract (full text search)"
msgstr "Résumé (recherche en texte intégral)"
-#: forms.py:532 forms.py:844 models.py:800
+#: forms.py:532 forms.py:844 models.py:816
msgid "Comment about scientific documentation"
msgstr "Commentaire relatif à la documentation scientifique"
-#: forms.py:533 forms.py:846 models.py:815
+#: forms.py:533 forms.py:846 models.py:831
msgid "Record quality"
msgstr "Qualité d'enregistrement"
-#: forms.py:534 forms.py:812 models.py:762
+#: forms.py:534 forms.py:812 models.py:778
msgid "Report processing"
msgstr "Traitement du rapport"
-#: forms.py:536 forms.py:849 models.py:810
+#: forms.py:536 forms.py:849 models.py:826
msgid "Virtual operation"
msgstr "Opération virtuelle"
-#: forms.py:538 forms.py:1188 forms.py:1192 models.py:257
+#: forms.py:538 forms.py:1188 forms.py:1192 models.py:258
msgid "Archaeological site"
msgstr "Entité (EA)"
@@ -250,7 +250,7 @@ msgstr "Créé par"
msgid "Modified by"
msgstr "Modifié par"
-#: forms.py:557 forms.py:834 models.py:822
+#: forms.py:557 forms.py:834 models.py:838
msgid "Documentation received"
msgstr "Documentation reçue"
@@ -262,7 +262,7 @@ msgstr "Date limite de versement de la documentation avant"
msgid "Documentation deadline after"
msgstr "Date limite de versement de la documentation après"
-#: forms.py:563 forms.py:839 models.py:826
+#: forms.py:563 forms.py:839 models.py:842
msgid "Finds received"
msgstr "Mobilier reçu"
@@ -282,12 +282,12 @@ msgstr "Rechercher une opération"
msgid "Associated file"
msgstr "Dossier associé"
-#: forms.py:643 forms.py:937 models.py:1023 models.py:1404 models.py:1490
-#: models.py:1683 wizards.py:83
+#: forms.py:643 forms.py:937 models.py:1039 models.py:1428 models.py:1514
+#: models.py:1707 wizards.py:83
msgid "Archaeological file"
msgstr "Dossier archéologique"
-#: forms.py:650 forms.py:654 models.py:817
+#: forms.py:650 forms.py:654 models.py:833
msgid "Abstract"
msgstr "Résumé"
@@ -303,7 +303,7 @@ msgstr "mois"
msgid "years"
msgstr "années"
-#: forms.py:660 models.py:711
+#: forms.py:660 models.py:727
msgid "Creation date"
msgstr "Date de création"
@@ -365,11 +365,11 @@ msgstr "Général"
msgid "Operation - 010 - General"
msgstr "Opération - 010 - Général"
-#: forms.py:759 models.py:796
+#: forms.py:759 models.py:812
msgid "Generic name"
msgstr "Nom générique"
-#: forms.py:768 models.py:764
+#: forms.py:768 models.py:780
msgid "Old code"
msgstr "Ancien code"
@@ -377,7 +377,7 @@ msgstr "Ancien code"
msgid "Head scientist"
msgstr "Responsable scientifique"
-#: forms.py:790 models.py:795
+#: forms.py:790 models.py:811
msgid "Operator reference"
msgstr "Référence de l'opérateur"
@@ -385,23 +385,23 @@ msgstr "Référence de l'opérateur"
msgid "Total surface (m2)"
msgstr "Surface totale (m2)"
-#: forms.py:807 models.py:57 models.py:714 models.py:2144
+#: forms.py:807 models.py:57 models.py:730 models.py:2168
msgid "Start date"
msgstr "Date de début"
-#: forms.py:808 models.py:716
+#: forms.py:808 models.py:732
msgid "Excavation end date"
msgstr "Date de fin de chantier"
-#: forms.py:810 models.py:717
+#: forms.py:810 models.py:733
msgid "Report delivery date"
msgstr "Date de livraison du rapport"
-#: forms.py:831 models.py:819
+#: forms.py:831 models.py:835
msgid "Deadline for submission of the documentation"
msgstr "Date limite de versement de la documentation"
-#: forms.py:836 models.py:824
+#: forms.py:836 models.py:840
msgid "Deadline for submission of the finds"
msgstr "Date limite de versement du mobilier"
@@ -430,7 +430,7 @@ msgstr ""
msgid "Bad operation code"
msgstr "Mauvais code d'opération"
-#: forms.py:933 models.py:1038
+#: forms.py:933 models.py:1054
msgid "Operation code"
msgstr "Code de l'opération"
@@ -442,19 +442,19 @@ msgstr "Saisie judiciaire"
msgid "Operation - 015 - Court-ordered seizure"
msgstr "Opération - 015 - Saisie judiciaire"
-#: forms.py:973 models.py:829
+#: forms.py:973 models.py:845
msgid "Seizure name"
msgstr "Nom de la saisie"
-#: forms.py:976 models.py:830
+#: forms.py:976 models.py:846
msgid "Official report number"
msgstr "Numéro de procès-verbal"
-#: forms.py:979 models.py:832
+#: forms.py:979 models.py:848
msgid "Name of the protagonist"
msgstr "Nom du protagoniste"
-#: forms.py:984 forms.py:991 models.py:731
+#: forms.py:984 forms.py:991 models.py:747
msgid "Collaborators"
msgstr "Collaborateurs"
@@ -470,20 +470,20 @@ msgstr "Information archéologie préventive - fouille"
msgid "Operation - 033 - Preventive - Excavation"
msgstr "Opération - 033 - Préventif - Fouille"
-#: forms.py:1004 models.py:748
+#: forms.py:1004 models.py:764
#: templates/ishtar/dashboards/dashboard_operation.html:701
msgid "Cost (euros)"
msgstr "Coût (euros)"
-#: forms.py:1005 models.py:753
+#: forms.py:1005 models.py:769
msgid "Scheduled man-days"
msgstr "Jours-hommes prévus"
-#: forms.py:1007 models.py:756
+#: forms.py:1007 models.py:772
msgid "Optional man-days"
msgstr "Jours-hommes optionnels"
-#: forms.py:1009 models.py:759
+#: forms.py:1009 models.py:775
msgid "Effective man-days"
msgstr "Jours-hommes effectifs"
@@ -495,20 +495,20 @@ msgstr "Information archéologie préventive - diagnostic"
msgid "Operation - 037 - Preventive - Diagnostic"
msgstr "Opération - 037 - Préventif - Diagnostic"
-#: forms.py:1025 models.py:779
+#: forms.py:1025 models.py:795
msgid "Prescription on zoning"
msgstr "Prescription sur zonage"
-#: forms.py:1027 models.py:782
+#: forms.py:1027 models.py:798
msgid "Prescription on large area"
msgstr "Prescription sur une vaste surface"
-#: forms.py:1030 models.py:784
+#: forms.py:1030 models.py:800
msgid "Prescription on geoarchaeological context"
msgstr "Prescription sur un contexte géoarchéologique"
-#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1359 models.py:128
-#: models.py:219 models.py:506 models.py:746 models.py:1706
+#: forms.py:1034 forms.py:1050 forms.py:1055 forms.py:1359 models.py:129
+#: models.py:220 models.py:522 models.py:762 models.py:1730
msgid "Towns"
msgstr "Communes"
@@ -544,12 +544,12 @@ msgstr "Type de vestige"
msgid "Operation - 070 - Periods"
msgstr "Opération - 070 - Périodes"
-#: forms.py:1138 templates/ishtar/sheet_operation.html:273
-#: templates/ishtar/sheet_operation.html:310
+#: forms.py:1138 templates/ishtar/sheet_operation.html:277
+#: templates/ishtar/sheet_operation.html:314
msgid "Period"
msgstr "Période"
-#: forms.py:1147 forms.py:1239 forms.py:1324 models.py:212
+#: forms.py:1147 forms.py:1239 forms.py:1324 models.py:213
msgid "Reference"
msgstr "Référence"
@@ -557,7 +557,7 @@ msgstr "Référence"
msgid "This reference already exists."
msgstr "Cette référence existe déjà."
-#: forms.py:1203 models.py:258 models.py:807
+#: forms.py:1203 models.py:259 models.py:823
#: templates/ishtar/sheet_operation.html:194
msgid "Archaeological sites"
msgstr "Entités archéologiques"
@@ -582,35 +582,35 @@ msgstr "Voulez-vous clore cette opération ?"
msgid "Would you like to delete this operation?"
msgstr "Voulez-vous supprimer cette opération ?"
-#: forms.py:1248 models.py:223
+#: forms.py:1248 models.py:224
msgid "Top operation"
msgstr "Opération chapeau"
-#: forms.py:1260 forms.py:1333 models.py:226
+#: forms.py:1260 forms.py:1333 models.py:227
msgid "National Geographic Institute locality"
msgstr "Lieu-dit IGN"
-#: forms.py:1263 forms.py:1337 models.py:229
+#: forms.py:1263 forms.py:1337 models.py:230
msgid "Cadastral locality"
msgstr "Lieu-dit cadastre"
-#: forms.py:1266 forms.py:1374 models.py:233
+#: forms.py:1266 forms.py:1374 models.py:234
msgid "Shipwreck name"
msgstr "Nom de l'épave"
-#: forms.py:1269 forms.py:1382 models.py:235
+#: forms.py:1269 forms.py:1382 models.py:236
msgid "Oceanographic service localisation"
msgstr "Localisation SHOM"
-#: forms.py:1272 forms.py:1376 models.py:237
+#: forms.py:1272 forms.py:1376 models.py:238
msgid "Shipwreck code"
msgstr "Code épave"
-#: forms.py:1274 forms.py:1378 models.py:239
+#: forms.py:1274 forms.py:1378 models.py:240
msgid "Sinking date"
msgstr "Date de naufrage"
-#: forms.py:1276 forms.py:1380 models.py:241
+#: forms.py:1276 forms.py:1380 models.py:242
msgid "Discovery area"
msgstr "Zone de découverte"
@@ -634,11 +634,11 @@ msgstr "Sous-marin / subaquatique"
msgid "Archaeological site - 030 - Underwater"
msgstr "Site archéologique - 030 - Sous-marin / subaquatique"
-#: forms.py:1401 forms.py:1535 models.py:1663
+#: forms.py:1401 forms.py:1535 models.py:1687
msgid "Index"
msgstr "Index"
-#: forms.py:1409 forms.py:1469 models.py:1418 models.py:1657
+#: forms.py:1409 forms.py:1469 models.py:1442 models.py:1681
msgid "Act type"
msgstr "Type d'acte"
@@ -646,7 +646,7 @@ msgstr "Type d'acte"
msgid "Indexed?"
msgstr "Indexé ?"
-#: forms.py:1416 forms.py:1474 models.py:1697
+#: forms.py:1416 forms.py:1474 models.py:1721
#: templates/ishtar/blocks/window_tables/administrativacts.html:9
msgid "Object"
msgstr "Objet"
@@ -659,7 +659,7 @@ msgstr "Rechercher un acte administratif"
msgid "You should select an administrative act."
msgstr "Vous devez sélectionner un acte administratif."
-#: forms.py:1477 models.py:1694
+#: forms.py:1477 models.py:1718
msgid "Signature date"
msgstr "Date de signature"
@@ -721,12 +721,12 @@ msgstr "Clôture"
msgid "Deletion"
msgstr "Suppression"
-#: ishtar_menu.py:61 models.py:1713
+#: ishtar_menu.py:61 models.py:1737
#: templates/ishtar/sheet_administrativeact.html:4
msgid "Administrative act"
msgstr "Acte administratif"
-#: ishtar_menu.py:87 models.py:249 models.py:802
+#: ishtar_menu.py:87 models.py:250 models.py:818
msgid "Documents"
msgstr "Documents"
@@ -742,17 +742,17 @@ msgstr "Tableau de bord"
msgid "General informations"
msgstr "Informations générales"
-#: ishtar_menu.py:143 models.py:843
+#: ishtar_menu.py:143 models.py:859
#: templates/ishtar/dashboards/dashboard_operation.html:8
#: templates/ishtar/sheet_site.html:65
msgid "Operations"
msgstr "Opérations"
-#: models.py:56 models.py:76 models.py:94 models.py:2622
+#: models.py:56 models.py:76 models.py:94 models.py:2646
msgid "Order"
msgstr "Ordre"
-#: models.py:58 models.py:2145
+#: models.py:58 models.py:2169
msgid "End date"
msgstr "Date de fin"
@@ -784,667 +784,667 @@ msgstr "Type de qualité d'enregistrement"
msgid "Types of record quality"
msgstr "Types de qualité d'enregistrement"
-#: models.py:135
+#: models.py:136
msgctxt "key for text search"
msgid "reference"
msgstr "reference"
-#: models.py:139 models.py:569
+#: models.py:140 models.py:585
msgctxt "key for text search"
msgid "name"
msgstr "nom"
-#: models.py:143 models.py:601 tests.py:1625
+#: models.py:144 models.py:617 tests.py:1625
msgctxt "key for text search"
msgid "period"
msgstr "periode"
-#: models.py:147 models.py:597 tests.py:1656
+#: models.py:148 models.py:613 tests.py:1656
msgctxt "key for text search"
msgid "remain"
msgstr "vestige"
-#: models.py:151 models.py:557 tests.py:1633
+#: models.py:152 models.py:573 tests.py:1633
msgctxt "key for text search"
msgid "town"
msgstr "commune"
-#: models.py:155 models.py:625
+#: models.py:156 models.py:641
msgctxt "key for text search"
msgid "comment"
msgstr "commentaire"
-#: models.py:159
+#: models.py:160
msgctxt "key for text search"
msgid "locality-ngi"
msgstr "lieu-dit-ign"
-#: models.py:163
+#: models.py:164
msgctxt "key for text search"
msgid "locality-cadastral"
msgstr "lieu-dit-cadastre"
-#: models.py:167
+#: models.py:168
msgctxt "key for text search"
msgid "shipwreck-name"
msgstr "nom-epave"
-#: models.py:172
+#: models.py:173
msgctxt "key for text search"
msgid "oceanographic-service-localisation"
msgstr "localisation-shom"
-#: models.py:176
+#: models.py:177
msgctxt "key for text search"
msgid "shipwreck-code"
msgstr "code-epave"
-#: models.py:180
+#: models.py:181
msgctxt "key for text search"
msgid "sinking-date"
msgstr "date-naufrage"
-#: models.py:184
+#: models.py:185
msgctxt "key for text search"
msgid "discovery-area"
msgstr "zone-decouverte"
-#: models.py:188 models.py:203
+#: models.py:189 models.py:204
msgctxt "key for text search"
msgid "operation"
msgstr "operation"
-#: models.py:192
+#: models.py:193
msgctxt "key for text search"
msgid "top-operation"
msgstr "operation-chapeau"
-#: models.py:251 models.py:804 models.py:1926
+#: models.py:252 models.py:820 models.py:1950
msgid "Cached name"
msgstr "Nom en cache"
-#: models.py:280
+#: models.py:281
msgid "SITE"
msgstr "SITE"
-#: models.py:345
+#: models.py:361
msgid "Unknown"
msgstr "Inconnu"
-#: models.py:348
+#: models.py:364
msgid "Virtual operation of site: {}"
msgstr "Opération virtuelle du site : {}"
-#: models.py:488
+#: models.py:504
msgid "Associated file (label)"
msgstr "Dossier associé (nom)"
-#: models.py:489
+#: models.py:505
msgid "Operator name"
msgstr "Nom de l'opérateur"
-#: models.py:490
+#: models.py:506
msgid "Scientist (full name)"
msgstr "Responsable scientifique (nom complet)"
-#: models.py:491
+#: models.py:507
msgid "Associated file (external ID)"
msgstr "Dossier associé (identifiant)"
-#: models.py:492
+#: models.py:508
msgid "Scientist (title)"
msgstr "Responsable scientifique (titre)"
-#: models.py:493
+#: models.py:509
msgid "Scientist (surname)"
msgstr "Responsable scientifique (nom)"
-#: models.py:494
+#: models.py:510
msgid "Scientist (name)"
msgstr "Scientifique (nom)"
-#: models.py:495
+#: models.py:511
msgid "Scientist - Organization (name)"
msgstr "Scientifique - Organisation (nom)"
-#: models.py:496
+#: models.py:512
msgid "In charge (title)"
msgstr "Responsable du suivi scientifique (titre)"
-#: models.py:497
+#: models.py:513
msgid "In charge (surname)"
msgstr "Responsable du suivi scientifique (prénom)"
-#: models.py:498
+#: models.py:514
msgid "In charge (name)"
msgstr "Responsable du suivi scientifique (nom)"
-#: models.py:499
+#: models.py:515
msgid "In charge - Organization (name)"
msgstr "Responsable du suivi scientifique - Organisation (nom)"
-#: models.py:504
+#: models.py:520
msgid "Archaeological sites (reference)"
msgstr "Entités archéologiques (référence)"
-#: models.py:545 models.py:1502 tests.py:1628 tests.py:1673
+#: models.py:561 models.py:1526 tests.py:1628 tests.py:1673
msgctxt "key for text search"
msgid "year"
msgstr "annee"
-#: models.py:549
+#: models.py:565
msgctxt "key for text search"
msgid "operation-code"
msgstr "code-operation"
-#: models.py:553 models.py:1514
+#: models.py:569 models.py:1538
msgctxt "key for text search"
msgid "patriarche"
msgstr "patriarche"
-#: models.py:561 models.py:1534
+#: models.py:577 models.py:1558
msgctxt "key for text search"
msgid "parcel"
msgstr "parcelle"
-#: models.py:565
+#: models.py:581
msgctxt "key for text search"
msgid "department"
msgstr "departement"
-#: models.py:573
+#: models.py:589
msgctxt "key for text search"
msgid "address"
msgstr "adresse"
-#: models.py:577 models.py:1518
+#: models.py:593 models.py:1542
msgctxt "key for text search"
msgid "type"
msgstr "type"
-#: models.py:581 tests.py:1661
+#: models.py:597 tests.py:1661
msgctxt "key for text search"
msgid "is-open"
msgstr "est-ouvert"
-#: models.py:585
+#: models.py:601
msgctxt "key for text search"
msgid "in-charge"
msgstr "responsable-suivi"
-#: models.py:589
+#: models.py:605
msgctxt "key for text search"
msgid "scientist"
msgstr "scientifique"
-#: models.py:593
+#: models.py:609
msgctxt "key for text search"
msgid "operator"
msgstr "operateur"
-#: models.py:605
+#: models.py:621
msgctxt "key for text search"
msgid "start-before"
msgstr "commence-avant"
-#: models.py:609
+#: models.py:625
msgctxt "key for text search"
msgid "start-after"
msgstr "commence-apres"
-#: models.py:613
+#: models.py:629
msgctxt "key for text search"
msgid "end-before"
msgstr "fini-apres"
-#: models.py:617
+#: models.py:633
msgctxt "key for text search"
msgid "end-after"
msgstr "fini-avant"
-#: models.py:621
+#: models.py:637
msgctxt "key for text search"
msgid "relation-types"
msgstr "type-relation"
-#: models.py:629
+#: models.py:645
msgctxt "key for text search"
msgid "abstract"
msgstr "resume"
-#: models.py:634
+#: models.py:650
msgctxt "key for text search"
msgid "scientific-documentation-comment"
msgstr "commentaire-documentation-scientifique"
-#: models.py:638
+#: models.py:654
msgctxt "key for text search"
msgid "record-quality"
msgstr "qualite-enregistrement"
-#: models.py:643
+#: models.py:659
msgctxt "key for text search"
msgid "report-processing"
msgstr "traitement-rapport"
-#: models.py:648
+#: models.py:664
msgctxt "key for text search"
msgid "virtual-operation"
msgstr "operation-virtuelle"
-#: models.py:653 models.py:696
+#: models.py:669 models.py:712
msgctxt "key for text search"
msgid "site"
msgstr "site"
-#: models.py:657 models.py:1552
+#: models.py:673 models.py:1576
msgctxt "key for text search"
msgid "created-by"
msgstr "cree-par"
-#: models.py:661 models.py:1556
+#: models.py:677 models.py:1580
msgctxt "key for text search"
msgid "modified-by"
msgstr "modifie-par"
-#: models.py:665
+#: models.py:681
msgctxt "key for text search"
msgid "documentation-received"
msgstr "documentation-recue"
-#: models.py:669
+#: models.py:685
msgctxt "key for text search"
msgid "documentation-deadline-before"
msgstr "documentation-date-limite-avant"
-#: models.py:673
+#: models.py:689
msgctxt "key for text search"
msgid "documentation-deadline-after"
msgstr "documentation-date-limite-après"
-#: models.py:677
+#: models.py:693
msgctxt "key for text search"
msgid "finds-received"
msgstr "mobilier-recu"
-#: models.py:681
+#: models.py:697
msgctxt "key for text search"
msgid "finds-deadline-before"
msgstr "mobilier-date-limite-avant"
-#: models.py:685
+#: models.py:701
msgctxt "key for text search"
msgid "finds-deadline-after"
msgstr "mobilier-date-limite-apres"
-#: models.py:698
+#: models.py:714
msgctxt "key for text search"
msgid "file"
msgstr "dossier"
-#: models.py:713 templates/ishtar/sheet_operation.html:60
+#: models.py:729 templates/ishtar/sheet_operation.html:60
msgid "Closing date"
msgstr "Date de clôture"
-#: models.py:720
+#: models.py:736
msgid "In charge scientist"
msgstr "Responsable du suivi scientifique"
-#: models.py:739 models.py:1908
+#: models.py:755 models.py:1932
msgid "File"
msgstr "Dossier"
-#: models.py:743
+#: models.py:759
msgid "Surface (m2)"
msgstr "Surface (m2)"
-#: models.py:812
+#: models.py:828
msgid ""
"If checked, it means that this operation have not been officialy registered."
msgstr ""
"Si coché, cela signifie que cette opération n'a pas été officiellement "
"enregistrée."
-#: models.py:891
+#: models.py:907
msgid "OPE"
msgstr "OPE"
-#: models.py:988
+#: models.py:1004
msgid "Intercommunal"
msgstr "Intercommunal"
-#: models.py:1024
+#: models.py:1040
msgid "Code patriarche"
msgstr "Code patriarche"
-#: models.py:1066
+#: models.py:1082
msgid "This operation code already exists for this year"
msgstr "Ce code d'opération existe déjà pour cette année."
-#: models.py:1111
+#: models.py:1135
msgid "Number of parcels"
msgstr "Nombre de parcelles"
-#: models.py:1121
+#: models.py:1145
msgid "Number of administrative acts"
msgstr "Nombre d'actes administratifs"
-#: models.py:1129
+#: models.py:1153
msgid "Number of indexed administrative acts"
msgstr "Nombre d'actes administratifs indexés"
-#: models.py:1137
+#: models.py:1161
msgid "Number of context records"
msgstr "Nombre d'Unités d'Enregistrement"
-#: models.py:1173
+#: models.py:1197
msgid "Number of finds"
msgstr "Nombre d'éléments de mobilier"
-#: models.py:1218
+#: models.py:1242
msgid "No type"
msgstr "Pas de type"
-#: models.py:1249
+#: models.py:1273
msgid "Number of sources"
msgstr "Nombre de documents"
-#: models.py:1287 templates/ishtar/dashboards/dashboard_operation.html:309
+#: models.py:1311 templates/ishtar/dashboards/dashboard_operation.html:309
#: templates/ishtar/dashboards/dashboard_operation.html:575
#: templates/ishtar/dashboards/dashboard_operation.html:611
msgid "Mean"
msgstr "Moyenne"
-#: models.py:1349
+#: models.py:1373
msgid "Operation relation type"
msgstr "Type de relation entre opérations"
-#: models.py:1350
+#: models.py:1374
msgid "Operation relation types"
msgstr "Types de relation entre opérations"
-#: models.py:1363
+#: models.py:1387
msgid "Operation record relation"
msgstr "Relation entre opérations"
-#: models.py:1364
+#: models.py:1388
msgid "Operation record relations"
msgstr "Relations entre opérations"
-#: models.py:1406 models.py:1688
+#: models.py:1430 models.py:1712
msgid "Treatment request"
msgstr "Demande de traitement"
-#: models.py:1407 models.py:1693
+#: models.py:1431 models.py:1717
msgid "Treatment"
msgstr "Traitement"
-#: models.py:1409
+#: models.py:1433
msgid "Intended to"
msgstr "Destiné à"
-#: models.py:1411
+#: models.py:1435
msgid "Code"
msgstr "Code"
-#: models.py:1414
+#: models.py:1438
msgid "Associated template"
msgstr "Patron associé"
-#: models.py:1415
+#: models.py:1439
msgid "Indexed"
msgstr "Indexé"
-#: models.py:1419
+#: models.py:1443
msgid "Act types"
msgstr "Types d'acte"
-#: models.py:1489 models.py:1734
+#: models.py:1513 models.py:1758
#: templates/ishtar/blocks/window_tables/administrativacts.html:6
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:6
msgid "Ref."
msgstr "Réf."
-#: models.py:1506
+#: models.py:1530
msgctxt "key for text search"
msgid "index"
msgstr "index"
-#: models.py:1510
+#: models.py:1534
msgctxt "key for text search"
msgid "other-ref"
msgstr "autre-ref"
-#: models.py:1522
+#: models.py:1546
msgctxt "key for text search"
msgid "indexed"
msgstr "indexe"
-#: models.py:1526
+#: models.py:1550
msgctxt "key for text search"
msgid "operation-town"
msgstr "operation-commune"
-#: models.py:1530
+#: models.py:1554
msgctxt "key for text search"
msgid "file-town"
msgstr "dossier-commune"
-#: models.py:1540
+#: models.py:1564
msgctxt "key for text search"
msgid "operation-department"
msgstr "operation-departement"
-#: models.py:1544
+#: models.py:1568
msgctxt "key for text search"
msgid "file-department"
msgstr "dossier-departement"
-#: models.py:1548
+#: models.py:1572
msgctxt "key for text search"
msgid "object"
msgstr "objet"
-#: models.py:1560
+#: models.py:1584
msgctxt "key for text search"
msgid "signature-before"
msgstr "signature-avant"
-#: models.py:1564
+#: models.py:1588
msgctxt "key for text search"
msgid "signature-after"
msgstr "signature-apres"
-#: models.py:1568
+#: models.py:1592
msgctxt "key for text search"
msgid "file-name"
msgstr "dossier-nom"
-#: models.py:1572
+#: models.py:1596
msgctxt "key for text search"
msgid "general-contractor"
msgstr "amenageur"
-#: models.py:1577
+#: models.py:1601
msgctxt "key for text search"
msgid "general-contractor-organization"
msgstr "amenageur-organisation"
-#: models.py:1582
+#: models.py:1606
msgctxt "key for text search"
msgid "file-reference"
msgstr "dossier-reference"
-#: models.py:1586
+#: models.py:1610
msgctxt "key for text search"
msgid "file-year"
msgstr "dossier-annee"
-#: models.py:1590
+#: models.py:1614
msgctxt "key for text search"
msgid "file-other-reference"
msgstr "dossier-autre-reference"
-#: models.py:1594
+#: models.py:1618
msgctxt "key for text search"
msgid "file-in-charge"
msgstr "dossier-responsable"
-#: models.py:1598
+#: models.py:1622
msgctxt "key for text search"
msgid "file-permit-reference"
msgstr "dossier-ref-permis"
-#: models.py:1602
+#: models.py:1626
msgctxt "key for text search"
msgid "treatment-name"
msgstr "traitement-nom"
-#: models.py:1606
+#: models.py:1630
msgctxt "key for text search"
msgid "treatment-reference"
msgstr "traitement-reference"
-#: models.py:1610
+#: models.py:1634
msgctxt "key for text search"
msgid "treatment-year"
msgstr "traitement-annee"
-#: models.py:1614
+#: models.py:1638
msgctxt "key for text search"
msgid "treatment-index"
msgstr "traitement-index"
-#: models.py:1618
+#: models.py:1642
msgctxt "key for text search"
msgid "treatment-type"
msgstr "traitement-type"
-#: models.py:1622
+#: models.py:1646
msgctxt "key for text search"
msgid "treatment-file-name"
msgstr "dossier-traitement-nom"
-#: models.py:1626
+#: models.py:1650
msgctxt "key for text search"
msgid "treatment-file-reference"
msgstr "dossier-traitement-reference"
-#: models.py:1630
+#: models.py:1654
msgctxt "key for text search"
msgid "treatment-file-year"
msgstr "dossier-traitement-annee"
-#: models.py:1634
+#: models.py:1658
msgctxt "key for text search"
msgid "treatment-file-index"
msgstr "dossier-traitement-index"
-#: models.py:1638
+#: models.py:1662
msgctxt "key for text search"
msgid "treatment-file-type"
msgstr "dossier-traitement-type"
-#: models.py:1661
+#: models.py:1685
msgid "Person in charge of the operation"
msgstr "Responsable d'opération"
-#: models.py:1667
+#: models.py:1691
msgid "Archaeological preventive operator"
msgstr "Opérateur d'archéologie préventive"
-#: models.py:1675
+#: models.py:1699
msgid "Signatory"
msgstr "Signataire"
-#: models.py:1703
+#: models.py:1727
msgid "Departments"
msgstr "Départements"
-#: models.py:1704
+#: models.py:1728
msgid "Cached values get from associated departments"
msgstr "Valeur en cache des départements associés"
-#: models.py:1707
+#: models.py:1731
msgid "Cached values get from associated towns"
msgstr "Valeur en cache des communes associées"
-#: models.py:1714 templates/ishtar/sheet_operation.html:202
-#: templates/ishtar/sheet_operation.html:244
+#: models.py:1738 templates/ishtar/sheet_operation.html:202
+#: templates/ishtar/sheet_operation.html:248
msgid "Administrative acts"
msgstr "Actes administratifs"
-#: models.py:1837
+#: models.py:1861
msgid "This index already exists for this year"
msgstr "Cet index existe déjà pour cette année."
-#: models.py:1921
+#: models.py:1945
msgid "External ID"
msgstr "Identifiant"
-#: models.py:1924
+#: models.py:1948
msgid "External ID is set automatically"
msgstr "L'identifiant est attribué automatiquement"
-#: models.py:1925
+#: models.py:1949
msgid "Address - Locality"
msgstr "Adresse - Lieu-dit"
-#: models.py:2140
+#: models.py:2164
msgid "Owner"
msgstr "Propriétaire"
-#: models.py:2148
+#: models.py:2172
msgid "Parcel owner"
msgstr "Propriétaire de parcelle"
-#: models.py:2149
+#: models.py:2173
msgid "Parcel owners"
msgstr "Propriétaires de parcelle"
-#: models.py:2183
+#: models.py:2207
msgid "Recorded"
msgstr "Enregistré"
-#: models.py:2184
+#: models.py:2208
msgid "Effective"
msgstr "Effectif"
-#: models.py:2185
+#: models.py:2209
msgid "Active"
msgstr "Actif"
-#: models.py:2186
+#: models.py:2210
msgid "Field completed"
msgstr "Terrain achevé"
-#: models.py:2187
+#: models.py:2211
msgid "Associated report"
msgstr "Rapport associé"
-#: models.py:2188
+#: models.py:2212
msgid "Closed"
msgstr "Clos"
-#: models.py:2189
+#: models.py:2213
msgid "Documented and closed"
msgstr "Documenté et clos"
-#: models.py:2623
+#: models.py:2647
msgid "Is preventive"
msgstr "Préventif"
-#: models.py:2626
+#: models.py:2650
msgid "Operation type old"
msgstr "Type d'opération - ancien"
-#: models.py:2627
+#: models.py:2651
msgid "Operation types old"
msgstr "Types d'opération - ancien"
#: templates/ishtar/blocks/window_tables/administrativacts.html:7
-#: templates/ishtar/sheet_operation.html:263
-#: templates/ishtar/sheet_operation.html:327
+#: templates/ishtar/sheet_operation.html:267
+#: templates/ishtar/sheet_operation.html:331
msgid "Type"
msgstr "Type"
@@ -1488,12 +1488,12 @@ msgstr "État"
#: templates/ishtar/dashboards/dashboard_operation.html:432
#: templates/ishtar/dashboards/dashboard_operation.html:463
#: templates/ishtar/dashboards/dashboard_operation.html:687
-#: templates/ishtar/sheet_operation.html:263
-#: templates/ishtar/sheet_operation.html:273
-#: templates/ishtar/sheet_operation.html:290
-#: templates/ishtar/sheet_operation.html:300
-#: templates/ishtar/sheet_operation.html:310
-#: templates/ishtar/sheet_operation.html:327
+#: templates/ishtar/sheet_operation.html:267
+#: templates/ishtar/sheet_operation.html:277
+#: templates/ishtar/sheet_operation.html:294
+#: templates/ishtar/sheet_operation.html:304
+#: templates/ishtar/sheet_operation.html:314
+#: templates/ishtar/sheet_operation.html:331
msgid "Number"
msgstr "Nombre"
@@ -1754,54 +1754,54 @@ msgstr "Parcelles associées"
msgid "Document from this operation"
msgstr "Documents de cette opération"
-#: templates/ishtar/sheet_operation.html:212
-#: templates/ishtar/sheet_operation.html:255
+#: templates/ishtar/sheet_operation.html:213
+#: templates/ishtar/sheet_operation.html:259
msgid "Context records"
msgstr "Unités d'Enregistrement"
-#: templates/ishtar/sheet_operation.html:217
+#: templates/ishtar/sheet_operation.html:218
msgid "Context record relations"
msgstr "Relations entre Unités d'Enregistrement"
-#: templates/ishtar/sheet_operation.html:222
+#: templates/ishtar/sheet_operation.html:223
msgid "Documents from associated context records"
msgstr "Documents des Unités d'Enregistrement associées"
-#: templates/ishtar/sheet_operation.html:227
-#: templates/ishtar/sheet_operation.html:282
+#: templates/ishtar/sheet_operation.html:229
+#: templates/ishtar/sheet_operation.html:286
#: templates/ishtar/sheet_site.html:70
msgid "Finds"
msgstr "Mobilier"
-#: templates/ishtar/sheet_operation.html:232
+#: templates/ishtar/sheet_operation.html:234
msgid "Documents from associated finds"
msgstr "Documents du mobilier associé"
-#: templates/ishtar/sheet_operation.html:237
+#: templates/ishtar/sheet_operation.html:240
msgid "Associated containers"
msgstr "Contenants associés"
-#: templates/ishtar/sheet_operation.html:241
+#: templates/ishtar/sheet_operation.html:245
msgid "Statistics"
msgstr "Statistiques"
-#: templates/ishtar/sheet_operation.html:242
+#: templates/ishtar/sheet_operation.html:246
msgid "These numbers are updated hourly"
msgstr "Ces chiffres sont mis à jour toutes les heures"
-#: templates/ishtar/sheet_operation.html:290
+#: templates/ishtar/sheet_operation.html:294
msgid "Material type"
msgstr "Type de matériau"
-#: templates/ishtar/sheet_operation.html:300
+#: templates/ishtar/sheet_operation.html:304
msgid "Object type"
msgstr "Type d'objet"
-#: templates/ishtar/sheet_operation.html:319
+#: templates/ishtar/sheet_operation.html:323
msgid "Sources"
msgstr "Documents"
-#: templates/ishtar/sheet_operation.html:337
+#: templates/ishtar/sheet_operation.html:341
msgid "Finds by context records"
msgstr "Mobilier par Unités d'Enregistrement"
diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po
index 2f37fbc77..51e5776be 100644
--- a/translations/fr/ishtar_common.po
+++ b/translations/fr/ishtar_common.po
@@ -2228,11 +2228,11 @@ msgstr "Importeur - Cible"
msgid "Importer - Targets"
msgstr "Importeur - Cibles"
-#: models_imports.py:525 views_item.py:847
+#: models_imports.py:525 views_item.py:867
msgid "True"
msgstr "Oui"
-#: models_imports.py:526 views_item.py:849
+#: models_imports.py:526 views_item.py:869
msgid "False"
msgstr "Non"
@@ -2951,7 +2951,7 @@ msgstr "Licences"
#: templates/ishtar/blocks/window_image_detail.html:111
#: templates/ishtar/import_delete.html:20 templatetags/window_field.py:17
-#: views_item.py:486 wizards.py:393
+#: views_item.py:506 wizards.py:393
msgid "Yes"
msgstr "Oui"
@@ -2964,6 +2964,11 @@ msgstr "Fichier"
msgid "Web"
msgstr "Internet"
+#: templates/ishtar/blocks/window_image_detail.html:193
+#: templates/ishtar/blocks/window_tables/documents.html:10
+msgid "Related to"
+msgstr "Associé à"
+
#: templates/ishtar/blocks/window_nav.html:17
msgid ""
"Are you sure to restore to this version? All changes made since this version "
@@ -3001,10 +3006,6 @@ msgstr "Exporter en fichier PDF"
msgid "Relation between items are not historized."
msgstr "Les relations entre éléments ne sont pas historisées."
-#: templates/ishtar/blocks/window_tables/documents.html:10
-msgid "Related to"
-msgstr "Associé à"
-
#: templates/ishtar/blocks/window_tables/documents.html:11
#: templates/ishtar/blocks/window_tables/documents.html:19
msgid "Link"
@@ -3877,7 +3878,7 @@ msgstr "Demande de traitement"
msgid "Treatment"
msgstr "Traitement"
-#: views.py:724 views_item.py:103
+#: views.py:724 views_item.py:104
msgid "Operation not permitted."
msgstr "Opération non permise."
@@ -3957,7 +3958,7 @@ msgstr "Supprimer le marque page"
msgid "Bookmark - Delete"
msgstr "Marque page - Suppression"
-#: views_item.py:105
+#: views_item.py:106
#, python-format
msgid "New %s"
msgstr "Nouveau %s"
--
cgit v1.2.3
From 893eb095b5b64c094ad3cddb615670780a67e9c4 Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Wed, 28 Nov 2018 14:32:33 +0100
Subject: Commands - regenerate label: options to specify app name and model
name
---
.../regenerate_search_vector_cached_label.py | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/ishtar_common/management/commands/regenerate_search_vector_cached_label.py b/ishtar_common/management/commands/regenerate_search_vector_cached_label.py
index 59e37d75b..404811acf 100644
--- a/ishtar_common/management/commands/regenerate_search_vector_cached_label.py
+++ b/ishtar_common/management/commands/regenerate_search_vector_cached_label.py
@@ -24,16 +24,32 @@ from django.core.management.base import BaseCommand
from django.apps import apps
+APPS = ['ishtar_common', 'archaeological_operations',
+ 'archaeological_context_records', 'archaeological_finds',
+ 'archaeological_warehouse']
+
+
class Command(BaseCommand):
args = ''
help = 'Regenerate cached labels and search vectors'
+ def add_arguments(self, parser):
+ parser.add_argument('app_name', nargs='?', default=None,
+ choices=APPS)
+ parser.add_argument('model_name', nargs='?', default=None)
+
def handle(self, *args, **options):
- for app in ['ishtar_common', 'archaeological_operations',
- 'archaeological_context_records',
- 'archaeological_finds', 'archaeological_warehouse']:
+ limit = options['app_name']
+ model_name = options['model_name']
+ if model_name:
+ model_name = model_name.lower()
+ for app in APPS:
+ if limit and app != limit:
+ continue
print(u"* app: {}".format(app))
for model in apps.get_app_config(app).get_models():
+ if model_name and model.__name__.lower() != model_name:
+ continue
if model.__name__.startswith('Historical'):
continue
if not bool(
--
cgit v1.2.3
From 1d26a7a62d150d19e659e66515fcda5a40c6c68a Mon Sep 17 00:00:00 2001
From: Étienne Loks
Date: Wed, 28 Nov 2018 17:14:20 +0100
Subject: Treatment deletion: more explicit messages.
---
.../ishtar/wizard/wizard_treatement_deletion.html | 27 ++++++++++++++++++++++
archaeological_finds/wizards.py | 1 +
ishtar_common/models_imports.py | 2 +-
.../templates/ishtar/wizard/confirm_wizard.html | 8 ++++++-
4 files changed, 36 insertions(+), 2 deletions(-)
create mode 100644 archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html
diff --git a/archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html b/archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html
new file mode 100644
index 000000000..b0ebe7409
--- /dev/null
+++ b/archaeological_finds/templates/ishtar/wizard/wizard_treatement_deletion.html
@@ -0,0 +1,27 @@
+{% extends "ishtar/wizard/confirm_wizard.html" %}
+{% load i18n %}
+
+{% block "warning_message" %}
+{% with has_downstream=current_object.downstream.count %}
+
+
+ {% trans "Are you sure you want to delete this treatment?" %}
+{% if has_downstream %}
+ {% trans "The following finds will be deleted and restored to a previous version."%}
+
{% for item in current_object.downstream.all %}
+
+ {{item}}
+
+ {% endfor %}
+ {% trans "All changes made to the associated finds since this treatment record will be lost!" %}
+{% endif %}
+
+
+
+ {% trans "Treatment informations:" %}
+
+
+
+
+{% endwith %}
+{% endblock %}
diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py
index 29ca50056..8ed7061e2 100644
--- a/archaeological_finds/wizards.py
+++ b/archaeological_finds/wizards.py
@@ -396,6 +396,7 @@ class Treatment1NWizard(TreatmentBase):
class TreatmentDeletionWizard(DeletionWizard):
+ wizard_confirm = 'ishtar/wizard/wizard_treatement_deletion.html'
model = models.Treatment
fields = ['label', 'other_reference', 'year', 'index',
'treatment_types', 'location', 'person', 'organization',
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py
index 9aae1d52d..fde4b3440 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -133,7 +133,7 @@ class ImporterType(models.Model):
ImporterModel, verbose_name=_(u"Models that can accept new items"),
blank=True, help_text=_(u"Leave blank for no restrictions"),
related_name='+')
- is_template = models.BooleanField(_(u"Is template"), default=False)
+ is_template = models.BooleanField(_(u"Can be exported"), default=False)
unicity_keys = models.CharField(_(u"Unicity keys (separator \";\")"),
blank=True, null=True, max_length=500)
available = models.BooleanField(_(u"Available"), default=True)
diff --git a/ishtar_common/templates/ishtar/wizard/confirm_wizard.html b/ishtar_common/templates/ishtar/wizard/confirm_wizard.html
index 401fe570c..9829058a8 100644
--- a/ishtar_common/templates/ishtar/wizard/confirm_wizard.html
+++ b/ishtar_common/templates/ishtar/wizard/confirm_wizard.html
@@ -9,7 +9,12 @@