From 56f627f07b785e2c047ee95d44a76d008f4cc7cf Mon Sep 17 00:00:00 2001
From: Rachel TORCHET <racheltorchet@users.noreply.github.com>
Date: Thu, 8 Mar 2018 14:58:36 +0100
Subject: [PATCH] Update CSS files

Former-commit-id: 9900cb358508d83cb74d1ab51cb1a2c4c1d44826
---
 ippisite/ippidb/forms.py                      |   54 +-
 ippisite/ippidb/static/css/admin-session.css  | 1095 +++++++++
 ippisite/ippidb/static/css/fonts.css          |   74 +
 ippisite/ippidb/static/css/ippidb.css         | 2005 +----------------
 ippisite/ippidb/static/js/ippidb.js           |    2 +-
 .../ippidb/templates/BibliographyForm.html    |   32 +-
 ippisite/ippidb/templates/CompoundForm.html   |   67 +-
 ippisite/ippidb/templates/IdForm.html         |   34 +-
 ippisite/ippidb/templates/PDBForm.html        |   34 +-
 ippisite/ippidb/templates/PpiForm.html        |   22 +-
 .../templates/ProteinDomainComplexForm.html   |   33 +-
 .../ProteinDomainComplexTypeForm.html         |   32 +-
 ippisite/ippidb/templates/TestsForm.html      |   28 +-
 ippisite/ippidb/templates/about.html          |    6 +-
 ippisite/ippidb/templates/add.html            |    8 +-
 ippisite/ippidb/templates/admin-session.html  |   10 +-
 ippisite/ippidb/templates/base.html           |    2 +-
 ippisite/ippidb/templates/compound_list.html  |    6 +-
 ippisite/ippidb/templates/done.html           |   26 +-
 ippisite/ippidb/templates/drug-candidate.html |    6 +-
 ippisite/ippidb/templates/general.html        |    6 +-
 ippisite/ippidb/templates/pharma.html         |    4 +-
 ippisite/ippidb/templates/pharmacology.html   |    6 +-
 .../ippidb/templates/physicochemistry.html    |    6 +-
 ippisite/ippidb/templates/pockets.html        |    6 +-
 ippisite/ippidb/templates/queries.html        |    8 +-
 ippisite/ippidb/templates/tutorials.html      |    8 +-
 ippisite/ippidb/templates/update.html         |   61 +
 .../templates/update_files/ajax-loader.gif    |  Bin 0 -> 404 bytes
 .../templates/update_files/jquery.min.js      |    4 +
 .../templates/update_files/jquery_post.js     |    4 +
 .../templates/update_files/jquery_pre.js      |    5 +
 .../ippidb/templates/update_files/print.css   |    3 +
 .../ippidb/templates/update_files/toolbar.css |  663 ++++++
 .../ippidb/templates/update_files/toolbar.js  |  307 +++
 ippisite/ippidb/urls.py                       |    3 +-
 ippisite/ippidb/views.py                      |    3 +
 37 files changed, 2461 insertions(+), 2212 deletions(-)
 create mode 100644 ippisite/ippidb/static/css/admin-session.css
 create mode 100644 ippisite/ippidb/static/css/fonts.css
 create mode 100644 ippisite/ippidb/templates/update.html
 create mode 100644 ippisite/ippidb/templates/update_files/ajax-loader.gif
 create mode 100644 ippisite/ippidb/templates/update_files/jquery.min.js
 create mode 100644 ippisite/ippidb/templates/update_files/jquery_post.js
 create mode 100644 ippisite/ippidb/templates/update_files/jquery_pre.js
 create mode 100644 ippisite/ippidb/templates/update_files/print.css
 create mode 100644 ippisite/ippidb/templates/update_files/toolbar.css
 create mode 100644 ippisite/ippidb/templates/update_files/toolbar.js

diff --git a/ippisite/ippidb/forms.py b/ippisite/ippidb/forms.py
index 0a313bde..1e3a42a5 100644
--- a/ippisite/ippidb/forms.py
+++ b/ippisite/ippidb/forms.py
@@ -4,7 +4,7 @@ from django.db import models
 from django.core.exceptions import ValidationError
 from django.core.validators import RegexValidator
 
-from .models import Bibliography, Protein, ProteinDomainComplex, Ppi, PpiComplex, Compound, RefCompoundBiblio, TestActivityDescription
+from .models import Bibliography, Protein, ProteinDomainComplex, Ppi, PpiComplex, Compound, RefCompoundBiblio, Symmetry, TestActivityDescription
 from .ws import pdb_entry_exists
 
 class IdForm(ModelForm):
@@ -111,21 +111,56 @@ class PpiComplexForm(ModelForm):
         model = PpiComplex
         fields = ['cc_nb',]
 
+class PpiAndPpiComplexForm (forms.Form):
+    pdb_id = forms.CharField(label='PDB ID', max_length=4, required=False)
+    symmetry = forms.ModelChoiceField(queryset=Symmetry.objects.all(), required=True)
+    cc_nb = forms.IntegerField(
+        label='Number of copies of the complex in the PPI', 
+        initial=1,
+        )
+
+    def __init__(self, *args, **kwargs):
+        super(PpiAndPpiComplexForm,self).__init__(*args, **kwargs)
+        self.fields['symmetry'].initial = Symmetry.objects.all().first()
+
+    def save(self, commit=True):
+        ppi = Ppi.objects.create(
+            pdb_id=self.cleaned_data['pdb_id'],
+            symmetry=self.cleaned_data['symmetry'],
+            )
+        ppi_complex = PpiComplex.objects.create(
+            cc_nb=self.cleaned_data['cc_nb'],
+            ppi=ppi,
+        )
+        if commit:
+            ppi.save()
+            ppi_complex.save()
+
+        return dict(
+            ppi=ppi,
+            ppi_complex=ppi_complex,
+        )
+        #instance = super(MyForm, self).save(commit=False)
+        #instance.flag1 = 'flag1' in self.cleaned_data['multi_choice'] # etc
+        #if commit:
+        #instance.save()
+        #return instance
+        pass
+
+
 class CompoundForm(ModelForm):
 
     class Meta:
         model = Compound
         fields = ['common_name','is_macrocycle']
         widgets = {
-        'common_name': forms.TextInput(attrs={'placeholder':'Choose a common name', 'required': 'required'}),
+        'common_name': forms.TextInput(attrs={'placeholder':'Common name', 'required': 'required'}),
         }
 
 class RefCompoundBiblioForm(ModelForm):
     model=RefCompoundBiblio
     exclude = ['compound', 'bibliography']
