diff --git a/kadmos/vistoms/static/agile_logo.png b/kadmos/vistoms/static/agile_logo.png
deleted file mode 100644
index a9e2cae589446fd10b9c0524e5dc5094ad13991c..0000000000000000000000000000000000000000
Binary files a/kadmos/vistoms/static/agile_logo.png and /dev/null differ
diff --git a/kadmos/vistoms/static/lib/bootstrap/bootstrap.css b/kadmos/vistoms/static/lib/bootstrap/bootstrap.css
new file mode 100644
index 0000000000000000000000000000000000000000..6561b6f4c9d158f46786b9c6df54718062d4d930
--- /dev/null
+++ b/kadmos/vistoms/static/lib/bootstrap/bootstrap.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v4.0.0 (https://getbootstrap.com)
+ * Copyright 2011-2018 The Bootstrap Authors
+ * Copyright 2011-2018 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/kadmos/vistoms/static/lib/bootstrap/bootstrap.js b/kadmos/vistoms/static/lib/bootstrap/bootstrap.js
new file mode 100644
index 0000000000000000000000000000000000000000..534d533433ab94ca11eb8dd3eea559c7f1c0f50e
--- /dev/null
+++ b/kadmos/vistoms/static/lib/bootstrap/bootstrap.js
@@ -0,0 +1,7 @@
+/*!
+  * Bootstrap v4.0.0 (https://getbootstrap.com)
+  * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+  */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,n){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function r(){return(r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t}).apply(this,arguments)}e=e&&e.hasOwnProperty("default")?e.default:e,n=n&&n.hasOwnProperty("default")?n.default:n;var o,a,l,h,c,u,f,d,_,g,p,m,v,E,T,y,C,I,A,b,D,S,w,N,O,k,P=function(t){var e=!1;function n(e){var n=this,s=!1;return t(this).one(i.TRANSITION_END,function(){s=!0}),setTimeout(function(){s||i.triggerTransitionEnd(n)},e),this}var i={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(e){var n,i=e.getAttribute("data-target");i&&"#"!==i||(i=e.getAttribute("href")||""),"#"===i.charAt(0)&&(n=i,i=n="function"==typeof t.escapeSelector?t.escapeSelector(n).substr(1):n.replace(/(:|\.|\[|\]|,|=|@)/g,"\\$1"));try{return t(document).find(i).length>0?i:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var s in n)if(Object.prototype.hasOwnProperty.call(n,s)){var r=n[s],o=e[s],a=o&&i.isElement(o)?"element":(l=o,{}.toString.call(l).match(/\s([a-zA-Z]+)/)[1].toLowerCase());if(!new RegExp(r).test(a))throw new Error(t.toUpperCase()+': Option "'+s+'" provided type "'+a+'" but expected type "'+r+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e),L=(a="alert",h="."+(l="bs.alert"),c=(o=e).fn[a],u={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+".data-api"},f="alert",d="fade",_="show",g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,l),this._element=null},e._getRootElement=function(t){var e=P.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(u.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(_),P.supportsTransitionEnd()&&o(t).hasClass(d)?o(t).one(P.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(u.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(l);i||(i=new t(this),n.data(l,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),o.fn[a]=g._jQueryInterface,o.fn[a].Constructor=g,o.fn[a].noConflict=function(){return o.fn[a]=c,g._jQueryInterface},g),R=(m="button",E="."+(v="bs.button"),T=".data-api",y=(p=e).fn[m],C="active",I="btn",A="focus",b='[data-toggle^="button"]',D='[data-toggle="buttons"]',S="input",w=".active",N=".btn",O={CLICK_DATA_API:"click"+E+T,FOCUS_BLUR_DATA_API:"focus"+E+T+" blur"+E+T},k=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=p(this._element).find(S)[0];if(i){if("radio"===i.type)if(i.checked&&p(this._element).hasClass(C))t=!1;else{var s=p(n).find(w)[0];s&&p(s).removeClass(C)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!p(this._element).hasClass(C),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!p(this._element).hasClass(C)),t&&p(this._element).toggleClass(C)},e.dispose=function(){p.removeData(this._element,v),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=p(this).data(v);n||(n=new t(this),p(this).data(v,n)),"toggle"===e&&n[e]()})},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),p(document).on(O.CLICK_DATA_API,b,function(t){t.preventDefault();var e=t.target;p(e).hasClass(I)||(e=p(e).closest(N)),k._jQueryInterface.call(p(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,b,function(t){var e=p(t.target).closest(N)[0];p(e).toggleClass(A,/^focus(in)?$/.test(t.type))}),p.fn[m]=k._jQueryInterface,p.fn[m].Constructor=k,p.fn[m].noConflict=function(){return p.fn[m]=y,k._jQueryInterface},k),j=function(t){var e="carousel",n="bs.carousel",i="."+n,o=t.fn[e],a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},l={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},h="next",c="prev",u="left",f="right",d={SLIDE:"slide"+i,SLID:"slid"+i,KEYDOWN:"keydown"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i,TOUCHEND:"touchend"+i,LOAD_DATA_API:"load"+i+".data-api",CLICK_DATA_API:"click"+i+".data-api"},_="carousel",g="active",p="slide",m="carousel-item-right",v="carousel-item-left",E="carousel-item-next",T="carousel-item-prev",y={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},C=function(){function o(e,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(y.INDICATORS)[0],this._addEventListeners()}var C=o.prototype;return C.next=function(){this._isSliding||this._slide(h)},C.nextWhenVisible=function(){!document.hidden&&t(this._element).is(":visible")&&"hidden"!==t(this._element).css("visibility")&&this.next()},C.prev=function(){this._isSliding||this._slide(c)},C.pause=function(e){e||(this._isPaused=!0),t(this._element).find(y.NEXT_PREV)[0]&&P.supportsTransitionEnd()&&(P.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},C.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},C.to=function(e){var n=this;this._activeElement=t(this._element).find(y.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var s=e>i?h:c;this._slide(s,this._items[e])}},C.dispose=function(){t(this._element).off(i),t.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},C._getConfig=function(t){return t=r({},a,t),P.typeCheckConfig(e,t,l),t},C._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},C._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},C._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(y.ITEM)),this._items.indexOf(e)},C._getItemByDirection=function(t,e){var n=t===h,i=t===c,s=this._getItemIndex(e),r=this._items.length-1;if((i&&0===s||n&&s===r)&&!this._config.wrap)return e;var o=(s+(t===c?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o]},C._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),s=this._getItemIndex(t(this._element).find(y.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:s,to:i});return t(this._element).trigger(r),r},C._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(y.ACTIVE).removeClass(g);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(g)}},C._slide=function(e,n){var i,s,r,o=this,a=t(this._element).find(y.ACTIVE_ITEM)[0],l=this._getItemIndex(a),c=n||a&&this._getItemByDirection(e,a),_=this._getItemIndex(c),C=Boolean(this._interval);if(e===h?(i=v,s=E,r=u):(i=m,s=T,r=f),c&&t(c).hasClass(g))this._isSliding=!1;else if(!this._triggerSlideEvent(c,r).isDefaultPrevented()&&a&&c){this._isSliding=!0,C&&this.pause(),this._setActiveIndicatorElement(c);var I=t.Event(d.SLID,{relatedTarget:c,direction:r,from:l,to:_});P.supportsTransitionEnd()&&t(this._element).hasClass(p)?(t(c).addClass(s),P.reflow(c),t(a).addClass(i),t(c).addClass(i),t(a).one(P.TRANSITION_END,function(){t(c).removeClass(i+" "+s).addClass(g),t(a).removeClass(g+" "+s+" "+i),o._isSliding=!1,setTimeout(function(){return t(o._element).trigger(I)},0)}).emulateTransitionEnd(600)):(t(a).removeClass(g),t(c).addClass(g),this._isSliding=!1,t(this._element).trigger(I)),C&&this.cycle()}},o._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s=r({},a,t(this).data());"object"==typeof e&&(s=r({},s,e));var l="string"==typeof e?e:s.slide;if(i||(i=new o(this,s),t(this).data(n,i)),"number"==typeof e)i.to(e);else if("string"==typeof l){if("undefined"==typeof i[l])throw new TypeError('No method named "'+l+'"');i[l]()}else s.interval&&(i.pause(),i.cycle())})},o._dataApiClickHandler=function(e){var i=P.getSelectorFromElement(this);if(i){var s=t(i)[0];if(s&&t(s).hasClass(_)){var a=r({},t(s).data(),t(this).data()),l=this.getAttribute("data-slide-to");l&&(a.interval=!1),o._jQueryInterface.call(t(s),a),l&&t(s).data(n).to(l),e.preventDefault()}}},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(d.CLICK_DATA_API,y.DATA_SLIDE,C._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(y.DATA_RIDE).each(function(){var e=t(this);C._jQueryInterface.call(e,e.data())})}),t.fn[e]=C._jQueryInterface,t.fn[e].Constructor=C,t.fn[e].noConflict=function(){return t.fn[e]=o,C._jQueryInterface},C}(e),H=function(t){var e="collapse",n="bs.collapse",i="."+n,o=t.fn[e],a={toggle:!0,parent:""},l={toggle:"boolean",parent:"(string|element)"},h={SHOW:"show"+i,SHOWN:"shown"+i,HIDE:"hide"+i,HIDDEN:"hidden"+i,CLICK_DATA_API:"click"+i+".data-api"},c="show",u="collapse",f="collapsing",d="collapsed",_="width",g="height",p={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},m=function(){function i(e,n){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(n),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var i=t(p.DATA_TOGGLE),s=0;s<i.length;s++){var r=i[s],o=P.getSelectorFromElement(r);null!==o&&t(o).filter(e).length>0&&(this._selector=o,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var o=i.prototype;return o.toggle=function(){t(this._element).hasClass(c)?this.hide():this.show()},o.show=function(){var e,s,r=this;if(!this._isTransitioning&&!t(this._element).hasClass(c)&&(this._parent&&0===(e=t.makeArray(t(this._parent).find(p.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(e=null),!(e&&(s=t(e).not(this._selector).data(n))&&s._isTransitioning))){var o=t.Event(h.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){e&&(i._jQueryInterface.call(t(e).not(this._selector),"hide"),s||t(e).data(n,null));var a=this._getDimension();t(this._element).removeClass(u).addClass(f),this._element.style[a]=0,this._triggerArray.length>0&&t(this._triggerArray).removeClass(d).attr("aria-expanded",!0),this.setTransitioning(!0);var l=function(){t(r._element).removeClass(f).addClass(u).addClass(c),r._element.style[a]="",r.setTransitioning(!1),t(r._element).trigger(h.SHOWN)};if(P.supportsTransitionEnd()){var _="scroll"+(a[0].toUpperCase()+a.slice(1));t(this._element).one(P.TRANSITION_END,l).emulateTransitionEnd(600),this._element.style[a]=this._element[_]+"px"}else l()}}},o.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(c)){var n=t.Event(h.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",P.reflow(this._element),t(this._element).addClass(f).removeClass(u).removeClass(c),this._triggerArray.length>0)for(var s=0;s<this._triggerArray.length;s++){var r=this._triggerArray[s],o=P.getSelectorFromElement(r);if(null!==o)t(o).hasClass(c)||t(r).addClass(d).attr("aria-expanded",!1)}this.setTransitioning(!0);var a=function(){e.setTransitioning(!1),t(e._element).removeClass(f).addClass(u).trigger(h.HIDDEN)};this._element.style[i]="",P.supportsTransitionEnd()?t(this._element).one(P.TRANSITION_END,a).emulateTransitionEnd(600):a()}}},o.setTransitioning=function(t){this._isTransitioning=t},o.dispose=function(){t.removeData(this._element,n),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},o._getConfig=function(t){return(t=r({},a,t)).toggle=Boolean(t.toggle),P.typeCheckConfig(e,t,l),t},o._getDimension=function(){return t(this._element).hasClass(_)?_:g},o._getParent=function(){var e=this,n=null;P.isElement(this._config.parent)?(n=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(n=this._config.parent[0])):n=t(this._config.parent)[0];var s='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return t(n).find(s).each(function(t,n){e._addAriaAndCollapsedClass(i._getTargetFromElement(n),[n])}),n},o._addAriaAndCollapsedClass=function(e,n){if(e){var i=t(e).hasClass(c);n.length>0&&t(n).toggleClass(d,!i).attr("aria-expanded",i)}},i._getTargetFromElement=function(e){var n=P.getSelectorFromElement(e);return n?t(n)[0]:null},i._jQueryInterface=function(e){return this.each(function(){var s=t(this),o=s.data(n),l=r({},a,s.data(),"object"==typeof e&&e);if(!o&&l.toggle&&/show|hide/.test(e)&&(l.toggle=!1),o||(o=new i(this,l),s.data(n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),i}();return t(document).on(h.CLICK_DATA_API,p.DATA_TOGGLE,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var i=t(this),s=P.getSelectorFromElement(this);t(s).each(function(){var e=t(this),s=e.data(n)?"toggle":i.data();m._jQueryInterface.call(e,s)})}),t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=o,m._jQueryInterface},m}(e),W=function(t){var e="dropdown",i="bs.dropdown",o="."+i,a=".data-api",l=t.fn[e],h=new RegExp("38|40|27"),c={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,CLICK:"click"+o,CLICK_DATA_API:"click"+o+a,KEYDOWN_DATA_API:"keydown"+o+a,KEYUP_DATA_API:"keyup"+o+a},u="disabled",f="show",d="dropup",_="dropright",g="dropleft",p="dropdown-menu-right",m="dropdown-menu-left",v="position-static",E='[data-toggle="dropdown"]',T=".dropdown form",y=".dropdown-menu",C=".navbar-nav",I=".dropdown-menu .dropdown-item:not(.disabled)",A="top-start",b="top-end",D="bottom-start",S="bottom-end",w="right-start",N="left-start",O={offset:0,flip:!0,boundary:"scrollParent"},k={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)"},L=function(){function a(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var l=a.prototype;return l.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(u)){var e=a._getParentFromElement(this._element),i=t(this._menu).hasClass(f);if(a._clearMenus(),!i){var s={relatedTarget:this._element},r=t.Event(c.SHOW,s);if(t(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof n)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var o=this._element;t(e).hasClass(d)&&(t(this._menu).hasClass(m)||t(this._menu).hasClass(p))&&(o=e),"scrollParent"!==this._config.boundary&&t(e).addClass(v),this._popper=new n(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===t(e).closest(C).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(f),t(e).toggleClass(f).trigger(t.Event(c.SHOWN,s))}}}},l.dispose=function(){t.removeData(this._element,i),t(this._element).off(o),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},l.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},l._addEventListeners=function(){var e=this;t(this._element).on(c.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},l._getConfig=function(n){return n=r({},this.constructor.Default,t(this._element).data(),n),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},l._getMenuElement=function(){if(!this._menu){var e=a._getParentFromElement(this._element);this._menu=t(e).find(y)[0]}return this._menu},l._getPlacement=function(){var e=t(this._element).parent(),n=D;return e.hasClass(d)?(n=A,t(this._menu).hasClass(p)&&(n=b)):e.hasClass(_)?n=w:e.hasClass(g)?n=N:t(this._menu).hasClass(p)&&(n=S),n},l._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},l._getPopperConfig=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets)||{}),e}:e.offset=this._config.offset,{placement:this._getPlacement(),modifiers:{offset:e,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}}},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i);if(n||(n=new a(this,"object"==typeof e?e:null),t(this).data(i,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},a._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=t.makeArray(t(E)),s=0;s<n.length;s++){var r=a._getParentFromElement(n[s]),o=t(n[s]).data(i),l={relatedTarget:n[s]};if(o){var h=o._menu;if(t(r).hasClass(f)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&t.contains(r,e.target))){var u=t.Event(c.HIDE,l);t(r).trigger(u),u.isDefaultPrevented()||("ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),n[s].setAttribute("aria-expanded","false"),t(h).removeClass(f),t(r).removeClass(f).trigger(t.Event(c.HIDDEN,l)))}}}},a._getParentFromElement=function(e){var n,i=P.getSelectorFromElement(e);return i&&(n=t(i)[0]),n||e.parentNode},a._dataApiKeydownHandler=function(e){if((/input|textarea/i.test(e.target.tagName)?!(32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||t(e.target).closest(y).length)):h.test(e.which))&&(e.preventDefault(),e.stopPropagation(),!this.disabled&&!t(this).hasClass(u))){var n=a._getParentFromElement(this),i=t(n).hasClass(f);if((i||27===e.which&&32===e.which)&&(!i||27!==e.which&&32!==e.which)){var s=t(n).find(I).get();if(0!==s.length){var r=s.indexOf(e.target);38===e.which&&r>0&&r--,40===e.which&&r<s.length-1&&r++,r<0&&(r=0),s[r].focus()}}else{if(27===e.which){var o=t(n).find(E)[0];t(o).trigger("focus")}t(this).trigger("click")}}},s(a,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return O}},{key:"DefaultType",get:function(){return k}}]),a}();return t(document).on(c.KEYDOWN_DATA_API,E,L._dataApiKeydownHandler).on(c.KEYDOWN_DATA_API,y,L._dataApiKeydownHandler).on(c.CLICK_DATA_API+" "+c.KEYUP_DATA_API,L._clearMenus).on(c.CLICK_DATA_API,E,function(e){e.preventDefault(),e.stopPropagation(),L._jQueryInterface.call(t(this),"toggle")}).on(c.CLICK_DATA_API,T,function(t){t.stopPropagation()}),t.fn[e]=L._jQueryInterface,t.fn[e].Constructor=L,t.fn[e].noConflict=function(){return t.fn[e]=l,L._jQueryInterface},L}(e),M=function(t){var e="modal",n="bs.modal",i="."+n,o=t.fn.modal,a={backdrop:!0,keyboard:!0,focus:!0,show:!0},l={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},h={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,FOCUSIN:"focusin"+i,RESIZE:"resize"+i,CLICK_DISMISS:"click.dismiss"+i,KEYDOWN_DISMISS:"keydown.dismiss"+i,MOUSEUP_DISMISS:"mouseup.dismiss"+i,MOUSEDOWN_DISMISS:"mousedown.dismiss"+i,CLICK_DATA_API:"click"+i+".data-api"},c="modal-scrollbar-measure",u="modal-backdrop",f="modal-open",d="fade",_="show",g={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"},p=function(){function o(e,n){this._config=this._getConfig(n),this._element=e,this._dialog=t(e).find(g.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._originalBodyPadding=0,this._scrollbarWidth=0}var p=o.prototype;return p.toggle=function(t){return this._isShown?this.hide():this.show(t)},p.show=function(e){var n=this;if(!this._isTransitioning&&!this._isShown){P.supportsTransitionEnd()&&t(this._element).hasClass(d)&&(this._isTransitioning=!0);var i=t.Event(h.SHOW,{relatedTarget:e});t(this._element).trigger(i),this._isShown||i.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),t(document.body).addClass(f),this._setEscapeEvent(),this._setResizeEvent(),t(this._element).on(h.CLICK_DISMISS,g.DATA_DISMISS,function(t){return n.hide(t)}),t(this._dialog).on(h.MOUSEDOWN_DISMISS,function(){t(n._element).one(h.MOUSEUP_DISMISS,function(e){t(e.target).is(n._element)&&(n._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return n._showElement(e)}))}},p.hide=function(e){var n=this;if(e&&e.preventDefault(),!this._isTransitioning&&this._isShown){var i=t.Event(h.HIDE);if(t(this._element).trigger(i),this._isShown&&!i.isDefaultPrevented()){this._isShown=!1;var s=P.supportsTransitionEnd()&&t(this._element).hasClass(d);s&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),t(document).off(h.FOCUSIN),t(this._element).removeClass(_),t(this._element).off(h.CLICK_DISMISS),t(this._dialog).off(h.MOUSEDOWN_DISMISS),s?t(this._element).one(P.TRANSITION_END,function(t){return n._hideModal(t)}).emulateTransitionEnd(300):this._hideModal()}}},p.dispose=function(){t.removeData(this._element,n),t(window,document,this._element,this._backdrop).off(i),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._scrollbarWidth=null},p.handleUpdate=function(){this._adjustDialog()},p._getConfig=function(t){return t=r({},a,t),P.typeCheckConfig(e,t,l),t},p._showElement=function(e){var n=this,i=P.supportsTransitionEnd()&&t(this._element).hasClass(d);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.scrollTop=0,i&&P.reflow(this._element),t(this._element).addClass(_),this._config.focus&&this._enforceFocus();var s=t.Event(h.SHOWN,{relatedTarget:e}),r=function(){n._config.focus&&n._element.focus(),n._isTransitioning=!1,t(n._element).trigger(s)};i?t(this._dialog).one(P.TRANSITION_END,r).emulateTransitionEnd(300):r()},p._enforceFocus=function(){var e=this;t(document).off(h.FOCUSIN).on(h.FOCUSIN,function(n){document!==n.target&&e._element!==n.target&&0===t(e._element).has(n.target).length&&e._element.focus()})},p._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?t(this._element).on(h.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||t(this._element).off(h.KEYDOWN_DISMISS)},p._setResizeEvent=function(){var e=this;this._isShown?t(window).on(h.RESIZE,function(t){return e.handleUpdate(t)}):t(window).off(h.RESIZE)},p._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._isTransitioning=!1,this._showBackdrop(function(){t(document.body).removeClass(f),e._resetAdjustments(),e._resetScrollbar(),t(e._element).trigger(h.HIDDEN)})},p._removeBackdrop=function(){this._backdrop&&(t(this._backdrop).remove(),this._backdrop=null)},p._showBackdrop=function(e){var n=this,i=t(this._element).hasClass(d)?d:"";if(this._isShown&&this._config.backdrop){var s=P.supportsTransitionEnd()&&i;if(this._backdrop=document.createElement("div"),this._backdrop.className=u,i&&t(this._backdrop).addClass(i),t(this._backdrop).appendTo(document.body),t(this._element).on(h.CLICK_DISMISS,function(t){n._ignoreBackdropClick?n._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===n._config.backdrop?n._element.focus():n.hide())}),s&&P.reflow(this._backdrop),t(this._backdrop).addClass(_),!e)return;if(!s)return void e();t(this._backdrop).one(P.TRANSITION_END,e).emulateTransitionEnd(150)}else if(!this._isShown&&this._backdrop){t(this._backdrop).removeClass(_);var r=function(){n._removeBackdrop(),e&&e()};P.supportsTransitionEnd()&&t(this._element).hasClass(d)?t(this._backdrop).one(P.TRANSITION_END,r).emulateTransitionEnd(150):r()}else e&&e()},p._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},p._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},p._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},p._setScrollbar=function(){var e=this;if(this._isBodyOverflowing){t(g.FIXED_CONTENT).each(function(n,i){var s=t(i)[0].style.paddingRight,r=t(i).css("padding-right");t(i).data("padding-right",s).css("padding-right",parseFloat(r)+e._scrollbarWidth+"px")}),t(g.STICKY_CONTENT).each(function(n,i){var s=t(i)[0].style.marginRight,r=t(i).css("margin-right");t(i).data("margin-right",s).css("margin-right",parseFloat(r)-e._scrollbarWidth+"px")}),t(g.NAVBAR_TOGGLER).each(function(n,i){var s=t(i)[0].style.marginRight,r=t(i).css("margin-right");t(i).data("margin-right",s).css("margin-right",parseFloat(r)+e._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=t("body").css("padding-right");t("body").data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}},p._resetScrollbar=function(){t(g.FIXED_CONTENT).each(function(e,n){var i=t(n).data("padding-right");"undefined"!=typeof i&&t(n).css("padding-right",i).removeData("padding-right")}),t(g.STICKY_CONTENT+", "+g.NAVBAR_TOGGLER).each(function(e,n){var i=t(n).data("margin-right");"undefined"!=typeof i&&t(n).css("margin-right",i).removeData("margin-right")});var e=t("body").data("padding-right");"undefined"!=typeof e&&t("body").css("padding-right",e).removeData("padding-right")},p._getScrollbarWidth=function(){var t=document.createElement("div");t.className=c,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(e,i){return this.each(function(){var s=t(this).data(n),a=r({},o.Default,t(this).data(),"object"==typeof e&&e);if(s||(s=new o(this,a),t(this).data(n,s)),"string"==typeof e){if("undefined"==typeof s[e])throw new TypeError('No method named "'+e+'"');s[e](i)}else a.show&&s.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(h.CLICK_DATA_API,g.DATA_TOGGLE,function(e){var i,s=this,o=P.getSelectorFromElement(this);o&&(i=t(o)[0]);var a=t(i).data(n)?"toggle":r({},t(i).data(),t(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||e.preventDefault();var l=t(i).one(h.SHOW,function(e){e.isDefaultPrevented()||l.one(h.HIDDEN,function(){t(s).is(":visible")&&s.focus()})});p._jQueryInterface.call(t(i),a,this)}),t.fn.modal=p._jQueryInterface,t.fn.modal.Constructor=p,t.fn.modal.noConflict=function(){return t.fn.modal=o,p._jQueryInterface},p}(e),U=function(t){var e="tooltip",i="bs.tooltip",o="."+i,a=t.fn[e],l=new RegExp("(^|\\s)bs-tooltip\\S+","g"),h={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"},c={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},u={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},f="show",d="out",_={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},g="fade",p="show",m=".tooltip-inner",v=".arrow",E="hover",T="focus",y="click",C="manual",I=function(){function a(t,e){if("undefined"==typeof n)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var I=a.prototype;return I.enable=function(){this._isEnabled=!0},I.disable=function(){this._isEnabled=!1},I.toggleEnabled=function(){this._isEnabled=!this._isEnabled},I.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(p))return void this._leave(null,this);this._enter(null,this)}},I.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},I.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var i=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(i);var s=t.contains(this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!s)return;var r=this.getTipElement(),o=P.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(r).addClass(g);var l="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(l);this.addAttachmentClass(h);var c=!1===this.config.container?document.body:t(this.config.container);t(r).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(r).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,r,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(r).addClass(p),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var u=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d&&e._leave(null,e)};P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(this.tip).one(P.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION):u()}},I.hide=function(e){var n=this,i=this.getTipElement(),s=t.Event(this.constructor.Event.HIDE),r=function(){n._hoverState!==f&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(s),s.isDefaultPrevented()||(t(i).removeClass(p),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[y]=!1,this._activeTrigger[T]=!1,this._activeTrigger[E]=!1,P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(i).one(P.TRANSITION_END,r).emulateTransitionEnd(150):r(),this._hoverState="")},I.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},I.isWithContent=function(){return Boolean(this.getTitle())},I.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},I.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},I.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m),this.getTitle()),e.removeClass(g+" "+p)},I.setElementContent=function(e,n){var i=this.config.html;"object"==typeof n&&(n.nodeType||n.jquery)?i?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[i?"html":"text"](n)},I.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},I._getAttachment=function(t){return c[t.toUpperCase()]},I._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==C){var i=n===E?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,s=n===E?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(s,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},I._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},I._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?T:E]=!0),t(n.getTipElement()).hasClass(p)||n._hoverState===f?n._hoverState=f:(clearTimeout(n._timeout),n._hoverState=f,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===f&&n.show()},n.config.delay.show):n.show())},I._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?T:E]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=d,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===d&&n.hide()},n.config.delay.hide):n.hide())},I._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},I._getConfig=function(n){return"number"==typeof(n=r({},this.constructor.Default,t(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},I._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},I._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},I._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},I._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(g),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i),s="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,s),t(this).data(i,n)),"string"==typeof e)){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return i}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=I._jQueryInterface,t.fn[e].Constructor=I,t.fn[e].noConflict=function(){return t.fn[e]=a,I._jQueryInterface},I}(e),x=function(t){var e="popover",n="bs.popover",i="."+n,o=t.fn[e],a=new RegExp("(^|\\s)bs-popover\\S+","g"),l=r({},U.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),h=r({},U.DefaultType,{content:"(string|element|function)"}),c="fade",u="show",f=".popover-header",d=".popover-body",_={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},g=function(r){var o,g;function p(){return r.apply(this,arguments)||this}g=r,(o=p).prototype=Object.create(g.prototype),o.prototype.constructor=o,o.__proto__=g;var m=p.prototype;return m.isWithContent=function(){return this.getTitle()||this._getContent()},m.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-popover-"+e)},m.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},m.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(f),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(d),n),e.removeClass(c+" "+u)},m._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},m._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},p._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s="object"==typeof e?e:null;if((i||!/destroy|hide/.test(e))&&(i||(i=new p(this,s),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s(p,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return i}},{key:"DefaultType",get:function(){return h}}]),p}(U);return t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=o,g._jQueryInterface},g}(e),K=function(t){var e="scrollspy",n="bs.scrollspy",i="."+n,o=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate"+i,SCROLL:"scroll"+i,LOAD_DATA_API:"load"+i+".data-api"},c="dropdown-item",u="active",f={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d="offset",_="position",g=function(){function o(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+f.NAV_LINKS+","+this._config.target+" "+f.LIST_ITEMS+","+this._config.target+" "+f.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return i._process(t)}),this.refresh(),this._process()}var g=o.prototype;return g.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?d:_,i="auto"===this._config.method?n:this._config.method,s=i===_?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n,r=P.getSelectorFromElement(e);if(r&&(n=t(r)[0]),n){var o=n.getBoundingClientRect();if(o.width||o.height)return[t(n)[i]().top+s,r]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},g.dispose=function(){t.removeData(this._element,n),t(this._scrollElement).off(i),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},g._getConfig=function(n){if("string"!=typeof(n=r({},a,n)).target){var i=t(n.target).attr("id");i||(i=P.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return P.typeCheckConfig(e,n,l),n},g._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},g._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},g._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},g._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var s=this._offsets.length;s--;){this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&("undefined"==typeof this._offsets[s+1]||t<this._offsets[s+1])&&this._activate(this._targets[s])}}},g._activate=function(e){this._activeTarget=e,this._clear();var n=this._selector.split(",");n=n.map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'});var i=t(n.join(","));i.hasClass(c)?(i.closest(f.DROPDOWN).find(f.DROPDOWN_TOGGLE).addClass(u),i.addClass(u)):(i.addClass(u),i.parents(f.NAV_LIST_GROUP).prev(f.NAV_LINKS+", "+f.LIST_ITEMS).addClass(u),i.parents(f.NAV_LIST_GROUP).prev(f.NAV_ITEMS).children(f.NAV_LINKS).addClass(u)),t(this._scrollElement).trigger(h.ACTIVATE,{relatedTarget:e})},g._clear=function(){t(this._selector).filter(f.ACTIVE).removeClass(u)},o._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n);if(i||(i=new o(this,"object"==typeof e&&e),t(this).data(n,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(window).on(h.LOAD_DATA_API,function(){for(var e=t.makeArray(t(f.DATA_SPY)),n=e.length;n--;){var i=t(e[n]);g._jQueryInterface.call(i,i.data())}}),t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=o,g._jQueryInterface},g}(e),V=function(t){var e="bs.tab",n="."+e,i=t.fn.tab,r={HIDE:"hide"+n,HIDDEN:"hidden"+n,SHOW:"show"+n,SHOWN:"shown"+n,CLICK_DATA_API:"click.bs.tab.data-api"},o="dropdown-menu",a="active",l="disabled",h="fade",c="show",u=".dropdown",f=".nav, .list-group",d=".active",_="> li > .active",g='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',p=".dropdown-toggle",m="> .dropdown-menu .active",v=function(){function n(t){this._element=t}var i=n.prototype;return i.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(a)||t(this._element).hasClass(l))){var n,i,s=t(this._element).closest(f)[0],o=P.getSelectorFromElement(this._element);if(s){var h="UL"===s.nodeName?_:d;i=(i=t.makeArray(t(s).find(h)))[i.length-1]}var c=t.Event(r.HIDE,{relatedTarget:this._element}),u=t.Event(r.SHOW,{relatedTarget:i});if(i&&t(i).trigger(c),t(this._element).trigger(u),!u.isDefaultPrevented()&&!c.isDefaultPrevented()){o&&(n=t(o)[0]),this._activate(this._element,s);var g=function(){var n=t.Event(r.HIDDEN,{relatedTarget:e._element}),s=t.Event(r.SHOWN,{relatedTarget:i});t(i).trigger(n),t(e._element).trigger(s)};n?this._activate(n,n.parentNode,g):g()}}},i.dispose=function(){t.removeData(this._element,e),this._element=null},i._activate=function(e,n,i){var s=this,r=("UL"===n.nodeName?t(n).find(_):t(n).children(d))[0],o=i&&P.supportsTransitionEnd()&&r&&t(r).hasClass(h),a=function(){return s._transitionComplete(e,r,i)};r&&o?t(r).one(P.TRANSITION_END,a).emulateTransitionEnd(150):a()},i._transitionComplete=function(e,n,i){if(n){t(n).removeClass(c+" "+a);var s=t(n.parentNode).find(m)[0];s&&t(s).removeClass(a),"tab"===n.getAttribute("role")&&n.setAttribute("aria-selected",!1)}if(t(e).addClass(a),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),P.reflow(e),t(e).addClass(c),e.parentNode&&t(e.parentNode).hasClass(o)){var r=t(e).closest(u)[0];r&&t(r).find(p).addClass(a),e.setAttribute("aria-expanded",!0)}i&&i()},n._jQueryInterface=function(i){return this.each(function(){var s=t(this),r=s.data(e);if(r||(r=new n(this),s.data(e,r)),"string"==typeof i){if("undefined"==typeof r[i])throw new TypeError('No method named "'+i+'"');r[i]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),n}();return t(document).on(r.CLICK_DATA_API,g,function(e){e.preventDefault(),v._jQueryInterface.call(t(this),"show")}),t.fn.tab=v._jQueryInterface,t.fn.tab.Constructor=v,t.fn.tab.noConflict=function(){return t.fn.tab=i,v._jQueryInterface},v}(e);!function(t){if("undefined"==typeof t)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||e[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=P,t.Alert=L,t.Button=R,t.Carousel=j,t.Collapse=H,t.Dropdown=W,t.Modal=M,t.Popover=x,t.Scrollspy=K,t.Tab=V,t.Tooltip=U,Object.defineProperty(t,"__esModule",{value:!0})});
+//# sourceMappingURL=bootstrap.min.js.map
\ No newline at end of file
diff --git a/kadmos/vistoms/static/lib/bootstrap/jquery-3.js b/kadmos/vistoms/static/lib/bootstrap/jquery-3.js
new file mode 100644
index 0000000000000000000000000000000000000000..105d00e61dc2185c1f9dab1f4f0a0efe3e0fb0ae
--- /dev/null
+++ b/kadmos/vistoms/static/lib/bootstrap/jquery-3.js
@@ -0,0 +1,4 @@
+/*! jQuery v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */
+!function(a,b){"use strict";"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){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.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||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},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?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;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(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;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;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},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(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),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){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(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("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.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?I(k,a)-I(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?I(k,a)-I(k,b):0;if(e===f)return la(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?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$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 ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,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(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.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(_,aa).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("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},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()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).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:oa(!1),disabled:oa(!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 X.test(a.nodeName)},input:function(a){return W.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:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(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 va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(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?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(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}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(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]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.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 r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=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){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.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||b||(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};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a);
+}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S),a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;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},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(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[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.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=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.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 W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.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=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=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};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.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 ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={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,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.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),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(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)ya(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=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,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),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==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,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(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=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.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 Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(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&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(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&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.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 Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(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=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}}),r.fn.delay=function(b,c){return b=r.fx?r.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",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var _a,ab=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?_a:void 0)),void 0!==c?null===c?void r.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=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),_a={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ab[b]||r.find.attr;ab[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ab[g],ab[g]=e,e=null!=c(a,b,d)?g:null,ab[g]=f),e}});var bb=/^(?:input|select|textarea|button)$/i,cb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.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=r.find.attr(a,"tabindex");return b?parseInt(b,10):bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.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)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function db(a){var b=a.match(L)||[];return b.join(" ")}function eb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,eb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=db(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,eb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=eb(c),d=1===c.nodeType&&" "+db(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=db(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):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,eb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=eb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+db(eb(c))+" ").indexOf(b)>-1)return!0;return!1}});var fb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(fb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:db(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var gb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!gb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,gb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var hb=/\[\]$/,ib=/\r?\n/g,jb=/^(?:submit|button|image|reset|file)$/i,kb=/^(?:input|select|textarea|keygen)/i;function lb(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||hb.test(a)?d(a,e):lb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d);
+});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)lb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)lb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&kb.test(this.nodeName)&&!jb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ib,"\r\n")}}):{name:b.name,value:c.replace(ib,"\r\n")}}).get()}}),r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(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 r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.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),r.isFunction(b)&&(b=b.call(a,c,r.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)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),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)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.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)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var mb=a.jQuery,nb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=nb),b&&a.jQuery===r&&(a.jQuery=mb),r},b||(a.jQuery=a.$=r),r});
diff --git a/kadmos/vistoms/static/lib/bootstrap/popper.js b/kadmos/vistoms/static/lib/bootstrap/popper.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f20d2a8959f7259a48331ce34d35a310c2c3e0e
--- /dev/null
+++ b/kadmos/vistoms/static/lib/bootstrap/popper.js
@@ -0,0 +1,5 @@
+/*
+ Copyright (C) Federico Zivolo 2017
+ Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
+ */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll)/.test(r+s+p)?e:n(o(e))}function r(e){var o=e&&e.offsetParent,i=o&&o.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(o.nodeName)&&'static'===t(o,'position')?r(o):o:e?e.ownerDocument.documentElement:document.documentElement}function p(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||r(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function d(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,a=document.createRange();a.setStart(i,0),a.setEnd(n,0);var l=a.commonAncestorContainer;if(e!==l&&t!==l||i.contains(n))return p(l)?l:r(l);var f=s(e);return f.host?d(f.host,t):d(e,s(t).host)}function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',o='top'===t?'scrollTop':'scrollLeft',i=e.nodeName;if('BODY'===i||'HTML'===i){var n=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||n;return r[o]}return e[o]}function l(e,t){var o=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=a(t,'top'),n=a(t,'left'),r=o?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=n*r,e.right+=n*r,e}function f(e,t){var o='x'===t?'Left':'Top',i='Left'==o?'Right':'Bottom';return parseFloat(e['border'+o+'Width'],10)+parseFloat(e['border'+i+'Width'],10)}function m(e,t,o,i){return J(t['offset'+e],t['scroll'+e],o['client'+e],o['offset'+e],o['scroll'+e],ie()?o['offset'+e]+i['margin'+('Height'===e?'Top':'Left')]+i['margin'+('Height'===e?'Bottom':'Right')]:0)}function h(){var e=document.body,t=document.documentElement,o=ie()&&getComputedStyle(t);return{height:m('Height',e,t,o),width:m('Width',e,t,o)}}function c(e){return se({},e,{right:e.left+e.width,bottom:e.top+e.height})}function g(e){var o={};if(ie())try{o=e.getBoundingClientRect();var i=a(e,'top'),n=a(e,'left');o.top+=i,o.left+=n,o.bottom+=i,o.right+=n}catch(e){}else o=e.getBoundingClientRect();var r={left:o.left,top:o.top,width:o.right-o.left,height:o.bottom-o.top},p='HTML'===e.nodeName?h():{},s=p.width||e.clientWidth||r.right-r.left,d=p.height||e.clientHeight||r.bottom-r.top,l=e.offsetWidth-s,m=e.offsetHeight-d;if(l||m){var g=t(e);l-=f(g,'x'),m-=f(g,'y'),r.width-=l,r.height-=m}return c(r)}function u(e,o){var i=ie(),r='HTML'===o.nodeName,p=g(e),s=g(o),d=n(e),a=t(o),f=parseFloat(a.borderTopWidth,10),m=parseFloat(a.borderLeftWidth,10),h=c({top:p.top-s.top-f,left:p.left-s.left-m,width:p.width,height:p.height});if(h.marginTop=0,h.marginLeft=0,!i&&r){var u=parseFloat(a.marginTop,10),b=parseFloat(a.marginLeft,10);h.top-=f-u,h.bottom-=f-u,h.left-=m-b,h.right-=m-b,h.marginTop=u,h.marginLeft=b}return(i?o.contains(d):o===d&&'BODY'!==d.nodeName)&&(h=l(h,o)),h}function b(e){var t=e.ownerDocument.documentElement,o=u(e,t),i=J(t.clientWidth,window.innerWidth||0),n=J(t.clientHeight,window.innerHeight||0),r=a(t),p=a(t,'left'),s={top:r-o.top+o.marginTop,left:p-o.left+o.marginLeft,width:i,height:n};return c(s)}function w(e){var i=e.nodeName;return'BODY'===i||'HTML'===i?!1:'fixed'===t(e,'position')||w(o(e))}function y(e,t,i,r){var p={top:0,left:0},s=d(e,t);if('viewport'===r)p=b(s);else{var a;'scrollParent'===r?(a=n(o(t)),'BODY'===a.nodeName&&(a=e.ownerDocument.documentElement)):'window'===r?a=e.ownerDocument.documentElement:a=r;var l=u(a,s);if('HTML'===a.nodeName&&!w(s)){var f=h(),m=f.height,c=f.width;p.top+=l.top-l.marginTop,p.bottom=m+l.top,p.left+=l.left-l.marginLeft,p.right=c+l.left}else p=l}return p.left+=i,p.top+=i,p.right-=i,p.bottom-=i,p}function E(e){var t=e.width,o=e.height;return t*o}function v(e,t,o,i,n){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var p=y(o,i,r,n),s={top:{width:p.width,height:t.top-p.top},right:{width:p.right-t.right,height:p.height},bottom:{width:p.width,height:p.bottom-t.bottom},left:{width:t.left-p.left,height:p.height}},d=Object.keys(s).map(function(e){return se({key:e},s[e],{area:E(s[e])})}).sort(function(e,t){return t.area-e.area}),a=d.filter(function(e){var t=e.width,i=e.height;return t>=o.clientWidth&&i>=o.clientHeight}),l=0<a.length?a[0].key:d[0].key,f=e.split('-')[1];return l+(f?'-'+f:'')}function O(e,t,o){var i=d(t,o);return u(o,i)}function L(e){var t=getComputedStyle(e),o=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight),n={width:e.offsetWidth+i,height:e.offsetHeight+o};return n}function x(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function S(e,t,o){o=o.split('-')[0];var i=L(e),n={width:i.width,height:i.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',s=r?'left':'top',d=r?'height':'width',a=r?'width':'height';return n[p]=t[p]+t[d]/2-i[d]/2,n[s]=o===s?t[s]-i[a]:t[x(s)],n}function T(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function D(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var i=T(e,function(e){return e[t]===o});return e.indexOf(i)}function C(t,o,i){var n=void 0===i?t:t.slice(0,D(t,'name',i));return n.forEach(function(t){t['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var i=t['function']||t.fn;t.enabled&&e(i)&&(o.offsets.popper=c(o.offsets.popper),o.offsets.reference=c(o.offsets.reference),o=i(o,t))}),o}function N(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=O(this.state,this.popper,this.reference),e.placement=v(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=S(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position='absolute',e=C(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function k(e,t){return e.some(function(e){var o=e.name,i=e.enabled;return i&&o===t})}function W(e){for(var t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<t.length-1;n++){var i=t[n],r=i?''+i+o:e;if('undefined'!=typeof document.body.style[r])return r}return null}function P(){return this.state.isDestroyed=!0,k(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.left='',this.popper.style.position='',this.popper.style.top='',this.popper.style[W('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function B(e){var t=e.ownerDocument;return t?t.defaultView:window}function H(e,t,o,i){var r='BODY'===e.nodeName,p=r?e.ownerDocument.defaultView:e;p.addEventListener(t,o,{passive:!0}),r||H(n(p.parentNode),t,o,i),i.push(p)}function A(e,t,o,i){o.updateBound=i,B(e).addEventListener('resize',o.updateBound,{passive:!0});var r=n(e);return H(r,'scroll',o.updateBound,o.scrollParents),o.scrollElement=r,o.eventsEnabled=!0,o}function I(){this.state.eventsEnabled||(this.state=A(this.reference,this.options,this.state,this.scheduleUpdate))}function M(e,t){return B(e).removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function R(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=M(this.reference,this.state))}function U(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function Y(e,t){Object.keys(t).forEach(function(o){var i='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&U(t[o])&&(i='px'),e.style[o]=t[o]+i})}function j(e,t){Object.keys(t).forEach(function(o){var i=t[o];!1===i?e.removeAttribute(o):e.setAttribute(o,t[o])})}function F(e,t,o){var i=T(e,function(e){var o=e.name;return o===t}),n=!!i&&e.some(function(e){return e.name===o&&e.enabled&&e.order<i.order});if(!n){var r='`'+t+'`';console.warn('`'+o+'`'+' modifier is required by '+r+' modifier in order to work, be sure to include it before '+r+'!')}return n}function K(e){return'end'===e?'start':'start'===e?'end':e}function q(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=ae.indexOf(e),i=ae.slice(o+1).concat(ae.slice(0,o));return t?i.reverse():i}function V(e,t,o,i){var n=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+n[1],p=n[2];if(!r)return e;if(0===p.indexOf('%')){var s;switch(p){case'%p':s=o;break;case'%':case'%r':default:s=i;}var d=c(s);return d[t]/100*r}if('vh'===p||'vw'===p){var a;return a='vh'===p?J(document.documentElement.clientHeight,window.innerHeight||0):J(document.documentElement.clientWidth,window.innerWidth||0),a/100*r}return r}function z(e,t,o,i){var n=[0,0],r=-1!==['right','left'].indexOf(i),p=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=p.indexOf(T(p,function(e){return-1!==e.search(/,|\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\s*,\s*|\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,i){var n=(1===i?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return V(e,n,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,i){U(o)&&(n[t]+=o*('-'===e[i-1]?-1:1))})}),n}function G(e,t){var o,i=t.offset,n=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=n.split('-')[0];return o=U(+i)?[+i,0]:z(i,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e}for(var _=Math.min,X=Math.floor,J=Math.max,Q='undefined'!=typeof window&&'undefined'!=typeof document,Z=['Edge','Trident','Firefox'],$=0,ee=0;ee<Z.length;ee+=1)if(Q&&0<=navigator.userAgent.indexOf(Z[ee])){$=1;break}var i,te=Q&&window.Promise,oe=te?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},$))}},ie=function(){return void 0==i&&(i=-1!==navigator.appVersion.indexOf('MSIE 10')),i},ne=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},re=function(){function e(e,t){for(var o,n=0;n<t.length;n++)o=t[n],o.enumerable=o.enumerable||!1,o.configurable=!0,'value'in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}return function(t,o,i){return o&&e(t.prototype,o),i&&e(t,i),t}}(),pe=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},se=Object.assign||function(e){for(var t,o=1;o<arguments.length;o++)for(var i in t=arguments[o],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},de=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],ae=de.slice(3),le={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},fe=function(){function t(o,i){var n=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};ne(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=oe(this.update.bind(this)),this.options=se({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=o&&o.jquery?o[0]:o,this.popper=i&&i.jquery?i[0]:i,this.options.modifiers={},Object.keys(se({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){n.options.modifiers[e]=se({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return se({name:e},n.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)}),this.update();var p=this.options.eventsEnabled;p&&this.enableEventListeners(),this.state.eventsEnabled=p}return re(t,[{key:'update',value:function(){return N.call(this)}},{key:'destroy',value:function(){return P.call(this)}},{key:'enableEventListeners',value:function(){return I.call(this)}},{key:'disableEventListeners',value:function(){return R.call(this)}}]),t}();return fe.Utils=('undefined'==typeof window?global:window).PopperUtils,fe.placements=de,fe.Defaults={placement:'bottom',eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split('-')[0],i=t.split('-')[1];if(i){var n=e.offsets,r=n.reference,p=n.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',l={start:pe({},d,r[d]),end:pe({},d,r[d]+r[a]-p[a])};e.offsets.popper=se({},p,l[i])}return e}},offset:{order:200,enabled:!0,fn:G,offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||r(e.instance.popper);e.instance.reference===o&&(o=r(o));var i=y(e.instance.popper,e.instance.reference,t.padding,o);t.boundaries=i;var n=t.priority,p=e.offsets.popper,s={primary:function(e){var o=p[e];return p[e]<i[e]&&!t.escapeWithReference&&(o=J(p[e],i[e])),pe({},e,o)},secondary:function(e){var o='right'===e?'left':'top',n=p[o];return p[e]>i[e]&&!t.escapeWithReference&&(n=_(p[o],i[e]-('right'===e?p.width:p.height))),pe({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';p=se({},p,s[t](e))}),e.offsets.popper=p,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=X,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]<r(i[d])&&(e.offsets.popper[d]=r(i[d])-o[a]),o[d]>r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var i;if(!F(e.instance.modifiers,'arrow','keepTogether'))return e;var n=o.element;if('string'==typeof n){if(n=e.instance.popper.querySelector(n),!n)return e;}else if(!e.instance.popper.contains(n))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',g=a?'bottom':'right',u=L(n)[l];d[g]-u<s[m]&&(e.offsets.popper[m]-=s[m]-(d[g]-u)),d[m]+u>s[g]&&(e.offsets.popper[m]+=d[m]+u-s[g]),e.offsets.popper=c(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=J(_(s[l]-u,v),0),e.arrowElement=n,e.offsets.arrow=(i={},pe(i,m,Math.round(v)),pe(i,h,''),i),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(k(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split('-')[0],n=x(i),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case le.FLIP:p=[i,n];break;case le.CLOCKWISE:p=q(i);break;case le.COUNTERCLOCKWISE:p=q(i,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(i!==s||p.length===d+1)return e;i=e.placement.split('-')[0],n=x(i);var a=e.offsets.popper,l=e.offsets.reference,f=X,m='left'===i&&f(a.right)>f(l.left)||'right'===i&&f(a.left)<f(l.right)||'top'===i&&f(a.bottom)>f(l.top)||'bottom'===i&&f(a.top)<f(l.bottom),h=f(a.left)<f(o.left),c=f(a.right)>f(o.right),g=f(a.top)<f(o.top),u=f(a.bottom)>f(o.bottom),b='left'===i&&h||'right'===i&&c||'top'===i&&g||'bottom'===i&&u,w=-1!==['top','bottom'].indexOf(i),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),y&&(r=K(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=se({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=C(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],i=e.offsets,n=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return n[p?'left':'top']=r[o]-(s?n[p?'width':'height']:0),e.placement=x(t),e.offsets.popper=c(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!F(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=T(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<o.top||t.left>o.right||t.top>o.bottom||t.right<o.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var o=t.x,i=t.y,n=e.offsets.popper,p=T(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==p&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var s,d,a=void 0===p?t.gpuAcceleration:p,l=r(e.instance.popper),f=g(l),m={position:n.position},h={left:X(n.left),top:X(n.top),bottom:X(n.bottom),right:X(n.right)},c='bottom'===o?'top':'bottom',u='right'===i?'left':'right',b=W('transform');if(d='bottom'==c?-f.height+h.bottom:h.top,s='right'==u?-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[u]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==u?-1:1;m[c]=d*w,m[u]=s*y,m.willChange=c+', '+u}var E={"x-placement":e.placement};return e.attributes=se({},E,e.attributes),e.styles=se({},m,e.styles),e.arrowStyles=se({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return Y(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&Y(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,i,n){var r=O(n,t,e),p=v(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),Y(t,{position:'absolute'}),o},gpuAcceleration:void 0}}},fe});
+//# sourceMappingURL=popper.min.js.map
diff --git a/kadmos/vistoms/static/lib/vistoms.css b/kadmos/vistoms/static/lib/vistoms.css
index 5acab2b8e43d5525b035e0184af91b3fb319cff4..13b76c4854286a6af8433c1222060ee516109ccf 100644
--- a/kadmos/vistoms/static/lib/vistoms.css
+++ b/kadmos/vistoms/static/lib/vistoms.css
@@ -1,24 +1,66 @@
+.carousel-control-prev-icon,
+.carousel-control-next-icon {
+  height: 100px;
+  width: 100px;
+  outline: none;
+  background-size: 100%, 100%;
+  background-image: none;
+}
+
+.carousel-control-next-icon:after
+{
+  content: '>';
+  font-size: 32pt;
+  font-weight: bold;
+  color: #6c757d;
+}
+
+.carousel-control-prev-icon:after {
+  content: '<';
+  font-size: 32pt;
+  font-weight: bold;
+  color: #6c757d;
+}
+
+.carousel-indicators li {
+    border-radius:0pt;
+    width: 20pt;
+    height: 3pt;
+    display: inline-block;
+    background-color: #6c757d;
+}
+.carousel-indicators .active {
+    border-radius:0pt;
+    width: 20pt;
+    height: 5pt;
+    background-color: #545b62;
+}
+
+.bootbox-input-select {
+	font-size: 8pt
+}
+
 .graph_menu {
 	font-family:Arial;
 	font-size:16pt;
 }
-.graph_menu *{margin: 0; padding: 0;}
+.graph_menu *{margin: 0; padding: 0; border-radius:5pt;}
 .graph_menu {margin-left: 0px}
 .graph_menu nav{margin-left: 0px; margin-top: 10}
 .graph_menu ul{list-style: none;}
 
-.graph_menu ul li{ width: 250px; background: #555555; float: left; height: 45px; line-height: 45px; text-align: left; margin-right: 2px; position: relative;}
-.graph_menu ul li:hover{ background: #888;}
+.graph_menu ul li{ width: 250px; background: #6c757d; float: left; height: 45px; line-height: 45px; text-align: left; margin-right: 2px; position: relative;}
+.graph_menu ul li:hover{ background: #545b62;}
 .graph_menu ul li a{color: #fff; text-decoration: none; padding-left: 6px; font-family: sans-serif; display: block;}
 .graph_menu ul li ul li{ border-top: 1px solid #fff;}
 .graph_menu ul li ul{display: none;}
 .graph_menu ul li:hover ul{ display: block;}
 
 .graph_menu ul li ul .data_model_view{position: absolute; left: 248px; top: 0; display: none;}
-.graph_menu ul li ul .data_model_view li{width: 120px}
+.graph_menu ul li ul .data_model_view li{width: 140px}
 .graph_menu ul li ul li:hover .data_model_view{display: block;}
 
-.graph_menu ul li ul li ul .view_options{position: absolute; left: 118px; top: 0; display: none;}
+.graph_menu ul li ul li ul .view_options{position: absolute; left: 138px; top: 0; display: none;}
 .graph_menu ul li ul li ul .view_options li{width: 220px}
 .graph_menu ul li ul li ul li:hover .view_options{display: block;}
 
diff --git a/kadmos/vistoms/static/pictures/AGILE_Logo.png b/kadmos/vistoms/static/pictures/AGILE_Logo.png
index ccdb4d4b1093ba56c9c7c98a3d0b53c8deb62d2e..a9e2cae589446fd10b9c0524e5dc5094ad13991c 100644
Binary files a/kadmos/vistoms/static/pictures/AGILE_Logo.png and b/kadmos/vistoms/static/pictures/AGILE_Logo.png differ
diff --git a/kadmos/vistoms/static/pictures/AGILE_Logo_large.png b/kadmos/vistoms/static/pictures/AGILE_Logo_large.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d2d021814e6ae5f022c1f4a6a04d6ca6505b64c
Binary files /dev/null and b/kadmos/vistoms/static/pictures/AGILE_Logo_large.png differ
diff --git a/kadmos/vistoms/static/pictures/CMDOWS_logo.png b/kadmos/vistoms/static/pictures/CMDOWS_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..bbfb479b63ce4680f1ef60cdb1da5ecd3495de63
Binary files /dev/null and b/kadmos/vistoms/static/pictures/CMDOWS_logo.png differ
diff --git a/kadmos/vistoms/static/pictures/EdgeBundles.png b/kadmos/vistoms/static/pictures/EdgeBundles.png
new file mode 100644
index 0000000000000000000000000000000000000000..220afe1bd7633cb7a88b2b5df2e9a2b2d8e941cd
Binary files /dev/null and b/kadmos/vistoms/static/pictures/EdgeBundles.png differ
diff --git a/kadmos/vistoms/static/pictures/KADMOS_logo.pdf b/kadmos/vistoms/static/pictures/KADMOS_logo.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..28e2eaa6ac91d1cc95b1d92c5af62c863e44dcb3
Binary files /dev/null and b/kadmos/vistoms/static/pictures/KADMOS_logo.pdf differ
diff --git a/kadmos/vistoms/static/pictures/KADMOS_logo.png b/kadmos/vistoms/static/pictures/KADMOS_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..55749df05ab444298bdc022e419958263fe5d640
Binary files /dev/null and b/kadmos/vistoms/static/pictures/KADMOS_logo.png differ
diff --git a/kadmos/vistoms/static/pictures/SankeyDiagram.png b/kadmos/vistoms/static/pictures/SankeyDiagram.png
new file mode 100644
index 0000000000000000000000000000000000000000..bff77fd23bb0888494d1713bbde36ff56e538494
Binary files /dev/null and b/kadmos/vistoms/static/pictures/SankeyDiagram.png differ
diff --git a/kadmos/vistoms/static/pictures/XDSM.png b/kadmos/vistoms/static/pictures/XDSM.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4ed347df78857370abe493bfa247d28f502e263
Binary files /dev/null and b/kadmos/vistoms/static/pictures/XDSM.png differ
diff --git a/kadmos/vistoms/static/agile.png b/kadmos/vistoms/static/pictures/agile.png
similarity index 100%
rename from kadmos/vistoms/static/agile.png
rename to kadmos/vistoms/static/pictures/agile.png
diff --git a/kadmos/vistoms/static/agile_logo_small.png b/kadmos/vistoms/static/pictures/agile_logo_small.png
similarity index 100%
rename from kadmos/vistoms/static/agile_logo_small.png
rename to kadmos/vistoms/static/pictures/agile_logo_small.png
diff --git a/kadmos/vistoms/static/agile_partners.png b/kadmos/vistoms/static/pictures/agile_partners.png
similarity index 100%
rename from kadmos/vistoms/static/agile_partners.png
rename to kadmos/vistoms/static/pictures/agile_partners.png
diff --git a/kadmos/vistoms/static/pictures/background.jpeg b/kadmos/vistoms/static/pictures/background.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..16e5512caeb16ee4567363e956c56b833141d4d1
Binary files /dev/null and b/kadmos/vistoms/static/pictures/background.jpeg differ
diff --git a/kadmos/vistoms/templates/VISTOMS.html b/kadmos/vistoms/templates/VISTOMS.html
index 7c610b732b8ae7b9326933b1a39e183775aed654..e7b27b10b3b272e27e1ed96efab7a95d6899a2cd 100644
--- a/kadmos/vistoms/templates/VISTOMS.html
+++ b/kadmos/vistoms/templates/VISTOMS.html
@@ -6,31 +6,103 @@
 <meta name="apple-mobile-web-app-status-bar-style" content="default">
 <head">
     <meta charset="utf-8">
-    <title>VISTOMS (Visualization Tool for MDO Systems)</title>
+    <title>MDO System Interface</title>
     <!--Include this css file in the <head> tag -->
-    <link rel="stylesheet" href="static/lib/jquery/jquery-ui.min.css"/>
+    <link rel="stylesheet" href="static/lib/bootstrap/bootstrap.css" rel="stylesheet">
     <link rel="stylesheet" href="static/lib/bootstrap/bootstrap.min.css"/>
+    <link rel="stylesheet" href="static/lib/jquery/jquery-ui.min.css"/>
     <link rel="stylesheet" href="static/lib/lobipanel/github.css"/>
     <link rel="stylesheet" href="static/lib/lobipanel/lobipanel.min.css"/>
     <link rel="stylesheet" href="static/lib/vistoms.css"/>
 </head>
-<body>
-    <!--Include these script files in the <head> or <body> tag-->
-    <script src="static/lib/jquery/jquery.3.20.min.js"></script>
-    <script src="static/lib/jquery/jquery-ui.min.js"></script>
-    <script src="static/lib/jquery/jquery.ui.touch-punch.min.js"></script>
-    <script src="static/lib/bootstrap/bootstrap.min.js"></script>
-    <script src="static/lib/bootstrap/bootbox.min.js"></script>
-    <script src="static/lib/lobipanel/highlight.pack.js"></script>
-    <script src="static/lib/lobipanel/lobipanel.js"></script>
-    <script src="static/lib/vkbeautify/vkbeautify.js"></script>
-    <script src="static/lib/bowser/bowser.js"></script>
+
+ <!-- Bootstrap core JavaScript
+================================================== -->
+<!-- Placed at the end of the document so the pages load faster -->
+<script src="static/lib/bootstrap/jquery-3.js" integrity="" crossorigin="anonymous"></script>
+<script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery-slim.min.js"><\/script>')</script>
+<script src="static/lib/bootstrap/popper.js"></script>
+<script src="static/lib/bootstrap/bootstrap.js"></script>
+<script src="static/lib/jquery/jquery.3.20.min.js"></script>
+<script src="static/lib/jquery/jquery-ui.min.js"></script>
+<script src="static/lib/jquery/jquery.ui.touch-punch.min.js"></script>
+<script src="static/lib/bootstrap/bootstrap.min.js"></script>
+<script src="static/lib/bootstrap/bootbox.min.js"></script>
+<script src="static/lib/lobipanel/highlight.pack.js"></script>
+<script src="static/lib/lobipanel/lobipanel.js"></script>
+<script src="static/lib/vkbeautify/vkbeautify.js"></script>
+<script src="static/lib/bowser/bowser.js"></script>
+
+<body>    
+    <nav style="position:fixed" class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
+      <div class="collapse navbar-collapse" id="navbarsExampleDefault">
+        <ul class="navbar-nav mr-auto">
+          <li style="margin-left:10pt" class="nav-item">
+            <a id="mainPage" class="nav-link" style="cursor: pointer"><span style="font-size: 18pt" title="Home" class="glyphicon glyphicon-home"></span></a>           
+          </li>
+          <li style="margin-left:10pt" class="nav-item">
+            <a id="tutorial" class="nav-link" target="_blank" href="http://www.agile-project.eu/files/VISTOMS_Tutorial.mp4"><span style="font-size: 18pt" title="Tutorial" class="glyphicon glyphicon-question-sign"></span></a>
+          </li>
+          <li style="margin-left:10pt" class="nav-item">
+            <a id="email" class="nav-link" href="mailto:support@agile-project.eu"><span style="font-size: 18pt" title="Contact support team" class="glyphicon glyphicon-envelope"></span></a>           
+          </li>
+          <li style="margin-left:10pt" class="nav-item">
+            <a id="acknowledgements" class="nav-link" href="#"><span style="font-size: 18pt" title="Acknowledgements" class="glyphicon glyphicon-thumbs-up"></span></a>
+          </li>
+          <div style="margin-left:10pt" class="dropdown">
+              <button style="font-size:18pt" class="btn btn-secondary dropdown-toggle" type="button" id="inspect_button"  data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                Open
+              </button>
+              <div id="inspect_dropdown" style="font-size:14pt" class="dropdown-menu" aria-labelledby="inspect_button">
+              </div>              
+          </div>
+          <div style="margin-left:10pt; float:left" class="dropdown">
+              <button style="font-size:18pt" class="btn btn-secondary dropdown-toggle" type="button" id="addGraph" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                Add
+              </button>
+              <div style="font-size:14pt" class="dropdown-menu" aria-labelledby="addGraph">
+                <a id="from_scratch" class="dropdown-item" onmouseover=""  style="cursor: pointer;">Create graph from scratch</a>
+                <a id="kdms_upload" class="dropdown-item" onmouseover=""  style="cursor: pointer;">Upload KDMS file(s)</a>
+                <a id="cmdows_upload" class="dropdown-item" onmouseover=""  style="cursor: pointer;">Upload CMDOWS file(s)</a>
+                <a id="database_upload" class="dropdown-item" onmouseover=""  style="cursor: pointer;">Upload database (zip-file)</a>
+              </div>              
+          </div>
+          <div id="save_div" style="margin-left: 10pt; float:left; visibility:hidden" class="dropdown">
+              <a style="font-size:18pt; color:white" class="btn btn-secondary" type="button" id="save_button">Save</a>           
+          </div>
+		  <div id="delete_div" style="margin-left: 10pt; float:left; visibility:hidden">
+              <a style="font-size:18pt; color:white" class="btn btn-secondary" type="button" id="delete_button">Delete</a>
+          </div>
+          
+        </ul>
+        <div style="float: none;text-align: center;" class="navbar-header">
+            <img style="margin-bottom:10pt" src="static/pictures/AGILE_Icon.png" width="40" height="40"></img>
+            <a style="color: white;font-size:24pt; float:none" class="navbar-brand">MDO System Interface</a>
+       </div>
+       
+      </div>
+    </nav>
+
+    <main style="" id="main" role="main">
+      <!-- Main jumbotron for a primary marketing message or call to action -->
+      <div style="margin-top:10pt;" class="jumbotron">
+        <div class="container">
+          <h1 class="display-3">Welcome to the MDO System Interface!</h1>
+          <p style="font-size: 18pt">This package has been created within the context of the European Horizon 2020 project <a href="http://www.agile-project.eu/" target="_blank"><img src="static/pictures/AGILE_Logo_large.png" width="100" height="20"></img></a> </p>
+          </br></br>
+          <p style="font-size: 12pt">To set up, modify, or inspect an already existing MDO system, click "Open" in the navigation bar, select the graph you would like to see and choose one of the visualization types (XDSM, Edge Bundles, Sankey Diagram).</p>
+          <p style="font-size: 12pt">If you haven't set up a system yet, or you want to add a new one, use the "Add" option to upload an MDO system file, or start a new system from scratch.</p>
+          <p style="font-size: 12pt">You can also save all your currently active graphs at once by using the "Save" option.</p>
+        </div>
+      </div>
+    </main>   
+</body>
     <script>           
 			var sessionId = {{ sessionId|tojson }};
 			var interfaceMode = {{ interfaceMode|tojson }};
             if (bowser.name=="Internet Explorer")
 			{
-                alert("OOPS! VISTOMS unfortunately does not work properly on " + bowser.name + ". Please use a different browser to see its awesome visualization features!")
+                alert("OOPS! The MDO System Interface unfortunately does not work properly on " + bowser.name + ". Please use a different browser to see its awesome visualization features!")
 			}
             /* see docs: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage */
 			if (window && window.localStorage && interfaceMode==='server')
@@ -85,6 +157,7 @@
                 else {message = content.message}
                 bootbox.hideAll();
                 bootbox.dialog({
+                closeButton: false,
                 title: content.title,
                 message: message,
                 buttons : { cancel:
@@ -102,6 +175,7 @@
                 bootbox.hideAll();
                 bootbox.dialog(
                 {
+                    closeButton: false,
                     title: content.title,
                     message: content.message,
                     buttons : { cancel:
@@ -117,6 +191,7 @@
             {
                 bootbox.hideAll();
                 bootbox.dialog({
+                    closeButton: false,
                     title: content.title,
                     message: content.message,
                     buttons : { cancel:
@@ -128,6 +203,7 @@
                                     bootbox.hideAll();
                                     bootbox.dialog(
                                     {
+                                        closeButton: false,
                                         title: content.title,
                                         message: "<b>KADMOS request aborted!</b> <p>CAUTION: Python functions could still be running in the background!</p>",
                                         buttons : { cancel:
@@ -159,6 +235,63 @@
                     }
                 });
             }
+			
+			function delete_graphs(graphIDs)
+			{
+				var bootboxContent = {title: "Deleting graphs", message: '<p>Please be patient...</p>'};
+				bootbox.hideAll();
+				bootbox.confirm("Are you sure you want to permanently delete these graphs? <b>This cannot be reverted!</b>", function(sure)
+				{
+					if (sure)
+					{   
+						graphIDs_str = JSON.stringify(graphIDs)
+						var xhr = $.ajax(
+						{
+							type: 'POST',
+							url: '/kadmos_delete_graphs',
+							data: {'graphIDs':graphIDs_str, 'sessionId': sessionId},
+							success: function(result)
+							{
+								if (result.includes("ERROR:"))
+								{
+									bootboxContent.message = result
+									kadmosErrorMessage(bootboxContent);
+								}
+								else
+								{                                        
+									var dataArray = result;       
+									var data = []
+									if (dataArray.length == 0){data="REP__GRAPH_DATA__REP"}
+									else{data = {"graphs":[], "categories":""};}
+									for (var i = 0; i < dataArray.length; i++)
+									{
+										var data_tmp = JSON.parse(dataArray[i])
+										data.graphs.push(data_tmp.graphs[0]);
+										if (data.categories == [])
+										{
+											data.categories = data_tmp.categories;                                        
+										}
+									}
+									
+									clearView();
+									makeKadmosMenu(data);
+									mainPage();
+									
+									bootboxContent.message = "Graphs were sucessfully deleted!"
+									kadmosSuccessMessage(bootboxContent)
+								}
+							},
+							error: function(result)
+							{
+								bootboxContent.message = result
+								kadmosErrorMessage(bootboxContent);
+							}
+						});
+						kadmosHavePatience(xhr, bootboxContent)
+					}
+				})
+				
+			}
             //##############################################################
              
             //aigner: Function to filter a list with a search
@@ -310,10 +443,6 @@
             function makeKadmosMenu(data, initial=false)
 			{
                 //First of all, clear everything if it is already there
-                var visPackDiv = d3.select(".visPackDiv");
-                if(visPackDiv){visPackDiv.remove()};
-                var navigationBarDiv = d3.select(".navigationBarDiv");
-                if(navigationBarDiv){navigationBarDiv.remove()};
                 var lobiPanels = d3.selectAll(".lobipanel");
                 if (lobiPanels)
                 {
@@ -322,135 +451,33 @@
                         this.remove();
                     })
                 }
-                                
-				var imageWidth = 200;
-				var imageHeight = 150;
-				var padding = 10;
-				var rectHeight = 70;
-				var imgSize = 40;
-				visPackDiv = d3.select("body").append("div").attr("class","visPackDiv");
-				var visPackSvg = visPackDiv.append("svg")
-					.attr("class","visPackSvg")
-					.attr("width",imageWidth*5+40)
-					.attr("height",imageHeight+40)
-					.attr("transform", "translate("
-					  + String(10) + "," + String(10) + ")")			  
-				
-				var visPackFrame = visPackSvg.append("rect")
-					.attr("width",imageWidth*5+12)
-					.attr("height",imageHeight)
-					.attr("fill", "none")
-				
-				var imgs = visPackSvg.selectAll("image1").data([0]);
-					imgs.enter()
-					.append("svg:image")
-					.attr("x",5)
-					.attr("xlink:href", fileReference.AGILE_Logo)
-					.attr("width", imageWidth)
-					.attr("height", imageHeight)
-					.attr("position", "relative")
-					
-				var imgs = visPackSvg.selectAll("image2").data([0]);
-					imgs.enter()
-					.append("svg:image")
-					.attr("x",210)
-					.attr("y",-5)
-					.attr("xlink:href", fileReference.VISTOMS_Label)
-					.attr("width", "180pt")
-					.attr("height", "70pt")
-					
-					
-					
-				//Set general offset for Buttons, acknowledgements and so on
-				var offset_tmp = 645;	
 				
 				
-				//aigner: Make Acknowledgments, Help and Home buttons
+				//@aigner: Make Acknowledgments, Help and Home buttons
 				//##########################################################
-				visPackSvg.append("rect")
-				.attr("transform", "translate("+ String(offset_tmp+17) + "," + String(0) + ")")
-				.attr("fill", "#555555")
-				.attr("width", 186)
-				.attr("height", 40)
-				
-				function makeButton(anId, aText,aPicFile, anOffset, aScale, picX, picY)
-				{
-					var buttonGroup = visPackSvg.append("a").classed("buttonGroup",true)
-					buttonGroup
-						.attr("class",anId)
-						.append("svg:title").text(aText)
-					var polygon = buttonGroup.append("polygon").classed("button",true)
-						.attr("points", "30,15 22.5,28.0 7.5,28 0,15 7.5,2 22.5,2")
-						.attr("transform", "translate("+ String(anOffset) + "," + String(2) + ") scale(1.2)")
-					buttonGroup.append("image")
-						.attr("xlink:href",aPicFile)
-						.attr("height",50)
-						.attr("width",50)
-						.attr("transform", "translate("+ String(anOffset+picX) + "," + String(picY) + ") scale("+aScale+")")
-					buttonGroup
-						.on("mouseover", function()
-						{
-							polygon.style("fill","#3399FF")
-							d3.select(this).style("cursor", "pointer")
-						})
-						.on("mouseleave", function()
-						{
-							polygon.style("fill","#555555")
-						})
-				}
 				///Home button
-				var distance = 45;
-				var currentOffset = offset_tmp+25;
-				makeButton("id_mainPage","Main Page",fileReference.Home, currentOffset, 0.45, 6.9,7.2);
-				d3.select(".id_mainPage").on("click",function()
+				d3.select("#mainPage").on("mousedown",function()
 				{		
 					mainPage();
 				})
-				//help button
-				currentOffset+=distance;
-				makeButton("id_turorial","Tutorial",fileReference.Tutorial, currentOffset, 0.45, 6.8, 7.5);
-				d3.select(".id_turorial").on("click",function()
-				{			
-					tutorial();
-				})
-				//Contact button
-				currentOffset+=distance;
-				makeButton("id_contact","Contact the support team",fileReference.Contact, currentOffset, 0.45, 6.9, 9);
-				d3.select(".id_contact").on("click",function()
-				{				
-					sendMail("VISTOMS support");
-				})
-					
-				//Acknowledgements button
-				currentOffset+=distance;
-				makeButton("id_acknowledgements","Acknowledgements",fileReference.Acknowledgements, currentOffset, 0.45, 7, 8);
-				d3.select(".id_acknowledgements").on("click",function()
-				{
+                d3.select("#acknowledgements").on("mousedown",function()
+				{		
 					acknowledgements();
 				})
+				//##########################################################               
+                
+				//aigner: Remove save and delete buttons at first
+				//##########################################################
+				var save_div = d3.select("#save_div")
+				save_div.style("visibility","hidden")
+				var delete_div = d3.select("#delete_div")
+				delete_div.style("visibility","hidden")
 				//##########################################################
 				
-                var navigationBarDiv = d3.select("body").append("div").attr("class","navigationBarDiv")
-                var ul = navigationBarDiv.append("ul")
-                navigationBarDiv.on("mouseover", function()
-                {
-                    d3.select(this).style("z-index","1300");
-                })
-                .on("mouseout", function()
-                {
-                    d3.select(this).style("z-index","");
-                })
-                var generalPanel_div = d3.select(".generalPaneDiv")
-                if (generalPanel_div)
-                    generalPanel_div.remove();
-                    
-                
-                
-                
                 var tmpGraphsAvailable = false;
 				if (initial)
                 {
-                    var bootboxContent = {title: "VISTOMS start", message: '<p>Please be patient...</p>'};
+                    var bootboxContent = {title: "Session start", message: '<p>Please be patient...</p>'};
                     var xhr = $.ajax({
                         type: 'POST',
                         url: '/kadmos_find_temp_graphs',
@@ -483,18 +510,17 @@
                                 
                                 if (tmpGraphsAvailable)
                                 {
-                                    bootboxContent.title = "VISTOMS ready"
-                                    bootboxContent.message = "KADMOS found already existing VISTOMS graphs. You can select them from the drop-down menu."
+                                    bootboxContent.title = "Interface ready!"
+                                    bootboxContent.message = "There are already existing graphs. You can select them from the drop-down menu."
                                     kadmosSuccessMessage(bootboxContent)
                                 }
                                 else {bootbox.hideAll();}
-                                
                                 //aigner: make dropwdown section for the multiple MDO graphs tzhat can be visualized
-                                makeViewButtons(data,"XDSM","xdsm");
-                                makeViewButtons(data,"Edge Bundles","edgeBundles");
-                                makeViewButtons(data,"Sankey Diagram","sankeyDiagram");
+                                make_open_button(data);
                                 //aigner: Add special button to open graphs from kdms or cmdows files
-                                generalPanel(data.graphs);
+                                add_graph_dropdown(data.graphs);
+                                save_graphs_dropdown(data.graphs);
+                                delete_graphs_dropdown(data.graphs);
                             }
                         },
                         error: function(result)
@@ -508,11 +534,11 @@
                 else
                 {
                     //aigner: make dropwdown section for the multiple MDO graphs tzhat can be visualized
-                    makeViewButtons(data,"XDSM","xdsm");
-                    makeViewButtons(data,"Edge Bundles","edgeBundles");
-                    makeViewButtons(data,"Sankey Diagram","sankeyDiagram");
+                    make_open_button(data);
                     //aigner: Add special button to open graphs from kdms or cmdows files
-                    generalPanel(data.graphs);
+                    add_graph_dropdown(data.graphs);
+                    save_graphs_dropdown(data.graphs);
+                    delete_graphs_dropdown(data.graphs);
                 }
                 
                 
@@ -520,29 +546,15 @@
                 
 				//aigner: make dropwdown section for the multiple MDO graphs tzhat can be visualized
 				//##########################################################           
-				function makeViewButtons(data,name, aView)
+				function make_open_button(data)
 				{
                     var numberOfGraphs = 0;
-					var dropdown1 = ul.append("li")
-                        .on("mouseover", function()
-                        {
-                            d3.select(this).style("cursor", "default")
-                        })
-                       
-					dropdown1.append("a").text(name)
-					dropdown1.append("img").attr("src",fileReference.AGILE_Icon)
-						.attr("align","left")
-						.style("margin-left","6px")
-						.style("margin-right","0px")
-						.style("margin-top","10px")
-						.style("margin-bottom","6px")
-						.attr("height","42")
-						.attr("width","42")
-					var links = dropdown1.append("ul");             
+					var dropdown = d3.select("#inspect_dropdown")
+                    if (dropdown){dropdown.selectAll("a").remove();}
                     if (data=="REP__GRAPH_DATA__REP" && !tmpGraphsAvailable)
                     {                  
-                        var linkLi = links.append("li");
-                        var link = linkLi.append("a")
+                        dropdown.append("a")
+                            .attr("class","dropdown-item")
                             .style("font-style","Italic")
                             .text("No graphs to inspect ...")
                             .on("mouseover", function(){d3.select(this).style("cursor", "pointer")})
@@ -550,7 +562,8 @@
                                     
                                 bootbox.hideAll();
                                 bootbox.dialog({
-                                    message: "No graph to inspect in VISTOMS yet! \nYou can add a graph by uploading a KDMS or CMDOWS file.",
+                                    closeButton: false,
+                                    message: "No graph to inspect yet! \nYou can add a graph by uploading a KDMS or CMDOWS file.",
                                     buttons : { cancel:
                                                 {
                                                     label: "OK",
@@ -564,51 +577,69 @@
                     else
                     {
                         var graphs_tmp = data.graphs;
-                        for (var i=0; i < graphs_tmp.length; i++)
+                        graphs_tmp.forEach(function(theGraph)
                         {
-                            makeDropDown(data,graphs_tmp[i],aView,links)
+                            var name_tmp="";
+                            if (theGraph.name){name_tmp=theGraph.name}
+                            else{name_tmp="Graph " + theGraph.id}
+                            dropdown.append("a")
+                                .attr("class","dropdown-item")
+                                .text(name_tmp)
+                                .on("mouseover", function(){d3.select(this).style("cursor", "pointer")})
+                                .on("click", function()
+                                {
+                                        bootbox.prompt({
+                                        closeButton: false,
+                                        title: "Please select the visualization type",
+                                        inputType: 'select',
+                                        value: 'xdsm',
+                                        inputOptions: [
+                                            {
+                                                text: 'XDSM view',
+                                                value: 'xdsm',
+                                            },
+                                            {
+                                                text: 'Edge Bundles view',
+                                                value: 'edgeBundles',
+                                            },
+                                            {
+                                                text: 'Sankey Diagram',
+                                                value: 'sankeyDiagram',
+                                            }
+                                        ],
+                                        callback: function (theView) {
+                                            if (theView == "xdsm")
+                                            {
+                                                clearView();
+                                                xdsm_script(data,theGraph.id)
+                                            }
+                                            else if (theView == "edgeBundles")
+                                            {
+                                                clearView();
+                                                edgeBundles_script(data,theGraph.id)
+                                            }
+                                            else if (theView == "sankeyDiagram")
+                                            {
+                                                clearView();
+                                                sankeyDiagram_script(data,theGraph.id)
+                                            }
+                                            else
+                                            {}
+                                        }
+                                    });
+                                })
                             numberOfGraphs ++;
-                        }
+                        })
                     }
-                    
-                    
 				}
                 
-				function makeDropDown(theData,theGraph,theView,theLinks)
-				{
-					var linkLi = theLinks.append("li");
-					var name_tmp="";
-					if (theGraph.name){name_tmp=theGraph.name}
-					else{name_tmp="Graph " + theGraph.id}
-					var link = linkLi.append("a").text(name_tmp)
-						.text(name_tmp)
-						.on("mouseover", function(){d3.select(this).style("cursor", "pointer")})
-						.on("click", function()
-                        {
-							clearView();					
-							if (theView == "xdsm")
-                            {
-                                xdsm_script(theData,theGraph.id)
-                            }
-							else if (theView == "edgeBundles")
-                            {
-                                edgeBundles_script(theData,theGraph.id)
-                            }
-							else if (theView == "sankeyDiagram")
-                            {
-                                sankeyDiagram_script(theData,theGraph.id)
-                            }
-                        })
-				}
 				//##########################################################
                 
                 
                 //aigner: Add general panel to open and save graphs and for adding contacts to the organization
-                //##########################################################
-                function generalPanel(theGraphs)
-                {
-                    var generalPanel_div = d3.select("body").append("div").attr("class","generalPaneDiv")
-                    
+                //##########################################################                               
+                function add_graph_dropdown(theGraphs)
+                {                   
                     var newGraphID = '01';
                     if (theGraphs)
                     {
@@ -620,383 +651,348 @@
                         })
                     }
                     
-                    var addButtonPanel = generalPanel_div.append("div")
-                        .attr("class","panel panel-default")
-                        .attr("id","addButton")
-                        .style("display","inline-block")
-                        .style("min-width","200px")
-                        .style("margin-left","10px")
-                    addButtonPanel.append("div").attr("class","panel-heading text-center align-top")
-                        .style("background-color","#555555")
-                        .append("h3")
-                        .attr("class","panel-title")
-                        .style("font-family","Arial")
-                        .style("font-size","14pt")
-                        .style("color","white")
-                        .style("display","inline-block")
-                        .text("Add graph")
-                    var panelBody = addButtonPanel.append("div").attr("class","panel-body")
-                        .style("font-family","Arial")
-                        .style("font-size","8pt")
-                        .style("display","inline-block")
-                    
-                    
-                    var options = ["Choose...", "Create graph from scratch", "Upload KDMS file(s)", "Upload CMDOWS file", "Upload Database"];
-
-                    var select = panelBody.append('select')
-                        .attr('id','addselect')
-                        .attr('class','select')
-                        .on('change',onchange)
-
-                    var options = select.selectAll('option')
-                        .data(options).enter()
-                        .append('option')
-                            .text(function (d) { return d; });
-                    
-                    
-                    var form = panelBody.append("form").attr("id","addForm")
-                        .attr("method","post")
-                        .attr("enctype","multipart/form-data")
-                    var label = form.append("label")
-                    var fileText;
-                    var file;
-                    var submit;
-                    var selectValue;
-                    
-                    function onchange() {
-                        if (include(d3.select('#addselect').property('value'),"Create"))
-                        {
-                            selectValue = "Create"
-                            if (file){
-                                fileText.remove();
-                                file.remove();
-                            }
-                            if (submit){submit.remove();}
-                            submit = label.append("button")
-                                .style("margin-top","10pt")
-                                .attr("type","submit")
-                                .attr("class","btn btn-primary")
-                                .text("Go!")
-                        }
-                        else if (include(d3.select('#addselect').property('value'),"KDMS"))
-                        {
-                            selectValue = "KDMS"
-                            if (file){
-                                fileText.remove();
-                                file.remove();
-                            }
-                            if (submit){submit.remove();}
-                            fileText = label.append("text")
-                                .style("font-family","Arial")
-                                .style("font-size","12pt")
-                                .text("Choose KDMS files (max. 2: 1 data graph & 1 process graph)")
-                            file = label.append("input").attr("type","file").attr("name","file[]").attr("multiple","")
-                            submit = label.append("input").attr("type","submit").attr("value","Submit");
-                        }
-                        else if (include(d3.select('#addselect').property('value'),"CMDOWS"))
-                        {   
-                            selectValue = "CMDOWS"
-                            if (file){
-                                fileText.remove();
-                                file.remove();
-                            }
-                            if (submit){submit.remove();}
-                            fileText = label.append("text")
-                                .style("font-family","Arial")
-                                .style("font-size","12pt")
-                                .text("Choose any CMDOWS file")
-                            file = label.append("input").attr("type","file").attr("name","file[]")
-                            submit = label.append("input").attr("type","submit").attr("value","Submit");
-                        }
-                        else if (include(d3.select('#addselect').property('value'),"Database"))
-                        {             
-                            selectValue = "Database"
-                            if (file){
-                                fileText.remove();
-                                file.remove();
-                            }
-                            if (submit){submit.remove();}
-                            fileText = label.append("text")
-                                .style("font-family","Arial")
-                                .style("font-size","12pt")
-                                .text("Choose any zip file containing a database")
-                            file = label.append("input").attr("type","file").attr("name","file[]")
-                            submit = label.append("input").attr("type","submit").attr("value","Submit");
-                        }
-                        else{}
-                    };
-                    
-                    $('#addForm').on('submit',function(event){
-                        event.preventDefault();
-                        //aigner: Uploading files for KADMOS
-                        var formData = new FormData($('#addForm')[0]);
-                        formData.append('newGraphID', newGraphID);
-                        formData.append('fileType',selectValue);
-                        formData.append('sessionId',sessionId)
-                       
-                       
-                        if (selectValue == "Create")
-                        {
-                            bootbox.hideAll();
-                            var html = d3.select("html")
-                            var form_content = html.append("div").attr("class","form-content").attr("style","display:none")
-                            var form = form_content.append("form").attr("class","form").attr("role","form")
-                            var form_group, input;
-                                
-                            //Tool information
-                            form_group = form.append("div").attr("class","form-group")
-                            form_group.append("text").text("Name")
-                            input = form_group.append("input")
-                                .attr("id","graph_name")
-                                .attr("class","form-control")
-                                .attr("name","graph_name")
-                                .attr("placeholder","Add a graph name here...")
-                            //Tool information
-                            form_group = form.append("div").attr("class","form-group")
-                            form_group.append("text").text("Description")
-                            input = form_group.append("input")
-                                .attr("id","graph_description")
-                                .attr("class","form-control")
-                                .attr("name","graph_description")
-                                .attr("placeholder","Add a graph description here...")
+                    d3.select("#from_scratch").on("mousedown", function()
+					{
+						bootbox.hideAll();
+                        var html = d3.select("html")
+                        var form_content = html.append("div").attr("class","form-content").attr("style","display:none")
+                        var form = form_content.append("form").attr("class","form").attr("role","form")
+                        var form_group, input;
                             
-                           bootbox.dialog({
-                                message: $(".form-content").html(),
-                                title: "Create new graph",
-                                size: "large",
-                                buttons: [
-                                  {
-                                    label: "Cancel",
-                                    className: "btn btn-default pull-left",
-                                    callback: function() {
-                                      d3.selectAll(".form-content").remove();
-                                    }
-                                  },
-                                  {
-                                    label: "OK",
-                                    className: "btn btn-primary pull-left",
-                                    callback: function() {
-                                        
-                                        //get form data
-                                        var graph_name = $('form #graph_name').val();
-                                        var graph_description = $('form #graph_description').val();
-                                        
-                                        
-                                        var bootboxContent = {title: "Create new graph", message: '<p>Please be patient...</p>'};
-                                        var xhr = $.ajax({
-                                            type: 'POST',
-                                            url: '/kadmos_create_new_graph',
-                                            data: {'graph_name':graph_name, 'graph_description':graph_description, 'graphID':newGraphID, 'sessionId':sessionId},
-                                            success: function(result)
+                        //Tool information
+                        form_group = form.append("div").attr("class","form-group")
+                        form_group.append("text").text("Name")
+                        input = form_group.append("input")
+                            .attr("id","graph_name")
+                            .attr("class","form-control")
+                            .attr("name","graph_name")
+                            .attr("placeholder","Add a graph name here...")
+                        //Tool information
+                        form_group = form.append("div").attr("class","form-group")
+                        form_group.append("text").text("Description")
+                        input = form_group.append("input")
+                            .attr("id","graph_description")
+                            .attr("class","form-control")
+                            .attr("name","graph_description")
+                            .attr("placeholder","Add a graph description here...")
+                        
+                       bootbox.dialog({
+                            closeButton: false,
+                            message: $(".form-content").html(),
+                            title: "Create new graph",
+                            size: "large",
+                            buttons: [
+                              {
+                                label: "Cancel",
+                                className: "btn btn-default pull-left",
+                                callback: function() {
+                                  d3.selectAll(".form-content").remove();
+                                }
+                              },
+                              {
+                                label: "OK",
+                                className: "btn btn-primary pull-left",
+                                callback: function() {
+                                    
+                                    //get form data
+                                    var graph_name = $('form #graph_name').val();
+                                    var graph_description = $('form #graph_description').val();
+                                    
+                                    
+                                    var bootboxContent = {title: "Create new graph", message: '<p>Please be patient...</p>'};
+                                    var xhr = $.ajax({
+                                        type: 'POST',
+                                        url: '/kadmos_create_new_graph',
+                                        data: {'graph_name':graph_name, 'graph_description':graph_description, 'graphID':newGraphID, 'sessionId':sessionId},
+                                        success: function(result)
+                                        {
+                                            if (result.includes("ERROR:"))
                                             {
-                                                if (result.includes("ERROR:"))
+                                                bootboxContent.message = result
+                                                kadmosErrorMessage(bootboxContent);
+                                                
+                                                clearView();
+                                                makeKadmosMenu(data);
+                                                mainPage();
+                                            }
+                                            else
+                                            {
+                                                var updatedData = {};
+                                                if (data != "REP__GRAPH_DATA__REP")
                                                 {
-                                                    bootboxContent.message = result
-                                                    kadmosErrorMessage(bootboxContent);
-                                                    
-                                                    clearView();
-                                                    makeKadmosMenu(data);
-                                                    mainPage();
+                                                    updatedData = data;
+                                                    var graphData = JSON.parse(result);                                        
+                                                    updatedData.graphs.push(graphData.graphs[0]);                                        
                                                 }
                                                 else
                                                 {
-                                                    var updatedData = {};
-                                                    if (data != "REP__GRAPH_DATA__REP")
-                                                    {
-                                                        updatedData = data;
-                                                        var graphData = JSON.parse(result);                                        
-                                                        updatedData.graphs.push(graphData.graphs[0]);                                        
-                                                    }
-                                                    else
-                                                    {
-                                                        updatedData = JSON.parse(result);
-                                                    }
-                                                                                                        
-                                                    clearView();
-                                                    makeKadmosMenu(updatedData);
-                                                    mainPage();
-                                                    
-                                                    bootboxContent.message = "Success!"
-                                                    kadmosSuccessMessage(bootboxContent)
-                                                    
+                                                    updatedData = JSON.parse(result);
                                                 }
-                                            },
-                                            error: function(result)
-                                            {
-                                                bootboxContent.message = result
-                                                kadmosErrorMessage(bootboxContent);
+                                                                                                    
+                                                clearView();
+                                                makeKadmosMenu(updatedData);
+                                                mainPage();
+                                                
+                                                bootboxContent.message = "Success!"
+                                                kadmosSuccessMessage(bootboxContent)
+                                                
                                             }
-                                        });
-                                        kadmosHavePatience(xhr, bootboxContent)
-                                        d3.selectAll(".form-content").remove();
-                                    }
-                                  }
-                                ]
-                            });
-                        }
-                        else
-                        {
-                            //aigner: Upload file to VISTOMS and inspect it
-                            //##########################################################
-                            var bootboxContent = {title: "Upload file to VISTOMS", message: '<p>Please be patient...</p>'};
-                            var xhr = $.ajax({
-                                type: 'POST',
-                                url: '/kadmos_upload_file',
-                                data: formData,
-                                processData: false,
-                                contentType: false,
-                                success: function(result)
-                                {
-                                    if (result.includes("ERROR:"))
-                                    {
-                                        
-                                        
-                                        bootboxContent.message = result
-                                        kadmosErrorMessage(bootboxContent);
-                                        
-                                        clearView();
-                                        makeKadmosMenu(data);
-                                        mainPage();
-                                    }
-                                    else
-                                    {
-                                        var updatedData = {};
-                                        if (data != "REP__GRAPH_DATA__REP")
-                                        {
-                                            updatedData = data;
-                                            var graphData = JSON.parse(result);                                        
-                                            updatedData.graphs.push(graphData.graphs[0]);                                        
-                                        }
-                                        else
+                                        },
+                                        error: function(result)
                                         {
-                                            updatedData = JSON.parse(result);
+                                            bootboxContent.message = result
+                                            kadmosErrorMessage(bootboxContent);
                                         }
-                                        
-                                        clearView();
-                                        makeKadmosMenu(updatedData);
-                                        mainPage();
-                                        
-                                        bootboxContent.message = "Success!"
-                                        kadmosSuccessMessage(bootboxContent)
-                                        
-                                    }
-                                },
-                                error: function(result)
-                                {
-                                    bootboxContent.message = result
-                                    kadmosErrorMessage(bootboxContent);
+                                    });
+                                    kadmosHavePatience(xhr, bootboxContent)
+                                    d3.selectAll(".form-content").remove();
                                 }
-                            });
-                            kadmosHavePatience(xhr, bootboxContent)
-                            //##########################################################
-                        
-                        }
-                    });
+                              }
+                            ]
+                        });
+					})
                     
-                    if (theGraphs)
+                    d3.select("#kdms_upload").on("mousedown", function()
+					{
+                        prepare_graphUpload("Upload KDMS file(s)", "Choose KDMS files (max. 2: 1 data graph & 1 process graph)", "KDMS")
+                    })
+                    
+                    d3.select("#cmdows_upload").on("mousedown", function()
+					{
+                        prepare_graphUpload("Upload CMDOWS file", "Choose CMDOWS file", "CMDOWS")
+                    })
+                    
+                    d3.select("#database_upload").on("mousedown", function()
+					{
+                        prepare_graphUpload("Upload Database", "Choose Database zip file", "Database")
+                    })
+                    
+                    function prepare_graphUpload(title, text, fileType)
                     {
-                        var saveButtonPanel = generalPanel_div.append("div")
-                            .attr("class","panel panel-default")
-                            .attr("id","saveButton")
-                            .style("display","inline-block")
-                            .style("min-width","200px")
-                            .style("margin-left","10px")
-                        saveButtonPanel.append("div").attr("class","panel-heading text-center align-top")
-                            .style("background-color","#555555")
-                            .append("h3")
-                            .attr("class","panel-title")
-                            .style("font-family","Arial")
-                            .style("font-size","14pt")
-                            .style("color","white")
-                            .style("display","inline-block")
-                            .text("Save all graphs")
-                        var savepanelBody = saveButtonPanel.append("div").attr("class","panel-body")
-                            .style("font-family","Arial")
-                            .style("font-size","8pt")
-                            .style("display","inline-block")
-                        
-                        
-                        var options = ["Choose...","KDMS files", "CMDOWS files"];
-
-                        var saveselect = savepanelBody.append('select')
-                            .attr('id','saveselect')
-                            .attr('class','select')
-                            .on('change',onchange)
-
-                        var options = saveselect.selectAll('option')
-                            .data(options).enter()
-                            .append('option')
-                                .text(function (d) { return d; });
-                        
-                        
-                        var saveform = savepanelBody.append("form").attr("id","saveForm")
-                            .attr("method","post")
-                            .attr("enctype","multipart/form-data")
-                        var savelabel = saveform.append("label")
-                        var saveSubmit;
-                        var selectValue;
-                        
-                        function onchange() {
-                            selectValue = d3.select('#saveselect').property('value')
-                            if (saveSubmit){saveSubmit.remove();}
-                            if (selectValue!="Choose...")
-                            {
-                                saveSubmit = savelabel.append("input").attr("type","submit").attr("value","Save");
-                            }
-                        };
-                        
-                        $('#saveForm').on('submit',function(event){
+                        bootbox.dialog({
+                            closeButton: false,
+                            title: title,
+                            message: "<form id='addForm' method='post' enctype='multipart/form-data' ><label><text>"+text+"</text><input type='file' name='file[]' multiple=''></input><input type='submit' value='Submit'></input></label></form>",
+                            buttons: [{
+                            label: "Cancel",
+                            className: "btn btn-danger pull-left",
+                            callback: function() {}}]
+                        });
+                        $('#addForm').on('submit',function(event){
                             event.preventDefault();
                             //aigner: Uploading files for KADMOS
-                            //##########################################################
-                            bootbox.hideAll();
-                            var bootboxContent = {title: "Save graph", message: '<p>Please be patient...</p>'};
-                            var xhr = $.ajax(
+                            var formData = new FormData($('#addForm')[0]);
+                            formData.append('newGraphID', newGraphID);
+                            formData.append('fileType', fileType);
+                            formData.append('sessionId',sessionId)
+                            upload_graph(formData);
+                        });
+                    }
+                    
+                    function upload_graph(formData)
+                    {
+                        //aigner: Upload file to VISTOMS and inspect it
+                        //##########################################################
+                        var bootboxContent = {title: "Upload file to interface", message: '<p>Please be patient...</p>'};
+                        var xhr = $.ajax({
+                            type: 'POST',
+                            url: '/kadmos_upload_files',
+                            data: formData,
+                            processData: false,
+                            contentType: false,
+                            success: function(result)
                             {
-                                type: 'POST',
-                                data: {'fileType': selectValue, 'sessionId': sessionId},
-                                url: '/kadmos_export_all_graphs',
-                                success: function(result)
-                                {                  
-                                    var files = result
-                                    files.forEach(function(file)
-                                    {
-                                        download_from_kadmos(file,"/kadmos_download/"+file+"/"+sessionId)
-                                    })
-                                    
-                                    
-                                    if (result.includes("ERROR:"))
-                                    {
-                                        bootboxContent.message = result
-                                        kadmosErrorMessage(bootboxContent);
-                                    }
-                                    else
-                                    {
-                                        bootboxContent.message = "Successfully created the files. Ready for download."
-                                        bootbox.hideAll();
-                                        bootbox.confirm(
-                                        {
-                                            title: bootboxContent.title,
-                                            message: bootboxContent.message,
-                                            callback: function(){
-                                                remove_obsolete_files()
-                                            }
-                                        });
-                                    }
-                                },
-                                error: function(result)
+                                if (result.includes("ERROR:"))
                                 {
+                                    
                                     bootboxContent.message = result
                                     kadmosErrorMessage(bootboxContent);
+                                    
+                                    clearView();
+                                    makeKadmosMenu(data);
+                                    mainPage();
                                 }
-                            });
-                            kadmosHavePatience(xhr, bootboxContent)
-                            //##########################################################
+                                else
+                                {
+									var dataArray = result;        
+									var updatedData = {};
+									if (data != "REP__GRAPH_DATA__REP")
+									{
+										updatedData = data;
+									}
+									else
+									{
+										updatedData = {"graphs":[], "categories":""};
+									}
+									for (var i = 0; i < dataArray.length; i++)
+									{
+										var graphData = JSON.parse(dataArray[i]);       
+										updatedData.graphs.push(graphData.graphs[0]); 
+									}
+									                                    
+                                    clearView();
+                                    makeKadmosMenu(updatedData);
+                                    mainPage();
+                                    
+                                    bootboxContent.message = "Success!"
+                                    kadmosSuccessMessage(bootboxContent)
+                                    
+                                }
+                            },
+                            error: function(result)
+                            {
+                                bootboxContent.message = result
+                                kadmosErrorMessage(bootboxContent);
+                            }
                         });
+                        kadmosHavePatience(xhr, bootboxContent)
+                        //##########################################################
                     }
-                    d3.select("#mainPage").moveToFront()
+                    
                 }
-			}
+				
+				function save_graphs_dropdown(theGraphs)
+				{
+					function save_graphs(graphNames, graphIDs, fileType)
+					{
+						var graphIDs_str = JSON.stringify(graphIDs)
+						var graphNames_str = JSON.stringify(graphNames)
+						//aigner: Saving files
+						//##########################################################
+						bootbox.hideAll();
+						var bootboxContent = {title: "Save graph", message: '<p>Please be patient...</p>'};
+						var xhr = $.ajax(
+						{
+							type: 'POST',
+							data: {'fileNames_str':graphNames_str, 'graphIDs_str':graphIDs_str, 'fileType': fileType, 'sessionId': sessionId},
+							url: '/kadmos_export_graphs',
+							success: function(result)
+							{                  
+								var files = result
+								files.forEach(function(file)
+								{
+									download_from_kadmos(file,"/kadmos_download/"+file+"/"+sessionId)
+								})
+								
+								
+								if (result.includes("ERROR:"))
+								{
+									bootboxContent.message = result
+									kadmosErrorMessage(bootboxContent);
+								}
+								else
+								{
+									bootboxContent.message = "Successfully created the files. Ready for download."
+									bootbox.hideAll();
+									bootbox.confirm(
+									{
+										closeButton: false,
+										title: bootboxContent.title,
+										message: bootboxContent.message,
+										callback: function(){
+											remove_obsolete_files()
+										}
+									});
+								}
+							},
+							error: function(result)
+							{
+								bootboxContent.message = result
+								kadmosErrorMessage(bootboxContent);
+							}
+						});
+						kadmosHavePatience(xhr, bootboxContent)
+						//##########################################################
+					}
+					
+                    if (theGraphs)
+                    {
+						var options = []
+                        theGraphs.forEach(function(theGraph)
+                        {
+							options.push({text:theGraph.name, value:theGraph.id})
+                        })
+						
+                        var save_div = d3.select("#save_div")
+                        save_div.style("visibility","visible")
+						var save_button = d3.select("#save_button")
+						save_button.on("mousedown", function()
+                        {
+                            bootbox.hideAll();
+							bootbox.prompt({
+								closeButton: false,
+								title: "Which graphs should be saved?",
+								inputType: 'checkbox',
+								inputOptions: options,
+								callback: function (graphIDs) {
+									if (graphIDs != null)
+									{	
+										graphNames = []
+										theGraphs.forEach(function(theGraph)
+										{
+											if (graphIDs.indexOf(theGraph.id) > -1)
+											{
+												graphNames.push(theGraph.name)
+											}
+										})
+										bootbox.prompt({
+											closeButton: false,
+											title: "Please select a filetype",
+											inputType: 'select',
+											inputOptions: [{text:"Please choose...", value:"-"},
+											               {text:"CMDOWS", value:"cmdows"},
+														   {text:"KDMS", value:"kdms"}],
+											value: "-",
+											callback: function (filetype) {
+												if (filetype != null)
+												{
+													save_graphs(graphNames,graphIDs,filetype)
+													//@aigner: HIER WEITER!!!
+												}
+											}
+										});
+									}
+								}
+							});
+                        })
+                    }
+				}
+				
+				
+				
+				function delete_graphs_dropdown(theGraphs)
+				{
+                    if (theGraphs)
+                    {
+						var options = []
+                        theGraphs.forEach(function(theGraph)
+                        {
+							options.push({text:theGraph.name, value:theGraph.id})
+                        })
+						
+                        var delete_div = d3.select("#delete_div")
+                        delete_div.style("visibility","visible")
+						var delete_button = d3.select("#delete_button")
+						delete_button.on("mousedown", function()
+                        {
+                            bootbox.hideAll();
+							bootbox.prompt({
+								closeButton: false,
+								title: "Which graphs should be deleted?",
+								inputType: 'checkbox',
+								inputOptions: options,
+								callback: function (graphIDs) {
+									if (graphIDs != null)
+									{
+										delete_graphs(graphIDs)
+										//@aigner: HIER WEITER!!!
+									}
+								}
+							});
+                        })
+                    }
+				}
+            }
 			//##########################################################
 
 
@@ -1012,55 +1008,72 @@
 
 
 			//#####################################################################//
+            //@aigner: !!!
 			function mainPage()
 			{	
 				clearView();
-				var introDiv = d3.select("body").append("div")
-					.attr("id","mainPage")
-					.classed("wordWrap",true)
+                
+                var visualizationTypes = "<div id='visualizationTypes'><div><div class='container' style='margin-top:0pt;'><h2>Explore your MDO systems with three different visualization types...</h2></div></div><div style='height: 500pt' id='myCarousel' class='carousel slide' data-ride='carousel'><ol class='carousel-indicators'><li data-target='#myCarousel' data-slide-to='0' class=''></li><li data-target='#myCarousel' data-slide-to='1' class='active'></li><li data-target='#myCarousel' data-slide-to='2' class=''></li></ol><div style='height: 100%;' class='carousel-inner'><div style='height: 100%; background-color: #fff' class='carousel-item'><div class='container'><img class='first-slide' src='static/pictures/XDSM.png' style='width:100%; margin-top: 50pt' alt=''><div class='carousel-caption'><h1 style='color: #5a5a5a; text-shadow: none'>Extended Design Structure Matrix (XDSM)</h1></div></div></div><div style='height: 100%; background-color: #fff' class='carousel-item active carousel-item'><div class='container'><img class='second-slide' src='static/pictures/EdgeBundles.png' style='display: block; width:50%; margin:auto' alt=''><div class='carousel-caption'><h1 style='color: #5a5a5a; text-shadow: none'>Edge Bundling Diagram</h1></div></div></div><div style='height: 100%; background-color: #fff' class='carousel-item carousel-item-next carousel-item'><div class='container'><img class='third-slide' src='static/pictures/SankeyDiagram.png' style='display: block; width:50%; margin:auto; margin-top:20pt' alt=''><div class='carousel-caption'><h1 style='color: #5a5a5a; text-shadow: none'>Sankey Diagram</h1></div></div></div></div><a class='carousel-control-prev' href='#myCarousel' role='button' data-slide='prev'><span class='carousel-control-prev-icon' aria-hidden='true'></span><span class='sr-only'>Previous</span></a><a class='carousel-control-next' href='#myCarousel' role='button' data-slide='next'><span class='carousel-control-next-icon' aria-hidden='true'></span><span class='sr-only'>Next</span></a></div></div>";
+                var technologies = "<div id='technologies' style='' class='jumbotron'><div class='container'><h1 style='font-size:24pt'>The MDO System Interface is powered by the following technologies</h1><div style='margin-top:20pt' class='row'><div class='col-md-4'><h2 style='font-size:20pt'><img  src='static/pictures/KADMOS_Logo.png' width='150' height='40'/></h2><p style='font-size:12pt'><b>K</b>nowledge- and graph-based <b>A</b>gile <b>D</b>esign with <b>M</b>ultidisciplinary <b>O</b>ptimization <b>S</b>ystem</p><p style='font-size:10pt'>KADMOS is the python-based engine running under the hood of the MDO System Interface. To get more information on its capabilities, go to the open-source KADMOS repository.</p><p style='margin-bottom:10pt'><button style='font-size:12pt' class='btn btn-secondary' onclick='window.open(\"https://bitbucket.org/imcovangent/kadmos\")'>KADMOS repository »</button></p></div><div class='col-md-4'><h2 style='font-size:20pt'><img src='static/pictures/CMDOWS_Logo.png' width='40' height='%0'/> CMDOWS</h2><p style='font-size:12pt'><b>C</b>ommon <b>MDO</b> <b>W</b>orkflow <b>S</b>chema</p><p style='font-size:10pt'>CMDOWS is the XML-based storage system for MDO systems. It contains all the data of an MDO system including the tools, their interconnections, execution order, optimization strategy, etc. <br> To get more information, please go to the open-source CMDOWS repository.</p><p style='margin-bottom:10pt'><button style='font-size:12pt' class='btn btn-secondary' onclick='window.open(\"https://bitbucket.org/imcovangent/cmdows\")'>CMDOWS repository »</button></p></div><div class='col-md-4'><h2 style='font-size:20pt'><img src='static/pictures/VISTOMS_Label.png' width='150' height='45'/></h2><p style='font-size:12pt'><b>VIS</b>ualization <b>TO</b>ol for <b>M</b>DO <b>S</b>ystems</p><p style='font-size:10pt'>VISTOMS is the graphical user interface that allows you to easily set up, inspect and modify your MDO systems. If you need more information about how to use it, simply click on the tutorial button in the navigation bar, or just click on the button below.</p><p style='margin-bottom:10pt'><button style='font-size:12pt' class='btn btn-secondary'  onclick='window.open(\"http://www.agile-project.eu/files/VISTOMS_Tutorial.mp4\")'>Tutorial »</button></p></div></div><hr></div></div>";
+                var footer = "<footer style=''' class='container'><p>© Benedikt Aigner (RWTH Aachen) & Imco van Gent (TU Delft) 2016-2018</p><p><a style='padding:5pt' href=\"https://www.rwth-aachen.de\" target='_blank'><img  title='RWTH Aachen Homepage' src='static/pictures/RWTH_Logo.png' width='150' height='40'></img></a><a style='padding:5pt' href=\"https://www.tudelft.nl/\" target='_blank'><img  title='TU Delft Homepage' src='static/pictures/TUDelft_Logo.png' width='100' height='40'></img></a></p></footer>";
+                
+                
+                d3.select("#main").append("div").html(visualizationTypes)
+                d3.select("#main").append("div").html(technologies)
+                d3.select("#main").append("div").html(footer)
+				<!-- var introDiv = d3.select("body").append("div") -->
+					<!-- .attr("id","mainPage") -->
+					<!-- .classed("wordWrap",true) -->
 				
-				var theHeading = "Welcome to <b>VISTOMS</b>, the <b>VIS</b>ualization <b>TO</b>ol for <b>M</b>DO <b>S</b>ystems!\n";
-				introDiv.append("text")
-				.style("font-size","16pt")
-				.html(theHeading)
+				<!-- var theHeading = "Welcome to the MDO System Interface!\n" -->
+                <!-- introDiv.append("text") -->
+                    <!-- .style("font-size","16pt") -->
+                    <!-- .html(theHeading) -->
 				
-				var theText = "\nTo inspect an MDO system, go to one of the visualizations in the navigation bar (XDSM, Edge Bundles, or Sankey Diagram). Then select a graph from the dropdown menu.\n\nIf you need help with how to use the visualization package, there is a tutorial video available. Just click on the \"Tutorial\" symbol in the top right corner.";
-				introDiv.append("text").text(theText)
-				introDiv.append("text")
-					.style("font-size","8pt")
-					.html("\n\n\nCopyright 2016-2018 by Benedikt Aigner (RWTH Aachen) & Imco van Gent (TU Delft)")
+				<!-- var theText = "The interface is a combination of two open-source packages, the <b>K</b>nowledge- and graph-based <b>A</b>gile <b>D</b>esign with <b>M</b>ultidisciplinary <b>O</b>ptimization <b>S</b>ystem (<b>KADMOS</b>) " -->
+                            <!-- +"and the <b>VIS</b>ualization <b>TO</b>ol for <b>M</b>DO <b>S</b>ystems (<b>VISTOMS</b>). " -->
+                            <!-- +"While KADMOS is the python-based engine running under the hood, VISTOMS is the graphical user interface to facilitate the setup of your MDO systems." -->
+                            <!-- +"\n\nTo set up, modify, or inspect an already existing MDO system, go to one of the visualizations in the navigation bar (XDSM, Edge Bundles, or Sankey Diagram). Then select a graph from the dropdown menu." -->
+                            <!-- +"\n\nIf you haven't already set up a system, use the \"Add graph\" option to upload an MDO system file, or start a new system from scratch." -->
+                            <!-- +"\n\nIf you need help with how to use the package, there is a tutorial video available. Just click on the \"Tutorial\" symbol in the top right corner." -->
+                            <!-- +"\n\nIf you want to get more information on the package, here is a link to the open-source <b><a target=\"_blank\" href=\"https://bitbucket.org/imcovangent/kadmos\">KADMOS repository</a></b> "; -->
+				<!-- introDiv.append("text").html(theText) -->
+				<!-- introDiv.append("text") -->
+					<!-- .style("font-size","8pt") -->
+					<!-- .html("\n\n\nCopyright 2016-2018 by Benedikt Aigner (RWTH Aachen) & Imco van Gent (TU Delft)") -->
 				
-				var introSvg = introDiv.append("svg")
-					.attr("width",500)
-					.attr("height",100)
-				var imgs = introSvg.selectAll("img").data([0]);
-					imgs.enter()
-					.append("svg:image")
-					.attr("xlink:href", fileReference.RWTH_Logo)
-					.attr("width", "150")
-					.attr("height", "70")
-					.on("mouseover", function(){d3.select(this).style("cursor", "pointer")})
-					.on("click",function(){window.open("https://www.rwth-aachen.de/", '_blank');} )
-				var imgs = introSvg.selectAll("img").data([0]);
-					imgs.enter()
-					.append("svg:image")
-					.attr("xlink:href", fileReference.TUDelft_Logo)
-					.attr("x", 175)
-					.attr("y", 5)
-					.attr("width", "105")
-					.attr("height", "50")
-					.on("mouseover", function(){d3.select(this).style("cursor", "pointer")})
-					.on("click",function(){window.open("https://www.tudelft.nl/en/", '_blank');} )
+				<!-- var introSvg = introDiv.append("svg") -->
+					<!-- .attr("width",500) -->
+					<!-- .attr("height",100) -->
+				<!-- var imgs = introSvg.selectAll("img").data([0]); -->
+					<!-- imgs.enter() -->
+					<!-- .append("svg:image") -->
+					<!-- .attr("xlink:href", fileReference.RWTH_Logo) -->
+					<!-- .attr("width", "150") -->
+					<!-- .attr("height", "70") -->
+					<!-- .on("mouseover", function(){d3.select(this).style("cursor", "pointer")}) -->
+					<!-- .on("click",function(){window.open("https://www.rwth-aachen.de/", '_blank');} ) -->
+				<!-- var imgs = introSvg.selectAll("img").data([0]); -->
+					<!-- imgs.enter() -->
+					<!-- .append("svg:image") -->
+					<!-- .attr("xlink:href", fileReference.TUDelft_Logo) -->
+					<!-- .attr("x", 175) -->
+					<!-- .attr("y", 5) -->
+					<!-- .attr("width", "105") -->
+					<!-- .attr("height", "50") -->
+					<!-- .on("mouseover", function(){d3.select(this).style("cursor", "pointer")}) -->
+					<!-- .on("click",function(){window.open("https://www.tudelft.nl/en/", '_blank');} ) -->
 
 			}
 			//#####################################################################//
 
 			//#####################################################################//
+            //@aigner: !!!
 			function acknowledgements()
 			{				
 				clearView();
 				var acknDiv = d3.select("body").append("div")
-					.attr("id","acknowledgements")
+					.attr("id","acknowledgements_text")
 					.classed("acknText", true)
 					.classed("wordWrap",true)
 				
@@ -1073,138 +1086,134 @@
 					.style("font-size","10pt")
 					.style("margin", "20px 10px")
 					.html("<br><br>Created by Benedikt Aigner and Imco van Gent for the "
-						+"<a href=\"http://www.agile-project.eu/\">AGILE Project</a> in 2016. This project has received funding from the European Union's Horizon 2020 research and innovation framework programme under grant agreement No 636202."
+						+"<a target='_blank' href=\"http://www.agile-project.eu/\">AGILE Project</a> in 2016. This project has received funding from the European Union's Horizon 2020 research and innovation framework programme under grant agreement No 636202."
 						+"<br>"
 						+"<br>"
 						+"<b>VISTOMS was created using the following open source packages:</b>"
 						+"<br>"
-						+"<a href=\"https://d3js.org/\">D3.js</a> package &copy 2015 by Mike Bostock released under the <a href=\"https://opensource.org/licenses/BSD-3-Clause\">BSD license</a>"
+						+"<a target='_blank' href=\"https://d3js.org/\">D3.js</a> package &copy 2015 by Mike Bostock released under the <a target='_blank' href=\"https://opensource.org/licenses/BSD-3-Clause\">BSD license</a>"
+						+"<br>"
+						+"<a target='_blank' href=\"https://github.com/OneraHub/XDSMjs\">XDSM.js </a> package &copy 2016 by R&eacutemi Lafage released under the <a target='blank' href=\"http://www.apache.org/licenses/LICENSE-2.0\">Apache License, Version 2.0</a>"
 						+"<br>"
-						+"<a href=\"https://github.com/OneraHub/XDSMjs\">XDSM.js </a> package &copy 2016 by R&eacutemi Lafage released under the <a href=\"http://www.apache.org/licenses/LICENSE-2.0\">Apache License, Version 2.0</a>"
+						+"<a target='_blank' href=\"https://github.com/Neilos/bihisankey\">BiHiSankey.js</a> package &copy 2015 by Neil Atkinson released under the <a target='blank' href=\"https://opensource.org/licenses/MIT\">MIT License</a>"
 						+"<br>"
-						+"<a href=\"https://github.com/Neilos/bihisankey\">BiHiSankey.js</a> package &copy 2015 by Neil Atkinson released under the <a href=\"https://opensource.org/licenses/MIT\">MIT License</a>"
 						+"<br>"
+                        +"<b>For further information on KADMOS, please visit the open-source <a target='_blank' href=\"https://bitbucket.org/imcovangent/kadmos/\">KADMOS repository</a> </b>"
 						+"<br>"
 						+"<br>"
-						+"<font size=\"-2\">Rev. 10/24/2018</font>")
+						+"<br>"
+						+"<font size=\"-2\">Rev. 10/29/2018</font>")
 			}
 			//#####################################################################//
 
 			//#####################################################################//
+            //@aigner: !!!
 			function tutorial()
 			{
-				var theButtons = 
-				{
-					cancel: {
-						label: "OK, got it!",
-						className: 'btn-danger',
-						callback: function(){}
-					},
-					Feedback: {
-						label: "Feedback",
-						className: 'btn-warning',
-						callback: function(){sendMail("VISTOMS feedback")}
-					},
-					Tutorial: {
-						label: "Tutorial",
-						className: 'btn-info',
-						callback: function(){showTutorialPage();}
-					}
-				}
+				<!-- var theButtons =  -->
+				<!-- { -->
+					<!-- cancel: { -->
+						<!-- label: "OK, got it!", -->
+						<!-- className: 'btn-danger', -->
+						<!-- callback: function(){} -->
+					<!-- }, -->
+					<!-- Feedback: { -->
+						<!-- label: "Feedback", -->
+						<!-- className: 'btn-warning', -->
+						<!-- callback: function(){sendMail("VISTOMS feedback")} -->
+					<!-- }, -->
+					<!-- Tutorial: { -->
+						<!-- label: "Tutorial", -->
+						<!-- className: 'btn-info', -->
+						<!-- callback: function(){showTutorialPage();} -->
+					<!-- } -->
+				<!-- } -->
 				
 				
-				function showTutorialPage()
-				{
-					clearView();
-					var tutorialDiv = d3.select("body").append("div")
-						.attr("id","tutorial")
-						.style("margin-top", "16px")
-						.style("font-size","16pt")
-						.style("margin", "20px 10px")
-						.style("color","#555555")
+				<!-- function showTutorialPage() -->
+				<!-- { -->
+					<!-- clearView(); -->
+					<!-- var tutorialDiv = d3.select("body").append("div") -->
+						<!-- .attr("id","tutorial") -->
+						<!-- .style("margin-top", "16px") -->
+						<!-- .style("font-size","16pt") -->
+						<!-- .style("margin", "20px 10px") -->
+						<!-- .style("color","#555555") -->
 					
-					var theHeading = "<b>VISTOMS Tutorial</b><br/><br/>";
-					tutorialDiv.append("text")
-					.style("font-size","16pt")
-					.html(theHeading)
+					<!-- var theHeading = "<b>VISTOMS Tutorial</b><br/><br/>"; -->
+					<!-- tutorialDiv.append("text") -->
+					<!-- .style("font-size","16pt") -->
+					<!-- .html(theHeading) -->
 					
-					tutorialDiv.append("div")
-						.style("-webkit-overflow-scrolling", "touch")
-						.style("-webkit-text-size-adjust", "none")
-						.html("<video width=\"1000\" height=\"563\" controls>"
-							+"<source src=\"http://www.agile-project.eu/files/VISTOMS_Tutorial.mp4 \" type=\"video/mp4\">"
-							+"Your browser does not support the video tag."
-							+"</video>"
-							+"</div>")
-				}
+					<!-- tutorialDiv.append("div") -->
+						<!-- .style("-webkit-overflow-scrolling", "touch") -->
+						<!-- .style("-webkit-text-size-adjust", "none") -->
+						<!-- .html("<video width=\"1000\" height=\"563\" controls>" -->
+							<!-- +"<source src=\"http://www.agile-project.eu/files/VISTOMS_Tutorial.mp4 \" type=\"video/mp4\">" -->
+							<!-- +"Your browser does not support the video tag." -->
+							<!-- +"</video>" -->
+							<!-- +"</div>") -->
+				<!-- } -->
 				
 				
-				if (!d3.select(".xdsmDiv").empty())
-				{
-                    bootbox.hideAll();
-					var dialog = bootbox.dialog(
-					{
-						title: 'XDSM View',
-						message: "<p><b>To interactively inspect the MDO system there are several options.</b></p>"
-								 +"<ol><li>With a right-click on an edge (rhomboids on the off-diagonal) you can take a closer look at the data processed between competences.</li>"
-								 +"<li>Click right on a competence (boxes on the diagonal) for more information, such as input/output data or a detailed tool description.</li>"
-								 +"<li>To view the full data model, go to the \"Data model\" box and select a variable categorization. </li></ol><br />"
-								 +"<p>To switch to another visualization (<i>Edge Bundles</i> or <i>Sankey Diagram</i>), go to the navigation bar and select a graph from the drop down menu.</p>"
-								 +"<p>If you need more information on how to use the visualization package, click on the \"Tutorial\" button below.</p>"
-								 +"<p><br/>Any questions or feedback? Contact the support team with the \"Feedback\" button below!</p>"
-						,
-						buttons : theButtons
-					});
-				}
-				else if(!d3.select(".edgeBundlesDiv").empty())
-				{
-                    bootbox.hideAll();
-					var dialog = bootbox.dialog({
-						title: 'Edge Bundles View',
-						message: "<p><b>To interactively inspect the MDO system there are several options.</b></p>"
-								 +"<ol><li>With a right-click on an edge (connecting lines between the competences) you can take a closer look at the data processed between those competences.</li>"
-								 +"<li>When you hover over one of the competences with the mouse, the respective input and output connections are highlighted. Input connections are highlighted in red, output connections in green.</li>"
-								 +"<li>Click right on a competence for more information, such as input/output data or a detailed tool description.</li>"
-								 +"<li>To view the full data model, go to the \"Data model\" box and select a variable categorization.</li></ol><br />"
-								 +"<p>To switch to another visualization (<i>Edge Bundles</i> or <i>Sankey Diagram</i>), go to the navigation bar and select a graph from the drop down menu.</p>"
-								 +"<p>If you need more information on how to use the visualization package, click on the \"Tutorial\" button below.</p>"
-								 +"<p><br/>Any questions or feedback? Contact the support team with the \"Feedback\" button below!</p>"
-						,
-						buttons: theButtons
-					})
-				}
-				else if(!d3.select(".sankeyDiagramDiv").empty())
-				{
-                    bootbox.hideAll();
-					var dialog = bootbox.dialog({
-						title: 'Sankey Diagram',
-						message: "<p><b>To interactively inspect the MDO system there are several options.</b></p>"
-								 +"<ol><li>When you hover over one of the competences with the mouse, the respective input and output connections are highlighted. Input connections are highlighted in red, output connections in green.</li>"
-								 +"<li> With a right-click on an edge (connecting arrows between the competences) you can take a closer look at the data processed between those competences.</li>"
-								 +"<li>Click right on a competence for more information, such as input/output data or a detailed tool description. You can also rearrange the layout by dragging the competences with the computer mouse.</li>"
-								 +"<li>To view the full data model, go to the \"Data model\" box and select a variable categorization.</li></ol><br />"
-								 +"<p>To switch to another visualization (<i>XDSM</i> or <i>Edge Bundles</i>), go to the navigation bar and select a graph from the drop down menu.</p>"
-								 +"<p>If you need more information on how to use the visualization package, click on the \"Tutorial\" button below.</p>"
-								 +"<p><br/>Any questions or feedback? Contact the support team with the \"Feedback\" button below!</p>"
-						,
-						buttons: theButtons
-					})
-				}
-				else
-				{
-					showTutorialPage();
-				}
+				<!-- if (!d3.select(".xdsmDiv").empty()) -->
+				<!-- { -->
+                    <!-- bootbox.hideAll(); -->
+					<!-- var dialog = bootbox.dialog( -->
+					<!-- { -->
+						<!-- title: 'XDSM View', -->
+						<!-- message: "<p><b>To interactively inspect the MDO system there are several options.</b></p>" -->
+								 <!-- +"<ol><li>With a right-click on an edge (rhomboids on the off-diagonal) you can take a closer look at the data processed between competences.</li>" -->
+								 <!-- +"<li>Click right on a competence (boxes on the diagonal) for more information, such as input/output data or a detailed tool description.</li>" -->
+								 <!-- +"<li>To view the full data model, go to the \"Data model\" box and select a variable categorization. </li></ol><br />" -->
+								 <!-- +"<p>To switch to another visualization (<i>Edge Bundles</i> or <i>Sankey Diagram</i>), go to the navigation bar and select a graph from the drop down menu.</p>" -->
+								 <!-- +"<p>If you need more information on how to use the visualization package, click on the \"Tutorial\" button below.</p>" -->
+								 <!-- +"<p><br/>Any questions or feedback? Contact the support team with the \"Feedback\" button below!</p>" -->
+						<!-- , -->
+						<!-- buttons : theButtons -->
+					<!-- }); -->
+				<!-- } -->
+				<!-- else if(!d3.select(".edgeBundlesDiv").empty()) -->
+				<!-- { -->
+                    <!-- bootbox.hideAll(); -->
+					<!-- var dialog = bootbox.dialog({ -->
+						<!-- title: 'Edge Bundles View', -->
+						<!-- message: "<p><b>To interactively inspect the MDO system there are several options.</b></p>" -->
+								 <!-- +"<ol><li>With a right-click on an edge (connecting lines between the competences) you can take a closer look at the data processed between those competences.</li>" -->
+								 <!-- +"<li>When you hover over one of the competences with the mouse, the respective input and output connections are highlighted. Input connections are highlighted in red, output connections in green.</li>" -->
+								 <!-- +"<li>Click right on a competence for more information, such as input/output data or a detailed tool description.</li>" -->
+								 <!-- +"<li>To view the full data model, go to the \"Data model\" box and select a variable categorization.</li></ol><br />" -->
+								 <!-- +"<p>To switch to another visualization (<i>Edge Bundles</i> or <i>Sankey Diagram</i>), go to the navigation bar and select a graph from the drop down menu.</p>" -->
+								 <!-- +"<p>If you need more information on how to use the visualization package, click on the \"Tutorial\" button below.</p>" -->
+								 <!-- +"<p><br/>Any questions or feedback? Contact the support team with the \"Feedback\" button below!</p>" -->
+						<!-- , -->
+						<!-- buttons: theButtons -->
+					<!-- }) -->
+				<!-- } -->
+				<!-- else if(!d3.select(".sankeyDiagramDiv").empty()) -->
+				<!-- { -->
+                    <!-- bootbox.hideAll(); -->
+					<!-- var dialog = bootbox.dialog({ -->
+						<!-- title: 'Sankey Diagram', -->
+						<!-- message: "<p><b>To interactively inspect the MDO system there are several options.</b></p>" -->
+								 <!-- +"<ol><li>When you hover over one of the competences with the mouse, the respective input and output connections are highlighted. Input connections are highlighted in red, output connections in green.</li>" -->
+								 <!-- +"<li> With a right-click on an edge (connecting arrows between the competences) you can take a closer look at the data processed between those competences.</li>" -->
+								 <!-- +"<li>Click right on a competence for more information, such as input/output data or a detailed tool description. You can also rearrange the layout by dragging the competences with the computer mouse.</li>" -->
+								 <!-- +"<li>To view the full data model, go to the \"Data model\" box and select a variable categorization.</li></ol><br />" -->
+								 <!-- +"<p>To switch to another visualization (<i>XDSM</i> or <i>Edge Bundles</i>), go to the navigation bar and select a graph from the drop down menu.</p>" -->
+								 <!-- +"<p>If you need more information on how to use the visualization package, click on the \"Tutorial\" button below.</p>" -->
+								 <!-- +"<p><br/>Any questions or feedback? Contact the support team with the \"Feedback\" button below!</p>" -->
+						<!-- , -->
+						<!-- buttons: theButtons -->
+					<!-- }) -->
+				<!-- } -->
+				<!-- else -->
+				<!-- { -->
+					<!-- showTutorialPage(); -->
+				<!-- } -->
 			}
 			//#####################################################################//
 			
-			//aigner: Send mail function
-			//#####################################################################//
-			function sendMail(mailText) 
-			{
-				var link = "mailto:support@agile-project.eu"
-				window.location.href = link;
-			}
-			//#####################################################################//
 			
 			//aigner: Load entire MDO data
 			//###############################################################################################################################################################################################################//
@@ -1241,18 +1250,20 @@
 			{
 				var visualizationScript = d3.select(".visualizationScript");
 				if (visualizationScript){visualizationScript.remove();}
-				var mainPage = document.getElementById("mainPage");
-				if (mainPage){mainPage.remove();}
-				var tutorial = document.getElementById("tutorial");
-				if (tutorial){tutorial.remove();}
-				var ackn = document.getElementById("acknowledgements");
-				if (ackn){ackn.remove();}
 				var xdsm = d3.select(".xdsmDiv");							
 				if (xdsm){xdsm.remove();}
 				var edgeBundles = d3.select(".edgeBundlesDiv");							
 				if (edgeBundles){edgeBundles.remove();}
 				var sankeyDiagram = d3.select(".sankeyDiagramDiv");
 				if (sankeyDiagram){sankeyDiagram.remove();}
+                var visualizationTypes = d3.select("#visualizationTypes");
+				if (visualizationTypes){visualizationTypes.remove();}
+                var technologies = d3.select("#technologies");
+				if (technologies){technologies.remove();}
+                var acknowledgements = d3.select("#acknowledgements_text");
+                if (acknowledgements){acknowledgements.remove();}
+                var footer = d3.select("footer");
+				if (footer){footer.remove();}
 			}
 			//#####################################################################//
 		
@@ -19170,19 +19181,26 @@
 							theVariableData.upperBound = 0.;
 							theVariableData.lowerBound = 0.;
 							theVariableData.nominalValue = 0.;
+							theVariableData.samples = "";
 							
 							bootbox.hideAll();
 							bootbox.confirm({
+                            closeButton: false,
 							title: 'Marking variable as ' + theVariableData.variableType,
 							message:"<form id='infos' action=''>"
-									+"\Nominal Value: <input type='text' id='nominalValue' name='nominalValue' /><br/>"
-									+"\Upper Bound:   <input type='text' id='upperBound' name='upperBound' /><br/>"
-									+"\Lower Bound:   <input type='text' id='lowerBound' name='lowerBound' />\</form>", 
+									+"\Nominal Value: <input type='number' id='nominalValue' name='nominalValue' value='0' /><br/>"
+									+"\Upper Bound:   <input type='number' id='upperBound' name='upperBound' value='0' /><br/>"
+									+"\Lower Bound:   <input type='number' id='lowerBound' name='lowerBound' value='0' />\</form>"
+									+"\Sample list (optional):   <input type='text' id='samples' name='samples' />\</form>", 
 							callback: function(result){
 									if(result){
 										theVariableData.nominalValue = parseFloat($('#nominalValue').submit()[0].value.replace(/,/g, ''));
 										theVariableData.upperBound = parseFloat($('#upperBound').submit()[0].value.replace(/,/g, ''));
 										theVariableData.lowerBound = parseFloat($('#lowerBound').submit()[0].value.replace(/,/g, ''));
+										theVariableData.lowerBound = parseFloat($('#lowerBound').submit()[0].value.replace(/,/g, ''));
+										theVariableData.samples = $('#samples').submit()[0].value;
+                                        
+                                        
                                         
                                         if (isNaN(parseInt(theVariableData.nominalValue))
                                                 || isNaN(parseInt(theVariableData.lowerBound))
@@ -19190,6 +19208,7 @@
                                         {
                                             bootbox.hideAll();
                                             bootbox.dialog({
+                                                closeButton: false,
                                                 title: "Assign parameter role",
                                                 message: "<b>ERROR:</b> Invalid variable type! Variables can only be numbers!",
                                                 buttons : { cancel:
@@ -19204,6 +19223,7 @@
                                         {
                                             bootbox.hideAll();
                                             bootbox.dialog({
+                                                closeButton: false,
                                                 title: "Assign parameter role",
                                                 message: "<b>ERROR:</b> Nominal value cannot be larger than upper bound!",
                                                 buttons : { cancel:
@@ -19218,6 +19238,7 @@
                                         {
                                             bootbox.hideAll();
                                             bootbox.dialog({
+                                                closeButton: false,
                                                 title: "Assign parameter role",
                                                 message: "<b>ERROR:</b> Nominal value cannot be smaller than lower bound!",
                                                 buttons : { cancel:
@@ -19270,6 +19291,7 @@
 							
 							bootbox.hideAll();
 							bootbox.confirm({
+                            closeButton: false,
 							title: 'Marking variable as ' + theVariableData.variableType,
 							message:"<form id='infos' action=''>"
 									+"\Nominal Value: <input type='text' id='nominalValue' name='nominalValue' /><br/>"
@@ -19294,6 +19316,7 @@
                                         {
                                             bootbox.hideAll();
                                             bootbox.dialog({
+                                                closeButton: false,
                                                 title: "Assign parameter role",
                                                 message: "<b>ERROR:</b> Invalid operator \"" + theVariableData.operator + "\"!",
                                                 buttons : { cancel:
@@ -19308,6 +19331,7 @@
                                         {
                                             bootbox.hideAll();
                                             bootbox.dialog({
+                                                closeButton: false,
                                                 title: "Assign parameter role",
                                                 message: "<b>ERROR:</b> Nominal value must be a number!",
                                                 buttons : { cancel:
@@ -19632,6 +19656,7 @@
                     bootbox.hideAll();
                     bootbox.prompt(
                     {
+                        closeButton: false,
                         title: "Please specify a new position for the competence \""+aNode.name+"\"",
                         inputType: 'select',
                         inputOptions: theOptions,
@@ -19792,6 +19817,7 @@
                         
                     
                     var modal = bootbox.dialog({
+                        closeButton: false,
                         message: $(".form-content").html(),
                         title: "Add mathematical function",
                         size: "large",
@@ -20021,14 +20047,95 @@
                 }
                 
                 //aigner MDAO architecture options
-                var MDAO_architectures = ['-','unconverged-MDA','converged-MDA','MDF','IDF','unconverged-OPT','unconverged-DOE','converged-DOE']
+                var MDAO_architectures = [{text:'-',value:'-'},
+                                          {text:'Unconverged MDA',value:'unconverged-MDA'},
+                                          {text:'Converged MDA',value:'converged-MDA'},
+                                          {text:'Multidisciplinary Feasible (MDF)',value:'MDF'},
+                                          {text:'Individual Discipline Feasible (IDF)',value:'IDF'},
+                                          {text:'Unconverged Optimization',value:'unconverged-OPT'},
+                                          {text:'Unconverged Design Of Experiments (DOE)',value:'unconverged-DOE'},
+                                          {text:'Converged Design Of Experiments (DOE)',value:'converged-DOE'},
+                                          {text:'Collaborative Optimization',value:'CO'},
+                                          {text:'BLISS-2000',value:'BLISS-2000'}]
                 var coupling_decompositions = ['-','Gauss-Seidel','Jacobi']
-                var DOE_methods = ['-','Full factorial design','Latin hypercube design','Monte Carlo Design']
+                var DOE_methods = ['-',
+                                   'Full factorial design',
+                                   'Latin hypercube design',
+                                   'Monte Carlo design',
+                                   'Custom design table',
+                                   'Uniform design',
+                                   'Box-Behnken design']
+                var DOE_settings = []
+                var coupled_functions_groups = [];
                 //################################################################################################//
                 
                 
-                var revertDiv = d3.select(".xdsmDiv").append("div").attr("class","dataModelDiv").style("top","-10px")
-                //aigner: Revert previous step
+                var quickMenuDiv = d3.select(".xdsmDiv").append("div").attr("class","quickMenuDiv")
+                    .style("top","-10px")
+                    .style("margin-left","10pt")
+                    
+                
+                var changeViewButton = quickMenuDiv.append("button")
+                    .attr("class","btn btn-info")
+                    .attr("data-toggle","tooltip")
+                    .attr("data-placement","top")
+                    .attr("title","Change visualization type")
+                    .style("margin-left","10px")
+                    .style("margin-bottom","10px")
+                changeViewButton.append("span")
+                    .attr("class","glyphicon glyphicon-random")
+                    .attr("aria-hidden","true")
+                changeViewButton.on("mousedown", function()
+                {
+                    bootbox.hideAll();
+                 
+                    bootbox.hideAll();
+                    bootbox.prompt({
+                        closeButton: false,
+                        title: "Change visualization type",
+                        inputType: 'select',
+                        value: '',
+                        inputOptions: [
+                            {
+                                text: 'Please choose...',
+                                value: '',
+                            },
+                            {
+                                text: 'XDSM view',
+                                value: 'xdsm',
+                            },
+                            {
+                                text: 'Edge Bundles view',
+                                value: 'edgeBundles',
+                            },
+                            {
+                                text: 'Sankey Diagram',
+                                value: 'sankeyDiagram',
+                            }
+                        ],
+                        callback: function (theView) {                            
+                            if (theView == "xdsm")
+                            {
+                                clearView();
+                                xdsm_script(data,currentGraph.id)
+                            }
+                            else if (theView == "edgeBundles")
+                            {
+                                clearView();
+                                edgeBundles_script(data,currentGraph.id)
+                            }
+                            else if (theView == "sankeyDiagram")
+                            {
+                                clearView();
+                                sankeyDiagram_script(data,currentGraph.id)
+                            }
+                            else
+                            {}
+                        }
+                    });
+                })                
+                
+                
                 //####################################################################################################################
                 //aigner: KADMOS function Save graph
                 //####################################################################################################################
@@ -20055,9 +20162,9 @@
                     var xhr = $.ajax(
                     {
                         type: 'POST',
-                        data: {'fileName':currentGraph.name, 'fileType': fileType, 'graphID': graphID,
+                        data: {'fileNames_str':JSON.stringify([currentGraph.name]), 'fileType': fileType, 'graphIDs_str': JSON.stringify([currentGraph.id]),
                             'sessionId': sessionId},
-                        url: '/kadmos_export_graph',
+                        url: '/kadmos_export_graphs',
                         success: function(result)
                         {                
                             var files = result
@@ -20077,6 +20184,7 @@
                                 bootbox.hideAll();
                                 bootbox.confirm(
                                 {
+                                    closeButton: false,
                                     title: bootboxContent.title,
                                     message: bootboxContent.message,
                                     callback: function(){
@@ -20096,7 +20204,7 @@
                     
               
                 
-				var saveButton = revertDiv.append("button")
+				var saveButton = quickMenuDiv.append("button")
                     .attr("class","btn btn-primary")
                     .attr("data-toggle","tooltip")
                     .attr("data-placement","top")
@@ -20112,9 +20220,10 @@
                     
                     bootbox.prompt(
                     {
+                        closeButton: false,
                         title: "Save graph. What would you like to save the graph as?",
                         inputType: 'select',
-                        inputOptions: [ {text:" Save as new VISTOMS graph",value:"VISTOMS"},
+                        inputOptions: [ {text:" Save as new graph",value:"VISTOMS"},
                                         {text:"Save as KDMS file (download)",value:"kdms"},
                                         {text:"Save as CMDOWS file (download)",value:"cmdows"}],
                         value: "VISTOMS",
@@ -20148,90 +20257,90 @@
                                         .attr("placeholder","Add a graph description here...")
                                     
                                     bootbox.dialog({
-                                            message: $(".form-content").html(),
-                                            title: "<p>The graph will be saved as new VISTOMS graph"
-                                                  +"<p>Please type in a new name and description for the graph</p>",
-                                            size: "large",
-                                            buttons: [
-                                              {
-                                                label: "Cancel",
-                                                className: "btn btn-default pull-left",
-                                                callback: function() {
-                                                  d3.selectAll(".form-content").remove();
-                                                }
-                                              },
-                                              {
-                                                label: "OK",
-                                                className: "btn btn-primary pull-left",
-                                                callback: function() {
-                                                    
-                                                    //get form data
-                                                    var graph_name = $('form #graph_name').val();
-                                                    var graph_description = $('form #graph_description').val();
-                                                    
-                                                    
-                                                    var bootboxContent = {title: "Save as new VISTOMS graph", message: '<p>Please be patient...</p>'};
-                                                    var newGraphID = ""
-                                                    if (data.graphs.length<100){newGraphID="0"+String(data.graphs.length+1)}
-                                                    else {newGraphID=String(data.graphs.length+1)}
-                                                    
-                                                    var newGraphID = '01';
-                                                    data.graphs.forEach(function(graph) 
-                                                    {
-                                                        id_int = parseInt(graph.id)
-                                                        if (data.graphs.length < 100){newGraphID = "0" + String(id_int+1);}
-                                                        else{newGraphID = String(id_int+1);}
-                                                    })
-                                                    
-                                                    var xhr = $.ajax(
+                                        closeButton: false,
+                                        message: $(".form-content").html(),
+                                        title: "<p>The graph will be saved in the MDO System Interface"
+                                              +"<p>Please type in a new name and description for the graph</p>",
+                                        size: "large",
+                                        buttons: [
+                                          {
+                                            label: "Cancel",
+                                            className: "btn btn-default pull-left",
+                                            callback: function() {
+                                              d3.selectAll(".form-content").remove();
+                                            }
+                                          },
+                                          {
+                                            label: "OK",
+                                            className: "btn btn-primary pull-left",
+                                            callback: function() {
+                                                
+                                                //get form data
+                                                var graph_name = $('form #graph_name').val();
+                                                var graph_description = $('form #graph_description').val();
+                                                
+                                                
+                                                var bootboxContent = {title: "Save as new graph", message: '<p>Please be patient...</p>'};
+                                                var newGraphID = ""
+                                                if (data.graphs.length<100){newGraphID="0"+String(data.graphs.length+1)}
+                                                else {newGraphID=String(data.graphs.length+1)}
+                                                
+                                                var newGraphID = '01';
+                                                data.graphs.forEach(function(graph) 
+                                                {
+                                                    id_int = parseInt(graph.id)
+                                                    if (data.graphs.length < 100){newGraphID = "0" + String(id_int+1);}
+                                                    else{newGraphID = String(id_int+1);}
+                                                })
+                                                
+                                                var xhr = $.ajax(
+                                                {
+                                                    type: 'POST',
+                                                    data: {'graphID': graphID, 'newGraphID': newGraphID, 'newGraphName': graph_name, 'newGraphDesc': graph_description, 'currentOrder':nodeOrder, 'sessionId': sessionId},
+                                                    url: '/kadmos_save_vistoms_graph',
+                                                    success: function(result)
                                                     {
-                                                        type: 'POST',
-                                                        data: {'graphID': graphID, 'newGraphID': newGraphID, 'newGraphName': graph_name, 'newGraphDesc': graph_description, 'currentOrder':nodeOrder, 'sessionId': sessionId},
-                                                        url: '/kadmos_save_vistoms_graph',
-                                                        success: function(result)
+                                                        if (result.includes("ERROR:"))
                                                         {
-                                                            if (result.includes("ERROR:"))
-                                                            {
-                                                                bootboxContent.message = result
-                                                                kadmosErrorMessage(bootboxContent);
-                                                            }
-                                                            else
+                                                            bootboxContent.message = result
+                                                            kadmosErrorMessage(bootboxContent);
+                                                        }
+                                                        else
+                                                        {
+                                                            var updatedData = jQuery.extend(true, {}, data);
+                                                            var graphData = JSON.parse(result);
+                                                            
+                                                            for (var i = 0; i < data.graphs.length; i++)
                                                             {
-                                                                var updatedData = jQuery.extend(true, {}, data);
-                                                                var graphData = JSON.parse(result);
-                                                                
-                                                                for (var i = 0; i < data.graphs.length; i++)
+                                                                if (graphID == data.graphs[i].id)
                                                                 {
-                                                                    if (graphID == data.graphs[i].id)
-                                                                    {
-                                                                        //Insert copied graph behind the original one
-                                                                        updatedData.graphs.splice(i+1, 0, graphData.graphs[0])
-                                                                    }
+                                                                    //Insert copied graph behind the original one
+                                                                    updatedData.graphs.splice(i+1, 0, graphData.graphs[0])
                                                                 }
-                                                                
-                                                                
-                                                                
-                                                                clearView();
-                                                                makeKadmosMenu(updatedData);
-                                                                xdsm_script(updatedData,newGraphID);
-                                                                
-                                                                bootboxContent.message = "Success!"
-                                                                kadmosSuccessMessage(bootboxContent)
                                                             }
-                                                        },
-                                                        error: function(result)
-                                                        {
-                                                            bootboxContent.message = result
-                                                            kadmosErrorMessage(bootboxContent);
+                                                            
+                                                            
+                                                            
+                                                            clearView();
+                                                            makeKadmosMenu(updatedData);
+                                                            xdsm_script(updatedData,newGraphID);
+                                                            
+                                                            bootboxContent.message = "Success!"
+                                                            kadmosSuccessMessage(bootboxContent)
                                                         }
-                                                    });
-                                                    kadmosHavePatience(xhr, bootboxContent)
-                                                    d3.selectAll(".form-content").remove();
-                                                }
-                                              }
-                                            ]
-                                        });
-                                    
+                                                    },
+                                                    error: function(result)
+                                                    {
+                                                        bootboxContent.message = result
+                                                        kadmosErrorMessage(bootboxContent);
+                                                    }
+                                                });
+                                                kadmosHavePatience(xhr, bootboxContent)
+                                                d3.selectAll(".form-content").remove();
+                                            }
+                                          }
+                                        ]
+                                    });
                                 }
                                 else
                                 {
@@ -20246,7 +20355,7 @@
                 
                 
                 
-                var deleteButton = revertDiv.append("button")
+                var deleteButton = quickMenuDiv.append("button")
                     .attr("class","btn btn-danger")
                     .attr("data-toggle","tooltip")
                     .attr("data-placement","top")
@@ -20258,61 +20367,11 @@
                     .attr("aria-hidden","true")
                 deleteButton.on("mousedown", function()
                 {
-                    var bootboxContent = {title: "Deleting graph", message: '<p>Please be patient...</p>'};
-                    bootbox.hideAll();
-                    bootbox.confirm("Are you sure you want to permanently delete the graph? <b>This cannot be reverted!</b>", function(sure)
-                    {
-                        if (sure)
-                        {   
-                            var xhr = $.ajax(
-                            {
-                                type: 'POST',
-                                url: '/kadmos_delete_graph',
-                                data: {'graphID':graphID, 'sessionId': sessionId},
-                                success: function(result)
-                                {
-                                    if (result.includes("ERROR:"))
-                                    {
-                                        bootboxContent.message = result
-                                        kadmosErrorMessage(bootboxContent);
-                                    }
-                                    else
-                                    {                                        
-                                        var dataArray = result;       
-                                        var data = []
-                                        if (dataArray.length == 0){data="REP__GRAPH_DATA__REP"}
-                                        else{data = {"graphs":[], "categories":""};}
-                                        for (var i = 0; i < dataArray.length; i++)
-                                        {
-                                            var data_tmp = JSON.parse(dataArray[i])
-                                            data.graphs.push(data_tmp.graphs[0]);
-                                            if (data.categories == [])
-                                            {
-                                                data.categories = data_tmp.categories;                                        
-                                            }
-                                        }
-                                        
-                                        clearView();
-                                        makeKadmosMenu(data);
-                                        mainPage();
-                                        
-                                        bootboxContent.message = "Graph was sucessfully deleted!"
-                                        kadmosSuccessMessage(bootboxContent)
-                                    }
-                                },
-                                error: function(result)
-                                {
-                                    bootboxContent.message = result
-                                    kadmosErrorMessage(bootboxContent);
-                                }
-                            });
-                            kadmosHavePatience(xhr, bootboxContent)
-                        }
-                    })
+					delete_graphs([graphID]);
                 })
                 
                 
-                var backButton = revertDiv.append("button")
+                var backButton = quickMenuDiv.append("button")
                     .attr("class","btn btn-warning")
                     .attr("data-toggle","tooltip")
                     .attr("data-placement","top")
@@ -20376,7 +20435,7 @@
                     })
                 })
                     
-                 var fwdButton = revertDiv.append("button")
+                 var fwdButton = quickMenuDiv.append("button")
                     .attr("class","btn btn-warning")
                     .attr("data-toggle","tooltip")
                     .attr("data-placement","top")
@@ -20444,6 +20503,7 @@
                 {               
                     bootbox.hideAll();
                     bootbox.dialog({
+                        closeButton: false,
                         title: "Add design competence",
                         message: "<form id='inp_outp_form' method='post' enctype='multipart/form-data'>" 
                                 +"<label>"
@@ -20534,7 +20594,6 @@
                     {
                         metadata = JSON.parse(JSON.stringify(aNode.metadata));
                     }
-                    console.log(aNode.metadata)
                     
                     //aigner: Initialize sub component "general_info"
                     if (typeof metadata.general_info == "undefined"
@@ -20982,6 +21041,7 @@
 
                     
                     var modal = bootbox.dialog({
+                        closeButton: false,
                         message: $(".form-content").html(),
                         title: "Competence Metadata: " + aNode.name,
                         size: "large",
@@ -21124,7 +21184,7 @@
                 }      
                 
                 
-                var addCBButton = revertDiv.append("button")
+                var addCBButton = quickMenuDiv.append("button")
                     .attr("class","btn btn-success")
                     .attr("data-toggle","tooltip")
                     .attr("data-placement","top")
@@ -21140,6 +21200,7 @@
                     
                     bootbox.hideAll();
                     bootbox.prompt({
+                        closeButton: false,
                         title: "<b>Add competence block</b>"
                               +"<p>Which type of competence block do you want to add?</p>",
                         inputType: 'select',
@@ -21192,6 +21253,18 @@
                             {
                                 currentGraph.organization.contacts = [];
                             }
+							if (typeof currentGraph.organization.organigram.architects=="undefined")
+                            {
+                                currentGraph.organization.organigram.architects = [];
+                            }
+                            if (typeof currentGraph.organization.organigram.integrators=="undefined")
+                            {
+                                currentGraph.organization.organigram.integrators = [];
+                            }
+                            if (typeof currentGraph.organization.organigram.toolSpecialists=="undefined")
+                            {
+                                currentGraph.organization.organigram.toolSpecialists = [];
+                            }
                             
                             //Show contact info
                             //############################################################
@@ -21307,6 +21380,7 @@
                             
                             //############################################################
                             var modal = bootbox.dialog({
+                            closeButton: false,
                             message: $(".form-content").html(),
                             title: "Contact information",
                             size: "large",
@@ -21432,7 +21506,7 @@
                     })
                 }
                 
-                var orgaButton = revertDiv.append("button")
+                var orgaButton = quickMenuDiv.append("button")
                     .attr("class","btn btn-info")
                     .attr("data-toggle","tooltip")
                     .attr("data-placement","top")
@@ -21455,6 +21529,7 @@
                  
                     bootbox.hideAll();
                     bootbox.prompt({
+                        closeButton: false,
                         title: "<b>Contact information</b>"
                               +"<p>Which contact do you want to show or edit?<br>"
                               +"You can also add a new contact. Just select 'Add new contact'</p>",
@@ -21472,6 +21547,7 @@
                     
                     
                 })
+                
                 //#####################################################################################################
                     
                 
@@ -21523,8 +21599,8 @@
                           +"                             </li>"
                           +"                              <li><a href='#'>Assign...<span>&#x25B8;</span></a>"
                           +"                                  <ul class='assign'>"
-                          +"                                      <li class='assign_probFunc_roles'><a href='#'>problem function roles</a></li>"
                           +"                                      <li class='assign_parameter_roles'><a href='#'>parameter roles</a></li>"
+                          +"                                      <li class='assign_probFunc_roles'><a href='#'>problem function roles</a></li>"
                           +"                                  </ul>"
                           +"                              </li>"
                           +"                          </ul>"
@@ -21536,7 +21612,6 @@
                           +"                                  <ul class='set'>"
                           +"                                      <li class='set_MDAO_architecture'><a href='#'>MDAO architecture</a></li>"
                           +"                                      <li class='set_coupling_decomposition'><a href='#'>Coupling decomposition</a></li>"
-                          +"                                      <li class='set_DOE_method'><a href='#'>DOE method</a></li>"
                           +"                                  </ul>"
                           +"                              </li>"
                           +"                              <li class='impose_MDAO_architecture'><a href='#'>Impose MDAO architecture</a></li>"
@@ -21553,7 +21628,9 @@
 					
                 
 
-                var inspectionsDiv = d3.select(".xdsmDiv").append("div").attr("class","dataModelDiv").style("top","-10px")
+                var inspectionsDiv = d3.select(".xdsmDiv").append("div").attr("class","quickMenuDiv")
+                    .style("top","-10px")
+                    .style("margin-left","10pt")
                 //aigner: Search for graph elements
                 //####################################################################################################################               
                 //CATEGORIES
@@ -21709,6 +21786,7 @@
                     
                     
                     var modal = bootbox.dialog({
+                        closeButton: false,
                         message: $(".form-content").html(),
                         title: "Search for graph elements.",
                         size: "large",
@@ -21827,6 +21905,7 @@
                                                 //message with option: How does the user want to show the variables, as a list or as a tree view?
 												bootbox.prompt(
                                                 {
+                                                    closeButton: false,
                                                     title: "The graph elements you requested contain variables. How do you want them displayed?",
                                                     inputType: 'checkbox',
                                                     inputOptions: [{text:" Show variables as tree view",value:"Tree View"},{text:" Show variables as list",value:"List"}],
@@ -22031,6 +22110,7 @@
 						.attr("placeholder","Add a graph description here...")
 					
 				   bootbox.dialog({
+                        closeButton: false,
 						message: $(".form-content").html(),
 						title: "<p>This will create an initial FPG for your MDO problem. After clicking this button, you can go through the \"<b>FPG manipulation</b>\" steps."
 							  +"<p>Please type in a new name and description for the graph</p>",
@@ -22116,6 +22196,7 @@
                         bootbox.hideAll();
                         bootbox.prompt(
                         {
+                            closeButton: false,
                             title: "Please select the design competences you would like to exclude.",
                             inputType: 'checkbox',
                             inputOptions: theInputOptions,
@@ -22188,6 +22269,7 @@
 					bootbox.hideAll();
 					bootbox.prompt(
 					{
+                        closeButton: false,
 						title: "Please select the sequential design competences you would like to merge.",
 						inputType: 'checkbox',
 						inputOptions: theInputOptions,
@@ -22261,6 +22343,7 @@
 					bootbox.hideAll();
 					bootbox.prompt(
 					{
+                        closeButton: false,
 						title: "Please select the parallel design competences you would like to merge.",
 						inputType: 'checkbox',
 						inputOptions: theInputOptions,
@@ -22334,6 +22417,7 @@
 					bootbox.hideAll();
 					bootbox.prompt(
 					{
+                        closeButton: false,
 						title: "Please select the design competences you would like to merge.",
 						inputType: 'checkbox',
 						inputOptions: theInputOptions,
@@ -22407,6 +22491,7 @@
 					bootbox.hideAll();
 					bootbox.prompt(
 					{
+                        closeButton: false,
 						title: "Please select the design competences for which you would like to remove collisions.",
 						inputType: 'checkbox',
 						inputOptions: theInputOptions,
@@ -22587,6 +22672,7 @@
 					{
 						bootbox.hideAll();
 						bootbox.alert({
+                            closeButton: false,
 							title: "Assign parameter roles",
 							message: "<p>Please mark all parameters, which are of special interest. The options are:</p>"
 									 +"<ul><li><b>Design Variable</b></li>"
@@ -22610,6 +22696,7 @@
 					bootbox.hideAll();
 					bootbox.prompt(
 					{
+                        closeButton: false,
 						title: "Select a sorting method",
 						inputType: 'select',
 						value: 'single-swap',
@@ -22690,6 +22777,7 @@
 					bootbox.hideAll();
 					bootbox.prompt(
 					{
+                        closeButton: false,
 						title: "<p><b>Remove unused outputs</b></p>" 
 							  +"<p>Do you want to clean up the graph afterwards?</p>" 
 							  +"<b>CAUTION:</b> This will remove all unused competences automatically as well!",
@@ -22780,6 +22868,7 @@
 						.attr("placeholder","Add a graph description here...")
 					
 					bootbox.dialog({
+                        closeButton: false,
 						message: $(".form-content").html(),
 						title: "<p>This will create an initial MDPG for your MDO problem. After clicking this button, you can go through the \"<b>MDPG manipulation</b>\" steps."
 							  +"<p>Please type in a new name and description for the graph</p>",
@@ -22862,19 +22951,226 @@
 				var MDAO_architecture = '-';
                 var coupling_decomposition = '-';
                 var DOE_method = '-';
+                var allow_unconverged_couplings = 'True';
                 var set_MDAO_architecture_DOM = d3.select(".set_MDAO_architecture")
                 set_MDAO_architecture_DOM.on("mousedown", function()
 				{
 					var theOptions = []
-					for (var i = 0; i<MDAO_architectures.length; i++){theOptions.push({text:MDAO_architectures[i], value:MDAO_architectures[i]})}
+					for (var i = 0; i<MDAO_architectures.length; i++){theOptions.push({text:MDAO_architectures[i].text, value:MDAO_architectures[i].value})}
 					bootbox.hideAll();
 					bootbox.prompt(
 					{
-						title: "Set MDAO Architecture",
+                        closeButton: false,
+						title: "<p><b>Set MDAO Architecture</b></p><br>"
+                               +"<p>You can specify the settings for your MDO architecture here.</p>"
+                               +"<p>To actually impose the architecture on your graph, you need to press the button <b>\"Impose MDAO architecture\"</b> afterwards.",
 						inputType: 'select',
 						value: MDAO_architecture,
+						size: "large",
 						inputOptions: theOptions,
-						callback: function (result) {if (result){MDAO_architecture = result;}}
+						callback: function (result) {
+                        if (result)
+                        {
+                            MDAO_architecture = result;
+                            if (!MDAO_architecture.includes("unconverged"))
+                            {
+                                var theOptions = [{text:"yes",value:"True"},{text:"no",value:"False"}]
+                                bootbox.hideAll();
+                                bootbox.prompt(
+                                {
+                                    closeButton: false,
+                                    title: "Allow Unconverged Couplings?",
+                                    value: "True",
+                                    inputType: 'select',
+                                    inputOptions: theOptions,
+                                    callback: function (result) 
+                                    {
+                                        if (result)
+                                        {   
+                                            allow_unconverged_couplings = result;                                    
+                                        }
+                                    }
+                                })
+                            }
+                            if (MDAO_architecture.includes("DOE") || MDAO_architecture == "BLISS-2000")
+                            {
+                                var theOptions = []
+                                for (var i = 0; i<DOE_methods.length; i++){theOptions.push({text:DOE_methods[i], value:DOE_methods[i]})}
+                                bootbox.prompt(
+                                {
+                                    closeButton: false,
+                                    title: "Select DOE Method",
+                                    value: DOE_method,
+                                    inputType: 'select',
+                                    inputOptions: theOptions,
+                                    callback: function (result) 
+                                    {
+                                        if (result)
+                                        {
+                                            DOE_method = result;
+                                            
+                                            
+                                            function form_control(text, type, id, form_group)
+                                            {
+                                                form_group.append("label").text(text)
+                                                var input = form_group.append("input")
+                                                    .attr("id",id)
+                                                    .attr("class","form-control")
+                                                    .attr("type",type)
+                                                    .attr("name",text)
+                                            }
+                                            function set_doe_settings(ids)
+                                            {
+                                                var modal = bootbox.dialog(
+                                                {
+                                                    closeButton: false,
+                                                    message: $(".form-content").html(),
+                                                    title: "DOE settings",
+                                                    size: "large",
+                                                    buttons: [
+                                                      {
+                                                        label: "OK",
+                                                        className: "btn btn-primary pull-right",
+                                                        callback: function() {
+                                                            ids.forEach(function(id)
+                                                            {
+                                                                DOE_settings.push({'name': id, 'value': $('form #' + id.split('/').join('_')).val()})
+                                                            })
+                                                            d3.selectAll(".form-content").remove();
+                                                        }
+                                                      },
+                                                      {
+                                                        label: "Cancel",
+                                                        className: "btn btn-default pull-right",
+                                                        callback: function() {
+                                                            d3.selectAll(".form-content").remove();
+                                                            bootbox.hideAll();
+                                                        }
+                                                      }
+                                                    ]
+                                                });   
+                                            }
+                                            
+                                            var html = d3.select("html")
+                                            var form_content = html.append("div").attr("class","form-content").attr("style","display:none")
+                                            var form = form_content.append("form").attr("class","form").attr("role","form")
+                                            var form_group = form.append("div").attr("class","form-group")        
+                                            if (DOE_method=='Full factorial design')
+                                            {
+                                                bootbox.hideAll();
+                                                form_control("Number of levels", "number", "levels", form_group)
+                                                form_control("Number of runs", "number", "runs", form_group)
+                                                set_doe_settings(["levels","runs"]);                                                
+                                            }
+                                            else if (DOE_method=='Latin hypercube design')
+                                            {
+                                                bootbox.hideAll();
+                                                form_control("Seed", "number", "seed", form_group)
+                                                form_control("Number of runs", "number", "runs", form_group)
+                                                set_doe_settings(["seed","runs"]);       
+                                            }
+                                            else if (DOE_method=='Monte Carlo design')
+                                            {
+                                                bootbox.hideAll();
+                                                form_control("Seed", "number", "seed", form_group)
+                                                form_control("Number of runs", "number", "runs", form_group)
+                                                set_doe_settings(["seed","runs"]);  
+                                            }
+                                            else if (DOE_method=='Box-Behnken design')
+                                            {
+                                                bootbox.hideAll();
+                                                form_control("Number of center runs", "number", "center_runs", form_group)
+                                                set_doe_settings(["center_runs"]);  
+                                            }
+                                            else if (DOE_method=='Uniform design')
+                                            {
+                                                bootbox.hideAll();
+                                                form_control("Seed", "number", "seed", form_group)
+                                                form_control("Number of runs", "number", "runs", form_group)
+                                                set_doe_settings(["seed","runs"]);
+                                            }
+                                            else if (DOE_method=='Custom design table')
+                                            {
+                                            }
+                                            else;
+                                            
+                                        }
+                                        else
+                                        {
+                                            bootbox.hideAll();
+                                        }
+                                    }
+                                })
+                            }
+                            if (MDAO_architecture == "converged-MDA"
+                                || MDAO_architecture == "MDF"
+                                || MDAO_architecture == "converged-DOE")
+                            {
+                                var theOptions = []
+                                for (var i = 0; i<coupling_decompositions.length; i++){theOptions.push({text:coupling_decompositions[i], value:coupling_decompositions[i]})}
+                                bootbox.prompt(
+                                {
+                                    closeButton: false,
+                                    title: "Select Coupling Decomposition",
+                                    value: coupling_decomposition,
+                                    inputType: 'select',
+                                    inputOptions: theOptions,
+                                    callback: function (result) {
+                                        if (result){coupling_decomposition = result;}
+                                        else {bootbox.hideAll()}
+                                    }
+                                })       
+                            }
+                            if (MDAO_architecture == "CO" || MDAO_architecture == "BLISS-2000")
+                            {
+                                bootbox.prompt(
+                                {
+                                    closeButton: false,
+                                    title: "Select number of coupled function groups",
+                                    inputType: 'number',
+                                    callback: function (result) {
+                                        if (result)
+                                        {
+                                            var number_of_coupled_groups = result;
+                                            
+                                            var theOptions = [];
+                                            for (var j=1; j<currentGraph.xdsm.nodes.length;j++)
+                                            {
+                                                //aigner: value: j-1 because in KADMOS the coordinator is not in the node list, therefore all other competences' indices are decreased by 1!
+                                                theOptions.push({text: currentGraph.xdsm.nodes[j].name, value: currentGraph.xdsm.nodes[j].uID});
+                                            }
+                                            
+                                            coupled_functions_groups = [];
+                                            function select_coupled_functions_group(num, counter)
+                                            {
+                                                counter ++;
+                                                if (num >= counter)
+                                                {
+                                                    bootbox.prompt(
+                                                    {
+                                                        closeButton: false,
+                                                        title: "Select functions for group " +String(counter),
+                                                        inputType: 'checkbox',
+                                                        inputOptions: theOptions,
+                                                        callback: function (result) 
+                                                        {
+                                                            if (result)
+                                                            {
+                                                                coupled_functions_groups.push(result)
+                                                                select_coupled_functions_group(num, counter);
+                                                            }
+                                                            else {bootbox.hideAll()}
+                                                        }
+                                                    })    
+                                                }
+                                            }
+                                            select_coupled_functions_group(number_of_coupled_groups, 0)
+                                        }
+                                        else {bootbox.hideAll()}
+                                    }
+                                })       
+                            }
+                        }}
 					})
 				})
                     
@@ -22886,98 +23182,90 @@
 					bootbox.hideAll();
 					bootbox.prompt(
 					{
+                        closeButton: false,
 						title: "Select Coupling Decomposition",
 						value: coupling_decomposition,
 						inputType: 'select',
 						inputOptions: theOptions,
-						callback: function (result) {if (result){coupling_decomposition = result;}}
-					})
-				})
-                    
-				var set_DOE_method_DOM = d3.select(".set_DOE_method")
-                set_DOE_method_DOM.on("mousedown", function()
-                    {
-                        var theOptions = []
-                        for (var i = 0; i<DOE_methods.length; i++){theOptions.push({text:DOE_methods[i], value:DOE_methods[i]})}
-                        bootbox.hideAll();
-                        bootbox.prompt(
-                        {
-                            title: "Select DOE Method",
-                            value: DOE_method,
-                            inputType: 'select',
-                            inputOptions: theOptions,
-                            callback: function (result) {if (result){DOE_method = result;}}
-                        })
-                    })
-                    
-                var impose_MDAO_architecture_DOM = d3.select(".impose_MDAO_architecture")
-				impose_MDAO_architecture_DOM.on("mousedown", function()
-				{
-					var theOptions = [{text:"yes",value:"True"},{text:"no",value:"False"}]
-					bootbox.hideAll();
-					bootbox.prompt(
-					{
-						title: "Allow Unconverged Couplings?",
-						value: "True",
-						inputType: 'select',
-						inputOptions: theOptions,
 						callback: function (result) 
-						{
-							if (result)
-							{   
-								var allow_unconverged_couplings = result;                                    
-								var bootboxContent = {title: "Impose MDAO Architecture", message: '<p>Please be patient...</p>'};
-								var xhr = $.ajax(
-								{
-									type: 'POST',
-									url: '/kadmos_impose_MDAO_architecture',
-									data: {'graphID':graphID, 
-										   'currentOrder':nodeOrder,
-										   'mdao_architecture':MDAO_architecture,
-										   'doe_method':DOE_method,
-										   'coupling_decomposition':coupling_decomposition,
-										   'allow_unconverged_couplings':allow_unconverged_couplings,
-										   'sessionId':sessionId},
-									success: function(result)
-									{
-										if (result.includes("ERROR:"))
-										{
-											bootboxContent.message = result
-											kadmosErrorMessage(bootboxContent);
-										}
-										else
-										{
-											var updatedData = {};
-											updatedData = data;
-											var graphData = JSON.parse(result);             
-											for (var i = 0; i < updatedData.graphs.length; i++)
-											{
-												if (graphID == updatedData.graphs[i].id)
-												{
-													updatedData.graphs[i] = graphData.graphs[0];   
-												}
-											}
-											
-											clearView();
-											makeKadmosMenu(updatedData);
-											xdsm_script(updatedData,graphID);
-											
-											bootboxContent.message = "Success!"
-											kadmosSuccessMessage(bootboxContent)
-										}
-									},
-									error: function(result)
-									{
-										bootboxContent.message = result
-										kadmosErrorMessage(bootboxContent);
-									}
-								});
-								kadmosHavePatience(xhr, bootboxContent)
-							
-							}
-						
-						}
-					})
+                        {
+                            if (result)
+                            {
+                                coupling_decomposition = result;
+                                var theOptions = [{text:"yes",value:"True"},{text:"no",value:"False"}]
+                                bootbox.hideAll();
+                                bootbox.prompt(
+                                {
+                                    closeButton: false,
+                                    title: "Allow Unconverged Couplings?",
+                                    value: "True",
+                                    inputType: 'select',
+                                    inputOptions: theOptions,
+                                    callback: function (result) 
+                                    {
+                                        if (result)
+                                        {   
+                                            allow_unconverged_couplings = result;                                    
+                                        }
+                                    }
+                                })
+                            }
+                        }
+					})                    
+				})
+                    
+                var impose_MDAO_architecture_DOM = d3.select(".impose_MDAO_architecture")
+				impose_MDAO_architecture_DOM.on("mousedown", function()
+				{                  
+                    var bootboxContent = {title: "Impose MDAO Architecture", message: '<p>Please be patient...</p>'};
+                    DOE_settings.push({'name': 'method','value':DOE_method})
+                    var xhr = $.ajax(
+                    {
+                        type: 'POST',
+                        url: '/kadmos_impose_MDAO_architecture',
+                        data: {'graphID':graphID, 
+                               'currentOrder':nodeOrder,
+                               'mdao_architecture':MDAO_architecture,
+                               'doe_settings': JSON.stringify(DOE_settings),
+                               'coupled_functions_groups': JSON.stringify(coupled_functions_groups),
+                               'coupling_decomposition':coupling_decomposition,
+                               'allow_unconverged_couplings':allow_unconverged_couplings,
+                               'sessionId':sessionId},
+                        success: function(result)
+                        {
+                            if (result.includes("ERROR:"))
+                            {
+                                bootboxContent.message = result
+                                kadmosErrorMessage(bootboxContent);
+                            }
+                            else
+                            {
+                                var updatedData = {};
+                                updatedData = data;
+                                var graphData = JSON.parse(result);             
+                                for (var i = 0; i < updatedData.graphs.length; i++)
+                                {
+                                    if (graphID == updatedData.graphs[i].id)
+                                    {
+                                        updatedData.graphs[i] = graphData.graphs[0];   
+                                    }
+                                }
+                                
+                                clearView();
+                                makeKadmosMenu(updatedData);
+                                xdsm_script(updatedData,graphID);
+                                
+                                bootboxContent.message = "Success!"
+                                kadmosSuccessMessage(bootboxContent)
+                            }
+                        },
+                        error: function(result)
+                        {
+                            bootboxContent.message = result
+                            kadmosErrorMessage(bootboxContent);
+                        }
+                    });
+                    kadmosHavePatience(xhr, bootboxContent)
 				})
                 //####################################################################################################################
                 
@@ -22987,6 +23275,7 @@
 				var upload_script_DOM = d3.select(".upload_script")
 				upload_script_DOM.on("mousedown", function(){
 						bootbox.dialog({
+                            closeButton: false,
 							title: "Upload custom script",
 							message: "<button id='downloadBtn' class='btn btn-primary'><i class='glyphicon glyphicon-download-alt '></i> Download template script</button>"
 									+"<form style='margin-top:20px;' id='scriptForm' method='post' enctype='multipart/form-data'>" 
@@ -23110,8 +23399,6 @@
 							showFullTree(varCategories[this.id].name,varCategories[this.id].description)
 						})
 				}
-				//aigner: Set width of the div, so the VISTOMS dropdown (in the top of the page) still works
-				//dataModelDiv.style("width", String(dropdown1.node().getBoundingClientRect().width+20)+"px")
 				//####################################################################################################################
                 
                 //aigner: Data Model List View Button
@@ -23558,6 +23845,7 @@
                         {         
                             bootbox.hideAll();
                             bootbox.confirm({
+                                closeButton: false,
 								title: "Delete output from competence " + anEdge.from_uID,
 								message: "<form id='infos' action=''>\Full xPath of the variable: <input type='text' name='edgeName' />\</form>",
 								callback: function(result) {
@@ -24685,6 +24973,72 @@
 					.text("Graph description: " + currentGraph.description)
 				//################################################################################################//	
 				
+                
+                var quickMenuDiv = d3.select(".edgeBundlesDiv").append("div").attr("class","quickMenuDiv")
+                    .style("top","-10px")
+                    .style("margin-left","10pt")
+                var changeViewButton = quickMenuDiv.append("button")
+                    .attr("class","btn btn-info")
+                    .attr("data-toggle","tooltip")
+                    .attr("data-placement","top")
+                    .attr("title","Change visualization type")
+                    .style("margin-left","10px")
+                    .style("margin-bottom","10px")
+                changeViewButton.append("span")
+                    .attr("class","glyphicon glyphicon-random")
+                    .attr("aria-hidden","true")
+                changeViewButton.on("mousedown", function()
+                {
+                    bootbox.hideAll();
+                 
+                    bootbox.hideAll();
+                    bootbox.prompt({
+                        closeButton: false,
+                        title: "Change visualization type",
+                        inputType: 'select',
+                        value: '',
+                        inputOptions: [
+                            {
+                                text: 'Please choose...',
+                                value: '',
+                            },
+                            {
+                                text: 'XDSM view',
+                                value: 'xdsm',
+                            },
+                            {
+                                text: 'Edge Bundles view',
+                                value: 'edgeBundles',
+                            },
+                            {
+                                text: 'Sankey Diagram',
+                                value: 'sankeyDiagram',
+                            }
+                        ],
+                        callback: function (theView) {                            
+                            if (theView == "xdsm")
+                            {
+                                clearView();
+                                xdsm_script(data,currentGraph.id)
+                            }
+                            else if (theView == "edgeBundles")
+                            {
+                                clearView();
+                                edgeBundles_script(data,currentGraph.id)
+                            }
+                            else if (theView == "sankeyDiagram")
+                            {
+                                clearView();
+                                sankeyDiagram_script(data,currentGraph.id)
+                            }
+                            else
+                            {}
+                        }
+                    });
+                })
+                
+                
+                
 				//aigner: Tree option menu to select which kind of tree view the user wants to see
 				//#####################################################################//
 				function showFullTree(categoryID, categoryDescr)
@@ -24762,23 +25116,29 @@
                     }
                 }
                 
+                
+                var graph_menu = "      <nav>"
+                          +"          <ul>"
+                          +"             <li><a href='#'>Graph inspection <span>&#x25BE;</span></a>"
+                          +"                  <ul>"                        
+                          +"                      <li><a href='#'>Inspect data model<span>&#x25B8;</span></a>"
+                          +"                          <ul class='data_model_view'>"
+                          +"                              <li class='tree_view'><a href='#'>Tree view<span>&#x25B8;</span></a></li>"
+                          +"                              <li class='list_view'><a href='#'>List view<span>&#x25B8;</span></a></li>"
+                          +"                          </ul>"
+                          +"                      </li>"
+                          +"                  </ul>"
+                          +"              </li>"
+                          +"          </ul>"
+                          +"      </nav>"
+                          
+				d3.select(".edgeBundlesDiv").append('div').attr("class","graph_menu").style("margin-left","20px").html(graph_menu);                
+                
+                
                 //aigner: Data Model Tree View Button
 				//####################################################################################################################
-				var dataModelDiv = d3.select(".edgeBundlesDiv").append("div").attr("class","dataModelDiv").attr("transform","translate(10,0)")
-				var ul = dataModelDiv.append("ul")
-				var dropdown1 = ul.append("li").on("mouseover", function(){d3.select(this).style("cursor", "default")})
-				dropdown1.append("img").attr("src",fileReference.AGILE_Icon)
-					.attr("align","left")
-					.style("margin-left","6px")
-					.style("margin-right","-10px")
-					.style("margin-top","10px")
-					.style("margin-bottom","0px")
-					.attr("height","20")
-					.attr("width","20")
-				dropdown1.append("a").text("Data Model Tree")
-				var links = dropdown1.append("ul");
-                var xOffset_ul = dropdown1[0][0].offsetLeft+dropdown1[0][0].offsetWidth-40;
-                links.style("left", String(xOffset_ul)+"px")
+				var dropdown1 = d3.select(".tree_view")
+				var links = dropdown1.append("ul").attr("class","view_options");
 				for (var j=0; j< varCategories.length; j++)
 				{
 					//console.log(varCategories[j])
@@ -24792,26 +25152,55 @@
 							showFullTree(varCategories[this.id].name,varCategories[this.id].description)
 						})
 				}
-				//aigner: Set width of the div, so the VISTOMS dropdown (in the top of the page) still works
-				//dataModelDiv.style("width", String(dropdown1.node().getBoundingClientRect().width+20)+"px")
 				//####################################################################################################################
                 
                 //aigner: Data Model List View Button
 				//####################################################################################################################
-				var ul_list = dataModelDiv.append("ul")
-				var dropdownList = ul_list.append("li").on("mouseover", function(){d3.select(this).style("cursor", "default")})
-				dropdownList.append("img").attr("src",fileReference.AGILE_Icon)
-					.attr("align","left")
-					.style("margin-left","6px")
-					.style("margin-right","-10px")
-					.style("margin-top","10px")
-					.style("margin-bottom","0px")
-					.attr("height","20")
-					.attr("width","20")
-				dropdownList.append("a").text("Data Model List")
-				var linksList = dropdownList.append("ul");
-                var xOffset_ul = dropdownList[0][0].offsetLeft+dropdownList[0][0].offsetWidth-40;
-                linksList.style("left", String(xOffset_ul)+"px")
+				//aigner: Function, that shows a list of elements
+                function showList(aTitle,aList,aMenu)
+                {
+                    if (aList.length != 0)
+                    {
+                        var d3_body = d3.select("body");
+                        
+                        var panel_div = d3_body.append("div").attr("class", "myPanel panel-default")
+                        panel_div.append("div").attr("class","panel-heading")
+                            .append("div").attr("class","panel_title").append("h4").text(aTitle)
+                        panel_div.append("input")
+                            .attr("id","myInput")
+                            .attr("placeholder","Filter search...")
+                            .attr("title","Type in a name")
+                            .attr("onkeyup","filterSearch()")
+                        var listGroup = panel_div.append("div").attr("class","panel-body")
+                            .append("table").attr("id","myTable")
+                            .append("tbody")
+                            
+                        var tr = listGroup
+                            .selectAll('tr')
+                            .data(aList).enter()
+                                .append('tr')
+                        var td = tr.append("td").html(function(d) { 
+                            if (d.xPath){return d.xPath;} 
+                            else {return d.name;} 
+                        })
+                        tr.on('contextmenu', d3.contextMenu(aMenu));
+                        $('.myPanel').lobiPanel({
+                            reload: false,
+                            editTitle: false,
+                            expand: false,
+                            unpin: false,
+                            resize: "none",
+                            minWidth: 200,
+                            minHeight: 200,
+                            maxWidth: 1100,
+                            maxHeight: 1200,
+                        });
+                        $('.myPanel').lobiPanel('unpin');
+                    }
+                }
+                
+                var dropdownList = d3.select(".list_view")
+				var linksList = dropdownList.append("ul").attr("class","view_options");
 				for (var j=0; j< varCategories.length; j++)
 				{
 					//console.log(varCategories[j])
@@ -24834,67 +25223,10 @@
                             showList(title,variables,nodeMenu)
 						})
 				}
-				//aigner: Set width of the div, so the VISTOMS dropdown (in the top of the page) still works
-				//####################################################################################################################
-				
-				
-				//aigner: legend
-				//################################################################################################//
-				// var legendDiv = d3.select("body").append("div").attr("class","legendDiv");
-				// var legendSVG = legendDiv.append("svg").attr("width",1000).attr("height",200);
-				// var legend = legendSVG.append("g")
-					// .attr("class", "legend")
-					// .attr("transform", "translate(38,12)");
-				// var legendFrame = legend.append("rect")
-					// .attr("x",-28)
-					// .attr("height", 150)
-					// .attr("width", 400)
-					// .attr("fill", "none")
-					// .attr("stroke", "#8888")
-					// .attr("stroke-width", 3)
-				// legend.append("text")
-					// .attr("transform", "translate(-20,24)")
-					// .attr("font-family","Arial")
-					// .attr("font-size","16pt")
-					// .attr("font-weight",700)
-					// .attr("fill","black")
-					// .text("Legend")
-				// legend.append("line")
-					// .attr("x1", -20)
-					// .attr("y1", 50)
-					// .attr("x2", 20)
-					// .attr("y2", 50)
-					// .style("stroke", "#CC0000")
-					// .style("stroke-width", 5);
-				// legend.append("line")
-					// .attr("x1", -20)
-					// .attr("y1", 90)
-					// .attr("x2", 20)
-					// .attr("y2", 90)
-					// .style("stroke", "#99CC00")
-					// .style("stroke-width", 5);
-				// legend.append("text")
-					// .attr("transform", "translate(30,56)")
-					// .attr("font-family","Arial")
-					// .attr("font-size","12pt")
-					// .attr("fill","black")
-					// .text("Input")
-				// legend.append("text")
-					// .attr("transform", "translate(30,96)")
-					// .attr("font-family","Arial")
-					// .attr("font-size","12pt")
-					// .attr("fill","black")
-					// .text("Output")
-				
-				//################################################################################################//
-				
-				
-				//d3.select(".legendDiv").moveToBack()
-				d3.select(".dataModelDiv").moveToBack()
+                
+				d3.select(".graph_menu").moveToBack()
+				d3.select(".quickMenuDiv").moveToBack()
 				headerDiv.moveToBack()
-                d3.select(".generalPaneDiv").moveToBack()
-				d3.select(".navigationBarDiv").moveToBack()
-				d3.select(".visPackDiv").moveToBack()
 				
 				
 				var nodes = cluster.nodes(packageHierarchy(classes));
@@ -29221,6 +29553,73 @@
 					.text("Graph description: " + currentGraph.description)
 				//################################################################################################//	
 				
+                //aigner: Switch views between xdsm, edge bundles and sankey diagram
+                //################################################################################################//
+                var quickMenuDiv = d3.select(".sankeyDiagramDiv").append("div").attr("class","quickMenuDiv")
+                    .style("top","-10px")
+                    .style("margin-left","10pt")
+                var changeViewButton = quickMenuDiv.append("button")
+                    .attr("class","btn btn-info")
+                    .attr("data-toggle","tooltip")
+                    .attr("data-placement","top")
+                    .attr("title","Change visualization type")
+                    .style("margin-left","10px")
+                    .style("margin-bottom","10px")
+                changeViewButton.append("span")
+                    .attr("class","glyphicon glyphicon-random")
+                    .attr("aria-hidden","true")
+                changeViewButton.on("mousedown", function()
+                {
+                    bootbox.hideAll();
+                 
+                    bootbox.hideAll();
+                    bootbox.prompt({
+                        closeButton: false,
+                        title: "Change visualization type",
+                        inputType: 'select',
+                        value: '',
+                        inputOptions: [
+                            {
+                                text: 'Please choose...',
+                                value: '',
+                            },
+                            {
+                                text: 'XDSM view',
+                                value: 'xdsm',
+                            },
+                            {
+                                text: 'Edge Bundles view',
+                                value: 'edgeBundles',
+                            },
+                            {
+                                text: 'Sankey Diagram',
+                                value: 'sankeyDiagram',
+                            }
+                        ],
+                        callback: function (theView) {                            
+                            if (theView == "xdsm")
+                            {
+                                clearView();
+                                xdsm_script(data,currentGraph.id)
+                            }
+                            else if (theView == "edgeBundles")
+                            {
+                                clearView();
+                                edgeBundles_script(data,currentGraph.id)
+                            }
+                            else if (theView == "sankeyDiagram")
+                            {
+                                clearView();
+                                sankeyDiagram_script(data,currentGraph.id)
+                            }
+                            else
+                            {}
+                        }
+                    });
+                })
+                //################################################################################################//
+                
+                
 				//aigner: Tree option menu to select which kind of tree view the user wants to see
 				//#####################################################################//
 				function showFullTree(categoryID, categoryDescr)
@@ -29298,23 +29697,28 @@
                     }
                 }
 				
-				//aigner: Data Model Tree View Button
+				var graph_menu = "      <nav>"
+                          +"          <ul>"
+                          +"             <li><a href='#'>Graph inspection <span>&#x25BE;</span></a>"
+                          +"                  <ul>"                        
+                          +"                      <li><a href='#'>Inspect data model<span>&#x25B8;</span></a>"
+                          +"                          <ul class='data_model_view'>"
+                          +"                              <li class='tree_view'><a href='#'>Tree view<span>&#x25B8;</span></a></li>"
+                          +"                              <li class='list_view'><a href='#'>List view<span>&#x25B8;</span></a></li>"
+                          +"                          </ul>"
+                          +"                      </li>"
+                          +"                  </ul>"
+                          +"              </li>"
+                          +"          </ul>"
+                          +"      </nav>"
+                          
+				d3.select(".sankeyDiagramDiv").append('div').attr("class","graph_menu").style("margin-left","20px").html(graph_menu);                
+                
+                
+                //aigner: Data Model Tree View Button
 				//####################################################################################################################
-				var dataModelDiv = d3.select(".sankeyDiagramDiv").append("div").attr("class","dataModelDiv").attr("transform","translate(10,0)")
-				var ul = dataModelDiv.append("ul")
-				var dropdown1 = ul.append("li").on("mouseover", function(){d3.select(this).style("cursor", "default")})
-				dropdown1.append("img").attr("src",fileReference.AGILE_Icon)
-					.attr("align","left")
-					.style("margin-left","6px")
-					.style("margin-right","-10px")
-					.style("margin-top","10px")
-					.style("margin-bottom","0px")
-					.attr("height","20")
-					.attr("width","20")
-				dropdown1.append("a").text("Data Model Tree")
-				var links = dropdown1.append("ul");
-                var xOffset_ul = dropdown1[0][0].offsetLeft+dropdown1[0][0].offsetWidth-40;
-                links.style("left", String(xOffset_ul)+"px")
+				var dropdown1 = d3.select(".tree_view")
+				var links = dropdown1.append("ul").attr("class","view_options");
 				for (var j=0; j< varCategories.length; j++)
 				{
 					//console.log(varCategories[j])
@@ -29329,25 +29733,55 @@
 						})
 				}
 				//aigner: Set width of the div, so the VISTOMS dropdown (in the top of the page) still works
-				//dataModelDiv.style("width", String(dropdown1.node().getBoundingClientRect().width+20)+"px")
 				//####################################################################################################################
                 
                 //aigner: Data Model List View Button
 				//####################################################################################################################
-				var ul_list = dataModelDiv.append("ul")
-				var dropdownList = ul_list.append("li").on("mouseover", function(){d3.select(this).style("cursor", "default")})
-				dropdownList.append("img").attr("src",fileReference.AGILE_Icon)
-					.attr("align","left")
-					.style("margin-left","6px")
-					.style("margin-right","-10px")
-					.style("margin-top","10px")
-					.style("margin-bottom","0px")
-					.attr("height","20")
-					.attr("width","20")
-				dropdownList.append("a").text("Data Model List")
-				var linksList = dropdownList.append("ul");
-                var xOffset_ul = dropdownList[0][0].offsetLeft+dropdownList[0][0].offsetWidth-40;
-                linksList.style("left", String(xOffset_ul)+"px")
+				//aigner: Function, that shows a list of elements
+                function showList(aTitle,aList,aMenu)
+                {
+                    if (aList.length != 0)
+                    {
+                        var d3_body = d3.select("body");
+                        
+                        var panel_div = d3_body.append("div").attr("class", "myPanel panel-default")
+                        panel_div.append("div").attr("class","panel-heading")
+                            .append("div").attr("class","panel_title").append("h4").text(aTitle)
+                        panel_div.append("input")
+                            .attr("id","myInput")
+                            .attr("placeholder","Filter search...")
+                            .attr("title","Type in a name")
+                            .attr("onkeyup","filterSearch()")
+                        var listGroup = panel_div.append("div").attr("class","panel-body")
+                            .append("table").attr("id","myTable")
+                            .append("tbody")
+                            
+                        var tr = listGroup
+                            .selectAll('tr')
+                            .data(aList).enter()
+                                .append('tr')
+                        var td = tr.append("td").html(function(d) { 
+                            if (d.xPath){return d.xPath;} 
+                            else {return d.name;} 
+                        })
+                        tr.on('contextmenu', d3.contextMenu(aMenu));
+                        $('.myPanel').lobiPanel({
+                            reload: false,
+                            editTitle: false,
+                            expand: false,
+                            unpin: false,
+                            resize: "none",
+                            minWidth: 200,
+                            minHeight: 200,
+                            maxWidth: 1100,
+                            maxHeight: 1200,
+                        });
+                        $('.myPanel').lobiPanel('unpin');
+                    }
+                }
+                
+                var dropdownList = d3.select(".list_view")
+				var linksList = dropdownList.append("ul").attr("class","view_options");
 				for (var j=0; j< varCategories.length; j++)
 				{
 					//console.log(varCategories[j])
@@ -29370,14 +29804,10 @@
                             showList(title,variables,nodeMenu)
 						})
 				}
-				//aigner: Set width of the div, so the VISTOMS dropdown (in the top of the page) still works
-				//####################################################################################################################
 				
-				d3.select(".dataModelDiv").moveToBack()
+                d3.select(".graph_menu").moveToBack()
+				d3.select(".quickMenuDiv").moveToBack()
 				headerDiv.moveToBack()
-                d3.select(".generalPaneDiv").moveToBack()
-				d3.select(".navigationBarDiv").moveToBack()
-				d3.select(".visPackDiv").moveToBack()
 				
 				
 				biHiSankey
@@ -29398,5 +29828,4 @@
 			},{"d3":1}]},{},[2]);
 		}
 		</script>
-    </body>
 </html>
diff --git a/kadmos/vistoms/templates/acknowledgements.html b/kadmos/vistoms/templates/acknowledgements.html
index 0d10fc79bfc76f7ea9453d29c1d52cb30bded3b7..a0fb3d5244e603b5eb160c76b840fd5449e1b257 100644
--- a/kadmos/vistoms/templates/acknowledgements.html
+++ b/kadmos/vistoms/templates/acknowledgements.html
@@ -6,8 +6,8 @@
     <p>The development of the KADMOS/VISTOMS interface and this website have been performed in the framework of the <a href="http://agile-project.eu/">AGILE project</a> (Aircraft 3rd Generation MDO for Innovative Collaboration of Heterogeneous Teams of Experts) and has received funding from the European Union Horizon 2020 Programme (H2020-MG-2014-2015) under grant agreement no. 636202. The authors are grateful to the partners of the AGILE consortium for their contribution and feedback.</p>
     <p>With special thanks to Lukas Müller and Maaike de Wit for the creation of the first version of this website interface.</p>
     <p>With special thanks to Melvin van Gent for his help and advice on web development.</p>
-    <img src="{{url_for('static', filename='agile_logo.png')}}" class="img-responsive" alt="AGILE logo">
-    <img src="{{url_for('static', filename='agile_partners.png')}}" class="img-responsive" alt="AGILE partners">
+    <img src="static/pictures/agile_logo.png" class="img-responsive" alt="AGILE logo">
+    <img src="static/pictures/agile_partners.png" class="img-responsive" alt="AGILE partners">
     <p></p>
 </div>
 {% endblock %}
\ No newline at end of file
diff --git a/kadmos/vistoms/templates/base.html b/kadmos/vistoms/templates/base.html
index e748f673c47f45eb454bffef37655a5dcaf31409..87d0fd7cb32b66bd7103c9d4ee0c8dc236fd2e4b 100644
--- a/kadmos/vistoms/templates/base.html
+++ b/kadmos/vistoms/templates/base.html
@@ -6,11 +6,13 @@
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <meta name="author" content="Imco van Gent, Lukas Müller, Maaike de Wit">
     {% if temp_id %}
-    <title>{{ temp_id }} - KADMOS/VISTOMS Interface</title>
+    <title>{{ temp_id }} - MDO System Interface</title>
     {% else %}
-    <title>KADMOS/VISTOMS Interface</title>
+    <title>MDO System Interface</title>
     {% endif %}
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >
+    <link rel="stylesheet" href="static/lib/bootstrap/bootstrap.css" rel="stylesheet">
+    <link rel="stylesheet" href="static/lib/bootstrap/bootstrap.min.css"/>
+	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >
     <link rel=stylesheet href="{{ url_for('static', filename='style.css') }}">
     <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans">
     {% block head %}{% endblock %}
@@ -21,34 +23,30 @@
     <![endif]-->
 </head>
 <body>
-    <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
-        <div class="container">
-            <div class="navbar-header">
-                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
-                    <span class="sr-only">Toggle navigation</span>
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                    <span class="icon-bar"></span>
-                </button>
-                <a class="navbar-brand" href="/"><img src="{{url_for('static', filename='agile_logo_small.png')}}"  alt="AGILE logo"><span class="navbar-brand-text">KADMOS/VISTOMS interface</span></a>
-            </div>
-            <div class="navbar-collapse collapse" id="bs-example-navbar-collapse-1">
-                <ul class="nav navbar-nav navbar-right">
-                    <li {% if page == 'start' %}class="active"{% endif %}>
-                        <a href="/">Start</a>
-                    </li>
-                    <li {% if page == 'info' %}class="active"{% endif %}>
-                        <a href="/info">Info</a>
-                    </li>
-                    <li {% if page == 'acknowledgements' %}class="active"{% endif %}>
-                        <a href="/acknowledgements">Acknowledgements</a>
-                    </li>
-                </ul>
-            </div>
-        </div>
-    </nav>
+	<nav style="position:fixed" class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
+      <div class="collapse navbar-collapse" id="navbarsExampleDefault">
+        <ul class="navbar-nav mr-auto">
+			<li style="margin-left:10pt" {% if page == 'start' %}class="active"{% endif %}>
+				<a id="mainPage" class="nav-link" href="/" style="cursor: pointer"><span style="font-size: 18pt" title="Start" class="glyphicon glyphicon-home"></span></a>
+			</li>
+			<li style="margin-left:10pt" {% if page == 'info' %}class="active"{% endif %}>
+				<a id="info" class="nav-link" href="/info"><span style="font-size: 18pt" title="Info" class="glyphicon glyphicon-info-sign"></span></a>
+			</li>
+			<li style="margin-left:10pt" {% if page == 'acknowledgements' %}class="active"{% endif %}>
+				<a id="email" class="nav-link" href="/acknowledgements"><span style="font-size: 18pt" title="Acknowledgements" class="glyphicon glyphicon-thumbs-up"></span></a>
+			</li>
+        </ul>
+        <div style="float: none;text-align: center;" class="navbar-header">
+            <img style="margin-bottom:10pt" src="static/pictures/AGILE_Icon.png" width="40" height="40"></img>
+            <a style="color: white;font-size:24pt; float:none" class="navbar-brand">MDO System Interface</a>
+       </div>
+       
+      </div>
+    </nav>y
     {% block content %}{% endblock %}
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+    <script src="static/lib/bootstrap/jquery-3.js" integrity="" crossorigin="anonymous"></script>
+	<script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery-slim.min.js"><\/script>')</script>
+	<script src="static/lib/bootstrap/popper.js"></script>
+	<script src="static/lib/bootstrap/bootstrap.js"></script>
 </body>
 </html>
diff --git a/kadmos/vistoms/templates/index.html b/kadmos/vistoms/templates/index.html
index 844d2f5f7d9a1c920a970e438fda5855c2e4fdef..ccd65f3217d6665def3764bcf5dd738165d590b1 100644
--- a/kadmos/vistoms/templates/index.html
+++ b/kadmos/vistoms/templates/index.html
@@ -1,12 +1,17 @@
 {% extends "base.html" %}
 {% block content %}
 <div class="container">
-    <h1>Welcome to the KADMOS / VISTOMS interface!</h1>
+	  <div style="margin-top:10pt;">
+		<div class="container">
+		  <h1 class="display-3">Welcome to the MDO System Interface!</h1>
+		  <p style="font-size: 18pt">This package has been created within the context of the European Horizon 2020 project <a href="http://www.agile-project.eu/" target="_blank"><img src="static/pictures/AGILE_Logo_large.png" width="90" height="20"></img></a> </p>
+		</div>
+	  </div>
     {% include 'message.html' %}
     {% include 'error.html' %}
     <div class="panel-body blue list group">
         <a href="/start_vistoms_server_session" id="confirm" class="list-group-item">
-            Start/continue VISTOMS session
+            Start/continue session
         </a>
     </div>
     {% include 'error.html' %}
diff --git a/kadmos/vistoms/templates/info.html b/kadmos/vistoms/templates/info.html
index 979c6239b97eb416610b117986d60c3eb57afe0d..70ca44dd38c588d7087f99c7e02680a538578ad9 100644
--- a/kadmos/vistoms/templates/info.html
+++ b/kadmos/vistoms/templates/info.html
@@ -3,7 +3,7 @@
 <div class="container">
     <h1>Information</h1>
     <p>Please, refer to the following articles for more information on the KADMOS/VISTOMS interface:
-        <br>[1] Aigner, B., van Gent, I., La Rocca, G., Stumpf, E., Veldhuis, L.L.M., Using graph-based algorithms and data-driven documents for formulation and visualization of large MDO systems, CEAS Aeronautical Journal, 2018
+        <br>[1] Aigner, B., van Gent, I., La Rocca, G., Stumpf, E., Veldhuis, L.L.M., Graph-based algorithms and data-driven documents for formulation and visualization of large MDO systems, CEAS Aeronautical Journal, 2018
         <br>[2] van Gent, I., La Rocca, G., Veldhuis, L.L.M., Composing MDAO symphonies: graph-based generation and manipulation of large multidisciplinary systems, 18th AIAA/ISSMO Multidisciplinary Analysis and Optimization Conference, 2017
         <br>[3] van Gent, I., Hoogreef, M.F.M., La Rocca, G., CMDOWS: A Proposed New Standard to Store and Exchange MDO Systems, CEAS Aeronautical Journal, 2018
         <br>[4] van Gent, I. and Ciampa, P.D. and Aigner, B. and Jepsen, J. and La Rocca, G., Schut, E.J., Knowledge architecture supporting collaborative MDO in the AGILE paradigm, 18th AIAA/ISSMO Multidisciplinary Analysis and Optimization Conference, 2017
diff --git a/kadmos/vistoms/vistoms.py b/kadmos/vistoms/vistoms.py
index dda87a0047d5fc5227b06e5423cf9b3caded8cb4..0452be158d85db5924bac8a5e166f6966ec5fb53 100644
--- a/kadmos/vistoms/vistoms.py
+++ b/kadmos/vistoms/vistoms.py
@@ -16,6 +16,8 @@ from copy import deepcopy
 from datetime import datetime
 from shutil import copyfile
 
+import numpy as np
+
 import networkx as nx
 from flask import Flask, render_template, request, jsonify, send_from_directory, send_file
 from kadmos.cmdows.cmdows import find_cmdows_file
@@ -131,8 +133,8 @@ def interface(debug=True, tempdir=None):
     def acknowledgements():
         return render_template('acknowledgements.html', page='acknowledgements')
 
-    @app.route('/kadmos_upload_file', methods=['GET', 'POST'])
-    def kadmos_upload_file():
+    @app.route('/kadmos_upload_files', methods=['GET', 'POST'])
+    def kadmos_upload_files():
         """
             Function uploads a file to the temp folder and returns the graph information to VISTOMS
 
@@ -146,36 +148,22 @@ def interface(debug=True, tempdir=None):
                 session_id = request.form['sessionId']
                 uploaded_files = request.files.getlist("file[]")
 
-                number_of_files = len(uploaded_files)
-                if number_of_files > 2:
-                    return "ERROR: Max. number of files that can be uploaded is 2!"
-
-                mpgFile = []
-                dgFile = []
-                for file in uploaded_files:
-                    if "_mpg" in file.filename:
-                        mpgFile = file
-                    else:
-                        dgFile = file
+                session_folder = retrieve_session_folder(SESSIONS_CATALOG_FOLDER, session_id)
 
                 # check if the post request has the file part
                 if 'file[]' not in request.files:
-                   return "ERROR: No file part!"
-
-                # if user does not select file, browser also
-                # submit a empty part without filename
-                if dgFile.filename == '':
                     return "ERROR: No file part!"
-                if dgFile:
-                    # Check if the right filetypes were chosen
-                    if fileType == 'CMDOWS file' and dgFile.filename.rsplit('.', 1)[1].lower() != "xml":
-                        return "ERROR: Wrong file type! Please use a valid CMDOWS file"
-                    elif fileType == 'KDMS file(s)' and dgFile.filename.rsplit('.', 1)[1].lower() != "kdms":
-                        return "ERROR: Wrong file type! Please use a valid KDMS file"
-                    elif fileType == 'Database' and dgFile.filename.rsplit('.', 1)[1].lower() != "zip":
-                        return "ERROR: Wrong file type! Please use a valid zip file"
 
-                    session_folder = retrieve_session_folder(SESSIONS_CATALOG_FOLDER, session_id)
+                newVistomsDataArray = []
+
+                if fileType == 'Database':
+                    if len(uploaded_files) > 1:
+                        return "ERROR: You can upload only one ZIP-file!"
+                    file = {}
+                    for aFile in uploaded_files:
+                        file = aFile
+                    if file.filename.rsplit('.', 1)[1].lower() != "zip":
+                        return "ERROR: Wrong file type! Please use a valid zip file"
 
                     database_dir = ""
                     if fileType == 'Database':
@@ -198,50 +186,96 @@ def interface(debug=True, tempdir=None):
 
                         cmdows_file = find_cmdows_file(file_list)
                         graphFileName = cmdows_file
-                    else:
-                        graphFileName = os.path.join(session_folder, dgFile.filename)
-                        dgFile.save(os.path.join(session_folder, dgFile.filename))
-
-                    loaded_graph = load(graphFileName, file_check_critical=False)
-                    if isinstance(loaded_graph, tuple):
-                        graph = loaded_graph[0]
-                        mpg = loaded_graph[1]
-                    elif mpgFile:
-                        # Check if the right filetype was chosen
-                        if mpgFile.filename.rsplit('.', 1)[1].lower() != "kdms":
-                            return "ERROR: Wrong file type! Please use a valid KDMS file"
-                        graph = loaded_graph
-                        mpgFileName = mpgFile.filename
-                        mpgFile.save(os.path.join(session_folder, mpgFileName))
-                        mpg = load(os.path.join(session_folder, mpgFileName), file_check_critical=True)
-                        # Remove the uploaded file from the temp folder
-                        os.remove(os.path.join(session_folder, mpgFileName))
-                    else:
-                        graph = loaded_graph
-                        mpg = None
-
-                    if "name" not in graph.graph:
-                        graph.graph["name"] = os.path.splitext(dgFile.filename)[0].replace("_",".")
-                    # Remove the uploaded file (and if existing, database directory) from the temp folder
-                    os.remove(graphFileName)
-                    if os.path.exists(database_dir):
-                        shutil.rmtree(database_dir)
-
-                    #save the graph as kdms file in temp folder
-                    graph.save(os.path.join(session_folder, TEMP_FILE + '_' + newGraphID + '.kdms'), file_type='kdms',
-                               graph_check_critical=False, mpg=mpg)
 
-                    # Use function order for VISTOMS if it is available in the graph information
-                    function_order = None
-                    if graph.graph_has_nested_attributes('problem_formulation', 'function_order') and mpg==None:
-                        function_order = graph.graph['problem_formulation']['function_order']
+                        loaded_graph = load(graphFileName, file_check_critical=False)
+                        if isinstance(loaded_graph, tuple):
+                            graph = loaded_graph[0]
+                            mpg = loaded_graph[1]
+                        else:
+                            graph = loaded_graph
+                            mpg = None
 
-                    # Add the graph with the updated function order to VISTOMS
-                    newVistomsData = graph.vistoms_add_json(graph_id=newGraphID, function_order=function_order, mpg=mpg)
+                        if "name" not in graph.graph:
+                            graph.graph["name"] = os.path.split(os.path.splitext(graphFileName)[0].replace("_", "."))[1]
+                        # Remove the uploaded file (and if existing, database directory) from the temp folder
+                        os.remove(graphFileName)
+                        if os.path.exists(database_dir):
+                            shutil.rmtree(database_dir)
 
-                    return newVistomsData
+                        # save the graph as kdms file in temp folder
+                        graph.save(os.path.join(session_folder, TEMP_FILE + '_' + newGraphID + '.kdms'),
+                                   file_type='kdms',
+                                   graph_check_critical=False, mpg=mpg)
+                        # Increase graphID by 1
+                        newGraphID = str(int(newGraphID) + 1)
+
+                        # Use function order for VISTOMS if it is available in the graph information
+                        function_order = None
+                        if graph.graph_has_nested_attributes('problem_formulation',
+                                                             'function_order') and mpg == None:
+                            function_order = graph.graph['problem_formulation']['function_order']
 
-            return "ERROR: File type " + dgFile.filename.rsplit('.', 1)[1].lower() + " not allowed!"
+                        # Add the graph with the updated function order to VISTOMS
+                        newVistomsDataArray.append(graph.vistoms_add_json(graph_id=newGraphID, function_order=function_order,
+                                                                mpg=mpg))
+                else:
+                    file_names = []
+                    for file in uploaded_files:
+                        file_names.append(file.filename)
+                    for file in uploaded_files:
+                        if "_mpg" in file.filename:
+                            # Do nothing if it is an _mpg file
+                            continue
+                        else:
+                            dgFile = file
+                            # Check if the right filetypes were chosen
+                            if fileType == 'CMDOWS file' and dgFile.filename.rsplit('.', 1)[1].lower() != "xml":
+                                return "ERROR: Wrong file type! Please use a valid CMDOWS file"
+                            elif fileType == 'KDMS file(s)' and dgFile.filename.rsplit('.', 1)[1].lower() != "kdms":
+                                return "ERROR: Wrong file type! Please use a valid KDMS file"
+
+                            graph_file = os.path.join(session_folder, dgFile.filename)
+                            dgFile.save(os.path.join(session_folder, dgFile.filename))
+
+                            loaded_graph = load(graph_file, file_check_critical=False)
+                            if isinstance(loaded_graph, tuple):
+                                graph = loaded_graph[0]
+                                mpg = loaded_graph[1]
+                            else:
+                                mpgFileName = os.path.split(os.path.splitext(dgFile.filename)[0])[1]+'_mpg.kdms'
+                                if mpgFileName in file_names:
+                                    index = file_names.index(mpgFileName)
+                                    uploaded_files[index].save(os.path.join(session_folder, mpgFileName))
+                                    graph = loaded_graph
+                                    mpg = load(os.path.join(session_folder, mpgFileName), file_check_critical=False)
+                                    os.remove(os.path.join(session_folder, mpgFileName))
+                                else:
+                                    graph= loaded_graph
+                                    mpg = None
+
+                            if "name" not in graph.graph:
+                                graph.graph["name"] = os.path.splitext(dgFile.filename)[0].replace("_", ".")
+
+                            # Remove the uploaded file (and if existing, database directory) from the temp folder
+                            os.remove(graph_file)
+
+                            # save the graph as kdms file in temp folder
+                            graph.save(os.path.join(session_folder, TEMP_FILE + '_' + newGraphID + '.kdms'),
+                                       file_type='kdms',
+                                       graph_check_critical=False, mpg=mpg)
+                            # Use function order for VISTOMS if it is available in the graph information
+                            function_order = None
+                            if graph.graph_has_nested_attributes('problem_formulation',
+                                                                 'function_order') and mpg == None:
+                                function_order = graph.graph['problem_formulation']['function_order']
+
+                            # Add the graph with the updated function order to VISTOMS
+                            newVistomsDataArray.append(graph.vistoms_add_json(graph_id=newGraphID, function_order=function_order,
+                                                                    mpg=mpg))
+                            # Increase graphID by 1
+                            newGraphID = str(int(newGraphID) + 1).zfill(2)
+
+                return jsonify(newVistomsDataArray)
 
         except Exception as e:
             return "ERROR: " + e.message
@@ -285,8 +319,8 @@ def interface(debug=True, tempdir=None):
             return "ERROR: " + e.message
             # Logs the error appropriately.
 
-    @app.route('/kadmos_export_all_graphs', methods=['POST'])
-    def kadmos_export_all_graphs():
+    @app.route('/kadmos_export_graphs', methods=['POST'])
+    def kadmos_export_graphs():
         """
            Function exports all graphs to a folder as CMDOWS or KDMS files
 
@@ -295,81 +329,30 @@ def interface(debug=True, tempdir=None):
         """
         try:
             # Get request form
+            fileNames_str = request.form['fileNames_str']
+            graphIDs_str = request.form['graphIDs_str']
             fileType = request.form['fileType']
             session_id = request.form['sessionId']
 
-            session_folder = retrieve_session_folder(SESSIONS_CATALOG_FOLDER, session_id)
 
+
+            graphIDs = json.loads(graphIDs_str)
+            fileNames = json.loads(fileNames_str)
             files = []
-            for aFile in os.listdir(session_folder):
-                if aFile.endswith(".kdms"):
-                    fileName = aFile.split('.')[0]
-                    fileName_split = fileName.split('_')
-                    if "mpg" not in fileName_split and "backup" not in fileName_split: # Do not loop through mpg files
-                        graphFileName = fileName + ".kdms"
-                        mpgFileName = fileName + "_mpg.kdms"
-                        if os.path.exists(os.path.join(session_folder, mpgFileName)):
-                            graph = load(os.path.join(session_folder, graphFileName), file_check_critical=False)
-                            mpg = load(os.path.join(session_folder, mpgFileName), file_check_critical=False)
-                        else:
-                            graph = load(os.path.join(session_folder, graphFileName), file_check_critical=False)
-                            mpg = None
+            counter = 0
+            for graphID in graphIDs:
+                fileName = fileNames[counter]
+                file_arr = kadmos_export_graph(fileName=fileName, graphID=graphID, fileType=fileType, session_id=session_id)
+                for file in file_arr:
+                    files.append(file)
+                counter += 1
 
-                        # Add problem function roles if they are not already existing
-                        if not hasattr(graph, 'name'):
-                            graph_name = fileName
-                        else:
-                            graph_name = graph.name
-                        # Add problem function roles if they are not already existing
-                        if isinstance(graph, FundamentalProblemGraph):
-                            if 'function_order' not in graph.graph['problem_formulation']:
-                                graph.assert_or_add_nested_attribute(['problem_formulation', 'function_order'],
-                                                                 None)
-                            if 'mdao_architecture' not in graph.graph['problem_formulation']:
-                                graph.assert_or_add_nested_attribute(['problem_formulation', 'mdao_architecture'],
-                                                                 'undefined')
-                            if 'allow_unconverged_couplings' not in graph.graph['problem_formulation']:
-                                graph.assert_or_add_nested_attribute(['problem_formulation', 'allow_unconverged_couplings'],
-                                                                 False)
-                            graph.add_function_problem_roles()
-
-                        if fileType == "CMDOWS files":
-                            file_type = "cmdows"
-                            file = graph_name + ".xml"
-                            # Save as CMDOWS file
-                            file_copy = file
-                            count = 0
-                            while os.path.exists(os.path.join(session_folder, file_copy)):
-                                count += 1
-                                file_copy = graph_name + "(" + str(count) + ")" + ".xml"
-                            graph.save(os.path.join(session_folder, file_copy), file_type=file_type,
-                                       graph_check_critical=False, mpg=mpg)
-                            files.append(file_copy)
-
-                        elif fileType == "KDMS files":
-                            file_type = "kdms"
-                            file = graph_name + ".kdms"
-                            mpgfile = graph_name + "_mpg.kdms"
-                            # Save as kdms file
-                            file_copy = file
-                            mpgfile_copy = mpgfile
-                            count = 0
-                            while os.path.exists(os.path.join(session_folder, file_copy)):
-                                count += 1
-                                file_copy = graph_name + "(" + str(count) + ")" + ".kdms"
-                                mpgfile_copy = graph_name + "(" + str(count) + ")" + "_mpg.kdms"
-                            graph.save(os.path.join(session_folder, file_copy), file_type=file_type,
-                                       graph_check_critical=False, mpg=mpg)
-                            files.append(file_copy)
-                            if mpg is not None:
-                                files.append(mpgfile_copy)
             return jsonify(files)
 
         except Exception as e:
             return "ERROR: " + e.message
             # Logs the error appropriately.
 
-    # TODO Benedikt: Download of CMDOWS does not work for me.
     @app.route('/kadmos_download/<path:filename>/<path:session_id>')
     def kadmos_download(filename, session_id):
         try:
@@ -394,8 +377,7 @@ def interface(debug=True, tempdir=None):
             return "ERROR: " + e.message
             # Logs the error appropriately.
 
-    @app.route('/kadmos_export_graph', methods=['POST'])
-    def kadmos_export_graph():
+    def kadmos_export_graph(fileName, graphID, fileType, session_id):
         """
            Function exports the current graph to a CMDOWS or kdms file
 
@@ -403,11 +385,6 @@ def interface(debug=True, tempdir=None):
            :return: file
         """
         try:
-            # Get request form
-            fileName = request.form['fileName']
-            graphID = request.form['graphID']
-            fileType = request.form['fileType']
-            session_id = request.form['sessionId']
             session_folder = retrieve_session_folder(SESSIONS_CATALOG_FOLDER, session_id)
 
             files = []
@@ -447,7 +424,7 @@ def interface(debug=True, tempdir=None):
             else:
                 return "ERROR: Wrong file type!!!"
 
-            return jsonify(files)
+            return files
 
         except Exception as e:
             return "ERROR: " + e.message
@@ -497,8 +474,8 @@ def interface(debug=True, tempdir=None):
             return "ERROR: " + e.message
             # Logs the error appropriately.
 
-    @app.route('/kadmos_delete_graph', methods=['POST'])
-    def kadmos_delete_graph():
+    @app.route('/kadmos_delete_graphs', methods=['POST'])
+    def kadmos_delete_graphs():
         """
            Function finds all graphs that have been temporarily stored in the temp folder and returns them
            to the VISTOMS package in the browser. This function is always called when the browser is refreshed by the user.
@@ -507,23 +484,25 @@ def interface(debug=True, tempdir=None):
         """
         try:
             # get request form
-            graphID = request.form['graphID']
+            graphIDs_str = request.form['graphIDs']
             session_id = request.form['sessionId']
             session_folder = retrieve_session_folder(SESSIONS_CATALOG_FOLDER, session_id)
 
             tmpDir = session_folder
-            graphFileName = TEMP_FILE + '_' + graphID + '.kdms'
-            backupGraphFileName = TEMP_FILE + '_' + graphID + '_backup.kdms'
-            mpgFileName = TEMP_FILE + '_' + graphID + '_mpg.kdms'
-            backupMpgFileName = TEMP_FILE + '_' + graphID + '_mpg_backup.kdms'
-            if os.path.exists(os.path.join(tmpDir, graphFileName)):
-                os.remove(os.path.join(tmpDir, graphFileName))
-            if os.path.exists(os.path.join(tmpDir, backupGraphFileName)):
-                os.remove(os.path.join(tmpDir, backupGraphFileName))
-            if os.path.exists(os.path.join(tmpDir, mpgFileName)):
-                os.remove(os.path.join(tmpDir, mpgFileName))
-            if os.path.exists(os.path.join(tmpDir, backupMpgFileName)):
-                os.remove(os.path.join(tmpDir, backupMpgFileName))
+            graphIDs = json.loads(graphIDs_str)
+            for graphID in graphIDs:
+                graphFileName = TEMP_FILE + '_' + graphID + '.kdms'
+                backupGraphFileName = TEMP_FILE + '_' + graphID + '_backup.kdms'
+                mpgFileName = TEMP_FILE + '_' + graphID + '_mpg.kdms'
+                backupMpgFileName = TEMP_FILE + '_' + graphID + '_mpg_backup.kdms'
+                if os.path.exists(os.path.join(tmpDir, graphFileName)):
+                    os.remove(os.path.join(tmpDir, graphFileName))
+                if os.path.exists(os.path.join(tmpDir, backupGraphFileName)):
+                    os.remove(os.path.join(tmpDir, backupGraphFileName))
+                if os.path.exists(os.path.join(tmpDir, mpgFileName)):
+                    os.remove(os.path.join(tmpDir, mpgFileName))
+                if os.path.exists(os.path.join(tmpDir, backupMpgFileName)):
+                    os.remove(os.path.join(tmpDir, backupMpgFileName))
 
             return kadmos_find_temp_graphs()
 
@@ -753,14 +732,7 @@ def interface(debug=True, tempdir=None):
 
             path = session_folder
             graphFileName = TEMP_FILE + '_' + graphID + '.kdms'
-            mpgFileName = TEMP_FILE + '_' + graphID + '_mpg.kdms'
-            # TODO Benedikt: mpg is not used in this function, can it be removed, or should it be used?
-            if os.path.exists(os.path.join(path, mpgFileName)):
-                graph = load(os.path.join(path, graphFileName), file_check_critical=False)
-                mpg = load(os.path.join(path, mpgFileName), file_check_critical=False)
-            else:
-                graph = load(os.path.join(path, graphFileName), file_check_critical=False)
-                mpg = None
+            graph = load(os.path.join(path, graphFileName), file_check_critical=False)
 
             check_result = graph._check_category_a()
 
@@ -790,14 +762,8 @@ def interface(debug=True, tempdir=None):
 
             path = session_folder
             graphFileName = TEMP_FILE + '_' + graphID + '.kdms'
-            mpgFileName = TEMP_FILE + '_' + graphID + '_mpg.kdms'
-            # TODO Benedikt: mpg is not used in this function, can it be removed, or should it be used?
-            if os.path.exists(os.path.join(path, mpgFileName)):
-                graph = load(os.path.join(path, graphFileName), file_check_critical=False)
-                mpg = load(os.path.join(path, mpgFileName), file_check_critical=False)
-            else:
-                graph = load(os.path.join(path, graphFileName), file_check_critical=False)
-                mpg = None
+            graph = load(os.path.join(path, graphFileName), file_check_critical=False)
+
 
             check_result = graph._check_category_b()
 
@@ -827,14 +793,7 @@ def interface(debug=True, tempdir=None):
 
             path = session_folder
             graphFileName = TEMP_FILE + '_' + graphID + '.kdms'
-            mpgFileName = TEMP_FILE + '_' + graphID + '_mpg.kdms'
-            # TODO Benedikt: mpg is not used in this function, can it be removed, or should it be used?
-            if os.path.exists(os.path.join(path, mpgFileName)):
-                graph = load(os.path.join(path, graphFileName), file_check_critical=False)
-                mpg = load(os.path.join(path, mpgFileName), file_check_critical=False)
-            else:
-                graph = load(os.path.join(path, graphFileName), file_check_critical=False)
-                mpg = None
+            graph = load(os.path.join(path, graphFileName), file_check_critical=False)
 
             check_result = graph._check_category_c()
 
@@ -1892,9 +1851,11 @@ def interface(debug=True, tempdir=None):
                 fpg = FundamentalProblemGraph(graph)
             for data in variableData_py:
                 if data['variableType'] == 'designVariable':
+                    samples = data['samples'].split('[,;]')
                     fpg.mark_as_design_variable(data['xPath'], nominal_value=float(data['nominalValue']),
                                                 upper_bound=float(data['upperBound']),
-                                                lower_bound=float(data['lowerBound']))
+                                                lower_bound=float(data['lowerBound']),
+                                                samples=samples if samples is not [] else None)
                 elif data['variableType'] == 'objective':
                     fpg.mark_as_objective(data['xPath'])
                 elif data['variableType'] == 'constraint':
@@ -2011,7 +1972,9 @@ def interface(debug=True, tempdir=None):
 
                 # Cleaning of the graph needs to be done in a while loop, to entirely remove all unused elements
                 another_run = True
+                counter = 0
                 while another_run:
+                    counter += 1
                     another_run = False
                     # Delete unused variables
                     output_nodes = fpg.find_all_nodes(subcategory='all outputs')
@@ -2025,7 +1988,6 @@ def interface(debug=True, tempdir=None):
                         for function_node in function_nodes:
                             if not fpg.out_edges(function_node):
                                 fpg.remove_function_nodes(function_node)
-                                function_order.remove(function_node)
                                 another_run = True
 
                 # Add the function problem roles (pre-coupling, coupled, post-coupling)
@@ -2124,14 +2086,32 @@ def interface(debug=True, tempdir=None):
             if request.form['currentOrder'].split(',') != '':
                 function_order = request.form['currentOrder'].split(',')
             mdao_architecture = request.form['mdao_architecture']
-            doe_method = request.form['doe_method']
+            doe_settings_py = json.loads(request.form['doe_settings'])
             coupling_decomposition = request.form['coupling_decomposition']
+            coupled_functions_groups = json.loads(request.form['coupled_functions_groups'])
             allow_unconverged_couplings_str = request.form['allow_unconverged_couplings']
             if allow_unconverged_couplings_str == 'True':
                 allow_unconverged_couplings = True
             else:
                 allow_unconverged_couplings = False
 
+
+            # Check whether the value in each doe setting can be converted to an int, if not leave it a string
+            def is_int(s):
+                try:
+                    float(s)
+                    return True
+                except ValueError:
+                    return False
+            # Convert the doe_settings_py to the correct format for KADMOS graph['problem_formulation']['doe_settings']
+            doe_settings = {}
+            for doe_setting in doe_settings_py:
+                value = doe_setting['value']
+                if is_int(value):
+                    value = int(value)
+                doe_settings[doe_setting['name']] = value
+
+
             # First determine session folder
             session_id = request.form['sessionId']
             session_folder = retrieve_session_folder(SESSIONS_CATALOG_FOLDER, session_id)
@@ -2177,25 +2157,19 @@ def interface(debug=True, tempdir=None):
                 fpg.graph['problem_formulation']['convergence_type'] = coupling_decomposition
                 fpg.graph['problem_formulation']['allow_unconverged_couplings'] = allow_unconverged_couplings
 
-                if mdao_architecture in ['converged-DOE', 'unconverged-DOE']:
-                    if doe_method not in fpg.OPTIONS_DOE_METHODS:
+                if mdao_architecture in ['converged-DOE', 'unconverged-DOE', 'BLISS-2000']:
+                    if doe_settings['method'] not in fpg.OPTIONS_DOE_METHODS:
                         return "ERROR: Invalid DOE method selected, please select a DOE method from the dropdown list"
+                    fpg.graph['problem_formulation']['doe_settings'] = doe_settings
 
-                    fpg.graph['problem_formulation']['doe_settings'] = {'doe_method': doe_method}
-                    if fpg.graph['problem_formulation']['doe_settings']['doe_method'] in ['Latin hypercube design',
-                                                                                          'Monte Carlo design']:
-                        fpg.graph['problem_formulation']['doe_settings']['doe_seed'] = 6
-                        fpg.graph['problem_formulation']['doe_settings']['doe_runs'] = 5
-                    elif fpg.graph['problem_formulation']['doe_settings']['doe_method'] in ['Full factorial design']:
-                        fpg.graph['problem_formulation']['doe_settings']['doe_runs'] = 5
+                if len(coupled_functions_groups) > 0:
+                    fpg.graph['problem_formulation']['coupled_functions_groups'] = coupled_functions_groups
 
                 fpg.add_function_problem_roles()
 
                 mdg, mpg = fpg.impose_mdao_architecture()
 
-                mpg.graph['name'] = 'XDSM - {}'.format(mdao_definition)
-                mpg.graph['description'] = 'Solution strategy to solve the super-sonic business jet test case ' \
-                                           'optimization problem using the strategy: {}.'.format(mdao_definition)
+
                 # Add the graph with the updated function order to VISTOMS
                 newVistomsData = mdg.vistoms_add_json(graph_id=graphID, mpg=mpg)
                 # Save the graph in temp/tmp.kdms
@@ -2254,7 +2228,7 @@ if __name__ == '__main__':
         folder = os.path.join(args[args.index('-folder') + 1],'')
         assert isinstance(folder, basestring), 'Folder should be a string.'
     else:
-        folder = "C:/Users/aigne/Desktop/VISTOMS/vistoms_tmp"
+        folder = None
     # Check if open_vistoms is given in args
     if '-open' in args:
         open_vistoms = args[args.index('-open') + 1]