-    widgets = {
-        'compound_name': forms.TextInput(attrs={'placeholder':'Compound name in the publication'})
-    }
+
 
 TYPE_MOLECULE = (
     ('smiles', 'smiles'),
@@ -136,15 +171,12 @@ TYPE_MOLECULE = (
 class BaseCompoundFormSet(BaseFormSet):
     def add_fields(self, form, index):
         super(BaseCompoundFormSet, self).add_fields(form, index)
-        form.fields["compound_name"] = forms.CharField(widget=forms.TextInput(attrs={'placeholder':'Compound name in the publication', 'onkeyup':"AnEventHasOccurred(this.id)", 'required':'required'}))
-        form.fields["molecule"] = forms.CharField(widget=forms.RadioSelect(choices=TYPE_MOLECULE, attrs={'onclick':"showMol(this.id)"}))
-        form.fields["molecule_comp"] = forms.CharField(widget=forms.TextInput(attrs={'placeholder':'Molecule commposition here', 'required':'required'}))
+        form.fields["compound_name"] = forms.CharField(widget=forms.TextInput(attrs={'placeholder':'Name in the publication','required':'required'}))
+        form.fields["molecule"] = forms.CharField(widget=forms.Select(choices=TYPE_MOLECULE))
+        form.fields["molecule_comp"] = forms.CharField(widget=forms.TextInput(attrs={'placeholder':'Molecule composition', 'required':'required'}))
 
 CompoundFormSet = formset_factory(CompoundForm, formset=BaseCompoundFormSet, extra=2, max_num=500, can_delete=True)
 formset = CompoundFormSet()
-print(formset.is_valid())
-for form in formset:
-    print(form.as_table())
 
 class TestsForm(ModelForm):
     
diff --git a/ippisite/ippidb/static/css/admin-session.css b/ippisite/ippidb/static/css/admin-session.css
new file mode 100644
index 00000000..d9616431
--- /dev/null
+++ b/ippisite/ippidb/static/css/admin-session.css
@@ -0,0 +1,1095 @@
+/*
+Theme Name: IPPI-DB
+Theme URI: https://ippidb.pasteur.fr/
+Author: Rachel Torchet
+Description: IPPI-DB Theme
+*/
+
+/* ADMIN SESSION */
+
+/* Step menu */
+
+.step_nav {
+    width: 100%;
+    margin: 0 ;
+    padding: 0 ;
+}
+
+.step_nav ul {
+    margin: 0 ;
+    padding: 0;
+}
+
+.step_nav li {
+    display: inline;
+}
+
+.step_nav li a, .step_nav  li a:hover, .step_nav li a:focus {
+    width: 146px;
+    background-color: #E3E9EB;
+    color:#8D8888;
+    font-family: "PlayfairDisplayReg";
+    font-size: 22px;
+    display: inline-block;
+    text-align: center;
+    text-decoration: none;
+}
+
+.step_nav li a.active {
+    text-decoration: none;
+    background-color: #2D96FA;
+    color:#FFFFFF;
+}
+
+.step_nav li a.validate {
+    text-decoration: none;
+    background-color: #000000;
+    color:#ffffff;
+}
+
+/* Step window */
+.step_desc {
+    padding: 0px;
+    margin-bottom: 0px;
+}
+
+.step_title{
+    font-family: "PlayfairDisplayRed";
+    font-size: 25px;
+    padding-bottom: 10px;
+}
+
+.step_step {
+    padding-bottom: 10px;
+    color: #8D8889;
+    font-size: 15px;
+    font-family: "BrandonGrotesqueReg";
+}
+
+.step_step_desc {
+    padding: 0px;
+    margin-bottom: 0px;
+    font-family: "BrandonGrotesqueReg";
+}
+
+/* Form Items */
+
+#type_style {
+    background-color: rgb(227, 233, 235);
+    padding: 10px;
+    margin: 10px;
+    margin-left: -81px;
+    margin-right: -81px;
+}
+
+#type_title h1{
+    text-align: left;
+    color: #414144;
+    font-size: 42px;
+    font-family: "BrandonGrotesqueBlk"
+}
+
+#type_title h2{
+    font-size: 18px;
+}
+
+.submit_button {
+    font-family: "BrandonGrotesqueReg";
+    width: 100%;
+}
+
+.clear_button {
+    text-align: center
+}
+
+/* IdForm*/
+
+#id_IdForm-source {
+    overflow: hidden;
+    padding-bottom: 5px;
+}
+
+#id_IdForm-source label span{
+  display: inline-block;
+  width: 164px;
+  background-color: #E8E0E0;
+  color: #8D8888;
+  text-align: center;
+} 
+
+#id_IdForm-source input {
+    display:none;
+}
+
+#id_IdForm-source input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+#id_IdForm-source input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.input_field {
+    width:100%;
+    font-family: "BrandonGrotesqueReg";
+}
+
+.input_field input {
+    width:100%;
+    font-family: "BrandonGrotesqueReg";
+    text-align: center;
+}
+
+/* Form step items */
+
+.compound{
+    background-color: #E3E9EB;
+    margin-left: -60%;
+    margin-right: -60%;
+    padding: 5%;
+}
+
+.compound h1 {
+    text-align: left;
+    color: #414144;
+    font-size: 42px;
+    padding-bottom: 1%;
+}
+
+.compound h2 {
+    text-align: left;
+    padding-bottom: 1%;
+}
+
+.compound_input {
+    margin-bottom: 5px;
+}
+
+#compound_mol {
+    overflow: hidden;
+    display: flex;
+    padding-bottom: 5px;
+}
+
+/* Background image classes */
+.compound_radio_smiles input {
+    display:none;
+}
+
+.compound_radio_smiles label span{
+  display: inline-block;
+  width: 350px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/Other/SMILESIcon.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+  opacity: 0.5;
+
+} 
+
+.compound_radio_smiles input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/Other/SMILESIcon.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+    opacity: 1.0;
+}
+
+.compound_radio_smiles input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/Other/SMILESIcon.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+    opacity: 1.0;
+}
+
+.compound_radio_iupac input {
+    display:none;
+}
+
+.compound_radio_iupac label span{
+  display: inline-block;
+  width: 350px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/Other/IUPACIcon.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+  opacity: 0.5;
+
+} 
+
+.compound_radio_iupac input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/Other/IUPACIcon.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+    opacity: 1.0;
+}
+
+.compound_radio_iupac input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/Other/IUPACIcon.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+    opacity: 1.0;
+}
+
+.compound_radio_sketch input {
+    display:none;
+}
+
+.compound_radio_sketch label span{
+  display: inline-block;
+  width: 350px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/Other/SketchIcon.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+  opacity: 0.5;
+
+} 
+
+.compound_radio_sketch input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/Other/SketchIcon.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+    opacity: 1.0;
+}
+
+.compound_radio_sketch input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/Other/SketchIcon.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+    opacity: 1.0;
+}
+
+.small_icon {
+    width:30%;
+}
+
+.add_form div{
+    background-color: #8D8889;
+    color: #FFFFFF;
+}
+
+.add_form div:hover{
+    cursor: pointer;
+    background-color: #484848;
+    color: #FFFFFF;
+}
+
+.add_form div:active {
+    background-color: #484848;
+}
+
+.add_field_button{
+    width:10%;
+}
+
+.remove_field{
+    width:10%;
+}
+
+
+
+/* BibliographyForm*/
+
+.publi_info{
+
+    padding: 10px;
+}
+
+.publi_title{
+    font-family: "BrandonGrotesqueReg";
+    margin-left: -300px;
+    margin-right: -300px;
+    margin-bottom: 20px;
+}
+
+#ck-button {
+    margin: 4px;
+    float:left;
+}
+
+#ck-button-long {
+    width:100%;
+}
+
+#ck-button label {
+    width: 100%;
+    margin-bottom: 0px;
+}
+
+#ck-button-long label {
+    width: 100%;
+    margin-top: 5px;
+}
+
+#ck-button label span {
+    text-align:center;
+    padding:3px;
+    display:block;
+    background-color: #E8E0E0;
+    color: #8D8888;
+    border-bottom: 2px solid #fff;
+}
+
+#ck-button-long label span {
+    text-align:center;
+    padding:3px;
+    display:block;
+    background-color: #E8E0E0;
+    color: #8D8888;
+}
+
+#ck-button label input {
+    position:absolute;
+    top:-20px;
+    display:none;
+}
+
+#ck-button-long label input {
+    position:absolute;
+    top:-20px;
+    display:none;
+}
+
+#ck-button input:hover + span {
+   background-color: #FFFFFF;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+#ck-button-long input:hover + span {
+   background: white url("http://localhost:8000/static/images/Buttons/CheckButton.png") no-repeat right;
+    background-size: contain;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+
+#ck-button input:checked + span {
+    background: white url("http://localhost:8000/static/images/Buttons/CheckButton.png") no-repeat right;
+    background-size: contain;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+#ck-button-long input:checked + span {
+    background: white url("http://localhost:8000/static/images/Buttons/CheckButton.png") no-repeat right;
+    background-size: contain;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+#ck-button input:checked:hover + span {
+   background-color: #FFFFFF;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+#ck-button-long input:checked:hover + span {
+   background-color: #FFFFFF;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+/* ProteinDomainComplexTypeForm */
+
+#id_ProteinDomainComplexTypeForm-inhibited {
+    overflow: hidden;
+    display: flex;
+}
+
+#id_ProteinDomainComplexTypeForm-complexChoice {
+    line-height: inherit;
+    font-family: "BrandonGrotesqueReg";
+    border-bottom: 1px solid #2d96fa;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+    text-align: center;
+    width: 100%;
+}
+    
+
+/* Background image classes */
+.imageBack_Inhib_Hetero2-merAB input {
+    display:none;
+}
+
+.imageBack_Inhib_Hetero2-merAB label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Inhibited/Hetero2-merAB_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Inhib_Hetero2-merAB input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Inhibited/Hetero2-merAB_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Inhib_Hetero2-merAB input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Inhibited/Hetero2-merAB_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+
+.imageBack_Inhib_Homo2-merA2 input {
+    display:none;
+}
+
+.imageBack_Inhib_Homo2-merA2 label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Inhibited/Homo2-merA2_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+} 
+
+.imageBack_Inhib_Homo2-merA2 input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Inhibited/Homo2-merA2_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Inhib_Homo2-merA2 input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Inhibited/Homo2-merA2_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Inhib_Custom input {
+    display:none;
+}
+
+.imageBack_Inhib_Custom label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Inhibited/Custom_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Inhib_Custom input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Inhibited/Custom_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Inhib_Custom input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Inhibited/Custom_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+/* Stabilized */
+
+
+#id_ProteinDomainComplexTypeForm-stabilized {
+    overflow: hidden;
+    display: flex;
+    flex-wrap: wrap;
+}
+
+.imageBack_Stab_Hetero2-merAB input {
+    display:none;
+}
+
+.imageBack_Stab_Hetero2-merAB label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Stabilized/Hetero2-merAB_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Stab_Hetero2-merAB input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Hetero2-merAB_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Hetero2-merAB input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Hetero2-merAB_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Homo2-merA2 input {
+    display:none;
+}
+
+.imageBack_Stab_Homo2-merA2 label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Stabilized/Homo2-merA2_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Stab_Homo2-merA2 input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Homo2-merA2_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Homo2-merA2 input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Homo2-merA2_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Homo-Like2-merA2 input {
+    display:none;
+}
+
+.imageBack_Stab_Homo-Like2-merA2 label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Stabilized/Homo-Like2-merA2_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Stab_Homo-Like2-merA2 input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Homo-Like2-merA2_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Homo-Like2-merA2 input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Homo-Like2-merA2_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Homo3-merA3 input {
+    display:none;
+}
+
+.imageBack_Stab_Homo3-merA3 label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Stab_Homo3-merA3 input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Homo3-merA3 input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Homo3-merA3inhibitedA2-dimer input {
+    display:none;
+}
+
+.imageBack_Stab_Homo3-merA3inhibitedA2-dimer label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3inhibitedA2-dimer_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Stab_Homo3-merA3inhibitedA2-dimer input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3inhibitedA2-dimer_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Homo3-merA3inhibitedA2-dimer input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3inhibitedA2-dimer_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Homo4-merA4 input {
+    display:none;
+}
+
+.imageBack_Stab_Homo4-merA4 label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Stabilized/Homo4-merA4_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Stab_Homo4-merA4 input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Homo4-merA4_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Homo4-merA4 input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Homo4-merA4_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Ring-Like3-merA3 input {
+    display:none;
+}
+
+.imageBack_Stab_Ring-Like3-merA3 label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Stabilized/Ring-Like3-merA3_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Stab_Ring-Like3-merA3 input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Ring-Like3-merA3_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Ring-Like3-merA3 input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Ring-Like3-merA3_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Ring-Like5-merA5 input {
+    display:none;
+}
+
+.imageBack_Stab_Ring-Like5-merA5 label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Stabilized/Ring-Like5-merA5_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Stab_Ring-Like5-merA5 input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Ring-Like5-merA5_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Ring-Like5-merA5 input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Ring-Like5-merA5_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+
+.imageBack_Stab_Custom input {
+    display:none;
+}
+
+.imageBack_Stab_Custom label span{
+  display: inline-block;
+  width: 214px;
+  text-align: center;
+  background-color: #FFFFFF;
+  background-image: url('/static/images/PPITypes/Stabilized/Custom_Apo.png');
+  background-position: center;
+  background-repeat: no-repeat;
+  height: 214px;
+  font-size: 12px;
+
+} 
+
+.imageBack_Stab_Custom input:hover+label span{
+    cursor: pointer;
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Custom_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+.imageBack_Stab_Custom input[type="radio"]:checked+label span{
+    background-color: #FFFFFF;
+    background-image: url('/static/images/PPITypes/Stabilized/Custom_Holo.png');
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #000000;
+    border-bottom: 1px solid #2D96FA;
+    border-top: 1px solid #E3E9EB;
+    border-left: 1px solid #E3E9EB;
+    border-right: 1px solid #E3E9EB;
+}
+
+
+/* Proteins form */
+
+.proteins_form {
+    width: 100%;
+}
+
+.inline_prot {
+    display: inline-flex;
+}
+
+.inline_label {
+    font-weight: 700;
+    padding-right: 5px;
+}
+
+.inline_field {
+    padding-right: 5px;
+}
+
+.inline_field input {
+    width: 100%;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    white-space: nowrap;
+    padding-right: 5px;
+}
+
+.inline_field select {
+    width: 150px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    white-space: nowrap;
+    padding-right: 5px;
+}
+
+.inline_field_multiple select {
+    width: 210px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    white-space: nowrap;
+    padding-right: 5px;
+}
+
+.inline_box_complex {
+    margin: 5px;
+    padding: 10px;
+    display: inline-flex;
+    margin-left: -150px;
+    margin-right: -150px;
+}
+
+/*  Done step  */
+.last_step {
+    margin-top: 10%;
+}
+
+.add_new {
+    margin-top: 5px;
+    border-radius: 0px;
+    background-color: #2d96fa;
+    border: none;
+    color: #fff;
+    margin: 0 auto;
+    width: 43%;
+}
+
+.add_new a {
+    color: #FFF;
+    text-decoration: none;
+}
+
+.add_new a:hover {
+    color: #FFF;
+    text-decoration: none;
+}
+
+.add_new a:visited {
+    color: #FFF;
+    text-decoration: none;
+}
+
+
+
+[type="reset"], [type="submit"], button, html [type="button"] {
+    -webkit-appearance: button;
+    margin-top: 5px;
+    border-radius: 0px;
+    background-color: #2d96fa;
+    border: none;
+    color: #fff;
+}
+
diff --git a/ippisite/ippidb/static/css/fonts.css b/ippisite/ippidb/static/css/fonts.css
new file mode 100644
index 00000000..a856710a
--- /dev/null
+++ b/ippisite/ippidb/static/css/fonts.css
@@ -0,0 +1,74 @@
+/*
+Theme Name: IPPI-DB
+Theme URI: https://ippidb.pasteur.fr/
+Author: Rachel Torchet
+Description: IPPI-DB Theme
+*/
+
+/* FONTS */
+
+@font-face {
+    font-family: 'BrandonGrotesqueReg';
+    src: url('../fonts/brandon_reg/brandon_reg-webfont.eot');
+    src: url('../fonts/brandon_reg/brandon_reg-webfont.eot?#iefix') format('embedded-opentype'),
+         url('../fonts/brandon_reg/brandon_reg-webfont.woff2') format('woff2'),
+         url('../fonts/brandon_reg/brandon_reg-webfont.woff') format('woff'),
+         url('../fonts/brandon_reg/brandon_reg-webfont.svg#brandon_grotesquereg') format('svg');
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'BrandonGrotesqueBld';
+    src: url('../fonts/brandon_bld/brandon_bld-webfont-webfont.eot');
+    src: url('../fonts/brandon_bld/brandon_bld-webfont-webfont.eot?#iefix') format('embedded-opentype'),
+         url('../fonts/brandon_bld/brandon_bld-webfont-webfont.woff2') format('woff2'),
+         url('../fonts/brandon_bld/brandon_bld-webfont-webfont.woff') format('woff'),
+         url('../fonts/brandon_bld/brandon_bld-webfont-webfont.svg#brandon_grotesquebld') format('svg');
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'BrandonGrotesqueBlk';
+    src: url('../fonts/brandon_blk/brandon_blk-webfont.eot');
+    src: url('../fonts/brandon_blk/brandon_blk-webfont.eot?#iefix') format('embedded-opentype'),
+         url('../fonts/brandon_blk/brandon_blk-webfont.woff2') format('woff2'),
+         url('../fonts/brandon_blk/brandon_blk-webfont.woff') format('woff'),
+         url('../fonts/brandon_blk/brandon_blk-webfont.svg#brandon_grotesqueblk') format('svg');
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'PlayfairDisplayBld';
+    src: url('../fonts/playfairdisplay/playfairdisplay-bold-webfont.eot');
+    src: url('../fonts/playfairdisplay/playfairdisplay-bold-webfont.eot?#iefix') format('embedded-opentype'),
+         url('../fonts/playfairdisplay/playfairdisplay-bold-webfont.woff2') format('woff2'),
+         url('../fonts/playfairdisplay/playfairdisplay-bold-webfont.woff') format('woff'),
+         url('../fonts/playfairdisplay/playfairdisplay-bold-webfont.svg#playfair_displaybld') format('svg');
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'PlayfairDisplayIta';
+    src: url('../fonts/playfairdisplay/playfairdisplay-italic-webfont.eot');
+    src: url('../fonts/playfairdisplay/playfairdisplay-italic-webfont.eot?#iefix') format('embedded-opentype'),
+         url('../fonts/playfairdisplay/playfairdisplay-italic-webfont.woff2') format('woff2'),
+         url('../fonts/playfairdisplay/playfairdisplay-italic-webfont.woff') format('woff'),
+         url('../fonts/playfairdisplay/playfairdisplay-italic-webfont.svg#playfair_displayita') format('svg');
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'PlayfairDisplayReg';
+    src: url('../fonts/playfairdisplay/playfairdisplay-regular-webfont.eot');
+    src: url('../fonts/playfairdisplay/playfairdisplay-regular-webfont.eot?#iefix') format('embedded-opentype'),
+         url('../fonts/playfairdisplay/playfairdisplay-regular-webfont.woff2') format('woff2'),
+         url('../fonts/playfairdisplay/playfairdisplay-regular-webfont.woff') format('woff'),
+         url('../fonts/playfairdisplay/playfairdisplay-regular-webfont.svg#playfair_displayreg') format('svg');
+    font-weight: normal;
+    font-style: normal;
+}
diff --git a/ippisite/ippidb/static/css/ippidb.css b/ippisite/ippidb/static/css/ippidb.css
index 9cdf60fa..8b8c5485 100644
--- a/ippisite/ippidb/static/css/ippidb.css
+++ b/ippisite/ippidb/static/css/ippidb.css
@@ -5,2006 +5,9 @@ Author: Rachel Torchet
 Description: IPPI-DB Theme
 */
 
-/* FONTS */
-/*
-Theme Name: C3BI
-Theme URI: https://c3bitest.c3bi.pasteur.fr/
-Author: Rachel Torchet
-Description: C3BI Theme
-*/
-
-
-/* POLICE */
-
-@font-face {
-    font-family: 'BrandonGrotesqueReg';
-    src: url('../fonts/brandon_reg/brandon_reg-webfont.eot');
-    src: url('../fonts/brandon_reg/brandon_reg-webfont.eot?#iefix') format('embedded-opentype'),
-         url('../fonts/brandon_reg/brandon_reg-webfont.woff2') format('woff2'),
-         url('../fonts/brandon_reg/brandon_reg-webfont.woff') format('woff'),
-         url('../fonts/brandon_reg/brandon_reg-webfont.svg#brandon_grotesquereg') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'BrandonGrotesqueBld';
-    src: url('../fonts/brandon_bld/brandon_bld-webfont-webfont.eot');
-    src: url('../fonts/brandon_bld/brandon_bld-webfont-webfont.eot?#iefix') format('embedded-opentype'),
-         url('../fonts/brandon_bld/brandon_bld-webfont-webfont.woff2') format('woff2'),
-         url('../fonts/brandon_bld/brandon_bld-webfont-webfont.woff') format('woff'),
-         url('../fonts/brandon_bld/brandon_bld-webfont-webfont.svg#brandon_grotesquebld') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'BrandonGrotesqueBlk';
-    src: url('../fonts/brandon_blk/brandon_blk-webfont.eot');
-    src: url('../fonts/brandon_blk/brandon_blk-webfont.eot?#iefix') format('embedded-opentype'),
-         url('../fonts/brandon_blk/brandon_blk-webfont.woff2') format('woff2'),
-         url('../fonts/brandon_blk/brandon_blk-webfont.woff') format('woff'),
-         url('../fonts/brandon_blk/brandon_blk-webfont.svg#brandon_grotesqueblk') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'PlayfairDisplayBld';
-    src: url('../fonts/playfairdisplay/playfairdisplay-bold-webfont.eot');
-    src: url('../fonts/playfairdisplay/playfairdisplay-bold-webfont.eot?#iefix') format('embedded-opentype'),
-         url('../fonts/playfairdisplay/playfairdisplay-bold-webfont.woff2') format('woff2'),
-         url('../fonts/playfairdisplay/playfairdisplay-bold-webfont.woff') format('woff'),
-         url('../fonts/playfairdisplay/playfairdisplay-bold-webfont.svg#playfair_displaybld') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'PlayfairDisplayIta';
-    src: url('../fonts/playfairdisplay/playfairdisplay-italic-webfont.eot');
-    src: url('../fonts/playfairdisplay/playfairdisplay-italic-webfont.eot?#iefix') format('embedded-opentype'),
-         url('../fonts/playfairdisplay/playfairdisplay-italic-webfont.woff2') format('woff2'),
-         url('../fonts/playfairdisplay/playfairdisplay-italic-webfont.woff') format('woff'),
-         url('../fonts/playfairdisplay/playfairdisplay-italic-webfont.svg#playfair_displayita') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-@font-face {
-    font-family: 'PlayfairDisplayReg';
-    src: url('../fonts/playfairdisplay/playfairdisplay-regular-webfont.eot');
-    src: url('../fonts/playfairdisplay/playfairdisplay-regular-webfont.eot?#iefix') format('embedded-opentype'),
-         url('../fonts/playfairdisplay/playfairdisplay-regular-webfont.woff2') format('woff2'),
-         url('../fonts/playfairdisplay/playfairdisplay-regular-webfont.woff') format('woff'),
-         url('../fonts/playfairdisplay/playfairdisplay-regular-webfont.svg#playfair_displayreg') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-
-/* HEAD */
-html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary, time, mark, audio, video { 
-	margin:0; 
-	padding:0; 
-	border:0; 
-	outline:0; 
-	font-size:100%; 
-	vertical-align:baseline; 
-	background:transparent; 
-	font-family:"BrandonGrotesqueReg";
-	font-size: 18px;
-}
-
-.hide {
-  display: none;
-}
-
-.clear_all{
-    font-size: 14px;
-}
-
-#main-header{
-	margin-bottom: 2px;
-}
-
-#head-top {
-	background-color: #211b1d;
-	height: 33px;
-	position:relative;
-}
-
-/* -- Header Menu -- */
-
-#head-top #mainmenu {
-	position: relative;
-}
-
-#head-top #mainmenu ul{
-	list-style: outside none none;
-    margin: 0px;
-    padding: 0px;
-    border: 0px none;
-}
-
-#head-top #mainmenu ul li{
-	float: left;
-	list-style: none;
-	display: inline-block;
-	vertical-align: middle;
-	margin: 0px 10px;
-}
-
-#head-top #mainmenu ul li a{
-	font-size: 11px;
-	font-family: "BrandonGrotesqueBld";
-	color:#fff;
-	text-transform: uppercase;
-	text-decoration: none;
-	position: relative;
-	display: inline-block;
-	padding: 9px 35px;
-	text-align: center;
-
-}
-
-#head-top #mainmenu ul li a:hover{
-	background: #FFF none repeat scroll 0% 0%;
-	color: #2D80E2;
-	text-decoration: none;
-}
-
-#head-top #mainmenu ul li a:focus{
-	background: #FFF none repeat scroll 0% 0%;
-	color: #2D80E2;
-	text-decoration: none;
-}
-
-div.tabs {
-    will-change: transform;
-    position: fixed;
-    bottom: 0px;
-    right: 0px;
-    left: 0px;
-    z-index: 999;
-    margin: 0px;
-    text-align: center;
-}
-
-div.hidden {
-    display: none;
-}
-
-.locale-block {
-    float: right;
-    margin-left: 10px;
-    margin-top: 5px;
-}
-
-.jumbotron {
-  padding: 50px;
-  margin-bottom: 0px;
-  color: inherit;
-  background-image: url("../images/banner.png");
-  background-repeat: no-repeat;
-  background-color: #F9F9F9;
-  background-size: cover;
-}
-
-#home div.jumbotron{
-    background: url('/static/images/banner.png');
-    background-repeat: no-repeat;
-}
-
-/* -- Jumbotron -- */
-
-.jumbotron a {
-	color: rgb(0, 0, 0);
-	text-decoration: none;
-}
-
-.jumbotron a:hover {
-	color: rgb(0, 0, 0);
-	text-decoration: none;
-}
-
-.jumbotron a:focus {
-	color: rgb(0, 0, 0);
-	text-decoration: none;
-}
-
-/* -- Main Menu -- */
-
-#mainnav{
-	overflow: hidden;
-    border-bottom: 1px solid #AEB7C0;
-    background-color: #F9F9F9;
-}
-
-.main-nav{
-	margin-left: auto;
-	margin-right: auto;
-	position: relative;
-	width: 600px;
-	text-align: center;
-    height: 35px;
-}
-
-.main-nav ul {
-    list-style: outside none none;
-    margin: 0px;
-    padding: 0px;
-    border: 0px none;
-}
-
-.main-nav ul li {
-    float: left;
-	list-style: none;
-	display: inline-block;
-	vertical-align: middle;
-	margin: 0px 30px;
-}
-
-.main-nav ul li a{
-	font-size: 12px;
-	font-family: "BrandonGrotesqueBlk";
-	color:#000;
-	text-transform: uppercase;
-	text-decoration: none;
-	padding: 5px 0px;
-	position: relative;
-	display: inline-block;
-}
-
-.main-nav ul li a:hover {
-	font-size: 12px;
-	font-family: "BrandonGrotesqueBlk";
-	color:#211B1D;
-	text-transform: uppercase;
-	text-decoration: none;
-	padding: 5px 0px;
-	position: relative;
-	display: inline-block;
-}
-
-.main-nav ul li a:hover::after {
-	content: "";
-	position: absolute;
-	bottom: 0px;
-	left: 0px;
-	right: 0px;
-	height: 2px;
-	background: #211B1D none repeat scroll 0% 0%;
-}
-
-.main-nav ul li a:focus {
-	font-size: 12px;
-	font-family: "BrandonGrotesqueBlk";
-	color:#211B1D;
-	text-transform: uppercase;
-	text-decoration: none;
-	padding: 5px 0px;
-	position: relative;
-	display: inline-block;
-}
-
-.main-nav ul li a:focus::after {
-	content: "";
-	position: absolute;
-	bottom: 0px;
-	left: 0px;
-	right: 0px;
-	height: 2px;
-	background: #211B1D none repeat scroll 0% 0%;
-}
-
-.main-nav ul li a:active {
-	font-size: 12px;
-	font-family: "BrandonGrotesqueBlk";
-	color:#211B1D;
-	text-transform: uppercase;
-	text-decoration: none;
-	padding: 5px 0px;
-	position: relative;
-	display: inline-block;
-}
-
-.main-nav ul li a:active::after {
-    content: "";
-    position: absolute;
-    bottom: 0px;
-    left: 0px;
-    right: 0px;
-    height: 2px;
-    background: #211B1D none repeat scroll 0% 0%;
-}
-
-/* -- Secondary Menu -- */
-
-.secondary-nav {
-background: #F0F3F4 none repeat scroll 0% 0%;
-padding: 15px 0px;
-text-align: center;
-}
-
-.secondary-nav ul {
-    list-style: outside none none;
-    margin: 0px;
-    padding: 0px;
-    border: 0px none;
-}
-
-.secondary-nav ul li {
-    margin: 0px 35px;
-    display: inline-block;
-}
-
-.secondary-nav ul li a {
-    font-size: 11px;
-    font-family: "BrandonGrotesqueBlk";
-    color:#414144;
-    text-transform: uppercase;
-    text-decoration: none;
-    padding: 0px 0px;
-    position: relative;
-    display: inline-block;
-}
-
-.secondary-nav ul li a:active {
-    font-size: 11px;
-    font-family: "BrandonGrotesqueBlk";
-    color:#000;
-    text-transform: uppercase;
-    text-decoration: none;
-    padding: 0px 0px;
-    position: relative;
-    display: inline-block;
-}
-
-.secondary-nav ul li a:focus::after {
-    content: "";
-    position: absolute;
-    bottom: 0px;
-    left: 0px;
-    right: 0px;
-    height: 2px;
-    background: #414144 none repeat scroll 0% 0%;
-    text-decoration: none;
-    color: #000;
-}
-
-.secondary-nav ul li a:active::after {
-    content: "";
-    position: absolute;
-    bottom: 0px;
-    left: 0px;
-    right: 0px;
-    height: 2px;
-    background: #414144 none repeat scroll 0% 0%;
-    text-decoration: none;
-    color: #000;
-}
-
-.secondary-nav ul li a:hover::after {
-    content: "";
-    position: absolute;
-    bottom: 0px;
-    left: 0px;
-    right: 0px;
-    height: 2px;
-    background: #414144 none repeat scroll 0% 0%;
-    text-decoration: none;
-}
-
-
-/* -- Breadcrumb -- */
-
-
-.inner-wrap .breadcrumb:first-child {
-    margin-top: 10px;
-}
-
-.main__inner .breadcrumb {
-    position: absolute;
-    z-index: 1;
-    top: 10px;
-    left: 10px;
-    color: #fff;
-}
-
-.breadcrumb {
-    color: #C6C5C6;
-    max-width: 1200px;
-}
-
-.breadcrumb a {
-    color: #C6C5C6;
-    text-decoration: underline;
-}
-
-.breadcrumb span:last-child {
-    font-weight: bold;
-    color: #1D1D1B;
-}
-
-.breadcrumb > .breadcrumb-label {
-    position: absolute !important;
-    clip: rect(1px,1px,1px,1px);
-    padding: 0 !important;
-    border: 0 !important;
-    height: 1px !important;
-    width: 1px !important;
-    overflow: hidden;
-}
-
-.breadcrumb > .breadcrumb-label + div {
-    white-space: nowrap;
-    text-overflow: ellipsis;
-    overflow: hidden;
-}
-
-.main__inner .breadcrumb a {
-    color: #fff;
-    text-shadow: 1px 1px 3px rgba(0,0,0,0.5);
-}
-
-.breadcrumb span::before {
-    content: '>';
-    margin: 0 5px;
-}
-
-.main__inner .breadcrumb span:last-child {
-    font-weight: bold;
-    color: #fff;
-}
-
-/* -- Page Header -- */
-
-.adv-page__header{
-margin-left: -50px;
-margin-right: -50px;
-box-shadow: 0px 0px 0px 1500px rgba(0, 0, 0, 0.1) inset;
-min-height: 260px;
-line-height: 260px;
-background-repeat: no-repeat;
-background-size: cover;
-position: relative;
-text-align:center;
-background-image:url("https://research.pasteur.fr/wp-content/uploads/2015/03/Facebook-offers-its-Proxygen-server-on-Open-Source-Platform-for-developers-1000x300.jpg")
-
-}
-
-.header__inner {
-    display: inline-block;
-    vertical-align: middle;
-    line-height: 1.2;
-    min-width: 450px;
-font-size: 42px;
-    font-family: "BrandonGrotesqueBlk";
-    color:#fff;
-    text-transform: uppercase;
-}   
-
-.node-fiche-page--full .node__title {
-    font-weight: 800;
-    text-transform: uppercase;
-    text-align: center;
-    line-height: 1.2;
-    margin: 0px;
-    font-size: 58px;
-    padding-top: 150px;
-    color: #FFF;
-}
-
-.node-fiche-page--full {
-    background-repeat: no-repeat;
-    background-position: 50% top;
-    background-size: 100% auto;
-    position: relative;
-    background-color: #fff;
-}
-
-.header__bg {
-    box-shadow: 0px 0px 0px 1500px rgba(0, 0, 0, 0.15) inset;
-    background-size: 100%;
-    background-repeat: no-repeat;
-}
-
-.node-fiche-page--full .header__bg {
-    position: absolute;
-}
-
-.node-fiche-page--full header {
-    position: relative;
-    min-height: 345px;
-}
-
-.node-fiche-page--full .content {
-    background: #FFF none repeat scroll 0% 0%;
-    padding: 15px 65px;
-}
-
-.page-title {
-    margin: 0px 0px 30px;
-    text-transform: uppercase;
-    text-align: center;
-    font-size: 42px;
-    line-height: 1.2;
-    color: #1D1D1B;
-    font-family:"BrandonGrotesqueBlk";
-}
-
-.page-intro {
-    color:#414144;
-    margin-top: 30px;
-    font-size: 20px;
-    font-weight: normal;
-    line-height: 1.4;
-    text-align: justify;
-    margin: 40px auto;
-    padding-top: 40px;
-}
-
-.page-intro ul {
-    margin-left: 30px;
-}
-
-.page-intro ul li {
-    font-size: 20px;
-    font-weight: normal;
-    line-height: 1.4;
-}
-
-table {
-    width:100%;
-}
-
-button {
-font-family:"BrandonGrotesqueReg";
-}
-
-h1 {
-    font-size: 20px;
-	font-family:"BrandonGrotesqueBlk";
-}
-
-a {
-text-decoration:none;
-color:#2D96FA;
-}
-
-a:hover {
-	text-decoration: underline;
-}
-
-article {
-display:block;
-}
-
-.main-content {
-	width: auto;
-	float: none;
-}
-
-.main__inner {
-    position: relative;
-}
-
-.btn--gift {
-    display: block;
-    text-align: center;
-    float: right;
-    background: #FFF none repeat scroll 0% 0%;
-    color: #414144;
-    font-weight: bold;
-    text-transform: uppercase;
-    font-size: 16px;
-    padding: 10px;
-    margin-top: 0px;
-    text-decoration: none;
-}
-
-.btn--gift:hover {
-    display: block;
-    text-align: center;
-    float: right;
-    background: #0275E3 none repeat scroll 0% 0%;
-    color: #FFF;
-    font-weight: bold;
-    text-transform: uppercase;
-    font-size: 16px;
-    padding: 10px;
-    margin-top: 0px;
-    text-decoration: none;
-}
-
-/*   MAIN PAGE   */
-.main-publi {
-    text-align: center;
-}
-
-.link-publication a {
-    text-decoration: none;
-    color:#2D96FA;
-}
-
-.link-publication a:hover {
-    text-decoration: underline;
-    color:#2D96FA;
-}
-
-.link-publication a:focus {
-    text-decoration: underline;
-    color:#2D96FA;
-}
-
-.latest-publi {
-    font-family: "BrandonGrotesqueBld";
-}
-
-.box {
-    margin-top: 50px;
-    position: relative;
-    width: 1200px;
-    height: 500px;
-}
-
-.boxs {
-    margin-top: 50px;
-    position: relative;
-    width: auto;
-    height: auto;
-}
-
-.box__inner {
-    position: absolute;
-    min-width: 49%;
-    min-height: 49%;
-    text-align:center;
-    background-color:white;
-    transition:all .1s ease;
-}
-
-.box__inner h2 {
-    font-family: "BrandonGrotesqueBld";
-    font-size: 20px;
-    padding: 10px;
-}
-
-.box__inner.left {
-    left:0;
-    border: 1px solid #E8E0E0;
-    margin-right: 5px;
-}
-
-.box__inner.right {
-    right:0;
-    margin-right: 5px;
-}
-
-.box__inner.top {
-    top:0;
-    border: 1px solid #E8E0E0;
-    margin-bottom: 5px;
-}
-
-.box__inner.bottom {
-    bottom:0;
-    border: 1px solid #E8E0E0;
-    margin-top: 5px;
-}
-
-.box__inner.box--active {
-    min-width:100%;
-    min-height:100%;
-    z-index:1;
-}
-
-
-/*   READ MORE   */
-.read_more {
-    position: absolute;
-    bottom: 20px;
-    right:20px;
-}
-
-
-.read_more a {
-    font-family: "BrandonGrotesqueBlk";
-    color: #2D96FA;
-    font-size: 13px;
-    text-transform: uppercase;
-    padding-right: 6px;
-    text-decoration: none;
-}
-
-.read_more a::before{
-    content: "";
-    display: inline-block;
-    vertical-align: middle;
-    margin-right: 10px;
-    margin-top: -8px;
-    background-image: url("/static/images/Other/sprites.png");
-    background-position: -186px -164px;
-    width: 22px;
-    height: 8px;
-    text-decoration: none;
-
-}
-
-
-/*   FORMS   */
-
-.form_div {
-    margin: 0 auto;
-    width: 43%
-}
-
-#Form{
-    border: 1px solid #E3E9EB;
-    padding: 15px;
-    min-height: 150px;
-    text-align: center;
-    min-height: 350px;
-    border-top: 1px solid #2D96FA;
-}
-
-.readonly {
-    background-color: #E8E0E0;
-    color: #8D8889;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    white-space: nowrap;
-    padding: 5px;
-    width: 80%;
-    margin: 2px;
-}
-
-.readonlyfields label{
-    display: block;
-    width: 150px;
-    float: left;
-}
-
-div label input {
-   margin-right:100px;
-}
-
-body {
-    font-family:sans-serif;
-}
-
-.input_size{
-    width:80%;
-}
-
-.input_fields_wrap {
-    display:inline-block;
-}
-
-.PperPocket {
-    width: 150px;
-    border-bottom: 1px solid #2d96fa;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-    text-align: center;
-}
-
-/* BUTTONS */
-
-/* IdForm*/
-
-#id_IdForm-source {
-    overflow: hidden;
-    padding-bottom: 5px;
-}
-
-#id_IdForm-source label span{
-  display: inline-block;
-  width: 164px;
-  background-color: #E8E0E0;
-  color: #8D8888;
-  text-align: center;
-} 
-
-#id_IdForm-source input {
-    display:none;
-}
-
-#id_IdForm-source input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-#id_IdForm-source input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-/* BibliographyForm*/
-
-.publi_info{
-    padding: 10px;
-}
-
-.publi_title{
-    margin-left: -300px;
-    margin-right: -300px;
-    margin-bottom: 20px;
-}
-
-#ck-button {
-    margin: 4px;
-    float:left;
-}
-
-#ck-button-long {
-    width:100%;
-}
-
-#ck-button label {
-    width: 100%;
-}
-
-#ck-button-long label {
-    width: 100%;
-    margin-top: 5px;
-}
-
-#ck-button label span {
-    text-align:center;
-    padding:3px;
-    display:block;
-    background-color: #E8E0E0;
-    color: #8D8888;
-    border-bottom: 2px solid #fff;
-}
-
-#ck-button-long label span {
-    text-align:center;
-    padding:3px;
-    display:block;
-    background-color: #E8E0E0;
-    color: #8D8888;
-}
-
-#ck-button label input {
-    position:absolute;
-    top:-20px;
-    display:none;
-}
-
-#ck-button-long label input {
-    position:absolute;
-    top:-20px;
-    display:none;
-}
-
-#ck-button input:hover + span {
-   background-color: #FFFFFF;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-#ck-button-long input:hover + span {
-   background: white url("http://localhost:8000/static/images/Buttons/CheckButton.png") no-repeat right;
-    background-size: contain;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-
-#ck-button input:checked + span {
-    background: white url("http://localhost:8000/static/images/Buttons/CheckButton.png") no-repeat right;
-    background-size: contain;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-#ck-button-long input:checked + span {
-    background: white url("http://localhost:8000/static/images/Buttons/CheckButton.png") no-repeat right;
-    background-size: contain;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-#ck-button input:checked:hover + span {
-   background-color: #FFFFFF;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-#ck-button-long input:checked:hover + span {
-   background-color: #FFFFFF;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-/* ProteinDomainComplexTypeForm */
-
-#id_ProteinDomainComplexTypeForm-inhibited {
-    overflow: hidden;
-    display: flex;
-}
-
-/* Background image classes */
-.imageBack_Inhib_Hetero2-merAB input {
-    display:none;
-}
-
-.imageBack_Inhib_Hetero2-merAB label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Inhibited/Hetero2-merAB_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Inhib_Hetero2-merAB input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Inhibited/Hetero2-merAB_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Inhib_Hetero2-merAB input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Inhibited/Hetero2-merAB_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-
-.imageBack_Inhib_Homo2-merA2 input {
-    display:none;
-}
-
-.imageBack_Inhib_Homo2-merA2 label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Inhibited/Homo2-merA2_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-} 
-
-.imageBack_Inhib_Homo2-merA2 input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Inhibited/Homo2-merA2_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Inhib_Homo2-merA2 input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Inhibited/Homo2-merA2_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Inhib_Custom input {
-    display:none;
-}
-
-.imageBack_Inhib_Custom label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Inhibited/Custom_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Inhib_Custom input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Inhibited/Custom_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Inhib_Custom input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Inhibited/Custom_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-/* Stabilized */
-
-
-#id_ProteinDomainComplexTypeForm-stabilized {
-    overflow: hidden;
-    display: flex;
-    flex-wrap: wrap;
-}
-
-.imageBack_Stab_Hetero2-merAB input {
-    display:none;
-}
-
-.imageBack_Stab_Hetero2-merAB label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Stabilized/Hetero2-merAB_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Stab_Hetero2-merAB input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Hetero2-merAB_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Hetero2-merAB input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Hetero2-merAB_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Homo2-merA2 input {
-    display:none;
-}
-
-.imageBack_Stab_Homo2-merA2 label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Stabilized/Homo2-merA2_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Stab_Homo2-merA2 input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Homo2-merA2_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Homo2-merA2 input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Homo2-merA2_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Homo-Like2-merA2 input {
-    display:none;
-}
-
-.imageBack_Stab_Homo-Like2-merA2 label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Stabilized/Homo-Like2-merA2_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Stab_Homo-Like2-merA2 input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Homo-Like2-merA2_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Homo-Like2-merA2 input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Homo-Like2-merA2_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Homo3-merA3 input {
-    display:none;
-}
-
-.imageBack_Stab_Homo3-merA3 label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Stab_Homo3-merA3 input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Homo3-merA3 input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Homo3-merA3inhibitedA2-dimer input {
-    display:none;
-}
-
-.imageBack_Stab_Homo3-merA3inhibitedA2-dimer label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3inhibitedA2-dimer_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Stab_Homo3-merA3inhibitedA2-dimer input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3inhibitedA2-dimer_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Homo3-merA3inhibitedA2-dimer input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Homo3-merA3inhibitedA2-dimer_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Homo4-merA4 input {
-    display:none;
-}
-
-.imageBack_Stab_Homo4-merA4 label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Stabilized/Homo4-merA4_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Stab_Homo4-merA4 input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Homo4-merA4_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Homo4-merA4 input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Homo4-merA4_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Ring-Like3-merA3 input {
-    display:none;
-}
-
-.imageBack_Stab_Ring-Like3-merA3 label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Stabilized/Ring-Like3-merA3_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Stab_Ring-Like3-merA3 input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Ring-Like3-merA3_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Ring-Like3-merA3 input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Ring-Like3-merA3_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Ring-Like5-merA5 input {
-    display:none;
-}
-
-.imageBack_Stab_Ring-Like5-merA5 label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Stabilized/Ring-Like5-merA5_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Stab_Ring-Like5-merA5 input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Ring-Like5-merA5_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Ring-Like5-merA5 input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Ring-Like5-merA5_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-
-.imageBack_Stab_Custom input {
-    display:none;
-}
-
-.imageBack_Stab_Custom label span{
-  display: inline-block;
-  width: 214px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/PPITypes/Stabilized/Custom_Apo.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-
-} 
-
-.imageBack_Stab_Custom input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Custom_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-.imageBack_Stab_Custom input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/PPITypes/Stabilized/Custom_Holo.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-}
-
-
-/* Proteins form */
-
-.proteins_form {
-    width: 100%;
-}
-
-.inline_prot {
-    display: inline-flex;
-}
-
-.inline_label {
-    font-weight: 700;
-    padding-right: 5px;
-}
-
-.inline_field {
-    padding-right: 5px;
-}
-
-.inline_field input {
-    width: 100%;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    white-space: nowrap;
-    padding-right: 5px;
-}
-
-.inline_field select {
-    width: 150px;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    white-space: nowrap;
-    padding-right: 5px;
-}
-
-.inline_field_multiple select {
-    width: 210px;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    white-space: nowrap;
-    padding-right: 5px;
-}
-
-.inline_box_complex {
-    margin: 5px;
-    padding: 10px;
-    display: inline-flex;
-    margin-left: -150px;
-    margin-right: -150px;
-}
-
-/*  Done step  */
-.last_step {
-    margin-top: 10%;
-}
-
-.add_new {
-    margin-top: 5px;
-    border-radius: 0px;
-    background-color: #2d96fa;
-    border: none;
-    color: #fff;
-    margin: 0 auto;
-    width: 43%;
-}
-
-.add_new a {
-    color: #FFF;
-    text-decoration: none;
-}
-
-.add_new a:hover {
-    color: #FFF;
-    text-decoration: none;
-}
-
-.add_new a:visited {
-    color: #FFF;
-    text-decoration: none;
-}
-
-button, input, select, textarea {
-    line-height: inherit;
-    font-family: "BrandonGrotesqueReg";
-    border-bottom: 1px solid #2d96fa;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-    text-align: center;
-    width: 100%
-}
-
-[type="reset"], [type="submit"], button, html [type="button"] {
-    -webkit-appearance: button;
-    margin-top: 5px;
-    border-radius: 0px;
-    background-color: #2d96fa;
-    border: none;
-    color: #fff;
-}
-
-#step {
-    width: 100%;
-    margin: 0 ;
-    padding: 0 ;
-}
-
-#step li {
-    display: inline;
-}
-
-#step li a, #step  li a:hover, #step li a:focus {
-    width: 146.5px;
-    background-color: #E3E9EB;
-    color:#8D8888;
-    font-family: "PlayfairDisplayReg";
-    font-size: 22px;
-    display: inline-block;
-    text-align: center;
-    text-decoration: none;
-}
-
-#step li a.active {
-    text-decoration: none;
-    background-color: #2D96FA;
-    color:#FFFFFF;
-}
-
-#step li a.validate {
-    text-decoration: none;
-    background-color: #000000;
-    color:#ffffff;
-}
-
-.step_desc {
-    padding: 15px;
-    margin-bottom: 15px;
-}
-
-.step_title{
-    font-family: "PlayfairDisplayRed";
-    font-size: 25px;
-    padding-bottom: 10px;
-}
-
-.step_step {
-    padding-bottom: 10px;
-    color: #8D8889;
-    font-size: 15px;
-}
-
-.step_step_desc {
-    padding: 15px;
-    margin-bottom: 15px;
-    margin-left: -150px;
-    margin-right: -150px;
-}
-
-.compound{
-    background-color: #E3E9EB;
-    margin-left: -60%;
-    margin-right: -60%;
-    padding: 5%;
-}
-
-.compound h1 {
-    text-align: left;
-    color: #414144;
-    font-size: 42px;
-    padding-bottom: 1%;
-}
-
-.compound h2 {
-    text-align: left;
-    padding-bottom: 1%;
-}
-
-.compound_input {
-    margin-bottom: 5px;
-}
-
-#compound_mol {
-    overflow: hidden;
-    display: flex;
-    padding-bottom: 5px;
-}
-
-/* Background image classes */
-.compound_radio_smiles input {
-    display:none;
-}
-
-.compound_radio_smiles label span{
-  display: inline-block;
-  width: 350px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/Other/SMILESIcon.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-  opacity: 0.5;
-
-} 
-
-.compound_radio_smiles input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/Other/SMILESIcon.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-    opacity: 1.0;
-}
-
-.compound_radio_smiles input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/Other/SMILESIcon.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-    opacity: 1.0;
-}
-
-.compound_radio_iupac input {
-    display:none;
-}
-
-.compound_radio_iupac label span{
-  display: inline-block;
-  width: 350px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/Other/IUPACIcon.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-  opacity: 0.5;
-
-} 
-
-.compound_radio_iupac input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/Other/IUPACIcon.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-    opacity: 1.0;
-}
-
-.compound_radio_iupac input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/Other/IUPACIcon.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-    opacity: 1.0;
-}
-
-.compound_radio_sketch input {
-    display:none;
-}
-
-.compound_radio_sketch label span{
-  display: inline-block;
-  width: 350px;
-  text-align: center;
-  background-color: #FFFFFF;
-  background-image: url('/static/images/Other/SketchIcon.png');
-  background-position: center;
-  background-repeat: no-repeat;
-  height: 214px;
-  font-size: 12px;
-  opacity: 0.5;
-
-} 
-
-.compound_radio_sketch input:hover+label span{
-    cursor: pointer;
-    background-color: #FFFFFF;
-    background-image: url('/static/images/Other/SketchIcon.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-    opacity: 1.0;
-}
-
-.compound_radio_sketch input[type="radio"]:checked+label span{
-    background-color: #FFFFFF;
-    background-image: url('/static/images/Other/SketchIcon.png');
-    background-position: center;
-    background-repeat: no-repeat;
-    color: #000000;
-    border-bottom: 1px solid #2D96FA;
-    border-top: 1px solid #E3E9EB;
-    border-left: 1px solid #E3E9EB;
-    border-right: 1px solid #E3E9EB;
-    opacity: 1.0;
-}
-
-.small_icon {
-    width:30%;
-}
-
-.add_form div{
-    background-color: #8D8889;
-    color: #FFFFFF;
-}
-
-.add_form div:hover{
-    cursor: pointer;
-    background-color: #484848;
-    color: #FFFFFF;
-}
-
-.add_form div:active {
-    background-color: #484848;
-}
-
-.add_field_button{
-    width:10%;
-}
-
-.remove_field{
-    width:10%;
-}
-
-/* CONTENT */
-
-#content{
-	min-height: 1300px;
-    margin-bottom: 50px;
-}
-
-
-#type_style {
-    background-color: rgb(227, 233, 235);
-    padding: 10px;
-    margin: 10px;
-    margin-left: -81px;
-    margin-right: -81px;
-}
-
-#type_title h1{
-    text-align: left;
-    color: #414144;
-    font-size: 42px;
-}
-
-/* PARAGRAPH */
-.paragraph {
-    border: 1px solid #E8E0E0;
-    padding: 10px;
-}
-
-.paragraph h2 {
-    text-align: center;
-    font-family: BrandonGrotesqueBld;
-    font-size: 24px;
-    padding-bottom: 10px;
-}
-
-.paragraph ul {
-    padding-left: 30px;
-}
-
-/* FOOTER */
-
-.main-footer {
-	padding: 80px 0px;
-	background: #211B1D none repeat scroll 0% 0%;
-	color: #FFF;
-	font: 12px "BrandonGrotesqueReg","Arial","Helvetica",sans-serif;
-line-height: 21px;
-}
-
-.main-footer a {
-	color: #FFF;
-}
-
-.inner-wrap {
-	max-width: 1200px;
-	margin: 0px auto;
-	position: relative;
-}
-
-.footer__address::before {
-    content: "";
-    display: inline-block;
-    vertical-align: middle;
-    background: transparent url("https://www.pasteur.fr/sites/all/themes/custom/pasteur/assets/img/map.png") no-repeat scroll left top;
-    width: 152px;
-    height: 153px;
-    margin-right: 40px;
-    float: left;
-}
-
-.clearfix::after {
-    content: ".";
-    display: block;
-    height: 0px;
-    clear: both;
-    visibility: hidden;
-}
-
-.footer__address {
-    margin-right: 40px;
-    display: inline-block;
-    vertical-align: middle;
-    min-width: 400px;
-}
-
-.footer__address .block {
-    display: block;
-    margin-top: -15px;
-}
-
-.footer__address .footer__logo {
-    display: inline-block;
-    margin-top: 20px;
-}
-
-.footer__address .block {
-    display: block;
-    margin-top: -15px;
-}
-
-.footer__section {
-    display: inline-block;
-    vertical-align: middle;
-}
-
-.footer__menu-social, .footer__menu-2, .footer__menu-1 {
-    vertical-align: top;
-    min-height: 172px;
-    border-left: 1px solid #2D96FA;
-	padding: 10px 50px;
-}
-
-.footer__menu-social .content {
-    text-align: center;
-}
-
-.footer__menu-social .content li {
-    margin-bottom: 15px;
-}
-
-.footer__menu-social .content a {
-    display: inline-block;
-    vertical-align: middle;
-    text-indent: -9999px;
-}
-
-.footer__menu-social ul, .footer__menu-2 ul, .footer__menu-1 ul {
-    list-style: outside none none;
-    margin: 0px;
-    padding: 0px;
-    border: 0px none;
-
-}
-
-.footer__menu-2 li, .footer__menu-1 li {
-    margin-bottom: 8px;
-}
-
-.footer__menu-social a, .footer__menu-2 a, .footer__menu-1 a {
-    text-transform: uppercase;
-    text-decoration: none;
-}
-
-.footer__menu-2 a:hover, .footer__menu-1 a:hover {
-    text-transform: uppercase;
-    text-decoration: underline;
-
-}
-
-.footer__menu-2 a:focus, .footer__menu-1 a:focus {
-    text-transform: uppercase;
-    text-decoration: underline;
-
-}
-
-.footer__menu-2 a:active, .footer__menu-1 a:active {
-    text-transform: uppercase;
-    text-decoration: underline;
-
-}
-
-.main-footer .donate a {
-    color: #2D96FA;
-	font-family:"BrandonGrotesqueBld";
-}
-
-.suivre_pasteur_facebook {
-    background-image: url("https://www.pasteur.fr/sites/all/themes/custom/pasteur/assets/img/sprites.png?0afff4d5b47e28179e26b2749a597aee");
-    background-position: -230px -28px;
-    width: 11px;
-    height: 20px;
-}
-
-.suivre_pasteur_linkedin {
-    background-image: url("https://www.pasteur.fr/sites/all/themes/custom/pasteur/assets/img/sprites.png?0afff4d5b47e28179e26b2749a597aee");
-    background-position: -167px -177px;
-    width: 15px;
-    height: 15px;
-}
-
-.suivre_pasteur_twitter {
-    background-image: url("https://www.pasteur.fr/sites/all/themes/custom/pasteur/assets/img/sprites.png?0afff4d5b47e28179e26b2749a597aee");
-    background-position: -100px -177px;
-    width: 19px;
-    height: 16px;
-}
 
+/*  MAIN  */
 
+@import url("fonts.css");
+@import url("admin-session.css");
+@import url("main.css");
\ No newline at end of file
diff --git a/ippisite/ippidb/static/js/ippidb.js b/ippisite/ippidb/static/js/ippidb.js
index ab49dfd1..ee11cdba 100644
--- a/ippisite/ippidb/static/js/ippidb.js
+++ b/ippisite/ippidb/static/js/ippidb.js
@@ -41,4 +41,4 @@ $(document).ready(function(){
     }).on('click','.box--active',function() {
       $(this).removeClass('box--active');
     })
-});
\ No newline at end of file
+});
diff --git a/ippisite/ippidb/templates/BibliographyForm.html b/ippisite/ippidb/templates/BibliographyForm.html
index b221e936..7b48a540 100644
--- a/ippisite/ippidb/templates/BibliographyForm.html
+++ b/ippisite/ippidb/templates/BibliographyForm.html
@@ -2,23 +2,25 @@
 {% load i18n %}
 
 {% block form %}
-<div id="step">
-	<ul>
-		<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
-		<li><a class="active" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
-		<li><a href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
-		<li><a href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
-		<li><a href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
-		<li><a href='/admin-session/add/PPIForm/'>{% trans "PPI" %}</a></li>
-		<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
-		<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
-	</ul>
-</div>
+<nav>
+	<div class="step_nav">
+		<ul>
+			<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
+			<li><a class="active" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
+			<li><a href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
+			<li><a href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
+			<li><a href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
+			<li><a href='/admin-session/add/PpiForm/'>{% trans "PPI" %}</a></li>
+			<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
+			<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
+		</ul>
+	</div>
+</nav>
 <div id="Form">
 	<div class="step_desc">
 		<h1 class="step_title">Bibliography informations</h1>
 	<p class="step_step">Step {{ wizard.steps.step1 }} on {{ wizard.steps.count }}</p>
-	<p> According to the ID you gave, here are the informations that we collect. Could you complete informations contained in it. </p>
+	<p class="step_step_desc"> According to the ID you gave, here are the informations that we collect. Could you complete informations contained in it. </p>
 	</div>
 	<div class="form_div">
 		<form action="" method="post">
@@ -77,8 +79,8 @@
 				</div>
 			{% endif %}
 			</table>
-			<input type="submit" value="{% trans "Next step" %}"/>
-			<a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a>
+			<input class="submit_button" type="submit" value="{% trans "Next step" %}"/>
+			<div class="clear_button"><a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a></div>
 		</form>
 	</div>
 </div>
diff --git a/ippisite/ippidb/templates/CompoundForm.html b/ippisite/ippidb/templates/CompoundForm.html
index 418ed37b..db55d706 100644
--- a/ippisite/ippidb/templates/CompoundForm.html
+++ b/ippisite/ippidb/templates/CompoundForm.html
@@ -2,23 +2,25 @@
 {% load i18n %}
 
 {% block form %}
-<div id="step">
-	<ul>
-		<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/PPIForm/'>{% trans "PPI" %}</a></li>
-		<li><a class="active" href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
-		<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
-	</ul>
-</div>
+<nav>
+	<div class="step_nav">
+		<ul>
+			<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/PpiForm/'>{% trans "PPI" %}</a></li>
+			<li><a class="active" href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
+			<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
+		</ul>
+	</div>
+</nav>
 <div id="Form">
 	<div class="step_desc">
 		<h1 class="step_title">Sketch your compounds</h1>
 	<p class="step_step">Step {{ wizard.steps.step1 }} on {{ wizard.steps.count }}</p>
-	<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate felis ac augue pretium, ac blandit lectus mattis. Vestibulum iaculis consequat facilisis. Duis porttitor erat mauris, non porttitor eros feugiat eu. Pellentesque id nisl vel nisl imperdiet convallis vel sed lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec dolor urna, posuere vitae leo quis, hendrerit imperdiet enim. Nunc nec euismod nisi. Phasellus ut ante ante.</p>
+	<p class="step_step_desc">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate felis ac augue pretium, ac blandit lectus mattis. Vestibulum iaculis consequat facilisis. Duis porttitor erat mauris, non porttitor eros feugiat eu. Pellentesque id nisl vel nisl imperdiet convallis vel sed lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec dolor urna, posuere vitae leo quis, hendrerit imperdiet enim. Nunc nec euismod nisi. Phasellus ut ante ante.</p>
 	</div>
 	<div class="form_div">
 		<form action="" method="post">
@@ -30,37 +32,16 @@
 				{{ wizard.form.management_form }}
 				<div class="compound">
 				{% for form in wizard.form.forms %}
-				 	{% if forloop.first %}
 						<div id="compound_{{ form.compound_name.id_for_label }}">
-							<h1 id="Name_{{ form.compound_name.id_for_label }}">Compound</h1>
-							<h2>Name your compound</h2>
-							<div class="compound_input">{{ form.common_name }}</div>
-							<div class="compound_input">{{ form.compound_name }}</div>
-							<h2>Choose a format to import your molecule</h2>
-							<div id="compound_mol">
-								{% for radio in form.molecule %}
-								<div class="compound_radio_{{ radio.choice_label }}">
-									{{ radio.tag }}
-									<label for="{{ radio.id_for_label }}">
-										<span>{{ radio.choice_label }}</span>
-									</label>
-								</div>
-								{% endfor %}
-							</div>
-							<div id="molecule_comp_{{ form.molecule.id_for_label }}">
-								{{form.molecule_comp}}
+							<div id="type_title">
+								<h1 id="Name_{{ form.compound_name.id_for_label }}">Compound</h1>
+								<h2>Name your compound</h2>
 							</div>
-							<div id="ck-button-long" class="compound_input">
-								<label>{{ form.is_macrocycle}}<span>{{ form.is_macrocycle.label }}</span></label>
-							</div>
-						</div>
-					{% else %}
-						<div id="compound_{{ form.compound_name.id_for_label }}">
-							<h1 id="Name_{{ form.compound_name.id_for_label }}">Compound</h1>
-							<h2>Name your compound</h2>
 							<div class="compound_input">{{ form.common_name }}</div>
 							<div class="compound_input">{{ form.compound_name }}</div>
-							<h2>Choose a format to import your molecule</h2>
+							<div id="type_title">
+								<h2>Choose a format to import your molecule</h2>
+							</div>
 							<div id="compound_mol">
 								{% for radio in form.molecule %}
 								<div class="compound_radio_{{ radio.choice_label }}">
@@ -78,10 +59,6 @@
 								<label>{{ form.is_macrocycle}}<span>{{ form.is_macrocycle.label }}</span></label>
 							</div>
 						</div>
-						<div id="ck-button-long" class="compound_input">
-							<label>{{ form.DELETE}}<span>Remove compound</span></label>
-						</div>
-					{% endif %}
 				{% endfor %}
 			</div>
 			<!--<div class="add_form">
@@ -95,4 +72,4 @@
 		</form>
 	</div>
 </div>
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/ippisite/ippidb/templates/IdForm.html b/ippisite/ippidb/templates/IdForm.html
index 672bb189..91446507 100644
--- a/ippisite/ippidb/templates/IdForm.html
+++ b/ippisite/ippidb/templates/IdForm.html
@@ -2,23 +2,25 @@
 {% load i18n %}
 
 {% block form %}
-<div id="step">
-	<ul>
-		<li><a class="active" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
-		<li><a href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
-		<li><a href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
-		<li><a href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
-		<li><a href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
-		<li><a href='/admin-session/add/PPIForm/'>{% trans "PPI" %}</a></li>
-		<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
-		<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
-	</ul>
-</div>
+<nav>
+	<div class="step_nav">
+		<ul>
+			<li><a class="active" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
+			<li><a href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
+			<li><a href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
+			<li><a href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
+			<li><a href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
+			<li><a href='/admin-session/add/PpiForm/'>{% trans "PPI" %}</a></li>
+			<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
+			<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
+		</ul>
+	</div>
+</nav>
 <div id="Form">
 	<div class="step_desc">
 	<h1 class="step_title">Let's get started!</h1>
 	<p class="step_step">Step {{ wizard.steps.step1 }} on {{ wizard.steps.count }}</p>
-	<p> Please provide a valid ID for your bibliographic source, either a PubMed ID or WIPO ID. This ID should correspond to a bibliographic source in its final format. Therefore, PubMed articles in « Just Accepted » format should not be used as a source of data as they are not considered the official version of record. </p>
+	<p class="step_step_desc"> Please provide a valid ID for your bibliographic source, either a PubMed ID or WIPO ID. This ID should correspond to a bibliographic source in its final format. </br>Therefore, PubMed articles in « Just Accepted » format should not be used as a source of data as they are not considered the official version of record. </p>
 	</div>
 	<div class="form_div">
 		<form action="" method="post">
@@ -44,12 +46,12 @@
 					    		</label>
 						{% endfor %}
 					</div>
-					{{ wizard.form.id_source}}
+					<div class="input_field">{{ wizard.form.id_source}}</div>
 				</div>
 			{% endif %}
 			</table>
-			<input type="submit" value="{% trans "Get Infos" %}"/>
-			<a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a>
+			<input class="submit_button" type="submit" value="{% trans "Get Infos" %}"/>
+			<div class="clear_button"><a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a></div>
 		</form>
 	</div>
 </div>
diff --git a/ippisite/ippidb/templates/PDBForm.html b/ippisite/ippidb/templates/PDBForm.html
index 042ccf6a..f9259f85 100644
--- a/ippisite/ippidb/templates/PDBForm.html
+++ b/ippisite/ippidb/templates/PDBForm.html
@@ -2,23 +2,25 @@
 {% load i18n %}
 
 {% block form %}
-<div id="step">
-	<ul>
-		<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
-		<li><a class="active" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
-		<li><a href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
-		<li><a href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
-		<li><a href='/admin-session/add/PPIForm/'>{% trans "PPI" %}</a></li>
-		<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
-		<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
-	</ul>
-</div>
+<nav>
+	<div class="step_nav">
+		<ul>
+			<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
+			<li><a class="active" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
+			<li><a href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
+			<li><a href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
+			<li><a href='/admin-session/add/PpiForm/'>{% trans "PPI" %}</a></li>
+			<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
+			<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
+		</ul>
+	</div>
+</nav>
 <div id="Form">
 	<div class="step_desc">
 		<h1 class="step_title">Your PDB ID please</h1>
 	<p class="step_step">Step {{ wizard.steps.step1 }} on {{ wizard.steps.count }}</p>
-	<p>Please provide a valid PDB code that contains the structure of the full PPI complex for which you have data. The information within the PDB file will be used to prefill information of the corresponding proteins and domains participating to the PPI.</p>
+	<p class="step_step_desc">Please provide a valid PDB code that contains the structure of the full PPI complex for which you have data. The information within the PDB file will be used to prefill information of the corresponding proteins and domains participating to the PPI.</p>
 	</div>
 	<div class="form_div">
 		<form action="" method="post">
@@ -34,11 +36,11 @@
 				    test {{ form }}
 				{% endfor %}
 			{% else %}
-				{{form.pdb_id}}
+				<div class="input_field">{{form.pdb_id}}</div>
 			{% endif %}
 			</table>
-			<input type="submit" value="{% trans "Next step" %}"/>
-			<a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a>
+			<input class="submit_button" type="submit" value="{% trans "Next step" %}"/>
+			<div class="clear_button"><a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a></div>
 		</form>
 	</div>
 </div>
diff --git a/ippisite/ippidb/templates/PpiForm.html b/ippisite/ippidb/templates/PpiForm.html
index 901283db..a49c8de0 100644
--- a/ippisite/ippidb/templates/PpiForm.html
+++ b/ippisite/ippidb/templates/PpiForm.html
@@ -2,23 +2,25 @@
 {% load i18n %}
 
 {% block form %}
-<div id="step">
-	<ul>
+<nav>
+	<div class="step_nav">
+		<ul>
 		<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
 		<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
 		<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
 		<li><a class="validate" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
 		<li><a class="validate" href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
-		<li><a class="active" href='/admin-session/add/PPIForm/'>{% trans "PPI" %}</a></li>
+		<li><a class="active" href='/admin-session/add/PpiForm/'>{% trans "PPI" %}</a></li>
 		<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
 		<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
-	</ul>
-</div>
+		</ul>
+	</div>
+</nav>
 <div id="Form">
 	<div class="step_desc">
 		<h1 class="step_title">PPI symmetry</h1>
 	<p class="step_step">Step {{ wizard.steps.step1 }} on {{ wizard.steps.count }}</p>
-	<p>You have selected a <span style="color:#2d96fa;">{{ complex_type }}</span> that is <span style="color:#2d96fa;">{{ complex_choice }}</span> by the binding of PPI modulator. <br/>
+	<p class="step_step_desc">You have selected a <span style="color:#2d96fa;">{{ complex_type }}</span> that is <span style="color:#2d96fa;">{{ complex_choice }}</span> by the binding of PPI modulator. <br/>
 	Now that you have created a complexe that participate to the formation of the PPI, please choose the stoichiometry of the PPI.</p>
 	</div>
 	<div class="form_div">
@@ -37,14 +39,16 @@
 			{% else %}
 			<div class="inline_box_complex">
 				<div class="inline_label"> PPI: </div>
-				<div>{{ wizard.form.pdb_id }}</div>
+				<div class="input_field">{{ wizard.form.pdb_id }}</div>
 				<div class="inline_field">{{ wizard.form.cc_nb }}</div>
 				<div class="inline_field">{{ wizard.form.symmetry }}</div>
 			</div>
 			{% endif %}
 			</table>
-			<input type="submit" value="{% trans "Next step" %}"/>
-			<a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a>
+
+			<input type="hidden" name="ippi_wizard-current_step" value="PpiAndPpiComplexForm" id="id_ippi_wizard-current_step"/>
+			<input class="submit_button" type="submit" name="{{ wizard.steps.next }}" value="{% trans "Next step" %}"/>
+			<div class="clear_button"><a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a></div>
 		</form>
 	<div>
 </div>
diff --git a/ippisite/ippidb/templates/ProteinDomainComplexForm.html b/ippisite/ippidb/templates/ProteinDomainComplexForm.html
index c416505e..2416f188 100644
--- a/ippisite/ippidb/templates/ProteinDomainComplexForm.html
+++ b/ippisite/ippidb/templates/ProteinDomainComplexForm.html
@@ -2,24 +2,25 @@
 {% load i18n %}
 
 {% block form %}
-<div id="step">
-	<ul>
-		<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
-		<li><a class="active" href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
-		<li><a href='/admin-session/add/PPIForm/'>{% trans "PPI" %}</a></li>
-		<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
-		<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
-	</ul>
-</div>
-
+<nav>
+	<div class="step_nav">
+		<ul>
+			<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
+			<li><a class="active" href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
+			<li><a href='/admin-session/add/PpiForm/'>{% trans "PPI" %}</a></li>
+			<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
+			<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
+		</ul>
+	</div>
+</nav>
 <div id="Form">
 	<div class="step_step_desc">
 		<h1 class="step_title">Bound and Partner</h1>
 		<p class="step_step">Step {{ wizard.steps.step1 }} on {{ wizard.steps.count }}</p>
-		<p>You have selected a <span style="color:#2d96fa;">{{ complex_type }}</span> that is <span style="color:#2d96fa;">{{ complex_choice }}</span> by the binding of PPI modulator.<br/>
+		<p class="step_step_desc">You have selected a <span style="color:#2d96fa;">{{ complex_type }}</span> that is <span style="color:#2d96fa;">{{ complex_choice }}</span> by the binding of PPI modulator.<br/>
 			According to this architecture you need to specify:<br/>
 		</p>
 	</div>
@@ -48,8 +49,8 @@
 			{% endif %}
 			<input type="hidden" name="ippi_wizard-current_step" value="ProteinDomainComplexForm" id="id_ippi_wizard-current_step"/>
 			</table>
-			<input type="submit" name="{{ wizard.steps.next }}" value="{% trans "Next step" %}"/>
-			<a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a>
+			<input class="submit_button" type="submit" name="{{ wizard.steps.next }}" value="{% trans "Next step" %}"/>
+			<div class="clear_button"><a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a></div>
 		</form>
 	</div>
 </div>
diff --git a/ippisite/ippidb/templates/ProteinDomainComplexTypeForm.html b/ippisite/ippidb/templates/ProteinDomainComplexTypeForm.html
index 919d2cfe..49a026f7 100644
--- a/ippisite/ippidb/templates/ProteinDomainComplexTypeForm.html
+++ b/ippisite/ippidb/templates/ProteinDomainComplexTypeForm.html
@@ -2,23 +2,25 @@
 {% load i18n %}
 
 {% block form %}
-<div id="step">
-	<ul>
-		<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
-		<li><a class="active" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
-		<li><a href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
-		<li><a href='/admin-session/add/PPIForm/'>{% trans "PPI" %}</a></li>
-		<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
-		<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
-	</ul>
-</div>
+<nav>
+	<div class="step_nav">
+		<ul>
+			<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
+			<li><a class="active" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
+			<li><a href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
+			<li><a href='/admin-session/add/PpiForm/'>{% trans "PPI" %}</a></li>
+			<li><a href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
+			<li><a href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
+		</ul>
+	</div>
+</nav>
 <div id="Form">
 	<div class="step_desc">
 		<h1 class="step_title">Which architecture fits your PPI?</h1>
 	<p class="step_step">Step {{ wizard.steps.step1 }} on {{ wizard.steps.count }}</p>
-	<p>Now you need to select an architecture for the PPI complex among the proposed schematics below.</br>
+	<p class="step_step_desc">Now you need to select an architecture for the PPI complex among the proposed schematics below.</br>
 If your PPI complex is not among them, please select « Custom »</p>
 	</div>
 		<div class="form_div">
@@ -88,8 +90,8 @@ If your PPI complex is not among them, please select « Custom »</p>
 				</div>
 			{% endif %}
 			</table>
-				<input type="submit" value="{% trans "Next step" %}"/>
-				<a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a>
+				<input class="submit_button" type="submit" value="{% trans "Next step" %}"/>
+				<div class="clear_button"><a href="{% url 'ippidb' %}?reset" class="clear_all">Clear all</a></div>
 		</form>
 	</div>
 </div>
diff --git a/ippisite/ippidb/templates/TestsForm.html b/ippisite/ippidb/templates/TestsForm.html
index 1a8eb21c..769a7ecc 100644
--- a/ippisite/ippidb/templates/TestsForm.html
+++ b/ippisite/ippidb/templates/TestsForm.html
@@ -2,23 +2,25 @@
 {% load i18n %}
 
 {% block form %}
-<div id="step">
-	<ul>
-		<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/PPIForm/'>{% trans "PPI" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
-		<li><a class="active" href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
-	</ul>
-</div>
+<nav>
+	<div class="step_nav">
+		<ul>
+			<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/PpiForm/'>{% trans "PPI" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
+			<li><a class="active" href='/admin-session/add/TestsForm/'>{% trans "Tests" %}</a></li>
+		</ul>
+	</div>
+</nav>
 <div id="Form">
 	<div class="step_desc">
 		<h1 class="step_title">Tests performed</h1>
 	<p class="step_step">Step {{ wizard.steps.step1 }} on {{ wizard.steps.count }}</p>
-	<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate felis ac augue pretium, ac blandit lectus mattis. Vestibulum iaculis consequat facilisis. Duis porttitor erat mauris, non porttitor eros feugiat eu. Pellentesque id nisl vel nisl imperdiet convallis vel sed lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec dolor urna, posuere vitae leo quis, hendrerit imperdiet enim. Nunc nec euismod nisi. Phasellus ut ante ante.</p>
+	<p class="step_step_desc">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate felis ac augue pretium, ac blandit lectus mattis. Vestibulum iaculis consequat facilisis. Duis porttitor erat mauris, non porttitor eros feugiat eu. Pellentesque id nisl vel nisl imperdiet convallis vel sed lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec dolor urna, posuere vitae leo quis, hendrerit imperdiet enim. Nunc nec euismod nisi. Phasellus ut ante ante.</p>
 	</div>
 	<div class="form_div">
 		<form action="" method="post">
diff --git a/ippisite/ippidb/templates/about.html b/ippisite/ippidb/templates/about.html
index 6bd09a8e..799b0641 100644
--- a/ippisite/ippidb/templates/about.html
+++ b/ippisite/ippidb/templates/about.html
@@ -28,10 +28,10 @@
 {% endblock %}
 
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
         <div aria-labelledby="breadcrumb-label">
-        	{% block breadcrumb %} {{block.super}} About {% endblock %} 
+        	{% block breadcrumb %} {{block.super}}About{% endblock %} 
         </div>
     </nav>
 	<div id="main-wrapper" class="page">
diff --git a/ippisite/ippidb/templates/add.html b/ippisite/ippidb/templates/add.html
index 6f2409e1..b2489c5f 100644
--- a/ippisite/ippidb/templates/add.html
+++ b/ippisite/ippidb/templates/add.html
@@ -22,10 +22,10 @@
     </nav>
 </div>
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
-        <div aria-labelledby="breadcrumb-label">
-        	{% block breadcrumb %} {{block.super}} > <a href="/admin-session/add/IdForm"> Add New Content </a>{% endblock %} 
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
+        <div aria-labelledby="breadNav-label">
+        	{% block breadcrumb %}<a href="/admin-session" class="breadNav-link">{{block.super}}</a> > Add New Content {% endblock %} 
         </div>
     </nav>
 	<div id="main-wrapper" class="page">
diff --git a/ippisite/ippidb/templates/admin-session.html b/ippisite/ippidb/templates/admin-session.html
index ba96a0ad..21d659b6 100644
--- a/ippisite/ippidb/templates/admin-session.html
+++ b/ippisite/ippidb/templates/admin-session.html
@@ -9,7 +9,7 @@
         <div class="inner-wrap">
             <ul>
             	<li>
-                    <a href="">View Content</a>
+                    <a href="/queries">View Content</a>
                 </li>
                 <li>
                     <a href="/admin-session/add/IdForm">Add New Content</a>
@@ -22,10 +22,10 @@
     </nav>
 </div>
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
-        <div aria-labelledby="breadcrumb-label">
-            {% block breadcrumb %} {{block.super}} Admin {% endblock %} 
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
+        <div aria-labelledby="breadNav-label">
+            {% block breadcrumb %}{{block.super}}Admin{% endblock %} 
         </div>
     </nav>
     <div id="main-wrapper" class="page">
diff --git a/ippisite/ippidb/templates/base.html b/ippisite/ippidb/templates/base.html
index 100aacd2..c02bdef5 100644
--- a/ippisite/ippidb/templates/base.html
+++ b/ippisite/ippidb/templates/base.html
@@ -24,7 +24,7 @@
     </head>
 
     <body>    
-        <div class="jumbotron">
+        <div class="jumbotron logoJum">
             <div class="container">
                 <a href="/" id="home">
                         <h1 class="display-3">iPPI-DB</h1>
diff --git a/ippisite/ippidb/templates/compound_list.html b/ippisite/ippidb/templates/compound_list.html
index e72f4df2..bf135d8f 100644
--- a/ippisite/ippidb/templates/compound_list.html
+++ b/ippisite/ippidb/templates/compound_list.html
@@ -19,10 +19,10 @@
     </nav>
 </div>
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
         <div aria-labelledby="breadcrumb-label">
-          {% block breadcrumb %} {{block.super}}> <a href="/compound/">By compounds</a>{% endblock %} 
+          {% block breadcrumb %} <a href="/compound/" class="breadNav-link">{{block.super}}</a> > By compounds</a>{% endblock %} 
         </div>
     </nav>
 </div>
diff --git a/ippisite/ippidb/templates/done.html b/ippisite/ippidb/templates/done.html
index 6cda4306..b72aceab 100644
--- a/ippisite/ippidb/templates/done.html
+++ b/ippisite/ippidb/templates/done.html
@@ -2,18 +2,20 @@
 {% load i18n %}
 
 {% block form %}
-<div id="step">
-	<ul>
-		<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/PPIForm/'>{% trans "PPI" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
-		<li><a class="validate" href='/admin-session/add/ActivityForm/'>{% trans "Activity" %}</a></li>
-	</ul>
-</div>
+<nav>
+	<div class="step_nav">
+		<ul>
+			<li><a class="validate" href='/admin-session/add/IdForm/'>{% trans "ID" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/BibliographyForm/'>{% trans "Bibliography" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/PDBForm/'>{% trans "PDB id" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/ProteinDomainComplexTypeForm/'>{% trans "Architecture" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/ProteinDomainComplexForm/'>{% trans "Composition" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/PpiForm/'>{% trans "PPI" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/CompoundForm/'>{% trans "Compounds" %}</a></li>
+			<li><a class="validate" href='/admin-session/add/ActivityForm/'>{% trans "Activity" %}</a></li>
+		</ul>
+	</div>
+</nav>
 <div id="Form">
 	<div class="last_step">
 		<div class="form_div">
diff --git a/ippisite/ippidb/templates/drug-candidate.html b/ippisite/ippidb/templates/drug-candidate.html
index f6d5d96e..de945b3e 100644
--- a/ippisite/ippidb/templates/drug-candidate.html
+++ b/ippisite/ippidb/templates/drug-candidate.html
@@ -25,10 +25,10 @@
     </nav>
 </div>
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
         <div aria-labelledby="breadcrumb-label">
-        	{% block breadcrumb %} {{block.super}} > Drug candidate {% endblock %} 
+          {% block breadcrumb %} <a href="/compound/" class="breadNav-link">{{block.super}}</a> > Drug candidate {% endblock %} 
         </div>
     </nav>
 	<div id="main-wrapper" class="page">
diff --git a/ippisite/ippidb/templates/general.html b/ippisite/ippidb/templates/general.html
index 792716bf..e5cb9c34 100644
--- a/ippisite/ippidb/templates/general.html
+++ b/ippisite/ippidb/templates/general.html
@@ -25,10 +25,10 @@
     </nav>
 </div>
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
+        <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
         <div aria-labelledby="breadcrumb-label">
-        	{% block breadcrumb %} {{block.super}} > General informations {% endblock %} 
+          {% block breadcrumb %} <a href="/about" class="breadNav-link">{{block.super}}</a> > General informations {% endblock %} 
         </div>
     </nav>
 	<div id="main-wrapper" class="page">
diff --git a/ippisite/ippidb/templates/pharma.html b/ippisite/ippidb/templates/pharma.html
index e2eef6e8..84f18529 100644
--- a/ippisite/ippidb/templates/pharma.html
+++ b/ippisite/ippidb/templates/pharma.html
@@ -19,8 +19,8 @@
     </nav>
 </div>
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
         <div aria-labelledby="breadcrumb-label">
         		Fonction Fil d'Arianne
         </div>
diff --git a/ippisite/ippidb/templates/pharmacology.html b/ippisite/ippidb/templates/pharmacology.html
index fd4c21ef..1dc9ba5f 100644
--- a/ippisite/ippidb/templates/pharmacology.html
+++ b/ippisite/ippidb/templates/pharmacology.html
@@ -25,10 +25,10 @@
     </nav>
 </div>
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
         <div aria-labelledby="breadcrumb-label">
-        	{% block breadcrumb %} {{block.super}} > Pharmacology {% endblock %} 
+          {% block breadcrumb %} <a href="/about/" class="breadNav-link">{{block.super}}</a> > Pharmacology {% endblock %} 
         </div>
     </nav>
 	<div id="main-wrapper" class="page">
diff --git a/ippisite/ippidb/templates/physicochemistry.html b/ippisite/ippidb/templates/physicochemistry.html
index 7965b2fd..0f6a8309 100644
--- a/ippisite/ippidb/templates/physicochemistry.html
+++ b/ippisite/ippidb/templates/physicochemistry.html
@@ -25,10 +25,10 @@
     </nav>
 </div>
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
         <div aria-labelledby="breadcrumb-label">
-        	{% block breadcrumb %} {{block.super}} > Physicochemistry {% endblock %} 
+          {% block breadcrumb %} <a href="/about/" class="breadNav-link">{{block.super}}</a> > Physicochemistry {% endblock %} 
         </div>
     </nav>
 	<div id="main-wrapper" class="page">
diff --git a/ippisite/ippidb/templates/pockets.html b/ippisite/ippidb/templates/pockets.html
index 0bb9fbec..e9a31599 100644
--- a/ippisite/ippidb/templates/pockets.html
+++ b/ippisite/ippidb/templates/pockets.html
@@ -19,10 +19,10 @@
     </nav>
 </div>
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
         <div aria-labelledby="breadcrumb-label">
-          {% block breadcrumb %} {{block.super}}> <a href="/pockets/">By Pockets</a>{% endblock %} 
+          {% block breadcrumb %} <a href="/compound/" class="breadNav-link">{{block.super}}</a> > By Pockets{% endblock %} 
         </div>
     </nav>
 	<div id="main-wrapper" class="page">
diff --git a/ippisite/ippidb/templates/queries.html b/ippisite/ippidb/templates/queries.html
index b78b4ec5..002ecf74 100644
--- a/ippisite/ippidb/templates/queries.html
+++ b/ippisite/ippidb/templates/queries.html
@@ -19,10 +19,10 @@
     </nav>
 </div>
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
-        <div aria-labelledby="breadcrumb-label">
-            {% block breadcrumb %} {{block.super}} Queries {% endblock %} 
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
+        <div aria-labelledby="breadNav-label">
+            {% block breadcrumb %} {{block.super}}Queries{% endblock %} 
         </div>
     </nav>
 	<div id="main-wrapper" class="page">
diff --git a/ippisite/ippidb/templates/tutorials.html b/ippisite/ippidb/templates/tutorials.html
index 8691de99..d8093f17 100644
--- a/ippisite/ippidb/templates/tutorials.html
+++ b/ippisite/ippidb/templates/tutorials.html
@@ -5,10 +5,10 @@
 
 {% block content %}
 <div class="inner-wrap">
-    <nav class="breadcrumb" role="navigation">
-        <div id="breadcrumb-label" class="breadcrumb-label">You are here</div>
-        <div aria-labelledby="breadcrumb-label">
-        		Fonction Fil d'Arianne
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
+        <div aria-labelledby="breadNav-label">
+            {% block breadcrumb %} {{block.super}}Tutorials{% endblock %} 
         </div>
     </nav>
 	<div id="main-wrapper" class="page">
diff --git a/ippisite/ippidb/templates/update.html b/ippisite/ippidb/templates/update.html
new file mode 100644
index 00000000..e07debc9
--- /dev/null
+++ b/ippisite/ippidb/templates/update.html
@@ -0,0 +1,61 @@
+{% extends "admin-session.html" %}
+
+    
+{% block title %}inhibitors of Protein-Protein Interaction Database{% endblock %}
+
+{% block content %}
+<div id="mainnav">
+    <nav class="secondary-nav">
+        <div class="inner-wrap">
+            <ul>
+            	<li>
+                    <a href="/queries/">View Content</a>
+                </li>
+                <li>
+                    <a href="/admin-session/add/IdForm">Add New Content</a>
+                </li>
+                <li>
+                    <a href="/admin-session/update">Update Content</a>
+                </li>
+            </ul>
+        </div>
+    </nav>
+</div>
+<div class="inner-wrap">
+    <nav class="breadcrumb breadNav" role="navigation">
+        <div class="breadNav-label">You are here</div>
+        <div aria-labelledby="breadNav-label">
+        	{% block breadcrumb %}<a href="/admin-session" class="breadNav-link">{{block.super}}</a> > Update Content {% endblock %} 
+        </div>
+    </nav>
+    <div id="main-wrapper" class="page">
+        <div id="main">
+            <div id="content" class="main-content">
+                <div class="section">
+                    <main role="main">
+                        <h1 class="page-title"> UPDATE CONTENT </h1>
+                        <div class="tabs"></div>
+                        <div class="main__inner">
+                            <div class="region region-content">
+                                <div class="page-intro">
+                                </div>
+                                <div class="color-wrap">
+                                    <div class="region region-content">
+                                        <div class="block block-system block-system-main">
+                                            <div class="content">
+                                                <div class="view-content">
+                                                                                                            
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </main><!-- .site-main -->
+                </div>
+            </div>
+        </div><!-- div main -->
+    </div>
+</div>
+{% endblock %}
\ No newline at end of file
diff --git a/ippisite/ippidb/templates/update_files/ajax-loader.gif b/ippisite/ippidb/templates/update_files/ajax-loader.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a7c3f2bacbe630950c16f53e3c27dd840f2e8622
GIT binary patch
literal 404
zcmZ?wbhEHb)Mnsj_{hNU?%lhzw6s;LRsl)He^Smxsfi`2DGKG8B^e5dS&0=n`H3ld
znR#jX42nNl7`PZ17!?0=`?-b$J39ur8tEA@GXjNlfS3VfAOn+8OCQJSX*X{)e?H13
zeJ||u>DC8kZ4r?R)6{G4&Dyt|CtcU`diyE8Uq?3owA-;j!N^AxXd>8TMr31bj{uEP
z;7?56IIHFOnwrlu67PNQNtrQY{;7pt&RzvNJJ_?&Ze06Pg>MsMs)$s6#HZT6Q+}5p
z&C*E<I=&ueA`^;<Acq+MO<XxEEBa3UBYrO7?UfHJdzM^TuwobAGVVjKeUi;OpPxMU
z@@LSj8EZ_>81%TGdiiN4(8Lw%U?wsno9F=b>WnG7*rn?>{@R)9v%+M)yIi1FiTcrX
vD}VECG@HG3ZvWp+k0+)$$G&~0?NxTdRajt8g3>tw(O*m=3=Gzwa03GXAUBr*

literal 0
HcmV?d00001

diff --git a/ippisite/ippidb/templates/update_files/jquery.min.js b/ippisite/ippidb/templates/update_files/jquery.min.js
new file mode 100644
index 00000000..4024b662
--- /dev/null
+++ b/ippisite/ippidb/templates/update_files/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c;
+}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ca(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Fa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ba.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Oa(a,b,c||(g?"border":"content"),d,f)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),
+void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g,hb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(hb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var ib=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!ib.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,ib.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b)}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var jb=a.location,kb=n.now(),lb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var mb=/#.*$/,nb=/([?&])_=[^&]*/,ob=/^(.*?):[ \t]*([^\r\n]*)$/gm,pb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qb=/^(?:GET|HEAD)$/,rb=/^\/\//,sb={},tb={},ub="*/".concat("*"),vb=d.createElement("a");vb.href=jb.href;function wb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function xb(a,b,c,d){var e={},f=a===tb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function yb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function zb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Ab(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jb.href,type:"GET",isLocal:pb.test(jb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?yb(yb(a,n.ajaxSettings),b):yb(n.ajaxSettings,a)},ajaxPrefilter:wb(sb),ajaxTransport:wb(tb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=ob.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||jb.href)+"").replace(mb,"").replace(rb,jb.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=vb.protocol+"//"+vb.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),xb(sb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!qb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(lb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=nb.test(f)?f.replace(nb,"$1_="+kb++):f+(lb.test(f)?"&":"?")+"_="+kb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+ub+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);if(e=xb(tb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=zb(m,x,d)),u=Ab(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Bb=/%20/g,Cb=/\[\]$/,Db=/\r?\n/g,Eb=/^(?:submit|button|image|reset|file)$/i,Fb=/^(?:input|select|textarea|keygen)/i;function Gb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Cb.test(a)?d(a,e):Gb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Gb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Gb(c,a[c],b,e);return d.join("&").replace(Bb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Fb.test(this.nodeName)&&!Eb.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Db,"\r\n")}}):{name:b.name,value:c.replace(Db,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Hb={0:200,1223:204},Ib=n.ajaxSettings.xhr();l.cors=!!Ib&&"withCredentials"in Ib,l.ajax=Ib=!!Ib,n.ajaxTransport(function(b){var c,d;return l.cors||Ib&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Hb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Jb=[],Kb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Jb.pop()||n.expando+"_"+kb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Kb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Kb,"$1"+e):b.jsonp!==!1&&(b.url+=(lb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Jb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Lb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Lb)return Lb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Mb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Mb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Mb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Nb=a.jQuery,Ob=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Ob),b&&a.jQuery===n&&(a.jQuery=Nb),n},b||(a.jQuery=a.$=n),n});
diff --git a/ippisite/ippidb/templates/update_files/jquery_post.js b/ippisite/ippidb/templates/update_files/jquery_post.js
new file mode 100644
index 00000000..9e4c8bc6
--- /dev/null
+++ b/ippisite/ippidb/templates/update_files/jquery_post.js
@@ -0,0 +1,4 @@
+var djdt = {jQuery: jQuery.noConflict(true)};
+if (window.define) {
+    window.define.amd = _djdt_define_amd_backup;
+}
diff --git a/ippisite/ippidb/templates/update_files/jquery_pre.js b/ippisite/ippidb/templates/update_files/jquery_pre.js
new file mode 100644
index 00000000..cca2a0f2
--- /dev/null
+++ b/ippisite/ippidb/templates/update_files/jquery_pre.js
@@ -0,0 +1,5 @@
+var _djdt_define_amd_backup;
+if (window.define) {
+    _djdt_define_amd_backup = window.define.amd;
+    window.define.amd = undefined;
+}
diff --git a/ippisite/ippidb/templates/update_files/print.css b/ippisite/ippidb/templates/update_files/print.css
new file mode 100644
index 00000000..c9241e90
--- /dev/null
+++ b/ippisite/ippidb/templates/update_files/print.css
@@ -0,0 +1,3 @@
+#djDebug {
+  display:none;
+}
diff --git a/ippisite/ippidb/templates/update_files/toolbar.css b/ippisite/ippidb/templates/update_files/toolbar.css
new file mode 100644
index 00000000..6aa4f715
--- /dev/null
+++ b/ippisite/ippidb/templates/update_files/toolbar.css
@@ -0,0 +1,663 @@
+/* http://www.positioniseverything.net/easyclearing.html */
+#djDebug .djdt-clearfix:after {
+    content: ".";
+    display: block;
+    height: 0;
+    clear: both;
+    visibility: hidden;
+}
+#djDebug .djdt-clearfix {display: inline-block;}
+/* Hides from IE-mac \*/
+#djDebug .djdt-clearfix {display: block;}
+* html #djDebug .djdt-clearfix {height: 1%;}
+/* end hide from IE-mac */
+
+/* Debug Toolbar CSS Reset, adapted from Eric Meyer's CSS Reset */
+#djDebug {color:#000;background:#FFF;}
+#djDebug, #djDebug div, #djDebug span, #djDebug applet, #djDebug object, #djDebug iframe,
+#djDebug h1, #djDebug h2, #djDebug h3, #djDebug h4, #djDebug h5, #djDebug h6, #djDebug p, #djDebug blockquote, #djDebug pre,
+#djDebug a, #djDebug abbr, #djDebug acronym, #djDebug address, #djDebug big, #djDebug cite, #djDebug code,
+#djDebug del, #djDebug dfn, #djDebug em, #djDebug font, #djDebug img, #djDebug ins, #djDebug kbd, #djDebug q, #djDebug s, #djDebug samp,
+#djDebug small, #djDebug strike, #djDebug strong, #djDebug sub, #djDebug sup, #djDebug tt, #djDebug var,
+#djDebug b, #djDebug u, #djDebug i, #djDebug center,
+#djDebug dl, #djDebug dt, #djDebug dd, #djDebug ol, #djDebug ul, #djDebug li,
+#djDebug fieldset, #djDebug form, #djDebug label, #djDebug legend,
+#djDebug table, #djDebug caption, #djDebug tbody, #djDebug tfoot, #djDebug thead, #djDebug tr, #djDebug th, #djDebug td,
+#djDebug button {
+	margin:0;
+	padding:0;
+	min-width:0;
+	width:auto;
+	border:0;
+	outline:0;
+	font-size:12px;
+	line-height:1.5em;
+	color:#000;
+	vertical-align:baseline;
+	background-color:transparent;
+	font-family:sans-serif;
+	text-align:left;
+	text-shadow: none;
+	white-space: normal;
+	-webkit-transition: none;
+    -moz-transition: none;
+    -o-transition: none;
+    transition: none;
+}
+
+#djDebug button, #djDebug a.button {
+	background-color: #eee;
+	background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eee), color-stop(100%, #cccccc));
+	background-image: -webkit-linear-gradient(top, #eee, #cccccc);
+	background-image: -moz-linear-gradient(top, #eee, #cccccc);
+	background-image: -ms-linear-gradient(top, #eee, #cccccc);
+	background-image: -o-linear-gradient(top, #eee, #cccccc);
+	background-image: linear-gradient(top, #eee, #cccccc);
+	border: 1px solid #ccc;
+	border-bottom: 1px solid #bbb;
+	-webkit-border-radius: 3px;
+	-moz-border-radius: 3px;
+	border-radius: 3px;
+	color: #333;
+	line-height: 1;
+	padding: 0 8px;
+	text-align: center;
+	text-shadow: 0 1px 0 #eee;
+}
+
+#djDebug button:hover, #djDebug a.button:hover {
+    background-color: #ddd;
+    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ddd), color-stop(100%, #bbb));
+    background-image: -webkit-linear-gradient(top, #ddd, #bbb);
+    background-image: -moz-linear-gradient(top, #ddd, #bbb);
+    background-image: -ms-linear-gradient(top, #ddd, #bbb);
+    background-image: -o-linear-gradient(top, #ddd, #bbb);
+    background-image: linear-gradient(top, #ddd, #bbb);
+    border-color: #bbb;
+    border-bottom-color: #999;
+    cursor: pointer;
+    text-shadow: 0 1px 0 #ddd;
+}
+
+#djDebug button:active, #djDebug a.button:active {
+    border: 1px solid #aaa;
+    border-bottom: 1px solid #888;
+    -webkit-box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee;
+    -moz-box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee;
+    box-shadow: inset 0 0 5px 2px #aaa, 0 1px 0 0 #eee;
+}
+
+#djDebug #djDebugToolbar {
+	background-color:#111;
+	width:200px;
+	z-index:100000000;
+	position:fixed;
+	top:0;
+	bottom:0;
+	right:0;
+	opacity:0.9;
+	overflow-y: auto;
+}
+
+#djDebug #djDebugToolbar small {
+	color:#999;
+}
+
+#djDebug #djDebugToolbar ul {
+	margin:0;
+	padding:0;
+	list-style:none;
+}
+
+#djDebug #djDebugToolbar li {
+	border-bottom:1px solid #222;
+	color:#fff;
+	display:block;
+	font-weight:bold;
+	float:none;
+	margin:0;
+	padding:0;
+	position:relative;
+	width:auto;
+}
+
+#djDebug #djDebugToolbar input[type=checkbox] {
+	float: right;
+	margin: 10px;
+}
+
+#djDebug #djDebugToolbar li>a,
+#djDebug #djDebugToolbar li>div.djdt-contentless  {
+	font-weight:normal;
+	font-style:normal;
+	text-decoration:none;
+	display:block;
+	font-size:16px;
+	padding:10px 10px 5px 25px;
+	color:#fff;
+}
+#djDebug #djDebugToolbar li>div.djdt-disabled {
+	font-style: italic;
+	color: #999;
+}
+
+#djDebug #djDebugToolbar li a:hover {
+	color:#111;
+	background-color:#ffc;
+}
+
+#djDebug #djDebugToolbar li.djdt-active {
+	background: #333 no-repeat left center;
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAQAAAAngNWGAAABe0lEQVR4AW2SO0tDQRCFz+bGJxEUrKzsBBsb/4DYiIWdECvB/6CCYGtp6QNRjJ1FihSCVpZGMIhYSBAfIGKRx70xyY3JbrKOk7DJLp7DXm7Il9nMmREYQgQeAI1W1/zZUhR9ZI9gjSZb0iHMRSPbE1QzhhF2jN4H6YdRCHaPvOTjdDb1jWECBhiJoC1tg6Kotbw9WkxBoIUGaqiiQs8fSCj+t9qAIL1nlg9fKgSGKKNEJ2RUMqh7QCDIr58k31AlrIiA0CqhDTQJtUFAqsTFxjV85FGAz1XrkDZodPewkih8IkdwCRWu2U6VerQ0O3OzuTSJ/k62JiIXJI2NL0wBjDiTseQHW8fnGY6myf3+Dz49x88+vjr9SoPaoG6lLteuCApMiu1otAWG/s7BXtYEzv3yZOyrc5nV3XTZjPAv7Jqp2AVf9+dOyx4EFCTqCAnimZB1z9X38fk05RblfVQE1LkR5a6vwCivruANV2ynjU5FHpIE+AsCnCuNfgGtjt1gZaIn2wAAAABJRU5ErkJggg==");
+	padding-left:10px;
+}
+
+#djDebug #djDebugToolbar li.djdt-active a:hover {
+	color:#b36a60;
+	background-color:transparent;
+}
+
+#djDebug #djDebugToolbar li small {
+	font-size:12px;
+	color:#999;
+	font-style:normal;
+	text-decoration:none;
+	font-variant:small-caps;
+}
+
+#djDebug #djDebugToolbarHandle {
+	position:fixed;
+	background-color:#fff;
+	border:1px solid #111;
+	top:30px;
+	right:0;
+	z-index:100000000;
+	opacity:0.75;
+}
+
+#djDebug #djShowToolBarButton {
+	display:block;
+	height:75px;
+	width:30px;
+	border-right:none;
+	border-bottom:4px solid #fff;
+	border-top:4px solid #fff;
+	border-left:4px solid #fff;
+	color:#fff;
+	font-size:10px;
+	font-weight:bold;
+	text-decoration:none;
+	text-align:center;
+	text-indent:-999999px;
+	background: #000 no-repeat left center;
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABLCAIAAACN/FLOAAADOUlEQVR4Ae2WUWhSXxzHp5v+y4mGGkkEETIfIhyEUThaD0XlGg7qZTJdpGOzQSiVC9uWlCxsMmvW0k2WBDVJMzJWBAaG6ORfGZMexAd9EXzxwWFI9qB24K7DZUNRdlSC++H35P1yPpff/Z1zbCMgICAg2AECgUClUmk0msHBQRqN1jyxxWIp/6Wrq6s5UkKsVCrP1wCfz0csrpGlpaXWiFdXV1sjdrvdiMW5XG6jBoxG47801YTYbDZj1mKxyOPx2loLmUzmcDhcLpdKpTbDJxQKbTZbLBYrlUqw/+l02uVySSSShijpdDrYneWqhEIh0AOUVtDPcDhcroFkMslgMJCJTSZTuWasVisaK4vFyufzZRw+n89gMMjlcqlUqtfrvV4v/pMXCgU2m41ArFAo8EemWCzenhGJRGDE8LcnArHD4YArqtXqSjGZTAZjdrsdgRjMKlyRyWRWilEoFHDCYLFAIIBADHYt3K/Vk6lUCktGo1EE4kQigS2XzWbHqpLJZLBkPB5HIAavX66TSCSCQBwMBusV+/1+BGKPx1Ov2Ol0IhDrdLr1OtFqtTv3EjBYnWwuY0ux9jHI7eTGiu2Bm9/Ki9tr7deTl9+nhq6fIZFITRXDmns73hoxqJP9ggaKw78XPm88wirw04IXz6yMNFB8Z3kY//v+Q5x3yRns0fP/dc0TA/SOy9ijVz/06MXg+43q+0emL3T38LY8mn9/DRPPelSN+0NP2sOhgx1MoXbAHw/w9koUPYrJvqOn+Ih9h4UHb9uGXsfufi3Z4Ch9TM8aXaO9km6UJgiN/t8D9xjQVKlnoQnQA5RW0E9H+BYUVCkw2J2MXcjEatOlWqxY6axDyG6FYP4xfumnPs1Vw0Cf/MQ56TEw4WbvOP6TrxUWmOxOBGIwqHDRQG5eJD6yPSMQ8cCIwdiAsgeBGB4LoKTq05VifbLjMDZllyMQg1mFK9KZuyvFOijtX4qbDQenGwIx2LVwv1ZPfkgZsaQzOo1A7E1sHv3+7MOLY71V6lNmDku+id9DIAavD1tdY72ITCIQLwcn6hUv+m8gEIOrpl7xfecIAvEVnXhlfbquGtaebSMgICAgaBR/AF2yboPNdvDUAAAAAElFTkSuQmCC");
+	opacity:0.5;
+}
+
+#djDebug #djShowToolBarButton:hover {
+	background-color:#111;
+	border-top-color:#FFE761;
+	border-left-color:#FFE761;
+	border-bottom-color:#FFE761;
+	cursor:move;
+	opacity:1.0;
+}
+
+#djDebug code {
+	display:block;
+	font-family:Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace;
+	font-size: 12px;
+	white-space:pre;
+	overflow:auto;
+}
+
+#djDebug .djDebugOdd {
+	background-color:#f5f5f5;
+}
+
+#djDebug .djdt-panelContent {
+	display:none;
+	position:fixed;
+	margin:0;
+	top:0;
+	right:200px;
+	bottom:0;
+	left:0px;
+	background-color:#eee;
+	color:#666;
+	z-index:100000000;
+}
+
+#djDebug .djdt-panelContent > div {
+	border-bottom:1px solid #ddd;
+}
+
+#djDebug .djDebugPanelTitle {
+	position:absolute;
+	background-color:#ffc;
+	color:#666;
+	padding-left:20px;
+	top:0;
+	right:0;
+	left:0;
+	height:50px;
+}
+
+#djDebug .djDebugPanelTitle code {
+	display:inline;
+	font-size:inherit;
+}
+
+#djDebug .djDebugPanelContent {
+	position:absolute;
+	top:50px;
+	right:0;
+	bottom:0;
+	left:0;
+	height:auto;
+	padding:5px 0 0 20px;
+}
+
+#djDebug .djDebugPanelContent .djdt-loader {
+	display:block;
+	margin:80px auto;
+}
+
+#djDebug .djDebugPanelContent .djdt-scroll {
+	height:100%;
+	overflow:auto;
+	display:block;
+	padding:0 10px 0 0;
+}
+
+#djDebug h3 {
+	font-size:24px;
+	font-weight:normal;
+	line-height:50px;
+}
+
+#djDebug h4 {
+	font-size:20px;
+	font-weight:bold;
+	margin-top:0.8em;
+}
+
+#djDebug .djdt-panelContent table {
+	border:1px solid #ccc;
+	border-collapse:collapse;
+	width:100%;
+	background-color:#fff;
+	display:table;
+	margin-top:0.8em;
+	overflow: auto;
+}
+#djDebug .djdt-panelContent tbody td,
+#djDebug .djdt-panelContent tbody th {
+	vertical-align:top;
+	padding:2px 3px;
+}
+#djDebug .djdt-panelContent tbody td.djdt-time {
+    text-align: center;
+}
+
+#djDebug .djdt-panelContent thead th {
+	padding:1px 6px 1px 3px;
+	text-align:left;
+	font-weight:bold;
+	font-size:14px;
+    white-space: nowrap;
+}
+#djDebug .djdt-panelContent tbody th {
+	width:12em;
+	text-align:right;
+	color:#666;
+	padding-right:.5em;
+}
+
+#djDebug .djTemplateHideContextDiv {
+	background-color:#fff;
+}
+
+/*
+#djDebug .djdt-panelContent p a:hover, #djDebug .djdt-panelContent dd a:hover {
+	color:#111;
+	background-color:#ffc;
+}
+
+#djDebug .djdt-panelContent p {
+	padding:0 5px;
+}
+
+#djDebug .djdt-panelContent p, #djDebug .djdt-panelContent table, #djDebug .djdt-panelContent ol, #djDebug .djdt-panelContent ul, #djDebug .djdt-panelContent dl {
+	margin:5px 0 15px;
+	background-color:#fff;
+}
+#djDebug .djdt-panelContent table {
+	clear:both;
+	border:0;
+	padding:0;
+	margin:0;
+	border-collapse:collapse;
+	border-spacing:0;
+}
+
+#djDebug .djdt-panelContent table a {
+	color:#000;
+	padding:2px 4px;
+}
+#djDebug .djdt-panelContent table a:hover {
+	background-color:#ffc;
+}
+
+#djDebug .djdt-panelContent table th {
+	background-color:#333;
+	font-weight:bold;
+	color:#fff;
+	padding:3px 7px 3px;
+	text-align:left;
+	cursor:pointer;
+}
+#djDebug .djdt-panelContent table td {
+	padding:5px 10px;
+	font-size:14px;
+	background-color:#fff;
+	color:#000;
+	vertical-align:top;
+	border:0;
+}
+#djDebug .djdt-panelContent table tr.djDebugOdd td {
+  background-color:#eee;
+}
+*/
+
+#djDebug .djdt-panelContent .djDebugClose {
+	display:block;
+	position:absolute;
+	top:4px;
+	right:15px;
+	height:40px;
+	width:40px;
+	background: no-repeat center center;
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAQAAACQTsNJAAABuUlEQVR4Ab2WXeoaMRTFZxHz6pObcA0DeXUHhXktFl8LXYAPXYBLKhQGBOFqW3XS8YOW6vjHmnp6wWZyHU1maqHnQDAf/Ehu7twYhUQxdUixO/wr8ts3oeg9TQjCEx5R7SGvKCd4nPNsIyShD4QGf6QkBBkQWnrgg4zqS2fm01kbze3M3GFGjyBvCdLFqYRUySM1zLAOUXJ6dZAACcoPBOHkFpK5qY1BQBt5sExC0gAijEkriMuLfI9m8SqXNxbSd+QSbVSCnPtXyNjdCCoZ7PANF7C4/Y4tznASNzW+QqaP9lFcj4cLW4PY+vFepsSQ2Hbnp5vw2ShB231Cau72EkfUs53lC4R+YQkSXsBAiFdXc72IkupmDODDfKkhwKtdygUgHAuXw7gEIN7jCIQNsfc43sDuqlgsbC57A+u94q82nFVscv8Vy2Rbi72csGKQ+RPignvytGuZbPW0P6KNjvdpz97aIf3jLz/ArfuKXz9dCt7IojR9qihNAuUx33vL454grOqF+t2/F2rPk/H5pzaa2+Ynw3lIaOlh6BlVlDUCMlLND3pKhRdQUPof/1o4x9Qlxe6G/+T8BlqvQqkd4EyZAAAAAElFTkSuQmCC");
+}
+
+#djDebug .djdt-panelContent .djDebugClose:hover {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAACiUlEQVR4Ad2Yz2oTURSH+xCz7cqX6DMUZtudCxExigq2WhcKYtGFVLrwAboSKoVGxT+tJWpTa2lLTDsm6SSTjtZoIq0prf+2Hu8PcmHInJvJPYwuPPDBMDPn8DE5c+fcDEgjDENHMahwOwx2zg1IsE1wFXcVvoIM+J173L8hckrRUpAlLeSmITKsKNoKMHioJRUZU1DKjNmKTCUWDWpUL21RJbcAcIxz/chM9StyvVeh8rOHtH7nJi2dOc6Ba7gnSWY8ScQ1JVdfv6C1yQlegAH3+su5XjLDvUTKXNK77H0Ul4Bck0jZJJLhEry5GV1ULvNg1iSTiYlw64SfX0ShNEAtfp3pEhnhjJmekIJapqcyEhWZZt4OtuDqlXPUWHxKYXaGli+c1Ocpf/4E1Wfv0afcPK1dG+VyTW/TdFQk6Pdp7BfWSMdhtQIZSFDbe0s6DiqezVMJtIjTfXGnuv3b9Iib+RxF47C2Te3SJkUDsqZ81GZkHIgMdV+ora8YC62MnqbvH0Iyxa/WZ3pz+awxH7UZkSH9YaMolZfPdaJZZvd9XOJLU0sYQW1ucROJoCcOyh51x1G9ip4Ri1j9NLoxDaEbWPDTWDbrx/lHsZ740dilSKChBc1q+fp+3SyQjp/NBnoi1sB4KpLXl13QSo/n2GKFW1fpaKdG+8UNSEQbmPY2VulbWKfi5A0uFzUTFzR+ib/NFJSBWolLvKYd++i9WkhNxF9i35Y29/W9KB8DxDPJJU4EBP9wMPJFoyLmCetRUc8gPK5JRDOhIBOlJ9nE4Rn3yIdnwXYi2Crq7QSOU99OaGBNKTMu3XK63GQvADXcNDbhGcWeQAA5mf/ybwkOR3FM4XbAsSOt9wcLTn8FNtAKkQAAAABJRU5ErkJggg==");
+}
+
+#djDebug .djdt-panelContent .djDebugClose.djDebugBack {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAACBUlEQVR4Ad2Y0WriQBSGfYjc7tW+hM8g5HbfYMHbxcXbhT6AF30AH6cXvRCEttK0JgZi0qhQaRNtNWV2fuiADicZcxirdOCn45mccz4mMyczbXDbeDx2pH5IuRD6n7YGR3UdkPBSaiQlSoQxPOMeA+S3VIxENRXD1wZIS2rAANA1RCwuSAdBLKtTF6RnCur7fjGZTLZJkhQQ+rAdANM7FORfVaA0Td/zPBdlDWN4xgDTNYG4Zc7T6TQjASqA4jjOKmBaVSA3lNN8Pi8Es8GXBkEuGqTNh2DDtCkQvU5gal+FpYZYZJ3RQH5RxPqaWG82qmuw02uGyoHcuyB9anfowZ6el+I2jITellkOu9gWH5UwJbupvwvimWZDgVzdeWLohyqpAlF2zE7dWfEUiKMPBkGwNxt6QmjwEKik+Ltnz9ZvpTCITcA4AGnqA1EUreFkgrm+fwSEsuO3spfCIDYB0gRIi9gtlVsWSVRSAOzaMSOw4zVSDbGp4nZGIPxXg6TWXo39xarsjMV6LtuXLmiz2cx6QUNMuqAZSvxqtbJW4hHLVOKVFvpDSZK8HPmjt6C+vn9OcAz4S4FA3hcejEasoyKmlnFUVK+DklsFAl2c9vDMuE6EYbhR1wn0bV8nlEAtLKvLvXK62smeK8RwbVzC21IpAyCF77f8twQlR+onEkLow8aN9x+oYk85YNJqYQAAAABJRU5ErkJggg==");
+}
+
+#djDebug .djdt-panelContent .djDebugClose.djDebugBack:hover  {
+	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAACLElEQVR4Ad2YT8sSURTG/RCzbdWX8DMIs23XMrBlTLiTSIKKIqgP4C6KQAuKsLCycqGLRHNsXqck2giStIiiRdDtPtABuz0zNw+XkAYe3vHce57zY/7cOfetaI/VahVZHbOKIZz/ilU02jcBBW9YZVaGC2OYg7nhQU5ZrVlhj9bIDQFSs5ooAFzN4KUFSWASWMm+INe8pvnSvJ1PzaLfg3COmB8G3n8Jcq7MKH14z4yvXjCD0yepMIY5HpiGDyQuSj56+cSMrrQ4ABHmZi/6ZTC1MpCUJb3u3oa5SsjlIKjFQeosYda5JaZ6mLt3OAxquiBsncieP4ZRCMGLrjMuyAlG7D4To2Yi5/44eWZYDdTeBWmzt8M1W95sm09Z+kd8dv0S4maY1EthCt6m9i5ITq8GAcHx+cN7KSogEqdXx3NVcgGJ3MF3R29+MCMpiOPbx40Uxd/f4q8uNgth4E1gIoBU3YHleOgYcJjvX78AQuL4LfFCGHgTkCpAau7A4umj0nuNIlIUALtxXBEcuI0kF950cTsoEO2tQdGAtyb8w4rfiof1cF5fvqDN73dCL2jwpAuaf4m/fD7UEg8v7xIv2rqTsme9cB+9AX1btuzre0bdBuh7krMMBMr/YWOUaVpF9BP7t4rSg3DFvua5xRJF8wddb/OMOfrmWbGdyKcT2U7gPPh2QgRqE1gN7ZYzZp29Qim8QmzC61YbBcAGuf/hvyW4IqvjKAjhHDGt309H4mp9BS17eAAAAABJRU5ErkJggg==");
+}
+
+#djDebug .djdt-panelContent dt, #djDebug .djdt-panelContent dd {
+	display:block;
+}
+
+#djDebug .djdt-panelContent dt {
+	margin-top:0.75em;
+}
+
+#djDebug .djdt-panelContent dd {
+	margin-left:10px;
+}
+
+#djDebug a.toggleTemplate {
+	padding:4px;
+	background-color:#bbb;
+	-webkit-border-radius:3px;
+	-moz-border-radius:3px;
+	border-radius:3px;
+}
+
+#djDebug a.toggleTemplate:hover {
+	padding:4px;
+	background-color:#444;
+	color:#ffe761;
+	-webkit-border-radius:3px;
+	-moz-border-radius:3px;
+	border-radius:3px;
+}
+
+
+#djDebug a.djTemplateShowContext, #djDebug a.djTemplateShowContext span.toggleArrow {
+	color:#999;
+}
+
+#djDebug a.djTemplateShowContext:hover,  #djDebug a.djTemplateShowContext:hover span.toggleArrow {
+	color:#000;
+	cursor:pointer;
+}
+
+#djDebug .djDebugSqlWrap {
+	position:relative;
+}
+
+#djDebug .djDebugCollapsed {
+    display: none;
+    text-decoration: none;
+    color: #333;
+}
+
+#djDebug .djDebugUncollapsed {
+    color: #333;
+    text-decoration: none;
+}
+
+#djDebug .djUnselected {
+    display: none;
+}
+#djDebug tr.djHiddenByDefault {
+    display: none;
+}
+#djDebug tr.djSelected {
+    display: table-row;
+}
+
+#djDebug .djDebugSql {
+	word-break:break-word;
+	z-index:100000002;
+}
+
+#djDebug .djSQLDetailsDiv tbody th {
+	text-align: left;
+}
+
+#djDebug .djSqlExplain td {
+	white-space: pre;
+}
+
+#djDebug span.djDebugLineChart {
+	background-color:#777;
+	height:3px;
+	position:absolute;
+	bottom:0;
+	top:0;
+	left:0;
+	display:block;
+	z-index:1000000001;
+}
+#djDebug span.djDebugLineChartWarning {
+	background-color:#900;
+}
+
+#djDebug .highlight  { color:#000; }
+#djDebug .highlight .err { color:#000; } /* Error */
+#djDebug .highlight .g { color:#000; } /* Generic */
+#djDebug .highlight .k { color:#000; font-weight:bold } /* Keyword */
+#djDebug .highlight .o { color:#000; } /* Operator */
+#djDebug .highlight .n { color:#000; } /* Name */
+#djDebug .highlight .mi { color:#000; font-weight:bold } /* Literal.Number.Integer */
+#djDebug .highlight .l { color:#000; } /* Literal */
+#djDebug .highlight .x { color:#000; } /* Other */
+#djDebug .highlight .p { color:#000; } /* Punctuation */
+#djDebug .highlight .m { color:#000; font-weight:bold } /* Literal.Number */
+#djDebug .highlight .s { color:#333 } /* Literal.String */
+#djDebug .highlight .w { color:#888888 } /* Text.Whitespace */
+#djDebug .highlight .il { color:#000; font-weight:bold } /* Literal.Number.Integer.Long */
+#djDebug .highlight .na { color:#333 } /* Name.Attribute */
+#djDebug .highlight .nt { color:#000; font-weight:bold } /* Name.Tag */
+#djDebug .highlight .nv { color:#333 } /* Name.Variable */
+#djDebug .highlight .s2 { color:#333 } /* Literal.String.Double */
+#djDebug .highlight .cp { color:#333 } /* Comment.Preproc */
+
+#djDebug .djdt-timeline {
+    width: 30%;
+}
+#djDebug .djDebugTimeline {
+    position: relative;
+    height: 100%;
+    min-height: 100%;
+}
+#djDebug div.djDebugLineChart {
+    position: absolute;
+    left: 0;
+    right: 0;
+    top: 0;
+    bottom: 0;
+    vertical-align: middle;
+}
+#djDebug div.djDebugLineChart strong {
+    text-indent: -10000em;
+    display: block;
+    font-weight: normal;
+    vertical-align: middle;
+    background-color:#ccc;
+}
+
+#djDebug div.djDebugLineChartWarning strong {
+    background-color:#900;
+}
+
+#djDebug .djDebugInTransaction div.djDebugLineChart strong {
+    background-color: #d3ff82;
+}
+#djDebug .djDebugStartTransaction div.djDebugLineChart strong {
+    border-left: 1px solid #94b24d;
+}
+#djDebug .djDebugEndTransaction div.djDebugLineChart strong {
+    border-right: 1px solid #94b24d;
+}
+#djDebug .djDebugHover div.djDebugLineChart strong {
+    background-color: #000;
+}
+#djDebug .djDebugInTransaction.djDebugHover div.djDebugLineChart strong {
+    background-color: #94b24d;
+}
+
+
+#djDebug .djdt-panelContent ul.djdt-stats {
+    position: relative;
+    list-style-type: none;
+}
+#djDebug .djdt-panelContent ul.djdt-stats li {
+    width: 30%;
+    float: left;
+}
+#djDebug .djdt-panelContent ul.djdt-stats li strong.djdt-label {
+    display: block;
+}
+#djDebug .djdt-panelContent ul.djdt-stats li span.djdt-color {
+    height: 12px;
+    width: 3px;
+    display: inline-block;
+}
+#djDebug .djdt-panelContent ul.djdt-stats li span.djdt-info {
+    display: block;
+    padding-left: 5px;
+}
+
+#djDebug .djdt-panelContent thead th {
+    white-space: nowrap;
+}
+#djDebug .djDebugRowWarning .djdt-time {
+    color: red;
+}
+#djdebug .djdt-panelContent table .djdt-toggle {
+    width: 14px;
+    padding-top: 3px;
+}
+#djDebug .djdt-panelContent table .djdt-actions {
+    min-width: 70px;
+    white-space: nowrap;
+}
+#djdebug .djdt-panelContent table .djdt-color {
+    width: 3px;
+}
+#djdebug .djdt-panelContent table .djdt-color span {
+    width: 3px;
+    height: 12px;
+    overflow: hidden;
+    padding: 0;
+}
+#djDebug .djToggleSwitch {
+    text-decoration: none;
+    border: 1px solid #999;
+    height: 12px;
+    width: 12px;
+    line-height: 12px;
+    text-align: center;
+    color: #777;
+    display: inline-block;
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF', endColorstr='#DCDCDC'); /* for IE */
+    background: -webkit-gradient(linear, left top, left bottom, from(#FFF), to(#DCDCDC)); /* for webkit browsers */
+    background:-moz-linear-gradient(center top , #FFFFFF 0pt, #DCDCDC 100%) repeat scroll 0 0 transparent;
+}
+#djDebug .djNoToggleSwitch {
+    height: 14px;
+    width: 14px;
+    display: inline-block;
+}
+
+#djDebug .djSQLDetailsDiv {
+    margin-top:0.8em;
+}
+#djDebug pre {
+	white-space: -moz-pre-wrap;  /* Mozilla, since 1999    */
+	white-space: -pre-wrap;      /* Opera 4-6              */
+	white-space: -o-pre-wrap;    /* Opera 7                */
+	white-space: pre-wrap;       /* CSS-3                  */
+	word-wrap: break-word;       /* Internet Explorer 5.5+ */
+    color: #555;
+    border:1px solid #ccc;
+    border-collapse:collapse;
+    background-color:#fff;
+    display:block;
+    overflow: auto;
+    padding:2px 3px;
+    margin-bottom: 3px;
+    font-family:Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace;
+}
+#djDebug .djdt-stack span {
+    color: #000;
+    font-weight: bold;
+}
+#djDebug .djdt-stack span.djdt-path {
+    color: #777;
+    font-weight: normal;
+}
+#djDebug .djdt-stack span.djdt-code {
+    font-weight: normal;
+}
+
+@media print {
+    #djDebug {
+        display: none !important;
+    }
+}
+
+#djDebug .djdt-width-20 {
+    width: 20%;
+}
+#djDebug .djdt-width-60 {
+    width: 60%;
+}
+#djDebug .djdt-highlighted {
+    background-color: lightgrey;
+}
+.djdt-hidden {
+    display: none;
+}
diff --git a/ippisite/ippidb/templates/update_files/toolbar.js b/ippisite/ippidb/templates/update_files/toolbar.js
new file mode 100644
index 00000000..5fbdaf1b
--- /dev/null
+++ b/ippisite/ippidb/templates/update_files/toolbar.js
@@ -0,0 +1,307 @@
+(function ($, publicAPI) {
+    var djdt = {
+        handleDragged: false,
+        events: {
+            ready: []
+        },
+        isReady: false,
+        init: function() {
+            $('#djDebug').show();
+            var current = null;
+            $('#djDebugPanelList').on('click', 'li a', function() {
+                if (!this.className) {
+                    return false;
+                }
+                current = $('#djDebug #' + this.className);
+                if (current.is(':visible')) {
+                    $(document).trigger('close.djDebug');
+                    $(this).parent().removeClass('djdt-active');
+                } else {
+                    $('.djdt-panelContent').hide(); // Hide any that are already open
+                    var inner = current.find('.djDebugPanelContent .djdt-scroll'),
+                        store_id = $('#djDebug').data('store-id'),
+                        render_panel_url = $('#djDebug').data('render-panel-url');
+                    if (store_id !== '' && inner.children().length === 0) {
+                        var ajax_data = {
+                            data: {
+                                store_id: store_id,
+                                panel_id: this.className
+                            },
+                            type: 'GET',
+                            url: render_panel_url
+                        };
+                        $.ajax(ajax_data).done(function(data){
+                            inner.prev().remove();  // Remove AJAX loader
+                            inner.html(data);
+                        }).fail(function(xhr){
+                            var message = '<div class="djDebugPanelTitle"><a class="djDebugClose djDebugBack" href=""></a><h3>'+xhr.status+': '+xhr.statusText+'</h3></div>';
+                            $('#djDebugWindow').html(message).show();
+                        });
+                    }
+                    current.show();
+                    $('#djDebugToolbar li').removeClass('djdt-active');
+                    $(this).parent().addClass('djdt-active');
+                }
+                return false;
+            });
+            $('#djDebug').on('click', 'a.djDebugClose', function() {
+                $(document).trigger('close.djDebug');
+                $('#djDebugToolbar li').removeClass('djdt-active');
+                return false;
+            });
+            $('#djDebug').on('click', '.djDebugPanelButton input[type=checkbox]', function() {
+                djdt.cookie.set($(this).attr('data-cookie'), $(this).prop('checked') ? 'on' : 'off', {
+                    path: '/',
+                    expires: 10
+                });
+            });
+
+            // Used by the SQL and template panels
+            $('#djDebug').on('click', '.remoteCall', function() {
+                var self = $(this);
+                var name = self[0].tagName.toLowerCase();
+                var ajax_data = {};
+
+                if (name == 'button') {
+                    var form = self.parents('form:eq(0)');
+                    ajax_data.url = self.attr('formaction');
+
+                    if (form.length) {
+                        ajax_data.data = form.serialize();
+                        ajax_data.type = form.attr('method') || 'POST';
+                    }
+                }
+
+                if (name == 'a') {
+                    ajax_data.url = self.attr('href');
+                }
+
+                $.ajax(ajax_data).done(function(data){
+                    $('#djDebugWindow').html(data).show();
+                }).fail(function(xhr){
+                        var message = '<div class="djDebugPanelTitle"><a class="djDebugClose djDebugBack" href=""></a><h3>'+xhr.status+': '+xhr.statusText+'</h3></div>';
+                        $('#djDebugWindow').html(message).show();
+                });
+
+                $('#djDebugWindow').on('click', 'a.djDebugBack', function() {
+                    $(this).parent().parent().hide();
+                    return false;
+                });
+
+                return false;
+            });
+
+            // Used by the cache, profiling and SQL panels
+            $('#djDebug').on('click', 'a.djToggleSwitch', function(e) {
+                e.preventDefault();
+                var btn = $(this);
+                var id = btn.attr('data-toggle-id');
+                var open_me = btn.text() == btn.attr('data-toggle-open');
+                if (id === '' || !id) {
+                    return;
+                }
+                var name = btn.attr('data-toggle-name');
+                btn.parents('.djDebugPanelContent').find('#' + name + '_' + id).find('.djDebugCollapsed').toggle(open_me);
+                btn.parents('.djDebugPanelContent').find('#' + name + '_' + id).find('.djDebugUncollapsed').toggle(!open_me);
+                $(this).parents('.djDebugPanelContent').find('.djToggleDetails_' + id).each(function(){
+                    var $this = $(this);
+                    if (open_me) {
+                        $this.addClass('djSelected');
+                        $this.removeClass('djUnselected');
+                        btn.text(btn.attr('data-toggle-close'));
+                        $this.find('.djToggleSwitch').text(btn.text());
+                    } else {
+                        $this.removeClass('djSelected');
+                        $this.addClass('djUnselected');
+                        btn.text(btn.attr('data-toggle-open'));
+                        $this.find('.djToggleSwitch').text(btn.text());
+                    }
+                });
+                return;
+            });
+
+            $('#djHideToolBarButton').click(function() {
+                djdt.hide_toolbar(true);
+                return false;
+            });
+            $('#djShowToolBarButton').click(function() {
+                if (!djdt.handleDragged) {
+                    djdt.show_toolbar();
+                }
+                return false;
+            });
+            var handle = $('#djDebugToolbarHandle');
+            $('#djShowToolBarButton').on('mousedown', function (event) {
+                var startPageY = event.pageY;
+                var baseY = handle.offset().top - startPageY;
+                var windowHeight = $(window).height();
+                $(document).on('mousemove.djDebug', function (event) {
+                    // Chrome can send spurious mousemove events, so don't do anything unless the
+                    // cursor really moved.  Otherwise, it will be impossible to expand the toolbar
+                    // due to djdt.handleDragged being set to true.
+                    if (djdt.handleDragged || event.pageY != startPageY) {
+                        var top = baseY + event.clientY;
+
+                        if (top < 0) {
+                            top = 0;
+                        } else if (top + handle.height() > windowHeight) {
+                            top = windowHeight - handle.height();
+                        }
+
+                        handle.css({top: top});
+                        djdt.handleDragged = true;
+                    }
+                });
+                return false;
+            });
+            $(document).on('mouseup', function () {
+                $(document).off('mousemove.djDebug');
+                if (djdt.handleDragged) {
+                    var top = handle.offset().top - window.pageYOffset;
+                    djdt.cookie.set('djdttop', top, {
+                        path: '/',
+                        expires: 10
+                    });
+                    setTimeout(function () {
+                        djdt.handleDragged = false;
+                    }, 10);
+                    return false;
+                }
+            });
+            $(document).bind('close.djDebug', function() {
+                // If a sub-panel is open, close that
+                if ($('#djDebugWindow').is(':visible')) {
+                    $('#djDebugWindow').hide();
+                    return;
+                }
+                // If a panel is open, close that
+                if ($('.djdt-panelContent').is(':visible')) {
+                    $('.djdt-panelContent').hide();
+                    $('#djDebugToolbar li').removeClass('djdt-active');
+                    return;
+                }
+                // Otherwise, just minimize the toolbar
+                if ($('#djDebugToolbar').is(':visible')) {
+                    djdt.hide_toolbar(true);
+                    return;
+                }
+            });
+            if (djdt.cookie.get('djdt') == 'hide') {
+                djdt.hide_toolbar(false);
+            } else {
+                djdt.show_toolbar(false);
+            }
+            $('#djDebug .djDebugHoverable').hover(function(){
+                $(this).addClass('djDebugHover');
+            }, function(){
+                $(this).removeClass('djDebugHover');
+            });
+            djdt.isReady = true;
+            $.each(djdt.events.ready, function(_, callback){
+                callback(djdt);
+            });
+        },
+        close: function() {
+            $(document).trigger('close.djDebug');
+            return false;
+        },
+        hide_toolbar: function(setCookie) {
+            // close any sub panels
+            $('#djDebugWindow').hide();
+            // close all panels
+            $('.djdt-panelContent').hide();
+            $('#djDebugToolbar li').removeClass('djdt-active');
+            // finally close toolbar
+            $('#djDebugToolbar').hide('fast');
+            handle = $('#djDebugToolbarHandle');
+            handle.show();
+            // set handle position
+            var handleTop = djdt.cookie.get('djdttop');
+            if (handleTop) {
+                handleTop = Math.min(handleTop, window.innerHeight - handle.outerHeight() - 10);
+                handle.css({top: handleTop + 'px'});
+            }
+            // Unbind keydown
+            $(document).unbind('keydown.djDebug');
+            if (setCookie) {
+                djdt.cookie.set('djdt', 'hide', {
+                    path: '/',
+                    expires: 10
+                });
+            }
+        },
+        show_toolbar: function(animate) {
+            // Set up keybindings
+            $(document).bind('keydown.djDebug', function(e) {
+                if (e.keyCode == 27) {
+                    djdt.close();
+                }
+            });
+            $('#djDebugToolbarHandle').hide();
+            if (animate) {
+                $('#djDebugToolbar').show('fast');
+            } else {
+                $('#djDebugToolbar').show();
+            }
+            djdt.cookie.set('djdt', 'show', {
+                path: '/',
+                expires: 10
+            });
+        },
+        ready: function(callback){
+            if (djdt.isReady) {
+                callback(djdt);
+            } else {
+                djdt.events.ready.push(callback);
+            }
+        },
+        cookie: {
+            get: function(key){
+                if (document.cookie.indexOf(key) === -1) return null;
+
+                var cookieArray = document.cookie.split('; '),
+                    cookies = {};
+
+                cookieArray.forEach(function(e){
+                    var parts = e.split('=');
+                    cookies[ parts[0] ] = parts[1];
+                });
+
+                return cookies[ key ];
+            },
+            set: function(key, value, options){
+                options = options || {};
+
+                if (typeof options.expires === 'number') {
+                    var days = options.expires, t = options.expires = new Date();
+                    t.setDate(t.getDate() + days);
+                }
+
+                document.cookie = [
+                    encodeURIComponent(key) + '=' + String(value),
+                    options.expires ? '; expires=' + options.expires.toUTCString() : '',
+                    options.path    ? '; path=' + options.path : '',
+                    options.domain  ? '; domain=' + options.domain : '',
+                    options.secure  ? '; secure' : ''
+                ].join('');
+
+                return value;
+            }
+        },
+        applyStyle: function(name) {
+            $('#djDebug [data-' + name + ']').each(function() {
+                var css = {};
+                css[name] = $(this).data(name);
+                $(this).css(css);
+            });
+        }
+    };
+    $.extend(publicAPI, {
+        show_toolbar: djdt.show_toolbar,
+        hide_toolbar: djdt.hide_toolbar,
+        close: djdt.close,
+        cookie: djdt.cookie,
+        applyStyle: djdt.applyStyle
+    });
+    $(document).ready(djdt.init);
+})(djdt.jQuery, djdt);
diff --git a/ippisite/ippidb/urls.py b/ippisite/ippidb/urls.py
index a7aa1f58..ce260fea 100644
--- a/ippisite/ippidb/urls.py
+++ b/ippisite/ippidb/urls.py
@@ -23,10 +23,11 @@ urlpatterns = [
     url(r'^compound/$', views.compound_list, name='compound_list'),
     url(r'^compound/(?P<compound_id>\w+)$', views.compound_card, name='compound_card'),
     url(r'^tutorials$', views.tutorials, name='tutorials'),
-        url(r'^admin-session$', views.adminSession, name='admin-session'),
+    url(r'^admin-session$', views.adminSession, name='admin-session'),
     url(r'^admin-session/add/(?P<step>.+)/$',
         ippidb_wizard, name='ippidb_step'),
     url(r'^admin-session/add/$', ippidb_wizard, name='ippidb'),
+    url(r'^admin-session/update/$', views.update, name='update'),
 ]
 
 from django.conf import settings
diff --git a/ippisite/ippidb/views.py b/ippisite/ippidb/views.py
index e06ba576..7bc732ea 100644
--- a/ippisite/ippidb/views.py
+++ b/ippisite/ippidb/views.py
@@ -51,6 +51,9 @@ def tutorials(request):
 def adminSession(request):
     return render(request, 'admin-session.html')
 
+def update (request):
+    return render(request, 'update.html')
+
 FORMS = [("IdForm", ippidb.forms.IdForm),
          ("BibliographyForm", ippidb.forms.BibliographyForm),
          ("PDBForm", ippidb.forms.PDBForm),
-- 
GitLab