diff --git a/css/bootstrap-select.min.css b/css/bootstrap-select.min.css index 1767fc305db19cc37d7e82baf941ee8d02e78bae..c168431e0994cae7a5815994e7a33cf614034c85 100644 --- a/css/bootstrap-select.min.css +++ b/css/bootstrap-select.min.css @@ -1,6 +1,6 @@ -/*! - * Bootstrap-select v1.9.4 (http://silviomoreto.github.io/bootstrap-select) - * - * Copyright 2013-2016 bootstrap-select - * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) - */.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;width:.11px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} \ No newline at end of file +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} \ No newline at end of file diff --git a/css/morpheus-latest.min.css b/css/morpheus-latest.min.css index 47dfe072d2b348bc8d3e51949150b178d2c5458f..5f4150d3c03a92b68c5db1a181a8a8ae1158d48b 100644 --- a/css/morpheus-latest.min.css +++ b/css/morpheus-latest.min.css @@ -2,21 +2,21 @@ * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{color:#000;background:#ff0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 4px 4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin:8px -15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:transparent;filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-print,.visible-print-block,.visible-print-inline,.visible-print-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}@media print{.visible-print-block{display:block!important}}@media print{.visible-print-inline{display:inline!important}}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}/*! - * Bootstrap-select v1.9.4 (http://silviomoreto.github.io/bootstrap-select) - * - * Copyright 2013-2016 bootstrap-select - * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) - */.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;width:.11px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:#333 dotted thin!important;outline:-webkit-focus-ring-color auto 5px!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none}/*! jQuery UI - v1.11.2 - 2014-12-08 + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.label,sub,sup{vertical-align:baseline}div.hopscotch-bubble,hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box}hr,img{border:0}.fa,.glyphicon{-moz-osx-font-smoothing:grayscale}body,figure{margin:0}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left}.bootstrap-select.btn-group .dropdown-menu li a,.btn{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{color:#000;background:#ff0}sub,sup{position:relative;font-size:75%;line-height:0}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{height:0;box-sizing:content-box}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}.glyphicon,address{font-style:normal}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}*,:after,:before,input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.dropdown-menu,.modal-content{-webkit-background-clip:padding-box}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none}.img-thumbnail,body{background-color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd,label{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:20px}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after,.ui-helper-clearfix:after{clear:both}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777}legend,pre{display:block;color:#333}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-right:15px;padding-left:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#777}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{min-width:0;margin:0}legend{width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;color:#555;display:block}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-lg .form-control,.input-lg{border-radius:6px;padding:10px 16px;font-size:18px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;line-height:1.3333333}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.collapsing,.dropdown,.dropup{position:relative}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;user-select:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu-right,.dropdown-menu.pull-right{right:0;left:auto}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#333}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{right:auto;left:0}.dropdown-header{font-size:12px;color:#777}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 4px 4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.nav>li,.nav>li>a{display:block;position:relative}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center;margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:4px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{padding-left:0;margin:20px 0;border-radius:4px}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap;text-align:center}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;cursor:pointer;text-decoration:none}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;border-radius:.25em}.label:empty{display:none}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.alert,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-striped .progress-bar-info,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;line-break:auto;text-decoration:none}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal{position:fixed;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;text-align:left;text-align:start;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px}.tooltip.top-right .tooltip-arrow{left:5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;text-align:left;text-align:start;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.carousel-caption,.carousel-control{color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.carousel,.carousel-inner{position:relative}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel-inner{width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.bootstrap-select.btn-group .dropdown-menu li.disabled a,.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px}.carousel-caption .btn,.text-hide{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle,.bootstrap-select.form-control:not([class*=col-]),.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select .dropdown-toggle:focus{outline:#333 dotted thin!important;outline:-webkit-focus-ring-color auto 5px!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox,.bs-donebutton{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none}/*! jQuery UI - v1.11.2 - 2014-12-08 * http://jqueryui.com * Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, autocomplete.css, button.css, dialog.css, menu.css, slider.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1em&cornerRadius=4px&bgColorHeader=%23333333&bgTextureHeader=diagonals_thick&bgImgOpacityHeader=8&borderColorHeader=%23a3a3a3&fcHeader=%23eeeeee&iconColorHeader=%23bbbbbb&bgColorContent=%23f9f9f9&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=%23cccccc&fcContent=%23222222&iconColorContent=%23222222&bgColorDefault=%23111111&bgTextureDefault=glass&bgImgOpacityDefault=40&borderColorDefault=%23777777&fcDefault=%23e3e3e3&iconColorDefault=%23ededed&bgColorHover=%231c1c1c&bgTextureHover=glass&bgImgOpacityHover=55&borderColorHover=%23000000&fcHover=%23ffffff&iconColorHover=%23ffffff&bgColorActive=%23ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=%23cccccc&fcActive=%23222222&iconColorActive=%23222222&bgColorHighlight=%23ffeb80&bgTextureHighlight=inset_hard&bgImgOpacityHighlight=55&borderColorHighlight=%23ffde2e&fcHighlight=%23363636&iconColorHighlight=%234ca300&bgColorError=%23cd0a0a&bgTextureError=inset_hard&bgImgOpacityError=45&borderColorError=%239e0505&fcError=%23ffffff&iconColorError=%23ffcf29&bgColorOverlay=%23aaaaaa&bgTextureOverlay=highlight_hard&bgImgOpacityOverlay=40&opacityOverlay=30&bgColorShadow=%23aaaaaa&bgTextureShadow=highlight_soft&bgImgOpacityShadow=50&opacityShadow=20&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-icons-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-icons-only .ui-button-icon-primary,.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary{left:.5em}.ui-button-icons-only .ui-button-icon-secondary,.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ccc;background:url(images/ui-bg_highlight-hard_100_f9f9f9_1x100.png) 50% top repeat-x #f9f9f9;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #a3a3a3;background:url(images/ui-bg_diagonals-thick_8_333333_40x40.png) 50% 50% #333;color:#eee;font-weight:700}.ui-widget-header a{color:#eee}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #777;background:url(images/ui-bg_glass_40_111111_1x400.png) 50% 50% repeat-x #111;font-weight:400;color:#e3e3e3}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#e3e3e3;text-decoration:none}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #000;background:url(images/ui-bg_glass_55_1c1c1c_1x400.png) 50% 50% repeat-x #1c1c1c;font-weight:400;color:#fff}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#fff;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #ccc;background:url(images/ui-bg_flat_65_ffffff_40x100.png) 50% 50% repeat-x #fff;font-weight:400;color:#222}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#222;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #ffde2e;background:url(images/ui-bg_inset-hard_55_ffeb80_1x100.png) 50% bottom repeat-x #ffeb80;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #9e0505;background:url(images/ui-bg_inset-hard_45_cd0a0a_1x100.png) 50% bottom repeat-x #cd0a0a;color:#fff}.ui-state-error a,.ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error a,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_bbbbbb_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_ededed_256x240.png)}.ui-state-focus .ui-icon,.ui-state-hover .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_4ca300_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffcf29_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:4px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:4px}.ui-widget-overlay{background:url(images/ui-bg_highlight-hard_40_aaaaaa_1x100.png) 50% top repeat-x #aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:url(images/ui-bg_highlight-soft_50_aaaaaa_1x100.png) 50% top repeat-x #aaa;opacity:.2;filter:Alpha(Opacity=20);border-radius:8px}/*! +* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.fa,.fa-stack,.ui-button{display:inline-block}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:active,.ui-button:hover,.ui-button:link,.ui-button:visited{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-icons-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-icons-only .ui-button-icon-primary,.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary{left:.5em}.ui-button-icons-only .ui-button-icon-secondary,.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner,input.ui-button::-moz-focus-inner{border:0;padding:0}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0 0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-widget,.ui-widget .ui-widget{font-size:1em}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ccc;background:url(images/ui-bg_highlight-hard_100_f9f9f9_1x100.png) 50% top repeat-x #f9f9f9;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #a3a3a3;background:url(images/ui-bg_diagonals-thick_8_333333_40x40.png) 50% 50% #333;color:#eee;font-weight:700}.ui-widget-header a{color:#eee}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #777;background:url(images/ui-bg_glass_40_111111_1x400.png) 50% 50% repeat-x #111;font-weight:400;color:#e3e3e3}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#e3e3e3;text-decoration:none}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #000;background:url(images/ui-bg_glass_55_1c1c1c_1x400.png) 50% 50% repeat-x #1c1c1c;font-weight:400;color:#fff}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#fff;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #ccc;background:url(images/ui-bg_flat_65_ffffff_40x100.png) 50% 50% repeat-x #fff;font-weight:400;color:#222}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#222;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #ffde2e;background:url(images/ui-bg_inset-hard_55_ffeb80_1x100.png) 50% bottom repeat-x #ffeb80;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #9e0505;background:url(images/ui-bg_inset-hard_45_cd0a0a_1x100.png) 50% bottom repeat-x #cd0a0a;color:#fff}.ui-state-error a,.ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error a,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_bbbbbb_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_ededed_256x240.png)}.ui-state-focus .ui-icon,.ui-state-hover .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_4ca300_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffcf29_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:4px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:4px}.ui-widget-overlay{background:url(images/ui-bg_highlight-hard_40_aaaaaa_1x100.png) 50% top repeat-x #aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:url(images/ui-bg_highlight-soft_50_aaaaaa_1x100.png) 50% top repeat-x #aaa;opacity:.2;filter:Alpha(Opacity=20);border-radius:8px}/*! * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.2.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff?v=4.2.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.2.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.animated{-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;-moz-animation-duration:1s;-ms-animation-duration:1s;-o-animation-duration:1s}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.fade-in-up{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInDown{0%{opacity:0;-moz-transform:translateY(-20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInDown{0%{opacity:0;-ms-transform:translateY(-20px)}100%{opacity:1;-ms-transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}100%{opacity:1;transform:translateY(0)}}.fade-in-down{-webkit-animation-name:fadeInDown;-moz-animation-name:fadeInDown;-o-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInRight{0%{opacity:0;-moz-transform:translateX(-20px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInRight{0%{opacity:0;-o-transform:translateX(-20px)}100%{opacity:1;-o-transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-20px)}100%{opacity:1;transform:translateX(0)}}.fade-in-right{-webkit-animation-name:fadeInRight;-moz-animation-name:fadeInRight;-o-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInLeft{0%{opacity:0;-moz-transform:translateX(20px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInLeft{0%{opacity:0;-o-transform:translateX(20px)}100%{opacity:1;-o-transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(20px)}100%{opacity:1;transform:translateX(0)}}.fade-in-left{-webkit-animation-name:fadeInLeft;-moz-animation-name:fadeInLeft;-o-animation-name:fadeInLeft;animation-name:fadeInLeft}div.hopscotch-bubble .hopscotch-nav-button{font-weight:700;border-width:1px;border-style:solid;cursor:pointer;margin:0;overflow:visible;text-decoration:none!important;width:auto;padding:0 10px;height:26px;line-height:24px;font-size:12px;white-space:nowrap;display:-moz-inline-stack;display:inline-block;zoom:1;vertical-align:middle;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.hopscotch-bubble .hopscotch-nav-button:hover{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.25);-moz-box-shadow:0 1px 3px rgba(0,0,0,.25);box-shadow:0 1px 3px rgba(0,0,0,.25)}div.hopscotch-bubble .hopscotch-nav-button:active{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.25) inset;-moz-box-shadow:0 1px 2px rgba(0,0,0,.25) inset;box-shadow:0 1px 2px rgba(0,0,0,.25) inset}div.hopscotch-bubble .hopscotch-nav-button.next{border-color:#1b5480;color:#fff;margin:0 0 0 10px;text-shadow:0 1px 1px rgba(0,0,0,.35);background-color:#287bbc;filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#287bbc', endColorstr='#23639a');background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#287bbc),color-stop(100%,#23639a));background-image:-webkit-linear-gradient(top,#287bbc 0,#23639a 100%);background-image:-moz-linear-gradient(top,#287bbc 0,#23639a 100%);background-image:-o-linear-gradient(top,#287bbc 0,#23639a 100%);background-image:linear-gradient(top,#287bbc 0,#23639a 100%)}div.hopscotch-bubble .hopscotch-nav-button.next:hover{background-color:#2672ae;filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#2672ae', endColorstr='#1e4f7e');background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#2672ae),color-stop(100%,#1e4f7e));background-image:-webkit-linear-gradient(top,#2672ae 0,#1e4f7e 100%);background-image:-moz-linear-gradient(top,#2672ae 0,#1e4f7e 100%);background-image:-o-linear-gradient(top,#2672ae 0,#1e4f7e 100%);background-image:linear-gradient(top,#2672ae 0,#1e4f7e 100%)}div.hopscotch-bubble .hopscotch-nav-button.prev{border-color:#a7a7a7;color:#444;text-shadow:0 1px 1px rgba(255,255,255,.75);background-color:#f2f2f2;filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#e9e9e9');background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#f2f2f2),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f2f2f2 0,#e9e9e9 100%);background-image:-moz-linear-gradient(top,#f2f2f2 0,#e9e9e9 100%);background-image:-o-linear-gradient(top,#f2f2f2 0,#e9e9e9 100%);background-image:linear-gradient(top,#f2f2f2 0,#e9e9e9 100%)}div.hopscotch-bubble .hopscotch-nav-button.prev:hover{background-color:#e8e8e8;filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFE8E8E8', endColorstr='#FFA9A9A9');background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0%,#e8e8e8),color-stop(13%,#e3e3e3),color-stop(32%,#d7d7d7),color-stop(71%,#b9b9b9),color-stop(100%,#a9a9a9));background-image:-webkit-linear-gradient(top,#e8e8e8 0,#e3e3e3 13%,#d7d7d7 32%,#b9b9b9 71%,#a9a9a9 100%);background-image:-moz-linear-gradient(top,#e8e8e8 0,#e3e3e3 13%,#d7d7d7 32%,#b9b9b9 71%,#a9a9a9 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#e3e3e3 13%,#d7d7d7 32%,#b9b9b9 71%,#a9a9a9 100%);background-image:linear-gradient(top,#e8e8e8 0,#e3e3e3 13%,#d7d7d7 32%,#b9b9b9 71%,#a9a9a9 100%)}div.hopscotch-bubble{background-color:#fff;border:5px solid #000;border:5px solid rgba(0,0,0,.5);color:#333;font-family:Helvetica,Arial;font-size:13px;position:absolute;z-index:999999;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-moz-background-clip:padding;-webkit-background-clip:padding;background-clip:padding-box}div.hopscotch-bubble *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}div.hopscotch-bubble.animate{-moz-transition-property:top,left;-moz-transition-duration:1s;-moz-transition-timing-function:ease-in-out;-ms-transition-property:top,left;-ms-transition-duration:1s;-ms-transition-timing-function:ease-in-out;-o-transition-property:top,left;-o-transition-duration:1s;-o-transition-timing-function:ease-in-out;-webkit-transition-property:top,left;-webkit-transition-duration:1s;-webkit-transition-timing-function:ease-in-out;transition-property:top,left;transition-duration:1s;transition-timing-function:ease-in-out}div.hopscotch-bubble.invisible{opacity:0}div.hopscotch-bubble .hide,div.hopscotch-bubble .hide-all,div.hopscotch-bubble.hide{display:none}div.hopscotch-bubble h3{color:#000;font-family:Helvetica,Arial;font-size:16px;font-weight:700;line-height:19px;margin:-1px 15px 0 0;padding:0}div.hopscotch-bubble .hopscotch-bubble-container{padding:15px;position:relative;text-align:left;-webkit-font-smoothing:antialiased}div.hopscotch-bubble .hopscotch-content{font-family:Helvetica,Arial;font-weight:400;line-height:17px;margin:-5px 0 11px;padding-top:8px}div.hopscotch-bubble .hopscotch-bubble-content{margin:0 0 0 40px}div.hopscotch-bubble.no-number .hopscotch-bubble-content{margin:0}div.hopscotch-bubble .hopscotch-bubble-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;color:#000;background:url(../img/sprite-green.png) -192px -92px no-repeat;display:block;padding:8px;position:absolute;text-decoration:none;text-indent:-9999px;width:8px;height:8px;top:0;right:0}div.hopscotch-bubble .hopscotch-bubble-close.hide,div.hopscotch-bubble .hopscotch-bubble-close.hide-all{display:none}div.hopscotch-bubble .hopscotch-bubble-number{background:url(../img/sprite-green.png) no-repeat;color:#fff;display:block;float:left;font-size:17px;font-weight:700;line-height:31px;padding:0 10px 0 0;text-align:center;width:30px;height:30px}div.hopscotch-bubble .hopscotch-bubble-arrow-container{position:absolute;width:34px;height:34px}div.hopscotch-bubble .hopscotch-bubble-arrow-container .hopscotch-bubble-arrow,div.hopscotch-bubble .hopscotch-bubble-arrow-container .hopscotch-bubble-arrow-border{width:0;height:0}div.hopscotch-bubble .hopscotch-bubble-arrow-container.up{top:-22px;left:10px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.up .hopscotch-bubble-arrow{border-bottom:17px solid #fff;border-left:17px solid transparent;border-right:17px solid transparent;position:relative;top:-10px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.up .hopscotch-bubble-arrow-border{border-bottom:17px solid #000;border-bottom:17px solid rgba(0,0,0,.5);border-left:17px solid transparent;border-right:17px solid transparent}div.hopscotch-bubble .hopscotch-bubble-arrow-container.down{bottom:-39px;left:10px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.down .hopscotch-bubble-arrow{border-top:17px solid #fff;border-left:17px solid transparent;border-right:17px solid transparent;position:relative;top:-24px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.down .hopscotch-bubble-arrow-border{border-top:17px solid #000;border-top:17px solid rgba(0,0,0,.5);border-left:17px solid transparent;border-right:17px solid transparent}div.hopscotch-bubble .hopscotch-bubble-arrow-container.left{top:10px;left:-22px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.left .hopscotch-bubble-arrow{border-bottom:17px solid transparent;border-right:17px solid #fff;border-top:17px solid transparent;position:relative;left:7px;top:-34px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.left .hopscotch-bubble-arrow-border{border-right:17px solid #000;border-right:17px solid rgba(0,0,0,.5);border-bottom:17px solid transparent;border-top:17px solid transparent}div.hopscotch-bubble .hopscotch-bubble-arrow-container.right{top:10px;right:-39px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.right .hopscotch-bubble-arrow{border-bottom:17px solid transparent;border-left:17px solid #fff;border-top:17px solid transparent;position:relative;left:-7px;top:-34px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.right .hopscotch-bubble-arrow-border{border-left:17px solid #000;border-left:17px solid rgba(0,0,0,.5);border-bottom:17px solid transparent;border-top:17px solid transparent}div.hopscotch-bubble .hopscotch-actions{margin:10px 0 0;text-align:right}.slick-header.ui-state-default,.slick-headerrow.ui-state-default{width:100%;overflow:hidden;border-left:0}.slick-header-columns,.slick-headerrow-columns{position:relative;white-space:nowrap;cursor:default;overflow:hidden}.slick-header-column.ui-state-default{position:relative;display:inline-block;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;margin:0;border-right:1px solid silver;border-left:0;border-top:0;border-bottom:0;float:left}.slick-headerrow-column.ui-state-default{padding:4px}.slick-sort-indicator{display:inline-block;width:8px;height:5px}.slick-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:col-resize;width:4px;right:0;top:0;height:100%}.slick-sortable-placeholder{background:silver}.grid-canvas{position:relative;outline:0}.slick-row.ui-state-active,.slick-row.ui-widget-content{position:absolute;border:0;width:100%}.slick-cell,.slick-headerrow-column{position:absolute;border:1px solid transparent;border-right:1px dotted silver;border-bottom-color:silver;-o-text-overflow:ellipsis;vertical-align:middle;z-index:1;padding:1px 2px 2px 1px;margin:0;white-space:nowrap;cursor:default}.slick-group-toggle{display:inline-block}.slick-cell.highlighted{background:#87cefa;background:rgba(0,0,255,.2);-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;transition:all .5s}.slick-cell.flashing{border:1px solid red!important}.slick-cell.editable{z-index:11;overflow:visible;background:#fff;border-color:#000;border-style:solid}.slick-cell:focus{outline:0}.slick-reorder-proxy{display:inline-block;background:#00f;opacity:.15;filter:alpha(opacity=15);cursor:move}.slick-reorder-guide{display:inline-block;height:2px;background:#00f;opacity:.7;filter:alpha(opacity=70)}.slick-selection{z-index:10;position:absolute;border:2px dashed #000}/*! + */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.2.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff?v=4.2.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.2.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.animated{-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;-moz-animation-duration:1s;-ms-animation-duration:1s;-o-animation-duration:1s;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInUp{0%{opacity:0;-moz-transform:translateY(20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInUp{0%{opacity:0;-o-transform:translateY(20px)}100%{opacity:1;-o-transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}100%{opacity:1;transform:translateY(0)}}.fade-in-up{-webkit-animation-name:fadeInUp;-moz-animation-name:fadeInUp;-o-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0)}}@-moz-keyframes fadeInDown{0%{opacity:0;-moz-transform:translateY(-20px)}100%{opacity:1;-moz-transform:translateY(0)}}@-o-keyframes fadeInDown{0%{opacity:0;-ms-transform:translateY(-20px)}100%{opacity:1;-ms-transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}100%{opacity:1;transform:translateY(0)}}.fade-in-down{-webkit-animation-name:fadeInDown;-moz-animation-name:fadeInDown;-o-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInRight{0%{opacity:0;-moz-transform:translateX(-20px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInRight{0%{opacity:0;-o-transform:translateX(-20px)}100%{opacity:1;-o-transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(-20px)}100%{opacity:1;transform:translateX(0)}}.fade-in-right{-webkit-animation-name:fadeInRight;-moz-animation-name:fadeInRight;-o-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0)}}@-moz-keyframes fadeInLeft{0%{opacity:0;-moz-transform:translateX(20px)}100%{opacity:1;-moz-transform:translateX(0)}}@-o-keyframes fadeInLeft{0%{opacity:0;-o-transform:translateX(20px)}100%{opacity:1;-o-transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(20px)}100%{opacity:1;transform:translateX(0)}}.fade-in-left{-webkit-animation-name:fadeInLeft;-moz-animation-name:fadeInLeft;-o-animation-name:fadeInLeft;animation-name:fadeInLeft}div.hopscotch-bubble .hopscotch-nav-button{font-weight:700;border-width:1px;border-style:solid;cursor:pointer;margin:0;overflow:visible;text-decoration:none!important;width:auto;padding:0 10px;height:26px;line-height:24px;font-size:12px;white-space:nowrap;display:-moz-inline-stack;display:inline-block;zoom:1;vertical-align:middle;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}div.hopscotch-bubble .hopscotch-nav-button:hover{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.25);-moz-box-shadow:0 1px 3px rgba(0,0,0,.25);box-shadow:0 1px 3px rgba(0,0,0,.25)}div.hopscotch-bubble .hopscotch-nav-button:active{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.25) inset;-moz-box-shadow:0 1px 2px rgba(0,0,0,.25) inset;box-shadow:0 1px 2px rgba(0,0,0,.25) inset}div.hopscotch-bubble .hopscotch-nav-button.next{border-color:#1b5480;color:#fff;margin:0 0 0 10px;text-shadow:0 1px 1px rgba(0,0,0,.35);background-color:#287bbc;filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#287bbc', endColorstr='#23639a');background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0,#287bbc),color-stop(100%,#23639a));background-image:-webkit-linear-gradient(top,#287bbc 0,#23639a 100%);background-image:-moz-linear-gradient(top,#287bbc 0,#23639a 100%);background-image:-o-linear-gradient(top,#287bbc 0,#23639a 100%);background-image:linear-gradient(top,#287bbc 0,#23639a 100%)}div.hopscotch-bubble .hopscotch-nav-button.next:hover{background-color:#2672ae;filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#2672ae', endColorstr='#1e4f7e');background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0,#2672ae),color-stop(100%,#1e4f7e));background-image:-webkit-linear-gradient(top,#2672ae 0,#1e4f7e 100%);background-image:-moz-linear-gradient(top,#2672ae 0,#1e4f7e 100%);background-image:-o-linear-gradient(top,#2672ae 0,#1e4f7e 100%);background-image:linear-gradient(top,#2672ae 0,#1e4f7e 100%)}div.hopscotch-bubble .hopscotch-nav-button.prev{border-color:#a7a7a7;color:#444;text-shadow:0 1px 1px rgba(255,255,255,.75);background-color:#f2f2f2;filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#f2f2f2', endColorstr='#e9e9e9');background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0,#f2f2f2),color-stop(100%,#e9e9e9));background-image:-webkit-linear-gradient(top,#f2f2f2 0,#e9e9e9 100%);background-image:-moz-linear-gradient(top,#f2f2f2 0,#e9e9e9 100%);background-image:-o-linear-gradient(top,#f2f2f2 0,#e9e9e9 100%);background-image:linear-gradient(top,#f2f2f2 0,#e9e9e9 100%)}div.hopscotch-bubble .hopscotch-nav-button.prev:hover{background-color:#e8e8e8;filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0, startColorstr='#FFE8E8E8', endColorstr='#FFA9A9A9');background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0,#e8e8e8),color-stop(13%,#e3e3e3),color-stop(32%,#d7d7d7),color-stop(71%,#b9b9b9),color-stop(100%,#a9a9a9));background-image:-webkit-linear-gradient(top,#e8e8e8 0,#e3e3e3 13%,#d7d7d7 32%,#b9b9b9 71%,#a9a9a9 100%);background-image:-moz-linear-gradient(top,#e8e8e8 0,#e3e3e3 13%,#d7d7d7 32%,#b9b9b9 71%,#a9a9a9 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#e3e3e3 13%,#d7d7d7 32%,#b9b9b9 71%,#a9a9a9 100%);background-image:linear-gradient(top,#e8e8e8 0,#e3e3e3 13%,#d7d7d7 32%,#b9b9b9 71%,#a9a9a9 100%)}div.hopscotch-bubble{background-color:#fff;border:5px solid #000;border:5px solid rgba(0,0,0,.5);color:#333;font-family:Helvetica,Arial;font-size:13px;position:absolute;z-index:999999;box-sizing:content-box;-moz-background-clip:padding;-webkit-background-clip:padding;background-clip:padding-box}div.hopscotch-bubble *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}div.hopscotch-bubble.animate{-moz-transition-property:top,left;-moz-transition-duration:1s;-moz-transition-timing-function:ease-in-out;-ms-transition-property:top,left;-ms-transition-duration:1s;-ms-transition-timing-function:ease-in-out;-o-transition-property:top,left;-o-transition-duration:1s;-o-transition-timing-function:ease-in-out;-webkit-transition-property:top,left;-webkit-transition-duration:1s;-webkit-transition-timing-function:ease-in-out;transition-property:top,left;transition-duration:1s;transition-timing-function:ease-in-out}div.hopscotch-bubble.invisible{opacity:0}div.hopscotch-bubble .hide,div.hopscotch-bubble .hide-all,div.hopscotch-bubble.hide{display:none}div.hopscotch-bubble h3{color:#000;font-family:Helvetica,Arial;font-size:16px;font-weight:700;line-height:19px;margin:-1px 15px 0 0;padding:0}div.hopscotch-bubble .hopscotch-bubble-container{padding:15px;position:relative;text-align:left;-webkit-font-smoothing:antialiased}div.hopscotch-bubble .hopscotch-content{font-family:Helvetica,Arial;font-weight:400;line-height:17px;margin:-5px 0 11px;padding-top:8px}div.hopscotch-bubble .hopscotch-bubble-content{margin:0 0 0 40px}div.hopscotch-bubble.no-number .hopscotch-bubble-content{margin:0}div.hopscotch-bubble .hopscotch-bubble-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;color:#000;background:url(../img/sprite-green.png) -192px -92px no-repeat;display:block;padding:8px;position:absolute;text-decoration:none;text-indent:-9999px;width:8px;height:8px;top:0;right:0}div.hopscotch-bubble .hopscotch-bubble-close.hide,div.hopscotch-bubble .hopscotch-bubble-close.hide-all{display:none}div.hopscotch-bubble .hopscotch-bubble-number{background:url(../img/sprite-green.png) no-repeat;color:#fff;display:block;float:left;font-size:17px;font-weight:700;line-height:31px;padding:0 10px 0 0;text-align:center;width:30px;height:30px}div.hopscotch-bubble .hopscotch-bubble-arrow-container{position:absolute;width:34px;height:34px}div.hopscotch-bubble .hopscotch-bubble-arrow-container .hopscotch-bubble-arrow,div.hopscotch-bubble .hopscotch-bubble-arrow-container .hopscotch-bubble-arrow-border{width:0;height:0}div.hopscotch-bubble .hopscotch-bubble-arrow-container.up{top:-22px;left:10px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.up .hopscotch-bubble-arrow{border-bottom:17px solid #fff;border-left:17px solid transparent;border-right:17px solid transparent;position:relative;top:-10px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.up .hopscotch-bubble-arrow-border{border-bottom:17px solid #000;border-bottom:17px solid rgba(0,0,0,.5);border-left:17px solid transparent;border-right:17px solid transparent}div.hopscotch-bubble .hopscotch-bubble-arrow-container.down{bottom:-39px;left:10px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.down .hopscotch-bubble-arrow{border-top:17px solid #fff;border-left:17px solid transparent;border-right:17px solid transparent;position:relative;top:-24px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.down .hopscotch-bubble-arrow-border{border-top:17px solid #000;border-top:17px solid rgba(0,0,0,.5);border-left:17px solid transparent;border-right:17px solid transparent}div.hopscotch-bubble .hopscotch-bubble-arrow-container.left{top:10px;left:-22px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.left .hopscotch-bubble-arrow{border-bottom:17px solid transparent;border-right:17px solid #fff;border-top:17px solid transparent;position:relative;left:7px;top:-34px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.left .hopscotch-bubble-arrow-border{border-right:17px solid #000;border-right:17px solid rgba(0,0,0,.5);border-bottom:17px solid transparent;border-top:17px solid transparent}div.hopscotch-bubble .hopscotch-bubble-arrow-container.right{top:10px;right:-39px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.right .hopscotch-bubble-arrow{border-bottom:17px solid transparent;border-left:17px solid #fff;border-top:17px solid transparent;position:relative;left:-7px;top:-34px}div.hopscotch-bubble .hopscotch-bubble-arrow-container.right .hopscotch-bubble-arrow-border{border-left:17px solid #000;border-left:17px solid rgba(0,0,0,.5);border-bottom:17px solid transparent;border-top:17px solid transparent}div.hopscotch-bubble .hopscotch-actions{margin:10px 0 0;text-align:right}.slick-header.ui-state-default,.slick-headerrow.ui-state-default{width:100%;overflow:hidden;border-left:0}.slick-header-columns,.slick-headerrow-columns{position:relative;white-space:nowrap;cursor:default;overflow:hidden}.slick-header-column.ui-state-default{position:relative;display:inline-block;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;margin:0;border-right:1px solid silver;border-left:0;border-top:0;border-bottom:0;float:left}.slick-headerrow-column.ui-state-default{padding:4px}.slick-sort-indicator{display:inline-block;width:8px;height:5px;margin-left:4px;margin-top:6px}.slick-resizable-handle{position:absolute;font-size:.1px;display:block;cursor:col-resize;width:4px;right:0;top:0;height:100%}.slick-group-toggle,.slick-reorder-guide,.slick-reorder-proxy{display:inline-block}.slick-sortable-placeholder{background:silver}.grid-canvas{position:relative;outline:0}.slick-row.ui-state-active,.slick-row.ui-widget-content{position:absolute;border:0;width:100%}.slick-cell,.slick-headerrow-column{position:absolute;border:1px solid transparent;border-right:1px dotted silver;border-bottom-color:silver;-o-text-overflow:ellipsis;vertical-align:middle;z-index:1;padding:1px 2px 2px 1px;margin:0;white-space:nowrap;cursor:default}.slick-cell.highlighted{background:#87cefa;background:rgba(0,0,255,.2);-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;transition:all .5s}.slick-cell.flashing{border:1px solid red!important}.slick-cell.editable{z-index:11;overflow:visible;background:#fff;border-color:#000;border-style:solid}.slick-cell:focus{outline:0}.slick-reorder-proxy{background:#00f;opacity:.15;filter:alpha(opacity=15);cursor:move}.slick-reorder-guide{height:2px;background:#00f;opacity:.7;filter:alpha(opacity=70)}.slick-selection{z-index:10;position:absolute;border:2px dashed #000}/*! Animate.css - http://daneden.me/animate Licensed under the MIT license - http://opensource.org/licenses/MIT Copyright (c) 2015 Daniel Eden -*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{-webkit-transform:none;transform:none}}@keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{11.1%,from,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(0.390625deg) skewY(0.390625deg);transform:skewX(0.390625deg) skewY(0.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{11.1%,from,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(0.390625deg) skewY(0.390625deg);transform:skewX(0.390625deg) skewY(0.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}to{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{from{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{from{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.morpheus-sep{border-top:1px solid #eee}.dropdown-checkbox{margin-left:-16px!important}.ui-dialog .ui-dialog-titlebar{font-size:12px!important;padding:.1em 1em!important;background:#000!important}.axis line,.axis path{fill:none;stroke:#000;shape-rendering:crispEdges}.select2-search-choice{background:#fff!important}.select2-search-choice:hover{background:#e6e6e6!important}.ui-autocomplete{max-height:200px;overflow-y:auto;overflow-x:hidden}.morpheus-button-divider{width:6px;display:inline-block}.morpheus-hover-show{display:none!important}.morpheus-hover:hover>.morpheus-hover-show{display:block!important}.morpheus-hover:hover{background-color:#f5f5f5}.morpheus-tip{font-size:12px;position:absolute;top:0;left:0;min-height:24px;max-height:24px;height:24px;line-height:1;color:#777}.morpheus-tip-inline{font-size:12px;max-width:400px;z-index:10000;position:absolute;background-color:rgba(255,255,255,.9);color:#000;text-align:left;padding-left:10px;padding-right:10px;box-shadow:rgba(0,0,0,.498039) 0 5px 15px;border:1px solid rgba(0,0,0,.2);border-radius:6px;overflow:hidden}.morpheus-form-control-inline{display:inline!important;width:auto!important;margin-right:1em!important}.morpheus-tip-dialog{font-size:12px!important;color:#777!important;padding:2px!important;background-color:#fff!important}.slick-cell{margin:0;border:none;padding:0;background-color:inherit}.slick-row{font-size:13px;line-height:100%;padding:0;margin:0}.slick-header-column.ui-state-default{height:20px;line-height:20px;padding:0;background:#f6f7f8}.slick-header-columns{background-color:#fff}.slick-table .ui-widget-content{background:0 0}.slick-table-compact .slick-row{font-size:12px}.slick-table .slick-row{background-color:#fff}.slick-striped-table .slick-row.odd{background-color:#fafafa}.slick-header-column{color:#000;background-color:#fff;font-weight:700;border-left:1px solid #000}.slick-cell,.slick-headerrow-column{overflow:hidden;text-overflow:ellipsis}.slick-header{background-color:#fff;border:none!important}.slick-cell.selected{background-color:#d9edf7}.slick-stacked .slick-visible-stacked,.slick-table:not(.slick-stacked) .slick-visible-not-stacked{display:block}.slick-visible-not-stacked,.slick-visible-stacked{display:none}.slick-sort-indicator-asc,.slick-sort-indicator-desc{background:0 0}.slick-sort-indicator-desc::after{content:"\f0dd";font-family:FontAwesome;margin-right:3px;margin-left:4px;margin-top:-3px}.slick-sort-indicator{float:none!important;margin:0!important}.slick-header-column-sorted{font-style:normal}.slick-column-name{margin-left:4px}.slick-sort-indicator-asc::after{content:"\f0de";font-family:FontAwesome;margin-right:3px;margin-left:4px;margin-top:-3px;float:none} \ No newline at end of file +*/.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.050,.855,.060);animation-timing-function:cubic-bezier(.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.050,.855,.060);animation-timing-function:cubic-bezier(.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{20%,53%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.050,.855,.060);animation-timing-function:cubic-bezier(.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.050,.855,.060);animation-timing-function:cubic-bezier(.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{50%,from,to{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{from,to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}}@keyframes pulse{from,to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{from,to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}}@keyframes rubberBand{from,to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{from,to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}to{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{from,to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}}@keyframes tada{from,to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{from,to{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}}@keyframes wobble{from,to{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{11.1%,from,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{11.1%,from,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{20%,40%,60%,80%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInDown{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}to{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInRight{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}to{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{60%,75%,90%,from,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}.flipInY,.flipOutX{-webkit-backface-visibility:visible!important}@-webkit-keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;backface-visibility:visible!important}@-webkit-keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}to{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{from{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{from{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}to{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}to{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}to{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.morpheus-sep{border-top:1px solid #eee}.dropdown-checkbox{margin-left:-16px!important}.ui-dialog .ui-dialog-titlebar{font-size:12px!important;padding:.1em 1em!important;background:#000!important}.ui-widget{font-family:inherit!important}.axis line,.axis path{fill:none;stroke:#000;shape-rendering:crispEdges}.ui-menu-item{background-color:#fff}.ui-state-focus{background:inherit!important;background-color:#F7F7F7;border:inherit!important;color:inherit!important;font-weight:inherit!important}.ui-autocomplete{max-height:400px;overflow-y:auto;overflow-x:hidden}.morpheus-button-divider{width:6px;display:inline-block}.morpheus-hover-show{display:none!important}.morpheus-hover:hover>.morpheus-hover-show{display:block!important}.morpheus-hover:hover{background-color:#f5f5f5}.morpheus-tip{font-size:12px;position:absolute;top:0;left:0;min-height:24px;max-height:24px;height:24px;line-height:1;color:#777}.morpheus-tip-inline{font-size:12px;max-width:400px;z-index:10000;position:absolute;background-color:rgba(255,255,255,.9);color:#000;text-align:left;padding-left:10px;padding-right:10px;box-shadow:rgba(0,0,0,.498039) 0 5px 15px;border:1px solid rgba(0,0,0,.2);border-radius:6px;overflow:hidden}.morpheus-form-control-inline{display:inline!important;width:auto!important;margin-right:1em!important}.morpheus-tip-dialog{font-size:12px!important;color:#777!important;padding:2px!important;background-color:#fff!important}.slick-cell{margin:0;border:none;padding:0;background-color:inherit}.slick-row{font-size:13px;line-height:100%;padding:0;margin:0}.slick-header-column.ui-state-default{height:20px;line-height:20px;padding:0;background:#f6f7f8}.slick-header-columns{background-color:#fff}.slick-table .ui-widget-content{background:0 0}.slick-table-compact .slick-row{font-size:12px}.slick-table .slick-row{background-color:#fff}.slick-striped-table .slick-row.odd{background-color:#fafafa}.slick-header-column{color:#000;background-color:#fff;font-weight:700;border-left:1px solid #000}.slick-cell,.slick-headerrow-column{overflow:hidden;text-overflow:ellipsis}.slick-header{background-color:#fff;border:none!important}.slick-cell.selected{background-color:#d9edf7}.slick-stacked .slick-visible-stacked,.slick-table:not (.slick-stacked) .slick-visible-not-stacked{display:block}.slick-visible-not-stacked,.slick-visible-stacked{display:none}.slick-sort-indicator-asc,.slick-sort-indicator-desc{background:0 0}.slick-sort-indicator-desc::after{content:"\f0dd";font-family:FontAwesome;margin-right:3px;margin-left:4px;margin-top:-3px}.slick-sort-indicator{float:none!important;margin:0!important}.slick-header-column-sorted{font-style:normal}.slick-column-name{margin-left:4px}.slick-sort-indicator-asc::after{content:"\f0de";font-family:FontAwesome;margin-right:3px;margin-left:4px;margin-top:-3px;float:none} \ No newline at end of file diff --git a/css/morpheus.all.css b/css/morpheus.all.css index 43b04aacf5f86c818c54e20a026bb6a0ae14a98e..77bd5cb046a42534da383ece5a6526cbc3b7659a 100644 --- a/css/morpheus.all.css +++ b/css/morpheus.all.css @@ -4,12 +4,12 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} /*# sourceMappingURL=bootstrap.min.css.map */ -/*! - * Bootstrap-select v1.9.4 (http://silviomoreto.github.io/bootstrap-select) - * - * Copyright 2013-2016 bootstrap-select - * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) - */.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;width:.11px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px\9}.bootstrap-select>.dropdown-toggle{width:100%;padding-right:25px;z-index:1}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2}.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{z-index:auto}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select.btn-group.disabled,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group.disabled:focus,.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group.bs-container{position:absolute}.bootstrap-select.btn-group.bs-container .dropdown-menu{z-index:1060}.bootstrap-select.btn-group .dropdown-toggle .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li.active small{color:#fff}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option{position:static}.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} /*! jQuery UI - v1.11.2 - 2014-12-08 * http://jqueryui.com * Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, autocomplete.css, button.css, dialog.css, menu.css, slider.css, theme.css @@ -3481,22 +3481,30 @@ Copyright (c) 2015 Daniel Eden background: black !important; } +.ui-widget { + font-family:inherit !important; +} + .axis path, .axis line { fill: none; stroke: #000; shape-rendering: crispEdges; } -.select2-search-choice { - background: white !important; +.ui-menu-item { + background-color:white; } -.select2-search-choice:hover { - background: rgb(230, 230, 230) !important; +.ui-state-focus { + background: inherit !important; + background-color:#F7F7F7; + border: inherit !important; + color: inherit !important; + font-weight: inherit !important; } .ui-autocomplete { - max-height: 200px; + max-height: 400px; overflow-y: auto; /* prevent horizontal scrollbar */ overflow-x: hidden; @@ -3627,7 +3635,7 @@ Copyright (c) 2015 Daniel Eden display: block; } -.slick-table:not(.slick-stacked) .slick-visible-not-stacked { +.slick-table:not (.slick-stacked) .slick-visible-not-stacked { display: block; } diff --git a/js/bootstrap-select.min.js b/js/bootstrap-select.min.js index 81a4d2b620ebf030e3cccd1e8d0ef7214c4eb47a..0e66f5261644b914fe9896e6856b66a2dc3e0db6 100644 --- a/js/bootstrap-select.min.js +++ b/js/bootstrap-select.min.js @@ -1,8 +1,8 @@ -/*! - * Bootstrap-select v1.9.4 (http://silviomoreto.github.io/bootstrap-select) - * - * Copyright 2013-2016 bootstrap-select - * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) +/*! + * Bootstrap-select v1.10.0 (http://silviomoreto.github.io/bootstrap-select) + * + * Copyright 2013-2016 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) */ -!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){"use strict";function b(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function c(a){var b={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function d(b,c){var d=arguments,f=b,g=c;[].shift.apply(d);var h,i=this.each(function(){var b=a(this);if(b.is("select")){var c=b.data("selectpicker"),i="object"==typeof f&&f;if(c){if(i)for(var j in i)i.hasOwnProperty(j)&&(c.options[j]=i[j])}else{var k=a.extend({},e.DEFAULTS,a.fn.selectpicker.defaults||{},b.data(),i);k.template=a.extend({},e.DEFAULTS.template,a.fn.selectpicker.defaults?a.fn.selectpicker.defaults.template:{},b.data().template,i.template),b.data("selectpicker",c=new e(this,k,g))}"string"==typeof f&&(h=c[f]instanceof Function?c[f].apply(c,d):c.options[f])}});return"undefined"!=typeof h?h:i}String.prototype.includes||!function(){var a={}.toString,b=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),c="".indexOf,d=function(b){if(null==this)throw new TypeError;var d=String(this);if(b&&"[object RegExp]"==a.call(b))throw new TypeError;var e=d.length,f=String(b),g=f.length,h=arguments.length>1?arguments[1]:void 0,i=h?Number(h):0;i!=i&&(i=0);var j=Math.min(Math.max(i,0),e);return g+j>e?!1:-1!=c.call(d,f,i)};b?b(String.prototype,"includes",{value:d,configurable:!0,writable:!0}):String.prototype.includes=d}(),String.prototype.startsWith||!function(){var a=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),b={}.toString,c=function(a){if(null==this)throw new TypeError;var c=String(this);if(a&&"[object RegExp]"==b.call(a))throw new TypeError;var d=c.length,e=String(a),f=e.length,g=arguments.length>1?arguments[1]:void 0,h=g?Number(g):0;h!=h&&(h=0);var i=Math.min(Math.max(h,0),d);if(f+i>d)return!1;for(var j=-1;++j'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1},e.prototype={constructor:e,init:function(){var b=this,c=this.$element.attr("id");this.liObj={},this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement).appendTo(this.$newElement),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(".dropdown-menu"),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on({"hide.bs.dropdown":function(a){b.$element.trigger("hide.bs.select",a)},"hidden.bs.dropdown":function(a){b.$element.trigger("hidden.bs.select",a)},"show.bs.dropdown":function(a){b.$element.trigger("show.bs.select",a)},"shown.bs.dropdown":function(a){b.$element.trigger("shown.bs.select",a)}}),b.$element[0].hasAttribute("required")&&this.$element.on("invalid",function(){b.$button.addClass("bs-invalid").focus(),b.$element.on({"focus.bs.select":function(){b.$button.focus(),b.$element.off("focus.bs.select")},"shown.bs.select":function(){b.$element.val(b.$element.val()).off("shown.bs.select")},"rendered.bs.select":function(){this.validity.valid&&b.$button.removeClass("bs-invalid"),b.$element.off("rendered.bs.select")}})}),setTimeout(function(){b.$element.trigger("loaded.bs.select")})},createDropdown:function(){var b=this.multiple?" show-tick":"",d=this.$element.parent().hasClass("input-group")?" input-group-btn":"",e=this.autofocus?" autofocus":"",f=this.options.header?'
'+this.options.header+"
":"",g=this.options.liveSearch?'":"",h=this.multiple&&this.options.actionsBox?'
":"",i=this.multiple&&this.options.doneButton?'
":"",j='
";return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul")[0].innerHTML=b,a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menuInner[0].innerHTML=a},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var d=this,e=[],f=0,g=document.createElement("option"),h=-1,i=function(a,b,c,d){return""+a+""},j=function(a,e,f,g){return'"+a+''};if(this.options.title&&!this.multiple&&(h--,!this.$element.find(".bs-title-option").length)){var k=this.$element[0];g.className="bs-title-option",g.appendChild(document.createTextNode(this.options.title)),g.value="",k.insertBefore(g,k.firstChild),void 0===a(k.options[k.selectedIndex]).attr("selected")&&(g.selected=!0)}return this.$element.find("option").each(function(b){var c=a(this);if(h++,!c.hasClass("bs-title-option")){var g=this.className||"",k=this.style.cssText,l=c.data("content")?c.data("content"):c.html(),m=c.data("tokens")?c.data("tokens"):null,n="undefined"!=typeof c.data("subtext")?''+c.data("subtext")+"":"",o="undefined"!=typeof c.data("icon")?' ':"",p="OPTGROUP"===this.parentNode.tagName,q=this.disabled||p&&this.parentNode.disabled;if(""!==o&&q&&(o=""+o+""),d.options.hideDisabled&&q&&!p)return void h--;if(c.data("content")||(l=o+''+l+n+""),p&&c.data("divider")!==!0){var r=" "+this.parentNode.className||"";if(0===c.index()){f+=1;var s=this.parentNode.label,t="undefined"!=typeof c.parent().data("subtext")?''+c.parent().data("subtext")+"":"",u=c.parent().data("icon")?' ':"";s=u+''+s+t+"",0!==b&&e.length>0&&(h++,e.push(i("",null,"divider",f+"div"))),h++,e.push(i(s,null,"dropdown-header"+r,f))}if(d.options.hideDisabled&&q)return void h--;e.push(i(j(l,"opt "+g+r,k,m),b,"",f))}else c.data("divider")===!0?e.push(i("",b,"divider")):c.data("hidden")===!0?e.push(i(j(l,g,k,m),b,"hidden is-hidden")):(this.previousElementSibling&&"OPTGROUP"===this.previousElementSibling.tagName&&(h++,e.push(i("",null,"divider",f+"div"))),e.push(i(j(l,g,k,m),b)));d.liObj[b]=h}}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),e.join("")},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c,d=this;b!==!1&&this.$element.find("option").each(function(a){var b=d.findLis().eq(d.liObj[a]);d.setDisabled(a,this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled,b),d.setSelected(a,this.selected,b)}),this.tabIndex();var e=this.$element.find("option").map(function(){if(this.selected){if(d.options.hideDisabled&&(this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled))return;var b,c=a(this),e=c.data("icon")&&d.options.showIcon?' ':"";return b=d.options.showSubtext&&c.data("subtext")&&!d.multiple?' '+c.data("subtext")+"":"","undefined"!=typeof c.attr("title")?c.attr("title"):c.data("content")&&d.options.showContent?c.data("content"):e+c.html()+b}}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){c=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+c).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}void 0==this.options.title&&(this.options.title=this.$element.attr("title")),"static"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$button.children(".filter-option").html(f),this.$element.trigger("rendered.bs.select")},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(b){if(b||this.options.size!==!1&&!this.sizeInfo){var c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("ul"),f=document.createElement("li"),g=document.createElement("li"),h=document.createElement("a"),i=document.createElement("span"),j=this.options.header&&this.$menu.find(".popover-title").length>0?this.$menu.find(".popover-title")[0].cloneNode(!0):null,k=this.options.liveSearch?document.createElement("div"):null,l=this.options.actionsBox&&this.multiple&&this.$menu.find(".bs-actionsbox").length>0?this.$menu.find(".bs-actionsbox")[0].cloneNode(!0):null,m=this.options.doneButton&&this.multiple&&this.$menu.find(".bs-donebutton").length>0?this.$menu.find(".bs-donebutton")[0].cloneNode(!0):null;if(i.className="text",c.className=this.$menu[0].parentNode.className+" open",d.className="dropdown-menu open",e.className="dropdown-menu inner",f.className="divider",i.appendChild(document.createTextNode("Inner text")),h.appendChild(i),g.appendChild(h),e.appendChild(g),e.appendChild(f),j&&d.appendChild(j),k){var n=document.createElement("span");k.className="bs-searchbox",n.className="form-control",k.appendChild(n),d.appendChild(k)}l&&d.appendChild(l),d.appendChild(e),m&&d.appendChild(m),c.appendChild(d),document.body.appendChild(c);var o=h.offsetHeight,p=j?j.offsetHeight:0,q=k?k.offsetHeight:0,r=l?l.offsetHeight:0,s=m?m.offsetHeight:0,t=a(f).outerHeight(!0),u="function"==typeof getComputedStyle?getComputedStyle(d):!1,v=u?null:a(d),w=parseInt(u?u.paddingTop:v.css("paddingTop"))+parseInt(u?u.paddingBottom:v.css("paddingBottom"))+parseInt(u?u.borderTopWidth:v.css("borderTopWidth"))+parseInt(u?u.borderBottomWidth:v.css("borderBottomWidth")),x=w+parseInt(u?u.marginTop:v.css("marginTop"))+parseInt(u?u.marginBottom:v.css("marginBottom"))+2;document.body.removeChild(c),this.sizeInfo={liHeight:o,headerHeight:p,searchHeight:q,actionsHeight:r,doneButtonHeight:s,dividerHeight:t,menuPadding:w,menuExtras:x}}},setSize:function(){if(this.findLis(),this.liHeight(),this.options.header&&this.$menu.css("padding-top",0),this.options.size!==!1){var b,c,d,e,f=this,g=this.$menu,h=this.$menuInner,i=a(window),j=this.$newElement[0].offsetHeight,k=this.sizeInfo.liHeight,l=this.sizeInfo.headerHeight,m=this.sizeInfo.searchHeight,n=this.sizeInfo.actionsHeight,o=this.sizeInfo.doneButtonHeight,p=this.sizeInfo.dividerHeight,q=this.sizeInfo.menuPadding,r=this.sizeInfo.menuExtras,s=this.options.hideDisabled?".disabled":"",t=function(){d=f.$newElement.offset().top-i.scrollTop(),e=i.height()-d-j};if(t(),"auto"===this.options.size){var u=function(){var i,j=function(b,c){return function(d){return c?d.classList?d.classList.contains(b):a(d).hasClass(b):!(d.classList?d.classList.contains(b):a(d).hasClass(b))}},p=f.$menuInner[0].getElementsByTagName("li"),s=Array.prototype.filter?Array.prototype.filter.call(p,j("hidden",!1)):f.$lis.not(".hidden"),u=Array.prototype.filter?Array.prototype.filter.call(s,j("dropdown-header",!0)):s.filter(".dropdown-header");t(),b=e-r,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&f.$newElement.toggleClass("dropup",d>e&&c>b-r),f.$newElement.hasClass("dropup")&&(b=d-r),i=s.length+u.length>3?3*k+r-2:0,g.css({"max-height":b+"px",overflow:"hidden","min-height":i+l+m+n+o+"px"}),h.css({"max-height":b-l-m-n-o-q+"px","overflow-y":"auto","min-height":Math.max(i-q,0)+"px"})};u(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",u),i.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize",u)}else if(this.options.size&&"auto"!=this.options.size&&this.$lis.not(s).length>this.options.size){var v=this.$lis.not(".divider").not(s).children().slice(0,this.options.size).last().parent().index(),w=this.$lis.slice(0,v+1).filter(".divider").length;b=k*this.options.size+w*p+q,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&this.$newElement.toggleClass("dropup",d>e&&c>b-r),g.css({"max-height":b+l+m+n+o+"px",overflow:"hidden","min-height":""}),h.css({"max-height":b-q+"px","overflow-y":"auto","min-height":""})}}},setWidth:function(){if("auto"===this.options.width){this.$menu.css("min-width","0");var a=this.$menu.parent().clone().appendTo("body"),b=this.options.container?this.$newElement.clone().appendTo("body"):a,c=a.children(".dropdown-menu").outerWidth(),d=b.css("width","auto").children("button").outerWidth();a.remove(),b.remove(),this.$newElement.css("width",Math.max(c,d)+"px")}else"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){this.$bsContainer=a('
');var b,c,d=this,e=function(a){d.$bsContainer.addClass(a.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,d.$bsContainer.css({top:b.top+c,left:b.left,width:a[0].offsetWidth})};this.$button.on("click",function(){var b=a(this);d.isDisabled()||(e(d.$newElement),d.$bsContainer.appendTo(d.options.container).toggleClass("open",!b.hasClass("open")).append(d.$menu))}),a(window).on("resize scroll",function(){e(d.$newElement)}),this.$element.on("hide.bs.select",function(){d.$menu.data("height",d.$menu.height()),d.$bsContainer.detach()})},setSelected:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),c.toggleClass("selected",b)},setDisabled:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),b?c.addClass("disabled").children("a").attr("href","#").attr("tabindex",-1):c.removeClass("disabled").children("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element[0].disabled},checkDisabled:function(){var a=this;this.isDisabled()?(this.$newElement.addClass("disabled"),this.$button.addClass("disabled").attr("tabindex",-1)):(this.$button.hasClass("disabled")&&(this.$newElement.removeClass("disabled"),this.$button.removeClass("disabled")),-1!=this.$button.attr("tabindex")||this.$element.data("tabindex")||this.$button.removeAttr("tabindex")),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.data("tabindex")!==this.$element.attr("tabindex")&&-98!==this.$element.attr("tabindex")&&"-98"!==this.$element.attr("tabindex")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex"))),this.$element.attr("tabindex",-98)},clickListener:function(){var b=this,c=a(document);this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),c.data("spaceSelect",!1),this.$button.on("keyup",function(a){/(32)/.test(a.keyCode.toString(10))&&c.data("spaceSelect")&&(a.preventDefault(),c.data("spaceSelect",!1))}),this.$button.on("click",function(){b.setSize(),b.$element.on("shown.bs.select",function(){if(b.options.liveSearch||b.multiple){if(!b.multiple){var a=b.liObj[b.$element[0].selectedIndex];if("number"!=typeof a||b.options.size===!1)return;var c=b.$lis.eq(a)[0].offsetTop-b.$menuInner[0].offsetTop;c=c-b.$menuInner[0].offsetHeight/2+b.sizeInfo.liHeight/2,b.$menuInner[0].scrollTop=c}}else b.$menuInner.find(".selected a").focus()})}),this.$menuInner.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l
');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("
"+r+"
")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("
"+s+"
")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&(b.$element.triggerNative("change"),b.$element.trigger("changed.bs.select",[e,i.prop("selected"),j]))}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(c){c.currentTarget==this&&(c.preventDefault(),c.stopPropagation(),b.options.liveSearch&&!a(c.target).hasClass("close")?b.$searchbox.focus():b.$button.focus())}),this.$menuInner.on("click",".divider, .dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.click()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).hasClass("bs-select-all")?b.selectAll():b.deselectAll(),b.$element.triggerNative("change")}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var d=this,e=a('
  • ');this.$button.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){d.$menuInner.find(".active").removeClass("active"),d.$searchbox.val()&&(d.$searchbox.val(""),d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),d.multiple||d.$menuInner.find(".selected").addClass("active"),setTimeout(function(){d.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){if(d.$searchbox.val()){var f=d.$lis.not(".is-hidden").removeClass("hidden").children("a");f=d.options.liveSearchNormalize?f.not(":a"+d._searchStyle()+'("'+b(d.$searchbox.val())+'")'):f.not(":"+d._searchStyle()+'("'+d.$searchbox.val()+'")'),f.parent().addClass("hidden"),d.$lis.filter(".dropdown-header").each(function(){var b=a(this),c=b.data("optgroup");0===d.$lis.filter("[data-optgroup="+c+"]").not(b).not(".hidden").length&&(b.addClass("hidden"),d.$lis.filter("[data-optgroup="+c+"div]").addClass("hidden"))});var g=d.$lis.not(".hidden");g.each(function(b){var c=a(this);c.hasClass("divider")&&(c.index()===g.first().index()||c.index()===g.last().index()||g.eq(b+1).hasClass("divider"))&&c.addClass("hidden")}),d.$lis.not(".hidden, .no-results").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(d.options.noneResultsText.replace("{0}",'"'+c(d.$searchbox.val())+'"')).show(),d.$menuInner.append(e))}else d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove();d.$lis.filter(".active").removeClass("active"),d.$searchbox.val()&&d.$lis.not(".hidden, .divider, .dropdown-header").eq(0).addClass("active").children("a").focus(),a(this).focus()})},_searchStyle:function(){var a={begins:"ibegins",startsWith:"ibegins"};return a[this.options.liveSearchStyle]||"icontains"},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},changeAll:function(b){"undefined"==typeof b&&(b=!0),this.findLis();for(var c=this.$element.find("option"),d=this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").toggleClass("selected",b),e=d.length,f=[],g=0;e>g;g++){var h=d[g].getAttribute("data-original-index");f[f.length]=c.eq(h)[0]}a(f).prop("selected",b),this.render(!1)},selectAll:function(){return this.changeAll(!0)},deselectAll:function(){return this.changeAll(!1)},keydown:function(c){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p=":not(.disabled, .hidden, .dropdown-header, .divider)",q={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li",n),l=o.$newElement.hasClass("open"),!l&&(c.keyCode>=48&&c.keyCode<=57||c.keyCode>=96&&c.keyCode<=105||c.keyCode>=65&&c.keyCode<=90)&&(o.options.container?o.$button.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(c.preventDefault(),o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus()),d=a("[role=menu] li"+p,n),m.val()||/(38|40)/.test(c.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$menuInner.find("li"),d=o.options.liveSearchNormalize?d.filter(":a"+o._searchStyle()+"("+b(q[c.keyCode])+")"):d.filter(":"+o._searchStyle()+"("+q[c.keyCode]+")"))),d.length){if(/(38|40)/.test(c.keyCode.toString(10)))e=d.index(d.find("a").filter(":focus").parent()),g=d.filter(p).first().index(),h=d.filter(p).last().index(),f=d.eq(e).nextAll(p).eq(0).index(),i=d.eq(e).prevAll(p).eq(0).index(),j=d.eq(f).prevAll(p).eq(0).index(),o.options.liveSearch&&(d.each(function(b){a(this).hasClass("disabled")||a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.first().data("index"),h=d.last().data("index"),f=d.eq(e).nextAll().eq(0).data("index"),i=d.eq(e).prevAll().eq(0).data("index"),j=d.eq(f).prevAll().eq(0).data("index")),k=m.data("prevIndex"),38==c.keyCode?(o.options.liveSearch&&e--,e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)):40==c.keyCode&&(o.options.liveSearch&&e++,-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(c.preventDefault(),m.hasClass("dropdown-toggle")||(d.removeClass("active").eq(e).addClass("active").children("a").focus(),m.focus())):d.eq(e).children("a").focus();else if(!m.is("input")){var r,s,t=[];d.each(function(){a(this).hasClass("disabled")||a.trim(a(this).children("a").text().toLowerCase()).substring(0,1)==q[c.keyCode]&&t.push(a(this).index())}),r=a(document).data("keycount"),r++,a(document).data("keycount",r),s=a.trim(a(":focus").text().toLowerCase()).substring(0,1),s!=q[c.keyCode]?(r=1,a(document).data("keycount",r)):r>=t.length&&(a(document).data("keycount",0),r>t.length&&(r=1)),d.eq(t[r-1]).children("a").focus()}if((/(13|32)/.test(c.keyCode.toString(10))||/(^9$)/.test(c.keyCode.toString(10))&&o.options.selectOnTab)&&l){if(/(32)/.test(c.keyCode.toString(10))||c.preventDefault(),o.options.liveSearch)/(32)/.test(c.keyCode.toString(10))||(o.$menuInner.find(".active a").click(),m.focus());else{var u=a(":focus");u.click(),u.focus(),c.preventDefault(),a(document).data("spaceSelect",!0)}a(document).data("keycount",0)}(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(c.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device")},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),this.setWidth(),this.$lis&&this.$searchbox.trigger("propertychange"),this.$element.trigger("refreshed.bs.select")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(".bs.select").removeData("selectpicker").removeClass("bs-select-hidden selectpicker")}};var f=a.fn.selectpicker;a.fn.selectpicker=d,a.fn.selectpicker.Constructor=e,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=f,this},a(document).data("keycount",0).on("keydown.bs.select",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',e.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);d.call(b,b.data())})})}(a)}); +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(a){"use strict";function b(b){var c=[{re:/[\xC0-\xC6]/g,ch:"A"},{re:/[\xE0-\xE6]/g,ch:"a"},{re:/[\xC8-\xCB]/g,ch:"E"},{re:/[\xE8-\xEB]/g,ch:"e"},{re:/[\xCC-\xCF]/g,ch:"I"},{re:/[\xEC-\xEF]/g,ch:"i"},{re:/[\xD2-\xD6]/g,ch:"O"},{re:/[\xF2-\xF6]/g,ch:"o"},{re:/[\xD9-\xDC]/g,ch:"U"},{re:/[\xF9-\xFC]/g,ch:"u"},{re:/[\xC7-\xE7]/g,ch:"c"},{re:/[\xD1]/g,ch:"N"},{re:/[\xF1]/g,ch:"n"}];return a.each(c,function(){b=b.replace(this.re,this.ch)}),b}function c(a){var b={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},c="(?:"+Object.keys(b).join("|")+")",d=new RegExp(c),e=new RegExp(c,"g"),f=null==a?"":""+a;return d.test(f)?f.replace(e,function(a){return b[a]}):f}function d(b,c){var d=arguments,f=b,g=c;[].shift.apply(d);var h,i=this.each(function(){var b=a(this);if(b.is("select")){var c=b.data("selectpicker"),i="object"==typeof f&&f;if(c){if(i)for(var j in i)i.hasOwnProperty(j)&&(c.options[j]=i[j])}else{var k=a.extend({},e.DEFAULTS,a.fn.selectpicker.defaults||{},b.data(),i);k.template=a.extend({},e.DEFAULTS.template,a.fn.selectpicker.defaults?a.fn.selectpicker.defaults.template:{},b.data().template,i.template),b.data("selectpicker",c=new e(this,k,g))}"string"==typeof f&&(h=c[f]instanceof Function?c[f].apply(c,d):c.options[f])}});return"undefined"!=typeof h?h:i}String.prototype.includes||!function(){var a={}.toString,b=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),c="".indexOf,d=function(b){if(null==this)throw new TypeError;var d=String(this);if(b&&"[object RegExp]"==a.call(b))throw new TypeError;var e=d.length,f=String(b),g=f.length,h=arguments.length>1?arguments[1]:void 0,i=h?Number(h):0;i!=i&&(i=0);var j=Math.min(Math.max(i,0),e);return g+j>e?!1:-1!=c.call(d,f,i)};b?b(String.prototype,"includes",{value:d,configurable:!0,writable:!0}):String.prototype.includes=d}(),String.prototype.startsWith||!function(){var a=function(){try{var a={},b=Object.defineProperty,c=b(a,a,a)&&b}catch(d){}return c}(),b={}.toString,c=function(a){if(null==this)throw new TypeError;var c=String(this);if(a&&"[object RegExp]"==b.call(a))throw new TypeError;var d=c.length,e=String(a),f=e.length,g=arguments.length>1?arguments[1]:void 0,h=g?Number(g):0;h!=h&&(h=0);var i=Math.min(Math.max(h,0),d);if(f+i>d)return!1;for(var j=-1;++j'},maxOptions:!1,mobile:!1,selectOnTab:!1,dropdownAlignRight:!1},e.prototype={constructor:e,init:function(){var b=this,c=this.$element.attr("id");this.$element.addClass("bs-select-hidden"),this.liObj={},this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),this.$newElement=this.createView(),this.$element.after(this.$newElement).appendTo(this.$newElement),this.$button=this.$newElement.children("button"),this.$menu=this.$newElement.children(".dropdown-menu"),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),this.$element.removeClass("bs-select-hidden"),this.options.dropdownAlignRight&&this.$menu.addClass("dropdown-menu-right"),"undefined"!=typeof c&&(this.$button.attr("data-id",c),a('label[for="'+c+'"]').click(function(a){a.preventDefault(),b.$button.focus()})),this.checkDisabled(),this.clickListener(),this.options.liveSearch&&this.liveSearchListener(),this.render(),this.setStyle(),this.setWidth(),this.options.container&&this.selectPosition(),this.$menu.data("this",this),this.$newElement.data("this",this),this.options.mobile&&this.mobile(),this.$newElement.on({"hide.bs.dropdown":function(a){b.$element.trigger("hide.bs.select",a)},"hidden.bs.dropdown":function(a){b.$element.trigger("hidden.bs.select",a)},"show.bs.dropdown":function(a){b.$element.trigger("show.bs.select",a)},"shown.bs.dropdown":function(a){b.$element.trigger("shown.bs.select",a)}}),b.$element[0].hasAttribute("required")&&this.$element.on("invalid",function(){b.$button.addClass("bs-invalid").focus(),b.$element.on({"focus.bs.select":function(){b.$button.focus(),b.$element.off("focus.bs.select")},"shown.bs.select":function(){b.$element.val(b.$element.val()).off("shown.bs.select")},"rendered.bs.select":function(){this.validity.valid&&b.$button.removeClass("bs-invalid"),b.$element.off("rendered.bs.select")}})}),setTimeout(function(){b.$element.trigger("loaded.bs.select")})},createDropdown:function(){var b=this.multiple||this.options.showTick?" show-tick":"",d=this.$element.parent().hasClass("input-group")?" input-group-btn":"",e=this.autofocus?" autofocus":"",f=this.options.header?'
    '+this.options.header+"
    ":"",g=this.options.liveSearch?'":"",h=this.multiple&&this.options.actionsBox?'
    ":"",i=this.multiple&&this.options.doneButton?'
    ":"",j='
    ";return a(j)},createView:function(){var a=this.createDropdown(),b=this.createLi();return a.find("ul")[0].innerHTML=b,a},reloadLi:function(){this.destroyLi();var a=this.createLi();this.$menuInner[0].innerHTML=a},destroyLi:function(){this.$menu.find("li").remove()},createLi:function(){var d=this,e=[],f=0,g=document.createElement("option"),h=-1,i=function(a,b,c,d){return""+a+""},j=function(a,e,f,g){return'"+a+''};if(this.options.title&&!this.multiple&&(h--,!this.$element.find(".bs-title-option").length)){var k=this.$element[0];g.className="bs-title-option",g.appendChild(document.createTextNode(this.options.title)),g.value="",k.insertBefore(g,k.firstChild),void 0===a(k.options[k.selectedIndex]).attr("selected")&&(g.selected=!0)}return this.$element.find("option").each(function(b){var c=a(this);if(h++,!c.hasClass("bs-title-option")){var g=this.className||"",k=this.style.cssText,l=c.data("content")?c.data("content"):c.html(),m=c.data("tokens")?c.data("tokens"):null,n="undefined"!=typeof c.data("subtext")?''+c.data("subtext")+"":"",o="undefined"!=typeof c.data("icon")?' ':"",p="OPTGROUP"===this.parentNode.tagName,q=this.disabled||p&&this.parentNode.disabled;if(""!==o&&q&&(o=""+o+""),d.options.hideDisabled&&q&&!p)return void h--;if(c.data("content")||(l=o+''+l+n+""),p&&c.data("divider")!==!0){var r=" "+this.parentNode.className||"";if(0===c.index()){f+=1;var s=this.parentNode.label,t="undefined"!=typeof c.parent().data("subtext")?''+c.parent().data("subtext")+"":"",u=c.parent().data("icon")?' ':"";s=u+''+s+t+"",0!==b&&e.length>0&&(h++,e.push(i("",null,"divider",f+"div"))),h++,e.push(i(s,null,"dropdown-header"+r,f))}if(d.options.hideDisabled&&q)return void h--;e.push(i(j(l,"opt "+g+r,k,m),b,"",f))}else c.data("divider")===!0?e.push(i("",b,"divider")):c.data("hidden")===!0?e.push(i(j(l,g,k,m),b,"hidden is-hidden")):(this.previousElementSibling&&"OPTGROUP"===this.previousElementSibling.tagName&&(h++,e.push(i("",null,"divider",f+"div"))),e.push(i(j(l,g,k,m),b)));d.liObj[b]=h}}),this.multiple||0!==this.$element.find("option:selected").length||this.options.title||this.$element.find("option").eq(0).prop("selected",!0).attr("selected","selected"),e.join("")},findLis:function(){return null==this.$lis&&(this.$lis=this.$menu.find("li")),this.$lis},render:function(b){var c,d=this;b!==!1&&this.$element.find("option").each(function(a){var b=d.findLis().eq(d.liObj[a]);d.setDisabled(a,this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled,b),d.setSelected(a,this.selected,b)}),this.tabIndex();var e=this.$element.find("option").map(function(){if(this.selected){if(d.options.hideDisabled&&(this.disabled||"OPTGROUP"===this.parentNode.tagName&&this.parentNode.disabled))return;var b,c=a(this),e=c.data("icon")&&d.options.showIcon?' ':"";return b=d.options.showSubtext&&c.data("subtext")&&!d.multiple?' '+c.data("subtext")+"":"","undefined"!=typeof c.attr("title")?c.attr("title"):c.data("content")&&d.options.showContent?c.data("content"):e+c.html()+b}}).toArray(),f=this.multiple?e.join(this.options.multipleSeparator):e[0];if(this.multiple&&this.options.selectedTextFormat.indexOf("count")>-1){var g=this.options.selectedTextFormat.split(">");if(g.length>1&&e.length>g[1]||1==g.length&&e.length>=2){c=this.options.hideDisabled?", [disabled]":"";var h=this.$element.find("option").not('[data-divider="true"], [data-hidden="true"]'+c).length,i="function"==typeof this.options.countSelectedText?this.options.countSelectedText(e.length,h):this.options.countSelectedText;f=i.replace("{0}",e.length.toString()).replace("{1}",h.toString())}}void 0==this.options.title&&(this.options.title=this.$element.attr("title")),"static"==this.options.selectedTextFormat&&(f=this.options.title),f||(f="undefined"!=typeof this.options.title?this.options.title:this.options.noneSelectedText),this.$button.attr("title",a.trim(f.replace(/<[^>]*>?/g,""))),this.$button.children(".filter-option").html(f),this.$element.trigger("rendered.bs.select")},setStyle:function(a,b){this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,""));var c=a?a:this.options.style;"add"==b?this.$button.addClass(c):"remove"==b?this.$button.removeClass(c):(this.$button.removeClass(this.options.style),this.$button.addClass(c))},liHeight:function(b){if(b||this.options.size!==!1&&!this.sizeInfo){var c=document.createElement("div"),d=document.createElement("div"),e=document.createElement("ul"),f=document.createElement("li"),g=document.createElement("li"),h=document.createElement("a"),i=document.createElement("span"),j=this.options.header&&this.$menu.find(".popover-title").length>0?this.$menu.find(".popover-title")[0].cloneNode(!0):null,k=this.options.liveSearch?document.createElement("div"):null,l=this.options.actionsBox&&this.multiple&&this.$menu.find(".bs-actionsbox").length>0?this.$menu.find(".bs-actionsbox")[0].cloneNode(!0):null,m=this.options.doneButton&&this.multiple&&this.$menu.find(".bs-donebutton").length>0?this.$menu.find(".bs-donebutton")[0].cloneNode(!0):null;if(i.className="text",c.className=this.$menu[0].parentNode.className+" open",d.className="dropdown-menu open",e.className="dropdown-menu inner",f.className="divider",i.appendChild(document.createTextNode("Inner text")),h.appendChild(i),g.appendChild(h),e.appendChild(g),e.appendChild(f),j&&d.appendChild(j),k){var n=document.createElement("span");k.className="bs-searchbox",n.className="form-control",k.appendChild(n),d.appendChild(k)}l&&d.appendChild(l),d.appendChild(e),m&&d.appendChild(m),c.appendChild(d),document.body.appendChild(c);var o=h.offsetHeight,p=j?j.offsetHeight:0,q=k?k.offsetHeight:0,r=l?l.offsetHeight:0,s=m?m.offsetHeight:0,t=a(f).outerHeight(!0),u="function"==typeof getComputedStyle?getComputedStyle(d):!1,v=u?null:a(d),w=parseInt(u?u.paddingTop:v.css("paddingTop"))+parseInt(u?u.paddingBottom:v.css("paddingBottom"))+parseInt(u?u.borderTopWidth:v.css("borderTopWidth"))+parseInt(u?u.borderBottomWidth:v.css("borderBottomWidth")),x=w+parseInt(u?u.marginTop:v.css("marginTop"))+parseInt(u?u.marginBottom:v.css("marginBottom"))+2;document.body.removeChild(c),this.sizeInfo={liHeight:o,headerHeight:p,searchHeight:q,actionsHeight:r,doneButtonHeight:s,dividerHeight:t,menuPadding:w,menuExtras:x}}},setSize:function(){if(this.findLis(),this.liHeight(),this.options.header&&this.$menu.css("padding-top",0),this.options.size!==!1){var b,c,d,e,f=this,g=this.$menu,h=this.$menuInner,i=a(window),j=this.$newElement[0].offsetHeight,k=this.sizeInfo.liHeight,l=this.sizeInfo.headerHeight,m=this.sizeInfo.searchHeight,n=this.sizeInfo.actionsHeight,o=this.sizeInfo.doneButtonHeight,p=this.sizeInfo.dividerHeight,q=this.sizeInfo.menuPadding,r=this.sizeInfo.menuExtras,s=this.options.hideDisabled?".disabled":"",t=function(){d=f.$newElement.offset().top-i.scrollTop(),e=i.height()-d-j};if(t(),"auto"===this.options.size){var u=function(){var i,j=function(b,c){return function(d){return c?d.classList?d.classList.contains(b):a(d).hasClass(b):!(d.classList?d.classList.contains(b):a(d).hasClass(b))}},p=f.$menuInner[0].getElementsByTagName("li"),s=Array.prototype.filter?Array.prototype.filter.call(p,j("hidden",!1)):f.$lis.not(".hidden"),u=Array.prototype.filter?Array.prototype.filter.call(s,j("dropdown-header",!0)):s.filter(".dropdown-header");t(),b=e-r,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&f.$newElement.toggleClass("dropup",d>e&&c>b-r),f.$newElement.hasClass("dropup")&&(b=d-r),i=s.length+u.length>3?3*k+r-2:0,g.css({"max-height":b+"px",overflow:"hidden","min-height":i+l+m+n+o+"px"}),h.css({"max-height":b-l-m-n-o-q+"px","overflow-y":"auto","min-height":Math.max(i-q,0)+"px"})};u(),this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize",u),i.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize",u)}else if(this.options.size&&"auto"!=this.options.size&&this.$lis.not(s).length>this.options.size){var v=this.$lis.not(".divider").not(s).children().slice(0,this.options.size).last().parent().index(),w=this.$lis.slice(0,v+1).filter(".divider").length;b=k*this.options.size+w*p+q,f.options.container?(g.data("height")||g.data("height",g.height()),c=g.data("height")):c=g.height(),f.options.dropupAuto&&this.$newElement.toggleClass("dropup",d>e&&c>b-r),g.css({"max-height":b+l+m+n+o+"px",overflow:"hidden","min-height":""}),h.css({"max-height":b-q+"px","overflow-y":"auto","min-height":""})}}},setWidth:function(){if("auto"===this.options.width){this.$menu.css("min-width","0");var a=this.$menu.parent().clone().appendTo("body"),b=this.options.container?this.$newElement.clone().appendTo("body"):a,c=a.children(".dropdown-menu").outerWidth(),d=b.css("width","auto").children("button").outerWidth();a.remove(),b.remove(),this.$newElement.css("width",Math.max(c,d)+"px")}else"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width",""));this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement.removeClass("fit-width")},selectPosition:function(){this.$bsContainer=a('
    ');var b,c,d=this,e=function(a){d.$bsContainer.addClass(a.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass("dropup",a.hasClass("dropup")),b=a.offset(),c=a.hasClass("dropup")?0:a[0].offsetHeight,d.$bsContainer.css({top:b.top+c,left:b.left,width:a[0].offsetWidth})};this.$button.on("click",function(){var b=a(this);d.isDisabled()||(e(d.$newElement),d.$bsContainer.appendTo(d.options.container).toggleClass("open",!b.hasClass("open")).append(d.$menu))}),a(window).on("resize scroll",function(){e(d.$newElement)}),this.$element.on("hide.bs.select",function(){d.$menu.data("height",d.$menu.height()),d.$bsContainer.detach()})},setSelected:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),c.toggleClass("selected",b)},setDisabled:function(a,b,c){c||(c=this.findLis().eq(this.liObj[a])),b?c.addClass("disabled").children("a").attr("href","#").attr("tabindex",-1):c.removeClass("disabled").children("a").removeAttr("href").attr("tabindex",0)},isDisabled:function(){return this.$element[0].disabled},checkDisabled:function(){var a=this;this.isDisabled()?(this.$newElement.addClass("disabled"),this.$button.addClass("disabled").attr("tabindex",-1)):(this.$button.hasClass("disabled")&&(this.$newElement.removeClass("disabled"),this.$button.removeClass("disabled")),-1!=this.$button.attr("tabindex")||this.$element.data("tabindex")||this.$button.removeAttr("tabindex")),this.$button.click(function(){return!a.isDisabled()})},tabIndex:function(){this.$element.data("tabindex")!==this.$element.attr("tabindex")&&-98!==this.$element.attr("tabindex")&&"-98"!==this.$element.attr("tabindex")&&(this.$element.data("tabindex",this.$element.attr("tabindex")),this.$button.attr("tabindex",this.$element.data("tabindex"))),this.$element.attr("tabindex",-98)},clickListener:function(){var b=this,c=a(document);this.$newElement.on("touchstart.dropdown",".dropdown-menu",function(a){a.stopPropagation()}),c.data("spaceSelect",!1),this.$button.on("keyup",function(a){/(32)/.test(a.keyCode.toString(10))&&c.data("spaceSelect")&&(a.preventDefault(),c.data("spaceSelect",!1))}),this.$button.on("click",function(){b.setSize()}),this.$element.on("shown.bs.select",function(){if(b.options.liveSearch||b.multiple){if(!b.multiple){var a=b.liObj[b.$element[0].selectedIndex];if("number"!=typeof a||b.options.size===!1)return;var c=b.$lis.eq(a)[0].offsetTop-b.$menuInner[0].offsetTop;c=c-b.$menuInner[0].offsetHeight/2+b.sizeInfo.liHeight/2,b.$menuInner[0].scrollTop=c}}else b.$menuInner.find(".selected a").focus()}),this.$menuInner.on("click","li a",function(c){var d=a(this),e=d.parent().data("originalIndex"),f=b.$element.val(),g=b.$element.prop("selectedIndex");if(b.multiple&&c.stopPropagation(),c.preventDefault(),!b.isDisabled()&&!d.parent().hasClass("disabled")){var h=b.$element.find("option"),i=h.eq(e),j=i.prop("selected"),k=i.parent("optgroup"),l=b.options.maxOptions,m=k.data("maxOptions")||!1;if(b.multiple){if(i.prop("selected",!j),b.setSelected(e,!j),d.blur(),l!==!1||m!==!1){var n=l
    ');q[2]&&(r=r.replace("{var}",q[2][l>1?0:1]),s=s.replace("{var}",q[2][m>1?0:1])),i.prop("selected",!1),b.$menu.append(t),l&&n&&(t.append(a("
    "+r+"
    ")),b.$element.trigger("maxReached.bs.select")),m&&o&&(t.append(a("
    "+s+"
    ")),b.$element.trigger("maxReachedGrp.bs.select")),setTimeout(function(){b.setSelected(e,!1)},10),t.delay(750).fadeOut(300,function(){a(this).remove()})}}}else h.prop("selected",!1),i.prop("selected",!0),b.$menuInner.find(".selected").removeClass("selected"),b.setSelected(e,!0);b.multiple?b.options.liveSearch&&b.$searchbox.focus():b.$button.focus(),(f!=b.$element.val()&&b.multiple||g!=b.$element.prop("selectedIndex")&&!b.multiple)&&b.$element.trigger("changed.bs.select",[e,i.prop("selected"),j]).triggerNative("change")}}),this.$menu.on("click","li.disabled a, .popover-title, .popover-title :not(.close)",function(c){c.currentTarget==this&&(c.preventDefault(),c.stopPropagation(),b.options.liveSearch&&!a(c.target).hasClass("close")?b.$searchbox.focus():b.$button.focus())}),this.$menuInner.on("click",".divider, .dropdown-header",function(a){a.preventDefault(),a.stopPropagation(),b.options.liveSearch?b.$searchbox.focus():b.$button.focus()}),this.$menu.on("click",".popover-title .close",function(){b.$button.click()}),this.$searchbox.on("click",function(a){a.stopPropagation()}),this.$menu.on("click",".actions-btn",function(c){b.options.liveSearch?b.$searchbox.focus():b.$button.focus(),c.preventDefault(),c.stopPropagation(),a(this).hasClass("bs-select-all")?b.selectAll():b.deselectAll()}),this.$element.change(function(){b.render(!1)})},liveSearchListener:function(){var d=this,e=a('
  • ');this.$button.on("click.dropdown.data-api touchstart.dropdown.data-api",function(){d.$menuInner.find(".active").removeClass("active"),d.$searchbox.val()&&(d.$searchbox.val(""),d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove()),d.multiple||d.$menuInner.find(".selected").addClass("active"),setTimeout(function(){d.$searchbox.focus()},10)}),this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api",function(a){a.stopPropagation()}),this.$searchbox.on("input propertychange",function(){if(d.$searchbox.val()){var f=d.$lis.not(".is-hidden").removeClass("hidden").children("a");f=d.options.liveSearchNormalize?f.not(":a"+d._searchStyle()+'("'+b(d.$searchbox.val())+'")'):f.not(":"+d._searchStyle()+'("'+d.$searchbox.val()+'")'),f.parent().addClass("hidden"),d.$lis.filter(".dropdown-header").each(function(){var b=a(this),c=b.data("optgroup");0===d.$lis.filter("[data-optgroup="+c+"]").not(b).not(".hidden").length&&(b.addClass("hidden"),d.$lis.filter("[data-optgroup="+c+"div]").addClass("hidden"))});var g=d.$lis.not(".hidden");g.each(function(b){var c=a(this);c.hasClass("divider")&&(c.index()===g.first().index()||c.index()===g.last().index()||g.eq(b+1).hasClass("divider"))&&c.addClass("hidden")}),d.$lis.not(".hidden, .no-results").length?e.parent().length&&e.remove():(e.parent().length&&e.remove(),e.html(d.options.noneResultsText.replace("{0}",'"'+c(d.$searchbox.val())+'"')).show(),d.$menuInner.append(e))}else d.$lis.not(".is-hidden").removeClass("hidden"),e.parent().length&&e.remove();d.$lis.filter(".active").removeClass("active"),d.$searchbox.val()&&d.$lis.not(".hidden, .divider, .dropdown-header").eq(0).addClass("active").children("a").focus(),a(this).focus()})},_searchStyle:function(){var a={begins:"ibegins",startsWith:"ibegins"};return a[this.options.liveSearchStyle]||"icontains"},val:function(a){return"undefined"!=typeof a?(this.$element.val(a),this.render(),this.$element):this.$element.val()},changeAll:function(b){"undefined"==typeof b&&(b=!0),this.findLis();for(var c=this.$element.find("option"),d=this.$lis.not(".divider, .dropdown-header, .disabled, .hidden").toggleClass("selected",b),e=d.length,f=[],g=0;e>g;g++){var h=d[g].getAttribute("data-original-index");f[f.length]=c.eq(h)[0]}a(f).prop("selected",b),this.render(!1),this.$element.trigger("changed.bs.select").triggerNative("change")},selectAll:function(){return this.changeAll(!0)},deselectAll:function(){return this.changeAll(!1)},toggle:function(a){a=a||window.event,a&&a.stopPropagation(),this.$button.trigger("click")},keydown:function(c){var d,e,f,g,h,i,j,k,l,m=a(this),n=m.is("input")?m.parent().parent():m.parent(),o=n.data("this"),p=":not(.disabled, .hidden, .dropdown-header, .divider)",q={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"};if(o.options.liveSearch&&(n=m.parent().parent()),o.options.container&&(n=o.$menu),d=a("[role=menu] li",n),l=o.$newElement.hasClass("open"),!l&&(c.keyCode>=48&&c.keyCode<=57||c.keyCode>=96&&c.keyCode<=105||c.keyCode>=65&&c.keyCode<=90)&&(o.options.container?o.$button.trigger("click"):(o.setSize(),o.$menu.parent().addClass("open"),l=!0),o.$searchbox.focus()),o.options.liveSearch&&(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&0===o.$menu.find(".active").length&&(c.preventDefault(),o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus()),d=a("[role=menu] li"+p,n),m.val()||/(38|40)/.test(c.keyCode.toString(10))||0===d.filter(".active").length&&(d=o.$menuInner.find("li"),d=o.options.liveSearchNormalize?d.filter(":a"+o._searchStyle()+"("+b(q[c.keyCode])+")"):d.filter(":"+o._searchStyle()+"("+q[c.keyCode]+")"))),d.length){if(/(38|40)/.test(c.keyCode.toString(10)))e=d.index(d.find("a").filter(":focus").parent()),g=d.filter(p).first().index(),h=d.filter(p).last().index(),f=d.eq(e).nextAll(p).eq(0).index(),i=d.eq(e).prevAll(p).eq(0).index(),j=d.eq(f).prevAll(p).eq(0).index(),o.options.liveSearch&&(d.each(function(b){a(this).hasClass("disabled")||a(this).data("index",b)}),e=d.index(d.filter(".active")),g=d.first().data("index"),h=d.last().data("index"),f=d.eq(e).nextAll().eq(0).data("index"),i=d.eq(e).prevAll().eq(0).data("index"),j=d.eq(f).prevAll().eq(0).data("index")),k=m.data("prevIndex"),38==c.keyCode?(o.options.liveSearch&&e--,e!=j&&e>i&&(e=i),g>e&&(e=g),e==k&&(e=h)):40==c.keyCode&&(o.options.liveSearch&&e++,-1==e&&(e=0),e!=j&&f>e&&(e=f),e>h&&(e=h),e==k&&(e=g)),m.data("prevIndex",e),o.options.liveSearch?(c.preventDefault(),m.hasClass("dropdown-toggle")||(d.removeClass("active").eq(e).addClass("active").children("a").focus(),m.focus())):d.eq(e).children("a").focus();else if(!m.is("input")){var r,s,t=[];d.each(function(){a(this).hasClass("disabled")||a.trim(a(this).children("a").text().toLowerCase()).substring(0,1)==q[c.keyCode]&&t.push(a(this).index())}),r=a(document).data("keycount"),r++,a(document).data("keycount",r),s=a.trim(a(":focus").text().toLowerCase()).substring(0,1),s!=q[c.keyCode]?(r=1,a(document).data("keycount",r)):r>=t.length&&(a(document).data("keycount",0),r>t.length&&(r=1)),d.eq(t[r-1]).children("a").focus()}if((/(13|32)/.test(c.keyCode.toString(10))||/(^9$)/.test(c.keyCode.toString(10))&&o.options.selectOnTab)&&l){if(/(32)/.test(c.keyCode.toString(10))||c.preventDefault(),o.options.liveSearch)/(32)/.test(c.keyCode.toString(10))||(o.$menuInner.find(".active a").click(),m.focus());else{var u=a(":focus");u.click(),u.focus(),c.preventDefault(),a(document).data("spaceSelect",!0)}a(document).data("keycount",0)}(/(^9$|27)/.test(c.keyCode.toString(10))&&l&&(o.multiple||o.options.liveSearch)||/(27)/.test(c.keyCode.toString(10))&&!l)&&(o.$menu.parent().removeClass("open"),o.options.container&&o.$newElement.removeClass("open"),o.$button.focus())}},mobile:function(){this.$element.addClass("mobile-device")},refresh:function(){this.$lis=null,this.liObj={},this.reloadLi(),this.render(),this.checkDisabled(),this.liHeight(!0),this.setStyle(),this.setWidth(),this.$lis&&this.$searchbox.trigger("propertychange"),this.$element.trigger("refreshed.bs.select")},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),this.$bsContainer?this.$bsContainer.remove():this.$menu.remove(),this.$element.off(".bs.select").removeData("selectpicker").removeClass("bs-select-hidden selectpicker")}};var f=a.fn.selectpicker;a.fn.selectpicker=d,a.fn.selectpicker.Constructor=e,a.fn.selectpicker.noConflict=function(){return a.fn.selectpicker=f,this},a(document).data("keycount",0).on("keydown.bs.select",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',e.prototype.keydown).on("focusin.modal",'.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="menu"], .bs-searchbox input',function(a){a.stopPropagation()}),a(window).on("load.bs.select.data-api",function(){a(".selectpicker").each(function(){var b=a(this);d.call(b,b.data())})})}(a)}); //# sourceMappingURL=bootstrap-select.js.map \ No newline at end of file diff --git a/js/morpheus-latest.min.js b/js/morpheus-latest.min.js index 71e904508975cfdc771474d2a501583c42e40514..558f32e0bc9eac049887e60918903dc1f66ea792 100644 --- a/js/morpheus-latest.min.js +++ b/js/morpheus-latest.min.js @@ -1,20 +1,20 @@ -"undefined"==typeof morpheus&&(morpheus={}),morpheus.Util=function(){},morpheus.Util.URL="https://www.broadinstitute.org/cancer/software/morpheus/",morpheus.Util.RIGHT_ARROW=String.fromCharCode(8594),morpheus.Util.extend=function(c1,c2){for(var key in c2.prototype)key in c1.prototype||(c1.prototype[key]=c2.prototype[key])},morpheus.Util.viewPortSize=function(){return window.getComputedStyle(document.body,":before").content.replace(/"/g,"")},morpheus.Util.TRACKING_CODE_LOADED=!1,morpheus.Util.loadTrackingCode=function(){if("undefined"!=typeof window){if(morpheus.Util.TRACKING_CODE_LOADED)return;!function(i,s,o,g,r,a,m){i.GoogleAnalyticsObject=r,i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date,a=s.createElement(o),m=s.getElementsByTagName(o)[0],a.async=1,a.src=g,m.parentNode.insertBefore(a,m)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-53973555-1","auto","morpheus"),ga("morpheus.send","pageview"),morpheus.Util.TRACKING_CODE_LOADED=!0}},morpheus.Util.trackEvent=function(options){"undefined"!=typeof window&&(morpheus.Util.TRACKING_CODE_LOADED||morpheus.Util.loadTrackingCode(),morpheus.Util.TRACKING_CODE_LOADED&&ga("morpheus.send",{hitType:"event",eventCategory:options.eventCategory,eventAction:options.eventAction,eventLabel:options.eventLabel}))},morpheus.Util.trim=function(val){for(var len=val.length,st=0;len>st&&val[st]<=" ";)st++;for(;len>st&&val[len-1]<=" ";)len--;return st>0||leni;i++)if(array instanceof types[i])return!0;return!1},morpheus.Util.getWindowSearchObject=function(){var searchObject={},hashObject={};return window.location.search.length>0&&(searchObject=morpheus.Util.getQueryParams(window.location.search.substring(1))),window.location.hash.length>0&&(hashObject=morpheus.Util.getQueryParams(window.location.hash.substring(1))),_.extend(hashObject,searchObject)},morpheus.Util.getQueryParams=function(s){var params={};if(!s)return params;for(var search=unescape(s),keyValuePairs=search.split("&"),i=0;i0?scripts[0].src:""},morpheus.Util.forceDelete=function(obj){try{var _garbageCollector=function(){var ef=URL.createObjectURL(new Blob([""],{type:"text/javascript"})),w=new Worker(ef);return URL.revokeObjectURL(ef),w}();_garbageCollector.postMessage(obj,[obj])}catch(x){console.log("Unable to delete")}},morpheus.Util.getFileName=function(fileOrUrl){var name=fileOrUrl instanceof File?fileOrUrl.name:fileOrUrl;name=""+name;var slash=name.lastIndexOf("/");if(-1!==slash&&slashquestion+1){name=name.substring(0,question);for(var params=name.substring(question+1),keyValuePairs=decodeURIComponent(params).split("&"),i=0;ivalue?"0"+value:value},morpheus.Util.getExtension=function(name){var dotIndex=name.lastIndexOf(".");if(dotIndex>0){var suffix=name.substring(dotIndex+1).toLowerCase();if("txt"===suffix||"gz"===suffix){var newPath=name.substring(0,dotIndex),secondDotIndex=newPath.lastIndexOf(".");if(secondDotIndex>0){var secondSuffix=newPath.substring(secondDotIndex+1,newPath.length).toLowerCase();if("segtab"===secondSuffix||"seg"===secondSuffix||"maf"===secondSuffix||"gct"===secondSuffix||"txt"===secondSuffix||"gmt"===secondSuffix)return secondSuffix}}return suffix}return""},morpheus.Util.getBaseFileName=function(name){var dotIndex=name.lastIndexOf(".");if(dotIndex>0){var suffix=name.substring(dotIndex+1,name.length);return"gz"===suffix||"zip"===suffix||"bz2"===suffix?morpheus.Util.getBaseFileName(name.substring(0,dotIndex)):name.substring(0,dotIndex)}return name},morpheus.Util.seq=function(length){for(var array=[],i=0;length>i;i++)array.push(i);return array},morpheus.Util.sequ32=function(length){for(var array=new Uint32Array(length),i=0;length>i;i++)array[i]=i;return array},morpheus.Util.paramsToObject=function(hash){var search=hash?window.location.hash:window.location.search;if(search.length<=1)return{};search=unescape(search);for(var keyValuePairs=search.substring(1).split("&"),result={},i=0,length=keyValuePairs.length;length>i;i++){var pair=keyValuePairs[i].split("="),values=result[pair[0]];void 0===values&&(values=[],result[pair[0]]=values),values.push(pair[1])}return result},morpheus.Util.endsWith=function(string,suffix){return string.length>=suffix.length&&string.substr(string.length-suffix.length)===suffix},morpheus.Util.measureSvgText=function(text,classname){if(!text||0===text.length)return{height:0,width:0};var container=d3.select("body").append("svg");classname&&container.attr("class",classname),container.append("text").attr({x:-1e3,y:-1e3}).text(text);var bbox=container.node().getBBox();return container.remove(),{height:bbox.height,width:bbox.width}},morpheus.Util.IS_MAC=!1,"undefined"!=typeof navigator&&(morpheus.Util.IS_MAC=!!navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i)),morpheus.Util.hammer=function(el,recognizers){var hammer=new Hammer(el,{recognizers:[]});return-1!==_.indexOf(recognizers,"pan")?hammer.add(new Hammer.Pan({threshold:1,direction:Hammer.DIRECTION_ALL})):-1!==_.indexOf(recognizers,"panh")?hammer.add(new Hammer.Pan({threshold:1,direction:Hammer.DIRECTION_HORIZONTAL})):-1!==_.indexOf(recognizers,"panv")&&hammer.add(new Hammer.Pan({threshold:1,direction:Hammer.DIRECTION_VERTICAL})),-1!==_.indexOf(recognizers,"tap")&&hammer.add(new Hammer.Tap),-1!==_.indexOf(recognizers,"pinch")&&hammer.add(new Hammer.Pinch),-1!==_.indexOf(recognizers,"longpress")&&hammer.add(new Hammer.Press({event:"longpress",time:1e3})),-1!==_.indexOf(recognizers,"press")&&hammer.add(new Hammer.Press),hammer},morpheus.Util.autocompleteArrayMatcher=function(q,cb,array,fields,max){var filteredSet=new morpheus.Set,substrRegex=new RegExp("^"+q,"i");if(fields)for(var nfields=fields.length,i=0,n=array.length;n>i;i++){for(var item=array[i],j=0;nfields>j;j++){var field=fields[j],value=item[field];if(substrRegex.test(value)){filteredSet.add(value);break}}if(filteredSet.size()===max)break}else for(var i=0,n=array.length;n>i;i++){var value=array[i];if(substrRegex.test(value)&&filteredSet.add(value),filteredSet.size()===max)break}cb(filteredSet.values())},morpheus.Util.autosuggest=function(options){options=$.extend({},{multi:!0,delay:500,suggestWhenEmpty:!0},options),options.$el.on("keydown",function(event){event.keyCode===$.ui.keyCode.TAB&&$(this).data("ui-autocomplete").menu.active&&event.preventDefault()}).autocomplete({minLength:1,delay:options.delay,source:function(request,response){var terms=morpheus.Util.getAutocompleteTokens(request.term);(options.suggestWhenEmpty||terms.length>0)&&options.filter(terms,response)},focus:function(){return!1},select:function(event,ui){if(options.multi){var terms=morpheus.Util.getAutocompleteTokens(this.value);terms.pop();var val=ui.item.value;return terms.push(val),this.value=terms.join(" "),options.select&&options.select(),$(this).autocomplete("close"),!1}options.select&&(options.select(),$(this).autocomplete("close")),13===event.which&&event.stopImmediatePropagation()}}),options.$el.autocomplete("instance")._renderItem=function(ul,item){return $("
  • ").html(item.label).appendTo(ul)},options.suggestWhenEmpty&&options.$el.on("focus",function(){""===$.trim(options.$el.val())&&options.$el.autocomplete("search"," ")}),options.$el.on("keyup",function(e){13===e.which?options.$el.autocomplete("close"):options.suggestWhenEmpty&&""===options.$el.val()&&options.$el.autocomplete("search"," ")})},morpheus.Util.autocomplete=function($el,filterFunction,selectCb,singleTerm,autoclose){$el.on("keydown",function(event){event.keyCode===$.ui.keyCode.TAB&&$(this).data("ui-autocomplete").menu.active&&event.preventDefault()}).autocomplete({minLength:1,delay:1200,source:function(request,response){var terms=morpheus.Util.getAutocompleteTokens(request.term);terms.length>0&&filterFunction(terms.pop(),response)},focus:function(){return!1},select:function(event,ui){if(!singleTerm){var terms=morpheus.Util.getAutocompleteTokens(this.value);terms.pop();var val=ui.item.value;return val.indexOf(" ")>0&&'"'!==val[0]&&(val='"'+val+'"'),terms.push(val),this.value=terms.join(" "),selectCb&&selectCb(),$(this).autocomplete("close"),!1}selectCb&&(selectCb(),$(this).autocomplete("close"))}}),$el.autocomplete("instance")._renderItem=function(ul,item){return $("
  • ").html(item.label).appendTo(ul)},autoclose&&$el.on("keyup",function(e){13===e.which&&$el.autocomplete("close")})},morpheus.Util.showDialog=function($el,title,options){var $dialog=$("
    ");$el.appendTo($dialog),$dialog.appendTo($(document.body)),options||(options={}),$dialog.dialog({width:670,height:590,title:title,close:function(event,ui){$dialog.remove(),options.close&&options.close()}})},morpheus.Util.sheetToArray=function(sheet,delim){for(var r=XLSX.utils.decode_range(sheet["!ref"]),rows=[],R=r.s.r;R<=r.e.r;++R){for(var row=[],C=r.s.c;C<=r.e.c;++C){var val=sheet[XLSX.utils.encode_cell({c:C,r:R})];if(val){var txt=String(XLSX.utils.format_cell(val));row.push(txt)}else row.push("")}rows.push(delim?row.join(delim):row)}return rows},morpheus.Util.linesToObjects=function(lines){for(var header=lines[0],array=[],nfields=header.length,i=1,length=lines.length;length>i;i++){for(var line=lines[i],obj={},f=0;nfields>f;f++){var value=line[f],field=header[f];obj[field]=value}array.push(obj)}return array},morpheus.Util.xlsxTo2dArray=function(data){var workbook=XLSX.read(data,{type:"binary",cellFormula:!1,cellHTML:!1}),sheetNames=workbook.SheetNames,worksheet=workbook.Sheets[sheetNames[0]],lines=morpheus.Util.sheetToArray(worksheet);return lines},morpheus.Util.xlsxTo1dArray=function(data){var workbook=XLSX.read(data,{type:"binary",cellFormula:!1,cellHTML:!1}),sheetNames=workbook.SheetNames,worksheet=workbook.Sheets[sheetNames[0]],lines=morpheus.Util.sheetToArray(worksheet," ");return lines},morpheus.Util.hashCode=function(val){var h=0;if(val.length>0)for(var i=0;i(None)'),_.each(values,function(val){html.push('")}),html.join("")},morpheus.Util.rankIndexArray=function(index){for(var rank=[],n=index.length,j=0;n>j;j++)rank[index[j]]=j+1;return rank},morpheus.Util.indexSort=function(array,ascending){var pairs=[];return array.forEach(function(value,index){pairs.push({value:value,index:index})}),morpheus.Util.indexSortPairs(pairs,ascending)},morpheus.Util.indexSortPairs=function(array,ascending){ascending?array.sort(function(a,b){return a.valuei;i++)if(!comparator(array1[i],array2[i]))return!1;return!0},morpheus.Util._intFormat="undefined"!=typeof d3?d3.format(",i"):function(d){return""+Math.round(d)},morpheus.Util.intFormat=function(n){return morpheus.Util._intFormat(n)},morpheus.Util._nf="undefined"!=typeof d3?d3.format(".4f"):function(d){return""+d},morpheus.Util.nf=function(n){var str=1>n&&n>-1&&void 0!==n.toPrecision?n.toPrecision(4):morpheus.Util._nf(n);return morpheus.Util.removeTrailingZerosInFraction(str)},morpheus.Util.createNumberFormat=function(nfractionDigits){var d3Formatter=d3.format("."+nfractionDigits+"f"),f=function(value){var str=d3Formatter(value);return morpheus.Util.removeTrailingZerosInFraction(str)};return f},morpheus.Util.formatObject=function(value){return _.isNumber(value)?morpheus.Util.nf(value):value},morpheus.Util.arrayToString=function(array,sep){for(var s=[],i=0,length=array.length;length>i;i++)s.push(morpheus.Util.formatObject(array[i]));return s.join(sep)},morpheus.Util.wrapNumber=function(value,object){var n=new Number(value);return n.toObject=function(){return object},n},morpheus.Util.toString=function(value){if(null==value)return"";if(_.isNumber(value))return morpheus.Util.nf(value);if(morpheus.Util.isArray(value)){for(var s=[],i=0,length=value.length;length>i;i++)s.push(morpheus.Util.formatObject(value[i]));return s.join(", ")}return""+value},morpheus.Util.removeTrailingZerosInFraction=function(str){var index=str.lastIndexOf(".");if(-1!==index){for(var len=str.length,zeros=len,i=len-1;i>index&&"0"==str[i];i--,zeros--);if(zeros===index+1)return str.substring(0,index);if(len>zeros)return str.substring(0,index)+str.substring(index,zeros)}return str},morpheus.Util.s=function(n){return 1===n?"":"s"},morpheus.Util.create2dArray=function(rows,columns){for(var array2d=[],i=0;rows>i;i++){for(var array=[],j=0;columns>j;j++)array[j]=NaN;array2d.push(array)}return array2d},morpheus.Util.escapeRegex=function(value){return value.replace(/[*]/g,".*").replace(/[-[\]{}()+?,\\^$|#\s]/g,"\\$&")},morpheus.Util.getAutocompleteTokens=function(text){if(text=$.trim(text),""===text)return[];for(var inQuote=!1,tokens=[],currentToken=[],i=0,length=text.length;length>i;i++){var c=text[i];'"'===c?(inQuote=!inQuote,currentToken.push(c)):" "!==c&&" "!==c||inQuote?currentToken.push(c):(tokens.push(currentToken.join("")),currentToken=[])}return tokens.push(currentToken.join("")),tokens=tokens.map(function(t){return $.trim(t)}),tokens=tokens.filter(function(t){return""!==t})},morpheus.Util.createSearchPredicates=function(options){var tokens=options.tokens,availableFields=options.fields,disableFieldSearch=null==availableFields||0===availableFields.length,fieldRegExp=/\\:/g,predicates=[],defaultIsExactMatch="exact"===options.defaultMatchMode;return _.each(tokens,function(token){var field=null,semi=token.indexOf(":");if(semi>0)if(disableFieldSearch||92===token.charCodeAt(semi-1))token=token.replace(fieldRegExp,":");else{var possibleToken=$.trim(token.substring(semi+1)),possibleField=$.trim(token.substring(0,semi));possibleField.length>0&&'"'===possibleField[0]&&'"'===possibleField[possibleField.length-1]?possibleField=possibleField.substring(1,possibleField.length-1):possibleField.length>0&&'"'===possibleField[0]&&'"'===possibleToken[possibleToken.length-1]&&'"'!==possibleToken[0]&&(possibleField=possibleField.substring(1,possibleField.length),possibleToken='"'+possibleToken),-1!==availableFields.indexOf(possibleField)&&(token=possibleToken,field=possibleField)}var isNot=!1;"-"===token[0]&&(token=token.substring(1),isNot=!0);var predicate,range=token.indexOf("..");if(-1!==range){var min=parseFloat(token.substring(0,range)),max=parseFloat(token.substring(range+2));predicate=new morpheus.Util.NumberRangePredicate(field,min,max)}else'"'===token[0]&&'"'===token[token.length-1]?(token=token.substring(1,token.length-1),predicate=new morpheus.Util.ExactTermPredicate(field,token)):predicate=-1!==token.indexOf("*")?new morpheus.Util.RegexPredicate(field,token):defaultIsExactMatch?new morpheus.Util.ExactTermPredicate(field,token):new morpheus.Util.RegexPredicate(field,token);predicates.push(isNot?new morpheus.Util.NotPredicate(predicate):predicate)}),predicates},morpheus.Util.createRegExpStringToMatchText=function(text){var tokens=morpheus.Util.getAutocompleteTokens(text);if(0===tokens.length)return null;var regex=[];return _.each(tokens,function(token){'"'===token[0]&&'"'===token[token.length-1]?(token=token.substring(1,token.length-1),regex.push("^"+morpheus.Util.escapeRegex(token)+"$")):regex.push(morpheus.Util.escapeRegex(token))}),"("+regex.join("|")+")"},morpheus.Util.createRegExpToMatchText=function(text){var s=morpheus.Util.createRegExpStringToMatchText(text);return null==s?null:new RegExp(s,"i")},morpheus.Util.reorderArray=function(array,index){for(var newArray=[],i=0;i1?s.substring(1):""},morpheus.Util.splitLines=function(lines){for(var tab=new RegExp(" "),tokens=[],i=0,nlines=lines.length;nlines>i;i++){var line=lines[i];""!==line&&tokens.push(line.split(tab))}return tokens},morpheus.Util.readLines=function(fileOrUrl){var isFile=fileOrUrl instanceof File,isString="string"==typeof fileOrUrl||fileOrUrl instanceof String,name=morpheus.Util.getFileName(fileOrUrl),ext=morpheus.Util.getExtension(name),deferred=$.Deferred();if(isString)if("xlsx"===ext){var oReq=new XMLHttpRequest;oReq.open("GET",fileOrUrl,!0),oReq.responseType="arraybuffer",oReq.onload=function(oEvent){var arrayBuffer=oReq.response;if(!arrayBuffer)throw"not found";for(var data=new Uint8Array(arrayBuffer),arr=[],i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);var bstr=arr.join(""),lines=morpheus.Util.xlsxTo1dArray(bstr);deferred.resolve(lines)},oReq.send(null)}else $.ajax({url:fileOrUrl}).done(function(text,status,xhr){deferred.resolve(morpheus.Util.splitOnNewLine(text))});else if(isFile){var reader=new FileReader;reader.onload=function(event){deferred.resolve("xlsx"===ext?morpheus.Util.xlsxTo1dArray(event.target.result):morpheus.Util.splitOnNewLine(event.target.result))},"xlsx"===ext?reader.readAsBinaryString(fileOrUrl):reader.readAsText(fileOrUrl)}else deferred.resolve(fileOrUrl);return deferred},morpheus.Util.createValueToIndices=function(array,field){var map=new morpheus.Map;return _.each(array,function(item){var key=item[field],values=map.get(key);void 0===values&&(values=[],map.set(key,values)),values.push(item)}),map},morpheus.Util.splitOnNewLine=function(text,commentChar){var commentCharCode=void 0!==commentChar?commentChar.charCodeAt(0):void 0,lines=text.split(/\n/);if(1===lines.length){var tmp=text.split(/\r/);tmp.length>1&&(lines=tmp)}for(var rows=[],i=0,nlines=lines.length;nlines>i;i++){var line=lines[i].trim();""!==line&&(void 0!==commentCharCode?line.charCodeAt(0)!==commentCharCode&&rows.push(line):rows.push(line))}return rows},morpheus.Util.ContainsPredicate=function(field,text){this.field=field,text=text.toLowerCase(),this.text=text},morpheus.Util.ContainsPredicate.prototype={accept:function(value){return value.toLowerCase&&-1!==value.toLowerCase().indexOf(this.text)},getText:function(){return this.text},getField:function(){return this.field},isNumber:function(){return!1},toString:function(){return"ContainsPredicate "+this.field+":"+this.text}},morpheus.Util.ExactTermPredicate=function(field,term){this.field=field,term=term.toLowerCase(),this.text=term},morpheus.Util.ExactTermPredicate.prototype={accept:function(value){return value.toLowerCase&&value.toLowerCase()===this.text},getField:function(){return this.field},getText:function(){return this.text},isNumber:function(){return!1},toString:function(){return"ExactTermPredicate "+this.field+":"+this.text}},morpheus.Util.RegexPredicate=function(field,text){this.field=field,this.text=text,this.regex=new RegExp(morpheus.Util.escapeRegex(text),"i")},morpheus.Util.RegexPredicate.prototype={accept:function(value){return this.regex.test(value)},getField:function(){return this.field},getText:function(){return this.text},isNumber:function(){return!1},toString:function(){return"RegexPredicate "+this.field+":"+this.regex}},morpheus.Util.NumberRangePredicate=function(field,min,max){this.field=field,this.min=min,this.max=max},morpheus.Util.NumberRangePredicate.prototype={accept:function(value){return value>=this.min&&value<=this.max},getField:function(){return this.field},getText:function(){return this.min+".."+this.max},isNumber:function(){return!0},toString:function(){return"NumberRangePredicate "+this.field+":"+this.min+"..."+this.max}},morpheus.Util.NotPredicate=function(p){this.p=p},morpheus.Util.NotPredicate.prototype={accept:function(value){return!this.p.accept(value)},getField:function(){return this.p.getField()},getText:function(){return this.p.getText()},isNumber:function(){return this.p.isNumber()},toString:function(){return"NotPredicate "+this.p}},morpheus.Events=function(){},morpheus.Events.prototype={on:function(evtStr,handler){if(!handler)throw Error("Handler not specified");this.eventListeners||(this.eventListeners={});var n,event,parts,baseEvent,name,events=evtStr.split(" "),len=events.length;for(n=0;len>n;n++)event=events[n],parts=event.split("."),baseEvent=parts[0],name=parts[1]||"",this.eventListeners[baseEvent]||(this.eventListeners[baseEvent]=[]),this.eventListeners[baseEvent].push({name:name,handler:handler});return this},trigger:function(eventType,evt){this.eventListeners||(this.eventListeners={}),evt||(evt={}),evt.type=eventType,evt.source||(evt.source=this);var events=this.eventListeners[eventType];if(events)for(var len=events.length,i=0;len>i;i++)events[i].handler.apply(this,[evt]);return this},off:function(evtStr,handler){this.eventListeners||(this.eventListeners={});var n,t,event,parts,baseEvent,name,events=(evtStr||"").split(" "),len=events.length;if(!evtStr)for(t in this.eventListeners)this._off(t,null,handler);for(n=0;len>n;n++)if(event=events[n],parts=event.split("."),baseEvent=parts[0],name=parts[1],baseEvent)this.eventListeners[baseEvent]&&this._off(baseEvent,name,handler);else for(t in this.eventListeners)this._off(t,name,handler);return this},_off:function(type,name,handler){var i,evtName,evtListeners=this.eventListeners[type];for(i=0;ii;i++)if(this.array[i]!==other[i])return!1;return!0},getArray:function(){return this.array}},morpheus.Map=function(){this.map={},this.n=0},morpheus.Map.prototype={toString:function(){var s=[];return this.forEach(function(value,key){s.length>0&&s.push(", "),s.push(key),s.push("="),s.push(value)}),s.join("")},keys:function(){var keys=[];for(var key in this.map){var pair=this.map[key];keys.push(pair.key)}return keys},size:function(){return this.n},equals:function(m){if(m.size()!==this.size())return!1;var ret=!0;try{this.forEach(function(value,key){if(value!==m.get(key))throw ret=!1,"break"})}catch(e){}return ret},setAll:function(map){var _this=this;map.forEach(function(value,key){_this.set(key,value)})},set:function(key,value){var skey="\x00"+key,previous=this.map[skey];void 0===previous&&this.n++,this.map[skey]={key:key,value:value}},forEach:function(callback){for(var key in this.map){var pair=this.map[key];callback(pair.value,pair.key)}},values:function(){var values=[];for(var key in this.map){var pair=this.map[key];values.push(pair.value)}return values},get:function(key){var skey="\x00"+key,pair=this.map[skey];return void 0!==pair?pair.value:void 0},clear:function(){this.map={},this.n=0},remove:function(key){var skey="\x00"+key,pair=this.map[skey];return void 0!==pair?(delete this.map[skey],this.n--,pair.value):void 0},has:function(key){var skey="\x00"+key;return void 0!==this.map[skey]}},morpheus.Set=function(){this._map=new morpheus.Map},morpheus.Set.prototype={toString:function(){var s=[];return this.forEach(function(key){s.length>0&&s.push(", "),s.push(key)}),s.join("")},size:function(){return this._map.size()},equals:function(m){return this._map.equals(m)},forEach:function(callback){this._map.forEach(function(value,key){callback(key)})},add:function(value){this._map.set(value,!0)},values:function(){var values=[];return this._map.forEach(function(value,key){values.push(key)}),values},clear:function(){this._map.clear()},remove:function(key){this._map.remove(key)},has:function(key){return this._map.has(key)}},morpheus.BufferedReader=function(buffer){if(this.buffer=buffer,this.bufferLength=buffer.length,this.index=0,"undefined"!=typeof TextDecoder){var textDecoder=new TextDecoder;this.decoder=function(buf,start,end){return textDecoder.decode(buf.subarray(start,end))}}else this.decoder=function(buf,start,end){for(var s="",i=start;end>i;i++)s+=String.fromCharCode(buffer[i]);return s}},morpheus.BufferedReader.prototype={readLine:function(){var index=this.index,bufferLength=this.bufferLength;if(index>=bufferLength)return null;for(var buffer=this.buffer,start=index,end=start;bufferLength>index;index++){var c=buffer[index];if(10===c||13===c){end=index,index===bufferLength-1||10!==buffer[index+1]&&13!==buffer[index+1]||index++,index++;break}}return this.index=index,start===end&&index===bufferLength?String(this.decoder(this.buffer,start,bufferLength)):String(this.decoder(this.buffer,start,end))}},morpheus.BufferedReader.getArrayBuffer=function(fileOrUrl,callback){var isString="string"==typeof fileOrUrl||fileOrUrl instanceof String;if(isString){var oReq=new XMLHttpRequest;oReq.open("GET",fileOrUrl,!0),oReq.responseType="arraybuffer",oReq.onload=function(oEvent){callback(null,oReq.response)},oReq.onerror=function(oEvent){callback(oEvent)},oReq.onreadystatechange=function(oEvent){4===oReq.readyState&&200!==oReq.status&&(oReq.onload=null,oReq.onerror=null,callback(404===oReq.status?new Error(fileOrUrl+" not found."):new Error("Unable to read "+fileOrUrl+".")))},oReq.send(null)}else{var reader=new FileReader;reader.onload=function(event){callback(null,event.target.result)},reader.onerror=function(event){callback(event)},reader.readAsArrayBuffer(fileOrUrl)}},morpheus.ClsReader=function(){},morpheus.ClsReader.prototype={read:function(lines){var regex=/[ ,]+/,header=lines[0].split(regex);if(header.length<3)throw new Error("Header line needs three numbers");var headerNumbers=[];try{for(var i=0;3>i;i++)headerNumbers[i]=parseInt($.trim(header[i]))}catch(e){throw new Error("Header line element "+i+" is not a number")}if(headerNumbers[0]<=0)throw new Error("Header line missing first number, number of data points");if(headerNumbers[1]<=0)throw new Error("Header line missing second number, number of classes");var numClasses=headerNumbers[1],classDefinitionLine=(headerNumbers[0],lines[1]);classDefinitionLine=classDefinitionLine.substring(classDefinitionLine.indexOf("#")+1);var classNames=$.trim(classDefinitionLine).split(regex);if(classNames.lengthi;i++)i>0&&pw.push(" "),pw.push(valueToIndex.get(vector.getValue(i)));return pw.push("\n"),pw.join("")}},morpheus.ContentRangeNetworkInputStream=function(url,options){this.options=options||{},this.url=url,this.bytePosition=0,this.chunkSize=options.chunkSize||10485760,this.bytesRead=0,this.fileSize=-1,this.read()},morpheus.ContentRangeNetworkInputStream.prototype={read:function(){var _this=this,oReq=new XMLHttpRequest;oReq.open("GET",this.url,!0),oReq.responseType="arraybuffer",oReq.onload=function(oEvent){var arrayBuffer=oReq.response,byteArray=new Uint8Array(arrayBuffer),contentRange=oReq.getResponseHeader("Content-Range"),index=contentRange.lastIndexOf("/");_this.fileSize=parseInt(contentRange.substring(index+1)),_this.bytePosition+=byteArray.length,_this.bytesRead+=byteArray.length,_this.options.bytes(byteArray),_this.bytesRead<_this.fileSize?_this.read():_this.options.complete()};var end=this.bytePosition+this.chunkSize-1;-1!==this.fileSize&&(end=Math.min(end,this.fileSize-1)),oReq.setRequestHeader("Range","bytes="+this.bytePosition+"-"+end),oReq.setRequestHeader("If-None-Match","webkit-no-cache"),oReq.onerror=function(){console.log("error")},oReq.send(null)}},morpheus.FetchNetworkInputStream=function(url,options){function pump(reader){return reader.read().then(function(result){if(result.done)return void options.complete();var chunk=result.value;return bytesRead+=chunk.byteLength,options.bytes(chunk),pump(reader)})}var bytesRead=0;fetch(url).then(function(res){return pump(res.body.getReader())})},morpheus.FileInputStream=function(file,options){var _this=this;this.options=options||{},this.reader=new FileReader,this.reader.onloadend=function(evt){if(evt.target.readyState===FileReader.DONE){var arrayBuffer=evt.target.result,byteArray=new Uint8Array(arrayBuffer);_this.bytePosition+=byteArray.length,_this.bytesRead+=byteArray.length,_this.options.bytes(byteArray),_this.bytesRead<_this.fileSize?_this.read():options.complete()}},this.file=file,this.bytePosition=0,this.chunkSize=options.chunkSize||10485760,this.bytesRead=0,this.fileSize=file.size,this.read()},morpheus.FileInputStream.prototype={read:function(){var end=this.bytePosition+this.chunkSize;end=Math.min(end,this.fileSize);var blob=this.file.slice(this.bytePosition,end);this.reader.readAsArrayBuffer(blob)}},morpheus.GctReader=function(){},morpheus.GctReader.prototype={getFormatName:function(){return"gct"},read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{callback(null,_this._read(name,new morpheus.BufferedReader(new Uint8Array(arrayBuffer))))}catch(x){x.stack&&console.log(x.stack),callback(x)}})},_read:function(datasetName,reader){var versionLine=$.trim(reader.readLine());if(""===versionLine)throw new Error("Missing version line");var tab=/\t/,dimensionsLine=reader.readLine();if(null==dimensionsLine)throw new Error("No dimensions specified");var columnNamesLine=reader.readLine();if(null==columnNamesLine)throw new Error("No column annotations");var version=2;"#1.2"===versionLine?version=2:"#1.3"===versionLine?version=3:console.log("Unknown version: assuming version 2");var dimensions=dimensionsLine.split(/[ \t]/),numRowAnnotations=1,numColumnAnnotations=0,nrows=parseInt(dimensions[0]),ncols=parseInt(dimensions[1]);if(3==version&&(numRowAnnotations=parseInt(dimensions[2]),numColumnAnnotations=parseInt(dimensions[3])),0>=nrows||0>=ncols)throw new Error("Number of rows and columns must be greater than 0.");var columnNamesArray=columnNamesLine.split(tab); -if(2==version){var expectedColumns=ncols+2;if(columnNamesArray.length!==expectedColumns)throw new Error("Expected "+(expectedColumns-2)+" column names, but read "+(columnNamesArray.length-2)+" column names.")}var name=columnNamesArray[0],slashIndex=name.lastIndexOf("/"),columnIdFieldName="id",rowIdFieldName="id";-1!=slashIndex&&slashIndexj;j++){var index=j+numRowAnnotations+1,columnName=indexj;j++){var columnName=columnNamesArray[j+numRowAnnotations+1];columnIds.setValue(j,String(columnName))}var rowAnnotationVectors=[dataset.getRowMetadata().add(rowIdFieldName)];if(3===version)for(var j=0;numRowAnnotations>j;j++){var rowMetadataName=""===columnNamesArray[1]?"description":columnNamesArray[j+1];rowAnnotationVectors.push(dataset.getRowMetadata().add(rowMetadataName))}else rowAnnotationVectors.push(dataset.getRowMetadata().add(columnNamesArray[1]));var dataColumnStart=numRowAnnotations+1;if(numColumnAnnotations>0)for(var columnAnnotationIndex=0;numColumnAnnotations>columnAnnotationIndex;columnAnnotationIndex++)for(var tokens=reader.readLine().split(tab),metadataName=tokens[0],v=dataset.getColumnMetadata().add(metadataName),j=0;ncols>j;j++)v.setValue(j,String(tokens[j+dataColumnStart]));for(var nonEmptyDescriptionFound=!1,numRowAnnotationsPlusOne=numRowAnnotations+1,rowIndex=0,nrows=dataset.getRowCount();nrows>rowIndex;rowIndex++){var s=reader.readLine();if(null===s)throw new Error("Missing data rows.");var tokens=s.split(tab);if(2===version){rowAnnotationVectors[0].setValue(rowIndex,String(tokens[0]));var desc=tokens[1];nonEmptyDescriptionFound||(nonEmptyDescriptionFound=""!==desc),rowAnnotationVectors[1].setValue(rowIndex,String(desc))}else for(var rowAnnotationIndex=0;numRowAnnotationsPlusOne>rowAnnotationIndex;rowAnnotationIndex++){var rowMetadataValue=tokens[rowAnnotationIndex];rowAnnotationVectors[rowAnnotationIndex].setValue(rowIndex,String(rowMetadataValue))}for(var columnIndex=0;ncols>columnIndex;columnIndex++){var token=tokens[columnIndex+dataColumnStart];dataset.setValue(rowIndex,columnIndex,parseFloat(token))}}if(2!==version||nonEmptyDescriptionFound||dataset.getRowMetadata().remove(1),rowIndex!==nrows)throw new Error("Missing data rows");for(var i=1,count=dataset.getRowMetadata().getMetadataCount();count>i;i++)morpheus.VectorUtil.maybeConvertStringToNumber(dataset.getRowMetadata().get(i));for(var i=1,count=dataset.getColumnMetadata().getMetadataCount();count>i;i++)morpheus.VectorUtil.maybeConvertStringToNumber(dataset.getColumnMetadata().get(i));return dataset}},morpheus.GctWriter=function(){},morpheus.GctWriter.idFirst=function(model){for(var fields=["id","Id","pr_id"],idIndex=-1,i=0;ii;i++)i!==idIndex&&(order[j++]=i);return new morpheus.MetadataModelColumnView(model,order)}return model},morpheus.GctWriter.prototype={toString:function(value){return morpheus.Util.toString(value)},write:function(dataset){var pw=[],rowMetadata=morpheus.GctWriter.idFirst(dataset.getRowMetadata()),columnMetadata=morpheus.GctWriter.idFirst(dataset.getColumnMetadata());return this.writeHeader(rowMetadata,columnMetadata,pw),this.writeData(dataset,rowMetadata,pw),pw.join("")},writeData:function(dataset,rowMetadata,pw){for(var ncols=dataset.getColumnCount(),rowMetadataCount=rowMetadata.getMetadataCount(),i=0,rows=dataset.getRowCount();rows>i;i++){for(var rowMetadataIndex=0;rowMetadataCount>rowMetadataIndex;rowMetadataIndex++){rowMetadataIndex>0&&pw.push(" ");var value=rowMetadata.get(rowMetadataIndex).getValue(i);null!==value&&pw.push(this.toString(value))}for(var j=0;ncols>j;j++){pw.push(" ");var value=dataset.getValue(i,j);pw.push(morpheus.Util.nf(value))}pw.push("\n")}},writeHeader:function(rowMetadata,columnMetadata,pw){var rows=rowMetadata.getItemCount(),ncols=columnMetadata.getItemCount();pw.push("#1.3\n");var rowMetadataCount=rowMetadata.getMetadataCount();pw.push(rows+" "+ncols+" "+(rowMetadataCount-1)+" "+(columnMetadata.getMetadataCount()-1)),pw.push("\n");for(var i=0;rowMetadataCount>i;i++){i>0&&pw.push(" ");var name=rowMetadata.get(i).getName();0===i&&name!==columnMetadata.get(0).getName()&&(name=name+"/"+columnMetadata.get(0).getName()),pw.push(name)}for(var j=0;ncols>j;j++)pw.push(" "),pw.push(this.toString(columnMetadata.get(0).getValue(j)));pw.push("\n");for(var columnMetadataIndex=1,metadataSize=columnMetadata.getMetadataCount();metadataSize>columnMetadataIndex;columnMetadataIndex++){pw.push(columnMetadata.get(columnMetadataIndex).getName());for(var i=1;rowMetadataCount>i;i++)pw.push(" "),pw.push("na");for(var j=0;ncols>j;j++){pw.push(" ");var value=columnMetadata.get(columnMetadataIndex).getValue(j);null!=value&&pw.push(this.toString(value))}pw.push("\n")}}},morpheus.GctWriter12=function(){this.options={rowDescription:"Description",rowId:"id",columnId:"id"}},morpheus.GctWriter12.prototype={toString:function(value){return morpheus.Util.toString(value)},write:function(dataset){var pw=[],rows=dataset.getRowCount(),columns=dataset.getColumnCount(),version="#1.2";pw.push(version),pw.push("\n"),pw.push(rows+" "+columns),pw.push("\n");var rowMetadata=morpheus.GctWriter.idFirst(dataset.getRowMetadata()),columnMetadata=morpheus.GctWriter.idFirst(dataset.getColumnMetadata());pw.push("Name"),pw.push(" "),pw.push("Description");var columnIds=columnMetadata.getByName(this.options.columnId);columnIds||(columnIds=columnMetadata.get(0));for(var j=0;columns>j;j++)pw.push(" "),pw.push(this.toString(columnIds.getValue(j)));var rowIds=rowMetadata.get(this.options.rowId);rowIds||(rowIds=rowMetadata.get(0));var rowDescriptions=rowMetadata.getByName(this.options.rowDescription);null==rowDescriptions&&rowMetadata.getMetadataCount()>1&&(rowDescriptions=rowMetadata.get(1));for(var i=0;rows>i;i++){pw.push("\n"),pw.push(this.toString(rowIds.getValue(i))),pw.push(" ");var rowDescription=null!=rowDescriptions?rowDescriptions.getValue(i):null;null!=rowDescription&&pw.push(this.toString(rowDescription));for(var j=0;columns>j;j++)pw.push(" "),pw.push(morpheus.Util.nf(dataset.getValue(i,j)))}return pw.push("\n"),pw.join("")}},morpheus.GisticReader=function(){},morpheus.GisticReader.prototype={read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{callback(null,_this._read(name,new morpheus.BufferedReader(new Uint8Array(arrayBuffer))))}catch(x){x.stack&&console.log(x.stack),callback(x)}})},_read:function(datasetName,reader){for(var s,tab=/\t/,header=morpheus.Util.trim(reader.readLine()).split(tab),ncols=header.length-9,matrix=[],rowIds=[],qValues=[];null!==(s=reader.readLine());)if(s=morpheus.Util.trim(s),""!==s){var tokens=s.split(tab);if("Actual Copy Change Given"===tokens[8]){var array=new Float32Array(ncols);matrix.push(array),rowIds.push(String($.trim(tokens[1]))),qValues.push(parseFloat(tokens[5]));for(var j=9;ncols>=j;j++){var token=tokens[j];array[j-9]=parseFloat(token)}}}for(var dataset=new morpheus.Dataset({name:datasetName,rows:matrix.length,columns:ncols,array:matrix,dataType:"Float32"}),columnIds=dataset.getColumnMetadata().add("id"),j=0;ncols>j;j++)columnIds.setValue(j,String(header[j+9]));return dataset.getRowMetadata().add("id").array=rowIds,dataset.getRowMetadata().add("q_value").array=qValues,dataset}},morpheus.GmtDatasetReader=function(){},morpheus.GmtDatasetReader.prototype={getFormatName:function(){return"gmt"},read:function(fileOrUrl,callback){var name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{callback(null,morpheus.DatasetUtil.geneSetsToDataset(name,(new morpheus.GmtReader).read(new morpheus.BufferedReader(new Uint8Array(arrayBuffer)))))}catch(x){callback(x)}})}},morpheus.GmtReader=function(){},morpheus.GmtReader.prototype={read:function(reader){for(var s,sets=[],tab=/\t/;null!=(s=reader.readLine());)if(""!==s&&"#"!==s[0]){var tokens=s.split(tab),name=tokens[0].trim(),description=tokens.length>1?tokens[1].trim():"";"BLANK"===description&&(description="");for(var ids=[],i=2;ii;i++)s+=String.fromCharCode(buf[i]);return s};var inputStreamOptions={bytes:function(buf){_this.str+=_this.decoder(buf,0,buf.length);var split=morpheus.LineReader._split(_this.str);if(split.lines.length>0){for(var lines=split.lines,i=0,nlines=lines.length;nlines>i;i++){var line=lines[i];""!==line&&options.line(line)}_this.str=split.remainder}},complete:function(){options.complete()}};isString?new morpheus.FetchNetworkInputStream(fileOrUrl,inputStreamOptions):new morpheus.FileInputStream(fileOrUrl,inputStreamOptions)},morpheus.LineReader._split=function(str){for(var lines=[],start=0,length=str.length,i=0;length>i;i++){var c=str[i];if("\n"===c||"\r"===c){var end=i;length-1>i&&"\n"===str[i+1]&&i++,lines.push(str.substring(start,end)),start=i+1}}return{lines:lines,remainder:length>=start?str.substring(start,length):""}},morpheus.MafFileReader=function(){this.geneFilter=null},morpheus.MafFileReader.summarizeMutations=function(dataset){var v=dataset.getRowMetadata().add("mutation_summary");v.getProperties().set(morpheus.VectorKeys.FIELDS,["Synonymous","In Frame Indel","Other Non-Synonymous","Missense","Splice Site","Frame Shift","Nonsense"]),v.getProperties().set(morpheus.VectorKeys.DATA_TYPE,"[number]"),v.getProperties().set(morpheus.VectorKeys.RECOMPUTE_FUNCTION,!0),v.getProperties().set(morpheus.VectorKeys.FUNCTION,function(view){for(var bins=new Int8Array(7),i=0,size=view.size();size>i;i++){var value=view.getValue(i);value>0&&bins[value-1]++}return bins})},morpheus.MafFileReader.getField=function(fieldNames,fieldNameToIndex,options){options=$.extend({},{remove:!0,lc:!1},options);for(var name,index,i=0;ii;i++){var name=header[i].toLowerCase();headerToIndex[name]=i}for(var fields=["Hugo_Symbol","Chromosome","Start_position","Reference_Allele","Tumor_Seq_Allele2","Variant_Classification","Protein_Change","ccf_hat","tumor_f","i_tumor_f","Tumor_Sample_Barcode","tumor_name","Tumor_Sample_UUID"],fieldNameToIndex={},i=0,length=fields.length;length>i;i++){var index=headerToIndex[fields[i].toLowerCase()];void 0!==index&&(fieldNameToIndex[fields[i].toLowerCase()]=index)}var ccfColumnName,ccfColumnIndex,sampleField=morpheus.MafFileReader.getField(["Tumor_Sample_Barcode","tumor_name","Tumor_Sample_UUID"],fieldNameToIndex,{lc:!0,remove:!0}),sampleColumnName=sampleField.name,sampleIdColumnIndex=sampleField.index,tumorFractionField=morpheus.MafFileReader.getField(["ccf_hat","tumor_f","i_tumor_f"],fieldNameToIndex,{lc:!0,remove:!0});void 0!==tumorFractionField&&(ccfColumnName=tumorFractionField.name,ccfColumnIndex=tumorFractionField.index);var chromosomeColumn=fieldNameToIndex["Chromosome".toLowerCase()],startPositionColumn=fieldNameToIndex["Start_position".toLowerCase()],refAlleleColumn=fieldNameToIndex["Reference_Allele".toLowerCase()],tumorAllelColumn=fieldNameToIndex["Tumor_Seq_Allele2".toLowerCase()],proteinChangeColumn=fieldNameToIndex["Protein_Change".toLowerCase()],geneSymbolColumn=fieldNameToIndex["Hugo_Symbol".toLowerCase()],variantColumnIndex=headerToIndex["Variant_Classification".toLowerCase()];if(void 0===variantColumnIndex)throw new Error("Variant_Classification not found");fields=[];var geneFields=[];for(var key in fieldNameToIndex)key!==sampleColumnName&&key!==ccfColumnName&&geneFields.push(key),fields.push(key);for(var s,geneColumnIndices=geneFields.map(function(field){return fieldNameToIndex[field]}),geneSymbolToIndex=(geneColumnIndices.length,new morpheus.Map),sampleIdToIndex=new morpheus.Map,variantMatrix=[],ccfMatrix=[];null!==(s=reader.readLine());){var tokens=s.split(tab),sample=String(tokens[sampleIdColumnIndex]),columnIndex=sampleIdToIndex.get(sample);void 0===columnIndex&&(columnIndex=sampleIdToIndex.size(),sampleIdToIndex.set(sample,columnIndex));var gene=String(tokens[geneSymbolColumn]);if(null==this.geneFilter||this.geneFilter.has(tokens[geneSymbolColumn])){var rowIndex=geneSymbolToIndex.get(gene);void 0===rowIndex&&(rowIndex=geneSymbolToIndex.size(),geneSymbolToIndex.set(gene,rowIndex));var value=String(tokens[variantColumnIndex]),variantCode=morpheus.MafFileReader.VARIANT_MAP.get(value);void 0===variantCode&&(variantCode=3);var variantObject={},Protein_Change=tokens[proteinChangeColumn];Protein_Change&&(variantObject.Protein=String(Protein_Change)),variantObject.__v=variantCode,variantObject.Variant=value,variantObject.Mutation=String(tokens[chromosomeColumn])+":"+String(tokens[startPositionColumn])+" "+String(tokens[refAlleleColumn])+" > "+String(tokens[tumorAllelColumn]);var wrappedVariant=morpheus.Util.wrapNumber(variantCode,variantObject),variantRow=variantMatrix[rowIndex];void 0===variantRow&&(variantRow=[],variantMatrix[rowIndex]=variantRow);var ccf=-1,priorCcf=-1;if(void 0!==ccfColumnIndex){var ccfRow=ccfMatrix[rowIndex];void 0===ccfRow&&(ccfRow=[],ccfMatrix[rowIndex]=ccfRow),ccf=parseFloat(tokens[ccfColumnIndex]),priorCcf=ccfRow[columnIndex]||-1}var priorValue=variantRow[columnIndex]||-1;variantCode>priorValue?(variantRow[columnIndex]=wrappedVariant,void 0!==ccfColumnIndex&&(ccfRow[columnIndex]=ccf)):variantCode===priorValue&&ccf>priorCcf&&(variantRow[columnIndex]=wrappedVariant,ccfRow[columnIndex]=ccf)}}var dataset=new morpheus.Dataset({name:datasetName,array:variantMatrix,dataType:"object",rows:geneSymbolToIndex.size(),columns:sampleIdToIndex.size()}),columnIds=dataset.getColumnMetadata().add("id");sampleIdToIndex.forEach(function(index,id){columnIds.setValue(index,id)});var rowIds=dataset.getRowMetadata().add("id");geneSymbolToIndex.forEach(function(index,id){rowIds.setValue(index,id)});for(var i=0,nrows=dataset.getRowCount(),ncols=dataset.getColumnCount();nrows>i;i++)for(var j=0;ncols>j;j++)void 0===variantMatrix[i][j]&&(variantMatrix[i][j]=0);if(void 0!==ccfColumnIndex&&dataset.addSeries({dataType:"object",name:"ccf",array:ccfMatrix}),this.geneFilter){for(var orderVector=dataset.getRowMetadata().add("order"),i=0,size=orderVector.size();size>i;i++){var gene=rowIds.getValue(i),order=this.geneFilter.get(gene);orderVector.setValue(i,order)}var project=new morpheus.Project(dataset);project.setRowSortKeys([new morpheus.SortKey("order",morpheus.SortKey.SortOrder.ASCENDING)],!0);var tmp=project.getSortedFilteredDataset();project=new morpheus.Project(tmp);var columnIndices=morpheus.Util.seq(tmp.getColumnCount());columnIndices.sort(function(a,b){for(var i=0,nrows=tmp.getRowCount();nrows>i;i++)for(var seriesIndex=0,nseries=tmp.getSeriesCount();nseries>seriesIndex;seriesIndex++){var f1=tmp.getValue(i,a,seriesIndex);isNaN(f1)&&(f1=Number.NEGATIVE_INFINITY),f1=f1.valueOf();var f2=tmp.getValue(i,b,seriesIndex);isNaN(f2)&&(f2=Number.NEGATIVE_INFINITY),f2=f2.valueOf();var returnVal=f1===f2?0:f2>f1?1:-1;if(0!==returnVal)return returnVal}return 0}),dataset=new morpheus.SlicedDatasetView(dataset,null,columnIndices)}return morpheus.MafFileReader.summarizeMutations(dataset),morpheus.MafFileReader.summarizeMutations(new morpheus.TransposedDatasetView(dataset)),dataset},read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{callback(null,_this._getGeneLevelDataset(name,new morpheus.BufferedReader(new Uint8Array(arrayBuffer))))}catch(err){callback(err)}})}},morpheus.SegTabReader=function(){this.regions=null},morpheus.SegTabReader.binByRegion=function(dataset,regions){var chromosomeVector=dataset.getRowMetadata().getByName("Chromosome"),startVector=dataset.getRowMetadata().getByName("Start_bp"),endVector=dataset.getRowMetadata().getByName("End_bp"),collapsedDataset=new morpheus.Dataset({name:dataset.getName(),rows:regions.length,columns:dataset.getColumnCount(),dataType:"Float32"});morpheus.DatasetUtil.fill(collapsedDataset,NaN);for(var regionIdVector=collapsedDataset.getRowMetadata().add("id"),newChromosomeVector=collapsedDataset.getRowMetadata().add("chromosome"),newStartVector=collapsedDataset.getRowMetadata().add("start"),newEndVector=collapsedDataset.getRowMetadata().add("end"),nsegmentsVector=collapsedDataset.getRowMetadata().add("nsegments"),nseries=dataset.getSeriesCount(),series=1;nseries>series;series++)collapsedDataset.addSeries({name:dataset.getName(series),dataType:"Float32"});var summarizeFunction=morpheus.Mean;collapsedDataset.setColumnMetadata(dataset.getColumnMetadata());for(var regionIndex=0;regionIndexi;i++){var chromosome=chromosomeVector.getValue(i),start=startVector.getValue(i),end=endVector.getValue(i);region.chromosome==chromosome&&start>=region.start&&end<=region.end&&rowIndices.push(i)}if(rowIndices.length>0)for(var slice=morpheus.DatasetUtil.slicedView(dataset,rowIndices,null),columnView=new morpheus.DatasetColumnView(slice),j=0;jseries;series++)columnView.setSeriesIndex(series),collapsedDataset.setValue(regionIndex,j,summarizeFunction(columnView),series)}nsegmentsVector.setValue(regionIndex,rowIndices.length),regionIdVector.setValue(regionIndex,region.id),newChromosomeVector.setValue(regionIndex,region.chromosome),newStartVector.setValue(regionIndex,region.start),newEndVector.setValue(regionIndex,region.end)}return collapsedDataset},morpheus.SegTabReader.prototype={getFormatName:function(){return"seg"},setRegions:function(regions){this.regions=regions},_read:function(datasetName,reader){for(var tab=/\t/,header=reader.readLine().split(tab),fieldNameToIndex={},i=0,length=header.length;length>i;i++){var name=header[i].toLowerCase();fieldNameToIndex[name]=i}var ccfColumnName,ccfColumnIndex,sampleField=morpheus.MafFileReader.getField(["pair_id","Tumor_Sample_Barcode","tumor_name","Tumor_Sample_UUID","Sample"],fieldNameToIndex,{remove:!1,lc:!0}),sampleIdColumnIndex=(sampleField.name,sampleField.index),tumorFractionField=morpheus.MafFileReader.getField(["ccf_hat","tumor_f","i_tumor_f"],fieldNameToIndex,{remove:!1,lc:!0});void 0!==tumorFractionField&&(ccfColumnName=tumorFractionField.name,ccfColumnIndex=tumorFractionField.index);for(var s,chromosomeColumn=fieldNameToIndex.Chromosome,startPositionColumn=morpheus.MafFileReader.getField(["Start_bp","Start"],fieldNameToIndex,{remove:!1,lc:!0}).index,endPositionColumn=morpheus.MafFileReader.getField(["End_bp","End"],fieldNameToIndex,{remove:!1,lc:!0}).index,valueField=morpheus.MafFileReader.getField(["tau","Segment_Mean"],fieldNameToIndex,{remove:!1,lc:!0}).index,matrix=[],ccfMatrix=[],sampleIdToIndex=new morpheus.Map,chromosomeStartEndToIndex=new morpheus.Map;null!==(s=reader.readLine());)if(""!==s){var tokens=s.split(tab),sample=String(tokens[sampleIdColumnIndex]),columnIndex=sampleIdToIndex.get(sample);void 0===columnIndex&&(columnIndex=sampleIdToIndex.size(),sampleIdToIndex.set(sample,columnIndex));var rowId=new morpheus.Identifier([String(tokens[chromosomeColumn]),String(tokens[startPositionColumn]),String(tokens[endPositionColumn])]),rowIndex=chromosomeStartEndToIndex.get(rowId);void 0===rowIndex&&(rowIndex=chromosomeStartEndToIndex.size(),chromosomeStartEndToIndex.set(rowId,rowIndex));var value=parseFloat(String(tokens[valueField]));value=isNaN(value)?value:morpheus.Log2(value)-1;var matrixRow=matrix[rowIndex];void 0===matrixRow&&(matrixRow=[],matrix[rowIndex]=matrixRow,void 0!==ccfColumnIndex&&(ccfMatrix[rowIndex]=[])),matrixRow[columnIndex]=value,void 0!==ccfColumnIndex&&(ccfMatrix[rowIndex][columnIndex]=parseFloat(tokens[ccfColumnIndex]))}var dataset=new morpheus.Dataset({name:datasetName,array:matrix,dataType:"object",rows:chromosomeStartEndToIndex.size(),columns:sampleIdToIndex.size()}),columnIds=dataset.getColumnMetadata().add("id");sampleIdToIndex.forEach(function(index,id){columnIds.setValue(index,id)});var chromosomeVector=dataset.getRowMetadata().add("Chromosome"),startVector=dataset.getRowMetadata().add("Start_bp"),endVector=dataset.getRowMetadata().add("End_bp");return chromosomeStartEndToIndex.forEach(function(index,id){chromosomeVector.setValue(index,id.getArray()[0]),startVector.setValue(index,id.getArray()[1]),endVector.setValue(index,id.getArray()[2])}),void 0!==ccfColumnIndex&&dataset.addSeries({dataType:"object",name:"ccf",array:ccfMatrix}),null!=this.regions&&this.regions.length>0&&(dataset=morpheus.SegTabReader.binByRegion(dataset,this.regions)),dataset},read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){err?callback(err):callback(null,_this._read(name,new morpheus.BufferedReader(new Uint8Array(arrayBuffer))))})}},morpheus.TcgaUtil=function(){},morpheus.TcgaUtil.DISEASE_STUDIES={LAML:"Acute Myeloid Leukemia",ACC:"Adrenocortical carcinoma",BLCA:"Bladder Urothelial Carcinoma",LGG:"Brain Lower Grade Glioma",BRCA:"Breast invasive carcinoma",CESC:"Cervical squamous cell carcinoma and endocervical adenocarcinoma",CHOL:"Cholangiocarcinoma",LCML:"Chronic Myelogenous Leukemia",COAD:"Colon adenocarcinoma",CNTL:"Controls",ESCA:"Esophageal carcinoma ",FPPP:"FFPE Pilot Phase II",GBM:"Glioblastoma multiforme",HNSC:"Head and Neck squamous cell carcinoma",KICH:"Kidney Chromophobe",KIRC:"Kidney renal clear cell carcinoma",KIRP:"Kidney renal papillary cell carcinoma",LIHC:"Liver hepatocellular carcinoma",LUAD:"Lung adenocarcinoma",LUSC:"Lung squamous cell carcinoma",DLBC:"Lymphoid Neoplasm Diffuse Large B-cell Lymphoma",MESO:"Mesothelioma",MISC:"Miscellaneous",OV:"Ovarian serous cystadenocarcinoma",PAAD:"Pancreatic adenocarcinoma",PCPG:"Pheochromocytoma and Paraganglioma",PRAD:"Prostate adenocarcinoma",READ:"Rectum adenocarcinoma",SARC:"Sarcoma",SKCM:"Skin Cutaneous Melanoma",STAD:"Stomach adenocarcinoma",TGCT:"Testicular Germ Cell Tumors",THYM:"Thymoma",THCA:"Thyroid carcinoma",UCS:"Uterine Carcinosarcoma",UCEC:"Uterine Corpus Endometrial Carcinoma",UVM:"Uveal Melanoma",KIPAN:"Pan-Kidney Cohort",COADREAD:"Colonrectal adenocarcinoma",GBMLGG:"Glioma",STES:"Stomach and Esophageal Carcinoma"},morpheus.TcgaUtil.SAMPLE_TYPES={"01":"Primary solid Tumor","02":"Recurrent Solid Tumor","03":"Primary Blood Derived Cancer - Peripheral Blood","04":"Recurrent Blood Derived Cancer - Bone Marrow","05":"Additional - New Primary","06":"Metastatic","07":"Additional Metastatic","08":"Human Tumor Original Cells","09":"Primary Blood Derived Cancer - Bone Marrow",10:"Blood Derived Normal",11:"Solid Tissue Normal",12:"Buccal Cell Normal",13:"EBV Immortalized Normal",14:"Bone Marrow Normal",20:"Control Analyte",40:"Recurrent Blood Derived Cancer - Peripheral Blood",50:"Cell Lines",60:"Primary Xenograft Tissue",61:"Cell Line Derived Xenograft Tissue"},morpheus.TcgaUtil.barcode=function(s){var sampleType,tokens=s.split("-"),id=tokens[2];return tokens.length>3?(sampleType=tokens[3],sampleType.length>2&&(sampleType=sampleType.substring(0,2)),sampleType=morpheus.TcgaUtil.SAMPLE_TYPES[sampleType]):sampleType=morpheus.TcgaUtil.SAMPLE_TYPES["01"],{id:id.toLowerCase(),sampleType:sampleType}},morpheus.TcgaUtil.getDataset=function(options){function setIdAndSampleType(dataset){for(var idVector=dataset.getColumnMetadata().get(0),participantId=dataset.getColumnMetadata().add("participant_id"),sampleType=dataset.getColumnMetadata().add("sample_type"),i=0,size=idVector.size();size>i;i++){var barcode=morpheus.TcgaUtil.barcode(idVector.getValue(i));void 0!==barcode.sampleType?(idVector.setValue(i,barcode.id+"-"+barcode.sampleType),sampleType.setValue(i,barcode.sampleType)):idVector.setValue(i,barcode.id),participantId.setValue(i,barcode.id)}}var promises=[],datasets=[],returnDeferred=$.Deferred();if(options.mrna){var mrna=$.Deferred();promises.push(mrna),(new morpheus.TxtReader).read(options.mrna,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),mrna.resolve()})}var sigGenesLines;if(options.mutation){var mutation=$.Deferred();promises.push(mutation),(new morpheus.MafFileReader).read(options.mutation,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),mutation.resolve()});var sigGenesAnnotation=morpheus.Util.readLines(options.sigGenes);sigGenesAnnotation.done(function(lines){sigGenesLines=lines}),promises.push(sigGenesAnnotation)}if(options.gistic){var gistic=$.Deferred();promises.push(gistic),(new morpheus.GisticReader).read(options.gistic,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),gistic.resolve()})}if(options.gisticGene){var gisticGene=$.Deferred();promises.push(gisticGene),new morpheus.TxtReader({dataColumnStart:3}).read(options.gisticGene,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),gisticGene.resolve()})}if(options.seg){var seg=$.Deferred();promises.push(seg),(new morpheus.SegTabReader).read(options.seg,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),seg.resolve()})}if(options.rppa){var rppa=$.Deferred();promises.push(rppa),(new morpheus.TxtReader).read(options.rppa,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),rppa.resolve()})}if(options.methylation){var methylation=$.Deferred();promises.push(methylation),new morpheus.TxtReader({}).read(options.methylation,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),methylation.resolve()})}var mrnaClustPromise=morpheus.Util.readLines(options.mrnaClust);promises.push(mrnaClustPromise);var sampleIdToClusterId;mrnaClustPromise.done(function(lines){sampleIdToClusterId=new morpheus.Map;for(var lineNumber=0;-1!==lines[lineNumber].indexOf("SampleName");)lineNumber++;for(var tab=/\t/;lineNumbermaxColumns&&(maxColumns=datasets[i].getColumnCount(),maxIndex=i),"mutations_merged.maf"===datasets[i].getName()&&(maxColumns=Number.MAX_VALUE,maxIndex=i);var datasetIndices=[];datasetIndices.push(maxIndex);for(var i=0;ij;j++)clusterIdVector.setValue(j,sampleIdToClusterId.get(idVector.getValue(j)));if(options.mutation){var sourceToIndices=morpheus.VectorUtil.createValueToIndicesMap(datasetToReturn.getRowMetadata().getByName("Source")),mutationDataset=new morpheus.SlicedDatasetView(datasetToReturn,sourceToIndices.get("mutations_merged.maf"));(new morpheus.OpenFileTool).annotate(sigGenesLines,mutationDataset,!1,null,"id","gene",["q"]);var qVector=mutationDataset.getRowMetadata().getByName("q"),qValueVector=mutationDataset.getRowMetadata().getByName("q_value");null==qValueVector&&(qValueVector=mutationDataset.getRowMetadata().add("q_value"));for(var i=0,size=qValueVector.size();size>i;i++)qValueVector.setValue(i,qVector.getValue(i));mutationDataset.getRowMetadata().remove(morpheus.MetadataUtil.indexOf(mutationDataset.getRowMetadata(),"q"))}annotationDef&&annotationCallbacks.forEach(function(f){f(datasetToReturn)}),returnDeferred.resolve(datasetToReturn)}),returnDeferred},morpheus.TxtReader=function(options){this.options=$.extend({},{dataRowStart:1,dataColumnStart:1},options)},morpheus.TxtReader.prototype={read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{callback(null,_this._read(name,new morpheus.BufferedReader(new Uint8Array(arrayBuffer))))}catch(x){callback(x)}})},_read:function(datasetName,reader){var tab=/\t/,header=morpheus.Util.trim(reader.readLine()).split(tab);if(this.options.dataRowStart>1)for(var i=1;ii;i++)arrayOfRowArrays.push([]);for(;null!==(s=reader.readLine());)if(s=morpheus.Util.trim(s),""!==s){var array=new Float32Array(ncols);matrix.push(array);for(var tokens=s.split(tab),j=0;dataColumnStart>j;j++)arrayOfRowArrays[j].push(String(tokens[j]));for(var j=dataColumnStart;ncols>=j;j++){var token=tokens[j];array[j-dataColumnStart]=parseFloat(token)}}for(var dataset=new morpheus.Dataset({name:datasetName,rows:matrix.length,columns:ncols,array:matrix,dataType:"Float32"}),columnIds=dataset.getColumnMetadata().add("id"),i=0,j=dataColumnStart;ncols>i;i++,j++)columnIds.setValue(i,String(header[j]));var rowIdVector=dataset.getRowMetadata().add("id");rowIdVector.array=arrayOfRowArrays[0];for(var i=1;dataColumnStart>i;i++){var v=dataset.getRowMetadata().add(header[i]);v.array=arrayOfRowArrays[i]}return dataset}},morpheus.XlsxDatasetReader=function(){},morpheus.XlsxDatasetReader.prototype={read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{for(var data=new Uint8Array(arrayBuffer),arr=[],i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);var bstr=arr.join("");callback(null,_this._read(name,bstr))}catch(x){callback(x)}})},_read:function(datasetName,bstr){for(var lines=morpheus.Util.xlsxTo2dArray(bstr),nrows=lines.length-1,header=lines[0],ncols=header.length-1,dataset=new morpheus.Dataset({name:datasetName,rows:nrows,columns:ncols}),columnIds=dataset.getColumnMetadata().add("id"),j=1;ncols>=j;j++)columnIds.setValue(j-1,header[j]);for(var rowIds=dataset.getRowMetadata().add("id"),i=1;i=j;j++){var token=tokens[j],value=parseFloat(token);dataset.setValue(i-1,j-1,value)}}return dataset}},morpheus.VectorAdapter=function(v){if(null==v)throw"vector is null";this.v=v},morpheus.VectorAdapter.prototype={setValue:function(i,value){this.v.setValue(i,value)},getValue:function(i){return this.v.getValue(i)},getProperties:function(){return this.v.getProperties()},size:function(){return this.v.size()},getName:function(){return this.v.getName()},setName:function(name){this.v.setName(name)}},morpheus.AbstractDataset=function(name,rows,columns){this.seriesNames=[name],this.seriesArrays=[],this.seriesDataTypes=[],this.rows=rows,this.columns=columns,this.rowMetadataModel=new morpheus.MetadataModel(rows),this.columnMetadataModel=new morpheus.MetadataModel(columns)},morpheus.AbstractDataset.prototype={setRowMetadata:function(metadata){this.rowMetadataModel=metadata},setColumnMetadata:function(metadata){this.columnMetadataModel=metadata},getName:function(seriesIndex){return this.seriesNames[seriesIndex||0]},setName:function(seriesIndex,name){this.seriesNames[seriesIndex||0]=name},getRowMetadata:function(){return this.rowMetadataModel},getColumnMetadata:function(){return this.columnMetadataModel},getRowCount:function(){return this.rows},getColumnCount:function(){return this.columns},getValue:function(rowIndex,columnIndex,seriesIndex){},setValue:function(rowIndex,columnIndex,value,seriesIndex){},addSeries:function(options){},getSeriesCount:function(){return this.seriesArrays.length},getDataType:function(rowIndex,seriesIndex){return this.seriesDataTypes[seriesIndex]},toString:function(){return this.getName()}},morpheus.SignalToNoise=function(list1,list2){var m1=morpheus.Mean(list1),m2=morpheus.Mean(list2),s1=Math.sqrt(morpheus.Variance(list1,m1)),s2=Math.sqrt(morpheus.Variance(list2,m2));return(m1-m2)/(s1+s2)},morpheus.SignalToNoise.toString=function(){return"Signal to noise"},morpheus.createSignalToNoiseAdjust=function(percent){percent=percent||.2;var f=function(list1,list2){var m1=morpheus.Mean(list1),m2=morpheus.Mean(list2),s1=Math.sqrt(morpheus.Variance(list1,m1)),s2=Math.sqrt(morpheus.Variance(list2,m2));return s1=morpheus.SignalToNoise.thresholdStandardDeviation(m1,s1,percent),s2=morpheus.SignalToNoise.thresholdStandardDeviation(m2,s2,percent),(m1-m2)/(s1+s2)};return f.toString=function(){return"Signal to noise (adjust standard deviation)"},f},morpheus.SignalToNoise.thresholdStandardDeviation=function(mean,standardDeviation,percent){var returnValue=standardDeviation,absMean=Math.abs(mean),minStdev=percent*absMean;return minStdev>standardDeviation&&(returnValue=minStdev),percent>returnValue&&(returnValue=percent),returnValue},morpheus.createContingencyTable=function(listOne,listTwo,groupingValue){(null==groupingValue||isNaN(groupingValue))&&(groupingValue=1);for(var aHit=0,aMiss=0,j=0,size=listOne.size();size>j;j++){var val=listOne.getValue(j);isNaN(val)||(val>=groupingValue?aHit++:aMiss++)}for(var bHit=0,bMiss=0,j=0,size=listTwo.size();size>j;j++){var val=listTwo.getValue(j);isNaN(val)||(val>=groupingValue?bHit++:bMiss++)}var N=aHit+aMiss+bHit+bMiss,K=aHit+bHit,n=aHit+aMiss,k=aHit,a=k,b=K-k,c=n-k,d=N+k-n-K;return[a,b,c,d]},morpheus.FisherExact=function(listOne,listTwo){var abcd=morpheus.createContingencyTable(listOne,listTwo,1);return morpheus.FisherExact.fisherTest(abcd[0],abcd[1],abcd[2],abcd[3])},morpheus.createFisherExact=function(groupingValue){var f=function(listOne,listTwo){var abcd=morpheus.createContingencyTable(listOne,listTwo,groupingValue);return morpheus.FisherExact.fisherTest(abcd[0],abcd[1],abcd[2],abcd[3])};return f},morpheus.FisherExact.phyper=function(a,b,c,d){return Math.exp(morpheus.FisherExact.logFactorial(a+b)+morpheus.FisherExact.logFactorial(c+d)+morpheus.FisherExact.logFactorial(a+c)+morpheus.FisherExact.logFactorial(b+d)-(morpheus.FisherExact.logFactorial(a)+morpheus.FisherExact.logFactorial(b)+morpheus.FisherExact.logFactorial(c)+morpheus.FisherExact.logFactorial(d)+morpheus.FisherExact.logFactorial(a+b+c+d)))},morpheus.FisherExact.logFactorials=[0,0,.6931471805599453,1.791759469228055,3.1780538303479458,4.787491742782046,6.579251212010101,8.525161361065415,10.60460290274525,12.801827480081469,15.104412573075516,17.502307845873887,19.987214495661885,22.552163853123425,25.19122118273868,27.89927138384089,30.671860106080672,33.50507345013689,36.39544520803305,39.339884187199495,42.335616460753485,45.38013889847691,48.47118135183523,51.60667556776438,54.78472939811232,58.00360522298052,61.261701761002,64.55753862700634,67.88974313718154,71.25703896716801],morpheus.FisherExact.logFactorial=function(k){if(k>=30){var C0=.9189385332046728,C1=.08333333333333333,C3=-.002777777777777778,C5=.0007936507936507937,C7=-.0005952380952380953,r=1/k,rr=r*r;return(k+.5)*Math.log(k)-k+C0+r*(C1+rr*(C3+rr*(C5+rr*C7)))}return morpheus.FisherExact.logFactorials[k]},morpheus.FisherExact.fisherTest=function(a,b,c,d){for(var p=morpheus.FisherExact.phyper(a,b,c,d),sum=p,_a=0,n=a+b+c+d;n>=_a;_a++){var _b=a+b-_a,_c=a+c-_a,_d=b+d-_b;if(_a!==a&&_b>=0&&_c>=0&&_d>=0){var _p=morpheus.FisherExact.phyper(_a,_b,_c,_d);p>=_p&&(sum+=_p)}}return Math.min(1,sum)},morpheus.FisherExact.toString=function(){return"Fisher Exact Test"},morpheus.FoldChange=function(list1,list2){var m1=morpheus.Mean(list1),m2=morpheus.Mean(list2);return m1/m2},morpheus.FoldChange.toString=function(){return"Fold Change"},morpheus.TTest=function(list1,list2){var m1=morpheus.Mean(list1),m2=morpheus.Mean(list2),s1=Math.sqrt(morpheus.Variance(list1,m1)),s2=Math.sqrt(morpheus.Variance(list2,m2)),n1=morpheus.CountNonNaN(list1),n2=morpheus.CountNonNaN(list2);return(m1-m2)/Math.sqrt(s1*s1/n1+s2*s2/n2)},morpheus.TTest.toString=function(){return"T-Test"},morpheus.Spearman=function(list1,list2){for(var flist1=[],flist2=[],i=0,n=list1.size();n>i;i++){var v1=list1.getValue(i),v2=list2.getValue(i);isNaN(v1)||isNaN(v2)||(flist1.push(v1),flist2.push(v2))}var rank1=morpheus.Ranking(flist1),rank2=morpheus.Ranking(flist2);return morpheus.Pearson(new morpheus.Vector("",rank1.length).setArray(rank1),new morpheus.Vector("",rank2.length).setArray(rank2))},morpheus.Spearman.toString=function(){return"Spearman rank correlation"},morpheus.WeightedMean=function(weights,values){for(var numerator=0,denom=0,i=0,size=values.size();size>i;i++){var value=values.getValue(i);if(!isNaN(value)){var weight=weights.getValue(i);isNaN(weight)||(numerator+=weight*value,denom+=weight)}}return 0==denom?NaN:numerator/denom},morpheus.WeightedMean.toString=function(){return"Weighted average"},morpheus.createOneMinusMatrixValues=function(dataset){var f=function(listOne,listTwo){return 1-dataset.getValue(listOne.getIndex(),listTwo.getIndex())};return f.toString=function(){return"One minus matrix values (for a precomputed similarity matrix)"},f},morpheus.Pearson=function(listOne,listTwo){for(var sumx=0,sumxx=0,sumy=0,sumyy=0,sumxy=0,N=0,i=0,size=listOne.size();size>i;i++){var x=listOne.getValue(i),y=listTwo.getValue(i);isNaN(x)||isNaN(y)||(sumx+=x,sumxx+=x*x,sumy+=y,sumyy+=y*y,sumxy+=x*y,N++)}var numr=sumxy-sumx*sumy/N,denr=Math.sqrt((sumxx-sumx*sumx/N)*(sumyy-sumy*sumy/N));return 0==denr?1:numr/denr},morpheus.Pearson.toString=function(){return"Pearson correlation"},morpheus.Jaccard=function(listOne,listTwo){for(var orCount=0,andCount=0,i=0,size=listOne.size();size>i;i++){var xval=listOne.getValue(i),yval=listTwo.getValue(i);if(!isNaN(xval)&&!isNaN(yval)){var x=xval>0,y=yval>0;x&&y?andCount++:(x||y)&&orCount++}}return 0===orCount?1:1-andCount/orCount},morpheus.Jaccard.toString=function(){return"Jaccard distance"},morpheus.Cosine=function(listOne,listTwo){for(var sumX2=0,sumY2=0,sumXY=0,i=0,size=listOne.size();size>i;i++){var x=listOne.getValue(i),y=listTwo.getValue(i);isNaN(x)||isNaN(y)||(sumX2+=x*x,sumY2+=y*y,sumXY+=x*y)}return sumXY/Math.sqrt(sumX2*sumY2)},morpheus.Cosine.toString=function(){return"Cosine similarity"},morpheus.Euclidean=function(x,y){for(var dist=0,i=0,size=x.size();size>i;++i){var x_i=x.getValue(i),y_i=y.getValue(i);isNaN(x_i)||isNaN(y_i)||(dist+=(x_i-y_i)*(x_i-y_i))}return Math.sqrt(dist)},morpheus.Euclidean.toString=function(){return"Euclidean distance"},morpheus.OneMinusFunction=function(f){var dist=function(x,y){return 1-f(x,y)};return dist.toString=function(){var s=f.toString();return"One minus "+s[0].toLowerCase()+s.substring(1)},dist},morpheus.Dataset=function(options){morpheus.AbstractDataset.call(this,options.name,options.rows,options.columns),null==options.dataType&&(options.dataType="Float32"),this.seriesArrays.push(options.array?options.array:morpheus.Dataset.createArray(options)),this.seriesDataTypes.push(options.dataType)},morpheus.Dataset.toJson=function(dataset,options){options=options||{};for(var data=[],i=0,nrows=dataset.getRowCount();nrows>i;i++){var row=[];data.push(row);for(var j=0,ncols=dataset.getColumnCount();ncols>j;j++)row[j]=dataset.getValue(i,j)}var vectorToJson=function(vector){for(var array=[],i=0,size=vector.size();size>i;i++)array[i]=vector.getValue(i);return{name:vector.getName(),array:array}},metadataToJson=function(metadata,fields){var filter,vectors=[];fields&&(filter=new morpheus.Set,fields.forEach(function(field){filter.add(field)}));for(var i=0,count=metadata.getMetadataCount();count>i;i++){var v=metadata.get(i);filter?filter.has(v.getName())&&vectors.push(vectorToJson(v)):vectors.push(vectorToJson(v))}return vectors};return{rows:dataset.getRowCount(),columns:dataset.getColumnCount(),seriesArrays:[data],seriesNames:[dataset.getName()],rowMetadataModel:{vectors:metadataToJson(dataset.getRowMetadata(),options.rowFields)},columnMetadataModel:{vectors:metadataToJson(dataset.getColumnMetadata(),options.columnFields)}}},morpheus.Dataset.fromJson=function(options){options.array=options.seriesArrays[0];var dataset=new morpheus.Dataset(options);return dataset.seriesNames=options.seriesNames,options.rowMetadataModel&&options.rowMetadataModel.vectors.forEach(function(v){var vector=new morpheus.Vector(v.name,dataset.getRowCount());vector.array=v.array,dataset.rowMetadataModel.vectors.push(vector)}),options.columnMetadataModel&&options.columnMetadataModel.vectors.forEach(function(v){var vector=new morpheus.Vector(v.name,dataset.getColumnCount());vector.array=v.array,dataset.columnMetadataModel.vectors.push(vector)}),dataset},morpheus.Dataset.createArray=function(options){var array=[];if(null==options.dataType||"Float32"===options.dataType)for(var i=0;ii;i++)for(var j=0,columns=dataset.getColumnCount();columns>j;j++){var d=dataset.getValue(i,j);isNaN(d)||(min=Math.min(min,d))}return min},morpheus.DatasetUtil.slicedView=function(dataset,rows,columns){return new morpheus.SlicedDatasetView(dataset,rows,columns)},morpheus.DatasetUtil.transposedView=function(dataset){return dataset instanceof morpheus.TransposedDatasetView?dataset.getDataset():new morpheus.TransposedDatasetView(dataset)},morpheus.DatasetUtil.max=function(dataset){for(var max=-Number.MAX_VALUE,i=0,rows=dataset.getRowCount();rows>i;i++)for(var j=0,columns=dataset.getColumnCount();columns>j;j++){var d=dataset.getValue(i,j);isNaN(d)||(max=Math.max(max,d))}return max},morpheus.DatasetUtil.getDatasetReader=function(ext,options){var datasetReader;return"maf"===ext?(datasetReader=new morpheus.MafFileReader,options&&options.mafGeneFilter&&datasetReader.setGeneFilter(options.mafGeneFilter)):"gct"===ext?datasetReader=new morpheus.GctReader:"gmt"===ext?datasetReader=new morpheus.GmtDatasetReader:"xlsx"===ext?datasetReader=new morpheus.XlsxDatasetReader:"segtab"===ext||"seg"===ext?(datasetReader=new morpheus.SegTabReader,options&&options.regions&&datasetReader.setRegions(options.regions)):datasetReader="txt"===ext||"tsv"===ext||"csv"===ext?new morpheus.TxtReader:new morpheus.GctReader,datasetReader},morpheus.DatasetUtil.readDatasetArray=function(options){var retDef=$.Deferred(),loadedDatasets=[],promises=[];return _.each(options.dataset,function(option,i){var p=option.dataset.file?morpheus.DatasetUtil.read(option.dataset.file,option.dataset.options):morpheus.DatasetUtil.read(option.dataset);p.index=i,p.done(function(dataset){loadedDatasets[this.index]=dataset}),p.fail(function(err){var message=["Error opening "+(option.dataset.file?morpheus.Util.getFileName(option.dataset.file):morpheus.Util.getFileName(option.dataset))+"."];err.message&&(message.push("
    Cause: "),message.push(err.message)),retDef.reject(message.join(""))}),promises.push(p)}),0===promises.length&&retDef.reject("No datasets specified."),$.when.apply($,promises).then(function(){var joined;if(loadedDatasets.length>1){joined=new morpheus.JoinedDataset(loadedDatasets[0],loadedDatasets[1],"id","id");for(var i=2;ii;i++)sourceVector.setValue(i,name)}retDef.resolve(joined)}),retDef},morpheus.DatasetUtil.annotate=function(options){var retDef=$.Deferred(),promises=[],functions=[],isColumns=options.isColumns;return _.each(options.annotations,function(ann){if(morpheus.Util.isArray(ann.file))functions.push(function(dataset){(new morpheus.OpenFileTool).annotate(ann.file,dataset,isColumns,null,ann.datasetField,ann.fileField,ann.include)});else{var result=morpheus.Util.readLines(ann.file),fileName=morpheus.Util.getFileName(ann.file),deferred=$.Deferred();promises.push(deferred),result.fail(function(message){deferred.reject(message)}),result.done(function(lines){if(morpheus.Util.endsWith(fileName,".gmt")){var sets=(new morpheus.GmtReader).parseLines(lines);functions.push(function(dataset){(new morpheus.OpenFileTool).annotate(null,dataset,isColumns,sets,ann.datasetField,ann.fileField)}),deferred.resolve()}else morpheus.Util.endsWith(fileName,".cls")?(functions.push(function(dataset){(new morpheus.OpenFileTool).annotateCls(null,dataset,fileName,isColumns,lines)}),deferred.resolve()):(functions.push(function(dataset){(new morpheus.OpenFileTool).annotate(lines,dataset,isColumns,null,ann.datasetField,ann.fileField,ann.include)}),deferred.resolve())})}}),$.when.apply($,promises).then(function(){retDef.resolve(functions)}),retDef},morpheus.DatasetUtil.read=function(fileOrUrl,options){var isFile=fileOrUrl instanceof File,isString=_.isString(fileOrUrl),ext=morpheus.Util.getExtension(morpheus.Util.getFileName(fileOrUrl)),datasetReader=morpheus.DatasetUtil.getDatasetReader(ext,options);if(isString||isFile){var deferred=$.Deferred();if(options&&options.background){var path=morpheus.Util.getScriptPath(),blob=new Blob(["self.onmessage = function(e) {importScripts(e.data.path);var ext = morpheus.Util.getExtension(morpheus.Util.getFileName(e.data.fileOrUrl));var datasetReader = morpheus.DatasetUtil.getDatasetReader(ext, e.data.options);datasetReader.read(e.data.fileOrUrl, function(err,dataset) { self.postMessage(dataset); });}"]),blobURL=window.URL.createObjectURL(blob),worker=new Worker(blobURL);worker.addEventListener("message",function(e){deferred.resolve(morpheus.Dataset.fromJson(e.data)),window.URL.revokeObjectURL(blobURL)},!1),worker.postMessage({path:path,fileOrUrl:fileOrUrl,options:options})}else datasetReader.read(fileOrUrl,function(err,dataset){err?deferred.reject(err):deferred.resolve(dataset)});var pr=deferred.promise();return pr.toString=function(){return""+fileOrUrl},pr}if("function"==typeof fileOrUrl.done)return fileOrUrl;var deferred=$.Deferred();return deferred.resolve(fileOrUrl),deferred.promise()},morpheus.DatasetUtil.toObjectArray=function(dataset,options){var columns=options.columns||[0],columnFields=options.columnFields||["value"];if(columnFields.length!==columns.length)throw"columns.length !== columnFields.length";var metadataFields=options.metadataFields,rowMetadata=dataset.getRowMetadata();metadataFields||(metadataFields=morpheus.MetadataUtil.getMetadataNames(rowMetadata));for(var vectors=morpheus.MetadataUtil.getVectors(rowMetadata,metadataFields),array=[],i=0;ii;i++){var v=metadata.get(i),name=v.getName(),mapped=names[name];mapped&&v.setName(mapped)}};fixNames(dataset.getRowMetadata()),fixNames(dataset.getColumnMetadata());var fix666=function(metadata){for(var i=0,count=metadata.getMetadataCount();count>i;i++){var v=metadata.get(i);if("Dose (µM)"==v.getName())for(var j=0,size=v.size();size>j;j++){var value=v.getValue(j);null!=value&&v.setValue(j,parseFloat(value))}for(var isNumber=!1,j=0,size=v.size();size>j;j++){var value=v.getValue(j);if(null!=value){isNumber=_.isNumber(value);break}}for(var newValue=isNumber||"Dose (µM)"==v.getName()?0:"",j=0,size=v.size();size>j;j++){var value=v.getValue(j);null!=value&&"-666"==value&&v.setValue(j,newValue)}}};fix666(dataset.getRowMetadata()),fix666(dataset.getColumnMetadata());var fixCommas=function(metadata){var regex=/(,)([^ ])/g;_.each(["Lineage","Histology"],function(name){var v=metadata.getByName(name);if(null!=v)for(var i=0,size=v.size();size>i;i++){var val=v.getValue(i);val&&v.setValue(i,val.replace(regex,", $2"))}})};fixCommas(dataset.getRowMetadata()),fixCommas(dataset.getColumnMetadata())},morpheus.DatasetUtil.geneSetsToDataset=function(name,sets){for(var uniqueIds=new morpheus.Map,i=0,length=sets.length;length>i;i++)for(var ids=sets[i].ids,j=0,nIds=ids.length;nIds>j;j++)uniqueIds.set(ids[j],1);for(var uniqueIdsArray=uniqueIds.keys(),dataset=new morpheus.Dataset({name:name,rows:uniqueIdsArray.length,columns:sets.length}),columnIds=dataset.getColumnMetadata().add("id"),i=0,length=sets.length;length>i;i++)columnIds.setValue(i,sets[i].name);for(var rowIds=dataset.getRowMetadata().add("id"),i=0,size=uniqueIdsArray.length;size>i;i++)rowIds.setValue(i,uniqueIdsArray[i]);for(var rowIdToIndex=morpheus.VectorUtil.createValueToIndexMap(rowIds),i=0,length=sets.length;length>i;i++)for(var ids=sets[i].ids,j=0,nIds=ids.length;nIds>j;j++)dataset.setValue(rowIdToIndex.get(ids[j]),i,1);return dataset},morpheus.DatasetUtil.DATASET_FILE_FORMATS='GCT 1.3, GCT 1.2, MAF, GMT, or a tab-delimited text file',morpheus.DatasetUtil.BASIC_DATASET_FILE_FORMATS='GCT 1.3, GCT 1.2, or a tab-delimited text file',morpheus.DatasetUtil.GCT_FILE_FORMAT='GCT 1.3',morpheus.DatasetUtil.ANNOTATION_FILE_FORMATS='an xlsx file, tab-delimited text file, or a GMT file',morpheus.DatasetUtil.DENDROGRAM_FILE_FORMATS='a Newick file',morpheus.DatasetUtil.OPEN_FILE_FORMATS='GCT 1.3, GCT 1.2, MAF, GMT, a tab-delimited text file, or a Newick file',morpheus.DatasetUtil.getRootDataset=function(dataset){for(;dataset.getDataset;)dataset=dataset.getDataset();return dataset},morpheus.DatasetUtil.getSeriesIndex=function(dataset,name){for(var i=0,nseries=dataset.getSeriesCount();nseries>i;i++)if(name===dataset.getName(i))return i;return-1},morpheus.DatasetUtil.getSeriesNames=function(dataset){for(var names=[],i=0,nseries=dataset.getSeriesCount();nseries>i;i++)names.push(dataset.getName(i));return names.sort(function(a,b){return a=a.toLowerCase(),b=b.toLowerCase(),b>a?-1:a===b?0:1}),names},morpheus.DatasetUtil.searchValues=function(dataset,text,cb){if(""!==text){var tokens=morpheus.Util.getAutocompleteTokens(text);if(0!=tokens.length){for(var seriesIndices=[],i=0,nrows=dataset.getRowCount();nrows>i;i++)for(var k=0,nseries=dataset.getSeriesCount();nseries>k;k++)"object"===dataset.getDataType(i,k)&&seriesIndices.push([i,k]);if(0!==seriesIndices.length){var _val;elementSearch:for(var k=0,nseries=seriesIndices.length;nseries>k;k++)for(var pair=seriesIndices[k],j=0,ncols=dataset.getColumnCount();ncols>j;j++){var element=dataset.getValue(pair[0],j,pair[1]);if(null!=element&&element.toObject){_val=element.toObject();break elementSearch}}for(var fields=null==_val?[]:_.keys(_val),predicates=morpheus.Util.createSearchPredicates({tokens:tokens,fields:fields}),npredicates=predicates.length,k=0,nseries=seriesIndices.length;nseries>k;k++)for(var pair=seriesIndices[k],j=0,ncols=dataset.getColumnCount();ncols>j;j++){var matches=!1,element=dataset.getValue(pair[0],j,pair[1]);if(element&&element.toObject)for(var object=element.toObject(),p=0;npredicates>p&&!matches;p++){var predicate=predicates[p],filterColumnName=predicate.getField();if(null!=filterColumnName){var value=object[filterColumnName];if(null!=value&&predicate.accept(value)){if(cb(value,pair[0],j)===!1)return;matches=!0;break}}else for(var name in object){var value=object[name];if(null!=value&&predicate.accept(value)){if(cb(value,pair[0],j)===!1)return;matches=!0;break}}}}}}}},morpheus.DatasetUtil.fill=function(dataset,value,seriesIndex){seriesIndex=seriesIndex||0;for(var i=0,nrows=dataset.getRowCount(),ncols=dataset.getColumnCount();nrows>i;i++)for(var j=0;ncols>j;j++)dataset.setValue(i,j,value,seriesIndex)},morpheus.DatasetUtil.shallowCopy=function(dataset){var rowMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getRowMetadata()),columnMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getColumnMetadata());return dataset.getRowMetadata=function(){return rowMetadataModel},dataset.getColumnMetadata=function(){return columnMetadataModel},dataset},morpheus.DatasetUtil.copy=function(dataset){for(var newDataset=new morpheus.Dataset({name:dataset.getName(),rows:dataset.getRowCount(),columns:dataset.getColumnCount(),dataType:"object"}),seriesIndex=0,nseries=dataset.getSeriesCount();nseries>seriesIndex;seriesIndex++){seriesIndex>0&&newDataset.addSeries({name:dataset.getName(seriesIndex),rows:dataset.getRowCount(),columns:dataset.getColumnCount(),dataType:"object"});for(var i=0,nrows=dataset.getRowCount(),ncols=dataset.getColumnCount();nrows>i;i++)for(var j=0;ncols>j;j++)newDataset.setValue(i,j,dataset.getValue(i,j,seriesIndex),seriesIndex)}var rowMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getRowMetadata()),columnMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getColumnMetadata());return newDataset.getRowMetadata=function(){return rowMetadataModel},newDataset.getColumnMetadata=function(){return columnMetadataModel},newDataset},morpheus.DatasetUtil.toString=function(dataset,value,seriesIndex){seriesIndex=seriesIndex||0;for(var s=[],i=0,nrows=dataset.getRowCount(),ncols=dataset.getColumnCount();nrows>i;i++){for(var j=0;ncols>j;j++)j>0&&s.push(", "),s.push(morpheus.Util.nf(dataset.getValue(i,j,seriesIndex)));s.push("\n")}return s.join("")},morpheus.DatasetUtil.getNonEmptyRows=function(dataset){for(var rowsToKeep=[],i=0,nrows=dataset.getRowCount();nrows>i;i++){for(var keep=!1,j=0,ncols=dataset.getColumnCount();ncols>j;j++){var value=dataset.getValue(i,j);if(!isNaN(value)){keep=!0;break}}keep&&rowsToKeep.push(i)}return rowsToKeep},morpheus.ElementSelectionModel=function(project){this.viewIndices=new morpheus.Set,this.project=project},morpheus.ElementSelectionModel.prototype={click:function(rowIndex,columnIndex,add){var id=new morpheus.Identifier([rowIndex,columnIndex]),isSelected=this.viewIndices.has(id);add?isSelected?this.viewIndices.remove(id):this.viewIndices.add(id):(this.viewIndices.clear(),isSelected||this.viewIndices.add(id)),this.trigger("selectionChanged")},setViewIndices:function(indices){this.viewIndices=indices,this.trigger("selectionChanged")},clear:function(){this.viewIndices=new morpheus.Set},getViewIndices:function(){return this.viewIndices},count:function(){return this.viewIndices.size()},toModelIndices:function(){var project=this.project,modelIndices=[];return this.viewIndices.forEach(function(id){modelIndices.push(project.convertViewRowIndexToModel(id.getArray()[0]),project.convertViewColumnIndexToModel(id.getArray()[1]))}),modelIndices},save:function(){this.modelIndices=this.toModelIndices()},restore:function(){var project=this.project;this.viewIndices=new morpheus.Set;for(var i=0,length=this.modelIndices.length;length>i;i++){var rowIndex=project.convertModelRowIndexToView(this.modelIndices[i][0]),columnIndex=project.convertModelColumnIndexToView(this.modelIndices[i][1]);-1!==rowIndex&&-1!==columnIndex&&this.viewIndices.add(new morpheus.Identifier([rowIndex,columnIndex]))}}},morpheus.Util.extend(morpheus.ElementSelectionModel,morpheus.Events),morpheus.CombinedFilter=function(isAndFilter){this.filters=[],this.isAndFilter=isAndFilter,this.enabledFilters=[],this.name="combined filter"},morpheus.CombinedFilter.prototype={shallowClone:function(){var f=new morpheus.CombinedFilter(this.isAndFilter);return f.filters=this.filters.slice(0),f},toString:function(){ -return this.name},setAnd:function(isAndFilter,notify){this.isAndFilter=isAndFilter,notify&&this.trigger("and",{})},isAnd:function(){return this.isAndFilter},equals:function(f){if(!(f instanceof morpheus.CombinedFilter))return!1;if(this.isAndFilter!==f.isAndFilter)return!1;if(this.filters.length!==f.filters.length)return!1;for(var i=0,length=this.filters.length;length>i;i++)if(!this.filters[i].equals(f.filters[i]))return!1;return!0},add:function(filter,notify){this.filters.push(filter),notify&&this.trigger("add",{filter:filter})},getFilters:function(){return this.filters},get:function(index){return this.filters[index]},indexOf:function(name,type){for(var i=0,length=this.filters.length;length>i;i++)if(this.filters[i].toString()===name&&(null==type?!0:this.filters[i]instanceof type))return i;return-1},remove:function(index,notify){this.filters.splice(index,1),notify&&this.trigger("remove",{index:index})},set:function(index,filter){this.filters[index]=filter},insert:function(index,filter){this.filters.splice(index,0,filter)},clear:function(){this.filters=[]},init:function(dataset){for(var i=0,nfilters=this.filters.length;nfilters>i;i++)this.filters[i].init&&this.filters[i].init(dataset);this.enabledFilters=this.filters.filter(function(filter){return filter.isEnabled()})},accept:function(index){var filters=this.enabledFilters;if(this.isAndFilter){for(var i=0,nfilters=filters.length;nfilters>i;i++)if(filters[i].accept(index)===!1)return!1;return!0}for(var i=0,nfilters=filters.length;nfilters>i;i++)if(filters[i].accept(index))return!0;return!1},isEnabled:function(){return this.enabledFilters.length>0}},morpheus.Util.extend(morpheus.CombinedFilter,morpheus.Events),morpheus.IndexFilter=function(acceptIndicesSet,name){this.acceptIndicesSet=acceptIndicesSet,this.name=name},morpheus.IndexFilter.prototype={enabled:!0,isEnabled:function(){return this.enabled},setAcceptIndicesSet:function(acceptIndicesSet){this.acceptIndicesSet=acceptIndicesSet},setEnabled:function(enabled){this.enabled=enabled},equals:function(filter){return filter instanceof morpheus.IndexFilter&&this.acceptIndicesSet.equals(filter.acceptIndicesSet)},init:function(dataset){},toString:function(){return this.name},accept:function(index){return this.acceptIndicesSet.has(index)}},morpheus.VectorFilter=function(set,maxSetSize,name){this.set=set,this.name=name,this.maxSetSize=maxSetSize},morpheus.VectorFilter.prototype={enabled:!0,isEnabled:function(){return this.enabled&&this.set.size()>0&&this.set.size()!==this.maxSetSize&&null!=this.vector},setEnabled:function(enabled){this.enabled=enabled},equals:function(filter){return filter instanceof morpheus.VectorFilter&&this.name===filter.name},init:function(dataset){this.vector=dataset.getRowMetadata().getByName(this.name)},toString:function(){return this.name},accept:function(index){return this.set.has(this.vector.getValue(index))}},morpheus.NotNullFilter=function(name){this.name=name},morpheus.NotNullFilter.prototype={enabled:!0,isEnabled:function(){return this.enabled&&null!=this.vector},setEnabled:function(enabled){this.enabled=enabled},equals:function(filter){return filter instanceof morpheus.NotNullFilter&&this.name===filter.name},init:function(dataset){this.vector=dataset.getRowMetadata().getByName(this.name)},toString:function(){return this.name},accept:function(index){return null!=this.vector.getValue(index)}},morpheus.RangeFilter=function(min,max,name){this.min=min,this.max=max,this.name=name},morpheus.RangeFilter.prototype={enabled:!0,isEnabled:function(){return this.enabled&&(!isNaN(this.min)||!isNaN(this.max))&&this.vector},setEnabled:function(enabled){this.enabled=enabled},setMin:function(value){this.min=isNaN(value)?-Number.MAX_VALUE:value},setMax:function(value){this.max=isNaN(value)?Number.MAX_VALUE:value},equals:function(filter){return filter instanceof morpheus.RangeFilter&&this.name===filter.name},init:function(dataset){this.vector=dataset.getRowMetadata().getByName(this.name)},toString:function(){return this.name},accept:function(index){var value=this.vector.getValue(index);return value>=this.min&&value<=this.max}},morpheus.TopNFilter=function(n,direction,name){this.n=n,this.direction=direction,this.name=name},morpheus.TopNFilter.TOP=0,morpheus.TopNFilter.BOTTOM=1,morpheus.TopNFilter.TOP_BOTTOM=2,morpheus.TopNFilter.prototype={enabled:!0,isEnabled:function(){return this.enabled&&this.n>0&&this.vector},setEnabled:function(enabled){this.enabled=enabled},setN:function(value){this.n=value},setDirection:function(direction){this.direction=direction},equals:function(filter){return filter instanceof morpheus.TopNFilter&&this.name===filter.name&&this.n===filter.n&&this.direction===filter.direction},init:function(dataset){if(!this.vector){var vector=dataset.getRowMetadata().getByName(this.name);this.vector=vector;for(var set=new morpheus.Set,i=0,size=vector.size();size>i;i++){var value=vector.getValue(i);isNaN(value)||set.add(value)}var values=set.values();values.sort(function(a,b){return a===b?0:b>a?-1:1}),this.sortedValues=values}for(var topAndBottomIndices=[this.sortedValues.length-this.n,this.n-1],i=0;i=topAndBottomValues[0]}:this.direction===morpheus.TopNFilter.BOTTOM?this.f=function(val){return isNaN(val)?!1:val<=topAndBottomValues[1]}:this.f=function(val){return isNaN(val)?!1:val>=topAndBottomValues[0]||val<=topAndBottomValues[1]}},accept:function(index){return this.f(this.vector.getValue(index))},toString:function(){return this.name}},morpheus.AlwaysTrueFilter=function(){},morpheus.AlwaysTrueFilter.prototype={isEnabled:function(){return!1},setEnabled:function(enabled){},equals:function(filter){return filter instanceof morpheus.AlwaysTrueFilter},init:function(dataset){},toString:function(){return"AlwaysTrue"},accept:function(index){return!0}},morpheus.IndexMapper=function(project,isRows){this.project=project,this.isRows=isRows,this.sortKeys=[],this.modelToView=null,this.filteredModelIndices=null,this.filteredSortedModelIndices=null,this.filter=new morpheus.CombinedFilter(!0),this._filter(),this._sort()},morpheus.IndexMapper.prototype={convertModelIndexToView:function(modelIndex){var index=this.modelToView.get(modelIndex);return void 0!==index?index:-1},convertViewIndexToModel:function(viewIndex){return viewIndex=0?this.filteredSortedModelIndices[viewIndex]:-1},convertToView:function(){return this.filteredSortedModelIndices},setFilter:function(filter){this.filter=filter,this._filter(),this._sort()},_filter:function(){var filteredModelIndices,filter=this.filter,dataset=this.getFullDataset();if(null!=filter&&(filter.init(dataset),filter.isEnabled())){filteredModelIndices=[];for(var i=0,nrows=dataset.getRowCount();nrows>i;i++)filter.accept(i)&&filteredModelIndices.push(i)}this.filteredModelIndices=null!=filteredModelIndices?filteredModelIndices:morpheus.Util.seq(dataset.getRowCount())},_sort:function(){var sortKeys=this.sortKeys;if(sortKeys.length>0){for(var dataset=this.getFullDataset(),nkeys=sortKeys.length,i=0;nkeys>i;i++)sortKeys[i].init(dataset,this.filteredSortedModelIndices);this.filteredSortedModelIndices=this.filteredModelIndices.slice(0),this.filteredSortedModelIndices.sort(function(a,b){for(var i=0;nkeys>i;i++){var key=sortKeys[i],comparator=key.getComparator(),val1=key.getValue(a),val2=key.getValue(b),c=comparator(val1,val2);if(0!==c)return c}return 0})}else this.filteredSortedModelIndices=this.filteredModelIndices;for(var modelToView=new morpheus.Map,i=0,length=this.filteredSortedModelIndices.length;length>i;i++)modelToView.set(this.filteredSortedModelIndices[i],i);this.modelToView=modelToView},getFilter:function(){return this.filter},getViewCount:function(){return null==this.getFullDataset()?0:this.filteredSortedModelIndices.length},setSelectedModelIndices:function(selectedModelIndices){this.selectionModel.setSelectedModelIndices(selectedModelIndices)},setSortKeys:function(sortKeys){null==sortKeys&&(sortKeys=[]),this.sortKeys=sortKeys,this._sort()},getFullDataset:function(){var originalDataset=this.project.getFullDataset();return this.isRows?originalDataset:morpheus.DatasetUtil.transposedView(originalDataset)}},morpheus.JoinedDataset=function(dataset1,dataset2,dataset1Field,dataset2Field,sourceFieldName){if(sourceFieldName=sourceFieldName||"Source",this.dataset1Field=dataset1Field,this.dataset2Field=dataset2Field,null==dataset1)throw"dataset1 is null";if(null==dataset2)throw"dataset2 is null";if(dataset1Field){for(var v1=dataset1.getColumnMetadata().getByName(dataset1Field),dataset2ValueToIndex=morpheus.VectorUtil.createValueToIndexMap(dataset2.getColumnMetadata().getByName(dataset2Field)),dataset2ColumnIndices=[],i=0;ii;i++)sourceVector.setValue(i,name);if(!dataset2.getRowMetadata().getByName(sourceFieldName))for(var sourceVector=dataset2.getRowMetadata().add(sourceFieldName),name=dataset2.getName(),i=0,nrows=sourceVector.size();nrows>i;i++)sourceVector.setValue(i,name);for(var i=0,count=dataset1.getRowMetadata().getMetadataCount();count>i;i++){var name=dataset1.getRowMetadata().get(i).getName();null==dataset2.getRowMetadata().getByName(name)&&dataset2.getRowMetadata().add(name)}for(var i=0,count=dataset2.getRowMetadata().getMetadataCount();count>i;i++){var name=dataset2.getRowMetadata().get(i).getName();null==dataset1.getRowMetadata().getByName(name)&&dataset1.getRowMetadata().add(name)}for(var dataset2RowMetadataOrder=[],metadataInDifferentOrder=!1,i=0,count=dataset1.getRowMetadata().getMetadataCount();count>i;i++){var name=dataset1.getRowMetadata().get(i).getName(),index=morpheus.MetadataUtil.indexOf(dataset2.getRowMetadata(),name);dataset2RowMetadataOrder.push(index),index!==i&&(metadataInDifferentOrder=!0)}this.dataset1=dataset1,this.dataset2=dataset2;for(var maxSeriesCount=Math.max(this.dataset1.getSeriesCount(),this.dataset2.getSeriesCount()),i=this.dataset1.getSeriesCount();maxSeriesCount>i;i++)this.dataset1.addSeries({name:this.dataset2.getName(i)});for(var i=this.dataset2.getSeriesCount();maxSeriesCount>i;i++)this.dataset2.addSeries({name:this.dataset1.getName(i)});this.rowMetadata=new morpheus.JoinedMetadataModel(this.dataset1.getRowMetadata(),metadataInDifferentOrder?new morpheus.MetadataModelColumnView(this.dataset2.getRowMetadata(),dataset2RowMetadataOrder):this.dataset2.getRowMetadata())},morpheus.JoinedDataset.prototype={getName:function(seriesIndex){return this.dataset1.getName(seriesIndex)},setName:function(seriesIndex,name){this.dataset1.setName(seriesIndex,name)},getDatasets:function(){return[this.dataset1,this.dataset2]},getDataset1:function(){return this.dataset1},getRowMetadata:function(){return this.rowMetadata},getColumnMetadata:function(){return this.dataset1.getColumnMetadata()},getRowCount:function(){return this.dataset1.getRowCount()+this.dataset2.getRowCount()},getColumnCount:function(){return this.dataset1.getColumnCount()},getValue:function(i,j,seriesIndex){return ii;i++){var v1=this.m1.get(i),v2=this.m2.get(i),v=new morpheus.JoinedVector(v1,v2);v1.getProperties().forEach(function(val,key){morpheus.VectorKeys.COPY_IGNORE.has(key)||v.properties.set(key,val)}),v2.getProperties().forEach(function(val,key){morpheus.VectorKeys.COPY_IGNORE.has(key)||v.properties.set(key,val)}),this.vectors.push(v)}},morpheus.JoinedMetadataModel.prototype={add:function(name){var oldVector,index=morpheus.MetadataUtil.indexOf(this,name);-1!==index&&(oldVector=this.remove(index));var v=new morpheus.Vector(name,this.getItemCount());if(null!=oldVector){oldVector.getProperties().forEach(function(val,key){v.getProperties().set(key,val)});for(var i=0,size=oldVector.size();size>i;i++)v.setValue(i,oldVector.getValue(i))}return this.vectors.push(v),v},getItemCount:function(){return this.m1.getItemCount()+this.m2.getItemCount()},get:function(index){return this.vectors[index]},remove:function(index){return this.vectors.splice(index,1)[0]},getByName:function(name){for(var i=0,length=this.vectors.length;length>i;i++)if(name===this.vectors[i].getName())return this.vectors[i]},getMetadataCount:function(){return this.vectors.length}},morpheus.MetadataModel=function(itemCount){this.itemCount=itemCount,this.vectors=[]},morpheus.MetadataModel.prototype={add:function(name){var oldVector,index=morpheus.MetadataUtil.indexOf(this,name);-1!==index&&(oldVector=this.remove(index));var v=new morpheus.Vector(name,this.getItemCount());if(null!=oldVector)for(var i=0,size=oldVector.size();size>i;i++){var val=oldVector.getValue(i);v.setValue(i,val)}return this.vectors.push(v),v},getItemCount:function(){return this.itemCount},get:function(index){if(0>index||index>=this.vectors.length)throw"index "+index+" out of range";return this.vectors[index]},remove:function(index){if(0>index||index>=this.vectors.length)throw"index "+index+" out of range";return this.vectors.splice(index,1)[0]},getByName:function(name){var index=morpheus.MetadataUtil.indexOf(this,name);return-1!==index?this.get(index):void 0},getMetadataCount:function(){return this.vectors.length}},morpheus.MetadataModelAdapter=function(model){this.model=model},morpheus.MetadataModelAdapter.prototype={add:function(name){return this.model.add(name)},getItemCount:function(){return this.model.getItemCount()},get:function(index){return this.model.get(index)},remove:function(index){return this.model.remove(index)},getByName:function(name){return this.model.getByName(name)},getMetadataCount:function(){return this.model.getMetadataCount()}},morpheus.MetadataModelColumnView=function(model,indices){this.model=model,this.indices=indices},morpheus.MetadataModelColumnView.prototype={add:function(name){var vector=this.model.add(name),index=morpheus.MetadataUtil.indexOf(this.model,name);return this.indices.push(index),vector},getMetadataCount:function(){return this.indices.length},get:function(index){if(0>index||index>=this.indices.length)throw"index out of bounds";return this.model.get(this.indices[index])},remove:function(index){if(0>index||index>=this.indices.length)throw"index out of bounds";var v=this.model.remove(this.indices[index]);return this.indices.splice(index,1),v},getByName:function(name){var index=morpheus.MetadataUtil.indexOf(this,name);return-1!==index?this.get(index):void 0}},morpheus.Util.extend(morpheus.MetadataModelColumnView,morpheus.MetadataModelAdapter),morpheus.MetadataModelItemView=function(model,indices){this.model=model,this.indices=indices},morpheus.MetadataModelItemView.prototype={add:function(name){var v=this.model.add(name);return new morpheus.SlicedVector(v,this.indices)},getItemCount:function(){return this.indices.length},get:function(index){var v=this.model.get(index);if(void 0!==v)return new morpheus.SlicedVector(v,this.indices)},getByName:function(name){var v=this.model.getByName(name);if(void 0!==v)return new morpheus.SlicedVector(v,this.indices)},getMetadataCount:function(){return this.model.getMetadataCount()}},morpheus.Util.extend(morpheus.MetadataModelItemView,morpheus.MetadataModelAdapter),morpheus.MetadataUtil=function(){},morpheus.MetadataUtil.renameFields=function(dataset,options){_.each(options.rows,function(item){if(item.renameTo){var v=dataset.getRowMetadata().getByName(item.field);v&&v.setName(item.renameTo)}}),_.each(options.columns,function(item){if(item.renameTo){var v=dataset.getColumnMetadata().getByName(item.field);v&&v.setName(item.renameTo)}})},morpheus.MetadataUtil.search=function(options){var model=options.model,text=options.text,isColumns=options.isColumns;if(text=$.trim(text),""===text)return null;var tokens=morpheus.Util.getAutocompleteTokens(text);if(0==tokens.length)return null;var indexField=isColumns?"COLUMN":"ROW",fieldNames=morpheus.MetadataUtil.getMetadataNames(model);fieldNames.push(indexField);for(var predicates=morpheus.Util.createSearchPredicates({tokens:tokens,fields:fieldNames,defaultMatchMode:options.defaultMatchMode}),vectors=[],nameToVector=new morpheus.Map,j=0;ji;i++){for(var matches=!1,p=0;npredicates>p&&!matches;p++){var predicate=predicates[p],filterColumnName=predicate.getField();if(null!=filterColumnName){var value=null;if(filterColumnName===indexField){if(value=i+1,predicate.accept(value)){matches=!0;break}}else{var wrapper=nameToVector.get(filterColumnName);if(wrapper&&(value=wrapper.vector.getValue(i),null!=value))if(wrapper.isArray){for(var k=0;kj;j++){var wrapper=vectors[j],value=wrapper.vector.getValue(i);if(null!=value)if(wrapper.isArray){for(var k=0;k0?tokens[tokens.length-1]:null;try{if(null!=token&&""!==token){var field=null,semi=token.indexOf(":");if(semi>0&&92!==token.charCodeAt(semi-1)){var possibleField=$.trim(token.substring(0,semi));possibleField.length>0&&'"'===possibleField[0]&&'"'===possibleField[token.length-1]&&(possibleField=possibleField.substring(1,possibleField.length-1));var index=morpheus.MetadataUtil.indexOf(searchModel,possibleField);-1!==index&&(token=$.trim(token.substring(semi+1)),searchModel=new morpheus.MetadataModelColumnView(model,[index]))}var set=new morpheus.Set;regex=new RegExp("^"+token,"i");for(var max=10,vectors=[],isArray=[],j=0;ji;i++)for(var j=0;nfields>j;j++){var v=vectors[j],val=v.getValue(i);if(null!=val)if(isArray[j])for(var k=0;k0?'"'+field+'"':field)+":"+(val.indexOf(" ")>0?'"'+val+'"':val),label:''+field+':'+val+""})})}}catch(x){}null==regex&&(regex=new RegExp(".*","i"));for(var j=0;j0?'"'+field+'"':field)+":",label:''+field+":"})}cb(matches)}},morpheus.MetadataUtil.getMetadataNames=function(metadataModel){for(var names=[],i=0,count=metadataModel.getMetadataCount();count>i;i++)names.push(metadataModel.get(i).getName(i));return names.sort(function(a,b){return a=a.toLowerCase(),b=b.toLowerCase(),b>a?-1:a===b?0:1}),names},morpheus.MetadataUtil.getVectors=function(metadataModel,names){var vectors=[];return names.forEach(function(name){var v=metadataModel.getByName(name);if(!v)throw name+" not found. Available fields are "+morpheus.MetadataUtil.getMetadataNames(metadataModel);vectors.push(v)}),vectors},morpheus.MetadataUtil.indexOf=function(metadataModel,name){for(var i=0,length=metadataModel.getMetadataCount();length>i;i++)if(name===metadataModel.get(i).getName())return i;return-1},morpheus.MetadataUtil.DEFAULT_HIDDEN_FIELDS=new morpheus.Set,["pr_analyte_id","pr_gene_title","pr_gene_id","pr_analyte_num","pr_bset_id","pr_lua_id","pr_pool_id","pr_is_bing","pr_is_inf","pr_is_lmark","qc_slope","qc_f_logp","qc_iqr","bead_batch","bead_revision","bead_set","det_mode","det_plate","det_well","mfc_plate_dim","mfc_plate_id","mfc_plate_name","mfc_plate_quad","mfc_plate_well","pert_dose_unit","pert_id_vendor","pert_mfc_desc","pert_mfc_id","pert_time","pert_time_unit","pert_univ_id","pert_vehicle","pool_id","rna_plate","rna_well","count_mean","count_cv","provenance_code"].forEach(function(name){morpheus.MetadataUtil.DEFAULT_HIDDEN_FIELDS.add(name)}),morpheus.MetadataUtil.DEFAULT_FIELDS_TO_SHOW={cell_id:!0,pert_idose:!0,pert_itime:!0,Id:!0,Name:!0,ID:!0,pr_id:!0,id:!0,pr_gene_symbol:!0,pr_is_lm:!0,is_lm:!0,pert_id:!0,pert_iname:!0,pert_desc:!0,Description:!0,gene_space:!0,pert_type:!0},morpheus.MetadataUtil.copy=function(src,dest){if(src.getItemCount()!=dest.getItemCount())throw"Item count not equal in source and destination. "+src.getItemCount()+" != "+dest.getItemCount();for(var itemCount=src.getItemCount(),metadataColumns=src.getMetadataCount(),j=0;metadataColumns>j;j++){var srcVector=src.get(j),destVector=dest.getByName(srcVector.getName());null==destVector&&(destVector=dest.add(srcVector.getName()));for(var i=0;itemCount>i;i++)destVector.setValue(i,srcVector.getValue(i))}},morpheus.MetadataUtil.addVectorIfNotExists=function(metadataModel,name){var v=metadataModel.getByName(name);return v||(v=metadataModel.add(name)),v},morpheus.MetadataUtil.getMatchingIndices=function(metadataModel,tokens){for(var indices={},itemIndex=0,nitems=metadataModel.getItemCount();nitems>itemIndex;itemIndex++){for(var matches=!1,metadataIndex=0,metadataCount=metadataModel.getMetadataCount();metadataCount>metadataIndex&&!matches;metadataIndex++)for(var vector=metadataModel.get(metadataModel.getColumnName(metadataIndex)),value=vector.getValue(itemIndex),i=0,length=tokens.length;length>i;i++)if(tokens[i]==value){matches=!0;break}matches&&(indices[itemIndex]=1)}return indices},morpheus.Positions=function(){this.spaces=void 0,this.defaultPositionFunction=function(index){return this.size*index},this.squishedPositionFunction=function(index){return this.positions[index]},this.positionFunction=this.defaultPositionFunction,this.squishedIndices={},this.isSquished=!1},morpheus.Positions.getBottom=function(rect,rowPositions){var bottom=rowPositions.getLength();return null!=rect&&(bottom=1+rowPositions.getIndex(rect.y+rect.height,!1),bottom=Math.max(0,bottom),bottom=Math.min(rowPositions.getLength(),bottom)),bottom},morpheus.Positions.getTop=function(rect,rowPositions){var top=0;return null!=rect&&(top=rowPositions.getIndex(rect.y,!1)-1,top=Math.max(0,top),top=Math.min(rowPositions.getLength(),top)),top},morpheus.Positions.getLeft=function(rect,columnPositions){var left=0;return null!=rect&&(left=columnPositions.getIndex(rect.x,!1)-1,left=Math.max(0,left),left=Math.min(columnPositions.getLength(),left)),left},morpheus.Positions.getRight=function(rect,columnPositions){var right=columnPositions.getLength();return null!=rect&&(right=1+columnPositions.getIndex(rect.x+rect.width,!1),right=Math.min(columnPositions.getLength(),right)),right},morpheus.Positions.prototype={length:0,size:13,squishFactor:.1,compress:!0,copy:function(){var copy=new morpheus.Positions;return this.spaces&&(copy.spaces=this.spaces.slice()),copy.compress=this.compress,copy.squishFactor=this.squishFactor,copy.size=this.size,copy.length=this.length,this.isSquished&&(copy.positionFunction=copy.squishedPositionFunction,copy.squishedIndices=_.clone(this.squishedIndices),copy.isSquished=!0),copy},getIndex:function(position,exact){return exact?this.binaryExactSearch(position):this.binaryInExactSearch(position)},getLength:function(){return this.length},getPosition:function(index){return this.positionFunction(index)+(void 0!==this.spaces?this.spaces[index]:0)},getItemSize:function(index){return this.squishedIndices[index]===!0?this.size*this.squishFactor:this.size},getSize:function(){return this.size},setSpaces:function(spaces){this.spaces=spaces},setLength:function(length){this.length=length},setSize:function(size){this.size=size,this.isSquished&&this.setSquishedIndices(this.squishedIndices)},setSquishedIndices:function(squishedIndices){if(null!=squishedIndices){var compress=this.compress;this.squishedIndices=squishedIndices;for(var positions=[],squishFactor=this.squishFactor,size=this.size,position=0,i=0,length=this.getLength();length>i;i++){var itemSize;squishedIndices[i]===!0?(positions.push(position),itemSize=size*squishFactor,position+=itemSize):(compress||(position=size*i),positions.push(position),position+=size)}this.isSquished=!0,this.positions=positions,this.positionFunction=this.squishedPositionFunction}else this.squishedIndices={},this.isSquished=!1,this.positionFunction=this.defaultPositionFunction},setSquishFactor:function(f){this.squishFactor!==f&&(this.squishFactor=f,this.isSquished&&this.setSquishedIndices(this.squishedIndices))},getSquishFactor:function(){return this.squishFactor},binaryExactSearch:function(position){for(var low=0,high=this.length-1;high>=low;){var mid=low+high>>1,midVal=this.getPosition(mid),size=this.getItemSize(mid);if(position>=midVal&&midVal+size>position)return mid;if(position>midVal)low=mid+1;else{if(!(midVal>position))return mid;high=mid-1}}return-1},binaryInExactSearch:function(position){var low=0,high=this.getLength()-1,maxIndex=this.getLength()-1;if(position<=this.getPosition(0))return 0;for(;high>=low;){var mid=low+high>>1,midVal=this.getPosition(mid),size=this.getItemSize(mid),nextStart=maxIndex===mid?midVal+size:this.getPosition(mid+1);if(position>=midVal&&nextStart>position)return mid;if(position>midVal)low=mid+1;else{if(!(midVal>position))return mid;high=mid-1}}return low-1}},morpheus.Project=function(dataset){this.originalDataset=dataset,this.rowIndexMapper=new morpheus.IndexMapper(this,!0),this.columnIndexMapper=new morpheus.IndexMapper(this,!1),this.groupRows=[],this.groupColumns=[],this.rowColorModel=new morpheus.VectorColorModel,this.columnColorModel=new morpheus.VectorColorModel,this.rowShapeModel=new morpheus.VectorShapeModel,this.columnShapeModel=new morpheus.VectorShapeModel,this.hoverColumnIndex=-1,this.hoverRowIndex=-1,this.columnSelectionModel=new morpheus.SelectionModel(this,!0),this.rowSelectionModel=new morpheus.SelectionModel(this,!1),this.elementSelectionModel=new morpheus.ElementSelectionModel(this),morpheus.Project._recomputeCalculatedFields(this.originalDataset),morpheus.Project._recomputeCalculatedFields(new morpheus.TransposedDatasetView(this.originalDataset))},morpheus.Project.Events={DATASET_CHANGED:"datasetChanged",ROW_GROUP_BY_CHANGED:"rowGroupByChanged",COLUMN_GROUP_BY_CHANGED:"columnGroupByChanged",ROW_FILTER_CHANGED:"rowFilterChanged",COLUMN_FILTER_CHANGED:"columnFilterChanged",ROW_SORT_ORDER_CHANGED:"rowSortOrderChanged",COLUMN_SORT_ORDER_CHANGED:"columnSortOrderChanged",ROW_TRACK_REMOVED:"rowTrackRemoved",COLUMN_TRACK_REMOVED:"columnTrackRemoved"},morpheus.Project._recomputeCalculatedFields=function(dataset){for(var metadata=dataset.getRowMetadata(),view=new morpheus.DatasetRowView(dataset),metadataIndex=0,count=metadata.getMetadataCount();count>metadataIndex;metadataIndex++){var v=metadata.get(metadataIndex),f=v.getProperties().get(morpheus.VectorKeys.FUNCTION);if(null!=f&&v.getProperties().get(morpheus.VectorKeys.RECOMPUTE_FUNCTION))for(var i=0,nrows=dataset.getRowCount();nrows>i;i++)v.setValue(i,f(view.setIndex(i)))}},morpheus.Project.prototype={getHoverColumnIndex:function(){return this.hoverColumnIndex},setHoverColumnIndex:function(index){this.hoverColumnIndex=index},getHoverRowIndex:function(){return this.hoverRowIndex},setHoverRowIndex:function(index){this.hoverRowIndex=index},getRowColorModel:function(){return this.rowColorModel},getRowShapeModel:function(){return this.rowShapeModel},getColumnShapeModel:function(){return this.columnShapeModel},getGroupRows:function(){return this.groupRows},getGroupColumns:function(){return this.groupColumns},getFullDataset:function(){return this.originalDataset},getColumnSelectionModel:function(){return this.columnSelectionModel},getRowSelectionModel:function(){return this.rowSelectionModel},getFilteredSortedRowIndices:function(){return this.rowIndexMapper.convertToView()},getFilteredSortedColumnIndices:function(){return this.columnIndexMapper.convertToView()},getElementSelectionModel:function(){return this.elementSelectionModel},setFullDataset:function(dataset,notify){this.originalDataset=dataset,this.rowIndexMapper.setFilter(this.rowIndexMapper.getFilter()),this.columnIndexMapper.setFilter(this.columnIndexMapper.getFilter()),this.columnSelectionModel.clear(),this.rowSelectionModel.clear(),this.elementSelectionModel.clear(),notify&&this.trigger(morpheus.Project.Events.DATASET_CHANGED); -},setGroupRows:function(keys,notify){this.groupRows=keys,notify&&this.trigger(morpheus.Project.Events.ROW_GROUP_BY_CHANGED)},setGroupColumns:function(keys,notify){this.groupColumns=keys,notify&&this.trigger(morpheus.Project.Events.COLUMN_GROUP_BY_CHANGED)},setRowFilter:function(filter,notify){this._saveSelection(!1),this.rowIndexMapper.setFilter(filter),this._restoreSelection(!1),notify&&this.trigger(morpheus.Project.Events.ROW_FILTER_CHANGED)},getRowFilter:function(){return this.rowIndexMapper.getFilter()},getColumnFilter:function(){return this.columnIndexMapper.getFilter()},setColumnFilter:function(filter,notify){this._saveSelection(!0),this.columnIndexMapper.setFilter(filter),this._restoreSelection(!0),notify&&this.trigger(morpheus.Project.Events.COLUMN_FILTER_CHANGED)},getColumnColorModel:function(){return this.columnColorModel},getSortedFilteredDataset:function(){return morpheus.DatasetUtil.slicedView(this.getFullDataset(),this.rowIndexMapper.convertToView(),this.columnIndexMapper.convertToView())},getSelectedDataset:function(options){options=$.extend({},{selectedRows:!0,selectedColumns:!0,emptyToAll:!0},options);var dataset=this.getSortedFilteredDataset(),rows=null;options.selectedRows&&(rows=this.rowSelectionModel.getViewIndices().values().sort(function(a,b){return a===b?0:b>a?-1:1}),0===rows.length&&options.emptyToAll&&(rows=null));var columns=null;return options.selectedColumns&&(columns=this.columnSelectionModel.getViewIndices().values().sort(function(a,b){return a===b?0:b>a?-1:1}),0===columns.length&&options.emptyToAll&&(columns=null)),morpheus.DatasetUtil.slicedView(dataset,rows,columns)},_saveSelection:function(isColumns){this.elementSelectionModel.save(),isColumns?this.columnSelectionModel.save():this.rowSelectionModel.save()},_restoreSelection:function(isColumns){isColumns?this.columnSelectionModel.restore():this.rowSelectionModel.restore(),this.elementSelectionModel.restore()},setRowSortKeys:function(keys,notify){this._saveSelection(!1),this.rowIndexMapper.setSortKeys(keys),this._restoreSelection(!1),notify&&this.trigger(morpheus.Project.Events.ROW_SORT_ORDER_CHANGED)},setColumnSortKeys:function(keys,notify){this._saveSelection(!0),this.columnIndexMapper.setSortKeys(keys),this._restoreSelection(!0),notify&&this.trigger(morpheus.Project.Events.COLUMN_SORT_ORDER_CHANGED)},getRowSortKeys:function(){return this.rowIndexMapper.sortKeys},getColumnSortKeys:function(){return this.columnIndexMapper.sortKeys},convertViewColumnIndexToModel:function(viewIndex){return this.columnIndexMapper.convertViewIndexToModel(viewIndex)},convertViewRowIndexToModel:function(viewIndex){return this.rowIndexMapper.convertViewIndexToModel(viewIndex)},convertModelRowIndexToView:function(modelIndex){return this.rowIndexMapper.convertModelIndexToView(modelIndex)},convertModelColumnIndexToView:function(modelIndex){return this.columnIndexMapper.convertModelIndexToView(modelIndex)},isColumnViewIndexSelected:function(index){return this.columnSelectionModel.isViewIndexSelected(index)},isRowViewIndexSelected:function(index){return this.rowSelectionModel.isViewIndexSelected(index)}},morpheus.Util.extend(morpheus.Project,morpheus.Events),morpheus.SelectionModel=function(project,isColumns){this.viewIndices=new morpheus.Set,this.project=project,this.isColumns=isColumns},morpheus.SelectionModel.prototype={setViewIndices:function(indices,notify){this.viewIndices=indices,notify&&this.trigger("selectionChanged")},isViewIndexSelected:function(index){return this.viewIndices.has(index)},clear:function(){this.viewIndices=new morpheus.Set},getViewIndices:function(){return this.viewIndices},count:function(){return this.viewIndices.size()},toModelIndices:function(){var project=this.project,f=this.isColumns?project.convertViewColumnIndexToModel:project.convertViewRowIndexToModel;f=_.bind(f,project);var modelIndices=[];return this.viewIndices.forEach(function(index){var m=f(index);modelIndices.push(m)}),modelIndices},save:function(){this.modelIndices=this.toModelIndices()},restore:function(){var project=this.project;this.viewIndices=new morpheus.Set;var f=this.isColumns?project.convertModelColumnIndexToView:project.convertModelRowIndexToView;f=_.bind(f,project);for(var i=0,length=this.modelIndices.length;length>i;i++){var index=f(this.modelIndices[i]);-1!==index&&this.viewIndices.add(index)}}},morpheus.Util.extend(morpheus.SelectionModel,morpheus.Events),morpheus.SlicedDatasetView=function(dataset,rowIndices,columnIndices){morpheus.DatasetAdapter.call(this,dataset),null==rowIndices&&(rowIndices=null),null==columnIndices&&(columnIndices=null),this.rowIndices=rowIndices,this.columnIndices=columnIndices},morpheus.SlicedDatasetView.prototype={getRowCount:function(){return null!==this.rowIndices?this.rowIndices.length:this.dataset.getRowCount()},getColumnCount:function(){return null!==this.columnIndices?this.columnIndices.length:this.dataset.getColumnCount()},getValue:function(i,j,seriesIndex){return this.dataset.getValue(null!==this.rowIndices?this.rowIndices[i]:i,null!==this.columnIndices?this.columnIndices[j]:j,seriesIndex)},setValue:function(i,j,value,seriesIndex){this.dataset.setValue(null!==this.rowIndices?this.rowIndices[i]:i,null!==this.columnIndices?this.columnIndices[j]:j,value,seriesIndex)},getRowMetadata:function(){return null!==this.rowIndices?new morpheus.MetadataModelItemView(this.dataset.getRowMetadata(),this.rowIndices):this.dataset.getRowMetadata()},getColumnMetadata:function(){return null!==this.columnIndices?new morpheus.MetadataModelItemView(this.dataset.getColumnMetadata(),this.columnIndices):this.dataset.getColumnMetadata()},toString:function(){return this.getName()}},morpheus.Util.extend(morpheus.SlicedDatasetView,morpheus.DatasetAdapter),morpheus.SlicedVector=function(v,indices){morpheus.VectorAdapter.call(this,v),this.indices=indices},morpheus.SlicedVector.prototype={setValue:function(i,value){this.v.setValue(this.indices[i],value)},getValue:function(i){return this.v.getValue(this.indices[i])},size:function(){return this.indices.length}},morpheus.Util.extend(morpheus.SlicedVector,morpheus.VectorAdapter),morpheus.MatchesOnTopSortKey=function(project,modelIndices,name){for(var modelHighlight={},viewIndices=[],i=0,length=modelIndices.length;length>i;i++)modelHighlight[modelIndices[i]]=!0,viewIndices.push(i);this.comparator=function(i1,i2){var a=void 0===modelHighlight[i1]?0:1,b=void 0==modelHighlight[i2]?0:1;return a>b?-1:a===b?0:1},this.indices=viewIndices,this.name=name},morpheus.MatchesOnTopSortKey.prototype={init:function(){},getSortOrder:function(){return 2},getComparator:function(){return this.comparator},getValue:function(i){return i},toString:function(i){return this.name}},morpheus.SortKey=function(field,sortOrder){"string"==typeof sortOrder&&(sortOrder=morpheus.SortKey.SortOrder[sortOrder.toUpperCase()]),this.field=field,this.sortOrder=sortOrder,this.v=null,this.c=null,this.setSortOrder(sortOrder)},morpheus.SortKey.SortOrder={ASCENDING:0,DESCENDING:1,UNSORTED:2,CUSTOM:3,TOP_N:4},morpheus.SortKey.ASCENDING_COMPARATOR=function(a,b){var aNaN=null==a||_.isNumber(a)&&isNaN(a),bNaN=null==b||_.isNumber(b)&&isNaN(b);return aNaN&&bNaN?0:aNaN?1:bNaN?-1:(a.toLowerCase&&(a=a.toLowerCase()),b.toLowerCase&&(b=b.toLowerCase()),a===b?0:b>a?-1:1)},morpheus.SortKey.DESCENDING_COMPARATOR=function(a,b){var aNaN=null==a||_.isNumber(a)&&isNaN(a),bNaN=null==b||_.isNumber(b)&&isNaN(b);return aNaN&&bNaN?0:aNaN?1:bNaN?-1:a===b?0:b>a?1:-1},morpheus.SortKey.NUMBER_ASCENDING_COMPARATOR=function(a,b){var aNaN=null==a||isNaN(a),bNaN=null==b||isNaN(b);return aNaN&&bNaN?0:aNaN?1:bNaN?-1:a===b?0:b>a?-1:1},morpheus.SortKey.NUMBER_DESCENDING_COMPARATOR=function(a,b){var aNaN=null==a||isNaN(a),bNaN=null==b||isNaN(b);return aNaN&&bNaN?0:aNaN?1:bNaN?-1:a===b?0:b>a?1:-1},morpheus.SortKey.STRING_ASCENDING_COMPARATOR=function(a,b){return a=null==a||void 0===a.toLowerCase?null:a.toLowerCase(),b=null==b||void 0===b.toLowerCase?null:b.toLowerCase(),a===b?0:b>a?-1:1},morpheus.SortKey.STRING_DESCENDING_COMPARATOR=function(a,b){return a=null==a||void 0===a.toLowerCase?null:a.toLowerCase(),b=null==b||void 0===b.toLowerCase?null:b.toLowerCase(),a===b?0:b>a?1:-1},morpheus.SortKey.ELEMENT_ASCENDING_COMPARATOR=function(obj1,obj2){var a=+obj1,b=+obj2,aNaN=isNaN(a),bNaN=isNaN(b);if(aNaN&&bNaN)return 0;if(aNaN)return 1;if(bNaN)return-1;if(a===b&&obj1.toObject&&obj2.toObject){var a1=obj1.toObject(),b1=obj2.toObject();for(var name in a1){a=a1[name],b=b1[name];var c=a===b?0:b>a?-1:1;if(0!==c)return c}}return a===b?0:b>a?-1:1},morpheus.SortKey.ELEMENT_DESCENDING_COMPARATOR=function(obj1,obj2){var a=+obj1,b=+obj2,aNaN=isNaN(a),bNaN=isNaN(b);if(aNaN&&bNaN)return 0;if(aNaN)return 1;if(bNaN)return-1;if(a===b&&obj1.toObject&&obj2.toObject){var a1=obj1.toObject(),b1=obj2.toObject();for(var name in a1){a=a1[name],b=b1[name];var c=a===b?0:b>a?1:-1;if(0!==c)return c}}return a===b?0:b>a?1:-1},morpheus.SortKey.BOX_PLOT_SUMMARY_FUNCTION=function(array){var box=array.box;if(null==box){var v=morpheus.VectorUtil.arrayAsVector(array);box=morpheus.BoxPlotItem(null!=this.indices?new morpheus.SlicedVector(v,this.indices):v),array.box=box}return box.q3},morpheus.SortKey.ARRAY_MAX_SUMMARY_FUNCTION=function(array){var a=0;if(null!=array){for(var aPosMax=-Number.MAX_VALUE,aNegMax=Number.MAX_VALUE,i=0,length=array.length;length>i;i++){var value=array[i];isNaN(value)||(value>=0?aPosMax=value>aPosMax?value:aPosMax:aNegMax=aNegMax>value?value:aNegMax)}aPosMax!==-Number.MAX_VALUE&&(a=aPosMax),aNegMax!==Number.MAX_VALUE&&(a=Math.abs(aNegMax)>a?aNegMax:a)}return a},morpheus.SortKey.ARRAY_ASCENDING_COMPARATOR=function(summary){return function(a,b){var aNaN=null==a,bNaN=null==b;return aNaN&&bNaN?0:aNaN?1:bNaN?-1:(a=summary(a),b=summary(b),aNaN=isNaN(a),bNaN=isNaN(b),aNaN&&bNaN?0:aNaN?1:bNaN?-1:a===b?0:b>a?-1:1)}},morpheus.SortKey.ARRAY_DESCENDING_COMPARATOR=function(summary){return function(a,b){var aNaN=null==a,bNaN=null==b;return aNaN&&bNaN?0:aNaN?1:bNaN?-1:(a=summary(a),b=summary(b),aNaN=isNaN(a),bNaN=isNaN(b),aNaN&&bNaN?0:aNaN?1:bNaN?-1:a===b?0:b>a?1:-1)}},morpheus.SortKey.reverseComparator=function(c){return function(a,b){return c(b,a)}},morpheus.SortKey.prototype={init:function(dataset){if(this.v=dataset.getRowMetadata().getByName(this.field),this.v){var dataType=morpheus.VectorUtil.getDataType(this.v);if("number"===dataType)this.c=this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.NUMBER_ASCENDING_COMPARATOR:morpheus.SortKey.NUMBER_DESCENDING_COMPARATOR;else if("[number]"===dataType){var summary=this.v.getProperties().get(morpheus.VectorKeys.ARRAY_SUMMARY_FUNCTION)||morpheus.SortKey.ARRAY_MAX_SUMMARY_FUNCTION;this.c=this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.ARRAY_ASCENDING_COMPARATOR(summary):morpheus.SortKey.ARRAY_DESCENDING_COMPARATOR(summary)}else this.c=this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.ASCENDING_COMPARATOR:morpheus.SortKey.DESCENDING_COMPARATOR}else this.v={},this.v.getValue=function(){return 0},this.c=this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.ASCENDING_COMPARATOR:morpheus.SortKey.DESCENDING_COMPARATOR},getComparator:function(){return this.c},getValue:function(i){return this.v.getValue(i)},setSortOrder:function(sortOrder){this.sortOrder=sortOrder},getSortOrder:function(){return this.sortOrder},toString:function(){return this.field}},morpheus.SortByValuesKey=function(modelIndices,sortOrder,isColumnSort){this.field="selection",this.bothCount=10,this.modelIndices=modelIndices,this.sortOrder=sortOrder,this.isColumnSort=isColumnSort,this.setSortOrder(sortOrder)},morpheus.SortByValuesKey.prototype={init:function(dataset,visibleModelIndices){if(this.dataset=morpheus.DatasetUtil.slicedView(dataset,null,this.modelIndices),this.rowView=new morpheus.DatasetRowView(this.dataset),this.summaryFunction=this.modelIndices.length>1?morpheus.Median:function(row){return row.getValue(0)},this.sortOrder===morpheus.SortKey.SortOrder.TOP_N){for(var pairs=[],missingIndices=[],i=0,nrows=visibleModelIndices.length;nrows>i;i++){var index=visibleModelIndices[i],value=this.summaryFunction(this.rowView.setIndex(index));isNaN(value)?missingIndices.push(index):pairs.push({index:index,value:value})}pairs.sort(function(a,b){return a.valuecounter;){for(var i=0;nInGroup>i&&ntop>topIndex;i++,topIndex++,counter++)modelIndexToValue[topPairs[topIndex].index]=counter;for(var indexCounterPairs=[],i=0;nInGroup>i&&bottomIndex>=0;i++,bottomIndex--,counter++)indexCounterPairs.push([bottomPairs[bottomIndex].index,counter]);for(var i=indexCounterPairs.length-1,j=0;i>=0;i--,j++){var item_i=indexCounterPairs[i],item_j=indexCounterPairs[j];modelIndexToValue[item_i[0]]=item_j[1]}}for(var i=0,length=missingIndices.length;length>i;i++,counter++)modelIndexToValue[missingIndices[i]]=counter;this.modelIndexToValue=modelIndexToValue}else delete this.modelIndexToValue},getComparator:function(){return this.c},getValue:function(i){return this.modelIndexToValue?this.modelIndexToValue[i]:this.summaryFunction(this.rowView.setIndex(i))},setSortOrder:function(sortOrder){"string"==typeof sortOrder&&(sortOrder=morpheus.SortKey.SortOrder[sortOrder.toUpperCase()]),this.sortOrder=sortOrder,this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?this.c=morpheus.SortKey.ELEMENT_ASCENDING_COMPARATOR:this.sortOrder===morpheus.SortKey.SortOrder.DESCENDING?this.c=morpheus.SortKey.ELEMENT_DESCENDING_COMPARATOR:this.c=morpheus.SortKey.NUMBER_ASCENDING_COMPARATOR},getSortOrder:function(){return this.sortOrder},toString:function(){return"values"}},morpheus.SpecifiedModelSortOrder=function(modelIndices,nvisible,name){this.nvisible=nvisible;for(var modelIndexToValue=[],i=0,length=modelIndices.length;length>i;i++)modelIndexToValue[modelIndices[i]]=i;this.modelIndexToValue=modelIndexToValue,this.name=name,this.c=morpheus.SortKey.ASCENDING_COMPARATOR},morpheus.SpecifiedModelSortOrder.prototype={init:function(dataset){},getComparator:function(a,b){return this.c},getValue:function(i){return this.modelIndexToValue[i]},setSortOrder:function(sortOrder){this.sortOrder=sortOrder,this.c=this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.NUMBER_ASCENDING_COMPARATOR:morpheus.SortKey.NUMBER_DESCENDING_COMPARATOR},getSortOrder:function(){return this.sortOrder},getName:function(){return this.name}},morpheus.SortKey.keepExistingSortKeys=function(newSortKeys,existingSortKeys){for(var existingSpecifiedSortKey=null,i=0,length=existingSortKeys.length;length>i;i++){var key=existingSortKeys[i];key instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===key.name&&(existingSpecifiedSortKey=key)}if(existingSpecifiedSortKey){for(var newSortKeysHasSpecifiedSortKey=!1,i=0,length=newSortKeys.length;length>i;i++){var key=newSortKeys[i];key instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===key.name&&(newSortKeysHasSpecifiedSortKey=!0)}existingSpecifiedSortKey&&!newSortKeysHasSpecifiedSortKey&&newSortKeys.splice(newSortKeys.length,0,existingSpecifiedSortKey)}return newSortKeys},morpheus.SpecifiedGroupByKey=function(clusterIds){this.clusterIds=clusterIds,this.c=function(a,b){return a===b?0:b>a?-1:1}},morpheus.SpecifiedGroupByKey.prototype={init:function(dataset){},getComparator:function(a,b){return this.c},getValue:function(i){return this.clusterIds[i]},setSortOrder:function(sortOrder){},getSortOrder:function(){},getName:function(){return"Dendrogram Cut"}},morpheus.SymmetricProject=function(dataset){this.originalDataset=dataset,this.indexMapper=new morpheus.IndexMapper(this,!0),this.groups=[],this.colorModel=new morpheus.VectorColorModel,this.shapeModel=new morpheus.VectorShapeModel,this.hoverRowIndex=-1,this.hoverColumnIndex=-1,this.selectionModel=new morpheus.SelectionModel(this,!1),this.elementSelectionModel=new morpheus.ElementSelectionModel(this)},morpheus.SymmetricProject.prototype={getHoverColumnIndex:function(){return this.hoverColumnIndex},setHoverColumnIndex:function(index){this.hoverColumnIndex=index},getHoverRowIndex:function(){return this.hoverRowIndex},setHoverRowIndex:function(index){this.hoverRowIndex=index},getRowColorModel:function(){return this.colorModel},getRowShapeModel:function(){return this.shapeModel},getColumnShapeModel:function(){return this.shapeModel},getGroupRows:function(){return this.groups},getGroupColumns:function(){return this.groups},getFullDataset:function(){return this.originalDataset},getColumnSelectionModel:function(){return this.selectionModel},getRowSelectionModel:function(){return this.selectionModel},getElementSelectionModel:function(){return this.elementSelectionModel},getFilteredSortedRowIndices:function(){return this.indexMapper.convertToView()},getFilteredSortedColumnIndices:function(){return this.indexMapper.convertToView()},setFullDataset:function(dataset,notify){this.originalDataset=dataset,this.indexMapper.setFilter(this.indexMapper.getFilter()),this.selectionModel.clear(),this.elementSelectionModel.clear(),notify&&this.trigger(morpheus.Project.Events.DATASET_CHANGED)},setGroupRows:function(keys,notify){this.groups=keys,notify&&(this.trigger(morpheus.Project.Events.ROW_GROUP_BY_CHANGED),this.trigger(morpheus.Project.Events.COLUMN_GROUP_BY_CHANGED))},setGroupColumns:function(keys,notify){this.groups=keys,notify&&(this.trigger(morpheus.Project.Events.ROW_GROUP_BY_CHANGED),this.trigger(morpheus.Project.Events.COLUMN_GROUP_BY_CHANGED))},setRowFilter:function(filter,notify){this._saveSelection(!1),this.indexMapper.setFilter(filter),this._restoreSelection(!1),notify&&this.trigger(morpheus.Project.Events.ROW_FILTER_CHANGED)},getRowFilter:function(){return this.indexMapper.getFilter()},getColumnFilter:function(){return this.indexMapper.getFilter()},setColumnFilter:function(filter,notify){this._saveSelection(!0),this.indexMapper.setFilter(filter),this._restoreSelection(!0),notify&&this.trigger(morpheus.Project.Events.COLUMN_FILTER_CHANGED)},getColumnColorModel:function(){return this.colorModel},getSortedFilteredDataset:function(){return morpheus.DatasetUtil.slicedView(this.getFullDataset(),this.indexMapper.convertToView(),this.indexMapper.convertToView())},getSelectedDataset:function(options){options=$.extend({},{selectedRows:!0,selectedColumns:!0,emptyToAll:!0},options);var dataset=this.getSortedFilteredDataset(),rows=null;options.selectedRows&&(rows=this.selectionModel.getViewIndices().values().sort(function(a,b){return a===b?0:b>a?-1:1}),0===rows.length&&options.emptyToAll&&(rows=null));var columns=null;return options.selectedColumns&&(columns=this.selectionModel.getViewIndices().values().sort(function(a,b){return a===b?0:b>a?-1:1}),0===columns.length&&options.emptyToAll&&(columns=null)),morpheus.DatasetUtil.slicedView(dataset,rows,columns)},_saveSelection:function(isColumns){this.elementSelectionModel.save(),isColumns?this.selectionModel.save():this.selectionModel.save()},_restoreSelection:function(isColumns){isColumns?this.selectionModel.restore():this.selectionModel.restore(),this.elementSelectionModel.restore()},setRowSortKeys:function(keys,notify){this._saveSelection(!1),this.indexMapper.setSortKeys(keys),this._restoreSelection(!1),notify&&this.trigger(morpheus.Project.Events.ROW_SORT_ORDER_CHANGED)},setColumnSortKeys:function(keys,notify){this._saveSelection(!0),this.indexMapper.setSortKeys(keys),this._restoreSelection(!0),notify&&this.trigger(morpheus.Project.Events.COLUMN_SORT_ORDER_CHANGED)},getRowSortKeys:function(){return this.indexMapper.sortKeys},getColumnSortKeys:function(){return this.indexMapper.sortKeys},convertViewColumnIndexToModel:function(viewIndex){return this.indexMapper.convertViewIndexToModel(viewIndex)},convertViewRowIndexToModel:function(viewIndex){return this.indexMapper.convertViewIndexToModel(viewIndex)},convertModelRowIndexToView:function(modelIndex){return this.indexMapper.convertModelIndexToView(modelIndex)},convertModelColumnIndexToView:function(modelIndex){return this.indexMapper.convertModelIndexToView(modelIndex)},isColumnViewIndexSelected:function(index){return this.selectionModel.isViewIndexSelected(index)},isRowViewIndexSelected:function(index){return this.selectionModel.isViewIndexSelected(index)}},morpheus.Util.extend(morpheus.SymmetricProject,morpheus.Events),morpheus.TransposedDatasetView=function(dataset){morpheus.DatasetAdapter.call(this,dataset)},morpheus.TransposedDatasetView.prototype={getRowCount:function(){return this.dataset.getColumnCount()},getColumnCount:function(){return this.dataset.getRowCount()},getValue:function(i,j,seriesIndex){return this.dataset.getValue(j,i,seriesIndex)},setValue:function(i,j,value,seriesIndex){this.dataset.setValue(j,i,value,seriesIndex)},getRowMetadata:function(){return this.dataset.getColumnMetadata()},getColumnMetadata:function(){return this.dataset.getRowMetadata()}},morpheus.Util.extend(morpheus.TransposedDatasetView,morpheus.DatasetAdapter),morpheus.Percentile=function(vector,p,isSorted){return morpheus.ArrayPercentile(morpheus.RemoveNaN(vector),p,isSorted)},morpheus.RemoveNaN=function(values){for(var array=[],i=0,size=values.size();size>i;i++){var value=values.getValue(i);isNaN(value)||array.push(value)}return array},morpheus.Median=function(vector){return morpheus.ArrayPercentile(morpheus.RemoveNaN(vector),50,!1)},morpheus.Median.toString=function(){return"Median"},morpheus.ArrayPercentile=function(values,p,isSorted){return isSorted||values.sort(function(a,b){return b>a?-1:a===b?0:1}),d3.quantile(values,p/100)},morpheus.MaxPercentiles=function(percentiles){var f=function(vector){for(var values=[],i=0,size=vector.size();size>i;i++){var value=vector.getValue(i);isNaN(value)||values.push(value)}if(0===values.length)return NaN;values.sort(function(a,b){return b>a?-1:a===b?0:1});for(var max=0,i=0;iMath.abs(max)&&(max=p)}return max};return f.toString=function(){for(var s=["Maximum of "],i=0,length=percentiles.length;length>i;i++)i>0&&length>2&&s.push(", "),i===length-1&&s.push(2==length?" and ":"and "),s.push(percentiles[i]);return s.push(" percentiles"),s.join("")},f},morpheus.Mean=function(vector){for(var sum=0,count=0,i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);isNaN(val)||(sum+=val,count++)}return 0===count?NaN:sum/count},morpheus.Mean.toString=function(){return"Mean"},morpheus.Sum=function(vector){for(var sum=0,found=!1,i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);isNaN(val)||(found=!0,sum+=val)}return found?sum:NaN},morpheus.Sum.toString=function(){return"Sum"},morpheus.CountNonNaN=function(vector){for(var count=0,i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);isNaN(val)||count++}return count},morpheus.CountNonNaN.toString=function(){return"Count non-NaN"},morpheus.Max=function(vector){for(var max=-Number.MAX_VALUE,found=!1,i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);isNaN(val)||(found=!0,max=Math.max(max,val))}return found?max:NaN},morpheus.Max.toString=function(){return"Max"},morpheus.Min=function(vector){for(var min=Number.MAX_VALUE,found=!1,i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);isNaN(val)||(found=!0,min=Math.min(min,val))}return found?min:NaN},morpheus.Min.toString=function(){return"Min"},morpheus.Variance=function(list,mean){void 0==mean&&(mean=morpheus.Mean(list));for(var sum=0,n=0,j=0,size=list.size();size>j;j++){var x=list.getValue(j);if(!isNaN(x)){var diff=x-mean;diff*=diff,sum+=diff,n++}}if(1>=n)return NaN;n-=1,1>n&&(n=1);var variance=sum/n;return variance};var LOG_10=Math.log(10);morpheus.Log10=function(x){return 0>=x?0:Math.log(x)/LOG_10};var LOG_2=Math.log(2);morpheus.Log2=function(x){return 0>=x?0:Math.log(x)/LOG_2},morpheus.FDR_BH=function(nominalPValues){for(var size=nominalPValues.length,fdr=[],pValueIndices=morpheus.Util.indexSort(nominalPValues,!0),ranks=morpheus.Util.rankIndexArray(pValueIndices),i=pValueIndices.length-1;i>0;i--){var bigPValue=nominalPValues[pValueIndices[i]],smallPValue=nominalPValues[pValueIndices[i-1]];bigPValue==smallPValue&&(ranks[pValueIndices[i-1]]=ranks[pValueIndices[i]])}for(var i=0;size>i;i++){var rank=ranks[i],p=nominalPValues[i];fdr[i]=p*size/rank}for(var pIndices=morpheus.Util.indexSort(nominalPValues,!1),i=0;ii;i++)fdr[i]=Math.min(fdr[i],1);return fdr},morpheus.FDR_BH.tString=function(){return"FDR(BH)"},morpheus.Variance.toString=function(){return"Variance"},morpheus.MAD=function(list,median){null==median&&(median=morpheus.Percentile(list,50));for(var temp=[],j=0,size=list.size();size>j;j++){var value=list.getValue(j);isNaN(value)||temp.push(Math.abs(value-median))}var r=morpheus.Percentile(new morpheus.Vector("",temp.length).setArray(temp),50);return 1.4826*r},morpheus.MAD.toString=function(){return"Median absolute deviation"},morpheus.CV=function(list){var mean=morpheus.Mean(list),stdev=Math.sqrt(morpheus.Variance(list,mean));return stdev/mean},morpheus.CV.toString=function(){return"Coefficient of variation"},morpheus.BoxPlotItem=function(list){var values=morpheus.RemoveNaN(list);if(values.sort(function(a,b){return a===b?0:b>a?-1:1}),0===values.length)return{median:NaN,q1:NaN,q3:NaN,lowerAdjacentValue:NaN,upperAdjacentValue:NaN};for(var median=morpheus.ArrayPercentile(values,50,!0),q1=morpheus.ArrayPercentile(values,25,!0),q3=morpheus.ArrayPercentile(values,75,!0),w=1.5,upperAdjacentValue=-Number.MAX_VALUE,lowerAdjacentValue=Number.MAX_VALUE,upperOutlier=q3+w*(q3-q1),lowerOutlier=q1-w*(q3-q1),i=0,length=values.length;length>i;i++){var value=values[i];upperOutlier>=value&&(upperAdjacentValue=Math.max(upperAdjacentValue,value)),value>=lowerOutlier&&(lowerAdjacentValue=Math.min(lowerAdjacentValue,value))}return lowerAdjacentValue>q1&&(lowerAdjacentValue=q1),q3>upperAdjacentValue&&(upperAdjacentValue=q3),{median:median,q1:q1,q3:q3,lowerAdjacentValue:lowerAdjacentValue,upperAdjacentValue:upperAdjacentValue}},morpheus.Vector=function(name,size){this.name=name,this.array=[],this.n=size,this.properties=new morpheus.Map},morpheus.Vector.fromArray=function(name,array){var v=new morpheus.Vector(name,array.length);return v.array=array,v},morpheus.Vector.prototype={push:function(value){this.array.push(value)},getProperties:function(){return this.properties},setValue:function(index,value){this.array[index]=value},getValue:function(index){return this.array[index]},size:function(){return this.n},getName:function(){return this.name},setName:function(name){this.name=name},setArray:function(array){return this.array=array,this}},morpheus.VectorColorModel=function(){this.vectorNameToColorMap=new morpheus.Map,this.vectorNameToColorScheme=new morpheus.Map,this.colors=morpheus.VectorColorModel.TWENTY_COLORS},morpheus.VectorColorModel.YES_COLOR="#d8b365",morpheus.VectorColorModel.FEMALE="#ff99ff",morpheus.VectorColorModel.MALE="#66ccff",morpheus.VectorColorModel.TWENTY_COLORS=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"],morpheus.VectorColorModel.CATEGORY_20A=morpheus.VectorColorModel.TWENTY_COLORS,morpheus.VectorColorModel.CATEGORY_20B=["#393b79","#5254a3","#6b6ecf","#9c9ede","#637939","#8ca252","#b5cf6b","#cedb9c","#8c6d31","#bd9e39","#e7ba52","#e7cb94","#843c39","#ad494a","#d6616b","#e7969c","#7b4173","#a55194","#ce6dbd","#de9ed6"],morpheus.VectorColorModel.CATEGORY_20C=["#3182bd","#6baed6","#9ecae1","#c6dbef","#e6550d","#fd8d3c","#fdae6b","#fdd0a2","#31a354","#74c476","#a1d99b","#c7e9c0","#756bb1","#9e9ac8","#bcbddc","#dadaeb","#636363","#969696","#bdbdbd","#d9d9d9"],morpheus.VectorColorModel.CATEGORY_ALL=[].concat(morpheus.VectorColorModel.CATEGORY_20A,morpheus.VectorColorModel.CATEGORY_20B,morpheus.VectorColorModel.CATEGORY_20C),morpheus.VectorColorModel.TABLEAU10=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],morpheus.VectorColorModel.STANDARD_COLORS={na:"#c0c0c0",nan:"#c0c0c0","":"#ffffff",wt:"#ffffff",n:"#ffffff",0:"#ffffff",y:morpheus.VectorColorModel.YES_COLOR,1:morpheus.VectorColorModel.YES_COLOR,male:morpheus.VectorColorModel.MALE,m:morpheus.VectorColorModel.MALE,female:morpheus.VectorColorModel.FEMALE,f:morpheus.VectorColorModel.FEMALE,kd:"#C675A8",oe:"#56b4e9",cp:"#FF9933","trt_sh.cgs":"#C675A8",trt_oe:"#56b4e9",trt_cp:"#FF9933",a375:"#1490C1",a549:"#AAC8E9",hcc515:"#1C9C2A",hepg2:"#94DC89",ht29:"#946DBE",mcf7:"#C5B2D5",pc3:"#38C697",asc:"#FF8000",cd34:"#FFBB75",ha1e:"#FB4124",neu:"#FF9A94",npc:"#E57AC6",cancer:"#1490C1","immortalized normal":"#FF8000"},morpheus.VectorColorModel.getStandardColor=function(value){if(null==value)return"#ffffff";var stringValue=value.toString().toLowerCase();return morpheus.VectorColorModel.STANDARD_COLORS[stringValue]},morpheus.VectorColorModel.getColorMapForNumber=function(length){var colors;return colors=3>length?colorbrewer.Set1[3]:colorbrewer.Paired[length],colors?colors:morpheus.VectorColorModel.TWENTY_COLORS},morpheus.VectorColorModel.prototype={clear:function(vector){this.vectorNameToColorMap.remove(vector.getName()),this.vectorNameToColorScheme.remove(vector.getName())},copy:function(){var c=new morpheus.VectorColorModel;return c.colors=this.colors.slice(0),this.vectorNameToColorMap.forEach(function(colorMap,name){var newColorMap=new morpheus.Map;newColorMap.setAll(colorMap),c.vectorNameToColorMap.set(name,newColorMap)}),this.vectorNameToColorScheme.forEach(function(colorScheme,name){c.vectorNameToColorScheme.set(name,colorScheme.copy(new morpheus.Project(new morpheus.Dataset("",1,1))))}),c},clearAll:function(){this.vectorNameToColorMap=new morpheus.Map,this.vectorNameToColorScheme=new morpheus.Map},containsDiscreteColor:function(vector,value){var metadataValueToColorMap=this.vectorNameToColorMap.get(vector.getName());if(void 0===metadataValueToColorMap)return!1;var c=metadataValueToColorMap.get(value);return null!=c},setDiscreteColorMap:function(colors){this.colors=colors},getContinuousColorScheme:function(vector){return this.vectorNameToColorScheme.get(vector.getName())},getDiscreteColorScheme:function(vector){return this.vectorNameToColorMap.get(vector.getName())},createContinuousColorMap:function(vector){var min=morpheus.Min(vector),max=morpheus.Max(vector),cs=new morpheus.HeatMapColorScheme(new morpheus.Project(new morpheus.Dataset("",1,1)),{type:"fixed",map:[{value:min,color:colorbrewer.Greens[3][0]},{value:max,color:colorbrewer.Greens[3][2]}]});return this.vectorNameToColorScheme.set(vector.getName(),cs),cs},getContinuousMappedValue:function(vector,value){var cs=this.vectorNameToColorScheme.get(vector.getName());return void 0===cs&&(cs=this.createContinuousColorMap(vector)),cs.getColor(0,0,value)},_getColorForValue:function(value){var color=morpheus.VectorColorModel.getStandardColor(value);if(null==color)for(var existingMetadataValueToColorMap=this.vectorNameToColorMap.values(),i=0,length=existingMetadataValueToColorMap.length;length>i;i++)if(color=existingMetadataValueToColorMap[i].get(value),void 0!==color)return color;return color},getMappedValue:function(vector,value){var metadataValueToColorMap=this.vectorNameToColorMap.get(vector.getName());if(void 0===metadataValueToColorMap){metadataValueToColorMap=new morpheus.Map,this.vectorNameToColorMap.set(vector.getName(),metadataValueToColorMap);var values=morpheus.VectorUtil.getValues(vector),ncolors=0,colors=null;if(colors=values.length<3?colorbrewer.Dark2[3]:colorbrewer.Paired[values.length],colors||(colors=values.length<=20?d3.scale.category20().range():morpheus.VectorColorModel.CATEGORY_ALL),colors)for(var ncolors=colors.length,i=0,nvalues=values.length;nvalues>i;i++){ -var color=this._getColorForValue(values[i]);null==color&&(color=colors[i%ncolors]),metadataValueToColorMap.set(values[i],color)}else{var _this=this;_.each(values,function(val){_this.getMappedValue(vector,val)})}}var color=metadataValueToColorMap.get(value);if(null==color){if(color=this._getColorForValue(value),null==color){var index=metadataValueToColorMap.size();color=this.colors[index%this.colors.length]}metadataValueToColorMap.set(value,color)}return color},setMappedValue:function(vector,value,color){var metadataValueToColorMap=this.vectorNameToColorMap.get(vector.getName());void 0===metadataValueToColorMap&&(metadataValueToColorMap=new morpheus.Map,this.vectorNameToColorMap.set(vector.getName(),metadataValueToColorMap)),metadataValueToColorMap.set(value,color)}},morpheus.VectorKeys={},morpheus.VectorKeys.FIELDS="morpheus.fields",morpheus.VectorKeys.VALUE_TO_INDICES="morpheus.valueToIndices",morpheus.VectorKeys.VISIBLE_FIELDS="morpheus.visibleFields",morpheus.VectorKeys.DATA_TYPE="morpheus.dataType",morpheus.VectorKeys.ARRAY_SUMMARY_FUNCTION="morpheus.arraySummaryFunction",morpheus.VectorKeys.HEADER_SUMMARY="morpheus.headerSummary",morpheus.VectorKeys.SHOW_HEADER_SUMMARY="morpheus.showHeaderSummary",morpheus.VectorKeys.TITLE="morpheus.title",morpheus.VectorKeys.FUNCTION="morpheus.function",morpheus.VectorKeys.RECOMPUTE_FUNCTION="morpheus.recompute.function",morpheus.VectorKeys.COPY_IGNORE=new morpheus.Set,morpheus.VectorKeys.COPY_IGNORE.add(morpheus.VectorKeys.HEADER_SUMMARY),morpheus.VectorKeys.COPY_IGNORE.add(morpheus.VectorKeys.DATA_TYPE),morpheus.VectorKeys.COPY_IGNORE.add(morpheus.VectorKeys.VALUE_TO_INDICES),morpheus.VectorShapeModel=function(){this.shapes=morpheus.VectorShapeModel.SHAPES,this.vectorNameToShapeMap=new morpheus.Map},morpheus.VectorShapeModel.SHAPES=["circle","square","plus","x","asterisk","diamond","triangle-up","triangle-down","triangle-left","triangle-right","minus"],morpheus.VectorShapeModel.STANDARD_SHAPES={cp:"diamond",oe:"plus",pcl:"asterisk",kd:"minus",ctrl:"circle"},morpheus.VectorShapeModel.prototype={clear:function(vector){this.vectorNameToShapeMap.remove(vector.getName())},copy:function(){var c=new morpheus.VectorShapeModel;return c.shapes=this.shapes.slice(0),this.vectorNameToShapeMap.forEach(function(shapeMap,name){var newShapeMap=new morpheus.Map;newShapeMap.setAll(shapeMap),c.vectorNameToShapeMap.set(name,newShapeMap)}),c},clearAll:function(){this.vectorNameToShapeMap=new morpheus.Map},_getShapeForValue:function(value){if(null==value)return"none";var str=value.toString().toLowerCase(),mapped=morpheus.VectorShapeModel.STANDARD_SHAPES[str];if(void 0!==mapped)return mapped;for(var existingMetadataValueToShapeMap=this.vectorNameToShapeMap.values(),i=0,length=existingMetadataValueToShapeMap.length;length>i;i++){var shape=existingMetadataValueToShapeMap[i].get(value);if(void 0!==shape)return shape}},getMap:function(name){return this.vectorNameToShapeMap.get(name)},getMappedValue:function(vector,value){var metadataValueToShapeMap=this.vectorNameToShapeMap.get(vector.getName());if(void 0===metadataValueToShapeMap){metadataValueToShapeMap=new morpheus.Map,this.vectorNameToShapeMap.set(vector.getName(),metadataValueToShapeMap);for(var values=morpheus.VectorUtil.getValues(vector),i=0,nvalues=values.length;nvalues>i;i++){var shape=this._getShapeForValue(values[i]);null==shape&&(shape=this.shapes[i%this.shapes.length]),metadataValueToShapeMap.set(values[i],shape)}}var shape=metadataValueToShapeMap.get(value);if(null==shape){if(shape=this._getShapeForValue(value),null==shape){var index=metadataValueToShapeMap.size();shape=this.shapes[index%this.shapes.length]}metadataValueToShapeMap.set(value,shape)}return shape},setMappedValue:function(vector,value,shape){var metadataValueToShapeMap=this.vectorNameToShapeMap.get(vector.getName());void 0===metadataValueToShapeMap&&(metadataValueToShapeMap=new morpheus.Map,this.vectorNameToShapeMap.set(vector.getName(),metadataValueToShapeMap)),metadataValueToShapeMap.set(value,shape)}},morpheus.VectorUtil=function(){},morpheus.VectorUtil.createValueToIndicesMap=function(vector){if(!vector)throw"vector is null";for(var map=new morpheus.Map,j=0,size=vector.size();size>j;j++){var val=vector.getValue(j),list=map.get(val);void 0===list&&(list=[],map.set(val,list)),list.push(j)}return map},morpheus.VectorUtil.createValueToCountMap=function(vector){if(!vector)throw"vector is null";for(var map=new morpheus.Map,dataType=morpheus.VectorUtil.getDataType(vector),isArray="["===dataType[0],j=0,size=vector.size();size>j;j++){var val=vector.getValue(j);if(null!=val)if(isArray)for(var k=0;ki;i++){var s=vector.getValue(i);if(null!=s&&""!==s&&"NA"!==s&&"NaN"!==s&&!$.isNumeric(s))return!1;newValues.push(parseFloat(s))}for(var i=0,nrows=newValues.length;nrows>i;i++)vector.setValue(i,newValues[i]);return!0},morpheus.VectorUtil.createValuesToIndicesMap=function(vectors){var map=new morpheus.Map,nvectors=vectors.length;if(null==vectors[0])throw"no vectors found";for(var i=0,nitems=vectors[0].size();nitems>i;i++){for(var array=[],j=0;nvectors>j;j++){var vector=vectors[j],val=vector.getValue(i);array.push(val)}var key=new morpheus.Identifier(array),list=map.get(key);void 0===list&&(list=[],map.set(key,list)),list.push(i)}return map},morpheus.VectorUtil.createValuesToIndexMap=function(vectors){var map=new morpheus.Map,nvectors=vectors.length;if(null==vectors[0])throw"no vectors found";for(var i=0,nitems=vectors[0].size();nitems>i;i++){for(var array=[],j=0;nvectors>j;j++){var vector=vectors[j],val=vector.getValue(i);array.push(val)}var key=new morpheus.Identifier(array);map.set(key,i)}return map},morpheus.VectorUtil.containsMoreThanOneValue=function(vector){return morpheus.VectorUtil.containsMoreThanNValues(vector,1)},morpheus.VectorUtil.containsMoreThanNValues=function(vector,n){for(var s=new morpheus.Set,j=0,size=vector.size();size>j;j++){var val=vector.getValue(j);if(s.add(val),s.size()>n)return!0}return!1},morpheus.VectorUtil.createValueToIndexMap=function(vector){for(var map=new morpheus.Map,j=0,size=vector.size();size>j;j++){var val=vector.getValue(j);map.set(val,j)}return map},morpheus.VectorUtil.getValues=function(vector,excludeNull){for(var set=new morpheus.Set,j=0,size=vector.size();size>j;j++){var val=vector.getValue(j);excludeNull&&null==val||set.add(val)}var array=set.values();return array.sort(morpheus.SortKey.ASCENDING_COMPARATOR),array},morpheus.VectorUtil.getSet=function(vector){for(var set=new morpheus.Set,j=0,size=vector.size();size>j;j++)set.add(vector.getValue(j));return set},morpheus.VectorUtil.createSpanMap=function(vector){for(var previous=vector.getValue(0),startIndexToEndIndex=new morpheus.Map,start=0,i=1,nrows=vector.size();nrows>i;i++){var val=vector.getValue(i);previous!==val&&(previous=val,startIndexToEndIndex.set(start,i),start=i)}return startIndexToEndIndex.set(start,vector.size()),startIndexToEndIndex},morpheus.VectorUtil.toArray=function(vector){for(var array=[],i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);array.push(val)}return array},morpheus.VectorUtil.arrayAsVector=function(array,name){var v=new morpheus.Vector(name,array.length);return v.array=array,v},morpheus.VectorUtil.toString=function(vector){for(var array=[],i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);array.push(val)}return array.join(", ")},morpheus.VectorUtil.getDataType=function(vector){var dataType=vector.getProperties().get(morpheus.VectorKeys.DATA_TYPE);if(void 0===dataType){var firstNonNull=morpheus.VectorUtil.getFirstNonNull(vector),isArray=morpheus.Util.isArray(firstNonNull);isArray&&firstNonNull.length>0&&(firstNonNull=firstNonNull[0]),dataType=_.isString(firstNonNull)?"string":_.isNumber(firstNonNull)?"number":"object",isArray&&(dataType="["+dataType+"]"),vector.getProperties().set(morpheus.VectorKeys.DATA_TYPE,dataType)}return dataType},morpheus.VectorUtil.getMinMax=function(vector){var min=Number.MAX_VALUE,max=-Number.MAX_VALUE,fields=vector.getProperties().get(morpheus.VectorKeys.FIELDS);if(null!=fields)for(var nvalues=fields.length,i=0,size=vector.size();size>i;i++){var array=vector.getValue(i);if(array)for(var j=0;nvalues>j;j++){var value=array[j];isNaN(value)||(min=min>value?value:min,max=value>max?value:max)}}else for(var i=0,size=vector.size();size>i;i++){var value=vector.getValue(i);isNaN(value)||(min=min>value?value:min,max=value>max?value:max)}return{min:min,max:max}},morpheus.VectorUtil.getFirstNonNull=function(vector){for(var i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);if(null!=val)return val}return null},morpheus.VectorUtil.isNumber=function(vector){return _.isNumber(morpheus.VectorUtil.getFirstNonNull(vector))},morpheus.LandingPage=function(pageOptions){pageOptions=$.extend({},{el:$("#vis")},pageOptions),this.pageOptions=pageOptions;var $el=$('');this.$el=$el;var html=[];html.push('
    '),html.push('
    logo Morpheus
    '),html.push("

    Open your own file

    "),html.push('
    '),html.push("

    Or select a preloaded dataset

    "),html.push('
    '),html.push(""),$(html.join("")).appendTo($el),(new morpheus.HelpMenu).$el.appendTo($el.find("[name=help]"));var formBuilder=new morpheus.FormBuilder;formBuilder.append({name:"file",showLabel:!1,value:"",type:"file",required:!0,help:morpheus.DatasetUtil.DATASET_FILE_FORMATS}),formBuilder.$form.appendTo($el.find("[name=formRow]")),this.formBuilder=formBuilder,this.$sampleDatasetsEl=$el.find("[name=exampleRow]")},morpheus.LandingPage.prototype={dispose:function(){this.formBuilder.setValue("file",""),this.$el.hide(),$(window).off("paste.morpheus drop.morpheus dragover.morpheus dragenter.morpheus beforeunload.morpheus"),$(window).on("beforeunload.morpheus",function(){return"Are you sure you want to close Morpheus?"}),this.formBuilder.off("change")},show:function(){var _this=this;this.sampleDatasets||(this.sampleDatasets=new morpheus.SampleDatasets({$el:this.$sampleDatasetsEl,callback:function(heatMapOptions){_this.open(heatMapOptions)}})),this.$el.show(),this.formBuilder.on("change",function(e){var value=e.value;""!==value&&null!=value&&_this.openFile(value)}),$(window).on("paste.morpheus",function(e){var text=e.originalEvent.clipboardData.getData("text/plain");if(null!=text&&text.length>0){var blob=new Blob([text]),url=window.URL.createObjectURL(blob);e.preventDefault(),e.stopPropagation(),_this.openFile(url)}}).on("dragover.morpheus dragenter.morpheus",function(e){e.preventDefault(),e.stopPropagation()}).on("drop.morpheus",function(e){if(e.originalEvent.dataTransfer&&e.originalEvent.dataTransfer.files.length){e.preventDefault(),e.stopPropagation();var files=e.originalEvent.dataTransfer.files;_this.openFile(files[0])}else if(e.originalEvent.dataTransfer){var url=e.originalEvent.dataTransfer.getData("URL");e.preventDefault(),e.stopPropagation(),_this.openFile(url)}})},open:function(options){this.dispose(),null==this.heatmap?(options.landingPage=this,options.el=this.pageOptions.el,this.heatmap=new morpheus.HeatMap(options)):(options.inheritFromParent=!1,options.parent=this.heatmap,new morpheus.HeatMap(options))},openFile:function(value){var _this=this,options={dataset:value},fileName=morpheus.Util.getFileName(value);morpheus.OpenDatasetTool.fileExtensionPrompt(fileName,function(readOptions){if(readOptions){var dataset=options.dataset;options.dataset={file:dataset,options:{}};for(var key in readOptions)options.dataset.options[key]=readOptions[key]}_this.open(options)})}},morpheus.SampleDatasets=function(options){options.openText||(options.openText="Open");var _this=this,$el=options.$el;this.callback=options.callback;var exampleHtml=[];exampleHtml.push(''),exampleHtml.push(""),exampleHtml.push(''),exampleHtml.push(''),exampleHtml.push(''),exampleHtml.push(''),exampleHtml.push('"),exampleHtml.push("
    Cancer Cell Line Encyclopedia (CCLE), Project Achilles Gene Expression Copy Number By Gene Mutations Gene essentiality
    "),exampleHtml.push('
    TCGA data version 1/11/2015
    Please adhere to the TCGA publication guidelines when using TCGA data in your publications.'),exampleHtml.push('
    '),$(exampleHtml.join("")).appendTo($el),$el.find("[name=ccle]").on("click",function(e){e.preventDefault();var $this=$(this),obj={};$this.parents("tr").find("input:checked").each(function(i,c){obj[$(c).data("type")]=!0}),_this.openCCLE(obj)}),$el.on("click","[name=tcgaLink]",function(e){e.preventDefault();var $this=$(this),type=$this.data("disease-type"),obj={};$this.parents("tr").find("input:checked").each(function(i,c){obj[$(c).data("type")]=!0});for(var options,i=0;i<_this.diseases.length;i++)if(_this.diseases[i].type===type){options=_this.diseases[i];break}obj.type=type,obj.name=options.name,_this.openTcga(obj)}),$el.on("click","[data-toggle=dataTypeToggle]",function(e){var $this=$(this),$button=$this.parents("tr").find("button"),isDisabled=0===$this.parents("tr").find("input:checked").length;$button.prop("disabled",isDisabled),isDisabled||$button.removeClass("animated flash").addClass("animated flash").one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){$(this).removeClass("animated flash")})}),$.ajax("//s3.amazonaws.com/appdata.cmap.org/morpheus/tcga/tcga_index.txt").done(function(text){for(var lines=text.split("\n"),diseases=[],i=0;ia?-1:1});var tcga=[];_this.diseases=diseases,tcga.push('');for(var i=0;i"),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push("")}tcga.push("
    "+disease.name+""),disease.mrna&&tcga.push(' Gene Expression'),tcga.push(""),disease.gistic&&tcga.push(' GISTIC Copy Number'),tcga.push(""),disease.gistic&&tcga.push(' Copy Number By Gene'),tcga.push(""),disease.sig_genes&&tcga.push(' Mutations'),tcga.push(""),disease.rppa&&tcga.push(' Proteomics'),tcga.push(""),disease.methylation&&tcga.push(' Methylation'),tcga.push(""),tcga.push('
    "),$(tcga.join("")).appendTo($el.find("[name=tcga]"))})},morpheus.SampleDatasets.getTcgaDataset=function(options){var baseUrl="//s3.amazonaws.com/appdata.cmap.org/morpheus/tcga/"+options.type+"/",datasetOptions={};return options.mrna&&(datasetOptions.mrna=baseUrl+"mRNAseq_RSEM_normalized_log2.txt"),options.methylation&&(datasetOptions.methylation=baseUrl+"meth.by_mean.data.txt"),options.sig_genes&&(datasetOptions.mutation=baseUrl+"mutations_merged.maf.txt",datasetOptions.sigGenes=baseUrl+"sig_genes.txt"),options.rppa&&(datasetOptions.rppa=baseUrl+"rppa.txt"),options.gistic&&(datasetOptions.gistic=baseUrl+"all_lesions.conf_99.txt"),options.gisticGene&&(datasetOptions.gisticGene=baseUrl+"all_data_by_genes.txt"),datasetOptions.mrnaClust=baseUrl+"bestclus.txt",datasetOptions.columnAnnotations=[{file:baseUrl+"All_CDEs.txt",datasetField:"participant_id",fileField:"patient_id"}],morpheus.TcgaUtil.getDataset(datasetOptions)},morpheus.SampleDatasets.getCCLEDataset=function(options){var datasets=[];options.sig_genes&&datasets.push({dataset:"//s3.amazonaws.com/appdata.cmap.org/morpheus/CCLE_hybrid_capture1650_hg19_NoCommonSNPs_NoNeutralVariants_CDS_2012.05.07.maf.txt"}),options.cn&&datasets.push({dataset:"//s3.amazonaws.com/appdata.cmap.org/morpheus/CCLE_copynumber_byGene_2013-12-03.txt"}),options.mrna&&datasets.push({dataset:"//s3.amazonaws.com/appdata.cmap.org/morpheus/CCLE_Expression_Entrez_2012-09-29.txt"}),options.ach&&datasets.push({dataset:"//s3.amazonaws.com/appdata.cmap.org/morpheus/Achilles_QC_v2.4.3.rnai.Gs.gct"});var columnAnnotations=[{file:"//s3.amazonaws.com/appdata.cmap.org/morpheus/CCLE_Sample_Info.txt",datasetField:"id",fileField:"id"}];options.ach&&columnAnnotations.push({file:"//s3.amazonaws.com/appdata.cmap.org/morpheus/Achilles_v2.4_SampleInfo_small.txt",datasetField:"id",fileField:"id"});var datasetToReturn,returnDeferred=$.Deferred(),datasetDef=morpheus.DatasetUtil.readDatasetArray({dataset:datasets}),annotationDef=morpheus.DatasetUtil.annotate({annotations:columnAnnotations,isColumns:!0});datasetDef.done(function(d){datasetToReturn=d}),datasetDef.fail(function(message){returnDeferred.reject(message)});var annotationCallbacks;return annotationDef.done(function(callbacks){annotationCallbacks=callbacks}),annotationDef.fail(function(message){returnDeferred.reject(message)}),$.when.apply($,[datasetDef,annotationDef]).then(function(){annotationCallbacks.forEach(function(f){f(datasetToReturn)}),returnDeferred.resolve(datasetToReturn)}),returnDeferred},morpheus.SampleDatasets.prototype={openTcga:function(options){this.callback({name:options.name,renderReady:function(heatMap){for(var whitelist=["age_at_initial_pathologic_diagnosis","breast_carcinoma_estrogen_receptor_status","breast_carcinoma_progesterone_receptor_status","lab_proc_her2_neu_immunohistochemistry_receptor_status","days_to_death","ethnicity","gender","histological_type","pathologic_stage"],columnMetadata=heatMap.getProject().getFullDataset().getColumnMetadata(),i=0;ii;i++)for(var j=0,ncols=dataset.getColumnCount();ncols>j;j++)dataset.setValue(i,j,morpheus.Log2(dataset.getValue(i,j)));if(options.input.inverse_log_2)for(var i=0,nrows=dataset.getRowCount();nrows>i;i++)for(var j=0,ncols=dataset.getColumnCount();ncols>j;j++){var value=dataset.getValue(i,j);value>=0&&dataset.setValue(i,j,Math.pow(2,value))}if(options.input["z-score"])for(var i=0,nrows=dataset.getRowCount();nrows>i;i++){rowView.setIndex(i);for(var mean=morpheus.Mean(rowView),stdev=Math.sqrt(morpheus.Variance(rowView)),j=0,ncols=dataset.getColumnCount();ncols>j;j++)dataset.setValue(i,j,(dataset.getValue(i,j)-mean)/stdev)}if(options.input["robust_z-score"])for(var i=0,nrows=dataset.getRowCount();nrows>i;i++){rowView.setIndex(i);for(var median=morpheus.Median(rowView),mad=morpheus.MAD(rowView,median),j=0,ncols=dataset.getColumnCount();ncols>j;j++)dataset.setValue(i,j,(dataset.getValue(i,j)-median)/mad)}project.trigger("datasetChanged"),project.getColumnSelectionModel().setViewIndices(selectedColumnIndices,!0),project.getRowSelectionModel().setViewIndices(selectedRowIndices,!0)}}},morpheus.AnnotateDendrogramTool=function(isColumns){this._isColumns=isColumns},morpheus.AnnotateDendrogramTool.prototype={toString:function(){return"Annotate Dendrogram"},gui:function(){return[{name:"file",value:"",type:"file",required:!0,help:"an xlsx file or a tab-delimitted text file"}]},execute:function(options){var fileOrUrl=options.input.file,isColumns=this._isColumns,controller=options.controller,result=morpheus.Util.readLines(fileOrUrl),dendrogram=(morpheus.Util.getFileName(fileOrUrl),isColumns?controller.columnDendrogram:controller.rowDendrogram),nameToNode=new morpheus.Map;morpheus.AbstractDendrogram.dfs(dendrogram.tree.rootNode,function(node){return nameToNode.set(node.name,node),!0});var tab=new RegExp(" ");result.done(function(lines){var header=lines[0].split(tab),promptTool={};promptTool.execute=function(options){for(var nodeIdField=options.input.node_id_field,nodeIdIndex=_.indexOf(header,nodeIdField),numberOfMatchingNodes=0,i=1;i
    ');var formBuilder=new morpheus.FormBuilder({vertical:!0});this.formBuilder=formBuilder,formBuilder.append({name:"chart_type",type:"select",options:["boxplot","row scatter","column scatter"]});var rowOptions=[],columnOptions=[],numericRowOptions=[],numericColumnOptions=[],options=[],numericOptions=[],updateOptions=function(){var dataset=project.getFullDataset();rowOptions=[{name:"(None)",value:""}],columnOptions=[{name:"(None)",value:""}],numericRowOptions=[{name:"(None)",value:""}],numericColumnOptions=[{name:"(None)",value:""}],options=[{name:"(None)",value:""}],numericOptions=[{name:"(None)",value:""}],morpheus.MetadataUtil.getMetadataNames(dataset.getRowMetadata()).forEach(function(name){var dataType=morpheus.VectorUtil.getDataType(dataset.getRowMetadata().getByName(name));"number"!==dataType&&"[number]"!==dataType||numericRowOptions.push({name:name+" (row)",value:name+"_r"}),rowOptions.push({name:name+" (row)",value:name+"_r"})}),morpheus.MetadataUtil.getMetadataNames(dataset.getColumnMetadata()).forEach(function(name){var dataType=morpheus.VectorUtil.getDataType(dataset.getColumnMetadata().getByName(name));"number"!==dataType&&"[number]"!==dataType||numericColumnOptions.push({name:name+" (column)",value:name+"_c"}),columnOptions.push({name:name+" (column)",value:name+"_c"})}),options=options.concat(rowOptions.slice(1)),options=options.concat(columnOptions.slice(1)),numericOptions=numericOptions.concat(numericRowOptions.slice(1)),numericOptions=numericOptions.concat(numericColumnOptions.slice(1))};updateOptions(),formBuilder.append({name:"group_columns_by",type:"select",options:options}),formBuilder.append({name:"group_rows_by",type:"select",options:options}),formBuilder.append({name:"axis_label",type:"select",options:rowOptions}),formBuilder.append({name:"show_points",type:"checkbox",value:!0}),formBuilder.append({name:"color",type:"select",options:options}),formBuilder.append({name:"size",type:"select",options:numericOptions}),formBuilder.$form.find("select").on("change",function(){setVisibility(),_this.draw()}),formBuilder.$form.find("input").on("click",function(){_this.draw()}),setVisibility();var draw=function(){_.debounce(_this.draw(),100)},trackChanged=function(){updateOptions(),setVisibility(),formBuilder.setOptions("group_columns_by",options,!0),formBuilder.setOptions("group_rows_by",options,!0)};project.getColumnSelectionModel().on("selectionChanged.chart",draw),project.getRowSelectionModel().on("selectionChanged.chart",draw),project.on("trackChanged.chart",trackChanged),this.$chart=this.$el.find("[name=chartDiv]");var $dialog=$('
    '),$configPane=this.$el.find("[name=configPane]");formBuilder.$form.appendTo($configPane),this.$el.appendTo($dialog),$dialog.dialog({close:function(event,ui){project.off("trackChanged.chart",trackChanged),project.getRowSelectionModel().off("selectionChanged.chart",draw),project.getColumnSelectionModel().off("selectionChanged.chart",draw),_this.$el.empty()},resizable:!0,height:600,width:900}),this.draw()},morpheus.ChartTool2.getPlotlyDefaults=function(){var layout={autosize:!1,paper_bgcolor:"rgb(255,255,255)",plot_bgcolor:"rgb(229,229,229)",showlegend:!1,margin:{l:80,r:0,t:10,b:14,autoexpand:!0},xaxis:{zeroline:!1,titlefont:{size:12},gridcolor:"rgb(255,255,255)",showgrid:!0,showline:!1,showticklabels:!0,tickcolor:"rgb(127,127,127)",ticks:"outside",type:"linear"},yaxis:{zeroline:!1,titlefont:{size:12},gridcolor:"rgb(255,255,255)",showgrid:!0,showline:!1,showticklabels:!0,tickcolor:"rgb(127,127,127)",ticks:"outside",type:"linear"}},config={showLink:!1,displaylogo:!1,staticPlot:!1,showHints:!0,modeBarButtonsToRemove:["sendDataToCloud"]};return{layout:layout,config:config}},morpheus.ChartTool2.getVectorInfo=function(value){var field=value.substring(0,value.length-2),isColumns="_c"===value.substring(value.length-2);return{field:field,isColumns:isColumns}},morpheus.ChartTool2.prototype={annotate:function(options){var _this=this,formBuilder=new morpheus.FormBuilder;formBuilder.append({name:"annotation_name",type:"text",required:!0}),formBuilder.append({name:"annotation_value",type:"text",required:!0}),morpheus.FormBuilder.showOkCancel({title:"Annotate Selection",content:formBuilder.$form,okCallback:function(){var dataset=options.dataset,eventData=options.eventData,array=options.array,value=formBuilder.getValue("annotation_value"),annotationName=formBuilder.getValue("annotation_name"),isRows=!0,isColumns=!0,existingRowVector=null,rowVector=null;isRows&&(existingRowVector=dataset.getRowMetadata().getByName(annotationName),rowVector=dataset.getRowMetadata().add(annotationName));var existingColumnVector=null,columnVector=null;isColumns&&(existingColumnVector=dataset.getColumnMetadata().getByName(annotationName),columnVector=dataset.getColumnMetadata().add(annotationName));for(var p=0,nselected=eventData.points.length;nselected>p;p++){var item=array[eventData.points[p].pointNumber];isRows&&(_.isArray(item.row)?item.row.forEach(function(r){rowVector.setValue(r,value)}):rowVector.setValue(item.row,value)),isColumns&&columnVector.setValue(item.column,value)}isRows&&(morpheus.VectorUtil.maybeConvertStringToNumber(rowVector),_this.project.trigger("trackChanged",{vectors:[rowVector],render:null!=existingRowVector?[]:[morpheus.VectorTrack.RENDER.TEXT],columns:!1})),isColumns&&(morpheus.VectorUtil.maybeConvertStringToNumber(columnVector),_this.project.trigger("trackChanged",{vectors:[columnVector],render:null!=existingColumnVector?[]:[morpheus.VectorTrack.RENDER.TEXT],columns:!0}))}})},_createScatter:function(options){for(var dataset=options.dataset,colorByVector=options.colorByVector,colorModel=options.colorModel,sizeByVector=options.sizeByVector,sizeFunction=options.sizeFunction,myPlot=(this.heatmap,options.myPlot),isColumnScatter=options.isColumnScatter,x=[],y=[],text=[],color=colorByVector?[]:"#1f78b4",size=sizeByVector?[]:6,array=[],j=0,ncols=dataset.getColumnCount();ncols>j;j++){if(y.push(dataset.getValue(options.rowIndexOne,j)),x.push(dataset.getValue(options.rowIndexTwo,j)),array.push({row:[options.rowIndexOne,options.rowIndexTwo], -column:j}),colorByVector){var colorByValue=colorByVector.getValue(j);color.push(colorModel.getMappedValue(colorByVector,colorByValue))}if(sizeByVector){var sizeByValue=sizeByVector.getValue(j);size.push(sizeFunction(sizeByValue))}var obj={j:j};obj.toString=function(){for(var trackNames=_this.getVisibleTrackNames(!isColumnScatter),s=[],i=0;i")}return s.join("")},text.push(obj)}var trace={x:x,y:y,marker:{color:color,size:size,symbol:"circle-open"},text:text,mode:"markers",type:"scatter"},selection=null,_this=this,config=$.extend(!0,{},options.config,{modeBarButtonsToAdd:[[{name:"annotate",title:"Annotate Selection",attr:"dragmode",val:"annotate",icon:{width:1792,path:"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z",ascent:1792,descent:0},click:function(){selection?_this.annotate({array:array,eventData:selection,dataset:dataset}):morpheus.FormBuilder.showInModal({title:"Annotate Selection",html:"Please select points in the chart",close:"Close"})}}]]});Plotly.newPlot(myPlot,[trace],options.layout,config),myPlot.on("plotly_selected",function(eventData){selection=eventData})},_createBoxPlot:function(options){for(var array=options.array,points=options.points,colorByVector=options.colorByVector,colorByGetter=options.colorByGetter,colorModel=options.colorModel,myPlot=options.myPlot,dataset=options.dataset,y=[],color=points&&colorByVector?[]:"#1f78b4",text=[],x=[],sizeFunction=(this.heatmap,options.sizeFunction),sizeByGetter=options.sizeByGetter,size=sizeFunction?[]:6,scale=d3.scale.linear().domain([0,1]).range([-.3,-1]),k=0,nitems=array.length;nitems>k;k++){var item=array[k];if(y.push(dataset.getValue(item.row,item.column)),points){if(x.push(scale(Math.random())),colorByVector){var colorByValue=colorByGetter(item);color.push(colorModel.getMappedValue(colorByVector,colorByValue))}if(sizeFunction){var sizeByValue=sizeByGetter(item);size.push(sizeFunction(sizeByValue))}var obj={row:item.row,column:item.column};obj.toString=function(){for(var s=[],trackNames=_this.getVisibleTrackNames(!0),trackIndex=0;trackIndex")}trackNames=_this.getVisibleTrackNames(!1);for(var trackIndex=0;trackIndex")}return s.join("")},text.push(obj)}}var traces=[{name:"",y:y,type:"box",boxpoints:!1}];points&&traces.push({name:"",x:x,y:y,hoverinfo:"y+text",mode:"markers",type:"scatter",text:text,marker:{symbol:"circle-open",size:size,color:color}});var selection=null,_this=this,config=$.extend(!0,{},options.config,{modeBarButtonsToAdd:[[{name:"annotate",title:"Annotate Selection",attr:"dragmode",val:"annotate",icon:{width:1792,path:"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z",ascent:1792,descent:0},click:function(){selection?_this.annotate({array:array,eventData:selection,dataset:dataset}):morpheus.FormBuilder.showInModal({title:"Annotate Selection",html:"Please select points in the chart",close:"Close"})}}]]});Plotly.newPlot(myPlot,traces,options.layout,config),myPlot.on("plotly_selected",function(eventData){selection=eventData})},draw:function(){this.$chart.empty();var plotlyDefaults=morpheus.ChartTool2.getPlotlyDefaults(),layout=plotlyDefaults.layout,config=plotlyDefaults.config,chartWidth=400,chartHeight=400,points=this.formBuilder.getValue("show_points"),groupColumnsBy=this.formBuilder.getValue("group_columns_by"),titleBy=this.formBuilder.getValue("axis_label"),colorBy=this.formBuilder.getValue("color"),sizeBy=this.formBuilder.getValue("size"),groupRowsBy=this.formBuilder.getValue("group_rows_by"),chartType=this.formBuilder.getValue("chart_type"),dataset=this.project.getSelectedDataset({emptyToAll:!1});if(this.dataset=dataset,dataset.getRowCount()*dataset.getColumnCount()===0)return void $("

    Please select rows and columns in the heat map.

    ").appendTo(this.$chart);dataset.getRowCount()*dataset.getColumnCount()>1e5&&(points=!1);var grid=[],rowIds=[void 0],columnIds=[void 0],items=[],colorByInfo=(this.heatmap,morpheus.ChartTool2.getVectorInfo(colorBy)),sizeByInfo=morpheus.ChartTool2.getVectorInfo(sizeBy);if("row scatter"!==chartType&&"column scatter"!==chartType){for(var i=0,nrows=dataset.getRowCount();nrows>i;i++)for(var j=0,ncols=dataset.getColumnCount();ncols>j;j++)items.push({row:i,column:j});var colorByInfo=morpheus.ChartTool2.getVectorInfo(colorBy),colorByVector=colorByInfo.isColumns?dataset.getColumnMetadata().getByName(colorByInfo.field):dataset.getRowMetadata().getByName(colorByInfo.field),colorModel=colorByInfo.isColumns?this.project.getColumnColorModel():this.project.getRowColorModel(),colorByGetter=colorByInfo.isColumns?function(item){return colorByVector.getValue(item.column)}:function(item){return colorByVector.getValue(item.row)},sizeByVector=sizeByInfo.isColumns?dataset.getColumnMetadata().getByName(sizeByInfo.field):dataset.getRowMetadata().getByName(sizeByInfo.field),sizeByGetter=sizeByInfo.isColumns?function(item){return sizeByVector.getValue(item.column)}:function(item){return sizeByVector.getValue(item.row)},sizeByScale=null;if(sizeByVector){var minMax=morpheus.VectorUtil.getMinMax(sizeByVector);sizeByScale=d3.scale.linear().domain([minMax.min,minMax.max]).range([3,16]).clamp(!0)}if(groupColumnsBy||groupRowsBy){var rowIdToArray=new morpheus.Map;if(groupRowsBy)for(var groupRowsByInfo=morpheus.ChartTool2.getVectorInfo(groupRowsBy),vector=groupRowsByInfo.isColumns?dataset.getColumnMetadata().getByName(groupRowsByInfo.field):dataset.getRowMetadata().getByName(groupRowsByInfo.field),getter=groupRowsByInfo.isColumns?function(item){return vector.getValue(item.column)}:function(item){return vector.getValue(item.row)},i=0,nitems=items.length;nitems>i;i++){var item=items[i],value=getter(item),array=rowIdToArray.get(value);void 0==array&&(array=[],rowIdToArray.set(value,array)),array.push(item)}else rowIdToArray.set(void 0,items);if(groupColumnsBy){var name=groupColumnsBy.substring(0,groupColumnsBy.length-2),isColumns="_c"===groupColumnsBy.substring(groupColumnsBy.length-2),vector=isColumns?dataset.getColumnMetadata().getByName(name):dataset.getRowMetadata().getByName(name),getter=isColumns?function(item){return vector.getValue(item.column)}:function(item){return vector.getValue(item.row)},columnIdToIndex=new morpheus.Map,rowIndex=0;rowIdToArray.forEach(function(array,id){grid[rowIndex]=[];for(var i=0,nitems=array.length;nitems>i;i++){var item=array[i],value=getter(item),columnIndex=columnIdToIndex.get(value);void 0===columnIndex&&(columnIndex=columnIdToIndex.size(),columnIdToIndex.set(value,columnIndex)),void 0===grid[rowIndex][columnIndex]&&(grid[rowIndex][columnIndex]=[]),grid[rowIndex][columnIndex].push(item)}rowIds[rowIndex]=id,rowIndex++}),columnIdToIndex.forEach(function(index,id){columnIds[index]=id})}else{var rowIndex=0;rowIdToArray.forEach(function(array,id){grid[rowIndex]=[array],rowIds[rowIndex]=id,rowIndex++})}}else grid=[[items]];for(var gridRowCount=rowIds.length,gridColumnCount=columnIds.length,i=0;gridRowCount>i;i++){var rowId=rowIds[i],yrange=[Number.MAX_VALUE,-Number.MAX_VALUE];if("boxplot"===chartType){for(var j=0;gridColumnCount>j;j++){var array=grid[i][j];if(array)for(var k=0,nitems=array.length;nitems>k;k++){var item=array[k],value=dataset.getValue(item.row,item.column);isNaN(value)||(yrange[0]=Math.min(yrange[0],value),yrange[1]=Math.max(yrange[1],value))}}var span=yrange[1]-yrange[0],delta=.01*span;yrange[1]+=delta,yrange[0]-=delta}for(var j=0;gridColumnCount>j;j++){var array=grid[i][j],columnId=columnIds[j];if(array){var $chart=$('
    ');$chart.appendTo(this.$chart);var myPlot=$chart[0];"boxplot"===chartType&&this._createBoxPlot({layout:$.extend(!0,{},layout,{width:chartWidth,height:chartHeight,yaxis:{range:yrange,title:rowId},xaxis:{title:columnId,showticklabels:!1}}),array:array,points:points,sizeByGetter:sizeByGetter,sizeFunction:sizeByScale,colorModel:colorModel,colorByVector:colorByVector,colorByGetter:colorByGetter,myPlot:myPlot,dataset:dataset,config:config})}}}}else{var titleInfo=morpheus.ChartTool2.getVectorInfo(titleBy),isColumnScatter="column scatter"===chartType;if(isColumnScatter&&(dataset=new morpheus.TransposedDatasetView(dataset)),dataset.getRowCount()>15)return void $("

    Maximum chart size exceeded.

    ").appendTo(this.$chart);var titleVector=dataset.getRowMetadata().getByName(titleInfo.field),colorByVector=dataset.getColumnMetadata().getByName(colorByInfo.field),colorModel=isColumnScatter?this.project.getRowColorModel():this.project.getColumnColorModel(),sizeByVector=dataset.getColumnMetadata().getByName(sizeByInfo.field),sizeByScale=null;if(sizeByVector){var minMax=morpheus.VectorUtil.getMinMax(sizeByVector);sizeByScale=d3.scale.linear().domain([minMax.min,minMax.max]).range([3,16]).clamp(!0)}for(var rowIndexOne=0,nrows=dataset.getRowCount();nrows>rowIndexOne;rowIndexOne++)for(var rowIndexTwo=0;nrows>rowIndexTwo;rowIndexTwo++)if(!(rowIndexOne>rowIndexTwo)){var $chart=$('
    '),myPlot=$chart[0];if($chart.appendTo(this.$chart),rowIndexOne===rowIndexTwo){for(var array=[],j=0,ncols=dataset.getColumnCount();ncols>j;j++)array.push({row:rowIndexTwo,column:j});this._createBoxPlot({array:array,points:points,colorByVector:colorByVector,colorModel:colorModel,colorByGetter:function(item){return colorByVector.getValue(item.column)},sizeByGetter:function(item){return sizeByVector.getValue(item.column)},sizeFunction:sizeByScale,myPlot:myPlot,dataset:dataset,config:config,transposed:isColumns,layout:$.extend(!0,{},layout,{width:chartWidth,height:chartHeight,margin:{b:80},xaxis:{title:null==titleVector?"":titleVector.getValue(rowIndexTwo),showticklabels:!1}})})}else this._createScatter({isColumnScatter:isColumnScatter,rowIndexOne:rowIndexOne,rowIndexTwo:rowIndexTwo,colorByVector:colorByVector,colorModel:colorModel,colorByGetter:function(item){return colorByVector.getValue(item.column)},sizeByVector:sizeByVector,sizeFunction:sizeByScale,myPlot:myPlot,dataset:dataset,config:config,layout:$.extend(!0,{},layout,{width:chartWidth,height:chartHeight,margin:{b:80},yaxis:{title:null==titleVector?"":titleVector.getValue(rowIndexOne)},xaxis:{title:null==titleVector?"":titleVector.getValue(rowIndexTwo)}})})}}}},morpheus.CollapseDatasetTool=function(){},morpheus.CollapseDatasetTool.Functions=[morpheus.Mean,morpheus.Median,new morpheus.MaxPercentiles([25,75]),morpheus.Min,morpheus.Max],morpheus.CollapseDatasetTool.Functions.fromString=function(s){for(var i=0;i__index;__index++){__rowView.setIndex(__index);var __val=eval(__formula);"function"==typeof __val&&(__val=""),__vector.setValue(__index,__val)}__project.trigger("trackChanged",{vectors:[__vector],render:["text"],columns:isColumns})}},morpheus.DendrogramEnrichmentTool=function(isColumns){this.isColumns=isColumns},morpheus.DendrogramEnrichmentTool.prototype={toString:function(){return"Dendrogram Enrichment"},gui:function(project){var dataset=project.getSortedFilteredDataset(),fields=morpheus.MetadataUtil.getMetadataNames(this.isColumns?dataset.getColumnMetadata():dataset.getRowMetadata());return[{name:"field",options:fields,type:"bootstrap-select",multiple:!1},{name:"min_p-value_for_enrichment",type:"text",value:"0.05"},{name:"minimum_number_of_total_members_in_group",type:"text",value:"5"},{name:"minimum_number_of_members_in_group",type:"text",value:"3"}]},execute:function(options){var project=options.project,controller=options.controller,pValue=options.input["min_p-value_for_enrichment"],minTotalGroupSize=options.input.minimum_number_of_total_members_in_group,minGroupSize=options.input.minimum_number_of_members_in_group,dataset=project.getSortedFilteredDataset(),dendrogram=this.isColumns?controller.columnDendrogram:controller.rowDendrogram,vector=this.isColumns?dataset.getColumnMetadata().getByName(options.input.field):dataset.getRowMetadata().getByName(options.input.field),valueToIndices=morpheus.VectorUtil.createValueToIndicesMap(vector),valueToGlobalCount=new morpheus.Map,values=[];valueToIndices.forEach(function(indices,value){valueToGlobalCount.set(value,indices.length),values.push(value)});var nvalues=values.length,N=vector.size();morpheus.AbstractDendrogram.dfs(dendrogram.tree.rootNode,function(node){delete node.info;for(var valueToCount=new morpheus.Map,i=0;nvalues>i;i++)valueToCount.set(values[i],0);var min=node.minIndex,max=node.maxIndex,n=max-min+1;if(n>1&&n>=minTotalGroupSize){for(var i=min;max>=i;i++){var value=vector.getValue(i);valueToCount.set(value,valueToCount.get(value)+1)}for(var i=0;nvalues>i;i++){var K=valueToGlobalCount.get(values[i]),k=valueToCount.get(values[i]);if(k>=minGroupSize){var a=k,b=K-k,c=n-k,d=N+k-n-K,p=morpheus.FisherExact.fisherTest(a,b,c,d);pValue>=p&&(node.info||(node.info={}),node.info[values[i]]=p)}}}return!0}),dendrogram.setInvalid(!0),dendrogram.repaint()}},morpheus.DevAPI=function(){},morpheus.DevAPI.prototype={toString:function(){return"API"},gui:function(){return[{name:"code",value:"",type:"textarea",required:!0,help:"Enter your code"}]},execute:function(options){var project=options.project,controller=options.controller,code=options.input.code,dataset=project.getSortedFilteredDataset();eval(code),project.setFullDataset(project.getFullDataset(),!0)}},morpheus.HClusterTool=function(){},morpheus.HClusterTool.PRECOMPUTED="Matrix values (for a precomputed distance matrix)",morpheus.HClusterTool.Functions=[morpheus.Euclidean,morpheus.Jaccard,new morpheus.OneMinusFunction(morpheus.Cosine),new morpheus.OneMinusFunction(morpheus.Pearson),new morpheus.OneMinusFunction(morpheus.Spearman),morpheus.HClusterTool.PRECOMPUTED],morpheus.HClusterTool.Functions.fromString=function(s){for(var i=0;i0?new morpheus.HClusterGroupBy(d,groupByFields,f,linkageMethod):new morpheus.HCluster(morpheus.HCluster.computeDistanceMatrix(d,f),linkageMethod)};return rows&&(rowsHcl=doCluster(input.selectedColumns?new morpheus.SlicedDatasetView(dataset,null,input.selectedColumns):dataset,input.group_rows_by)),columns&&(columnsHcl=doCluster(morpheus.DatasetUtil.transposedView(input.selectedRows?new morpheus.SlicedDatasetView(dataset,input.selectedRows,null):dataset),input.group_columns_by)),{rowsHcl:rowsHcl,columnsHcl:columnsHcl}},morpheus.HClusterTool.prototype={toString:function(){return"Hierarchical Clustering"},init:function(project,form){form.setOptions("group_rows_by",morpheus.MetadataUtil.getMetadataNames(project.getFullDataset().getRowMetadata())),form.setOptions("group_columns_by",morpheus.MetadataUtil.getMetadataNames(project.getFullDataset().getColumnMetadata())),form.setVisible("group_rows_by",!1),form.setVisible("cluster_rows_in_space_of_selected_columns_only",!1),form.$form.find("[name=cluster]").on("change",function(e){var val=$(this).val(),showGroupColumns=!1,showGroupRows=!1;"Columns"===val?showGroupColumns=!0:"Rows"===val?showGroupRows=!0:(showGroupColumns=!0,showGroupRows=!0),form.setVisible("group_columns_by",showGroupColumns),form.setVisible("group_rows_by",showGroupRows),form.setVisible("cluster_columns_in_space_of_selected_rows_only",showGroupColumns),form.setVisible("cluster_rows_in_space_of_selected_columns_only",showGroupRows)})},gui:function(){return[{name:"metric",options:morpheus.HClusterTool.Functions,value:morpheus.HClusterTool.Functions[3].toString(),type:"select"},{name:"cluster",options:["Columns","Rows","Rows and columns"],value:"Columns",type:"select"},{name:"linkage_method",options:["Average","Complete","Single"],value:"Average",type:"select"},{name:"group_columns_by",options:[],type:"bootstrap-select",multiple:!0},{name:"group_rows_by",options:[],type:"bootstrap-select",multiple:!0},{name:"cluster_columns_in_space_of_selected_rows_only",type:"checkbox"},{name:"cluster_rows_in_space_of_selected_columns_only",type:"checkbox"}]},execute:function(options){var project=options.project,controller=options.controller,selectedRows=options.input.cluster_columns_in_space_of_selected_rows_only?project.getRowSelectionModel().getViewIndices().values():null,selectedColumns=options.input.cluster_rows_in_space_of_selected_columns_only?project.getColumnSelectionModel().getViewIndices().values():null,rows="Rows"==options.input.cluster||"Rows and columns"==options.input.cluster,columns="Columns"==options.input.cluster||"Rows and columns"==options.input.cluster;options.input.selectedRows=selectedRows,options.input.selectedColumns=selectedColumns;var dataset=project.getSortedFilteredDataset();if(options.input.background!==!1){var subtitle=["clustering "];rows&&subtitle.push(dataset.getRowCount()+" row"+morpheus.Util.s(dataset.getRowCount())),columns&&(subtitle.push(rows?", ":""),subtitle.push(dataset.getColumnCount()+" column"+morpheus.Util.s(dataset.getColumnCount())));var blob=new Blob(["self.onmessage = function(e) {importScripts(e.data.scripts);self.postMessage(morpheus.HClusterTool.execute(morpheus.Dataset.fromJson(e.data.dataset), e.data.input));}"]),url=window.URL.createObjectURL(blob),worker=new Worker(url);return worker.postMessage({scripts:morpheus.Util.getScriptPath(),dataset:morpheus.Dataset.toJson(dataset,{columnFields:options.input.group_columns_by||[],rowFields:options.input.group_rows_by||[]}),input:options.input}),worker.onmessage=function(e){var result=e.data;result.rowsHcl&&controller.setDendrogram(result.rowsHcl.tree,!1,result.rowsHcl.reorderedIndices),result.columnsHcl&&controller.setDendrogram(result.columnsHcl.tree,!0,result.columnsHcl.reorderedIndices),worker.terminate(),window.URL.revokeObjectURL(url)},worker}var result=morpheus.HClusterTool.execute(dataset,options.input);result.rowsHcl&&controller.setDendrogram(result.rowsHcl.tree,!1,result.rowsHcl.reorderedIndices),result.columnsHcl&&controller.setDendrogram(result.columnsHcl.tree,!0,result.columnsHcl.reorderedIndices)}},morpheus.MarkerSelection=function(){},morpheus.MarkerSelection.Functions=[morpheus.FisherExact,morpheus.FoldChange,morpheus.SignalToNoise,morpheus.createSignalToNoiseAdjust(),morpheus.TTest],morpheus.MarkerSelection.Functions.fromString=function(s){for(var i=0;i0&&$field.val($field[0].options[0].value),updateAB($field.val());var $metric=form.$form.find("[name=metric]");$metric.on("change",function(e){var isFishy="Fisher Exact Test"===$(this).val();form.setVisible("grouping_value",isFishy),form.setVisible("permutations",!isFishy),form.setVisible("number_of_markers",!isFishy)}),form.setVisible("grouping_value",!1)},gui:function(project){var dataset=project.getSortedFilteredDataset(),fields=morpheus.MetadataUtil.getMetadataNames(dataset.getColumnMetadata());return[{name:"metric",options:morpheus.MarkerSelection.Functions,value:morpheus.SignalToNoise.toString(),type:"select",help:""},{name:"grouping_value",value:"1",help:"Class values are categorized into two groups based on whether dataset values are greater than or equal to this value"},{name:"field",options:fields,type:"select",multiple:!0},{name:"class_a",title:"Class A",options:[],value:"",type:"checkbox-list",multiple:!0},{name:"class_b",title:"Class B",options:[],value:"",type:"checkbox-list",multiple:!0},{name:"number_of_markers",value:"100",type:"text",help:'The initial number of markers to show in each direction. Click to change.'},{name:"permutations",value:"0",type:"text"}]},execute:function(options){function done(){project.getRowFilter().getFilters().length>0&&project.getRowFilter().setAnd(!0,!0);for(var rowFilters=project.getRowFilter().getFilters(),i=0;ii;i++){var abcd=morpheus.createContingencyTable(list1.setIndex(i),list2.setIndex(i),groupingValue);contingencyTableVector.setValue(i,"[["+abcd[0]+", "+abcd[1]+"], ["+abcd[2]+", "+abcd[3]+"]]");var ratio=abcd[0]*abcd[3]/(abcd[1]*abcd[2]);(isNaN(ratio)||ratio===Number.POSITIVE_INFINITY)&&(ratio=0),oddsRatioVector.setValue(i,ratio),v.setValue(i,morpheus.FisherExact.fisherTest(abcd[0],abcd[1],abcd[2],abcd[3])),pvalues.push(v.getValue(i))}for(var fdr=morpheus.FDR_BH(pvalues),i=0,size=dataset.getRowCount();size>i;i++)fdrVector.setValue(i,fdr[i]);vectors.push(oddsRatioVector),vectors.push(fdrVector),vectors.push(contingencyTableVector),done()}else{if(npermutations>0){options.input.numClassA=aIndices.length,options.input.npermutations=npermutations;var blob=new Blob(["self.onmessage = function(e) {importScripts(e.data.scripts);self.postMessage(morpheus.MarkerSelection.execute(morpheus.Dataset.fromJson(e.data.dataset), e.data.input));}"]),url=window.URL.createObjectURL(blob),worker=new Worker(url),subset=new morpheus.SlicedDatasetView(dataset,null,aIndices.concat(bIndices));return worker.postMessage({scripts:morpheus.Util.getScriptPath(),dataset:morpheus.Dataset.toJson(subset,{columnFields:[],rowFields:[]}),input:options.input}),worker.onmessage=function(e){for(var result=e.data,pvalueVector=dataset.getRowMetadata().add("p_value"),fdrVector=dataset.getRowMetadata().add("FDR(BH)"),kVector=dataset.getRowMetadata().add("k"),i=0,size=pvalueVector.size();size>i;i++)pvalueVector.setValue(i,result.rowSpecificPValues[i]),fdrVector.setValue(i,result.fdr[i]),kVector.setValue(i,result.k[i]),v.setValue(i,result.scores[i]);vectors.push(pvalueVector),vectors.push(fdrVector),vectors.push(kVector),done(),worker.terminate(),window.URL.revokeObjectURL(url)},worker}for(var i=0,size=dataset.getRowCount();size>i;i++)v.setValue(i,f(list1.setIndex(i),list2.setIndex(i)));done()}}},morpheus.NearestNeighbors=function(){},morpheus.NearestNeighbors.Functions=[morpheus.Cosine,morpheus.Euclidean,morpheus.Jaccard,morpheus.Pearson,morpheus.Spearman,morpheus.WeightedMean],morpheus.NearestNeighbors.Functions.fromString=function(s){for(var i=0;i1){for(var columnView=new morpheus.DatasetColumnView(d1),newDataset=new morpheus.Dataset({name:"",rows:1,columns:d1.getColumnCount()}),j=0,ncols=d1.getColumnCount();ncols>j;j++){var v=morpheus.Percentile(columnView.setIndex(j),50);newDataset.setValue(0,j,v)}d1=newDataset}list1=new morpheus.DatasetRowView(d1);var list2=new morpheus.DatasetRowView(dataset),v=dataset.getRowMetadata().getByName(f.toString());null==v&&(v=dataset.getRowMetadata().add(f.toString()));for(var i=0,size=dataset.getRowCount();size>i;i++)v.setValue(i,f(list1,list2.setIndex(i)));isColumns?project.setColumnSortKeys([new morpheus.SortKey(f.toString(),morpheus.SortKey.SortOrder.DESCENDING)],!0):project.setRowSortKeys([new morpheus.SortKey(f.toString(),morpheus.SortKey.SortOrder.DESCENDING)],!0),project.trigger("trackChanged",{vectors:[v],render:["text"],columns:isColumns})}},morpheus.NewHeatMapTool=function(){},morpheus.NewHeatMapTool.prototype={toString:function(){return"New Heat Map (Ctrl+X)"},execute:function(options){var project=options.project,controller=options.controller,dataset=project.getSelectedDataset({selectedRows:!0,selectedColumns:!0});morpheus.DatasetUtil.shallowCopy(dataset);var name=options.input.name||controller.getName();new morpheus.HeatMap({name:name,dataset:dataset,parent:controller})}},morpheus.OpenDatasetTool=function(){this.customUrls=[]},morpheus.OpenDatasetTool.fileExtensionPrompt=function(file,callback){var ext=morpheus.Util.getExtension(morpheus.Util.getFileName(file));"maf"===ext?this._promptMaf(function(mafGeneFilter){callback(mafGeneFilter)}):"seg"===ext||"segtab"===ext?this._promptSegtab(function(regions){callback(regions)}):callback(null)},morpheus.OpenDatasetTool._promptMaf=function(promptCallback){var formBuilder=new morpheus.FormBuilder;formBuilder.append({name:"MAF_gene_symbols",value:"",type:"textarea",required:!0,help:"Enter one gene symbol per line to filter genes. Leave blank to show all genes."}),morpheus.FormBuilder.showInModal({title:"Gene Symbols",html:formBuilder.$form,close:"OK",callback:function(){for(var text=formBuilder.getValue("MAF_gene_symbols"),lines=morpheus.Util.splitOnNewLine(text),mafGeneFilter=new morpheus.Map,i=0,nlines=lines.length,counter=0;nlines>i;i++){var line=lines[i];""!==line&&mafGeneFilter.set(line,counter++)}var readOptions=mafGeneFilter.size()>0?{mafGeneFilter:mafGeneFilter}:null;promptCallback(readOptions)}})},morpheus.OpenDatasetTool._promptSegtab=function(promptCallback){var formBuilder=new morpheus.FormBuilder;formBuilder.append({name:"regions",value:"",type:"textarea",required:!0,help:"Define the regions over which you want to define the CNAs. Enter one region per line. Each line should contain region_id, chromosome, start, and end separated by a tab. Leave blank to use all unique segments in the segtab file as regions."}),morpheus.FormBuilder.showInModal({title:"Regions",html:formBuilder.$form,close:"OK",callback:function(){for(var text=formBuilder.getValue("regions"),lines=morpheus.Util.splitOnNewLine(text),regions=[],tab=/\t/,i=0,nlines=lines.length;nlines>i;i++){var line=lines[i];if(""!==line){var tokens=line.split(tab);tokens.length>=4&®ions.push({id:tokens[0],chromosome:tokens[1],start:parseInt(tokens[2]),end:parseInt(tokens[3])})}}var readOptions=regions.length>0?{regions:regions}:null;promptCallback(readOptions)}})},morpheus.OpenDatasetTool.prototype={toString:function(){return"Open Dataset"},_read:function(options,deferred){var _this=this,project=options.project,controller=options.controller,file=options.input.file,action=options.input.open_file_action,dataset=project.getSortedFilteredDataset();deferred.fail(function(err){var message=["Error opening "+morpheus.Util.getFileName(file)+"."];err.message&&(message.push("
    Cause: "),message.push(err.message)),morpheus.FormBuilder.showInModal({title:"Error",html:message.join("")})}),deferred.done(function(newDataset){morpheus.Util.getExtension(morpheus.Util.getFileName(file)),morpheus.Util.getBaseFileName(morpheus.Util.getFileName(file));if("append"===action||"append columns"===action){var appendRows="append"===action;_.each(controller.options.rows,function(item){if(item.renameTo){var v=newDataset.getRowMetadata().getByName(item.field);v&&v.setName(item.renameTo)}}),_.each(controller.options.columns,function(item){if(item.renameTo){var v=newDataset.getColumnMetadata().getByName(item.field);v&&v.setName(item.renameTo)}}),controller.options.datasetReady&&controller.options.datasetReady(newDataset);var currentDatasetMetadataNames=morpheus.MetadataUtil.getMetadataNames(appendRows?dataset.getColumnMetadata():dataset.getRowMetadata()),newDatasetMetadataNames=morpheus.MetadataUtil.getMetadataNames(appendRows?newDataset.getColumnMetadata():newDataset.getRowMetadata());if(currentDatasetMetadataNames.length>1||newDatasetMetadataNames.length>1)_this._matchAppend(newDatasetMetadataNames,currentDatasetMetadataNames,controller,function(appendOptions){if(controller.getProject().setFullDataset(appendRows?new morpheus.JoinedDataset(dataset,newDataset,appendOptions.current_dataset_annotation_name,appendOptions.new_dataset_annotation_name):new morpheus.TransposedDatasetView(new morpheus.JoinedDataset(new morpheus.TransposedDatasetView(dataset),new morpheus.TransposedDatasetView(newDataset),appendOptions.current_dataset_annotation_name,appendOptions.new_dataset_annotation_name)),!0),controller.options.renderReady&&(controller.options.renderReady(controller),controller.updateDataset()),appendRows){controller.getHeatMapElementComponent().getColorScheme().setSeparateColorSchemeForRowMetadataField("Source");var sourcesSet=morpheus.VectorUtil.getSet(controller.getProject().getFullDataset().getRowMetadata().getByName("Source"));sourcesSet.forEach(function(source){controller.autoDisplay({extension:morpheus.Util.getExtension(source),filename:source})})}controller.tabManager.setTabTitle(controller.tabId,controller.getProject().getFullDataset().getRowCount()+" row"+morpheus.Util.s(controller.getProject().getFullDataset().getRowCount())+" x "+controller.getProject().getFullDataset().getColumnCount()+" column"+morpheus.Util.s(controller.getProject().getFullDataset().getColumnCount())),controller.revalidate()});else{if(controller.getProject().setFullDataset(appendRows?new morpheus.JoinedDataset(dataset,newDataset,currentDatasetMetadataNames[0],newDatasetMetadataNames[0]):new morpheus.TransposedDatasetView(new morpheus.JoinedDataset(new morpheus.TransposedDatasetView(dataset),new morpheus.TransposedDatasetView(newDataset),currentDatasetMetadataNames[0],newDatasetMetadataNames[0])),!0),controller.options.renderReady&&(controller.options.renderReady(controller),controller.updateDataset()),appendRows){controller.getHeatMapElementComponent().getColorScheme().setSeparateColorSchemeForRowMetadataField("Source");var sourcesSet=morpheus.VectorUtil.getSet(controller.getProject().getFullDataset().getRowMetadata().getByName("Source"));sourcesSet.forEach(function(source){controller.autoDisplay({extension:morpheus.Util.getExtension(source),filename:source})})}controller.tabManager.setTabTitle(controller.tabId,controller.getProject().getFullDataset().getRowCount()+" row"+morpheus.Util.s(controller.getProject().getFullDataset().getRowCount())+" x "+controller.getProject().getFullDataset().getColumnCount()+" column"+morpheus.Util.s(controller.getProject().getFullDataset().getColumnCount())),controller.revalidate()}}else"overlay"===action?_this._matchOverlay(morpheus.MetadataUtil.getMetadataNames(newDataset.getColumnMetadata()),morpheus.MetadataUtil.getMetadataNames(dataset.getColumnMetadata()),morpheus.MetadataUtil.getMetadataNames(newDataset.getRowMetadata()),morpheus.MetadataUtil.getMetadataNames(dataset.getRowMetadata()),controller,function(appendOptions){for(var rowValueToIndexMap=morpheus.VectorUtil.createValueToIndexMap(dataset.getRowMetadata().getByName(appendOptions.current_dataset_row_annotation_name)),columnValueToIndexMap=morpheus.VectorUtil.createValueToIndexMap(dataset.getColumnMetadata().getByName(appendOptions.current_dataset_column_annotation_name)),seriesIndex=dataset.addSeries({name:newDataset.getName(),dataType:"object"}),rowVector=newDataset.getRowMetadata().getByName(appendOptions.new_dataset_row_annotation_name),rowIndices=[],newDatasetRowIndicesSubset=[],i=0,size=rowVector.size();size>i;i++){var index=rowValueToIndexMap.get(rowVector.getValue(i));void 0!==index&&(rowIndices.push(index),newDatasetRowIndicesSubset.push(i))}for(var columnVector=newDataset.getColumnMetadata().getByName(appendOptions.new_dataset_column_annotation_name),columnIndices=[],newDatasetColumnIndicesSubset=[],i=0,size=columnVector.size();size>i;i++){var index=columnValueToIndexMap.get(columnVector.getValue(i));void 0!==index&&(columnIndices.push(index),newDatasetColumnIndicesSubset.push(i))}newDataset=new morpheus.SlicedDatasetView(newDataset,newDatasetRowIndicesSubset,newDatasetColumnIndicesSubset);for(var i=0,nrows=newDataset.getRowCount();nrows>i;i++)for(var j=0,ncols=newDataset.getColumnCount();ncols>j;j++)dataset.setValue(rowIndices[i],columnIndices[j],newDataset.getValue(i,j),seriesIndex)}):"open"===action?new morpheus.HeatMap({dataset:newDataset,parent:controller,inheritFromParent:!1}):console.log("Unknown action: "+action);controller.revalidate()})},execute:function(options){var file=options.input.file,_this=this;morpheus.OpenDatasetTool.fileExtensionPrompt(file,function(readOptions){var deferred=morpheus.DatasetUtil.read(file,readOptions);_this._read(options,deferred)})},_matchAppend:function(newDatasetMetadataNames,currentDatasetMetadataNames,controller,callback){var tool={};tool.execute=function(options){return options.input},tool.toString=function(){return"Select Fields"},tool.gui=function(){var items=[{name:"current_dataset_annotation_name",options:currentDatasetMetadataNames,type:"select",required:!0}];return items.push({name:"new_dataset_annotation_name",type:"select",options:newDatasetMetadataNames,required:!0}),items},morpheus.HeatMap.showTool(tool,controller,callback)},_matchOverlay:function(newDatasetColumnMetadataNames,currentDatasetColumnMetadataNames,newDatasetRowMetadataNames,currentDatasetRowMetadataNames,controller,callback){var tool={};tool.execute=function(options){return options.input},tool.toString=function(){return"Select Fields"},tool.gui=function(){var items=[];return items.push({name:"current_dataset_column_annotation_name",options:currentDatasetColumnMetadataNames,type:"select",required:!0}),items.push({name:"new_dataset_column_annotation_name",type:"select",options:newDatasetColumnMetadataNames,required:!0}),items.push({name:"current_dataset_row_annotation_name",options:currentDatasetRowMetadataNames,type:"select",required:!0}),items.push({name:"new_dataset_row_annotation_name",type:"select",options:newDatasetRowMetadataNames,required:!0}),items},morpheus.HeatMap.showTool(tool,controller,callback)}},morpheus.OpenDendrogramTool=function(file){this._file=file},morpheus.OpenDendrogramTool.prototype={toString:function(){return"Open Dendrogram"},init:function(project,form){var setValue=function(val){var isRows="Rows"===val,names=morpheus.MetadataUtil.getMetadataNames(isRows?project.getFullDataset().getRowMetadata():project.getFullDataset().getColumnMetadata());names.unshift("Newick file does not contain node ids"),form.setOptions("match_node_id_to",names)};form.$form.find("[name=orientation]").on("change",function(e){setValue($(this).val())}),setValue("Columns")},gui:function(){return[{name:"orientation",options:["Columns","Rows"],value:"Columns",type:"radio"},{name:"match_node_id_to",options:[],type:"select"}]},execute:function(options){var fileOrUrl=this._file,isColumns="Columns"===options.input.orientation,dendrogramField=options.input.match_node_id_to;"Newick file does not contain node ids"===dendrogramField&&(dendrogramField=null);var controller=options.controller,dendrogramDeferred=morpheus.Util.getText(fileOrUrl);dendrogramDeferred.done(function(text){var dataset=options.project.getSortedFilteredDataset();isColumns&&(dataset=morpheus.DatasetUtil.transposedView(dataset));var tree=morpheus.AbstractDendrogram.parseNewick(text);if(tree.leafNodes.length!==dataset.getRowCount())throw new Error("# leaf nodes in dendrogram "+tree.leafNodes.length+" != "+dataset.getRowCount());var indices=[];if(null!=dendrogramField)for(var vector=dataset.getRowMetadata().getByName(dendrogramField),valueToIndex=morpheus.VectorUtil.createValueToIndexMap(vector),i=0,length=tree.leafNodes.length;length>i;i++){var index=valueToIndex.get(tree.leafNodes[i].name);if(void 0===index)throw new Error("Unable to find dendrogram id "+tree.leafNodes[i].name+" in annotations");indices.push(index)}else for(var i=0,length=tree.leafNodes.length;length>i;i++)indices.push(i);controller.setDendrogram(tree,isColumns,indices)})}},morpheus.OpenFileTool=function(options){this.options=options||{}},morpheus.OpenFileTool.prototype={toString:function(){return"Open File"},gui:function(){var array=[{name:"open_file_action",options:[{name:"Annotate columns",value:"Annotate Columns"},{name:"Annotate rows",value:"Annotate Rows"},{divider:!0},{name:"Append rows to current dataset",value:"append"},{name:"Append columns to current dataset",value:"append columns"},{name:"Overlay onto current dataset",value:"overlay"},{name:"Open dataset in new tab",value:"open"},{divider:!0},{name:"Open dendrogram",value:"Open dendrogram"}],value:"open",type:"bootstrap-select"},{name:"file",showLabel:!1,placeholder:"Open your own file",value:"",type:"file",required:!0,help:morpheus.DatasetUtil.DATASET_FILE_FORMATS}];return array.options={ok:!1,size:"modal-lg"},array},init:function(project,form,initOptions){form.$form.find("[name=open_file_action]").on("change",function(e){var action=$(this).val();"append columns"===action||"append"===action||"open"===action||"overlay"===action?form.setHelpText("file",morpheus.DatasetUtil.DATASET_FILE_FORMATS):"Open dendrogram"===action?form.setHelpText("file",morpheus.DatasetUtil.DENDROGRAM_FILE_FORMATS):form.setHelpText("file",morpheus.DatasetUtil.ANNOTATION_FILE_FORMATS)}),$("

    Use your own file

    ").insertAfter(form.$form.find(".form-group:first"));var _this=this,id=_.uniqueId("morpheus");form.$form.append('

    ');var $sampleDatasets=$('
    ');form.$form.append($sampleDatasets);new morpheus.SampleDatasets({$el:$sampleDatasets,callback:function(heatMapOptions){form.setValue("file",heatMapOptions.dataset),_this.ok()}});form.on("change",function(e){var value=e.value;""!==value&&null!=value&&(form.setValue("file",value),_this.ok())})},execute:function(options){var that=this;this.options.file&&(options.input.file=this.options.file);var project=options.project;if("append columns"===options.input.open_file_action||"append"===options.input.open_file_action||"open"===options.input.open_file_action||"overlay"===options.input.open_file_action)(new morpheus.OpenDatasetTool).execute(options);else if("Open dendrogram"===options.input.open_file_action)morpheus.HeatMap.showTool(new morpheus.OpenDendrogramTool(options.input.file),options.controller);else{var controller=options.controller,isAnnotateColumns="Annotate Columns"==options.input.open_file_action,fileOrUrl=options.input.file,dataset=project.getFullDataset(),fileName=morpheus.Util.getFileName(fileOrUrl);if(morpheus.Util.endsWith(fileName,".cls")){var result=morpheus.Util.readLines(fileOrUrl);result.done(function(lines){that.annotateCls(controller,dataset,fileName,isAnnotateColumns,lines)})}else if(morpheus.Util.endsWith(fileName,".gmt"))morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,buf){if(err)throw new Error("Unable to read "+fileOrUrl);var sets=(new morpheus.GmtReader).read(new morpheus.BufferedReader(new Uint8Array(buf)));that.prompt(null,dataset,controller,isAnnotateColumns,sets)});else{var result=morpheus.Util.readLines(fileOrUrl);result.done(function(lines){that.prompt(lines,dataset,controller,isAnnotateColumns,null)})}}},annotateCls:function(controller,dataset,fileName,isColumns,lines){isColumns&&(dataset=morpheus.DatasetUtil.transposedView(dataset));var assignments=(new morpheus.ClsReader).read(lines);if(assignments.length!==dataset.getRowCount())throw new Error("Number of samples in cls file does not match dataset.");for(var vector=dataset.getRowMetadata().add(morpheus.Util.getBaseFileName(fileName)),i=0;ii;i++){var line=lines[i].split(tab),id=line[fileMatchOnColumnIndex],indices=idToIndices.get(id);if(void 0!==indices)for(var nIndices=indices.length,j=0;nheaders>j;j++)for(var token=line[columnIndices[j]],v=vectors[j],r=0;nIndices>r;r++)v.setValue(indices[r],token)}}else _.each(sets,function(set){var name=set.name,members=set.ids,v=dataset.getRowMetadata().add(name);vectors.push(v),_.each(members,function(id){var indices=idToIndices.get(id);if(void 0!==indices)for(var i=0,nIndices=indices.length;nIndices>i;i++)v.setValue(indices[i],name)})});for(var i=0;iGCT 1.3 or GCT 1.2 file name',required:!0},{name:"file_format",type:"radio",options:[{name:"GCT version 1.2",value:"1.2"},{name:"GCT version 1.3",value:"1.3"}],value:"1.3",required:!0}]},execute:function(options){var project=options.project,format=options.input.file_format,fileName=options.input.file_name,dataset=(options.controller,project.getSortedFilteredDataset()),text="1.2"===format?(new morpheus.GctWriter12).write(dataset):(new morpheus.GctWriter).write(dataset),blob=new Blob([text],{type:"text/plain;charset=charset=utf-8"});morpheus.Util.endsWith(fileName.toLowerCase(),".gct")||(fileName+=".gct"),saveAs(blob,fileName,!0)}},morpheus.SaveImageTool=function(){},morpheus.SaveImageTool.prototype={toString:function(){return"Save Image"},gui:function(){return[{name:"file_name",type:"text",required:!0},{name:"format",type:"select",options:["png","svg"],value:"svg",required:!0}]},execute:function(options){var fileName=options.input.file_name,format=options.input.format;morpheus.Util.endsWith(fileName.toLowerCase(),"."+format)||(fileName+="."+format);var controller=options.controller;controller.saveImage(fileName,format)}},morpheus.TransposeTool=function(){},morpheus.TransposeTool.prototype={toString:function(){return"Transpose"},execute:function(options){var project=options.project,controller=options.controller,dataset=new morpheus.TransposedDatasetView(project.getSortedFilteredDataset()),rowMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getRowMetadata()),columnMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getColumnMetadata());dataset.getRowMetadata=function(){return rowMetadataModel},dataset.getColumnMetadata=function(){return columnMetadataModel};var name=options.input.name||controller.getName();new morpheus.HeatMap({name:name,dataset:dataset,inheritFromParentOptions:{transpose:!0},parent:controller})}},morpheus.WordCloudTool=function(){},morpheus.WordCloudTool.draw=function(options){function draw(words){g.selectAll("text").data(words).enter().append("text").style("font-family","Impact").on("mouseover",function(d){d3.select(this).transition().style("font-size",2*fontSizeScale(d.size)+"px")}).on("mouseout",function(d){d3.select(this).transition().style("font-size",fontSizeScale(d.size)+"px")}).on("click",function(d){options.heatMap.getToolbar().setSearchText({isColumns:options.isColumns,text:d.text.indexOf(" ")?'"'+d.text+'"':d.text})}).style("fill",function(d,i){return fill(i)}).attr("text-anchor","middle").attr("transform",function(d){return"translate("+[d.x,d.y]+")rotate("+d.rotate+")"}).text(function(d){return d.text}).style("font-size",function(d){return"1px"}).transition().duration(1e3).style("font-size",function(d){return fontSizeScale(d.size)+"px"})}var width=options.width,height=options.height,words=options.words,maxSize=options.maxSize,minSize=options.minSize,fill=options.fill||d3.scale.category20b(),fontSizeScale=d3.scale.linear().range([12,24]).domain([minSize,maxSize]).clamp(!0),g=d3.select(options.el).append("svg").attr("width",width).attr("height",height).append("g");g.attr("transform","translate("+[width/2,height/2]+")"),g.style("font-weight","900");var angle=d3.scale.linear().domain([0,0]).range([0,0]).clamp(!0);d3.layout.cloud().spiral("archimedean").size([width,height]).words(words).rotate(function(){return angle(~~(5*Math.random()))}).fontSize(function(d){return d.size}).on("end",draw).start()},morpheus.WordCloudTool.drawTable=function(options){var width=options.width,maxSize=options.maxSize,minSize=options.minSize,words=options.words;words.sort(function(a,b){return a.size===b.size?0:a.sizei;i++)minSize=Math.min(minSize,words[i].size),maxSize=Math.max(maxSize,words[i].size);var fill=function(value){return colorModel.getMappedValue(vector,words[value].text)},$dialog=$('
    '),width=960,height=600;$dialog.dialog({resizable:!0,height:height+30,width:width+30}),morpheus.WordCloudTool.draw({minSize:minSize,maxSize:maxSize,isColumns:isColumns,heatMap:controller,el:$dialog[0],width:width,height:height,words:words,fill:fill}),morpheus.WordCloudTool.drawTable({minSize:minSize,maxSize:maxSize,isColumns:isColumns,heatMap:controller,el:$dialog[0],width:width,words:words})}},morpheus.AbstractCanvas=function(offscreen){this.canvas=morpheus.CanvasUtil.createCanvas(),this.lastClip=null,offscreen&&(this.offscreenCanvas=morpheus.CanvasUtil.createCanvas()),this.offset={x:0,y:0}},morpheus.AbstractCanvas.prototype={visible:!0,invalid:!0,scrollX:0,scrollY:0,prefWidth:void 0,prefHeight:void 0,getCanvas:function(){return this.canvas},scrollTop:function(pos){return void 0===pos?this.offset.y:void(this.offset.y=pos)},appendTo:function($el){$(this.canvas).appendTo($el)},scrollLeft:function(pos){return void 0===pos?this.offset.x:void(this.offset.x=pos)},dispose:function(){$(this.canvas).remove(),this.offscreenCanvas=void 0},getPrefWidth:function(){return this.prefWidth},setInvalid:function(invalid){this.invalid=invalid},setBounds:function(bounds){var backingScale=morpheus.CanvasUtil.BACKING_SCALE,canvases=[this.canvas];this.offscreenCanvas&&canvases.push(this.offscreenCanvas),null!=bounds.height&&_.each(canvases,function(canvas){canvas.height=bounds.height*backingScale,canvas.style.height=bounds.height+"px"}),null!=bounds.width&&_.each(canvases,function(canvas){canvas.width=bounds.width*backingScale,canvas.style.width=bounds.width+"px"}),null!=bounds.left&&_.each(canvases,function(canvas){canvas.style.left=bounds.left+"px"}),null!=bounds.top&&_.each(canvases,function(canvas){canvas.style.top=bounds.top+"px"})},paint:function(clip){var canvas=this.canvas,context=canvas.getContext("2d");morpheus.CanvasUtil.resetTransform(context);var width=this.getUnscaledWidth(),height=this.getUnscaledHeight();if(context.clearRect(0,0,width,height),this.prePaint&&(morpheus.CanvasUtil.resetTransform(context),context.translate(this.offset.x,this.offset.y),this.prePaint(clip,context)),morpheus.CanvasUtil.resetTransform(context),this.offscreenCanvas){if(this.invalid){var oc=this.offscreenCanvas.getContext("2d");morpheus.CanvasUtil.resetTransform(oc),context.translate(this.offset.x,this.offset.y),oc.clearRect(0,0,width,height),this.draw(clip,oc)}context.drawImage(this.offscreenCanvas,0,0,width,height)}else this.draw(clip,context);this.postPaint&&(morpheus.CanvasUtil.resetTransform(context),context.translate(this.offset.x,this.offset.y),this.postPaint(clip,context)),this.lastClip=clip,this.invalid=!1},repaint:function(){this.lastClip||(this.lastClip={x:0,y:0,width:this.getUnscaledWidth(),height:this.getUnscaledHeight()}),this.paint(this.lastClip)},draw:function(clip,context){console.log("Not implemented")},getPrefHeight:function(){return this.prefHeight},setPrefWidth:function(prefWidth){this.prefWidth=prefWidth},setPrefHeight:function(prefHeight){this.prefHeight=prefHeight},isVisible:function(){return this.visible},setVisible:function(visible){this.visible!==visible&&(this.visible=visible,this.canvas.style.display=visible?"":"none")},getUnscaledWidth:function(){return this.canvas.width/morpheus.CanvasUtil.BACKING_SCALE},getUnscaledHeight:function(){return this.canvas.height/morpheus.CanvasUtil.BACKING_SCALE},getWidth:function(){return this.canvas.width},getHeight:function(){return this.canvas.height}},morpheus.AbstractColorSupplier=function(){this.fractions=[0,.5,1],this.colors=["blue","white","red"], -this.names=null,this.min=0,this.max=1,this.missingColor="#c0c0c0",this.scalingMode=morpheus.HeatMapColorScheme.ScalingMode.RELATIVE,this.stepped=!1,this._sizer=new morpheus.HeatMapSizer,this._conditions=new morpheus.HeatMapConditions},morpheus.AbstractColorSupplier.fromJson=function(json){var cs=json.stepped?new morpheus.SteppedColorSupplier:new morpheus.GradientColorSupplier;return cs.setDiscrete(json.discrete),cs.setScalingMode(json.scalingMode),cs.setMin(json.min),cs.setMax(json.max),cs.setMissingColor(json.missingColor),cs.setFractions({colors:json.colors,fractions:json.fractions,names:json.names}),cs},morpheus.AbstractColorSupplier.prototype={discrete:!1,getSizer:function(){return this._sizer},getConditions:function(){return this._conditions},isDiscrete:function(){return this.discrete},setDiscrete:function(discrete){this.discrete=discrete},createInstance:function(){throw"not implemented"},copy:function(){var c=this.createInstance();return c.discrete=this.discrete,c.setFractions({fractions:this.fractions.slice(0),colors:this.colors.slice(0)}),null!=this.names&&(c.names=this.names.slice(0)),this._sizer&&(c._sizer=this._sizer.copy()),this._conditions&&(c._conditions=this._conditions.copy()),c.scalingMode=this.scalingMode,c.min=this.min,c.max=this.max,c.missingColor=this.missingColor,c},setMissingColor:function(missingColor){this.missingColor=missingColor},getMissingColor:function(){return this.missingColor},getScalingMode:function(){return this.scalingMode},setScalingMode:function(scalingMode){scalingMode!==this.scalingMode&&(scalingMode===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE&&(this.min=0,this.max=1),this.scalingMode=scalingMode)},isStepped:function(){return!1},getColor:function(row,column,value){throw"not implemented"},getColors:function(){return this.colors},getNames:function(){return this.names},getFractions:function(){return this.fractions},getMin:function(){return this.min},getMax:function(){return this.max},setMin:function(min){this.min=min},setMax:function(max){this.max=max},setFractions:function(options){var index=morpheus.Util.indexSort(options.fractions,!0);this.fractions=morpheus.Util.reorderArray(options.fractions,index),this.colors=morpheus.Util.reorderArray(options.colors,index),this.names=options.names?morpheus.Util.reorderArray(options.names,index):null}},morpheus.AbstractComponent=function(){this.lastClip=null;var c=document.createElement("div");c.setAttribute("tabindex","0"),c.style.outline=0,c.style.overflow="hidden",c.style.position="absolute",this.el=c,this.$el=$(c)},morpheus.AbstractComponent.prototype={visible:!0,invalid:!0,prefWidth:void 0,prefHeight:void 0,appendTo:function($el){$(this.el).appendTo($el)},dispose:function(){$(this.el).remove()},getPrefWidth:function(){return this.prefWidth},setInvalid:function(invalid){this.invalid=invalid},setBounds:function(bounds){null!=bounds.left&&this.$el.css("left",bounds.left+"px"),null!=bounds.top&&this.$el.css("top",bounds.top+"px")},paint:function(clip){this.getUnscaledWidth(),this.getUnscaledHeight();this.draw(clip),this.lastClip=clip,this.invalid=!1},repaint:function(){this.lastClip||(this.lastClip={x:0,y:0,width:this.getUnscaledWidth(),height:this.getUnscaledHeight()}),this.paint(this.lastClip)},draw:function(clip){},getPrefHeight:function(){return this.prefHeight},setPrefWidth:function(prefWidth){this.prefWidth=prefWidth},setPrefHeight:function(prefHeight){this.prefHeight=prefHeight},isVisible:function(){return this.visible},setVisible:function(visible){this.visible!==visible&&(this.visible=visible,this.el.style.display=visible?"":"none")},getUnscaledWidth:function(){return this.$el.width()},getUnscaledHeight:function(){return this.$el.height()},getWidth:function(){return this.$el.width()},getHeight:function(){return this.$el.height()}},morpheus.AbstractDendrogram=function(controller,tree,positions,project,type){morpheus.AbstractCanvas.call(this,!0),this._overviewHighlightColor="#d8b365",this._searchHighlightColor="#e41a1c",this._selectedNodeColor=type===morpheus.AbstractDendrogram.Type.COLUMN?"#377eb8":"#984ea3",this.tree=tree,this.type=type,this.squishEnabled=!1,this.controller=controller,this.positions=positions,this.project=project;var $label=$("");$label.addClass("label label-info"),$label.css("position","absolute"),this.$label=$label;var $squishedLabel=$("");$squishedLabel.addClass("label label-default"),$squishedLabel.css("position","absolute").css("top",18),this.$squishedLabel=$squishedLabel,this.$label=$label,this.cutHeight=this.tree.maxHeight,this.drawLeafNodes=!0,this.lineWidth=.7,this.selectedNodeIds={},this.selectedRootNodeIdToNode={},this.nodeIdToHighlightedPathsToRoot={};var _this=this;this.defaultStroke="rgb(0,0,0)";var mouseMove=function(event){if(!morpheus.CanvasUtil.dragging){var position=morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,_this.lastClip.x,_this.lastClip.y);if(_this.isDragHotSpot(position))_this.canvas.style.cursor=_this.getResizeCursor();else{var nodes;if(_this.getNodes)nodes=_this.getNodes(position);else{var node=_this.getNode(position);node&&(nodes=[node])}if(null!=nodes){nodes.sort(function(a,b){return a.name=radius?_this.tree.maxHeight:Math.max(0,Math.min(_this.tree.maxHeight,_this.scale.invert(radius)))}cutHeight>=_this.tree.maxHeight?_this.resetCutHeight():_this.setCutHeight(cutHeight),event.preventDefault()}}))},morpheus.AbstractDendrogram.Type={COLUMN:0,ROW:1,RADIAL:2},morpheus.AbstractDendrogram.prototype={setSelectedNode:function(node,add){var viewIndices,_this=this,selectionModel=this.type===morpheus.AbstractDendrogram.Type.COLUMN?this.project.getColumnSelectionModel():this.project.getRowSelectionModel();if(null==node)_this.selectedNodeIds={},_this.selectedRootNodeIdToNode={},viewIndices=new morpheus.Set;else if(add?viewIndices=selectionModel.getViewIndices():(viewIndices=new morpheus.Set,_this.selectedNodeIds={},_this.selectedRootNodeIdToNode={}),null!=node){if(void 0===node.children){var contains=_this.nodeIdToHighlightedPathsToRoot[node.id];add||(_this.nodeIdToHighlightedPathsToRoot={}),contains?delete _this.nodeIdToHighlightedPathsToRoot[node.id]:_this.nodeIdToHighlightedPathsToRoot[node.id]=node}else _this.selectedRootNodeIdToNode[node.id]=node,morpheus.AbstractDendrogram.dfs(node,function(d){return _this.selectedNodeIds[d.id]=!0,!0});for(var i=node.minIndex;i<=node.maxIndex;i++)viewIndices.add(i)}_this.trigger("nodeSelectionChanged",_this.selectedRootNodeIdToNode),selectionModel.setViewIndices(viewIndices,!0),_this.repaint()},getPathStroke:function(node){return this.selectedNodeIds[node.id]?this._selectedNodeColor:this.defaultStroke},getNodeFill:function(node){return this.selectedRootNodeIdToNode[node.id]?this._selectedNodeColor:node.search?this._searchHighlightColor:void 0!==node.info?this._overviewHighlightColor:void 0},resetCutHeight:function(){this.positions.setSquishedIndices(null),this.type===morpheus.AbstractDendrogram.Type.COLUMN?this.project.setGroupColumns([],!0):this.project.setGroupRows([],!0),this.$label.text(""),this.$squishedLabel.text("");var dataset=this.project.getSortedFilteredDataset(),clusterIdVector=this.type===morpheus.AbstractDendrogram.Type.COLUMN?dataset.getColumnMetadata().getByName("dendrogram_cut"):dataset.getRowMetadata().getByName("dendrogram_cut");if(clusterIdVector)for(var i=0,size=clusterIdVector.size();size>i;i++)clusterIdVector.setValue(i,NaN)},setCutHeight:function(height){this.cutHeight=height;for(var squishedIndices={},clusterNumber=0,nsquished=0,squishEnabled=this.squishEnabled,roots=morpheus.AbstractDendrogram.cutAtHeight(this.tree.rootNode,this.cutHeight),dataset=this.project.getSortedFilteredDataset(),clusterIdVector=this.type===morpheus.AbstractDendrogram.Type.COLUMN?dataset.getColumnMetadata().add("dendrogram_cut"):dataset.getRowMetadata().add("dendrogram_cut"),i=0,nroots=roots.length;nroots>i;i++){var clusterId,root=roots[i],minChild=morpheus.AbstractDendrogram.getDeepestChild(root,!0),maxChild=morpheus.AbstractDendrogram.getDeepestChild(root,!1);squishEnabled&&minChild.index===maxChild.index?(squishedIndices[minChild.index]=!0,clusterId=-2,nsquished++):(clusterNumber++,clusterId=clusterNumber);for(var j=minChild.index;j<=maxChild.index;j++)clusterIdVector.setValue(j,clusterId)}if(this.$label.text(clusterNumber+" cluster"+morpheus.Util.s(clusterNumber)),nsquished>0?this.$squishedLabel.text(nsquished+" squished"):this.$squishedLabel.text(""),squishEnabled&&this.positions.setSquishedIndices(squishedIndices),-1===this.controller.getTrackIndex(clusterIdVector.getName(),this.type===morpheus.AbstractDendrogram.Type.COLUMN)){var settings={discrete:!0,discreteAutoDetermined:!0,renderMethod:{}};settings.renderMethod[morpheus.VectorTrack.RENDER.COLOR]=!0,this.controller.addTrack(clusterIdVector.getName(),this.type===morpheus.AbstractDendrogram.Type.COLUMN,settings)}this.type===morpheus.AbstractDendrogram.Type.COLUMN?this.project.setGroupColumns([new morpheus.SortKey(clusterIdVector.getName(),morpheus.SortKey.SortOrder.UNSORTED)],!0):this.project.setGroupRows([new morpheus.SortKey(clusterIdVector.getName(),morpheus.SortKey.SortOrder.UNSORTED)],!0)},dispose:function(){var $c=$(this.canvas);$c.off("mousemove.morpheus mouseout.morpheus mouseenter.morpheus contextmenu.morpheus"),$c.remove(),this.$label.remove(),this.$squishedLabel.remove(),this.hammer.destroy(),this.canvas=null,this.$label=null,this.$squishedLabel=null,this.hammer=null},isCut:function(){return this.cutHeightmaxIndex)){var nodeFill=this.getNodeFill(node);void 0!==nodeFill&&(context.fillStyle=nodeFill,this.drawNode(context,node)),context.strokeStyle=this.getPathStroke(node);var children=node.children;if(void 0!==children){this.drawNodePath(context,node,minIndex,maxIndex);for(var i=0,nchildren=children.length;nchildren>i;i++)this.drawDFS(context,children[i],minIndex,maxIndex)}}}},morpheus.AbstractDendrogram.setIndices=function(root){var setIndex=function(node){for(var children=node.children,maxIndex=children[0].maxIndex,minIndex=children[0].minIndex,i=1,length=children.length;length>i;i++){var child=children[i];minIndex=Math.min(minIndex,child.minIndex),maxIndex=Math.max(maxIndex,child.maxIndex)}node.maxIndex=maxIndex,node.minIndex=minIndex},counter=0,visit=function(node,callback){var n,children=node.children;if(children&&(n=children.length))for(var i=-1;++inode.children[node.children.length-1].index?0:node.children.length-1,node=node.children[index]}},morpheus.AbstractDendrogram.dfs=function(node,callback,childrenAccessor){if(void 0===childrenAccessor&&(childrenAccessor=function(n){return n.children}),callback(node)){var n,children=childrenAccessor(node);if(children&&(n=children.length))for(var i=-1;++ii;i++){var copy=$.extend({},children[i]);copy.parent=node,newChildren.push(copy)}node.children=newChildren;for(var i=0,n=newChildren.length;n>i;i++)recurse(newChildren[i])}else node.index=counter,node.minIndex=counter,node.maxIndex=counter,counter++}var counter=0,rootNode=$.extend({},tree.rootNode);return rootNode.parent=void 0,recurse(rootNode),{nLeafNodes:tree.nLeafNodes,maxDepth:tree.maxDepth,rootNode:rootNode}},morpheus.AbstractDendrogram.collapseAtDepth=function(rootNode,maxDepth){morpheus.AbstractDendrogram.dfs(rootNode,function(d){return d.collapsedChildren&&(d.children=d.collapsedChildren,d.collapsedChildren=void 0),!0}),morpheus.AbstractDendrogram.dfs(rootNode,function(d){var depth=d.depth;return depth>maxDepth?(d.collapsedChildren=d.children,d.children=void 0,!1):!0})},morpheus.AbstractDendrogram.setNodeDepths=function(rootNode){function recurse(node,depth){var children=node.children;if(node.depth=depth,max=Math.max(depth,max),void 0!==children)for(var i=-1,j=depth+1,n=children.length;++imax&&(max=n.depth,maxNode=n)}),maxNode},morpheus.AbstractDendrogram.search=function(rootNode,searchText){var predicates,tokens=morpheus.Util.getAutocompleteTokens(searchText),clearSearch=!1,nmatches=0;if(null==tokens||0==tokens.length)clearSearch=!0,morpheus.AbstractDendrogram.dfs(rootNode,function(node){return node.search=!1,!0}),nmatches=-1;else{predicates=morpheus.Util.createSearchPredicates({tokens:tokens});var npredicates=predicates.length;morpheus.AbstractDendrogram.dfs(rootNode,function(node){var matches=!1;if(node.info)searchLabel:for(var name in node.info){var vals=node.info[name];if(node.info)for(var p=0;npredicates>p;p++)for(var predicate=predicates[p],i=0,nvals=vals.length;nvals>i;i++)if(predicate.accept(vals[i])){matches=!0;break searchLabel}}return node.search=matches,matches&&nmatches++,!0})}return nmatches},morpheus.AbstractDendrogram.squishNonSearchedNodes=function(heatMap,isColumns){isColumns?heatMap.getHeatMapElementComponent().getColumnPositions().setSize(13):heatMap.getHeatMapElementComponent().getRowPositions().setSize(13);var expandedLeafNodes={},dendrogram=isColumns?heatMap.columnDendrogram:heatMap.rowDendrogram;morpheus.AbstractDendrogram.dfs(dendrogram.tree.rootNode,function(node){for(var i=node.minIndex;i<=node.maxIndex;i++)node.search&&(expandedLeafNodes[i]=!0);return!0});var clusterIds=[],previous=expandedLeafNodes[0],squishedIndices={};previous||(squishedIndices[0]=!0);var clusterNumber=0;clusterIds.push(clusterNumber);for(var i=1,nleaves=dendrogram.tree.leafNodes.length;nleaves>i;i++){var expanded=expandedLeafNodes[i];expanded!==previous&&(clusterNumber++,previous=expanded),expanded||(squishedIndices[i]=!0),clusterIds.push(clusterNumber)}isColumns?(heatMap.getHeatMapElementComponent().getColumnPositions().setSquishedIndices(squishedIndices),heatMap.getProject().setGroupColumns([new morpheus.SpecifiedGroupByKey(clusterIds)],!1)):(heatMap.getHeatMapElementComponent().getRowPositions().setSquishedIndices(squishedIndices),heatMap.getProject().setGroupRows([new morpheus.SpecifiedGroupByKey(clusterIds)],!1))},morpheus.AbstractDendrogram.getLeafNodes=function(rootNode){var leafNodes=[];return morpheus.AbstractDendrogram.dfs(rootNode,function(node){return void 0===node.children&&leafNodes.push(node),!0}),leafNodes},morpheus.Util.extend(morpheus.AbstractDendrogram,morpheus.AbstractCanvas),morpheus.Util.extend(morpheus.AbstractDendrogram,morpheus.Events),morpheus.CanvasUtil=function(){},morpheus.CanvasUtil.dragging=!1,morpheus.CanvasUtil.measureScrollbar=function(){var $c=$("
    ").appendTo("body"),dim={width:$c.width()-$c[0].clientWidth,height:$c.height()-$c[0].clientHeight};return $c.remove(),dim},morpheus.CanvasUtil.FONT_NAME='"Helvetica Neue",Helvetica,Arial,sans-serif',morpheus.CanvasUtil.FONT_COLOR="rgb(34, 34, 34)",morpheus.CanvasUtil.getPreferredSize=function(c){var size=c.getPreferredSize(),prefWidth=c.getPrefWidth(),prefHeight=c.getPrefHeight();return void 0!==prefWidth&&(size.width=prefWidth),void 0!==prefHeight&&(size.height=prefHeight),size},morpheus.CanvasUtil.BACKING_SCALE=1,"undefined"!=typeof window&&"devicePixelRatio"in window&&window.devicePixelRatio>1&&(morpheus.CanvasUtil.BACKING_SCALE=window.devicePixelRatio),morpheus.CanvasUtil.setBounds=function(canvas,bounds){var backingScale=morpheus.CanvasUtil.BACKING_SCALE;null!=bounds.height&&(canvas.height=bounds.height*backingScale,canvas.style.height=bounds.height+"px"),null!=bounds.width&&(canvas.width=bounds.width*backingScale,canvas.style.width=bounds.width+"px"),null!=bounds.left&&(canvas.style.left=bounds.left+"px"),null!=bounds.top&&(canvas.style.top=bounds.top+"px")},morpheus.CanvasUtil.drawShape=function(context,shape,x,y,size2){0>size2||(context.beginPath(),"minus"===shape?(context.arc(x,y,size2,0,2*Math.PI,!1),context.moveTo(x-size2,y),context.lineTo(x+size2,y)):"circle"===shape?context.arc(x,y,size2,0,2*Math.PI,!1):"square"===shape?context.rect(x-size2,y-size2,2*size2,2*size2):"plus"===shape?(context.moveTo(x,y-size2),context.lineTo(x,y+size2),context.moveTo(x-size2,y),context.lineTo(x+size2,y)):"x"===shape?(context.moveTo(x-size2,y-size2),context.lineTo(x+size2,y+size2),context.moveTo(x+size2,y-size2),context.lineTo(x-size2,y+size2)):"asterisk"===shape?(context.moveTo(x-size2,y-size2),context.lineTo(x+size2,y+size2),context.moveTo(x+size2,y-size2),context.lineTo(x-size2,y+size2),context.moveTo(x,y-size2),context.lineTo(x,y+size2)):"diamond"===shape?(context.moveTo(x,y-size2),context.lineTo(x+size2,y),context.lineTo(x,y+size2),context.lineTo(x-size2,y),context.lineTo(x,y-size2)):"triangle-up"===shape?(context.moveTo(x,y-size2),context.lineTo(x+size2,y+size2),context.lineTo(x-size2,y+size2),context.lineTo(x,y-size2)):"triangle-down"===shape?(context.moveTo(x,y+size2),context.lineTo(x-size2,y-size2),context.lineTo(x+size2,y-size2),context.lineTo(x,y+size2)):"triangle-left"===shape?(context.moveTo(x-size2,y),context.lineTo(x+size2,y-size2),context.lineTo(x+size2,y+size2),context.lineTo(x-size2,y)):"triangle-right"===shape&&(context.moveTo(x+size2,y),context.lineTo(x-size2,y+size2),context.lineTo(x-size2,y-size2),context.lineTo(x+size2,y)),context.stroke())},morpheus.CanvasUtil.drawLine=function(context,x1,y1,x2,y2){context.beginPath(),context.moveTo(x1,y1),context.lineTo(x2,y2),context.stroke()},morpheus.CanvasUtil.resetTransform=function(context){context.setTransform(1,0,0,1,0,0),1!==morpheus.CanvasUtil.BACKING_SCALE&&context.scale(morpheus.CanvasUtil.BACKING_SCALE,morpheus.CanvasUtil.BACKING_SCALE)},morpheus.CanvasUtil.bezierCurveTo=function(context,start,end){var m1=(start[1]+end[1])/2;context.beginPath(),context.moveTo(start[0],start[1]),context.bezierCurveTo(start[0],m1,end[0],m1,end[0],end[1]),context.stroke()},morpheus.CanvasUtil.createCanvas=function(){var $c=$("");return $c.attr("tabindex","0"),$c.css({cursor:"default",outline:0,overflow:"hidden",position:"absolute","z-index":1}),$c[0]},morpheus.CanvasUtil.getHeaderStringWidth=function(context,s){return context.font="14px "+morpheus.CanvasUtil.FONT_NAME,context.measureText(s).width+18},morpheus.CanvasUtil.getVectorStringWidth=function(context,vector,positions,end){if(positions.getSize()<6)return 0;var fontSize=Math.min(24,positions.getSize()-2);if(0>=fontSize)return 0;context.font=fontSize+"px "+morpheus.CanvasUtil.FONT_NAME;for(var toString=morpheus.VectorTrack.vectorToString(vector),maxWidth=0,i=0,n=0>=end?vector.size():Math.min(end,vector.size());n>i;i++){var value=vector.getValue(i);if(null!=value&&""!=value){value=toString(value);var width=context.measureText(value).width;width>maxWidth&&(maxWidth=width)}}return maxWidth>0?maxWidth+2:maxWidth},morpheus.CanvasUtil.clipString=function(context,string,availTextWidth){var textWidth=context.measureText(string).width;if(availTextWidth>=textWidth)return string;var clipString="...";if(availTextWidth-=context.measureText(clipString).width,0>=availTextWidth)return clipString;for(var width=0,nChars=0,stringLength=string.length;stringLength>nChars;nChars++)if(width+=context.measureText(string[nChars]).width,width>availTextWidth){string=string.substring(0,nChars);break}return string+clipString},morpheus.CanvasUtil.toSVG=function(drawable,file){var totalSize={width:drawable.getWidth(),height:drawable.getHeight()},context=new C2S(totalSize.width,totalSize.height);context.save(),drawable.draw({x:0,y:0,width:totalSize.width,height:totalSize.height},context),context.restore();var svg=context.getSerializedSvg(),blob=new Blob([svg],{type:"text/plain;charset=utf-8"});saveAs(blob,file)},morpheus.CanvasUtil.getMousePos=function(element,event,useDelta){return morpheus.CanvasUtil.getMousePosWithScroll(element,event,0,0,useDelta)},morpheus.CanvasUtil.getClientXY=function(event,useDelta){var clientX,clientY;return event.pointers?event.pointers.length>0?(clientX=event.pointers[0].clientX-(useDelta?event.deltaX:0),clientY=event.pointers[0].clientY-(useDelta?event.deltaY:0)):(clientX=event.srcEvent.clientX-(useDelta?event.deltaX:0),clientY=event.srcEvent.clientY-(useDelta?event.deltaY:0)):(clientX=event.clientX,clientY=event.clientY),{x:clientX,y:clientY}},morpheus.CanvasUtil.getMousePosWithScroll=function(element,event,scrollX,scrollY,useDelta){return morpheus.CanvasUtil._getMousePosWithScroll(element,scrollX,scrollY,morpheus.CanvasUtil.getClientXY(event,useDelta))},morpheus.CanvasUtil._getMousePosWithScroll=function(element,scrollX,scrollY,clientXY){var rect=element.getBoundingClientRect();return{x:clientXY.x-rect.left+scrollX,y:clientXY.y-rect.top+scrollY}},morpheus.CheckBoxList=function(options){var _this=this,set=options.set||new morpheus.Set;options=$.extend(!0,{},{height:"138px",showHeader:!1,select:!1,search:!0,checkBoxSelectionOnTop:!1,rowHeader:function(item){var header=[];return header.push(' "),header.push(""),header.join("")}},options),options=morpheus.Table.createOptions(options),1===options.columns.length&&(options.maxWidth=583);for(var idColumn=options.columns[0],i=0;i'),html.push('"),html.push(''),html.push("");var $div=$(html.join("")),$checkBoxResults=$div.find("[name=checkBoxResults]");table.$gridDiv.before($div);var $selectAll=$div.find("[name=selectAll]"),$selectNone=$div.find("[name=selectNone]");$selectAll.on("click",function(e){for(var items=table.getItems(),i=0,nitems=items.length;nitems>i;i++)set.add(_this.getter(items[i]));_this.table.trigger("checkBoxSelectionChanged",{source:_this,set:set}),e.preventDefault(),_this.table.redraw()}),$div.find("[name=invertSel]").on("click",function(e){for(var items=table.getItems(),i=0,nitems=items.length;nitems>i;i++){var val=_this.getter(items[i]);set.has(val)?set.remove(val):set.add(val)}_this.table.trigger("checkBoxSelectionChanged",{source:_this,set:set}),e.preventDefault(),_this.table.redraw()}),$selectNone.on("click",function(e){for(var items=table.getItems(),i=0,nitems=items.length;nitems>i;i++)set.remove(_this.getter(items[i]));_this.table.trigger("checkBoxSelectionChanged",{source:_this,set:set}),e.preventDefault(),_this.table.redraw()}),this.set=set,this.table=table,$checkBoxResults.html("selected "+morpheus.Util.intFormat(set.size())+" of "+morpheus.Util.intFormat(table.getAllItemCount()));this.table.on("checkBoxSelectionChanged",function(){$checkBoxResults.html("selected "+morpheus.Util.intFormat(set.size())+" of "+morpheus.Util.intFormat(table.getAllItemCount())),_this.table.redraw()}),table.on("click",function(e){var $target=$(e.target),item=table.getItems()[e.row],value=_this.getter(item); -$target.is(".morpheus-hover-show")?(set.clear(),set.add(value),_this.table.trigger("checkBoxSelectionChanged",{source:_this,set:set})):(!options.select||$target.is("[type=checkbox]")&&"toggle"===$target.attr("name"))&&(set.has(value)?set.remove(value):set.add(value),_this.table.trigger("checkBoxSelectionChanged",{source:_this,set:set}))})},morpheus.CheckBoxList.prototype={setHeight:function(height){this.table.setHeight(height)},resize:function(){this.table.resize()},setSearchVisible:function(visible){this.table.setSearchVisible(visible)},getSelectedRows:function(){return this.table.getSelectedRows()},getSelectedItems:function(){return this.table.getSelectedItems()},setSelectedRows:function(rows){this.table.setSelectedRows(rows)},getItems:function(items){return this.table.getItems()},getAllItemCount:function(){return this.table.getAllItemCount()},getFilteredItemCount:function(){return this.table.getFilteredItemCount()},setFilter:function(f){this.table.setFilter(f)},redraw:function(){this.table.redraw()},getSelection:function(){return this.set},clearSelection:function(values){this.set.clear(),this.table.redraw()},setValue:function(values){this.setSelectedValues(values)},setSelectedValues:function(values){if(this.set.clear(),morpheus.Util.isArray(values))for(var i=0;ii;i++)context.lineTo(x[i],y[i]);context.stroke()}},morpheus.Util.extend(morpheus.ColumnDendrogram,morpheus.AbstractDendrogram),morpheus.ConditionalRenderingUI=function(heatmap){var _this=this;this.heatmap=heatmap;var $div=$('
    ');$div.on("click","[name=add]",function(e){var $this=$(this),$row=$this.closest(".morpheus-entry"),index=$row.index(),condition={series:null,color:"rgb(0,0,0)",shape:null,accept:function(val){return!1}};heatmap.heatmap.getColorScheme().getConditions().insert(index,condition),$row.after(_this.add(condition)),e.preventDefault()}),$div.on("click","[name=delete]",function(e){var $this=$(this),$row=$this.closest(".morpheus-entry"),index=$row.index()-1;heatmap.heatmap.getColorScheme().getConditions().remove(index),heatmap.revalidate(),$row.remove(),e.preventDefault()});var html=[];html.push('
    '),html.push('
    '),html.push(''),html.push("
    "),html.push("
    "),$div.append(html.join("")),this.$div=$div,heatmap.heatmap.getColorScheme().getConditions().getConditions().forEach(function(c){_this.add(c).appendTo($div)})},morpheus.ConditionalRenderingUI.prototype={add:function(condition){function updateAccept(){var v1=parseFloat($($v1).val());isNaN(v1)&&(v1=-Number.MAX_VALUE);var v2=parseFloat($($v2).val());isNaN(v2)&&(v2=Number.MAX_VALUE);var v1Op=$v1Op.val(),v2Op=$v2Op.val(),gtf="gt"===v1Op?function(val){return val>v1}:function(val){return val>=v1},ltf="lt"===v2Op?function(val){return v2>val}:function(val){return v2>=val};condition.v1=v1,condition.v2=v2,condition.v1Op=v1Op,condition.v2Op=v2Op,condition.accept=function(val){return gtf(val)&<f(val)},_this.heatmap.revalidate()}var _this=this,html=[];html.push('
    '),html.push('
    '),html.push("
    "),html.push('
    '),html.push(''),html.push('"),html.push("
    "),html.push('
    '),html.push(''),html.push(''),html.push(''),html.push('and'),html.push(''),html.push(''),html.push("
    "),html.push('
    '),html.push('');var shapeField=new morpheus.ShapeField(["circle","square","diamond","triangle-up","triangle-down","triangle-left","triangle-right"]);html.push('
    '),html.push("
    "),html.push('
    '),html.push(''),html.push(''),html.push("
    "),html.push("
    "),html.push('
    '),html.push('
    '),html.push('Remove'),html.push("
    "),html.push("
    "),html.push("
    ");var $el=$(html.join(""));shapeField.$el.appendTo($el.find("[name=shapeHolder]"));var $color=$el.find("[name=color]"),$series=$el.find("[id=cond_series]"),$v1=$el.find("[name=v1]"),$v2=$el.find("[name=v2]"),$v1Op=$el.find("[name=lower]"),$v2Op=$el.find("[name=upper]");return $color.val(condition.color),$series.val(condition.series),shapeField.setShapeValue(condition.shape),$v1.val(condition.v1),$v2.val(condition.v2),$v1Op.val(condition.v1Op),$v2Op.val(condition.v2Op),$v1Op.on("change",function(e){updateAccept()}),$v2Op.on("change",function(e){updateAccept()}),$v1.on("keyup",_.debounce(function(e){updateAccept()},100)),$v2.on("keyup",_.debounce(function(e){updateAccept()},100)),$color.on("change",function(e){condition.color=$(this).val(),_this.heatmap.revalidate()}),shapeField.on("change",function(e){condition.shape=e.shape,_this.heatmap.revalidate()}),$series.on("change",function(e){condition.series=$(this).val(),_this.heatmap.revalidate()}),condition.series=$series.val(),$el}},morpheus.DiscreteColorSchemeChooser=function(options){var formBuilder=new morpheus.FormBuilder,map=options.colorScheme.scale,html=['"),formBuilder.append({name:"selected_value",type:"custom",value:html.join("")});var $select=formBuilder.$form.find("[name=colorPicker]");formBuilder.append({col:"col-xs-2",name:"selected_color",type:"color"});var selectedVal=$select.val(),_this=this,$color=formBuilder.$form.find("[name=selected_color]");$color.val(map.get(selectedVal)),$color.on("change",function(e){var color=$(this).val();map.set(selectedVal,color),_this.trigger("change",{value:selectedVal,color:color})}),$select.selectpicker().change(function(){selectedVal=$select.val();var c=map.get(selectedVal);$color.val(c)}),this.$div=formBuilder.$form},morpheus.DiscreteColorSchemeChooser.prototype={dispose:function(){}},morpheus.Util.extend(morpheus.DiscreteColorSchemeChooser,morpheus.Events),morpheus.DiscreteColorSupplier=function(){this.colorMap=new morpheus.Map,this.hiddenValue=0,this.hiddenValues=new morpheus.Set,morpheus.AbstractColorSupplier.call(this),this.scalingMode=morpheus.HeatMapColorScheme.ScalingMode.FIXED},morpheus.DiscreteColorSupplier.prototype={createInstance:function(){return new morpheus.DiscreteColorSupplier},setColorMap:function(array){this.colorMap=new morpheus.Map,this.colors=[],this.fractions=[],this.names=[],this.min=Number.MAX_VALUE,this.max=-Number.MAX_VALUE;for(var i=0;i'),html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push("
    "),html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push("
    "),html.push("
    "),this.$el=$(html.join(""));var _this=this;this.$el.find("[name=add]").on("click",function(){_this.addSelected()}),this.$el.find("[name=remove]").on("click",function(){_this.removeSelected()}),this.$el.find("[name=up]").on("click",function(){_this.moveUp()}),this.$el.find("[name=down]").on("click",function(){_this.moveDown()}),this.left=this.$el.find("[name=left]")[0],this.right=this.$el.find("[name=right]")[0];for(var i=0;i');this.$div=$div,$div.append(this.addBase());var $filterMode=$div.find("[name=filterMode]");$filterMode.on("change",function(e){var isAndFilter=$filterMode.prop("checked");(isColumns?project.getColumnFilter():project.getRowFilter()).setAnd(isAndFilter),isColumns?_this.project.setColumnFilter(_this.project.getColumnFilter(),!0):_this.project.setRowFilter(_this.project.getRowFilter(),!0),e.preventDefault()}),$div.on("click","[name=add]",function(e){var $this=$(this),$row=$this.closest(".morpheus-entry"),index=$row.index(),newFilter=new morpheus.AlwaysTrueFilter;(isColumns?project.getColumnFilter():project.getRowFilter()).insert(index,newFilter),$row.after(_this.add(newFilter)),e.preventDefault()}),$div.on("click","[name=delete]",function(e){var $this=$(this),$row=$this.closest(".morpheus-entry"),index=$row.index()-1;(isColumns?project.getColumnFilter():project.getRowFilter()).remove(index),$row.remove(),isColumns?_this.project.setColumnFilter(_this.project.getColumnFilter(),!0):_this.project.setRowFilter(_this.project.getRowFilter(),!0),e.preventDefault()}),$div.on("submit","form",function(e){$(this);e.preventDefault()}),$div.on("change","[name=by]",function(e){var $this=$(this),fieldName=$this.val(),$row=$this.closest(".morpheus-entry");$row.index()-1;_this.createFilter({fieldName:fieldName,$div:$this}),isColumns?_this.project.setColumnFilter(_this.project.getColumnFilter(),!0):_this.project.setRowFilter(_this.project.getRowFilter(),!0)});for(var combinedFilter=isColumns?project.getColumnFilter():project.getRowFilter(),filters=combinedFilter.getFilters?combinedFilter.getFilters():[],i=0;iRange of values
    "),html.push(' '),html.push(' '),html.push('
    Switch to top filter');var $form=$(html.join(""));$form.appendTo($ui),$ui.find("[name=switch]").on("click",function(e){e.preventDefault();for(var newFilter=morpheus.FilterUI.topFilter(project,name,isColumns,$ui),index=-1,filters=isColumns?project.getColumnFilter().getFilters():project.getRowFilter().getFilters(),i=0;iTop
    "),html.push(''),html.push(' '),html.push('
    Switch to range filter');var $form=$(html.join(""));$form.appendTo($ui);var $n=$ui.find("[name=n]"),$direction=$ui.find("[name=direction]");if($ui.find("[name=switch]").on("click",function(e){e.preventDefault();for(var newFilter=morpheus.FilterUI.rangeFilter(project,name,isColumns,$ui),index=-1,filters=isColumns?project.getColumnFilter().getFilters():project.getRowFilter().getFilters(),i=0;i'),html.push('
    '),html.push('
    '),html.push("
    "),html.push('
    '),html.push(''),html.push("
    "),html.push(""),html.join("")},add:function(filter){var project=this.project,isColumns=this.isColumns,fields=morpheus.MetadataUtil.getMetadataNames(isColumns?project.getFullDataset().getColumnMetadata():project.getFullDataset().getRowMetadata()),html=[];html.push('
    '),html.push('
    '),html.push(""),html.push('"),html.push("
    "),html.push('
    '),html.push('
    '),html.push("
    "),html.push('
    '),html.push('
    '),html.push('Remove'),html.push("
    "),html.push("
    "),html.push("
    "),html.join("")}},morpheus.FormBuilder=function(options){var that=this;this.prefix=_.uniqueId("form"),this.$form=$(""),this.$form.attr("role","form").attr("id",this.prefix),this.vertical=options&&options.vertical,this.vertical?(this.labelClass="control-label",this.titleClass="control-label"):(this.titleClass="col-xs-12 control-label",this.labelClass="col-xs-4 control-label",this.$form.addClass("form-horizontal")),this.$form.on("submit",function(e){e.preventDefault()}),this.$form.on("dragover",function(e){var node=$(e.originalEvent.srcElement).parent().parent().prev();node.is("select")&&node.hasClass("file-input")&&($(e.originalEvent.srcElement).parent().css("border","1px solid black"),e.preventDefault(),e.stopPropagation())}).on("dragenter",function(e){var node=$(e.originalEvent.srcElement).parent().parent().prev();node.is("select")&&node.hasClass("file-input")&&($(e.originalEvent.srcElement).parent().css("border","1px solid black"),e.preventDefault(),e.stopPropagation())}).on("dragleave",function(e){var node=$(e.originalEvent.srcElement).parent().parent().prev();node.is("select")&&node.hasClass("file-input")&&($(e.originalEvent.srcElement).parent().css("border",""),e.preventDefault(),e.stopPropagation())}).on("drop",function(e){var node=$(e.originalEvent.srcElement).parent().parent().prev();if(node.is("select")&&node.hasClass("file-input")){$(e.originalEvent.srcElement).parent().css("border","");var name=node.attr("name");if(name=name.substring(0,name.length-"_picker".length),e.originalEvent.dataTransfer)if(e.originalEvent.dataTransfer.files.length){e.preventDefault(),e.stopPropagation();var files=e.originalEvent.dataTransfer.files;that.setValue(name,files[0]),that.trigger("change",{name:name,value:files[0]})}else{var url=e.originalEvent.dataTransfer.getData("URL");e.preventDefault(),e.stopPropagation(),that.setValue(name,url),that.trigger("change",{name:name,value:url})}}})},morpheus.FormBuilder.showProgressBar=function(options){var content=[];content.push('
    '),content.push('
    '),content.push('
    '),content.push('
    '),content.push("
    "),content.push('
    '),content.push(''),content.push("
    "),content.push("
    "),options.subtitle&&(content.push('
    '),content.push('

    '),content.push(options.subtitle),content.push("

    "),content.push("
    ")),content.push("
    ");var $content=$(content.join(""));return $content.find("[name=stop]").on("click",function(e){options.stop(),e.preventDefault()}),morpheus.FormBuilder.showInDraggableDiv({title:options.title,$content:$content})},morpheus.FormBuilder.showInDraggableDiv=function(options){var width=options.width||"300px",html=[];html.push('
    '),html.push('

    '+options.title+"

    "),html.push('
    '),html.push("
    ");var $div=$(html.join("")),$content=$div.find("[name=content]");return $div.find("[name=header]").on("dblclick",function(){"none"===$content.css("display")?$content.css("display",""):$content.css("display","none")}),options.$content.appendTo($content),$div.css("left",$(window).width()/2-$content.outerWidth()/2),$div.draggable({handle:"[name=header]",containment:"document"}),$div.appendTo($(document.body)),$div},morpheus.FormBuilder.promptForDataset=function(cb){var formBuilder=new morpheus.FormBuilder;formBuilder.append({name:"file",value:"",type:"file",required:!0,help:morpheus.DatasetUtil.DATASET_FILE_FORMATS});var $modal;formBuilder.on("change",function(e){var value=e.value;""!==value&&null!=value&&($modal.modal("hide"),$modal.remove(),cb(value))}),$modal=morpheus.FormBuilder.showInModal({title:"Dataset",html:formBuilder.$form,close:!1})},morpheus.FormBuilder.showInModal=function(options){var $div=morpheus.FormBuilder._showInModal({z:options.z,title:options.title,html:options.html,footer:options.close?'":null,onClose:options.callback,backdrop:options.backdrop,size:options.size});return $div},morpheus.FormBuilder.showOkCancel=function(options){options=$.extend({},{ok:!0},options);var footer=[];options.ok&&footer.push(''),options.apply&&footer.push(''),footer.push('');var $div=morpheus.FormBuilder._showInModal({title:options.title,html:options.content,footer:footer.join(""),onClose:options.hiddenCallback,size:options.size}),$ok=$div.find("[name=ok]");return $ok.on("click",function(e){options.okCallback(),$div.modal("hide")}),options.focus&&$ok.focus(),options.draggable&&$div.draggable({handle:".modal-header",containment:"document"}),$div},morpheus.FormBuilder.hasChanged=function(object,keyToUIElement){for(var keys=_.keys(keyToUIElement),i=0;i"),html.push('"),html.push("");var $div=$(html.join(""));return $div.on("mousewheel",function(e){e.stopPropagation()}),$div.find(".modal-body").html(options.html),$div.prependTo($(document.body)),$div.modal({backdrop:options.backdrop===!0}).on("hidden.bs.modal",function(e){$div.remove(),options.onClose&&options.onClose()}),$div},morpheus.FormBuilder.prototype={appendContent:function($content){this.$form.append($content)},addSeparator:function(){var html=[];html.push('
    '),this.vertical||html.push('
    '),html.push("
    "),this.vertical||html.push("
    "),html.push("
    "),this.$form.append(html.join(""))},_append:function(html,field,isFieldStart){var that=this,required=field.required,name=field.name,type=field.type;if("separator"==type)return html.push(this.vertical?'
    ':'
    '),html.push("
    "),void html.push("
    ");var title=field.title,disabled=field.disabled,help=field.help,value=field.value,showLabel=field.showLabel,col="";this.vertical||(col=field.col||"col-xs-8"),void 0===showLabel&&(showLabel="checkbox"!==type&&"button"!==type&&"radio"!==type,showLabel=showLabel||void 0!==field.options);var id=that.prefix+"_"+name;if(void 0===title&&(title=name.replace(/_/g," "),title=title[0].toUpperCase()+title.substring(1)),showLabel?(html.push('"),isFieldStart&&html.push('
    ')):isFieldStart&&!this.vertical&&html.push('
    '),"radio"===type)field.options?_.each(field.options,function(choice){var isChoiceObject=_.isObject(choice)&&void 0!==choice.value,optionValue=isChoiceObject?choice.value:choice,optionText=isChoiceObject?choice.name:choice,selected=value===optionValue;html.push('
    ")}):(html.push('
    "));else if("checkbox"===type)html.push('
    ");else if("checkbox-list"===type)html.push('
    ');else if("select"==type||"bootstrap-select"==type)"bootstrap-select"==type?html.push('"),"bootstrap-select"==field.type&&field.toggle&&(html.push('

    All | None

    '),that.$form.on("click","[name="+name+"_all]",function(evt){evt.preventDefault();var $select=that.$form.find("[name="+name+"]");$select.selectpicker("val",$.map($select.find("option"),function(o){return $(o).val()})),$select.trigger("change")}),that.$form.on("click","[name="+name+"_none]",function(evt){evt.preventDefault();var $select=that.$form.find("[name="+name+"]");$select.selectpicker("val",[]),$select.trigger("change")}));else if("textarea"==type)html.push('");else if("button"==type)html.push('");else if("custom"===type)html.push(value);else if("file"===type){html.push('"),field.url!==!1&&(html.push("
    "),html.push(''),html.push("
    ")),html.push(''),that.$form.on("change","[name="+name+"_picker]",function(evt){var $this=$(this),val=$this.val(),showTextInput="URL"===val;if("Dropbox"===val){var options={success:function(files){that.setValue(name,files[0].link),that.trigger("change",{name:name,value:files[0].link})},linkType:"direct",multiselect:!1};Dropbox.choose(options)}else"My Computer"===val&&that.$form.find("[name="+name+"_file]").click();that.$form.find("[name="+name+"_text]").css("display",showTextInput?"":"none")}),that.$form.on("keyup","[name="+name+"_text]",function(evt){var text=$.trim($(this).val());that.setValue(name,text),13===evt.which&&that.trigger("change",{name:name,value:text})}),that.$form.on("change","[name="+name+"_file]",function(evt){var files=evt.target.files;that.setValue(name,files[0]),that.trigger("change",{name:name,value:files[0]})})}else type=null==type?"text":type,"div"===type?html.push('
    "),"div"===type&&html.push("
    ");void 0!==help&&(html.push(''),html.push(help),html.push(""))},append:function(fields){var html=[],that=this,isArray=morpheus.Util.isArray(fields);isArray||(fields=[fields]),html.push('
    '),_.each(fields,function(field,index){that._append(html,field,0===index)}),html.push("
    "),html.push("
    ");var $div=$(html.join(""));this.$form.append($div);var checkBoxLists=$div.find(".checkbox-list");if(checkBoxLists.length>0){var checkBoxIndex=0;_.each(fields,function(field){if("checkbox-list"===field.type){var list=new morpheus.CheckBoxList({responsive:!1,$el:$(checkBoxLists[checkBoxIndex]),items:field.options});$(checkBoxLists[checkBoxIndex]).data("morpheus.checkbox-list",list),checkBoxIndex++}})}$div.find(".selectpicker").selectpicker({iconBase:"fa",tickIcon:"fa-check",style:"btn-default btn-sm"})},clear:function(){this.$form.empty()},getValue:function(name){var $v=this.$form.find("[name="+name+"]");return 0===$v.length&&($v=this.$form.find("[name="+name+"_picker]")),morpheus.FormBuilder.getValue($v)},setOptions:function(name,options,selectFirst){var $select=this.$form.find("[name="+name+"]"),checkBoxList=$select.data("morpheus.checkbox-list");if(checkBoxList)checkBoxList.setItems(options);else{var html=[],selection=$select.val();_.each(options,function(choice){html.push('")}),$select.html(html.join("")),$select.val(selection),selectFirst&&null==$select.val()&&$select[0].options.length>0&&$select.val($select[0].options[0].value),$select.hasClass("selectpicker")&&($select.selectpicker("refresh"),$select.selectpicker("render"))}},find:function(name){return this.$form.find("[name="+name+"]")},setHelpText:function(name,value){var v=this.$form.find("[name="+name+"_help]");v.html(value)},setValue:function(name,value){var v=this.$form.find("[name="+name+"]");if(0===v.length&&(v=this.$form.find("[name="+name+"_picker]"),"file"===v.attr("type")))return v.data("files",value);var type=v.attr("type"),list=v.data("morpheus.checkbox-list");list?list.setValue(value):("radio"===type?v.filter("[value="+value+"]").prop("checked",!0):"checkbox"===type?v.prop("checked",value):v.val(value),v.hasClass("selectpicker")&&v.selectpicker("render"))},setVisible:function(name,visible){var $div=this.$form.find("[name="+name+"]").parents(".form-group");visible?$div.show():$div.hide()},remove:function(name){var $div=this.$form.find("[name="+name+"]").parents(".form-group");$div.remove()},setEnabled:function(name,enabled){var $div=this.$form.find("[name="+name+"]");$div.attr("disabled",!enabled),enabled?$div.parents(".form-group").find("label").removeClass("text-muted"):$div.parents(".form-group").find("label").addClass("text-muted")}},morpheus.Util.extend(morpheus.FormBuilder,morpheus.Events),morpheus.GradientColorSupplier=function(){morpheus.AbstractColorSupplier.call(this),this._updateScale()},morpheus.GradientColorSupplier.prototype={createInstance:function(){return new morpheus.GradientColorSupplier},getColor:function(row,column,value){if(isNaN(value))return this.missingColor;var min=this.min,max=this.max,colors=this.colors;if(min>=value)return colors[0];if(value>=max)return colors[colors.length-1];var fraction=morpheus.SteppedColorSupplier.linearScale(value,min,max,0,100)/100;return this.colorScale(fraction)},setFractions:function(options){morpheus.AbstractColorSupplier.prototype.setFractions.call(this,options),this._updateScale()},_updateScale:function(){this.colorScale=d3.scale.linear().domain(this.fractions).range(this.colors).clamp(!0)}},morpheus.Util.extend(morpheus.GradientColorSupplier,morpheus.AbstractColorSupplier),morpheus.Grid=function(options){function getItemColumnValue(item,column){return column.getter(item)}this.options=options;var grid,_this=this;this.items=options.items,this.modelToView=null,this.viewOrder=null;var model={getLength:function(){return null!=_this.viewOrder?_this.viewOrder.length:_this.items.length},getItem:function(index){return _this.items[null!=_this.viewOrder?_this.viewOrder[index]:index]}};this.$el=options.$el;var gridOptions=$.extend({},{select:!0,headerRowHeight:0,showHeaderRow:!1,multiColumnSort:!0,multiSelect:!1,topPanelHeight:0,enableTextSelectionOnCells:!0,forceFitColumns:!0,dataItemColumnValueExtractor:getItemColumnValue,defaultFormatter:function(row,cell,value,columnDef,dataContext){if(_.isNumber(value))return morpheus.Util.nf(value);if(morpheus.Util.isArray(value)){for(var s=[],i=0,length=value.length;length>i;i++){i>0&&s.push(", ");value[i];s.push(value[i])}return s.join("")}return value}},options.gridOptions||{});if(grid=new Slick.Grid(options.$el,model,options.columns,gridOptions),this.grid=grid,grid.registerPlugin(new morpheus.AutoTooltips2),grid.onCellChange.subscribe(function(e,args){_this.trigger("edit",args)}),gridOptions.select&&(grid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:!0,multiSelect:gridOptions.multiSelect})),grid.getSelectionModel().onSelectedRangesChanged.subscribe(function(e){var nitems=grid.getDataLength();_this.trigger("selectionChanged",{selectedRows:grid.getSelectedRows().filter(function(row){return row>=0&&nitems>=row})})})),grid.onSort.subscribe(function(e,args){_this.sortCols=args.sortCols,_this._updateMappings(),grid.invalidate()}),options.$el.on("click",function(e){var cell=grid.getCellFromEvent(e);cell&&_this.trigger("click",{row:cell.row,target:e.target})}),options.$el.on("dblclick",function(e){var cell=grid.getCellFromEvent(e);cell&&_this.trigger("dblclick",{row:cell.row,target:e.target})}),options.sort){var gridSortColumns=[],gridColumns=grid.getColumns(),sortCols=[];options.sort.forEach(function(c){for(var column=null,i=0;i=0&&nitems>=row})},getSelectedItems:function(){for(var rows=this.grid.getSelectedRows(),selection=[],i=0,nrows=rows.length;nrows>i;i++)selection.push(this.items[this.convertViewIndexToModel(rows[i])]);return selection},getSelectedItem:function(){var rows=this.grid.getSelectedRows();return 1===rows.length?this.items[this.convertViewIndexToModel(rows[0])]:null},getItems:function(){for(var items=[],i=0,length=this.getFilteredItemCount();length>i;i++)items.push(this.items[this.convertViewIndexToModel(i)]);return items},getAllItemCount:function(){return this.items.length},getAllItems:function(){return this.items},getFilteredItemCount:function(){return this.viewOrder?this.viewOrder.length:this.items.length},redraw:function(){this.grid.invalidate()},redrawRows:function(rows){this.grid.invalidateRows(rows),this.grid.render()},setItems:function(items){this.items=items,this.grid.getSelectionModel()&&this.grid.setSelectedRows([]),this.setFilter(this.filter),this.columnsAutosized||this.autosizeColumns()},convertModelIndexToView:function(modelIndex){if(null!==this.modelToView){var index=this.modelToView.get(modelIndex);return void 0!==index?index:-1}return modelIndex},convertViewIndexToModel:function(viewIndex){return null!=this.viewOrder?viewIndex=0?this.viewOrder[viewIndex]:-1:viewIndex},_updateMappings:function(){var selectedViewIndices=null!=this.grid.getSelectionModel()?this.grid.getSelectedRows():null,selectedModelIndices=[];if(selectedViewIndices)for(var i=0,length=selectedViewIndices.length;length>i;i++)selectedModelIndices.push(this.convertViewIndexToModel(selectedViewIndices[i]));if(this.viewOrder=null,null!=this.filter){this.viewOrder=[];for(var i=0,length=this.items.length;length>i;i++)this.filter(this.items[i])&&this.viewOrder.push(i)}var cols=this.sortCols;if(cols&&cols.length>0){if(null==this.viewOrder){this.viewOrder=[];for(var i=0,length=this.items.length;length>i;i++)this.viewOrder.push(i)}var ncols=cols.length,items=this.items;this.viewOrder.sort(function(index1,index2){for(var i=0;ncols>i;i++){var getter=cols[i].sortCol.getter,sign=cols[i].sortAsc?1:-1,value1=getter(items[index1]),value2=getter(items[index2]),comparator=cols[i].sortCol.comparator,result=comparator(value1,value2)*sign;if(0!==result)return result}return 0})}if(null!=this.viewOrder){this.modelToView=new morpheus.Map;for(var i=0,length=this.viewOrder.length;length>i;i++)this.modelToView.set(this.viewOrder[i],i)}else this.modelToView=null;if(null!=this.grid.getSelectionModel()){for(var newSelectedViewIndices=[],i=0,length=selectedModelIndices.length;length>i;i++){var index=this.convertModelIndexToView(selectedModelIndices[i]);void 0!==index&&newSelectedViewIndices.push(index)}this.grid.setSelectedRows(newSelectedViewIndices)}},setSelectedRows:function(rows){this.grid.setSelectedRows(rows)},setFilter:function(filter){this.filter=filter,this._updateMappings(),this.grid.invalidate(),this.trigger("filter")},getFilter:function(){return this.filter},autosizeColumns:function(){this.columnsAutosized=!0;var columns=this.grid.getColumns(),items=this.getItems();if(columns&&!(columns.length<=1)){var div=document.createElement("div");document.body.appendChild(div);var $d=$(div);$d.css({position:"absolute",left:-1e3,top:-1e3});var $row=$('
    '),$cell=$row.find(".slick-cell");$row.appendTo($d);for(var gridWidth=this.options.$el.width(),maxWidth=Math.min(parseInt(gridWidth/2),400),getColumnWidth=function(column){$cell.html(column.name);var w=Math.max($cell.outerWidth(),4);if(column.prototypeValue)$cell.html(column.prototypeValue),w=Math.max($cell.outerWidth(),w);else for(var i=0,nrows=Math.min(items.length,10);nrows>i;i++){var text=column.formatter(i,null,column.getter(items[i]),column,items[i]);$cell.html(text),w=Math.max($cell.outerWidth(),w)}column.width=parseInt(Math.min(maxWidth,w))},totalWidth=0,i=0;itotalWidth||totalWidth>gridWidth&&(columns[columns.length-1].width-=totalWidth-gridWidth),$d.remove(),this.grid.resizeCanvas()}}},morpheus.Util.extend(morpheus.Grid,morpheus.Events),morpheus.AutoTooltips2=function(options){function init(grid){_grid=grid,$(_grid.getCanvasNode()).on("mouseover",".slick-row",showToolTip),$(_grid.getCanvasNode()).on("mouseout",".slick-row",hideToolTip),$(_grid.getCanvasNode()).on("mouseup",hideAll)}function destroy(){$(_grid.getCanvasNode()).off("mouseover",showToolTip),$(_grid.getCanvasNode()).off("mouseout",hideToolTip),$(_grid.getCanvasNode()).off("mouseup",hideAll)}function hideToolTip(e){var cell=_grid.getCellFromEvent(e);if(cell){var $node=$(_grid.getCellNode(cell.row,cell.cell));$node.data("bs.tooltip")&&$node.tooltip("hide")}}function hideAll(){$(_grid.getCanvasNode()).find("[data-original-title]").attr("data-original-title","").tooltip("hide")}function showToolTip(e){var cell=_grid.getCellFromEvent(e);if(cell){var $node=$(_grid.getCellNode(cell.row,cell.cell)),text="",c=_grid.getColumns()[cell.cell],show=!1;if(c.alwaysShowTooltip||$node[0].scrollWidth>$node[0].offsetWidth){var item=_grid.getDataItem(cell.row);text=c.tooltip(item,c.getter(item)),show=!0}$node.attr("data-original-title",text);var hasTip=$node.data("bs.tooltip");hasTip||$node.tooltip({placement:"auto",html:!0,container:"body",trigger:"manual"}),show?$node.tooltip("show"):hasTip&&$node.tooltip("hide")}}var _grid;$.extend(this,{init:init,destroy:destroy})},morpheus.HeatMap=function(options){morpheus.Util.loadTrackingCode();var _this=this;options=$.extend(!0,{},{el:null,dataset:void 0,rowAnnotations:void 0,columnAnnotations:void 0,columnGroupBy:void 0,rowGroupBy:void 0,colorScheme:void 0,rowSortBy:void 0,columnSortBy:void 0,rowDendrogram:void 0,columnDendrogram:void 0,columnDendrogramField:"id",rowDendrogramField:"id",rows:[],columns:[],tools:void 0,rowFilter:void 0,columnFilter:void 0,customUrls:void 0,height:"window",width:void 0,inheritFromParent:!0,inheritFromParentOptions:{transpose:!1},structureUrlProvider:void 0,promises:void 0,renderReady:void 0,datasetReady:void 0,loadedCallback:void 0,name:void 0,rowsSortable:!0,columnsSortable:!0,popupEnabled:!0,symmetric:!1,keyboard:!0,inlineTooltip:!0,$loadingImage:$('
    Loading...
    '),toolbar:{zoom:!0,tools:!0,searchRows:!0,searchColumns:!0,sort:!0,options:!0,saveImage:!0,saveDataset:!0,openFile:!0,filter:!0,colorKey:!0,searchValues:!1}},options),this.options=options,this.tooltipProvider=morpheus.HeatMapTooltipProvider,options.el?this.$el=$(options.el):this.$el=$("
    "),options.landingPage||(options.landingPage=new morpheus.LandingPage,options.landingPage.$el.prependTo(this.$el)),this.options.name||(this.options.name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(this.options.dataset.file?this.options.dataset.file:this.options.dataset)));null==this.options.parent;if(null==this.options.parent){this.tabManager=this.options.tabManager?this.options.tabManager:new morpheus.TabManager({landingPage:this.options.landingPage});var $a=$('');$a.tooltip({placement:"auto"});var $right=$('
    ');$a.appendTo($right),(new morpheus.HelpMenu).$el.appendTo($right),$right.appendTo(this.tabManager.$nav),this.options.tabManager||(this.tabManager.$nav.appendTo(this.$el),this.tabManager.$tabContent.appendTo(this.$el))}else this.options.inheritFromParent&&(this.popupItems=this.options.parent.popupItems,this.options.tabOpened||(this.options.tabOpened=this.options.parent.options.tabOpened),this.options.drawCallback=this.options.parent.options.drawCallback),this.tabManager=this.options.parent.tabManager;this.$el=$("
    "),this.$el.css({width:"100%","user-select":"none","-webkit-user-select":"none","-webkit-user-drag":"none","-webkit-tap-highlight-color":"rgba(0, 0, 0, 0)","-moz-user-select":"none","-moz-user-drag":"none","-moz-tap-highlight-color":"rgba(0, 0, 0, 0)","-ms-user-select":"none","-ms-user-drag":"none","-ms-tap-highlight-color":"rgba(0, 0, 0, 0)","-o-user-select":"none","-o-user-drag":"none","-o-tap-highlight-color":"rgba(0, 0, 0, 0)",overflow:""});var tab=this.tabManager.add({$el:this.$el,closeable:!0,rename:!0,title:this.options.name,object:this,focus:!0});options.$loadingImage&&options.$loadingImage.appendTo(this.$el),this.tabId=tab.id,this.$tabPanel=tab.$panel,this.options.dataSource=options.dataset?options.dataset.file?options.dataset.file:options.dataset:"",this._togglingInfoWindow=!1,this.tooltipMode=0,this.el=this.$el[0];var promises=[];if(options.promises)for(var i=0;iCause: "),message.push(err.message)),morpheus.FormBuilder.showInModal({title:"Error",html:message.join("")})}),promises.push(deferred),$.when.apply($,promises).then(function(){_this.options.$loadingImage&&_this.options.$loadingImage.remove(),_this._init(),heatMapLoaded()})}},morpheus.HeatMap.SPACE_BETWEEN_HEAT_MAP_AND_ANNOTATIONS=6,morpheus.HeatMap.showTool=function(tool,controller,callback){if(tool.gui){var gui=tool.gui(controller.getProject()),formBuilder=new morpheus.FormBuilder;_.each(gui,function(item){formBuilder.append(item)});var tabId=controller.getTabManager().getActiveTabId();tool.init&&tool.init(controller.getProject(),formBuilder,{controller:controller});var $formDiv,okCallback=function(){var task={name:tool.toString(),tabId:tabId};controller.getTabManager().addTask(task);var input={};_.each(gui,function(item){input[item.name]=formBuilder.getValue(item.name)}),setTimeout(function(){try{var value=tool.execute({controller:controller,project:controller.getProject(),input:input});if(value instanceof Worker){value.onerror=function(e){task.worker.terminate(),morpheus.FormBuilder.showInModal({title:"Error",html:e,close:"Close"}),e.stack&&console.log(e.stack)};var terminate=_.bind(value.terminate,value);task.worker=value,value.terminate=function(){terminate();try{controller.getTabManager().removeTask(task)}catch(x){console.log("Error removing task")}callback&&callback(input)}}else callback&&callback(input)}catch(e){morpheus.FormBuilder.showInModal({title:"Error",html:e,close:"Close"}),e.stack&&console.log(e.stack)}finally{if(void 0===task.worker)try{controller.getTabManager().removeTask(task)}catch(x){console.log("Error removing task")}tool.dispose&&tool.dispose()}},0)};tool.ok=function(){okCallback(),$formDiv.modal("hide")};var guiOptions=$.extend({},{ok:!0},gui.options);$formDiv=morpheus.FormBuilder.showOkCancel({title:tool.toString(),apply:tool.apply,ok:guiOptions.ok,size:guiOptions.size,draggable:!0,content:formBuilder.$form,align:"right",okCallback:okCallback})}else try{tool.execute({controller:controller,project:controller.getProject(),input:{}});callback&&callback({})}catch(e){morpheus.FormBuilder.showInModal({title:"Error",html:e,close:"Close"}),e.stack&&console.log(e.stack)}finally{tool.dispose&&tool.dispose()}morpheus.Util.trackEvent({eventCategory:"Tool",eventAction:tool.toString()})},morpheus.HeatMap.getSpaces=function(groupByKeys,length,gapSize){for(var previousArray=[],nkeys=groupByKeys.length,keyIndex=0;nkeys>keyIndex;keyIndex++){var key=groupByKeys[keyIndex];previousArray.push(key.getValue(0))}var spaces=[],sum=0;spaces.push(sum);for(var i=1;length>i;i++){for(var isEqual=!0,keyIndex=0;nkeys>keyIndex;keyIndex++){var key=groupByKeys[keyIndex],comparator=key.getComparator(),val=key.getValue(i),c=comparator(val,previousArray[keyIndex]);if(0!==c){isEqual=!1;for(var keyIndex2=0;nkeys>keyIndex2;keyIndex2++)previousArray[keyIndex2]=groupByKeys[keyIndex2].getValue(i);break}}isEqual||(sum+=gapSize),spaces.push(sum)}return spaces},morpheus.HeatMap.createGroupBySpaces=function(dataset,groupByKeys,gapSize){if(groupByKeys.length>0){for(var nkeys=groupByKeys.length,keyIndex=0;nkeys>keyIndex;keyIndex++)groupByKeys[keyIndex].init(dataset);return morpheus.HeatMap.getSpaces(groupByKeys,dataset.getRowCount(),gapSize)}},morpheus.HeatMap.isDendrogramVisible=function(project,isColumns){var sortKeys=isColumns?project.getColumnSortKeys():project.getRowSortKeys(),size=isColumns?project.getSortedFilteredDataset().getColumnCount():project.getSortedFilteredDataset().getRowCount();return 1===sortKeys.length?sortKeys[0]instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===sortKeys[0].name&&sortKeys[0].nvisible===size:void 0},morpheus.HeatMap.prototype={gapSize:10,updatingScroll:!1,autoDisplay:function(options){var colorScheme;if("segtab"===options.extension||"seg"===options.extension)colorScheme={type:"fixed",map:morpheus.HeatMapColorScheme.Predefined.CN().map.map(function(item){return{value:Math.pow(2,1+item.value),color:item.color}})};else if("maf"===options.extension){colorScheme=morpheus.HeatMapColorScheme.Predefined.MAF();var colorMap=morpheus.HeatMapColorScheme.Predefined.MAF().map,rowMutProfile=this.project.getFullDataset().getRowMetadata().getByName("mutation_summary"),columnMutProfile=this.project.getFullDataset().getColumnMetadata().getByName("mutation_summary"),track=this.getTrack("mutation_summary",!1);track&&track.settingFromConfig("stacked_bar"),track=this.getTrack("mutation_summary",!0),track&&track.settingFromConfig("stacked_bar");for(var i=1;ii;i++){var key=existingSortKeys[i];if(key instanceof morpheus.SortByValuesKey&&morpheus.Util.arrayEquals(key.modelIndices,modelIndices)){priorSortKeyIndex=i,key.getSortOrder()===morpheus.SortKey.SortOrder.UNSORTED?sortOrder=morpheus.SortKey.SortOrder.DESCENDING:key.getSortOrder()===morpheus.SortKey.SortOrder.DESCENDING?sortOrder=morpheus.SortKey.SortOrder.ASCENDING:key.getSortOrder()===morpheus.SortKey.SortOrder.ASCENDING?sortOrder=morpheus.SortKey.SortOrder.TOP_N:key.getSortOrder()===morpheus.SortKey.SortOrder.TOP_N&&(sortOrder=morpheus.SortKey.SortOrder.UNSORTED);break}}null==sortOrder&&(sortOrder=morpheus.SortKey.SortOrder.DESCENDING);var sortKeys;if(append)sortKeys=isColumns?project.getRowSortKeys():project.getColumnSortKeys(),-1!==priorSortKeyIndex?sortOrder===morpheus.SortKey.SortOrder.UNSORTED?sortKeys.splice(priorSortKeyIndex,1):sortKeys[priorSortKeyIndex].setSortOrder(sortOrder):sortOrder!==morpheus.SortKey.SortOrder.UNSORTED&&sortKeys.push(new morpheus.SortByValuesKey(modelIndices,sortOrder,!isColumns)),sortKeys=morpheus.SortKey.keepExistingSortKeys(sortKeys,isColumns?project.getRowSortKeys():project.getColumnSortKeys());else{var newSortKeys=sortOrder===morpheus.SortKey.SortOrder.UNSORTED?[]:[new morpheus.SortByValuesKey(modelIndices,sortOrder,!isColumns)];sortKeys=morpheus.SortKey.keepExistingSortKeys(newSortKeys,isColumns?project.getRowSortKeys():project.getColumnSortKeys())}isColumns?(project.setRowSortKeys(sortKeys,!0),this.scrollTop(0)):(project.setColumnSortKeys(sortKeys,!0),this.scrollLeft(0))}},getToolbarElement:function(){return this.toolbar.$el},getToolbar:function(){return this.toolbar},setName:function(name){this.options.name=name},getName:function(){return this.options.name},showOptions:function(){new morpheus.HeatMapOptions(this)},getProject:function(){return this.project},setDendrogram:function(tree,isColumns,viewIndices){var dendrogram=isColumns?this.columnDendrogram:this.rowDendrogram;if(dendrogram&&(dendrogram.dispose(),dendrogram=null),null!=tree){for(var modelIndices=[],modelIndexSet=new morpheus.Set,size=isColumns?this.project.getFullDataset().getColumnCount():this.project.getFullDataset().getRowCount(),i=0;size>i;i++)modelIndexSet.add(i);for(var i=0,length=viewIndices.length;length>i;i++){var modelIndex=isColumns?this.project.convertViewColumnIndexToModel(viewIndices[i]):this.project.convertViewRowIndexToModel(viewIndices[i]);modelIndices.push(modelIndex),modelIndexSet.remove(modelIndex)}var nvisible=modelIndices.length;if(modelIndexSet.size()>0)for(var indices=modelIndexSet.values(),i=0,length=indices.length;length>i;i++)modelIndices.push(indices[i]);isColumns?(dendrogram=new morpheus.ColumnDendrogram(this,tree,this.heatmap.getColumnPositions(),this.project),dendrogram.filter=this.project.getColumnFilter().shallowClone(),this.columnDendrogram=dendrogram,this.project.setColumnSortKeys([new morpheus.SpecifiedModelSortOrder(modelIndices,nvisible,"dendrogram")],!0)):(dendrogram=new morpheus.RowDendrogram(this,tree,this.heatmap.getRowPositions(),this.project),dendrogram.filter=this.project.getRowFilter().shallowClone(),this.rowDendrogram=dendrogram,this.project.setRowSortKeys([new morpheus.SpecifiedModelSortOrder(modelIndices,nvisible,"dendrogram")],!0)),dendrogram.appendTo(this.$parent),dendrogram.$label.appendTo(this.$parent),dendrogram.$squishedLabel.appendTo(this.$parent)}else{for(var sortKeys=isColumns?this.project.getColumnSortKeys():this.project.getRowSortKeys(),i=0;i0){var tipText=[],dataset=project.getSortedFilteredDataset(),rowTracks=_this.rowTracks.filter(function(t){return t.settings.inlineTooltip}),columnTracks=_this.columnTracks.filter(function(t){return t.settings.inlineTooltip});return selectedViewIndices.forEach(function(id){var rowIndex=id.getArray()[0],columnIndex=id.getArray()[1];tipText.push(morpheus.Util.nf(dataset.getValue(rowIndex,columnIndex))),rowTracks.forEach(function(track){tipText.push(" "),tipText.push(morpheus.Util.formatObject(dataset.getRowMetadata().getByName(track.name).getValue(rowIndex)))}),columnTracks.forEach(function(track){tipText.push(" "),tipText.push(morpheus.Util.formatObject(dataset.getColumnMetadata().getByName(track.name).getValue(columnIndex)))}),tipText.push("\n")}),tipText.join("")}},_init:function(){function reorderTracks(array,isColumns){var nameOrderPairs=[],found=!1;if(_.each(array,function(item){var name=item.renameTo||item.field,order=999;null!=item.order&&(order=item.order,found=!0),nameOrderPairs.push({name:name,order:order})}),found){nameOrderPairs.sort(function(a,b){return a.order===b.order?0:a.order
    ").css("position","relative"),this.$parent.appendTo(this.$el),this.toolbar=new morpheus.HeatMapToolBar(this),this.options.customUrls&&this.setCustomUrls(this.options.customUrls),this.vscroll=new morpheus.ScrollBar(!0),this.vscroll.appendTo(this.$parent),this.vscroll.on("scroll",function(){_this.updatingScroll||_this.paintAll({paintRows:!0,paintColumns:!1,invalidateRows:!0,invalidateColumns:!1})}),this.beforeColumnTrackDivider=new morpheus.Divider(!1),this.beforeColumnTrackDivider.appendTo(this.$parent);var dragStartHeight=0;this.beforeColumnTrackDivider.on("resizeStart",function(e){dragStartHeight=_this.columnDendrogram.getUnscaledHeight()}).on("resize",function(e){var newHeight=Math.max(8,dragStartHeight+e.delta);_this.columnDendrogram.setPrefHeight(newHeight),_this.revalidate()}).on("resizeEnd",function(){dragStartHeight=0}),this.afterRowDendrogramDivider=new morpheus.Divider(!0),this.afterRowDendrogramDivider.appendTo(this.$parent);var rowDendrogramStartWidth=0;this.afterRowDendrogramDivider.on("resizeStart",function(e){rowDendrogramStartWidth=_this.rowDendrogram.getUnscaledWidth()}).on("resize",function(e){var newWidth=Math.max(8,rowDendrogramStartWidth+e.delta);_this.rowDendrogram.setPrefWidth(newWidth),_this.revalidate()}).on("resizeEnd",function(){rowDendrogramStartWidth=0}),this.afterVerticalScrollBarDivider=new morpheus.Divider(!0),this.afterVerticalScrollBarDivider.appendTo(this.$parent);var resizeStartHeatMapWidth=0;this.afterVerticalScrollBarDivider.on("resizeStart",function(e){resizeStartHeatMapWidth=_this.heatmap.getUnscaledWidth()}).on("resize",function(e){_this.heatmap.prefWidth=resizeStartHeatMapWidth+e.delta,_this.revalidate()}),this.hscroll=new morpheus.ScrollBar(!1),this.hscroll.appendTo(this.$parent),this.hscroll.on("scroll",function(){_this.updatingScroll||_this.paintAll({paintRows:!1,paintColumns:!0,invalidateRows:!1,invalidateColumns:!0})});var heatmap=new morpheus.HeatMapElementCanvas(this.project);this.options.drawCallback&&heatmap.setDrawCallback(this.options.drawCallback),$(heatmap.canvas).on("contextmenu",function(e){morpheus.Popup.showPopup([{name:"Copy",disabled:0===_this.project.getElementSelectionModel().count()},{name:"Save Image (Ctrl-S)"},{separator:!0},{name:"Show Inline Tooltip",checked:_this.options.inlineTooltip}],{x:e.pageX,y:e.pageY},e.target,function(event,item){if("Show Inline Tooltip"===item)_this.options.inlineTooltip=!_this.options.inlineTooltip;else if("Save Image (Ctrl-S)"===item)morpheus.HeatMap.showTool(new morpheus.SaveImageTool,_this);else{var text=_this.getSelectedElementsText();""!==text&&event.clipboardData.setData("text/plain",text)}}),e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()}),heatmap.appendTo(this.$parent),this.heatmap=heatmap;var rowDendrogramSortKey=null;if(void 0!=rowDendrogram){var tree=rowDendrogram;if(tree.leafNodes.length!==this.project.getFullDataset().getRowCount())throw"# leaf nodes in row dendrogram "+tree.leafNodes.length+" != "+this.project.getFullDataset().getRowCount();if(null!=this.options.rowDendrogramField){for(var vector=dataset.getRowMetadata().getByName(this.options.rowDendrogramField),rowIndices=[],map=new morpheus.Map,re=/[,:]/g,j=0,size=vector.size();size>j;j++){var key=vector.getValue(j);map.set(key.replace(re,""),j)}for(var i=0,length=tree.leafNodes.length;length>i;i++){var index=map.get(tree.leafNodes[i].name);if(void 0===index)throw"Unable to find row dendrogram id "+tree.leafNodes[i].name+" in row annotations";rowIndices.push(index)}}else for(var i=0,length=tree.leafNodes.length;length>i;i++)rowIndices.push(i);this.rowDendrogram=new morpheus.RowDendrogram(this,tree,heatmap.getRowPositions(),this.project,!0),rowDendrogramSortKey=new morpheus.SpecifiedModelSortOrder(rowIndices,rowIndices.length,"dendrogram"),this.rowDendrogram.appendTo(this.$parent),this.rowDendrogram.$label.appendTo(this.$parent),this.rowDendrogram.$squishedLabel.appendTo(this.$parent)}var columnDendrogramSortKey=null;if(void 0!==columnDendrogram){var tree=columnDendrogram;if(tree.leafNodes.length!==this.project.getFullDataset().getColumnCount())throw"# leaf nodes "+tree.leafNodes.length+" != "+this.project.getFullDataset().getColumnCount();var columnIndices=[];if(null!=this.options.columnDendrogramField){for(var vector=dataset.getColumnMetadata().getByName(this.options.columnDendrogramField),map=new morpheus.Map,re=/[,:]/g,j=0,size=vector.size();size>j;j++){var key=vector.getValue(j);map.set(key.replace(re,""),j)}for(var i=0,length=tree.leafNodes.length;length>i;i++){var index=map.get(tree.leafNodes[i].name);if(void 0===index)throw"Unable to find column dendrogram id "+tree.leafNodes[i].name+" in column annotations";columnIndices.push(index)}}else for(var i=0,length=tree.leafNodes.length;length>i;i++)columnIndices.push(i);this.columnDendrogram=new morpheus.ColumnDendrogram(this,tree,heatmap.getColumnPositions(),this.project,!0),columnDendrogramSortKey=new morpheus.SpecifiedModelSortOrder(columnIndices,columnIndices.length,"dendrogram"),this.columnDendrogram.appendTo(this.$parent),this.columnDendrogram.$label.appendTo(this.$parent),this.columnDendrogram.$squishedLabel.appendTo(this.$parent)}if(null!==rowDendrogramSortKey&&this.project.setRowSortKeys([rowDendrogramSortKey]),null!==columnDendrogramSortKey&&this.project.setColumnSortKeys([columnDendrogramSortKey]),null!=this.options.rowGroupBy)for(var i=0;ii;i++){var display=displaySpecified?"None":void 0,v=isColumns?dataset.getColumnMetadata().get(i):dataset.getRowMetadata().get(i),name=v.getName(),option=nameToOption.get(name);if(!morpheus.MetadataUtil.DEFAULT_HIDDEN_FIELDS.has(name)||null!=option){var count=isColumns?dataset.getColumnCount():dataset.getRowCount();if(option||displaySpecified||!(count>1)||morpheus.VectorUtil.containsMoreThanOneValue(v)){null==option&&(option={}),option.title&&v.getProperties().set(morpheus.VectorKeys.TITLE,option.title),option.display&&(display="function"==typeof option.display?option.display(name):option.display);var add="None"!==display;if(add){isColumns&&null==display&&(display="pert_iname"===name||"id"===name||isFirst?"text":"color"),isFirst=!1;var track=isColumns?_this.addColumnTrack(name,display):_this.addRowTrack(name,display);if(track.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)&&option.color){var m=isColumns?_this.project.getColumnColorModel():_this.project.getRowColorModel();if(track.isDiscrete())_.each(options.color,function(p){m.setMappedValue(v,p.value,p.color)});else{var cs=m.createContinuousColorMap(v),min=Number.MAX_VALUE,max=-Number.MAX_VALUE;_.each(options.color,function(p){min=Math.min(min,p.value),max=Math.max(max,p.value)}),cs.setMin(min),cs.setMax(max);var valueToFraction=d3.scale.linear().domain([cs.getMin(),cs.getMax()]).range([0,1]).clamp(!0),fractions=[],colors=[];_.each(options.color,function(p){fractions.push(valueToFraction(p.value)),colors.push(p.color)}),cs.setFractions({fractions:fractions,colors:colors})}}if(track.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)&&option.shape){var m=isColumns?_this.project.getColumnShapeModel():_this.project.getRowShapeModel();_.each(options.shape,function(p){m.setMappedValue(v,p.value,p.shape)})}}}}}};if(setInitialDisplay(!1,this.options.rows),setInitialDisplay(!0,this.options.columns),reorderTracks(this.options.rows,!1),reorderTracks(this.options.columns,!0),null==this.options.colorScheme){var ext="";if(this.options.dataSource)try{ext=morpheus.Util.getExtension(morpheus.Util.getFileName(this.options.dataSource))}catch(x){}var colorScheme=this.autoDisplay({extension:ext});null==colorScheme&&(colorScheme={type:"relative"}),this.options.colorScheme=colorScheme;var name=this.project.getFullDataset().getName();if("maf"===ext&&!this.options.rowSortBy){var sortKeys=[];this.project.getFullDataset().getRowMetadata().getByName("order")&&sortKeys.push(new morpheus.SortKey("order",morpheus.SortKey.SortOrder.ASCENDING)),sortKeys.push(new morpheus.SortKey("id",morpheus.SortKey.SortOrder.ASCENDING)),this.project.setRowSortKeys(sortKeys,!1)}-1!==morpheus.DatasetUtil.getSeriesIndex(this.project.getFullDataset(),"ccf")&&(this.options.sizeBy="ccf")}if(this.options.parent&&this.options.inheritFromParent)heatmap.setColorScheme(this.options.parent.heatmap.getColorScheme().copy(this.project));else if(heatmap.setColorScheme(new morpheus.HeatMapColorScheme(this.project,this.options.colorScheme)),null!=this.options.dataset.getRowMetadata().getByName("Source")){var sourcesSet=morpheus.VectorUtil.getSet(this.options.dataset.getRowMetadata().getByName("Source"));this.heatmap.getColorScheme().setSeparateColorSchemeForRowMetadataField("Source"),sourcesSet.forEach(function(source){_this.autoDisplay({extension:morpheus.Util.getExtension(source),filename:source})})}if(this.options.sizeBy&&heatmap.getColorScheme().getSizer().setSeriesName(this.options.sizeBy),this.updateDataset(),this.options.uiReady&&this.options.uiReady(this),this.options.tabOpened){try{this.options.tabOpened(this)}catch(x){console.log("Error in tabOpened"),x.stack&&console.log(x.stack)}this.updateDataset()}if(this.options.renderReady){try{this.options.renderReady(this)}catch(x){console.log("Error in renderReady"),x.stack&&console.log(x.stack)}this.updateDataset()}this.options.parent=null,this.$tipFollow=$('
    '),this.$tipFollow.appendTo(this.$parent),this.$tipInfoWindow=$('
    '),this.$tipInfoWindow.appendTo(this.$parent),this.$tipInfoWindow.dialog({close:function(event,ui){_this._togglingInfoWindow||_this.toggleInfoWindow()},autoOpen:!1,width:220,height:280,minHeight:38,minWidth:10,collision:"fit",position:{my:"right-30 bottom",at:"right top",of:this.$parent},title:"Info"}),this.getProject().on("rowFilterChanged columnFilterChanged rowGroupByChanged columnGroupByChanged rowSortOrderChanged columnSortOrderChanged datasetChanged",function(e){if("datasetChanged"===e.type){for(var dataset=_this.getProject().getFullDataset(),i=0;i<_this.rowTracks.length;i++){var track=_this.rowTracks[i];dataset.getRowMetadata().getByName(track.getName())||(_this.removeTrack(track.getName(),!1),i--)}for(var i=0;i<_this.columnTracks.length;i++){var track=_this.columnTracks[i];dataset.getColumnMetadata().getByName(track.getName())||(_this.removeTrack(track.getName(),!0),i--)}}_this.updateDataset(),_this.revalidate()}),this.getProject().on("trackChanged",function(e){var columns=e.columns;_.each(e.vectors,function(v,i){var index=_this.getTrackIndex(v.getName(),columns);if(-1===index)columns?_this.addColumnTrack(v.getName(),e.render[i]):_this.addRowTrack(v.getName(),e.render[i]);else{var track=_this.getTrackByIndex(index,columns),render=e.render[i];render&&track.settingFromConfig(render),track.setInvalid(!0)}}),_this.revalidate()}),this.getProject().on("rowTrackRemoved",function(e){_this.removeTrack(e.vector.getName(),!1),_this.revalidate()}),this.getProject().on("columnTrackRemoved",function(e){_this.removeTrack(e.vector.getName(),!0),_this.revalidate()}),this.getProject().getRowSelectionModel().on("selectionChanged",function(){for(var i=0;i<_this.columnTracks.length;i++){var track=_this.columnTracks[i];track.settings.stackedBar&&track.isRenderAs(morpheus.VectorTrack.RENDER.BAR)&&(track.setInvalid(!0),track.repaint())}_this.verticalSearchBar.update(),_this.paintAll({paintRows:!0,paintColumns:!1,invalidateRows:!1,invalidateColumns:!1})}),this.getProject().getColumnSelectionModel().on("selectionChanged",function(){_this.horizontalSearchBar.update(),_this.paintAll({paintRows:!1,paintColumns:!0,invalidateRows:!1,invalidateColumns:!1})}),$(window).on("paste.morpheus",function(e){if(_this.isActiveComponent()){var text=e.originalEvent.clipboardData.getData("text/plain");if(null!=text&&text.length>0){var blob=new Blob([text]),url=window.URL.createObjectURL(blob);e.preventDefault(),e.stopPropagation(),morpheus.HeatMap.showTool(new morpheus.OpenFileTool({file:url}),_this)}}}).on("beforecopy.morpheus",function(e){_this.isActiveComponent()&&e.preventDefault()}).on("copy.morpheus",function(ev){if(_this.isActiveComponent()){var activeComponent=_this.getActiveComponent(),project=_this.project;if(2===activeComponent){var text=_this.getSelectedElementsText();if(""!==text)return ev.originalEvent.clipboardData.setData("text/plain",text),ev.preventDefault(),void ev.stopImmediatePropagation()}var dataset=project.getSelectedDataset({emptyToAll:!1}),columnMetadata=dataset.getColumnMetadata(),rowMetadata=dataset.getRowMetadata(),visibleColumnFields=_this.getVisibleTrackNames(!0),columnFieldIndices=[];_.each(visibleColumnFields,function(name){var index=morpheus.MetadataUtil.indexOf(columnMetadata,name);-1!==index&&columnFieldIndices.push(index)}),columnMetadata=new morpheus.MetadataModelColumnView(columnMetadata,columnFieldIndices);var rowMetadata=dataset.getRowMetadata(),visibleRowFields=_this.getVisibleTrackNames(!1),rowFieldIndices=[];_.each(visibleRowFields,function(name){var index=morpheus.MetadataUtil.indexOf(rowMetadata,name);-1!==index&&rowFieldIndices.push(index)}),rowMetadata=new morpheus.MetadataModelColumnView(rowMetadata,rowFieldIndices);var text=[],rowsSelected=dataset.getRowCount()>0,columnsSelected=dataset.getColumnCount()>0;if(rowsSelected&&columnsSelected)text=(new morpheus.GctWriter).write(dataset);else{for(var text=[],model=rowsSelected?rowMetadata:columnMetadata,i=0,count=model.getItemCount();count>i;i++){for(var j=0,nfields=model.getMetadataCount();nfields>j;j++){var v=model.get(j);j>0&&text.push(" "),text.push(morpheus.Util.toString(v.getValue(i)))}text.push("\n")}text=text.join("")}ev.originalEvent.clipboardData.setData("text/plain",text),ev.preventDefault(),ev.stopImmediatePropagation()}}),this.options.keyboard&&new morpheus.HeatMapKeyListener(this);var dragStartScrollTop,dragStartScrollLeft;this.hammer=morpheus.Util.hammer(_this.heatmap.canvas,["pan","pinch","tap"]).on("panmove",function(event){_this.updatingScroll=!0;var rows=!1,columns=!1;if(0!==event.deltaY){var pos=dragStartScrollTop+event.deltaY;_this.scrollTop(pos),rows=!0}if(0!==event.deltaX){var pos=dragStartScrollLeft+event.deltaX;_this.scrollLeft(pos),columns=!0}_this.updatingScroll=!1,_this.paintAll({paintRows:rows,paintColumns:rows,invalidateRows:rows,invalidateColumns:columns}),event.preventDefault()}).on("panstart",function(event){dragStartScrollTop=_this.scrollTop(),dragStartScrollLeft=_this.scrollLeft()}).on("tap",function(event){var commandKey=morpheus.Util.IS_MAC?event.srcEvent.metaKey:event.srcEvent.ctrlKey;if(!morpheus.Util.IS_MAC||!event.srcEvent.ctrlKey){var position=morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,_this.scrollLeft(),_this.scrollTop()),rowIndex=_this.heatmap.getRowPositions().getIndex(position.y,!1),columnIndex=_this.heatmap.getColumnPositions().getIndex(position.x,!1);_this.project.getElementSelectionModel().click(rowIndex,columnIndex,event.srcEvent.shiftKey||commandKey)}}).on("pinch",function(event){var scale=event.scale;_this.heatmap.getRowPositions().setSize(13*scale),_this.heatmap.getColumnPositions().setSize(13*scale);var reval={};-1!==_this.project.getHoverRowIndex()&&(reval.scrollTop=this.heatmap.getRowPositions().getPosition(this.project.getHoverRowIndex())),-1!==_this.project.getHoverColumnIndex()&&(reval.scrollLeft=this.heatmap.getColumnPositions().getPosition(this.project.getHoverColumnIndex())),_this.revalidate(reval),event.preventDefault()});var heatMapMouseMoved=function(event){var mouseI,mouseJ;if("mouseout"===event.type)mouseI=-1,mouseJ=-1;else{var position=morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,_this.scrollLeft(),_this.scrollTop());mouseI=_this.heatmap.getRowPositions().getIndex(position.y,!1),mouseJ=_this.heatmap.getColumnPositions().getIndex(position.x,!1)}_this.setMousePosition(mouseI,mouseJ,{event:event})};$(_this.heatmap.canvas).on("mouseout",heatMapMouseMoved).on("mousemove",heatMapMouseMoved),_.each(this.options.tools,function(item){var tool=_this.toolbar.getToolByName(item.name);if(null==tool)console.log(item.name+" not found.");else try{var gui=tool.gui(_this.getProject()),formBuilder=new morpheus.FormBuilder;_.each(gui,function(item){formBuilder.append(item)});var input={};if(_.each(gui,function(item){input[item.name]=formBuilder.getValue(item.name)}),item.params)for(var key in item.params)input[key]=item.params[key];tool.execute({controller:_this,project:_this.getProject(),input:input})}catch(x){x.stack&&console.log(x.stack),console.log("Error running "+item.name)}finally{tool.dispose&&tool.dispose()}})},setMousePosition:function(i,j,options){this.mousePositionOptions=options;var updateColumns=this.project.getHoverColumnIndex()!==j,updateRows=this.project.getHoverRowIndex()!==i;updateColumns||updateRows?(this.project.setHoverRowIndex(i),this.project.setHoverColumnIndex(j),this.setToolTip(i,j,options),this.paintAll({paintRows:updateRows,paintColumns:updateColumns,invalidateRows:!1,invalidateColumns:!1})):this._updateTipFollowPosition(options),this.trigger("change",{name:"setMousePosition",source:this,arguments:arguments})},setTooltipMode:function(mode){this._togglingInfoWindow=!0,this.tooltipMode=mode,this.$tipInfoWindow.html(""),this.toolbar.$tip.html(""),this.$tipFollow.html("").css({left:-1e3,top:-1e3}),this.setToolTip(-1,-1),1===this.tooltipMode?this.$tipInfoWindow.dialog("open"):this.$tipInfoWindow.dialog("close"),this._togglingInfoWindow=!1},toggleInfoWindow:function(){this.setTooltipMode(1==this.tooltipMode?0:1)},setToolTip:function(rowIndex,columnIndex,options){options=options||{},this.options.showSeriesNameInTooltip&&(options.showSeriesNameInTooltip=!0);var tipText=this.tooltipProvider(this,rowIndex,columnIndex,options,0===this.tooltipMode?"   ":"
    "),tipFollowText="";this.options.inlineTooltip&&(tipFollowText=this.tooltipProvider(this,rowIndex,columnIndex,options,"
    ",!0)),0===this.tooltipMode?this.toolbar.$tip.html(tipText):1===this.tooltipMode&&this.$tipInfoWindow.html(tipText),""!==tipFollowText?(this.tipFollowHidden=!1,this.$tipFollow.html(tipFollowText),this._updateTipFollowPosition(options)):(this.tipFollowHidden=!0,this.$tipFollow.html("").css({left:-1e3,top:-1e3})),this.trigger("change",{name:"setToolTip",source:this,arguments:arguments})},_updateTipFollowPosition:function(options){if(!this.tipFollowHidden){var rect=this.$parent[0].getBoundingClientRect(),tipWidth=this.$tipFollow.width(),tipHeight=this.$tipFollow.height(),left=options.event.clientX-rect.left+16;left+tipWidth>=rect.right&&(left=options.event.clientX-rect.left-16-tipWidth);var top=options.event.clientY-rect.top+16;top+tipHeight>=rect.bottom-rect.top&&(top=options.event.clientY-rect.top-16-tipHeight),this.$tipFollow.css({left:left,top:top})}},setTrackVisibility:function(tracks){var _this=this;_.each(tracks,function(track){var existingTrack=_this.getTrack(track.name,track.isColumns);track.visible&&null!=existingTrack&&0===_.keys(existingTrack.renderSettings).length&&existingTrack.settingFromConfig(track.isColumns?"Color":"Text"),_this.setTrackVisible(track.name,track.visible,track.isColumns)}),this.revalidate(),this.trigger("change",{name:"setTrackVisibility",source:this,arguments:arguments})},setTrackVisible:function(name,visible,isColumns){var trackIndex=this.getTrackIndex(name,isColumns);if(-1===trackIndex){if(!visible)return;isColumns?this.addColumnTrack(name):this.addRowTrack(name)}else{var track=isColumns?this.columnTracks[trackIndex]:this.rowTracks[trackIndex],header=isColumns?this.columnTrackHeaders[trackIndex]:this.rowTrackHeaders[trackIndex];if(track.isVisible()===visible)return;track.setVisible(visible),header.setVisible(visible)}this.trigger("change",{name:"setTrackVisible",source:this,arguments:arguments})},addRowTrack:function(name,renderSettings){if(void 0===name)throw"Name not specified";if("None"!==renderSettings){null==renderSettings&&(renderSettings="[number]"===morpheus.VectorUtil.getDataType(this.project.getFullDataset().getRowMetadata().getByName(name))?"bar":morpheus.VectorTrack.RENDER.TEXT);var track=new morpheus.VectorTrack(this.project,name,this.heatmap.getRowPositions(),!1,this);track.settingFromConfig(renderSettings),this.rowTracks.push(track),track.appendTo(this.$parent),$(track.canvas).css("z-index","0");var header=new morpheus.VectorTrackHeader(this.project,name,!1,this);return this.rowTrackHeaders.push(header),header.appendTo(this.$parent),$(header.canvas).css("z-index","0"),track._selection=new morpheus.TrackSelection(track,this.heatmap.getRowPositions(),this.project.getRowSelectionModel(),!1,this),track}},addTrack:function(name,isColumns,renderSettings){isColumns?this.addColumnTrack(name,renderSettings):this.addRowTrack(name,renderSettings)},addColumnTrack:function(name,renderSettings){if(void 0===name)throw"Name not specified";if("None"!==renderSettings){null==renderSettings&&(renderSettings="[number]"===morpheus.VectorUtil.getDataType(this.project.getFullDataset().getColumnMetadata().getByName(name))?"bar":morpheus.VectorTrack.RENDER.TEXT);var track=new morpheus.VectorTrack(this.project,name,this.heatmap.getColumnPositions(),!0,this); -track.settingFromConfig(renderSettings),this.columnTracks.push(track),track.appendTo(this.$parent);var header=new morpheus.VectorTrackHeader(this.project,name,!0,this);return this.columnTrackHeaders.push(header),header.appendTo(this.$parent),track._selection=new morpheus.TrackSelection(track,this.heatmap.getColumnPositions(),this.project.getColumnSelectionModel(),!0,this),track}},addPopup:function(item){this.popupItems||(this.popupItems=[]),this.popupItems.push(item)},getPopupItems:function(){return this.popupItems||[]},removeTrack:function(name,isColumns){var index=this.getTrackIndex(name,isColumns),tracks=isColumns?this.columnTracks:this.rowTracks;if(isNaN(index)||0>index||index>=tracks.length)return void console.log("removeTrack: "+name+" not found.");var headers=isColumns?this.columnTrackHeaders:this.rowTrackHeaders,track=tracks[index],header=headers[index];track.dispose(),track._selection.dispose(),header.dispose(),tracks.splice(index,1),headers.splice(index,1),this.trigger("change",{name:"removeTrack",source:this,arguments:arguments})},updateDataset:function(){var dataset=this.project.getSortedFilteredDataset();this.verticalSearchBar.update(),this.horizontalSearchBar.update(),this.heatmap.setDataset(dataset),this.heatmap.getRowPositions().spaces=morpheus.HeatMap.createGroupBySpaces(dataset,this.project.getGroupRows(),this.gapSize),this.heatmap.getColumnPositions().spaces=morpheus.HeatMap.createGroupBySpaces(new morpheus.TransposedDatasetView(dataset),this.project.getGroupColumns(),this.gapSize),this.trigger("change",{name:"updateDataset",source:this,arguments:arguments})},zoom:function(isZoomIn,options){options=$.extend({},{rows:!0,columns:!0},options),isZoomIn?(options.rows&&this.heatmap.getRowPositions().setSize(1.5*this.heatmap.getRowPositions().getSize()),options.columns&&this.heatmap.getColumnPositions().setSize(1.5*this.heatmap.getColumnPositions().getSize())):(options.rows&&this.heatmap.getRowPositions().setSize(this.heatmap.getRowPositions().getSize()/1.5),options.columns&&this.heatmap.getColumnPositions().setSize(this.heatmap.getColumnPositions().getSize()/1.5));var reval={};options.rows&&-1!==this.project.getHoverRowIndex()&&(reval.scrollTop=this.heatmap.getRowPositions().getPosition(this.project.getHoverRowIndex())),options.columns&&-1!==this.project.getHoverColumnIndex()&&(reval.scrollLeft=this.heatmap.getColumnPositions().getPosition(this.project.getHoverColumnIndex())),this.revalidate(reval),this.trigger("change",{name:"zoom",source:this,arguments:arguments})},getTrackIndex:function(name,isColumns){for(var tracks=isColumns?this.columnTracks:this.rowTracks,i=0,length=tracks.length;length>i;i++)if(void 0!==tracks[i].name&&tracks[i].name===name)return i;return-1},getNumTracks:function(isColumns){return isColumns?this.columnTracks.length:this.rowTracks.length},moveTrack:function(index,newIndex,isColumns){var tracks=isColumns?this.columnTracks:this.rowTracks,headers=isColumns?this.columnTrackHeaders:this.rowTrackHeaders,track=tracks[index];tracks.splice(index,1);var header=headers[index];headers.splice(index,1),tracks.splice(newIndex,0,track),headers.splice(newIndex,0,header),this.trigger("change",{name:"moveTrack",source:this,arguments:arguments})},getTrackByIndex:function(index,isColumns){return isColumns?this.columnTracks[index]:this.rowTracks[index]},getTrackHeaderByIndex:function(index,isColumns){return isColumns?this.columnTrackHeaders[index]:this.rowTrackHeaders[index]},getTrack:function(name,isColumns){var index=this.getTrackIndex(name,isColumns);if(-1!==index)return isColumns?this.columnTracks[index]:this.rowTracks[index]},isActiveComponent:function(){var active=document.activeElement,tagName=active.tagName;return"INPUT"==tagName||"SELECT"==tagName||"TEXTAREA"==tagName?!1:this.$tabPanel[0].contains(active)},getActiveComponent:function(){var active=document.activeElement;if("CANVAS"===active.tagName){for(var i=0,ntracks=this.columnTracks.length;ntracks>i;i++)if(this.columnTracks[i].canvas===active)return 1;for(var i=0,ntracks=this.rowTracks.length;ntracks>i;i++)if(this.rowTracks[i].canvas===active)return 0;if(this.heatmap.canvas===active)return 2}return-1},getVisibleTrackNames:function(isColumns){for(var names=[],tracks=isColumns?this.columnTracks:this.rowTracks,i=0,length=tracks.length;length>i;i++)tracks[i].isVisible()&&names.push(tracks[i].name);return names},resizeTrack:function(name,width,height,isColumns){var index=this.getTrackIndex(name,isColumns);if(-1===index)throw name+" not found in resize track";if(isColumns){var track=this.columnTracks[index],header=this.columnTrackHeaders[index];if(height&&(track.setPrefHeight(height),header.setPrefHeight(height)),width)for(var i=0;ii;i++){var track=this.rowTracks[i];track.setInvalid(invalidateRows),track.isVisible()&&(track.paint({x:0,y:y,height:unscaledHeight,width:unscaledWidth}),this.rowTrackHeaders[i].paint())}null!=this.rowDendrogram&&(this.rowDendrogram.setInvalid(invalidateRows),this.isDendrogramVisible(!1)?(this.rowDendrogram.setVisible(!0),this.rowDendrogram.paint({x:0,y:y,height:unscaledHeight,width:this.rowDendrogram.getUnscaledWidth()})):this.rowDendrogram.setVisible(!1))}if(columns){for(var i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];track.setInvalid(invalidateColumns),track.paint({x:x,y:0,width:unscaledWidth,height:track.getUnscaledHeight()}),this.columnTrackHeaders[i].paint()}null!=this.columnDendrogram&&(this.columnDendrogram.setInvalid(invalidateColumns),this.isDendrogramVisible(!0)?(this.columnDendrogram.setVisible(!0),this.columnDendrogram.paint({x:x,y:0,width:unscaledWidth,height:this.columnDendrogram.getUnscaledHeight()})):this.columnDendrogram.setVisible(!1))}(invalidateRows||invalidateColumns)&&this.heatmap.setInvalid(!0),this.heatmap.paint({x:x,y:y,width:unscaledWidth,height:unscaledHeight}),this.trigger("change",{name:"paintAll",source:this,arguments:arguments})},scrollTop:function(pos){return void 0===pos?this.vscroll.getValue():(this.vscroll.setValue(pos,!0),void this.trigger("change",{name:"scrollTop",source:this,arguments:arguments}))},scrollLeft:function(pos){return void 0===pos?this.hscroll.getValue():(this.trigger("change",{name:"scrollLeft",source:this,arguments:arguments}),void this.hscroll.setValue(pos,!0))},setSelectedTrack:function(name,isColumns){if(name!==this.selectedTrackName||isColumns!==this.selectedTrackIsColumns){var index=this.getTrackIndex(this.selectedTrackName,this.selectedTrackIsColumns);-1!==index&&this.getTrackHeaderByIndex(index,this.selectedTrackIsColumns).setSelected(!1),this.selectedTrackName=name,this.selectedTrackIsColumns=isColumns;var index=this.getTrackIndex(this.selectedTrackName,this.selectedTrackIsColumns);-1!==index&&this.getTrackHeaderByIndex(index,this.selectedTrackIsColumns).setSelected(!0),this.trigger("change",{name:"setSelected",source:this,arguments:arguments})}},saveImage:function(file,format){var bounds=this.getTotalSize();if("svg"===format){var context=new C2S(bounds.width,bounds.height);this.snapshot(context);var svg=context.getSerializedSvg(),blob=new Blob([svg],{type:"text/plain;charset=utf-8"});saveAs(blob,file,!0)}else{var canvas=$("")[0],backingScale=morpheus.CanvasUtil.BACKING_SCALE,height=bounds.height*backingScale,width=bounds.width*backingScale;canvas.height=height,canvas.style.height=bounds.height+"px",canvas.width=width,canvas.style.width=bounds.width+"px",this.snapshot(canvas.getContext("2d")),canvas.toBlob(function(blob){if(0===blob.size)throw"Image is too large.";saveAs(blob,file,!0)})}},getTotalSize:function(options){options=$.extend({},{legend:!0},options);var heatmapPrefSize=this.heatmap.getPreferredSize(),totalSize={width:heatmapPrefSize.width,height:heatmapPrefSize.height};this.isDendrogramVisible(!1)&&(totalSize.width+=this.rowDendrogram.getUnscaledWidth()),this.isDendrogramVisible(!0)&&(totalSize.height+=this.columnDendrogram.getUnscaledHeight());for(var maxHeaderHeight=0,maxHeaderWidth=0,i=0,length=this.rowTracks.length;length>i;i++){var track=this.rowTracks[i];if(track.isVisible()){var headerSize=this.rowTrackHeaders[i].getPrintSize();totalSize.width+=Math.max(headerSize.width,track.getPrintSize().width),maxHeaderHeight=Math.max(maxHeaderHeight,headerSize.height)}}totalSize.height+=maxHeaderHeight;for(var i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];track.isVisible()&&(totalSize.height+=track.getPrintSize().height,maxHeaderWidth=Math.max(maxHeaderWidth,this.columnTrackHeaders[i].getPrintSize().width))}if(maxHeaderWidth+=10,totalSize.width+=maxHeaderWidth,options.legend){var legendHeight=null!=this.heatmap.getColorScheme().getNames()?14*this.heatmap.getColorScheme().getNames().length:40;totalSize.height+=legendHeight}var trackLegendSize=new morpheus.HeatMapTrackColorLegend(_.filter(this.columnTracks,function(track){return track.isVisible()&&(track.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||track.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR))}),this.getProject().getColumnColorModel()).getPreferredSize();return totalSize.height+=trackLegendSize.height,totalSize.width=Math.max(totalSize.width,trackLegendSize.width),trackLegendSize=new morpheus.HeatMapTrackColorLegend(_.filter(this.rowTracks,function(track){return track.isVisible()&&(track.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||track.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR))}),this.getProject().getRowColorModel()).getPreferredSize(),totalSize.height+=trackLegendSize.height,totalSize.width=10+Math.max(totalSize.width,trackLegendSize.width),totalSize},getHeatMapElementComponent:function(){return this.heatmap},snapshot:function(context,options){options=$.extend({},{legend:!0},options);var heatmapPrefSize=this.heatmap.getPreferredSize(),legendHeight=(this.getTotalSize(options),0);options.legend&&(null!=this.heatmap.getColorScheme().getNames()?14*this.heatmap.getColorScheme().getNames().length:40,context.save(),context.translate(50,0),morpheus.HeatMapColorSchemeLegend.drawColorScheme(context,this.heatmap.getColorScheme(),200,!0),context.restore()),context.save(),context.translate(4,legendHeight);var columnTrackLegend=new morpheus.HeatMapTrackColorLegend(_.filter(this.columnTracks,function(track){return track.isVisible()&&(track.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||track.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR))}),this.getProject().getColumnColorModel());columnTrackLegend.draw({},context),context.restore();var columnTrackLegendSize=columnTrackLegend.getPreferredSize();context.save(),context.translate(4+columnTrackLegendSize.width,legendHeight);var rowTrackLegend=new morpheus.HeatMapTrackColorLegend(_.filter(this.rowTracks,function(track){return track.isVisible()&&(track.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||track.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR))}),this.getProject().getRowColorModel());rowTrackLegend.draw({},context),context.restore(),legendHeight+=Math.max(rowTrackLegend.getPreferredSize().height,columnTrackLegendSize.height);var heatmapY=this.isDendrogramVisible(!0)?this.columnDendrogram.getUnscaledHeight():0;heatmapY+=legendHeight+10;for(var heatmapX=this.isDendrogramVisible(!1)?this.rowDendrogram.getUnscaledWidth():0,totalColumnTrackHeight=0,i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];if(track.isVisible()){var header=this.columnTrackHeaders[i];heatmapX=Math.max(heatmapX,header.getPrintSize().width);var height=track.getPrintSize().height;heatmapY+=height,totalColumnTrackHeight+=height}}heatmapX+=10;for(var i=0,length=this.rowTracks.length;length>i;i++){var track=this.rowTracks[i];if(track.isVisible()){var header=this.rowTrackHeaders[i];heatmapY=Math.max(heatmapY,header.getPrintSize().height)}}if(this.isDendrogramVisible(!1)){var rowDendrogramClip={x:0,y:0,width:this.rowDendrogram.getUnscaledWidth(),height:heatmapPrefSize.height};context.save(),context.translate(0,heatmapY),this.rowDendrogram.prePaint(rowDendrogramClip,context),this.rowDendrogram.draw(rowDendrogramClip,context),context.restore()}if(this.isDendrogramVisible(!0)){context.save(),context.translate(heatmapX,legendHeight);var columnDendrogramClip={x:0,y:0,width:heatmapPrefSize.width,height:this.columnDendrogram.getUnscaledHeight()};this.columnDendrogram.prePaint(columnDendrogramClip,context),this.columnDendrogram.draw(columnDendrogramClip,context),context.restore()}for(var columnTrackY=heatmapY-10-totalColumnTrackHeight,i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];if(track.isVisible()){context.save();var tx=heatmapX;context.translate(tx,columnTrackY);var trackClip={x:0,y:0,width:heatmapPrefSize.width,height:track.getPrintSize().height};track.print(trackClip,context),context.restore();var header=this.columnTrackHeaders[i];context.save();var headerSize=header.getPrintSize(),headerClip={x:0,y:0,width:headerSize.width,height:headerSize.height};context.translate(tx-10,columnTrackY+trackClip.height),header.print(headerClip,context),context.restore(),columnTrackY+=Math.max(headerClip.height,trackClip.height)}}context.save(),context.translate(heatmapX,heatmapY),this.heatmap.draw({x:0,y:0,width:heatmapPrefSize.width,height:heatmapPrefSize.height},context),context.restore();for(var sum=0,i=0,length=this.rowTracks.length;length>i;i++){var track=this.rowTracks[i];if(track.isVisible()){context.save();var tx=10+heatmapX+heatmapPrefSize.width+sum,ty=heatmapY,trackClip={x:0,y:0,width:track.getPrintSize().width,height:heatmapPrefSize.height};context.translate(tx,ty),context.strokeStyle="white",context.rect(0,0,trackClip.width,trackClip.height),context.stroke(),context.clip(),track.print(trackClip,context),context.restore();var header=this.rowTrackHeaders[i];context.save();var headerSize=header.getPrintSize(),headerClip={x:0,y:0,width:headerSize.width,height:headerSize.height};context.translate(tx,ty-4),header.print(headerClip,context),context.restore(),sum+=Math.max(headerSize.width,trackClip.width)}}},resetZoom:function(){var heatmap=this.heatmap,rowSizes=heatmap.getRowPositions(),columnSizes=heatmap.getColumnPositions();rowSizes.setSize(13),columnSizes.setSize(13);var reval={};-1!==this.project.getHoverRowIndex()&&(reval.scrollTop=this.heatmap.getRowPositions().getPosition(this.project.getHoverRowIndex())),-1!==this.project.getHoverColumnIndex()&&(reval.scrollLeft=this.heatmap.getColumnPositions().getPosition(this.project.getHoverColumnIndex())),this.revalidate(reval)},getFitColumnSize:function(){var heatmap=this.heatmap,availablePixels=this.getAvailableWidth();this.rowDendrogram&&(availablePixels-=this.rowDendrogram.getUnscaledWidth());for(var trackPixels=12,i=0,length=this.rowTracks.length;length>i;i++){var track=this.rowTracks[i];track.isVisible()&&(trackPixels+=track.getUnscaledWidth())}for(var i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];if(track.isVisible()){trackPixels+=this.columnTrackHeaders[i].getUnscaledWidth();break}}availablePixels-=trackPixels;var positions=heatmap.getColumnPositions(),totalCurrent=positions.getItemSize(positions.getLength()-1)+positions.getPosition(positions.getLength()-1),size=positions.getSize();return size*=availablePixels/totalCurrent,size=Math.min(22,size)},getFitRowSize:function(){var heatmap=this.heatmap,availablePixels=this.getAvailableHeight();this.columnDendrogram&&(availablePixels-=this.columnDendrogram.getUnscaledHeight());for(var trackPixels=12,i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];track.isVisible()&&(trackPixels+=track.getUnscaledHeight())}availablePixels-=trackPixels;var positions=heatmap.getRowPositions(),totalCurrent=positions.getItemSize(positions.getLength()-1)+positions.getPosition(positions.getLength()-1),size=positions.getSize();return size*=availablePixels/totalCurrent,size=Math.min(22,size)},fitToWindow:function(repaint){if(this.heatmap.getRowPositions().setSize(this.getFitRowSize()),this.heatmap.getColumnPositions().setSize(this.getFitColumnSize()),repaint){var reval={};-1!==this.project.getHoverRowIndex()&&(reval.scrollTop=this.heatmap.getRowPositions().getPosition(this.project.getHoverRowIndex())),-1!==this.project.getHoverColumnIndex()&&(reval.scrollLeft=this.heatmap.getColumnPositions().getPosition(this.project.getHoverColumnIndex())),this.revalidate(reval)}},getAvailableHeight:function(){if(_.isNumber(this.options.height))return this.options.height;var height=$(window).height()-this.$parent.offset().top-24;return"window"===this.options.height?height:Math.max(Math.round(.7*screen.height),height)},getAvailableWidth:function(){return this.options.width?this.options.width:this.tabManager.getWidth()-30},revalidate:function(options){options=options||{},this.updatingScroll=!0;var availableHeight=this.getAvailableHeight(),availableWidth=this.getAvailableWidth(),heatmapPrefSize=this.heatmap.getPreferredSize(),columnDendrogramHeight=0,rowDendrogramWidth=0;this.columnDendrogram&&(columnDendrogramHeight=morpheus.CanvasUtil.getPreferredSize(this.columnDendrogram).height),this.rowDendrogram&&(rowDendrogramWidth=morpheus.CanvasUtil.getPreferredSize(this.rowDendrogram).width);for(var rowTrackWidthSum=0,i=0,length=this.rowTracks.length;length>i;i++)this.rowTracks[i].isVisible()&&(rowTrackWidthSum+=Math.max(morpheus.CanvasUtil.getPreferredSize(this.rowTrackHeaders[i]).width,morpheus.CanvasUtil.getPreferredSize(this.rowTracks[i]).width));for(var ypos=columnDendrogramHeight,maxHeaderWidth=0,i=0,length=this.columnTracks.length;length>i;i++)if(this.columnTracks[i].isVisible()){var width=morpheus.CanvasUtil.getPreferredSize(this.columnTrackHeaders[i]).width;maxHeaderWidth=Math.max(maxHeaderWidth,width)}var xpos=Math.max(rowDendrogramWidth,maxHeaderWidth),heatMapWidth=heatmapPrefSize.width,maxHeatMapWidth=Math.max(50,availableWidth-rowTrackWidthSum-xpos-morpheus.HeatMap.SPACE_BETWEEN_HEAT_MAP_AND_ANNOTATIONS);maxHeatMapWidth>0&&heatMapWidth>maxHeatMapWidth&&(heatMapWidth=maxHeatMapWidth,heatMapWidth=Math.min(heatMapWidth,heatmapPrefSize.width)),void 0!==this.heatmap.prefWidth&&(heatMapWidth=Math.min(heatmapPrefSize.width,this.heatmap.prefWidth)),void 0!==this.columnDendrogram?(this.columnDendrogram.setBounds({width:heatMapWidth,height:columnDendrogramHeight,left:xpos,top:0}),this.columnDendrogram.$label.css("left",xpos+this.columnDendrogram.getUnscaledWidth()+10).css("top",2),this.columnDendrogram.$squishedLabel.css("left",xpos+this.columnDendrogram.getUnscaledWidth()+10).css("top",18),this.beforeColumnTrackDivider.setVisible(!0),this.beforeColumnTrackDivider.setBounds({left:xpos-maxHeaderWidth,top:ypos,width:maxHeaderWidth}),ypos++):this.beforeColumnTrackDivider.setVisible(!1);for(var i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];if(track.isVisible()){var size=morpheus.CanvasUtil.getPreferredSize(track),headerSize=morpheus.CanvasUtil.getPreferredSize(this.columnTrackHeaders[i]);size.height=Math.max(size.height,headerSize.height),track.setBounds({width:heatMapWidth,height:size.height,left:xpos,top:ypos}),this.columnTrackHeaders[i].setBounds({width:maxHeaderWidth,height:size.height,left:xpos-maxHeaderWidth,top:ypos}),ypos+=size.height}}ypos+=morpheus.HeatMap.SPACE_BETWEEN_HEAT_MAP_AND_ANNOTATIONS;var heatMapHeight=heatmapPrefSize.height;heatMapHeight>availableHeight-ypos&&(heatMapHeight=Math.max(100,Math.min(heatmapPrefSize.height,availableHeight-ypos))),0>ypos&&(ypos=0),this.rowDendrogram?(this.rowDendrogram.setBounds({width:Math.max(rowDendrogramWidth,maxHeaderWidth),height:heatMapHeight,left:0,top:ypos}),this.rowDendrogram.$label.css("left",0).css("top",2),this.afterRowDendrogramDivider.setVisible(!0),this.afterRowDendrogramDivider.setBounds({height:heatMapHeight,left:this.rowDendrogram.getUnscaledWidth(),top:ypos}),xpos++):this.afterRowDendrogramDivider.setVisible(!1),this.heatmap.setBounds({width:heatMapWidth,height:heatMapHeight,left:xpos,top:ypos}),this.hSortByValuesIndicator.setBounds({height:4,width:heatMapWidth,left:xpos,top:ypos-4}),this.hscroll.setVisible(heatMapWidthi;i++){var track=this.rowTracks[i];if(track.isVisible()){nvisibleRowTracks++;break}}this.vSortByValuesIndicator.setBounds({width:4,height:heatMapHeight,left:xpos,top:ypos}),nvisibleRowTracks>0&&(xpos+=morpheus.HeatMap.SPACE_BETWEEN_HEAT_MAP_AND_ANNOTATIONS);for(var rowAnnotationXStart=xpos,i=0,length=this.rowTracks.length;length>i;i++){var track=this.rowTracks[i];if(track.isVisible()){var size=morpheus.CanvasUtil.getPreferredSize(track),headerSize=morpheus.CanvasUtil.getPreferredSize(this.rowTrackHeaders[i]);size.width=Math.max(headerSize.width,size.width),size.height=heatMapHeight,track.setBounds({width:size.width,height:size.height,left:xpos,top:ypos}),this.rowTrackHeaders[i].setBounds({width:size.width,left:xpos,top:ypos-headerSize.height-5,height:headerSize.height}),xpos+=size.width}}this.afterVerticalScrollBarDivider.setVisible(nvisibleRowTracks>0),this.afterVerticalScrollBarDivider.setBounds({left:rowAnnotationXStart-2,top:ypos-18}),this.vscroll.setVisible(heatMapHeightj;j++){var d=this.datasetRowView.getValue(j);isNaN(d)||(this.rowCachedMax=d>this.rowCachedMax?d:this.rowCachedMax,this.rowCachedMin=d
    "),this.currentValue=null,this.legend=new morpheus.LegendWithStops,this.legend.on("added",function(e){var fractions=that.colorScheme.getFractions();fractions.push(e.fraction);var colors=that.colorScheme.getColors();colors.push("black"),that.colorScheme.setFractions({fractions:fractions,colors:colors}),that.setSelectedIndex(_.indexOf(fractions,e.fraction)),that.fireChanged()}).on("selectedIndex",function(e){that.setSelectedIndex(e.selectedIndex)}).on("delete",function(index){that.deleteSelectedStop()}).on("moved",function(e){var fraction=e.fraction,fractions=that.colorScheme.getFractions();fractions[that.legend.selectedIndex]=fraction,that.colorScheme.setFractions({fractions:fractions,colors:that.colorScheme.getColors()});var newIndex=that.colorScheme.getFractions().indexOf(fraction);-1!==newIndex&&(that.legend.selectedIndex=newIndex);var fractionToValue=d3.scale.linear().domain([0,1]).range([that.colorScheme.getMin(),that.colorScheme.getMax()]).clamp(!0);that.formBuilder.setValue("selected_value",fractionToValue(fractions[that.legend.selectedIndex])),that.fireChanged()});var $row=$("
    ");$row.css("height","50px").css("width","300px").css("margin-left","auto").css("margin-right","auto"),$row.appendTo(this.$div),this.colorScheme=null,$(this.legend.canvas).appendTo($row);var formBuilder=new morpheus.FormBuilder,items=[];items=items.concat({name:"selected_color",type:"color",col:"col-xs-2"},{name:"selected_value",type:"text",col:"col-xs-4"},[{name:"delete",type:"button",value:"Delete Selected Color Stop"},{name:"add",type:"button",value:"Add Color Stop"}],{name:"minimum",type:"text",col:"col-xs-4"},{name:"maximum",type:"text",col:"col-xs-4"}),options.showRelative&&(items=items.concat({name:"color_scheme",type:"radio",options:["fixed","relative"]})),items=items.concat({name:"missing_color",type:"color",col:"col-xs-2"}),items.push({name:"stepped_colors",type:"checkbox",value:!1,help:"Intervals include left end point and exclude right end point, except for the highest interval"}),_.each(items,function(item){formBuilder.append(item)}),this.$div.append(formBuilder.$form),formBuilder.$form.find("[name^=selected],[name=delete]").prop("disabled",!0),formBuilder.$form.find("[name=add]").on("click",function(e){for(var fractions=that.colorScheme.getFractions(),val=.5;val>=0&&-1!==_.indexOf(fractions,val);)val-=.1;val=Math.max(0,val),fractions.push(val);var colors=that.colorScheme.getColors();colors.push("black"),that.colorScheme.setFractions({fractions:fractions,colors:colors}),that.setSelectedIndex(_.indexOf(fractions,val)),that.fireChanged()}),formBuilder.$form.find("[name=delete]").on("click",function(e){that.deleteSelectedStop()}),formBuilder.$form.on("keyup","[name=selected_value]",_.debounce(function(e){var val=parseFloat($(this).val());isNaN(val)||(that.setSelectedValue(val),that.fireChanged())},100)),formBuilder.$form.on("change","[name=selected_color]",function(e){var colors=that.colorScheme.getColors();colors[that.legend.selectedIndex]=$(this).val(),that.colorScheme.setFractions({fractions:that.colorScheme.getFractions(),colors:colors}),that.fireChanged()}),formBuilder.$form.on("change","[name=missing_color]",function(e){var color=$(this).val();that.colorScheme.setMissingColor(color),that.fireChanged()}),formBuilder.$form.on("change","[name=stepped_colors]",function(e){that.colorScheme.setStepped($(this).prop("checked")),that.fireChanged()}),formBuilder.$form.on("keyup","[name=minimum]",_.debounce(function(e){var val=parseFloat($(this).val());isNaN(val)||(that.colorScheme.setMin(val),that.setSelectedIndex(that.legend.selectedIndex),that.fireChanged())},100)),formBuilder.$form.on("keyup","[name=maximum]",_.debounce(function(e){var val=parseFloat($(this).val());isNaN(val)||(that.colorScheme.setMax(val),that.setSelectedIndex(that.legend.selectedIndex),that.fireChanged())},100)),formBuilder.$form.on("change","[name=color_scheme]",_.throttle(function(e){that.legend.selectedIndex=-1;var val=$(this).val(),scalingMode="relative"===val?morpheus.HeatMapColorScheme.ScalingMode.RELATIVE:morpheus.HeatMapColorScheme.ScalingMode.FIXED;that.colorScheme.setScalingMode(scalingMode),that.setColorScheme(that.colorScheme),that.fireChanged()},100)),this.formBuilder=formBuilder},morpheus.HeatMapColorSchemeChooser.prototype={deleteSelectedStop:function(){var fractions=this.colorScheme.getFractions();fractions.splice(this.legend.selectedIndex,1);var colors=this.colorScheme.getColors();colors.splice(this.legend.selectedIndex,1),this.colorScheme.setFractions({fractions:fractions,colors:colors}),this.formBuilder.$form.find("[name^=selected],[name=delete]").prop("disabled",!0),this.legend.setSelectedIndex(-1),this.fireChanged()},setSelectedValue:function(val){var valueToFraction=d3.scale.linear().domain([this.colorScheme.getMin(),this.colorScheme.getMax()]).range([0,1]).clamp(!0),fractions=this.colorScheme.getFractions();fractions[this.legend.selectedIndex]=valueToFraction(val),this.colorScheme.setFractions({fractions:fractions,colors:this.colorScheme.getColors()})},setSelectedIndex:function(index){var fractions=this.colorScheme.getFractions();index>=fractions.length&&(index=-1),this.legend.setSelectedIndex(index);var formBuilder=this.formBuilder;if(formBuilder.$form.find("[name^=selected],[name=delete]").prop("disabled",-1===this.legend.selectedIndex),-1!==this.legend.selectedIndex){var fractionToValue=d3.scale.linear().domain([0,1]).range([this.colorScheme.getMin(),this.colorScheme.getMax()]).clamp(!0);formBuilder.setValue("selected_value",fractionToValue(fractions[this.legend.selectedIndex]));var context=this.legend.canvas.getContext("2d"),colors=this.colorScheme.getColors();context.fillStyle=colors[this.legend.selectedIndex],formBuilder.setValue("selected_color",context.fillStyle)}else formBuilder.setValue("selected_value","");this.draw()},setMinMax:function(){this.colorScheme.getScalingMode()===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE&&(this.colorScheme.setMin(0),this.colorScheme.setMax(1))},dispose:function(){this.off("change"),this.legend.destroy(),this.formBuilder.$form.off("keyup","input"),this.formBuilder.$form.off("change","[name=color_scheme]")},restoreCurrentValue:function(){this.colorScheme.setCurrentValue&&this.colorScheme.setCurrentValue(this.currentValue)},setCurrentValue:function(value){this.currentValue=value,this.colorScheme.setCurrentValue&&this.colorScheme.setCurrentValue(this.currentValue)},setColorScheme:function(colorScheme){this.colorScheme=colorScheme,this.setMinMax(),colorScheme.setCurrentValue&&colorScheme.setCurrentValue(this.currentValue),this.formBuilder.setValue("color_scheme",colorScheme.getScalingMode()===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE?"relative":"fixed"),this.formBuilder.$form.find("[name=minimum],[name=maximum]").prop("disabled",colorScheme.getScalingMode()===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE),this.formBuilder.setValue("minimum",this.colorScheme.getMin()),this.formBuilder.setValue("maximum",this.colorScheme.getMax()),this.formBuilder.setValue("stepped_colors",this.colorScheme.isStepped()),this.formBuilder.setValue("missing_color",this.colorScheme.getMissingColor()),this.draw()},getFractionToStopPix:function(){return d3.scale.linear().clamp(!0).domain([0,1]).range([this.legend.border,this.legend.getUnscaledWidth()-this.legend.border])},fireChanged:function(){this.trigger("change"),this.setColorScheme(this.colorScheme)},draw:function(){var colorScheme=this.colorScheme;colorScheme.getScalingMode()===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE&&(colorScheme.setMin(0),colorScheme.setMax(1));var fractions=colorScheme.getFractions(),colors=colorScheme.getColors(),fractionToStopPix=this.getFractionToStopPix();this.legend.draw(fractions,colors,colorScheme.isStepped(),fractionToStopPix)}},morpheus.Util.extend(morpheus.HeatMapColorSchemeChooser,morpheus.Events),morpheus.HeatMapColorSchemeLegend=function(controller,$keyContent){var totalHeight,colorScheme=controller.heatmap.getColorScheme(),tracks=colorScheme.getColorByValues();$keyContent.empty();var ntracks=tracks.length;tracks.forEach(function(value){if(null!=value||1===ntracks){if("null"!=value){var $label=$(''+value+"");$keyContent.append($label),totalHeight+=$label.height()}var trackLegend=new morpheus.HeatMapColorSchemeLegendTrack(colorScheme,value);$(trackLegend.canvas).css("position",""),trackLegend.repaint(),trackLegend.on("selectionChanged",function(){controller.heatmap.setInvalid(!0),controller.heatmap.repaint()}),$keyContent.append($(trackLegend.canvas)),totalHeight+=trackLegend.getUnscaledHeight()}}),controller.options.$key&&($keyContent.append(controller.options.$key),totalHeight+=controller.options.$key.height());var $edit=$('');$edit.find("[name=options]").on("click",function(e){e.preventDefault(),controller.showOptions(),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"options"})}),totalHeight+=$edit.height(),$keyContent.append($edit),$keyContent.css({"text-overflow":"ellipsis",overflow:"hidden",width:"250px",height:totalHeight+"px"})},morpheus.HeatMapColorSchemeLegendTrack=function(colorScheme,value){morpheus.AbstractCanvas.call(this,!1);var _this=this;this.value=value,this.colorScheme=colorScheme,colorScheme.setCurrentValue(value);var hiddenValues=colorScheme.getHiddenValues(),names=colorScheme.getNames(),hasNames=null!=names,legendHeight=hasNames?14*names.length:30,bounds={width:250,height:legendHeight};this.hasNames=hasNames,this.setBounds(bounds),hasNames&&hiddenValues&&$(this.canvas).on("click",function(e){e.preventDefault(),e.stopPropagation();var clickedRow=Math.floor((e.clientY-_this.canvas.getBoundingClientRect().top)/14),fractionToValue=d3.scale.linear().domain([0,1]).range([colorScheme.getMin(),colorScheme.getMax()]).clamp(!0),fractions=colorScheme.getFractions(),value=fractionToValue(fractions[clickedRow]);hiddenValues.has(value)?hiddenValues.remove(value):hiddenValues.add(value),_this.trigger("selectionChanged"),_this.repaint()})},morpheus.HeatMapColorSchemeLegendTrack.prototype={draw:function(clip,context){var colorScheme=this.colorScheme;colorScheme.setCurrentValue(this.value),context.fillStyle="white",context.fillRect(0,0,this.getUnscaledWidth(),this.getUnscaledHeight()),context.translate(this.hasNames?14:(this.getUnscaledWidth()-200)/2,0),morpheus.HeatMapColorSchemeLegend.drawColorScheme(context,colorScheme,200)}},morpheus.Util.extend(morpheus.HeatMapColorSchemeLegendTrack,morpheus.AbstractCanvas),morpheus.Util.extend(morpheus.HeatMapColorSchemeLegendTrack,morpheus.Events),morpheus.HeatMapColorSchemeLegend.drawColorScheme=function(context,colorScheme,width,printing,hideText){var names=colorScheme.getNames(),hasNames=null!=names;if(hasNames)morpheus.HeatMapColorSchemeLegend.drawColorSchemeVertically(context,colorScheme,colorScheme.getHiddenValues(),printing);else{if(morpheus.HeatMapColorSchemeLegend.draw(context,colorScheme.getFractions(),colorScheme.getColors(),width,12,colorScheme.isStepped()),context.strokeStyle="LightGrey",context.strokeRect(0,0,width,12),hideText)return;var map=d3.scale.linear().domain([0,1]).range([0,width]).clamp(!0),fractionToValue=d3.scale.linear().domain([0,1]).range([colorScheme.getMin(),colorScheme.getMax()]).clamp(!0);if(context.textAlign="center",context.textBaseline="top",context.fillStyle="black",context.font="12px "+morpheus.CanvasUtil.FONT_NAME,colorScheme.getScalingMode()===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE)context.fillText("row min",0,14),context.fillText("row max",width,14);else{for(var fractions=colorScheme.getFractions(),lastTextPixEnd=-1,halfway=parseInt(fractions.length/2),i=0;halfway>i;i++){var pix=map(fractions[i]),text="";text=hasNames?""!=names[i]?names[i]+" ("+fractionToValue(fractions[i])+")":names[i]:morpheus.Util.nf(fractionToValue(fractions[i]));var textWidth=context.measureText(text).width;pix>lastTextPixEnd&&context.fillText(text,pix,14),lastTextPixEnd=pix+textWidth/2}for(var lastTextPixStart=1e4,i=fractions.length-1;i>=halfway;i--){var pix=map(fractions[i]),text="";text=hasNames?""!=names[i]?names[i]+" ("+fractionToValue(fractions[i])+")":names[i]:morpheus.Util.nf(fractionToValue(fractions[i]));var textWidth=context.measureText(text).width;lastTextPixStart>pix&&(context.fillText(text,pix,14),lastTextPixStart=pix-textWidth/2)}}}},morpheus.HeatMapColorSchemeLegend.drawColorSchemeVertically=function(context,colorScheme,hiddenValues,printing){var fractionToValue=d3.scale.linear().domain([0,1]).range([colorScheme.getMin(),colorScheme.getMax()]).clamp(!0);context.textAlign="left",context.textBaseline="top",context.fillStyle="black";var fractions=colorScheme.getFractions(),colors=colorScheme.getColors(),names=colorScheme.getNames();context.strokeStyle="LightGrey";var xpix=0,ypix=0;context.font="12px "+morpheus.CanvasUtil.FONT_NAME;for(var i=0;ii;i++){context.fillStyle=colors[i];var x1=map(fractions[i]),x2=i===length-1?width:map(fractions[i+1]);context.fillRect(Math.min(x1,x2),0,Math.abs(x2-x1),height)}else{for(var gradient=context.createLinearGradient(0,0,width,height),i=0,length=fractions.length;length>i;i++)gradient.addColorStop(fractions[i],colors[i]);context.fillStyle=gradient,context.fillRect(0,0,width,height)}},morpheus.HeatMapColorSchemeLegend.prototype={},morpheus.HeatMapSynchronizer=function(){this.controllers=[]},morpheus.HeatMapSynchronizer.prototype={firing:!1,getProject:function(){return this.controllers[0].getProject()},zoom:function(){this.controllers[0].zoom.apply(this.controllers[0],arguments)},setTrackVisible:function(){this.controllers[0].setTrackVisible.apply(this.controllers[0],arguments)},revalidate:function(){this.controllers[0].revalidate.apply(this.controllers[0],arguments)},add:function(controller){var that=this;this.controllers.push(controller),controller.on("change",function(event){if(!that.firing){var source=event.source,method=event.name;that.firing=!0,_.each(that.controllers,function(c){c!==source&&c[method].apply(c,event.arguments)}),that.firing=!1}})}},morpheus.HeatMapElementCanvas=function(project){morpheus.AbstractCanvas.call(this,!0),this.colorScheme=null,this.project=project,this.dataset=null;var _this=this;this.columnPositions=new morpheus.Positions,this.rowPositions=new morpheus.Positions,this.lastPosition={left:-1,right:-1,top:-1,bottom:-1},project.getElementSelectionModel().on("selectionChanged",function(){_this.repaint()})},morpheus.HeatMapElementCanvas.GRID_COLOR="rgb(128,128,128)",morpheus.HeatMapElementCanvas.prototype={drawGrid:!0,getColorScheme:function(){return this.colorScheme},isDrawGrid:function(){return this.drawGrid},setDrawGrid:function(drawGrid){this.drawGrid=drawGrid},setColorScheme:function(colorScheme){this.colorScheme=colorScheme},setDataset:function(dataset){this.dataset=dataset,this.columnPositions.setLength(this.dataset.getColumnCount()),this.rowPositions.setLength(this.dataset.getRowCount())},getColumnPositions:function(){return this.columnPositions},getRowPositions:function(){return this.rowPositions},getPreferredSize:function(context){var w=Math.ceil(this.columnPositions.getPosition(this.columnPositions.getLength()-1)+this.columnPositions.getItemSize(this.columnPositions.getLength()-1)),h=Math.ceil(this.rowPositions.getPosition(this.rowPositions.getLength()-1)+this.rowPositions.getItemSize(this.rowPositions.getLength()-1));return{width:w,height:h}},prePaint:function(clip,context){var lastPosition=this.lastPosition,columnPositions=this.columnPositions,rowPositions=this.rowPositions,left=morpheus.Positions.getLeft(clip,columnPositions),right=morpheus.Positions.getRight(clip,columnPositions),top=morpheus.Positions.getTop(clip,rowPositions),bottom=morpheus.Positions.getBottom(clip,rowPositions);(this.invalid||left!==lastPosition.left||right!==lastPosition.right||top!==lastPosition.top||bottom!==lastPosition.bottom)&&(lastPosition.right=right,lastPosition.left=left,lastPosition.top=top,lastPosition.bottom=bottom,this.invalid=!0)},postPaint:function(clip,context){morpheus.CanvasUtil.resetTransform(context);var project=this.project;context.strokeStyle="Grey",context.lineWidth=1;var rowPositions=this.getRowPositions(),columnPositions=this.getColumnPositions();if(project.getHoverColumnIndex()>=0||project.getHoverRowIndex()>=0){var height=rowPositions.getItemSize(project.getHoverColumnIndex()),width=columnPositions.getItemSize(project.getHoverColumnIndex()),y=-1===project.getHoverRowIndex()?rowPositions.getPosition(rowPositions.getLength()-1):rowPositions.getPosition(project.getHoverRowIndex()),x=-1===project.getHoverColumnIndex()?columnPositions.getPosition(0):columnPositions.getPosition(project.getHoverColumnIndex());-1!==project.getHoverColumnIndex()&&context.strokeRect(x-clip.x,0,width,this.getUnscaledHeight()),-1!==project.getHoverRowIndex()&&context.strokeRect(0,y-clip.y,this.getUnscaledWidth(),height),-1!==project.getHoverColumnIndex()&&-1!==project.getHoverRowIndex()&&(context.strokeStyle="black",context.lineWidth=3,context.strokeRect(x-clip.x+1.5,y-clip.y+1.5,width-1.5,height-1.5))}var left=morpheus.Positions.getLeft(clip,columnPositions),right=morpheus.Positions.getRight(clip,columnPositions),top=morpheus.Positions.getTop(clip,rowPositions),bottom=morpheus.Positions.getBottom(clip,rowPositions);context.strokeStyle="rgb(182,213,253)",context.lineWidth=3,context.translate(-clip.x,-clip.y);var selectedElements=project.getElementSelectionModel().getViewIndices();null!=selectedElements&&selectedElements.forEach(function(id){var rowIndex=id.getArray()[0],columnIndex=id.getArray()[1];if(rowIndex>=top&&bottom>rowIndex&&columnIndex>=left&&right>columnIndex){var rowSize=rowPositions.getItemSize(rowIndex),py=rowPositions.getPosition(rowIndex),columnSize=columnPositions.getItemSize(columnIndex),px=columnPositions.getPosition(columnIndex);context.strokeRect(px+1.5,py+1.5,columnSize-1.5,rowSize-1.5)}})},setElementDrawCallback:function(elementDrawCallback){this._elementDrawCallback=elementDrawCallback},setDrawCallback:function(drawCallback){this.drawCallback=drawCallback},draw:function(clip,context){var columnPositions=this.columnPositions,rowPositions=this.rowPositions,left=morpheus.Positions.getLeft(clip,columnPositions),right=morpheus.Positions.getRight(clip,columnPositions),top=morpheus.Positions.getTop(clip,rowPositions),bottom=morpheus.Positions.getBottom(clip,rowPositions),dataset=this.dataset;context.translate(-clip.x,-clip.y);for(var colorScheme=this.colorScheme,drawGrid=this.drawGrid,elementDrawCallback=this._elementDrawCallback,seriesNameToIndex={},i=0;irow;row++)for(var rowSize=rowPositions.getItemSize(row),py=rowPositions.getPosition(row),column=left;right>column;column++){var columnSize=columnPositions.getItemSize(column),px=columnPositions.getPosition(column);if(context.fillStyle=colorScheme.getColor(row,column,dataset.getValue(row,column)),column===left){sizer=colorScheme.getSizer(),sizeBySeriesName=sizer.getSeriesName(),sizeBySeriesIndex=null!=sizeBySeriesName?seriesNameToIndex[sizeBySeriesName]:void 0,conditionSeriesIndices=[],conditions=colorScheme.getConditions().getConditions();for(var ci=0,nconditions=conditions.length;nconditions>ci;ci++)conditionSeriesIndices.push(seriesNameToIndex[conditions[ci].series])}var yoffset=0,cellRowSize=rowSize;if(void 0!==sizeBySeriesIndex){var sizeByValue=dataset.getValue(row,column,sizeBySeriesIndex);if(!isNaN(sizeByValue)){var f=sizer.valueToFraction(sizeByValue),rowDiff=rowSize-rowSize*f;yoffset=rowDiff,cellRowSize-=rowDiff}}if(conditions.length>0){for(var condition=null,ci=0,nconditions=conditions.length;nconditions>ci;ci++){var cond=conditions[ci],condValue=dataset.getValue(row,column,conditionSeriesIndices[ci]);if(!isNaN(condValue)&&cond.accept(condValue)){condition=cond;break}}if(null!==condition){context.fillRect(px,py+yoffset,columnSize,cellRowSize);var x=px+cellRowSize/2,y=py+yoffset+columnSize/2;context.fillStyle=condition.color,morpheus.CanvasUtil.drawShape(context,condition.shape,x,y,Math.min(columnSize,cellRowSize)/4),context.fill()}else context.fillRect(px,py+yoffset,columnSize,cellRowSize)}else context.fillRect(px,py+yoffset,columnSize,cellRowSize);elementDrawCallback&&elementDrawCallback(context,dataset,row,column,px,py,columnSize,rowSize)}if(drawGrid){context.strokeStyle=morpheus.HeatMapElementCanvas.GRID_COLOR,context.lineWidth=.1;for(var row=top;bottom>row;row++)for(var rowSize=rowPositions.getItemSize(row),py=rowPositions.getPosition(row),column=left;right>column;column++){var columnSize=columnPositions.getItemSize(column),px=columnPositions.getPosition(column),grid=drawGrid&&columnSize>10&&rowSize>10;grid&&context.strokeRect(px,py,columnSize,rowSize)}}this.drawCallback&&this.drawCallback({context:context,dataset:dataset,top:top,bottom:bottom,left:left,right:right,rowPositions:rowPositions,columnPositions:columnPositions,project:this.project,clip:clip}),context.lineWidth=1,context.translate(clip.x,clip.y)}},morpheus.Util.extend(morpheus.HeatMapElementCanvas,morpheus.AbstractCanvas),morpheus.HeatMapKeyListener=function(controller){var keydown=function(e){var tagName=e.target.tagName;if("INPUT"!=tagName&&"SELECT"!=tagName&&"TEXTAREA"!=tagName){var found=!1,commandKey=morpheus.Util.IS_MAC?e.metaKey:e.ctrlKey,shiftKey=(e.altKey,e.shiftKey);if(commandKey&&65===e.which){var active=controller.getActiveComponent();if(-1!==active){found=!0;for(var selectionModel=0===active?controller.getProject().getRowSelectionModel():controller.getProject().getColumnSelectionModel(),count=0===active?controller.getProject().getSortedFilteredDataset().getRowCount():controller.getProject().getSortedFilteredDataset().getColumnCount(),indices=new morpheus.Set,i=0;count>i;i++)indices.add(i);selectionModel.setViewIndices(indices,!0),found=!0}}else if(61===e.which||187===e.which||107===e.which)controller.zoom(!0),found=!0;else if(173===e.which||189===e.which||109===e.which)controller.zoom(!1),found=!0;else if(35===e.which)controller.scrollLeft(controller.heatmap.getPreferredSize().width),controller.scrollTop(controller.heatmap.getPreferredSize().height),found=!0;else if(36===e.which)controller.scrollLeft(0),controller.scrollTop(0),found=!0;else if(34===e.which){var pos=controller.scrollTop();controller.scrollTop(pos+controller.heatmap.getUnscaledHeight()-2),found=!0}else if(33===e.which){var pos=controller.scrollTop();controller.scrollTop(pos-controller.heatmap.getUnscaledHeight()+2),found=!0}else 38===e.which?(commandKey?controller.scrollTop(0):controller.scrollTop(controller.scrollTop()-8),found=!0):40===e.which?(commandKey?controller.scrollTop(controller.heatmap.getPreferredSize().height):controller.scrollTop(controller.scrollTop()+8),found=!0):37===e.which?(commandKey?controller.scrollLeft(0):controller.scrollLeft(controller.scrollLeft()-8),found=!0):39===e.which?(commandKey?controller.scrollLeft(controller.heatmap.getPreferredSize().width):controller.scrollLeft(controller.scrollLeft()+8),found=!0):commandKey&&(83===e.which?(shiftKey?morpheus.HeatMap.showTool(new morpheus.SaveDatasetTool,controller):morpheus.HeatMap.showTool(new morpheus.SaveImageTool,controller),found=!0):79===e.which?(morpheus.HeatMap.showTool(new morpheus.OpenFileTool,controller),found=!0):70===e.which?(controller.getToolbarElement().find(e.shiftKey?"[name=searchColumns]":"[name=searchRows]").focus(),found=!0):88===e.which&&(morpheus.HeatMap.showTool(new morpheus.NewHeatMapTool,controller),found=!0));return found?(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!1):void 0}},$keyelement=controller.$el;$keyelement.on("keydown",keydown),$keyelement.on("dragover.morpheus dragenter.morpheus",function(e){e.preventDefault(),e.stopPropagation()}).on("drop.morpheus",function(e){if(e.originalEvent.dataTransfer&&e.originalEvent.dataTransfer.files.length){e.preventDefault(),e.stopPropagation();var files=e.originalEvent.dataTransfer.files;morpheus.HeatMap.showTool(new morpheus.OpenFileTool({file:files[0]}),controller)}}),$keyelement.on("paste.morpheus",function(e){var tagName=e.target.tagName;if("INPUT"!=tagName&&"SELECT"!=tagName&&"TEXTAREA"!=tagName){var text=e.originalEvent.clipboardData.getData("text/plain");if(null!=text&&text.length>0){e.preventDefault(),e.stopPropagation();var blob=new Blob([text]),url=window.URL.createObjectURL(blob);morpheus.HeatMap.showTool(new morpheus.OpenFileTool({file:url}),controller)}}}),$keyelement.on("mousewheel",function(e){var scrolly=e.deltaY*e.deltaFactor,scrollx=e.deltaX*e.deltaFactor;e.altKey?controller.zoom(scrolly>0,{rows:!0,columns:!0}):(0!==scrolly&&controller.scrollTop(controller.scrollTop()-scrolly),0!==scrollx&&controller.scrollLeft(controller.scrollLeft()-scrollx)),e.preventDefault(),e.stopPropagation()})},morpheus.HeatMapOptions=function(controller){function createMetadataField(isColumns){var options=[],value={},field={type:"bootstrap-select",name:isColumns?"column_annotations":"row_annotations",multiple:!0,value:value,options:options,toggle:!0};return _.each(controller.getVisibleTrackNames(isColumns),function(name){value[name]=!0}),_.each(morpheus.MetadataUtil.getMetadataNames(isColumns?controller.getProject().getFullDataset().getColumnMetadata():controller.getProject().getFullDataset().getRowMetadata()),function(name){options.push(name)}),field}function annotationsListener($select,isColumns){var names=[];_.each(controller.getVisibleTrackNames(isColumns),function(name){names.push(name)});var values=$select.val(),selectedNow=_.difference(values,names),unselectedNow=_.difference(names,values),tracks=[];_.each(selectedNow,function(name){tracks.push({name:name,isColumns:isColumns,visible:!0})}),_.each(unselectedNow,function(name){tracks.push({name:name,isColumns:isColumns,visible:!1})}),controller.setTrackVisibility(tracks),colorSchemeChooser.restoreCurrentValue()}var items=[{name:"color_by",required:!0,type:"select",options:["(None)"].concat(morpheus.MetadataUtil.getMetadataNames(controller.getProject().getFullDataset().getRowMetadata())),value:controller.heatmap.getColorScheme().getSeparateColorSchemeForRowMetadataField()},{name:"color_by_value",required:!0,type:"select",options:[]},{name:"load_predefined_scheme",required:!0,type:"select",options:[{name:"",value:""},{name:"relative",value:"gene"},{name:"binary",value:"binary"},{name:"MAF",value:"MAF"},{name:"fixed (-1.5, -0.1, 0.1, 1.5)",value:"cn"},{name:"fixed (-90, -80, 80, 90)",value:"100scale2"},{name:"fixed (-90, 90)",value:"100scale1"}]},{name:"save_color_scheme",type:"button"},{name:"load_color_scheme",type:"file"}];controller.getProject().getFullDataset().getSeriesCount()>1&&(items.push({name:"size_by", -required:!0,type:"select",options:["(None)"].concat(morpheus.DatasetUtil.getSeriesNames(controller.getProject().getFullDataset()))}),items.push({name:"size_by_minimum",title:"Size by minimum",required:!0,type:"text",col:"col-xs-4"}),items.push({name:"size_by_maximum",title:"Size by maximum",required:!0,type:"text",col:"col-xs-4"}),items.push({name:"conditional_rendering",required:!0,type:"button",col:"col-xs-4"}));var displayItems=[{name:"show_grid",required:!0,type:"checkbox",value:controller.heatmap.isDrawGrid()},{name:"row_size",required:!0,type:"text",col:"col-xs-4",value:morpheus.Util.nf(controller.heatmap.getRowPositions().getSize())},{name:"column_size",required:!0,type:"text",col:"col-xs-4",value:morpheus.Util.nf(controller.heatmap.getColumnPositions().getSize())}];controller.rowDendrogram&&displayItems.push({name:"row_dendrogram_line_thickness",required:!0,type:"text",col:"col-xs-4",value:morpheus.Util.nf(controller.rowDendrogram?controller.rowDendrogram.lineWidth:1)}),controller.columnDendrogram&&displayItems.push({name:"column_dendrogram_line_thickness",required:!0,type:"text",col:"col-xs-4",value:morpheus.Util.nf(controller.columnDendrogram?controller.columnDendrogram.lineWidth:1)}),displayItems.push({name:"info_window",required:!0,type:"select",col:"col-xs-4",options:[{name:"Fixed To Top",value:0},{name:"New Window",value:1}],value:controller.tooltipMode}),displayItems.push({name:"inline_tooltip",required:!0,type:"checkbox",value:controller.options.inlineTooltip});var colorSchemeFormBuilder=new morpheus.FormBuilder;_.each(items,function(item){colorSchemeFormBuilder.append(item)});var displayFormBuilder=new morpheus.FormBuilder;_.each(displayItems,function(item){displayFormBuilder.append(item)});var colorSchemeChooser=new morpheus.HeatMapColorSchemeChooser({showRelative:!0});colorSchemeChooser.on("change",function(){controller.heatmap.getColorScheme().getSizer&&null!=controller.heatmap.getColorScheme().getSizer()&&(colorSchemeFormBuilder.setValue("size_by",controller.heatmap.getColorScheme().getSizer().getSeriesName()),colorSchemeFormBuilder.setEnabled("size_by_minimum",null!=controller.heatmap.getColorScheme().getSizer().getSeriesName()),colorSchemeFormBuilder.setEnabled("size_by_maximum",null!=controller.heatmap.getColorScheme().getSizer().getSeriesName()),colorSchemeFormBuilder.setValue("size_by_minimum",controller.heatmap.getColorScheme().getSizer().getMin()),colorSchemeFormBuilder.setValue("size_by_maximum",controller.heatmap.getColorScheme().getSizer().getMax())),controller.heatmap.setInvalid(!0),controller.heatmap.repaint(),colorSchemeChooser.restoreCurrentValue()});var annotationsBuilder=new morpheus.FormBuilder;annotationsBuilder.append(createMetadataField(!1)),annotationsBuilder.append(createMetadataField(!0));var $ca=annotationsBuilder.$form.find("[name=column_annotations]");$ca.on("change",function(e){annotationsListener($(this),!0)});var $ra=annotationsBuilder.$form.find("[name=row_annotations]");$ra.on("change",function(e){annotationsListener($(this),!1)});var annotationOptionsTabId=_.uniqueId("morpheus"),heatMapOptionsTabId=_.uniqueId("morpheus"),displayOptionsTabId=_.uniqueId("morpheus"),$metadataDiv=$('
    ');$metadataDiv.append($(annotationsBuilder.$form));var $heatMapDiv=$('
    ');$heatMapDiv.append(colorSchemeChooser.$div),$heatMapDiv.append($(colorSchemeFormBuilder.$form));var $displayDiv=$('
    ');$displayDiv.append($(displayFormBuilder.$form)),displayFormBuilder.$form.find("[name=show_grid]").on("click",function(e){var grid=$(this).prop("checked");controller.heatmap.setDrawGrid(grid),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()}),displayFormBuilder.$form.find("[name=inline_tooltip]").on("click",function(e){controller.options.inlineTooltip=$(this).prop("checked")}),displayFormBuilder.$form.find("[name=row_size]").on("keyup",_.debounce(function(e){controller.heatmap.getRowPositions().setSize(parseFloat($(this).val())),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100)),displayFormBuilder.$form.find("[name=info_window]").on("change",function(e){controller.setTooltipMode(parseInt($(this).val()))});var $colorByValue=colorSchemeFormBuilder.$form.find("[name=color_by_value]"),separateSchemesField=controller.heatmap.getColorScheme().getSeparateColorSchemeForRowMetadataField();null!=separateSchemesField&&$colorByValue.html(morpheus.Util.createOptions(morpheus.VectorUtil.createValueToIndexMap(controller.project.getFullDataset().getRowMetadata().getByName(separateSchemesField)).keys())),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme()),null!=separateSchemesField&&colorSchemeChooser.setCurrentValue($colorByValue.val()),controller.heatmap.getColorScheme().getSizer&&null!=controller.heatmap.getColorScheme().getSizer()&&controller.heatmap.getColorScheme().getSizer().getSeriesName()&&colorSchemeFormBuilder.setValue("size_by",controller.heatmap.getColorScheme().getSizer().getSeriesName()),colorSchemeFormBuilder.$form.find("[name=size_by]").on("change",function(e){var series=$(this).val();"(None)"==series&&(series=null),colorSchemeChooser.colorScheme.getSizer().setSeriesName(series),colorSchemeChooser.fireChanged()}),colorSchemeFormBuilder.$form.find("[name=size_by_minimum]").on("keyup",_.debounce(function(e){colorSchemeChooser.colorScheme.getSizer().setMax(parseFloat($(this).val())),colorSchemeChooser.fireChanged()},100)),colorSchemeFormBuilder.$form.find("[name=conditional_rendering]").on("click",function(e){e.preventDefault();var conditionalRenderingUI=new morpheus.ConditionalRenderingUI(controller);morpheus.FormBuilder.showInModal({title:"Conditional Rendering",html:conditionalRenderingUI.$div,close:"Close",z:1051,callback:function(){}})}),colorSchemeFormBuilder.$form.find("[name=size_by_maximum]").on("keyup",_.debounce(function(e){colorSchemeChooser.colorScheme.getSizer().setMax(parseFloat($(this).val())),colorSchemeChooser.fireChanged()},100)),colorSchemeFormBuilder.find("save_color_scheme").on("click",function(e){e.preventDefault();var blob=new Blob([controller.heatmap.getColorScheme().toJson()],{type:"application/json"});saveAs(blob,"color_scheme.json")}),colorSchemeFormBuilder.on("change",function(e){"load_color_scheme"===e.name&&""!==e.value&&null!=e.value&&morpheus.Util.getText(e.value).done(function(text){var json=JSON.parse($.trim(text));controller.heatmap.getColorScheme().fromJson(json),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme()),controller.heatmap.setInvalid(!0),controller.heatmap.repaint()}).fail(function(){morpheus.FormBuilder.showInModal({title:"Error",html:"Unable to read saved color scheme."})})}),colorSchemeFormBuilder.$form.on("change","[name=load_predefined_scheme]",function(e){var val=$(this).val();""!==val?("gene"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.RELATIVE())):"cn"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.CN())):"MAF"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.MAF())):"binary"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.BINARY())):"100scale1"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.SUMMLY())):"100scale2"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.SUMMLY2())):console.log("not found"),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme()),controller.heatmap.setInvalid(!0),controller.heatmap.repaint(),$(this).val("")):console.log("empty option selected"),colorSchemeChooser.restoreCurrentValue()}),colorSchemeFormBuilder.$form.find("[name=color_by]").on("change",function(e){var colorByField=$(this).val();"(None)"==colorByField&&(colorByField=null),controller.heatmap.getColorScheme().setSeparateColorSchemeForRowMetadataField(colorByField),null!=colorByField&&$colorByValue.html(morpheus.Util.createOptions(morpheus.VectorUtil.createValueToIndexMap(controller.project.getFullDataset().getRowMetadata().getByName(colorByField)).keys()));var colorByValue=$colorByValue.val();controller.heatmap.getColorScheme().setCurrentValue(colorByValue),colorSchemeChooser.setCurrentValue(colorByValue),controller.heatmap.setInvalid(!0),controller.heatmap.repaint(),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme())}),$colorByValue.on("change",function(e){null==controller.heatmap.getColorScheme().getSeparateColorSchemeForRowMetadataField()?(colorSchemeChooser.setCurrentValue(null),controller.heatmap.getColorScheme().setCurrentValue(null),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme())):(colorSchemeChooser.setCurrentValue($colorByValue.val()),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme()))}),displayFormBuilder.$form.find("[name=column_size]").on("keyup",_.debounce(function(e){controller.heatmap.getColumnPositions().setSize(parseFloat($(this).val())),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100)),displayFormBuilder.$form.find("[name=gap_size]").on("keyup",_.debounce(function(e){controller.gapSize=parseFloat($(this).val()),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100)),displayFormBuilder.$form.find("[name=squish_factor]").on("keyup",_.debounce(function(e){var f=parseFloat($(this).val());controller.heatmap.getColumnPositions().setSquishFactor(f),controller.heatmap.getRowPositions().setSquishFactor(f),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100)),displayFormBuilder.$form.find("[name=row_dendrogram_line_thickness]").on("keyup",_.debounce(function(e){controller.rowDendrogram.lineWidth=parseFloat($(this).val()),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100)),displayFormBuilder.$form.find("[name=column_dendrogram_line_thickness]").on("keyup",_.debounce(function(e){controller.columnDendrogram.lineWidth=parseFloat($(this).val()),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100));var $tab=$('
    ');$metadataDiv.appendTo($tab),$heatMapDiv.appendTo($tab),$displayDiv.appendTo($tab);var $div=$("
    "),$ul=$('');$ul.appendTo($div),$tab.appendTo($div),$ul.find("[role=tab]:eq(1)").tab("show"),morpheus.FormBuilder.showInModal({title:"Options",html:$div,close:"Close",callback:function(){$div.find("input").off("keyup"),$ca.off("change"),$ra.off("change"),$div.remove(),colorSchemeChooser.dispose()}})},morpheus.HeatMapToolBar=function(controller){this.controller=controller,this.rowSearchResultModelIndices=[],this.columnSearchResultModelIndices=[];var _this=this,$el=$('
    '),searchHtml=[],$search=$('');if($search.on("submit",function(e){e.preventDefault()}),controller.options.toolbar.searchRows&&(searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push(''),searchHtml.push('"),searchHtml.push("
    "),searchHtml.push(''),searchHtml.push("
    "),searchHtml.push('
    '),searchHtml.push(''),searchHtml.push('
    '),searchHtml.push(''),searchHtml.push(''),searchHtml.push(''),searchHtml.push("
    "),searchHtml.push("
    ")),controller.options.toolbar.searchColumns&&(searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push(''),searchHtml.push('"),searchHtml.push("
    "),searchHtml.push('
    '),searchHtml.push("
    "),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push(''),searchHtml.push(''),searchHtml.push(''),searchHtml.push(''),searchHtml.push(""),searchHtml.push("
    ")),searchHtml.push('
    '),searchHtml.push('
    Values
    '),searchHtml.push("
    "),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push("
    "),searchHtml.push('"),searchHtml.push('"),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push("
    "),searchHtml.push('
    '),searchHtml.push("
    "),$(searchHtml.join("")).appendTo($search),controller.options.toolbar.searchValues||$search.find("[name=searchValuesDiv]").css("display","none"),controller.options.tour){var $tour=$('');$tour.prependTo($search.find("[name=right]")),$tour.on("click",function(e){e.preventDefault(),controller.options.tour(controller)})}controller.options.$help&&controller.options.$help.appendTo($search.find("[name=right]"));var $tools=$('
    ');$tools.on("submit",function(e){e.preventDefault()});var $toolbarForm=$('
    ');$toolbarForm.on("submit",function(e){e.preventDefault()});var toolbarHtml=[];controller.options.toolbar.zoom&&(toolbarHtml.push('
    '),toolbarHtml.push(''),toolbarHtml.push(''),toolbarHtml.push(''),toolbarHtml.push('')),toolbarHtml.push('
    '),controller.options.toolbar.sort&&toolbarHtml.push(''),controller.options.toolbar.options&&toolbarHtml.push(''),toolbarHtml.push('
    '),controller.options.toolbar.saveImage&&toolbarHtml.push(''),controller.options.toolbar.saveDataset&&toolbarHtml.push(''),controller.options.toolbar.openFile&&toolbarHtml.push(''),toolbarHtml.push('
    '),controller.options.toolbar.filter&&toolbarHtml.push(''),"undefined"!=typeof Plotly&&toolbarHtml.push('');var tools=[{tool:new morpheus.HClusterTool},{tool:new morpheus.MarkerSelection},{tool:new morpheus.NearestNeighbors},{tool:new morpheus.NewHeatMapTool},null,{tool:new morpheus.AdjustDataTool},{tool:new morpheus.CollapseDatasetTool},{tool:new morpheus.CreateAnnotation},{tool:new morpheus.TransposeTool},{tool:new morpheus.WordCloudTool}];if(this.getToolByName=function(name){for(var i=0;i'),toolbarHtml.push(''),toolbarHtml.push('
    ")}toolbarHtml.push('
    '),controller.options.toolbar.colorKey&&(toolbarHtml.push('
    '),toolbarHtml.push(''),toolbarHtml.push('"),toolbarHtml.push("
    "));var tipWidth=400;"undefined"!=typeof window&&(tipWidth=window.screen.width-400),toolbarHtml.push('
    '),toolbarHtml.push("
    "),$search.appendTo($el.find("[name=toolbarSearch]")),$(toolbarHtml.join("")).appendTo($toolbarForm),$toolbarForm.appendTo($el.find("[name=toolbarButtons]")),$el.prependTo(controller.$el);var $tools=$el.find("[name=tools]");this.$tip=$el.find("[name=tip]"),$tools.on("click","li > a",function(e){e.preventDefault();var index=parseInt($(this).attr("name"));tools[index].tool?morpheus.HeatMap.showTool(tools[index].tool,controller):tools[index].action()}),this.defaultRowMatchMode="contains",this.defaultColumnMatchMode="contains";var $rowSearchOptions=$el.find("[name=rowSearchOptions]");$rowSearchOptions.on("click","li > a",function(e){e.preventDefault(),_this.defaultRowMatchMode=$(this).attr("name"),$rowSearchOptions.find("li").removeClass("active"),$(this).parent("li").addClass("active"),_this.search(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"rowSearchMatchMode"})});var $columnSearchOptions=$el.find("[name=columnSearchOptions]");$columnSearchOptions.on("click","li > a",function(e){e.preventDefault(),_this.defaultColumnMatchMode=$(this).attr("name"),$columnSearchOptions.find("li").removeClass("active"),$(this).parent("li").addClass("active"),_this.search(!1),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"columnSearchMatchMode"})});var filterModal=[],filterLabelId=_.uniqueId("morpheus");filterModal.push('");var $filterModal=$(filterModal.join(""));$filterModal.on("mousewheel",function(e){e.stopPropagation()});var $filter=$("
    ");$filter.appendTo($filterModal.find(".modal-body")),$filterModal.appendTo($el);var filterHtml=[];filterHtml.push('
    '),filterHtml.push('
    ');var $filterChooser=$(filterHtml.join(""));$filterChooser.appendTo($filter);var columnFilterUI=new morpheus.FilterUI(controller.getProject(),!0),rowFilterUI=new morpheus.FilterUI(controller.getProject(),!1);controller.getProject().getRowFilter().on("focus",function(e){$filterChooser.find("[value=rows]").prop("checked",!0),columnFilterUI.$div.hide(),rowFilterUI.$div.show(),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"rowFilter"})}),controller.getProject().getColumnFilter().on("focus",function(e){$filterChooser.find("[value=columns]").prop("checked",!0),columnFilterUI.$div.show(),rowFilterUI.$div.hide(),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"columnFilter"})}),rowFilterUI.$div.appendTo($filter),columnFilterUI.$div.appendTo($filter),columnFilterUI.$div.css("display","none");var $filterRadio=$filterChooser.find("[name=rowsOrColumns]");$filterRadio.on("change",function(e){var val=$filterRadio.filter(":checked").val();"columns"===val?(columnFilterUI.$div.show(),rowFilterUI.$div.hide()):(columnFilterUI.$div.hide(),rowFilterUI.$div.show()),e.preventDefault()}),$el.find("[name=filterButton]").on("click",function(){$filterModal.modal("show"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"filter"})}),$el.find('[data-toggle="tooltip"]').tooltip({placement:"bottom",container:"body",trigger:"hover"}).on("click",function(){$(this).tooltip("hide")});var $key=$el.find("[name=key]"),$keyContent=$el.find("[name=keyContent]");$key.dropdown().parent().on("show.bs.dropdown",function(){new morpheus.HeatMapColorSchemeLegend(controller,$keyContent),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"colorKey"})}),$el.find("[name=openFile]").on("click",function(){morpheus.HeatMap.showTool(new morpheus.OpenFileTool({customUrls:controller._customUrls}),controller)}),$el.find("[name=saveImage]").on("click",function(){morpheus.HeatMap.showTool(new morpheus.SaveImageTool,controller)}),$el.find("[name=saveDataset]").on("click",function(){morpheus.HeatMap.showTool(new morpheus.SaveDatasetTool,controller)}),$el.find("[name=chart]").on("click",function(){new morpheus.ChartTool2({project:controller.getProject(),getVisibleTrackNames:_.bind(controller.getVisibleTrackNames,controller)}),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"chart"})});var _this=this;$el.find("[name=tutorial]").on("click",function(){window.open("http://www.broadinstitute.org/cancer/software/morpheus/tutorial.html"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"tutorial"})}),this.$previousColumnMatch=$el.find("[name=previousColumnMatch]"),this.$nextColumnMatch=$el.find("[name=nextColumnMatch]"),this.$previousRowMatch=$el.find("[name=previousRowMatch]"),this.$nextRowMatch=$el.find("[name=nextRowMatch]"),this.$dimensionsLabel=$el.find("[name=dim]"),this.$columnTextField=$el.find("[name=searchColumns]"),this.$valueTextField=$el.find("[name=searchValues]"),this.$selectionLabel=$el.find("[name=selection]"),this.$rowTextField=$el.find("[name=searchRows]"),this.$columnMatchesToTop=$el.find("[name=columnMatchesToTop]"),this.$rowMatchesToTop=$el.find("[name=rowMatchesToTop]"),this.$rowSearchDiv=$el.find("[name=rowSearchDiv]"),this.$columnSearchDiv=$el.find("[name=columnSearchDiv]"),this.$searchRowDendrogramWrapper=$el.find("[name=searchRowDendrogramWrapper]"),this.$searchRowDendrogram=$el.find("[name=searchRowDendrogram]"),this.$searchResultsRowDendrogram=$el.find("[name=searchResultsRowDendrogram]"),this.$searchColumnDendrogramWrapper=$el.find("[name=searchColumnDendrogramWrapper]"),this.$searchColumnDendrogram=$el.find("[name=searchColumnDendrogram]"),this.$searchResultsColumnDendrogram=$el.find("[name=searchResultsColumnDendrogram]"),controller.on("dendrogramAnnotated",function(e){(e.isColumns?_this.$searchColumnDendrogramWrapper:_this.$searchRowDendrogramWrapper).show()}),controller.on("dendrogramChanged",function(e){(e.isColumns?_this.$searchColumnDendrogramWrapper:_this.$searchRowDendrogramWrapper).hide()});var project=controller.getProject();morpheus.Util.autosuggest({$el:this.$rowTextField,filter:function(terms,cb){var indices=[],meta=project.getSortedFilteredDataset().getRowMetadata();controller.getVisibleTrackNames(!1).forEach(function(name){indices.push(morpheus.MetadataUtil.indexOf(meta,name))}),meta=new morpheus.MetadataModelColumnView(meta,indices),morpheus.MetadataUtil.autocomplete(meta)(terms,cb)},select:function(){_this.search(!0)}}),this.$rowTextField.on("keyup",_.debounce(function(e){13===e.which&&e.preventDefault(),_this.search(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"searchRows"})},500)),morpheus.Util.autosuggest({$el:this.$columnTextField,filter:function(terms,cb){var indices=[],meta=project.getSortedFilteredDataset().getColumnMetadata();controller.getVisibleTrackNames(!0).forEach(function(name){indices.push(morpheus.MetadataUtil.indexOf(meta,name))}),meta=new morpheus.MetadataModelColumnView(meta,indices),morpheus.MetadataUtil.autocomplete(meta)(terms,cb)},select:function(){_this.search(!1)}}),this.$columnTextField.on("keyup",_.debounce(function(e){13===e.which&&e.preventDefault(),_this.search(!1),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"searchColumns"})},500)),this.$searchRowDendrogram.on("keyup",_.debounce(function(e){13===e.which&&e.preventDefault(),_this.searchDendrogram(!1),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"searchRowDendrogram"})},500)),this.$searchColumnDendrogram.on("keyup",_.debounce(function(e){13===e.which&&e.preventDefault(),_this.searchDendrogram(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"searchColumnDendrogram"})},500)),morpheus.Util.autocomplete(this.$valueTextField,function(term,cb){var values=new morpheus.Set;morpheus.DatasetUtil.searchValues(project.getSortedFilteredDataset(),$.trim(_this.$valueTextField.val()),function(value,i,j){return values.add(value),3===values.size()?!1:void 0}),cb(values.values().map(function(val){return{value:val}}))},function(){}),this.$valueTextField.on("keyup",_.debounce(function(e){13===e.which&&(_this.$valueTextField.autocomplete("close"),e.preventDefault());var $searchResultsLabel=_this.$el.find("[name=searchResultsValues]"),text=$.trim(_this.$valueTextField.val());if(""===text)$searchResultsLabel.html(""),project.getElementSelectionModel().setViewIndices(null);else{var viewIndices=new morpheus.Set;morpheus.DatasetUtil.searchValues(project.getSortedFilteredDataset(),text,function(value,i,j){viewIndices.add(new morpheus.Identifier([i,j])); -}),project.getElementSelectionModel().setViewIndices(viewIndices),$searchResultsLabel.html(viewIndices.size()+" match"+(1===viewIndices.size()?"":"es"))}},500)),$toolbarForm.on("submit",function(e){e.preventDefault()}),$toolbarForm.on("click","[name=in]",function(e){e.preventDefault(),controller.zoom(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"zoomIn"})}),$toolbarForm.on("click","[name=out]",function(e){e.preventDefault(),controller.zoom(!1),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"zoomOut"})}),$toolbarForm.on("click","[name=options]",function(e){e.preventDefault(),controller.showOptions(),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"options"})}),$toolbarForm.on("click","[name=sort]",function(e){e.preventDefault(),new morpheus.SortDialog(project),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"sort"})}),$toolbarForm.on("click","[name=fit]",function(e){e.preventDefault(),controller.fitToWindow(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"fit"})}),$toolbarForm.on("click","[name=resetZoom]",function(e){e.preventDefault(),controller.resetZoom(),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"resetZoom"})}),this.$el=$el;var updateFilterStatus=function(){controller.getProject().getRowFilter().isEnabled()||controller.getProject().getColumnFilter().isEnabled()?_this.$el.find("[name=filterButton]").addClass("btn-primary"):_this.$el.find("[name=filterButton]").removeClass("btn-primary")};updateFilterStatus(),this.$columnMatchesToTop.on("click",function(e){e.preventDefault();var $this=$(this);$this.toggleClass("btn-primary");var sortKeys=project.getColumnSortKeys();if(sortKeys=sortKeys.filter(function(key){return key instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===key.name}),$this.hasClass("btn-primary")){var key=new morpheus.MatchesOnTopSortKey(project,_this.columnSearchResultModelIndices,"matches on top");sortKeys.splice(0,0,key),controller.scrollLeft(0)}_this.searching=!0,project.setColumnSortKeys(sortKeys,!0),_this._updateSearchIndices(!0),_this.searching=!1,morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"columnMatchesToTop"})}),this.$rowMatchesToTop.on("click",function(e){e.preventDefault();var $this=$(this);$this.toggleClass("btn-primary");var sortKeys=project.getRowSortKeys();if(sortKeys=sortKeys.filter(function(key){return key instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===key.name}),$this.hasClass("btn-primary")){var key=new morpheus.MatchesOnTopSortKey(project,_this.rowSearchResultModelIndices,"matches on top");sortKeys.splice(0,0,key),controller.scrollTop(0)}_this.searching=!0,project.setRowSortKeys(sortKeys,!0),_this._updateSearchIndices(!1),_this.searching=!1,morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"rowMatchesToTop"})}),project.on("rowSortOrderChanged.morpheus",function(e){_this.searching||(_this._updateSearchIndices(!1),_this.$rowMatchesToTop.removeClass("btn-primary"))}),project.on("columnSortOrderChanged.morpheus",function(e){_this.searching||(_this._updateSearchIndices(!0),_this.$columnMatchesToTop.removeClass("btn-primary"))}),controller.getProject().on("rowFilterChanged.morpheus",function(e){_this.search(!0),updateFilterStatus()}),controller.getProject().on("columnFilterChanged.morpheus",function(e){_this.search(!1),updateFilterStatus()}),controller.getProject().on("datasetChanged.morpheus",function(){_this.search(!0),_this.search(!1),updateFilterStatus()}),controller.getProject().getRowSelectionModel().on("selectionChanged.morpheus",function(){_this.updateSelectionLabel()}),controller.getProject().getColumnSelectionModel().on("selectionChanged.morpheus",function(){_this.updateSelectionLabel()}),this.rowSearchResultViewIndicesSorted=null,this.currentRowSearchIndex=0,this.columnSearchResultViewIndicesSorted=null,this.currentColumnSearchIndex=-1,this.$previousColumnMatch.on("click",function(){_this.currentColumnSearchIndex--,_this.currentColumnSearchIndex<0&&(_this.currentColumnSearchIndex=_this.columnSearchResultViewIndicesSorted.length-1),controller.scrollLeft(controller.getHeatMapElementComponent().getColumnPositions().getPosition(_this.columnSearchResultViewIndicesSorted[_this.currentColumnSearchIndex])),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"previousColumnMatch"})}),this.$previousRowMatch.on("click",function(){_this.currentRowSearchIndex--,_this.currentRowSearchIndex<0&&(_this.currentRowSearchIndex=_this.rowSearchResultViewIndicesSorted.length-1),controller.scrollTop(controller.getHeatMapElementComponent().getRowPositions().getPosition(_this.rowSearchResultViewIndicesSorted[_this.currentRowSearchIndex])),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"previousRowMatch"})}),this.$nextColumnMatch.on("click",function(){_this.next(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"nextColumnMatch"})}),this.$nextRowMatch.on("click",function(){_this.next(!1),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"nextRowMatch"})}),this.updateDimensionsLabel(),this.updateSelectionLabel()},morpheus.HeatMapToolBar.HIGHLIGHT_SEARCH_MODE=0,morpheus.HeatMapToolBar.FILTER_SEARCH_MODE=1,morpheus.HeatMapToolBar.MATCHES_TO_TOP_SEARCH_MODE=2,morpheus.HeatMapToolBar.SELECT_MATCHES_SEARCH_MODE=3,morpheus.HeatMapToolBar.prototype={quickColumnFilter:!1,searching:!1,rowSearchMode:morpheus.HeatMapToolBar.SELECT_MATCHES_SEARCH_MODE,columnSearchMode:morpheus.HeatMapToolBar.SELECT_MATCHES_SEARCH_MODE,_updateSearchIndices:function(isColumns){var project=this.controller.getProject();if(isColumns){for(var viewIndices=[],modelIndices=this.columnSearchResultModelIndices,i=0,length=modelIndices.length;length>i;i++){var index=project.convertModelColumnIndexToView(modelIndices[i]);-1!==index&&viewIndices.push(index)}viewIndices.sort(function(a,b){return b>a?-1:1}),this.columnSearchResultViewIndicesSorted=viewIndices,this.currentColumnSearchIndex=-1}else{for(var viewIndices=[],modelIndices=this.rowSearchResultModelIndices,i=0,length=modelIndices.length;length>i;i++){var index=project.convertModelRowIndexToView(modelIndices[i]);-1!==index&&viewIndices.push(index)}viewIndices.sort(function(a,b){return b>a?-1:1}),this.rowSearchResultViewIndicesSorted=viewIndices,this.currentRowSearchIndex=-1}},next:function(isColumns){var controller=this.controller;isColumns?(this.currentColumnSearchIndex++,this.currentColumnSearchIndex>=this.columnSearchResultViewIndicesSorted.length&&(this.currentColumnSearchIndex=0),controller.scrollLeft(controller.getHeatMapElementComponent().getColumnPositions().getPosition(this.columnSearchResultViewIndicesSorted[this.currentColumnSearchIndex]))):(this.currentRowSearchIndex++,this.currentRowSearchIndex>=this.rowSearchResultViewIndicesSorted.length&&(this.currentRowSearchIndex=0),controller.scrollTop(controller.getHeatMapElementComponent().getRowPositions().getPosition(this.rowSearchResultViewIndicesSorted[this.currentRowSearchIndex])))},setSearchText:function(options){var $tf=options.isColumns?this.$columnTextField:this.$rowTextField,existing=options.append?$.trim($tf.val()):"";""!==existing&&(existing+=" "),options.onTop&&(options.isColumns?this.$columnMatchesToTop.addClass("btn-primary"):this.$rowMatchesToTop.addClass("btn-primary")),$tf.val(existing+options.text),this.search(!options.isColumns),options.scrollTo&&this.next(options.isColumns)},updateDimensionsLabel:function(){var p=this.controller.getProject(),d=p.getFullDataset(),f=p.getSortedFilteredDataset(),text="showing "+morpheus.Util.intFormat(f.getRowCount())+" of "+morpheus.Util.intFormat(d.getRowCount())+" rows, "+morpheus.Util.intFormat(f.getColumnCount())+" of "+morpheus.Util.intFormat(d.getColumnCount())+" columns";this.$dimensionsLabel.html(text)},updateSelectionLabel:function(){var nc=this.controller.getProject().getColumnSelectionModel().count(),nr=this.controller.getProject().getRowSelectionModel().count(),text=[];text.push(morpheus.Util.intFormat(nr)+" row"),1!==nr&&text.push("s"),text.push(" selected, "),text.push(morpheus.Util.intFormat(nc)+" column"),1!==nc&&text.push("s"),text.push(" selected"),this.$selectionLabel.html(text.join(""))},searchDendrogram:function(isColumns){var text=$.trim(isColumns?this.$searchColumnDendrogram.val():this.$searchRowDendrogram.val()),dendrogram=isColumns?this.controller.columnDendrogram:this.controller.rowDendrogram,$searchResults=isColumns?this.$searchResultsColumnDendrogram:this.$searchResultsRowDendrogram,matches=morpheus.AbstractDendrogram.search(dendrogram.tree.rootNode,text);if(-1===matches?$searchResults.html(""):$searchResults.html(matches+" match"+(1===matches?"":"es")),0>=matches){var positions=isColumns?this.controller.getHeatMapElementComponent().getColumnPositions():this.controller.getHeatMapElementComponent().getRowPositions();positions.setSquishedIndices(null),isColumns?this.controller.getProject().setGroupColumns([],!0):this.controller.getProject().setGroupRows([],!0),positions.setSize(isColumns?this.controller.getFitColumnSize():this.controller.getFitRowSize())}else morpheus.AbstractDendrogram.squishNonSearchedNodes(this.controller,isColumns);this.controller.updateDataset(),this.controller.revalidate()},search:function(isRows){this.searching=!0;for(var isMatchesOnTop=isRows?this.$rowMatchesToTop.hasClass("btn-primary"):this.$columnMatchesToTop.hasClass("btn-primary"),controller=this.controller,project=controller.getProject(),sortKeys=isRows?project.getRowSortKeys():project.getColumnSortKeys(),keyIndex=-1,i=0;ii;i++){var viewIndex=searchResultViewIndices[i];searchResultsModelIndices.push(isRows?project.convertViewRowIndexToModel(viewIndex):project.convertViewColumnIndexToModel(viewIndex))}if(null!==searchResultViewIndices&&isMatchesOnTop){var key=new morpheus.MatchesOnTopSortKey(project,searchResultsModelIndices,"matches on top");sortKeys=sortKeys.filter(function(key){return!(key instanceof morpheus.MatchesOnTopSortKey)}),searchResultViewIndices=key.indices,sortKeys.splice(0,0,key),isRows?project.setRowSortKeys(sortKeys,!1):project.setColumnSortKeys(sortKeys,!1)}var searchResultsViewIndicesSet=new morpheus.Set;if(null!=searchResultViewIndices)for(var i=0,length=searchResultViewIndices.length;length>i;i++){var viewIndex=searchResultViewIndices[i];searchResultsViewIndicesSet.add(viewIndex)}null==searchResultViewIndices&&(searchResultViewIndices=[]),isRows?(this.rowSearchResultModelIndices=searchResultsModelIndices,this.rowSearchResultViewIndicesSorted=searchResultViewIndices.sort(function(a,b){return b>a?-1:1}),this.currentRowSearchIndex=-1):(this.columnSearchResultModelIndices=searchResultsModelIndices,this.columnSearchResultViewIndicesSorted=searchResultViewIndices.sort(function(a,b){return b>a?-1:1}),this.currentColumnSearchIndex=-1),(isRows?project.getRowSelectionModel():project.getColumnSelectionModel()).setViewIndices(searchResultsViewIndicesSet,!0),isMatchesOnTop&&(isRows?project.setRowSortKeys(morpheus.SortKey.keepExistingSortKeys(sortKeys,project.getRowSortKeys()),!0):project.setColumnSortKeys(morpheus.SortKey.keepExistingSortKeys(sortKeys,project.getColumnSortKeys()),!0)),this.updateDimensionsLabel(),this.updateSelectionLabel(),this.searching=!1}},morpheus.HeatMapTooltipProvider=function(heatMap,rowIndex,columnIndex,options,separator,quick){var dataset=heatMap.project.getSortedFilteredDataset(),tipText=[];if(quick||options.value&&_.each(options.value,function(pair){if(tipText.length>0&&tipText.push(separator),tipText.push(pair.name),tipText.push(": "),_.isArray(pair.value))for(var i=0;i0&&tipText.push(", "),tipText.push(pair.value[i]);else tipText.push(pair.value);tipText.push("")}),-1!==rowIndex&&-1!==columnIndex){for(var i=0,nseries=dataset.getSeriesCount();nseries>i;i++)morpheus.HeatMapTooltipProvider._matrixValueToString(dataset,rowIndex,columnIndex,i,tipText,separator,options.showSeriesNameInTooltip);if(quick){var quickRowTracks=heatMap.rowTracks.filter(function(t){return t.settings.inlineTooltip});morpheus.HeatMapTooltipProvider._tracksToString(options,quickRowTracks,dataset.getRowMetadata(),rowIndex,tipText,separator),morpheus.HeatMapTooltipProvider._tracksToString(options,heatMap.columnTracks.filter(function(t){return t.settings.inlineTooltip}),dataset.getColumnMetadata(),columnIndex,tipText,separator)}}if(quick){if(null!=options.name){var metadata=-1!==rowIndex?dataset.getRowMetadata():dataset.getColumnMetadata(),vector=metadata.getByName(options.name),track=heatMap.getTrack(options.name,-1!==columnIndex),colorByName=null!=track?track.settings.colorByField:null,additionalVector=null!=colorByName?metadata.getByName(colorByName):null;morpheus.HeatMapTooltipProvider.vectorToString(vector,-1!==rowIndex?rowIndex:columnIndex,tipText,separator,additionalVector)}}else-1!==rowIndex&&morpheus.HeatMapTooltipProvider._metadataToString(options,heatMap.rowTracks,dataset.getRowMetadata(),rowIndex,tipText,separator),-1!==columnIndex&&morpheus.HeatMapTooltipProvider._metadataToString(options,heatMap.columnTracks,dataset.getColumnMetadata(),columnIndex,tipText,separator);var rowNodes=[],columnNodes=[],selectedRowNodes=[],selectedColumnNodes=[];if(options.rowNodes&&(rowNodes=options.rowNodes),options.columnNodes&&(columnNodes=options.columnNodes),!quick){if(heatMap.rowDendrogram&&(selectedRowNodes=_.values(heatMap.rowDendrogram.selectedRootNodeIdToNode)),heatMap.columnDendrogram&&(selectedColumnNodes=_.values(heatMap.columnDendrogram.selectedRootNodeIdToNode)),selectedRowNodes.length>0&&rowNodes.length>0){var nodeIds={};_.each(selectedRowNodes,function(n){nodeIds[n.id]=!0}),rowNodes=_.filter(rowNodes,function(n){return void 0===nodeIds[n.id]})}if(selectedColumnNodes.length>0&&columnNodes.length>0){var nodeIds={};_.each(selectedColumnNodes,function(n){nodeIds[n.id]=!0}),columnNodes=_.filter(columnNodes,function(n){return void 0===nodeIds[n.id]})}}return morpheus.HeatMapTooltipProvider._nodesToString(tipText,rowNodes,null,separator),morpheus.HeatMapTooltipProvider._nodesToString(tipText,columnNodes,null,separator),quick||(selectedRowNodes.length>0&&morpheus.HeatMapTooltipProvider._nodesToString(tipText,selectedRowNodes,heatMap.rowDendrogram._selectedNodeColor,separator),selectedColumnNodes.length>0&&morpheus.HeatMapTooltipProvider._nodesToString(tipText,selectedColumnNodes,heatMap.columnDendrogram._selectedNodeColor,separator)),tipText.join("")},morpheus.HeatMapTooltipProvider._matrixValueToString=function(dataset,rowIndex,columnIndex,seriesIndex,tipText,separator,showSeriesNameInTooltip){var val=dataset.getValue(rowIndex,columnIndex,seriesIndex);if(null!=val)if(val.toObject||!_.isNumber(val)){var obj=val.toObject?val.toObject():val,keys=_.keys(obj);_.each(keys,function(key){if("__v"!==key){var v=morpheus.Util.formatObject(obj[key]);tipText.length>0&&tipText.push(separator),tipText.push(key),tipText.push(": "),tipText.push(v),tipText.push("")}})}else tipText.length>0&&tipText.push(separator),showSeriesNameInTooltip&&(tipText.push(dataset.getName(seriesIndex)),tipText.push(": ")),tipText.push(""),tipText.push(morpheus.Util.nf(val)),tipText.push("")},morpheus.HeatMapTooltipProvider.vectorToString=function(vector,index,tipText,separator,additionalVector){var arrayValueToString=function(arrayFieldName,arrayVal){if(null!=arrayVal)if(null!=arrayFieldName&&(tipText.length>0&&tipText.push(separator),tipText.push(arrayFieldName)),arrayVal.toObject){tipText.push(" ");var obj=arrayVal.toObject(),keys=_.keys(obj);_.each(keys,function(key){var subVal=obj[key];null!=subVal&&""!=subVal&&(tipText.length>0&&tipText.push(separator),tipText.push(key),tipText.push(": "),tipText.push(morpheus.Util.formatObject(subVal)),tipText.push(""))})}else tipText.push(": "),tipText.push(morpheus.Util.formatObject(arrayVal)),tipText.push("")};if(null!=vector){var primaryVal=vector.getValue(index);if(null!=primaryVal&&""!=primaryVal){var primaryFields=vector.getProperties().get(morpheus.VectorKeys.FIELDS);if(null!=primaryFields){var visibleFieldIndices=vector.getProperties().get(morpheus.VectorKeys.VISIBLE_FIELDS);void 0===visibleFieldIndices&&(visibleFieldIndices=morpheus.Util.seq(primaryFields.length));var additionalFieldNames=null!=additionalVector?additionalVector.getProperties().get(morpheus.VectorKeys.FIELDS):null,additionalVal=null!=additionalFieldNames?additionalVector.getValue(index):null;tipText.length>0&&tipText.push(separator),tipText.push(vector.getName());for(var j=0;j0&&tipText.push(separator),tipText.push(additionalVector.getName());for(var j=0;j0&&tipText.push(separator),tipText.push(vector.getName()),tipText.push(": "),tipText.push(morpheus.Util.formatObject(primaryVal)),tipText.push("")}}},morpheus.HeatMapTooltipProvider._tracksToString=function(options,tracks,metadata,index,tipText,separator){for(var i=0;ii;i++){var track=tracks[i];track.isVisible()&&track.isShowTooltip()&&(tracks[i].name===options.name?filtered.splice(0,0,track):filtered.push(track))}morpheus.HeatMapTooltipProvider._tracksToString(options,filtered,metadata,index,tipText,separator)},morpheus.HeatMapTooltipProvider._nodesToString=function(tipText,nodes,color,separator){var renderField=function(name,value){if(null!=value){if(tipText.length>0&&tipText.push(separator),color&&tipText.push(''),tipText.push(name),tipText.push(": "),_.isArray(value))for(var i=0;i0&&tipText.push(", "),tipText.push(morpheus.Util.formatObject(value[i]));else tipText.push(morpheus.Util.formatObject(value));tipText.push(""),color&&tipText.push("")}};_.each(nodes,function(node){if(node.info)for(var name in node.info){var value=node.info[name];renderField(name,value)}renderField("depth",node.depth);var nLeafNodes=1+Math.abs(node.maxIndex-node.minIndex);nLeafNodes>0&&renderField("# of leaf nodes",nLeafNodes)})},morpheus.HeatMapTrackColorLegend=function(tracks,colorModel){morpheus.AbstractCanvas.call(this,!1),this.tracks=tracks,this.colorModel=colorModel,this.canvas.style.position=""},morpheus.HeatMapTrackColorLegend.prototype={getPreferredSize:function(){var tracks=this.tracks,colorModel=this.colorModel,xpix=0,ypix=0,maxYPix=0,canvas=this.canvas,context=canvas.getContext("2d");context.font="12px "+morpheus.CanvasUtil.FONT_NAME;for(var i=0;i0?maxYPix+30:0}},draw:function(clip,context){for(var tracks=this.tracks,colorModel=this.colorModel,xpix=0,i=0;i0?maxYPix+30:0}},draw:function(clip,context){var tracks=this.tracks,shapeModel=this.shapeModel,xpix=0,ypix=0;context.textAlign="left",context.textBaseline="top",context.font="12px "+morpheus.CanvasUtil.FONT_NAME,context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,context.strokeStyle="black";for(var i=0;i'),html.push(''),html.push('"),html.push("
    "),this.$el=$(html.join("")),this.$el.find("button").on("click",function(e){e.stopImmediatePropagation()}),this.$el.find("[name=contact]").on("click",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),window.open("mailto:morpheus@broadinstitute.org"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"contact"})}),this.$el.find("[name=tutorial]").on("click",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),window.open(morpheus.Util.URL+"tutorial.html"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"tutorial"})}),this.$el.find("[name=linking]").on("click",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),window.open(morpheus.Util.URL+"linking.html"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"linking"})}),this.$el.find("[name=source]").on("click",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),window.open("https://github.com/joshua-gould/morpheus.js"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"source"})})},morpheus.LegendWithStops=function(){morpheus.AbstractCanvas.call(this,!1),this.setBounds({width:300,height:40});var that=this;this.hammer=morpheus.Util.hammer(this.canvas,["pan","tap","press"]).on("panmove",function(event){if(-1!==that.panStartSelectedIndex){var position=morpheus.CanvasUtil.getMousePos(event.target,event),fraction=that.fractionToStopPix.invert(position.x);fraction=Math.max(0,fraction),fraction=Math.min(1,fraction),that.trigger("moved",{fraction:fraction})}}).on("panstart",function(event){that.panStartSelectedIndex=that.findIndexForPosition(morpheus.CanvasUtil.getMousePos(event.target,event,!0))}).on("panend",function(event){that.panStartSelectedIndex=-1}).on("tap",function(event){var position=morpheus.CanvasUtil.getMousePos(event.target,event);if(event.tapCount>1){var fraction=that.fractionToStopPix.invert(position.x);that.trigger("added",{fraction:fraction})}else that.selectedIndex=that.findIndexForPosition(position),that.trigger("selectedIndex",{selectedIndex:that.selectedIndex})}),$(this.canvas).on("keydown",function(e){8!=e.which&&46!=e.which||-1===that.selectedIndex||(that.trigger("delete"),e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation())})},morpheus.LegendWithStops.prototype={selectedIndex:-1,border:7,stopHalfSize:5,panStartSelectedIndex:-1,destroy:function(){$(this.canvas).off("keyup"),this.hammer.destroy()},setSelectedIndex:function(index){this.panStartSelectedIndex=-1},findIndexForPosition:function(position){if(position.y>=22)for(var i=0,length=this.fractions.length;length>i;i++){var pix=this.fractionToStopPix(this.fractions[i]),start=pix-this.stopHalfSize,end=pix+this.stopHalfSize;if(position.x>=start&&position.x<=end)return i}return-1},draw:function(fractions,colors,stepped,fractionToStopPix){this.fractions=fractions,this.colors=colors,this.stepped=stepped,this.fractionToStopPix=fractionToStopPix;var context=this.canvas.getContext("2d");morpheus.CanvasUtil.resetTransform(context),context.clearRect(0,0,this.getUnscaledWidth(),this.getUnscaledHeight()),context.translate(this.border,0),morpheus.HeatMapColorSchemeLegend.draw(context,fractions,colors,this.getUnscaledWidth()-2*this.border,this.getUnscaledHeight()-20,stepped),context.translate(-this.border,0),context.lineWidth=1,context.strokeStyle="Grey",context.strokeRect(this.border,0,this.getUnscaledWidth()-2*this.border,this.getUnscaledHeight()-20);for(var i=0;i0&&fractions[i]===fractions[i-1])){context.fillStyle=colors[i];var pix=fractionToStopPix(fractions[i]);context.fillRect(pix-this.stopHalfSize,22,2*this.stopHalfSize,2*this.stopHalfSize),this.selectedIndex===i?(context.lineWidth=2,context.strokeStyle="black"):(context.lineWidth=1,context.strokeStyle="Grey"),context.strokeRect(pix-this.stopHalfSize,22,2*this.stopHalfSize,2*this.stopHalfSize)}}},morpheus.Util.extend(morpheus.LegendWithStops,morpheus.AbstractCanvas),morpheus.Util.extend(morpheus.LegendWithStops,morpheus.Events),morpheus.Popup={},morpheus.Popup.initted=!1,morpheus.Popup.init=function(){if(!morpheus.Popup.initted){var client=new Clipboard("a[name=Copy]",{text:function(trigger){var event={clipboardData:{setData:function(dataType,data){this.data=data}}};return morpheus.Popup.popupCallback(event,"Copy"),morpheus.Popup.hide(),event.clipboardData.data}});morpheus.Popup.client=client,morpheus.Popup.initted=!0,morpheus.Popup.$popupDiv=$(document.createElement("div")),morpheus.Popup.$popupDiv.css("position","absolute").css("zIndex",999).addClass("dropdown clearfix"),morpheus.Popup.$contextMenu=$(document.createElement("ul")),morpheus.Popup.$contextMenu.addClass("dropdown-menu").css("display","block").css("position","static").css("margin-bottom","5px"),morpheus.Popup.$contextMenu.appendTo(morpheus.Popup.$popupDiv),morpheus.Popup.$contextMenu.on("click","a",function(e){var $this=$(this),name=$.trim($this.text());"Copy"!==name&&(morpheus.Popup.popupCallback(e,name),morpheus.Popup.hide())})}},morpheus.Popup.popupInDom=!1,morpheus.Popup.hidePopupMenu=function(e){morpheus.Popup.component==e.target&&(e.preventDefault(),e.stopPropagation()),morpheus.Popup.hide()},morpheus.Popup.hide=function(){morpheus.Popup.$popupDiv.hide(),$(document.body).off("mousedown",morpheus.Popup.hidePopupMenu),morpheus.Popup.popupCallback=null,morpheus.Popup.component=null},morpheus.Popup.showPopup=function(menuItems,position,component,callback){if(morpheus.Popup.init(),morpheus.Popup.component==component)return void morpheus.Popup.hide();morpheus.Popup.popupCallback=callback,morpheus.Popup.component=component;for(var html=[],i=0,length=menuItems.length;length>i;i++){var item=menuItems[i];item.header?html.push('
  • "):item.separator?html.push('
  • '):(html.push('
  • '),item.checked&&html.push(''),html.push(item.name),item.icon&&html.push(''),html.push(""),html.push("
  • "))}morpheus.Popup.$contextMenu.html(html.join("")),morpheus.Popup.popupInDom||(morpheus.Popup.popupInDom=!0,morpheus.Popup.$popupDiv.appendTo($(document.body))),morpheus.Popup.$popupDiv.css({display:"block",left:position.x,top:position.y}),morpheus.Popup.$popupDiv.show();var $body=$(document.body);$body.off("mousedown",morpheus.Popup.hidePopupMenu),window.setTimeout(function(){$body.on("mousedown",function(e){var $target=$(e.target);"popup-item"!==$target.data("type")&&morpheus.Popup.hidePopupMenu(e)})},1)},morpheus.RowDendrogram=function(controller,tree,positions,project){morpheus.AbstractDendrogram.call(this,controller,tree,positions,project,morpheus.AbstractDendrogram.Type.ROW)},morpheus.RowDendrogram.prototype={drawNode:function(context,node){var radius=this.getNodeRadius(node),pix=this.toPix(node);context.beginPath(),context.arc(pix[0],pix[1],radius,2*Math.PI,!1),context.fill()},isDragHotSpot:function(p){return Math.abs(this.scale(this.cutHeight)-p.x)<=2},preDraw:function(context,clip){context.setLineDash&&context.setLineDash([5]),context.strokeStyle="black";var nx=this.scale(this.cutHeight);context.beginPath(),context.moveTo(nx,clip.y),context.lineTo(nx,this.getUnscaledHeight()),context.stroke(),context.setLineDash&&context.setLineDash([])},getPreferredSize:function(){return{width:100,height:Math.ceil(this.positions.getPosition(this.positions.getLength()-1)+this.positions.getItemSize(this.positions.getLength()-1))}},paintMouseOver:function(clip,context){-1!==this.project.getHoverRowIndex()&&(morpheus.CanvasUtil.resetTransform(context), -context.translate(0,-clip.y),this.drawRowBorder(context,this.positions,this.project.getHoverRowIndex(),this.getUnscaledWidth()))},drawRowBorder:function(context,positions,index,gridSize){var size=positions.getItemSize(index),pix=positions.getPosition(index);context.beginPath(),context.moveTo(0,pix+size),context.lineTo(gridSize,pix+size),context.stroke(),context.beginPath(),context.moveTo(0,pix),context.lineTo(gridSize,pix),context.stroke()},createScale:function(){return d3.scale.linear().domain([0,this.tree.maxHeight]).range([this.getUnscaledWidth(),0])},getMaxIndex:function(clip){return morpheus.Positions.getBottom(clip,this.positions)},getMinIndex:function(clip){return morpheus.Positions.getTop(clip,this.positions)},toPix:function(node){var min=this.positions.getPosition(node.minIndex)+this.positions.getItemSize(node.minIndex)/2,max=this.positions.getPosition(node.maxIndex)+this.positions.getItemSize(node.maxIndex)/2;return[this.scale(node.height),(min+max)/2]},drawPathFromNodeToParent:function(context,node){var pix=this.toPix(node),parentPix=this.toPix(node.parent);context.beginPath(),context.moveTo(pix[0],pix[1]),context.lineTo(parentPix[0],pix[1]),context.lineTo(parentPix[0],parentPix[1]),context.stroke()},drawNodePath:function(context,node,minIndex,maxIndex){var x,y,children=node.children,left=children[0],right=children[1],ry=this.toPix(right)[1],rx=this.scale(right.height),ly=this.toPix(left)[1],lx=this.scale(left.height),nx=this.scale(node.height);if(this.drawLeafNodes)x=[rx,nx,nx,lx],y=[ry,ry,ly,ly];else{var leftIsLeaf=void 0!==left.children,rightIsLeaf=void 0!==right.children;leftIsLeaf&&(lx=nx+4),rightIsLeaf&&(rx=nx+4),x=[rx,nx,nx,lx],y=[ry,ry,ly,ly]}context.beginPath(),context.moveTo(x[0],y[0]);for(var i=1,length=x.length;length>i;i++)context.lineTo(x[i],y[i]);context.stroke()}},morpheus.Util.extend(morpheus.RowDendrogram,morpheus.AbstractDendrogram),morpheus.ScentedSearch=function(model,positions,isVertical,scrollbar,controller){morpheus.AbstractCanvas.call(this,!1),this.model=model,this.positions=positions,this.isVertical=isVertical,this.scrollbar=scrollbar,this.controller=controller,this.searchIndices=[],scrollbar.decorator=this;var _this=this,mouseMove=function(e){var index=_this.getIndex(e);_this.mouseMovedIndex=index,document.body.style.cursor=0>index?"default":"pointer",scrollbar.canvas.style.cursor=0>index?"default":"pointer";var tipOptions={event:e};isVertical?controller.setToolTip(index>=0?_this.searchIndices[index]:-1,-1,tipOptions):controller.setToolTip(-1,index>=0?_this.searchIndices[index]:-1,tipOptions)},mouseExit=function(e){document.body.style.cursor="default",scrollbar.canvas.style.cursor="default"};$(scrollbar.canvas).on("mousemove",mouseMove).on("mouseexit",mouseExit)},morpheus.ScentedSearch.prototype={mouseMovedIndex:-1,getIndex:function(event){var pix=morpheus.CanvasUtil.getMousePos(event.target,event),val=pix[this.isVertical?"y":"x"];return this.getIndexForPix(val)},getIndexForPix:function(pix){var indices=this.searchIndices;if(null==indices)return-1;var tolerance=1.2;if(this.mouseMovedIndex>0){var midVal=this.positions.getPosition(indices[this.mouseMovedIndex])*scale;if(Math.abs(midVal-pix)<=tolerance)return this.mouseMovedIndex}for(var low=0,scale=this.scale,high=indices.length-1;high>=low;){var mid=low+high>>1,midVal=this.positions.getPosition(indices[mid])*scale,cmp=0;if(Math.abs(midVal-pix)<=tolerance?cmp=0:pix>midVal?cmp=-1:midVal>pix&&(cmp=1),0>cmp)low=mid+1;else{if(!(cmp>0))return mid;high=mid-1}}return-1},tap:function(position){var val=position[this.isVertical?"y":"x"],index=this.getIndexForPix(val);return this.scrollbar.canvas.style.cursor=0>index?"default":"pointer",index>=0?(this.isVertical?this.controller.scrollTop(this.positions.getPosition(this.searchIndices[index])):this.controller.scrollLeft(this.positions.getPosition(this.searchIndices[index])),!0):!1},update:function(){this.searchIndices=this.model.getViewIndices().values().sort(function(a,b){return b>a?-1:1})},draw:function(clip,context){var width=this.scrollbar.getUnscaledWidth(),height=this.scrollbar.getUnscaledHeight();this.scale=(this.isVertical?height:width)/(this.positions.getPosition(this.positions.getLength()-1)+this.positions.getItemSize(this.positions.getLength()-1));var innerColor="#FFDD00",outerColor="#CCAA00";context.strokeStyle=outerColor,context.fillStyle=innerColor,context.lineWidth=1,this.drawIndices(context,this.searchIndices),this.drawHoverIndices(context)},drawHoverIndices:function(context){var heatmap=this.controller;if(context.fillStyle="black",heatmap.mousePositionOptions&&null!=heatmap.mousePositionOptions.name){var isColumns=!this.isVertical,track=heatmap.getTrack(heatmap.mousePositionOptions.name,isColumns);if(null==track)return;if(track.settings.highlightMatchingValues){var hoverIndex=isColumns?heatmap.getProject().getHoverColumnIndex():heatmap.getProject().getHoverRowIndex();if(-1===hoverIndex)return;var vector=track.getVector(),value=vector.getValue(hoverIndex),valueToModelIndices=track.getFullVector().getProperties().get(morpheus.VectorKeys.VALUE_TO_INDICES);if(!valueToModelIndices){var fullVector=track.getFullVector();valueToModelIndices=morpheus.VectorUtil.createValueToIndicesMap(fullVector),fullVector.getProperties().set(morpheus.VectorKeys.VALUE_TO_INDICES,valueToModelIndices)}var modelIndices=valueToModelIndices.get(value);if(null==modelIndices)return void console.log("valueToModelIndices error");for(var scale=this.scale,lineLength=this.isVertical?this.scrollbar.getUnscaledWidth():this.scrollbar.getUnscaledHeight(),isVertical=this.isVertical,positions=this.positions,project=heatmap.getProject(),i=0,length=modelIndices.length;length>i;i++){var modelIndex=modelIndices[i],index=isVertical?project.convertModelRowIndexToView(modelIndex):project.convertModelColumnIndexToView(modelIndex);if(-1!==index){var pix=positions.getPosition(index)*scale;isVertical?context.fillRect(0,pix,lineLength,2):context.fillRect(pix,0,2,lineLength)}}}}},drawIndices:function(context,highlightedIndices){for(var scale=this.scale,lineLength=this.isVertical?this.scrollbar.getUnscaledWidth():this.scrollbar.getUnscaledHeight(),isVertical=this.isVertical,positions=this.positions,i=0,length=highlightedIndices.length;length>i;i++){var index=highlightedIndices[i],pix=positions.getPosition(index)*scale;isVertical?(context.fillRect(0,pix,lineLength,2),context.strokeRect(0,pix,lineLength,2)):(context.fillRect(pix,0,2,lineLength),context.strokeRect(pix,0,2,lineLength))}}},morpheus.Util.extend(morpheus.ScentedSearch,morpheus.AbstractCanvas),morpheus.ScrollBar=function(isVertical){morpheus.AbstractCanvas.call(this),this.isVertical=isVertical,$(this.canvas).css("border","1px solid #d8d8d8"),isVertical?this.setBounds({width:12}):this.setBounds({height:12}),this.field=this.isVertical?"y":"x";var that=this,mouseMove=function(event){if(!morpheus.CanvasUtil.dragging){var position=morpheus.CanvasUtil.getMousePos(event.target,event,!0),mouseOver=position[that.field]>=that.thumbPos&&position[that.field]<=that.thumbPos+that.thumbExtent;that.thumbMouseOver!==mouseOver&&(that.thumbMouseOver=mouseOver,that.repaint())}},mouseExit=function(e){!morpheus.CanvasUtil.dragging&&that.thumbMouseOver&&(that.thumbMouseOver=!1,that.repaint())};$(this.canvas).on("mousemove",mouseMove).on("mouseout",mouseExit).on("mouseenter",mouseMove),this.hammer=morpheus.Util.hammer(this.canvas,[this.isVertical?"panv":"panh","tap"]).on("panstart",function(event){var position=morpheus.CanvasUtil.getMousePos(event.target,event,!0);position[that.field]>=that.thumbPos&&position[that.field]<=that.thumbPos+that.thumbExtent?(that.draggingThumb=!0,that.dragStartThumbPos=that.thumbPos):that.draggingThumb=!1}).on("panend",function(event){that.draggingThumb=!1}).on("panmove",function(event){if(that.draggingThumb){var thumbPosPix=(morpheus.CanvasUtil.getMousePos(event.target,event),that.dragStartThumbPos+(that.isVertical?event.deltaY:event.deltaX)),f=thumbPosPix/(that.visibleExtent-that.thumbExtent),value=f*that.maxValue;that.setValue(value,!0),event.preventDefault(),event.srcEvent.stopPropagation(),event.srcEvent.stopImmediatePropagation()}}).on("tap doubletap",function(event){if(!that.draggingThumb){var position=morpheus.CanvasUtil.getMousePos(event.target,event);if(!that.decorator.tap(position)){var thumbExtentToValue=that.thumbExtent/that.totalExtent*that.totalExtent;that.scrollToTop=position[that.field]'];map.forEach(function(val,key){html.push("'),html.push(key),html.push("")}),html.push(""),formBuilder.append({name:"selected_value",type:"custom",value:html.join("")});var shapeField=new morpheus.ShapeField;formBuilder.append({col:"col-xs-2",name:"selected_shape",type:"custom",value:'
    '}),shapeField.$el.appendTo(formBuilder.find("shape"));var $valuePicker=formBuilder.$form.find("[name=valuePicker]"),selectedVal=$valuePicker.val(),_this=this;shapeField.setShapeValue(map.get(selectedVal)),shapeField.on("change",function(e){map.set(selectedVal,e.shape),_this.trigger("change",{value:selectedVal,shape:e.shape})}),$valuePicker.selectpicker().change(function(){selectedVal=$valuePicker.val(),shapeField.setShapeValue(map.get(selectedVal))}),this.$div=formBuilder.$form},morpheus.ShapeChooser.prototype={},morpheus.Util.extend(morpheus.ShapeChooser,morpheus.Events),morpheus.ShapeField=function(shapes){shapes=shapes||morpheus.VectorShapeModel.SHAPES;var _this=this,html=[],size2=8,x=4,y=4;html.push('
    '),html.push(''),html.push('
    ");var $el=$(html.join("")),$header=$el.find("[name=selection]");$el.on("click","li > a",function(e){var shape=$(this).attr("value");setShapeValue(shape),_this.trigger("change",{shape:shape})});var setShapeValue=function(val){if($header.attr("value",val),"none"===val)$header.html("(None)");else{var context=new C2S(2*size2,2*size2);context.translate(4,4),morpheus.CanvasUtil.drawShape(context,val,x,y,size2),$header.html(context.getSerializedSvg())}};this.setShapeValue=setShapeValue,this.$el=$el},morpheus.ShapeField.prototype={},morpheus.Util.extend(morpheus.ShapeField,morpheus.Events),morpheus.SortByValuesIndicator=function(project,isVertical,positions){morpheus.AbstractCanvas.call(this,!0),this.project=project,this.isVertical=isVertical,this.positions=positions,this.lastPosition={start:-1,end:-1}},morpheus.SortByValuesIndicator.prototype={prePaint:function(clip,context){var positions=this.positions,start=0,end=positions.getLength();this.isVertical?(start=morpheus.Positions.getTop(clip,positions),end=morpheus.Positions.getBottom(clip,positions)):(start=morpheus.Positions.getLeft(clip,positions),end=morpheus.Positions.getRight(clip,positions)),(this.invalid||start!==this.lastPosition.start||end!==this.lastPosition.end)&&(this.lastPosition.start=start,this.lastPosition.end=end,this.invalid=!0)},draw:function(clip,context){var project=this.project,isVertical=this.isVertical,positions=this.positions,sortKeys=isVertical?project.getColumnSortKeys():project.getRowSortKeys();context.translate(-clip.x,-clip.y),context.fillStyle="black",context.textBaseline="top",context.textAlign="left",context.font="8px "+morpheus.CanvasUtil.FONT_NAME;var start=0,end=positions.getLength();isVertical?(start=morpheus.Positions.getTop(clip,positions),end=morpheus.Positions.getBottom(clip,positions)):(start=morpheus.Positions.getLeft(clip,positions),end=morpheus.Positions.getRight(clip,positions));for(var arrowWidth=3,arrowHeight=4,i=0;i=start&&end>view){context.save();var pix=positions.getPosition(view),size=positions.getItemSize(view);isVertical?context.translate(2,pix+size/2):context.translate(pix+size/2,0),context.beginPath(),key.getSortOrder()===morpheus.SortKey.SortOrder.ASCENDING?(context.moveTo(0,0),context.lineTo(arrowWidth,arrowHeight),context.lineTo(-arrowWidth,arrowHeight)):key.getSortOrder()===morpheus.SortKey.SortOrder.DESCENDING?(context.moveTo(0,arrowHeight),context.lineTo(arrowWidth,0),context.lineTo(-arrowWidth,0)):(context.moveTo(0,0),context.lineTo(arrowWidth,arrowHeight/2),context.lineTo(0,arrowHeight),context.lineTo(-arrowWidth,arrowHeight/2)),context.fill(),context.restore()}}}}},morpheus.Util.extend(morpheus.SortByValuesIndicator,morpheus.AbstractCanvas),morpheus.SortDialog=function(project){function toggle(isColumns){_this.isColumns=isColumns;var $element=_this.build(project,isColumns);$div.empty().html($element),$div.on("click","[name=delete]",function(e){var $this=$(this);e.preventDefault(),$this.closest("div.row").remove()}),$div.on("click","[name=add]",function(e){var $this=$(this),level=[],$sibling=$this.closest("div.row");_this.createLevel(level,new morpheus.SortKey("",morpheus.SortKey.SortOrder.ASCENDING),_this.fields),$sibling.after($(level.join(""))),e.preventDefault()})}var _this=this,$chooserDiv=$('
    '),$div=$('
    '),html=[];html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push("
    "),html.push("
    "),html.push("
    "),$chooserDiv.html(html.join("")),$chooserDiv.on("change","[name=rowsOrColumns]",function(e){var $this=$(this);toggle("columns"===$this.val())}),toggle(!1);var $outer=$("
    ");$chooserDiv.appendTo($outer),$div.appendTo($outer),morpheus.FormBuilder.showOkCancel({title:"Sort",content:$outer,okCallback:function(){var $forms=$div.find("form"),sortBy=$forms.find("[name=sortBy]").map(function(){return $(this).val()}),sortOrder=$forms.find("[name=sortOrder]:checked").map(function(){return $(this).val()}),groupBy=$div.find("[name=groupBy]").val(),newSortKeys=[],modelIndices=_this.isColumns?project.getRowSelectionModel().toModelIndices():project.getColumnSelectionModel().toModelIndices(),existingSortKeys=_this.isColumns?project.getColumnSortKeys():project.getRowSortKeys(),keysToKeep=_.filter(existingSortKeys,function(key){return key instanceof morpheus.MatchesOnTopSortKey||key instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===key.name});keysToKeep.length>0&&_.each(keysToKeep,function(key){newSortKeys.push(key)});for(var newSortKeyFields=new morpheus.Set,i=0;i'),html.push('
    '),html.push('
    '),html.push('
    ');var groupByKeys=(isColumns?project.getGroupColumns():project.getGroupRows()).map(function(key){return key.field});return html.push('"),html.push(""),html.push("
    "),$(html.join(""))},createLevel0:function(html){html.push('
    '),html.push('
    '),html.push('
    '),html.push('Add sort level'),html.push("
    "),html.push("
    "),html.push("
    ")},createLevel:function(html,key,fields){html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push('"),html.push("
    "),html.push('
    '),html.push('
    "),html.push('
    "),html.push("
    "),html.push('
    '),html.push('Delete'),html.push("
    "),html.push('
    '),html.push('Add sort level'),html.push("
    "),html.push("
    "),html.push("
    ")}},morpheus.Spacer=function(width,height){this.width=width,this.height=height},morpheus.Spacer.prototype={prefWidth:void 0,prefHeight:void 0,visible:!0,dispose:function(){},getPrefWidth:function(){return this.prefWidth},draw:function(clip){},getPreferredSize:function(){return{width:this.width,height:this.height}},setBounds:function(){},getPrefHeight:function(){return this.prefHeight},setPrefWidth:function(prefWidth){this.prefWidth=prefWidth},setPrefHeight:function(prefHeight){this.prefHeight=prefHeight},isVisible:function(){return this.visible},setVisible:function(visible){this.visible=visible},getWidth:function(){return this.width},getHeight:function(){return this.height}},morpheus.SteppedColorSupplier=function(){morpheus.AbstractColorSupplier.call(this),this.hiddenValue=0,this.hiddenValues=new morpheus.Set,this.stepped=!0},morpheus.SteppedColorSupplier.linearScale=function(value,input0,input1,pix0,pix1){return(value-input0)/(input1-input0)*(pix1-pix0)+pix0},morpheus.SteppedColorSupplier.prototype={createInstance:function(){return new morpheus.SteppedColorSupplier},isStepped:function(){return!0},getHiddenValues:function(){return this.hiddenValues},getIndexForFraction:function(f){var fractions=this.fractions;if(f<=fractions[0])return 0;if(f>=fractions[fractions.length-1])return fractions.length-1;for(var i=0;i=left&&right>f)return i}return fractions.length-1},getColor:function(row,column,value){if(this.hiddenValues.has(value)&&(value=this.hiddenValue),isNaN(value))return this.missingColor;var min=this.min,max=this.max,colors=this.colors;if(min>=value)return colors[0];if(value>=max)return colors[colors.length-1];var fraction=morpheus.SteppedColorSupplier.linearScale(value,min,max,0,100)/100;return colors[this.getIndexForFraction(fraction)]}},morpheus.Util.extend(morpheus.SteppedColorSupplier,morpheus.AbstractColorSupplier),morpheus.TabManager=function(options){function rename($a){var builder=new morpheus.FormBuilder;builder.append({name:"name",type:"text",value:$.trim($a.contents().first().text())}),morpheus.FormBuilder.showOkCancel({title:"Rename Tab",content:builder.$form,okCallback:function(){var name=$.trim(builder.getValue("name"));""!==name&&(_this.activeTabObject.setName(name),$a.contents().first().replaceWith(name+" "))}})}this.options=$.extend({},{autohideTabBar:!1},options);var _this=this;this.activeTabObject=null,this.activeTabId=null,this.idToTabObject=new morpheus.Map,this.$nav=$(''),this.$nav.on("click","li > a",function(e){var tabId=$(this).attr("href");e.preventDefault(),_this.activeTabId!==tabId&&$(this).tab("show")}),this.$nav.on("dblclick","li > a",function(e){e.preventDefault(),$(this).data("morpheus-rename")&&rename($(this))}),this.$nav.on("contextmenu.morpheus","li > a",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation();var $a=$(this);return $a.data("morpheus-rename")&&morpheus.Popup.showPopup([{name:"Rename"}],{x:e.pageX,y:e.pageY},e.target,function(event,item){rename($a)}),!1}),this.$nav.on("click","button",function(e){e.preventDefault();var target=$(this).attr("data-target");_this.remove(target)}),this.$tabContent=$('
    '),this.$nav.on("shown.bs.tab",'a[data-toggle="tab"]',function(e){if(!_this.adding){var previous=_this.activeTabObject;_this.activeTabId=$(e.target).attr("href"),_this.activeTabObject=_this.idToTabObject.get(_this.activeTabId),_this.trigger("change",{tab:_this.activeTabObject,previous:previous})}})},morpheus.TabManager.prototype={setTabText:function(id,text){this.$nav.find("a").filter("[href="+id+"]").contents().first().replaceWith(text+" "),this.idToTabObject.get(id).setName(name)},addTask:function(task){var $a=this.$nav.find("a[href="+task.tabId+"]");if(0===$a.length)throw new Error(task.tabId+" not found.");var $i=$a.find("i"),tasks=$i.data("tasks");tasks||(tasks=[]),task.id=_.uniqueId("task"),tasks.push(task),$i.data("tasks",tasks),$a.removeClass("animated flash").addClass("animated flash").one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){$(this).removeClass("animated flash")}),$i.addClass("fa fa-spinner fa-spin")},removeTask:function(task){var $a=this.$nav.find("a[href="+task.tabId+"]"),$i=$a.find("i"),tasks=$i.data("tasks");tasks||(tasks=[]);for(var index=-1,i=0;i'),li.push(''),li.push(options.title),li.push(' '),options.closeable&&li.push(' '),li.push("");var $link=$(li.join(""));$link.appendTo(this.$nav);var $panel=$('
    ');return options.$el.appendTo($panel),$panel.appendTo(this.$tabContent),options.enabled===!1&&($link.addClass("disabled"),$link.find("a").addClass("btn disabled")),options.focus&&(this.$nav.find('a[data-toggle="tab"]:last').tab("show"),this.activeTabId="#"+id,this.activeTabObject=options.object,$panel.focus()),this.adding=!1,this.options.autohideTabBar&&this.$nav.css("display",this.idToTabObject.size()>1?"":"none"),{$panel:$panel,id:"#"+id}},remove:function(target){void 0===target&&(target=this.activeTabId),this.idToTabObject.remove(target),this.$nav.find("[href="+target+"]").parent().remove(),this.$tabContent.find(target).remove();var $a=this.$nav.find('a[data-toggle="tab"]:last');0===$a.length&&this.options.landingPage&&this.options.landingPage.show(),$a.tab("show"),this.options.autohideTabBar&&this.$nav.css("display",this.idToTabObject.size()>1?"":"none")},setActiveTab:function(id){id===this.activeTabId&&this.trigger("change",{tab:this.activeTabObject,previous:null});var $a=this.$nav.find("[href="+id+"]");$a.parent().removeClass("disabled"),$a.removeClass("btn disabled"),$a.tab("show")},setTabTitle:function(id,title){this.$nav.find("a").filter("[href="+id+"]").attr("title",title)},setTabEnabled:function(id,enabled){var $a=this.$nav.find("a").filter("[href="+id+"]");enabled?($a.parent().removeClass("disabled"),$a.removeClass("btn disabled")):($a.parent().addClass("disabled"),$a.addClass("btn disabled"))}},morpheus.Util.extend(morpheus.TabManager,morpheus.Events),morpheus.Table=function(options){options=morpheus.Table.createOptions(options),this.options=options,options.width||(options.width=options.$el.attr("class"));var _this=this,height=options.height,$gridDiv=$('
    ');this.$gridDiv=$gridDiv,$gridDiv.appendTo(options.$el);var columns=options.columns;this.columns=columns;var grid=new morpheus.Grid({gridOptions:{forceFitColumns:!0,select:options.select,rowHeight:options.rowHeight,autoEdit:!1,editable:!1,autoHeight:"auto"===options.height,enableTextSelectionOnCells:!0},$el:$gridDiv,items:options.items,columns:columns});if(this.grid=grid,options.search){var tableSearch=new morpheus.TableSearchUI;tableSearch.$el.prependTo(options.$el),tableSearch.setTable(this),this.tableSearch=tableSearch}var collapsed=!1,resize=function(){if(_this.options.responsive){var gridWidth;gridWidth=options.$el.width(),$gridDiv.css("width",gridWidth+"px"),!collapsed&&gridWidth1?(collapsed=!0,$gridDiv.addClass("slick-stacked"),_this.grid.grid.getOptions().rowHeight=options.rowHeight*columns.length,_this.grid.grid.setColumns([{id:0,tooltip:function(item,value){for(var html=[],i=0;i")},collapsed:!0,getter:function(item){return item},formatter:function(row,cell,value,columnDef,dataContext){var html=[];html.push('
    '),options.rowHeader&&html.push(options.rowHeader(dataContext));for(var i=0;i'):html.push("
    ");var c=columns[i],s=c.renderer(dataContext,c.getter(dataContext));html.push(s),html.push("
    ")}return html.push("
    "),html.join("")},sortable:!1,name:""}]),$gridDiv.find(".slick-header").hide(),_this.grid.grid.resizeCanvas(),_this.grid.grid.invalidate()):collapsed&&gridWidth>=options.collapseBreakpoint?($gridDiv.removeClass("slick-stacked"),collapsed=!1,options.showHeader&&$gridDiv.find(".slick-header").show(),_this.grid.grid.getOptions().rowHeight=options.rowHeight,_this.grid.grid.setColumns(columns),_this.grid.grid.resizeCanvas(),options.select&&_this.grid.grid.setSelectedRows(_this.grid.grid.getSelectedRows()),_this.grid.grid.invalidate()):(_this.grid.grid.resizeCanvas(),_this.grid.grid.invalidate())}};options.showHeader||$gridDiv.find(".slick-header").hide(),options.responsive&&($(window).on("resize orientationchange",resize),$gridDiv.on("remove",function(){$(window).off("resize",resize)}),resize()),this.resize=resize,options.columns.length>1&&null!=options.items&&options.items.length>0&&this.setItems(options.items)},morpheus.Table.defaultRenderer=function(item,value){if(_.isNumber(value))return morpheus.Util.nf(value);if(morpheus.Util.isArray(value)){for(var s=[],i=0,length=value.length;length>i;i++){i>0&&s.push(", ");value[i];s.push(value[i])}return s.join("")}return""+value},morpheus.Table.prototype={setHeight:function(height){if(this.options.height=height,"auto"===height?(this.$gridDiv.css("height",""),this.grid.grid.getOptions().autoHeight=!0,this.grid.grid.setOptions(this.grid.grid.getOptions())):this.$gridDiv.css("height",height),this.grid.grid.resizeCanvas(),"auto"===height){var height=this.getItems().length*this.options.rowHeight+this.options.rowHeight;this.$gridDiv.find(".slick-viewport").css("height",height+"px"); -}this.grid.grid.invalidate()},setSearchVisible:function(visible){this.tableSearch&&(visible?this.tableSearch.$el.show():this.tableSearch.$el.hide())},search:function(text){if(""===text)this.grid.setFilter(null);else{for(var columns=this.columns.filter(function(c){return c.searchable}),columnNameToColumn=new morpheus.Map,columnNames=columns.map(function(c){return c.name}),i=0;ii;i++){var predicate=predicates[i],filterColumnName=predicate.getField();if(null!=filterColumnName){var column=columnNameToColumn.get(filterColumnName);column&&(predicate.column=column,filteredPredicates.push(predicate))}else filteredPredicates.push(predicate)}predicates=filteredPredicates,this.grid.setFilter(function(item){for(var p=0;npredicates>p;p++){var searchColumns,predicate=predicates[p];searchColumns=predicate.column?[predicate.column]:columns;for(var j=0,ncolumns=searchColumns.length;ncolumns>j;j++){var value=searchColumns[j].getter(item);if(morpheus.Util.isArray(value)){for(var nvalues=value.length,i=0;nvalues>i;i++)if(predicate.accept(value[i]))return!0}else{var predicate=predicates[p];if(predicate.accept(value))return!0}}}return!1})}},getSelectedRows:function(){return this.grid.getSelectedRows()},getSelectedItems:function(){return this.grid.getSelectedItems()},getSelectedItem:function(){return this.grid.getSelectedItem()},setSelectedRows:function(rows){this.grid.setSelectedRows(rows)},getItems:function(items){return this.grid.getItems()},getAllItemCount:function(){return this.grid.getAllItemCount()},getFilteredItemCount:function(){return this.grid.getFilteredItemCount()},setFilter:function(f){this.grid.setFilter(f)},setItems:function(items){this.grid.setItems(items),this.grid.redraw()},redraw:function(){this.grid.redraw()},on:function(evtStr,handler){this.grid.on(evtStr,handler)},off:function(evtStr,handler){this.grid.off(evtStr,handler)},trigger:function(evtStr){this.grid.trigger(evtStr)}},morpheus.Table.createOptions=function(options){options=$.extend(!0,{},{items:[],height:"564px",collapseBreakpoint:500,showHeader:!0,select:!0,rowHeader:null,responsive:!0,fixedWidth:"320px"},options),options.columns||(options.columns=[{name:""}]);var columns=[];return options.columns.forEach(function(c,i){var column=$.extend(!0,{},{id:i,tooltip:function(dataContext,value){return morpheus.Table.defaultRenderer(dataContext,value)},formatter:function(row,cell,value,columnDef,dataContext){return column.renderer(dataContext,value)},comparator:function(a,b){var aNaN=null==a||_.isNumber(a)&&isNaN(a),bNaN=null==b||_.isNumber(b)&&isNaN(b);return aNaN&&bNaN?0:aNaN?1:bNaN?-1:(a.toLowerCase&&(a=a.toLowerCase()),b.toLowerCase&&(b=b.toLowerCase()),a===b?0:b>a?-1:1)},sortable:!0,searchable:!0,width:null,name:c.name,renderer:morpheus.Table.defaultRenderer},c);column.getter||(column.getter=null==column.field?function(item){return item}:function(item){return item[c.field]}),options.rowHeader&&0===i&&(column.formatter=function(row,cell,value,columnDef,dataContext){return options.rowHeader(dataContext)+column.renderer(dataContext,value)}),columns.push(column)}),options.columns=columns,1===options.columns.length?options.tableClass="slick-table-compact":options.tableClass="slick-striped-table",options.rowHeight||(options.rowHeight="slick-table-compact"===options.tableClass?18:20),options},morpheus.TableSearchUI=function(){var _this=this,html=[];html.push('
    '),html.push('
    '),html.push('
    '),html.push(''),html.push('
    '),html.push("
    "),html.push("
    "),html.push("
    ");var $el=$(html.join(""));this.$el=$el,$el.find("form").on("submit",function(e){e.preventDefault()});var $search=$el.find("[name=search]"),$searchResults=$el.find("[name=searchResults]");this.$searchResults=$searchResults,$search.on("keyup",_.debounce(function(){_this.table.search($.trim($(this).val()))},100)),morpheus.Util.autosuggest({$el:$search,suggestWhenEmpty:!1,filter:function(terms,response){var q=$.trim(terms[terms.length-1]);if(""===q)return void response([]);for(var set=new morpheus.Set,regex=new RegExp("^"+q,"i"),columns=_this.table.columns,ncolumns=columns.length,items=_this.table.getItems(),matches=[],i=0,nitems=items.length;nitems>i;i++)for(var item=items[i],j=0;ncolumns>j;j++)if(columns[j].searchable){var field=columns[j].name,showField=field&&ncolumns>1,value=columns[j].getter(item);if(morpheus.Util.isArray(value))for(var nvalues=value.length,k=0;nvalues>k;k++){var val=value[k];if(regex.test(val)&&!set.has(val)&&(set.add(val),matches.push({value:val,label:showField?''+field+':'+val+"":''+val+""})),10===matches.length)return response(matches)}else if(regex.test(value)&&!set.has(value)&&(set.add(value),matches.push({value:value,label:showField?''+field+':'+value+"":''+value+""}),10===matches.length))return response(matches)}return response(matches)},select:function(){_this.table.search($.trim($search.val()))}})},morpheus.TableSearchUI.prototype={updateSearchLabel:function(){var filteredCount=this.table.getFilteredItemCount(),text="";filteredCount!==this.table.getAllItemCount()&&(text+=morpheus.Util.intFormat(filteredCount)+" match"+(1!==filteredCount?"es":"")),this.$searchResults.html(text)},setTable:function(table){this.table=table;var _this=this;table.options.responsive||this.$el.css("width",table.options.fixedWidth),table.on("filter",function(){_this.updateSearchLabel()})}},morpheus.TrackSelection=function(track,positions,selectionModel,isColumns,controller){function getPosition(event,useDelta){if(track.settings.squished){var total=positions.getPosition(positions.getLength()-1)+positions.getItemSize(positions.getLength()-1),squishFactor=total/(isColumns?track.getUnscaledWidth():track.getUnscaledHeight()),p=(morpheus.CanvasUtil.getClientXY(event,useDelta),morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,0,0,useDelta));return p[coord]*=squishFactor,p}return morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,controller.scrollLeft(),controller.scrollTop(),useDelta)}var canvas=track.canvas,startIndex=-1,coord=isColumns?"x":"y";this.hammer=morpheus.Util.hammer(canvas,["pan","tap","longpress"]).on("longpress",function(event){event.preventDefault(),event.srcEvent.stopImmediatePropagation(),event.srcEvent.stopPropagation(),controller.setSelectedTrack(track.name,isColumns),track.showPopup(event.srcEvent)}).on("panmove",function(event){var position=getPosition(event),endIndex=positions.getIndex(position[coord],!1),commandKey=morpheus.Util.IS_MAC?event.srcEvent.metaKey:event.srcEvent.ctrlKey,viewIndices=commandKey?selectionModel.getViewIndices():new morpheus.Set,_startIndex=startIndex;if(startIndex>endIndex){var tmp=endIndex;endIndex=_startIndex,_startIndex=tmp}for(var i=_startIndex;endIndex>=i;i++)viewIndices.add(i);if(selectionModel.setViewIndices(viewIndices,!0),isColumns){var scrollLeft=controller.scrollLeft(),scrollRight=scrollLeft+controller.heatmap.getUnscaledWidth();position.x>scrollRight?controller.scrollLeft(scrollLeft+8):position.xscrollBottom?controller.scrollTop(scrollTop+8):position.y1){if(isColumns&&!controller.options.columnsSortable||!isColumns&&!controller.options.rowsSortable)return;controller.sortBasedOnSelection(null,isColumns,event.srcEvent.shiftKey)}else{controller.setSelectedTrack(track.name,isColumns);var commandKey=morpheus.Util.IS_MAC?event.srcEvent.metaKey:event.srcEvent.ctrlKey;if(morpheus.Util.IS_MAC&&event.srcEvent.ctrlKey)return;var viewIndices;if(commandKey)viewIndices=selectionModel.getViewIndices(),viewIndices.has(index)?viewIndices.remove(index):viewIndices.add(index);else if(event.srcEvent.shiftKey){viewIndices=selectionModel.getViewIndices();var min=Number.MAX_VALUE,max=-Number.MAX_VALUE;for(var viewIndex in viewIndices)min=Math.min(viewIndex,min),max=Math.max(viewIndex,max);if(index>=max)for(var i=max;index>=i;i++)viewIndices.add(i);else for(var i=Math.min(index,min),max=Math.max(index,min);max>=i;i++)viewIndices.add(i)}else viewIndices=new morpheus.Set,viewIndices.add(index);selectionModel.setViewIndices(viewIndices,!0)}})},morpheus.TrackSelection.prototype={dispose:function(){this.hammer.destroy()}},morpheus.VectorTrack=function(project,name,positions,isColumns,heatmap){morpheus.AbstractCanvas.call(this,!0),this.preferredSize={width:0,height:0},this.project=project,this.positions=positions,this.isColumns=isColumns,this.name=name,this.visible=!0,this.heatmap=heatmap,this.id=_.uniqueId();var _this=this;this.updateSpanMapFunction=function(){_this.spanMap=morpheus.VectorUtil.createSpanMap(_this.getVector())},this.lastPosition={start:-1,end:-1},this.events="rowSortOrderChanged rowFilterChanged datasetChanged";var mouseMoved=function(event){var index=-1;if("mouseout"!==event.type){var position=morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,heatmap.scrollLeft(),heatmap.scrollTop());if(_this.settings.squished){var total=positions.getPosition(positions.getLength()-1)+positions.getItemSize(positions.getLength()-1),squishFactor=total/(isColumns?_this.getUnscaledWidth():_this.getUnscaledHeight());position[isColumns?"x":"y"]*=squishFactor}index=isColumns?_this.positions.getIndex(position.x,!1):_this.positions.getIndex(position.y,!1)}isColumns?heatmap.setMousePosition(-1,index,{name:_this.name,event:event}):heatmap.setMousePosition(index,-1,{name:_this.name,event:event})};$(this.canvas).on("contextmenu.morpheus",function(e){return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),heatmap.setSelectedTrack(_this.name,isColumns),_this.showPopup(e),!1}),this.settings={maxTextWidth:void 0,squished:!1,inlineTooltip:!1,tooltip:!0,discrete:!0,highlightMatchingValues:!1,discreteAutoDetermined:!1,colorBarSize:12,stackedBar:!1,renderMethod:{},selectionColor:"rgb(182,213,253)",colorByField:null,barColor:"#bdbdbd",barSize:40,arcSize:60,min:void 0,mid:void 0,max:void 0,minMaxReversed:!1},$(this.canvas).on("mousemove.morpheus mouseout.morpheus",mouseMoved)},morpheus.VectorTrack.RENDER={TEXT:0,COLOR:1,BAR:2,MOLECULE:3,TEXT_AND_COLOR:4,SHAPE:5,ARC:6,BOX_PLOT:7},morpheus.VectorTrack.vectorToString=function(vector){var formatter=function(v){return""+v},dataType=morpheus.VectorUtil.getDataType(vector);return"number"===dataType?formatter=morpheus.Util.nf:"[number]"===dataType?formatter=function(v){var s=[];if(null!=v)for(var i=0,arrayLength=v.length;arrayLength>i;i++)s.push(morpheus.Util.nf(v[i]));return s.join(", ")}:"[string]"===dataType&&(formatter=function(v){var s=[];if(null!=v)for(var i=0,arrayLength=v.length;arrayLength>i;i++)s.push(v[i]);return s.join(", ")}),formatter},morpheus.VectorTrack.prototype={settingFromConfig:function(conf){var settings=this.settings;if(_.isString(conf)){settings.renderMethod={};for(var tokens=conf.split(","),i=0,length=tokens.length;length>i;i++){var method=$.trim(tokens[i]);method=method.toUpperCase();var mapped=morpheus.VectorTrack.RENDER[method];void 0!==mapped?settings.renderMethod[mapped]=!0:"DISCRETE"===method?(settings.discrete=!0,settings.discreteAutoDetermined=!0):"CONTINUOUS"===method?(settings.discrete=!1,settings.discreteAutoDetermined=!0):"HIGHLIGHT"===method?settings.highlightMatchingValues=!0:"STACKED_BAR"===method?(settings.stackedBar=!0,settings.renderMethod[morpheus.VectorTrack.RENDER.BAR]=!0):"BOX_PLOT"===method?settings.renderMethod[morpheus.VectorTrack.RENDER.BOX_PLOT]=!0:console.log(method+" not found.")}}else _.isNumber(conf)?(settings.renderMethod={},settings.renderMethod[conf]=!0):_.isObject(conf)&&(conf.maxTextWidth=void 0,this.settings=$.extend({},this.settings,conf));this._update()},isDiscrete:function(){return this.settings.discrete},setShowTooltip:function(value){this.settings.tooltip=value},isShowTooltip:function(){return this.settings.tooltip},isRenderAs:function(value){return this.settings.renderMethod[value]},dispose:function(){morpheus.AbstractCanvas.prototype.dispose.call(this),$(this.canvas).off("contextmenu.morpheus mousemove.morpheus mouseout.morpheus"),this.project.off(this.events,this.updateSpanMapFunction)},getName:function(){return this.name},getVector:function(name){name=null==name?this.name:name;var vector=this.isColumns?this.project.getSortedFilteredDataset().getColumnMetadata().getByName(name):this.project.getSortedFilteredDataset().getRowMetadata().getByName(name);return vector?vector:new morpheus.Vector(name,0)},getFullVector:function(){var vector=this.isColumns?this.project.getFullDataset().getColumnMetadata().getByName(this.name):this.project.getFullDataset().getRowMetadata().getByName(this.name);return vector?vector:new morpheus.Vector(this.name,0)},_updatePreferredSize:function(){var size=this._computePreferredSize();this.preferredSize.width=size.width,this.preferredSize.height=size.height},_computePreferredSize:function(forPrint){var width=0,height=0;if(this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT)||this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR))if(this.positions.getSize()>=6){var context=this.canvas.getContext("2d"),textWidth=morpheus.CanvasUtil.getVectorStringWidth(context,this.getVector(),this.positions,forPrint?-1:this.isColumns?120:100);forPrint||(textWidth=Math.min(textWidth,this.isColumns?100:500),this.settings.maxTextWidth=textWidth),width+=textWidth}else forPrint||(this.settings.maxTextWidth=0);this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)&&(width+=this.settings.barSize),this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)&&(width+=this.settings.colorBarSize),this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)&&(width+=this.settings.colorBarSize),this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)&&(width+=300),forPrint||this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)||(width=Math.min(300,width)),this.isRenderAs(morpheus.VectorTrack.RENDER.ARC)&&(width+=this.settings.arcSize),this.isRenderAs(morpheus.VectorTrack.RENDER.BOX_PLOT)&&(width+=100);var nkeys=_.keys(this.settings.renderMethod).length;return nkeys>0&&(width+=2*(nkeys-1)),width=Math.max(0,width),this.isColumns?{width:height,height:width}:{width:width,height:height}},getPreferredSize:function(){return this.preferredSize},getPrintSize:function(){return this._computePreferredSize(!0)},_createDiscreteValueMap:function(){var values=morpheus.VectorUtil.getValues(this.getFullVector());values.sort(morpheus.SortKey.ASCENDING_COMPARATOR),this.discreteValueMap=new morpheus.Map;for(var i=0,length=values.length;length>i;i++)this.discreteValueMap.set(values[i],i+1);this.settings.min=0,this.settings.mid=0,this.settings.max=values.length},_setChartMinMax:function(){if(this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BOX_PLOT))if(this.settings.stackedBar||!this.settings.discrete||this.isRenderAs(morpheus.VectorTrack.RENDER.BOX_PLOT)){if(null==this.settings.min||null==this.settings.max||null==this.settings.mid){var vector=this.getFullVector(),minMax=morpheus.VectorUtil.getMinMax(vector),min=minMax.min,max=minMax.max;if(this.settings.minMaxReversed){var tmp=max;max=min,min=tmp}null==this.settings.min&&(this.settings.min=Math.min(0,min)),null==this.settings.max&&(this.settings.max=Math.max(0,max)),null==this.settings.mid&&(this.settings.mid=this.settings.min<0?0:this.settings.min)}}else this.discreteValueMap||this._createDiscreteValueMap()},_update:function(){if(!this.settings.discreteAutoDetermined&&(this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BAR))&&((this.getFullVector().getProperties().has(morpheus.VectorKeys.FIELDS)||_.isNumber(morpheus.VectorUtil.getFirstNonNull(this.getFullVector())))&&(this.settings.discrete=!1),this.settings.discreteAutoDetermined=!0),this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)&&this.project.off(this.events,this.updateSpanMapFunction),this._setChartMinMax(),this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)&&(this.project.on(this.events,this.updateSpanMapFunction),!this.moleculeCache)){this.moleculeCache={};var _this=this,valueToModelIndices=this.getFullVector().getProperties().get(morpheus.VectorKeys.VALUE_TO_INDICES);if(!valueToModelIndices){var fullVector=this.getFullVector();valueToModelIndices=morpheus.VectorUtil.createValueToIndicesMap(fullVector),fullVector.getProperties().set(morpheus.VectorKeys.VALUE_TO_INDICES,valueToModelIndices)}if(void 0!==_this.heatmap.options.structureUrlProvider)valueToModelIndices.forEach(function(indices,value){var url=_this.heatmap.options.structureUrlProvider(value),image=new Image;image.src=url,_this.moleculeCache[value]=image}),setTimeout(2e3,function(){_this.setInvalid(!0),_this.repaint()});else for(var values=valueToModelIndices.keys(),doRequest=function(smile){$.ajax({contentType:"text/plain",context:{smile:smile},data:{string:smile,representation:"sdf"},url:"http://cactus.nci.nih.gov/chemical/structure"}).done(function(text){_this.moleculeCache[this.smile]=text,values.length>0&&doRequest(values.pop()),_this.invalid=!0,_this.repaint()})},i=0;6>i;i++)doRequest(values.pop());this.updateSpanMapFunction()}this._updatePreferredSize()},postPaint:function(clip,context){context.lineWidth=1,context.strokeStyle="Grey";var project=this.project,setup=this._setup(context,clip),vector=setup.vector,start=setup.start,end=setup.end;this.isColumns?-1!==project.getHoverColumnIndex()&&this.drawColumnBorder(context,this.positions,project.getHoverColumnIndex(),this.getUnscaledHeight()):-1!==project.getHoverRowIndex()&&this.drawRowBorder(context,this.positions,project.getHoverRowIndex(),this.getUnscaledWidth()),this._highlightMatchingValues(context,vector,start,end)},_highlightMatchingValues:function(context,viewVector,start,end){var project=this.project,positions=this.positions;context.strokeStyle="black",context.lineWidth=3;var hoverIndex=this.isColumns?project.getHoverColumnIndex():project.getHoverRowIndex(),value=viewVector.getValue(hoverIndex);if(this.settings.highlightMatchingValues&&-1!==hoverIndex&&this.heatmap.mousePositionOptions&&this.heatmap.mousePositionOptions.name===viewVector.getName()){var valueToModelIndices=this.getFullVector().getProperties().get(morpheus.VectorKeys.VALUE_TO_INDICES);if(!valueToModelIndices){var fullVector=this.getFullVector();valueToModelIndices=morpheus.VectorUtil.createValueToIndicesMap(fullVector),fullVector.getProperties().set(morpheus.VectorKeys.VALUE_TO_INDICES,valueToModelIndices)}var indices=valueToModelIndices.get(value);if(null==indices)return void console.log("valueToModelIndices error");if(indices.length<=1)return;if(this.isColumns){if(-1!==project.getHoverColumnIndex()){var height=this.getUnscaledHeight();context.beginPath();for(var i=0,nindices=indices.length;nindices>i;i++){var viewIndex=project.convertModelColumnIndexToView(indices[i]);if(viewIndex>=start&&end>viewIndex){var size=positions.getItemSize(viewIndex),pix=positions.getPosition(viewIndex);context.rect(pix,0,size,height)}}context.stroke()}}else{context.beginPath();for(var width=this.getUnscaledWidth(),indices=valueToModelIndices.get(value),i=0,nindices=indices.length;nindices>i;i++){var viewIndex=project.convertModelRowIndexToView(indices[i]);if(viewIndex>=start&&end>viewIndex){var size=positions.getItemSize(viewIndex),pix=positions.getPosition(viewIndex);context.rect(0,pix,width,size)}}context.stroke()}}},prePaint:function(clip,context){var project=this.project,positions=this.positions,height=this.getUnscaledHeight(),width=this.getUnscaledWidth(),setup=this._setup(context,clip),start=setup.start,end=setup.end;context.lineWidth=1,context.fillStyle=this.settings.selectionColor;if(this.isColumns){var viewIndices=project.getColumnSelectionModel().getViewIndices();viewIndices.forEach(function(i){if(i>=start&&end>=i){var size=positions.getItemSize(i),pix=positions.getPosition(i);context.fillRect(pix,0,size,height)}})}else if(!this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)){var viewIndices=project.getRowSelectionModel().getViewIndices();viewIndices.forEach(function(i){if(i>=start&&end>=i){var size=positions.getItemSize(i),pix=positions.getPosition(i);context.fillRect(0,pix,width,size)}})}(this.invalid||start!==this.lastPosition.start||end!==this.lastPosition.end)&&(this.lastPosition.start=start,this.lastPosition.end=end,this.invalid=!0)},drawRowBorder:function(context,positions,index,gridSize){var size=positions.getItemSize(index),pix=positions.getPosition(index);context.beginPath(),context.moveTo(0,pix+size),context.lineTo(gridSize,pix+size),context.stroke(),context.beginPath(),context.moveTo(0,pix),context.lineTo(gridSize,pix),context.stroke()},drawColumnBorder:function(context,positions,index,gridSize){var size=positions.getItemSize(index),pix=positions.getPosition(index);context.beginPath(),context.moveTo(pix+size,0),context.lineTo(pix+size,gridSize),context.stroke(),context.beginPath(),context.moveTo(pix,0),context.lineTo(pix,gridSize),context.stroke()},isSquished:function(){return this.settings.squished},_setup:function(context,clip){var start=0,vector=this.getVector(),end=vector.size(),settings=this.settings,positions=this.positions,width=clip.width,height=clip.height;if(settings.squished||(this.isColumns?(start=morpheus.Positions.getLeft(clip,positions),end=morpheus.Positions.getRight(clip,positions)):(start=morpheus.Positions.getTop(clip,positions),end=morpheus.Positions.getBottom(clip,positions))),settings.squished){var total=positions.getPosition(positions.getLength()-1)+positions.getItemSize(positions.getLength()-1);if(this.isColumns){var squishFactor=width/total;context.scale(squishFactor,1)}else{var squishFactor=height/total;context.scale(1,squishFactor)}}else context.translate(-clip.x,-clip.y);return{start:start,end:end,vector:vector}},draw:function(clip,context){this._draw(clip,context,this.isColumns?this.getUnscaledHeight():this.getUnscaledWidth())},print:function(clip,context){this._draw(clip,context,this.isColumns?clip.height:clip.width)},_draw:function(clip,context,availableSpace){var fullAvailableSpace=availableSpace,positions=this.positions,setup=this._setup(context,clip),start=setup.start,end=setup.end,vector=setup.vector;context.textAlign="left",context.fillStyle=morpheus.CanvasUtil.FONT_COLOR;var fontSize=Math.min(24,positions.getSize()-2),size=0;if(context.font=fontSize+"px "+morpheus.CanvasUtil.FONT_NAME,context.strokeStyle=morpheus.HeatMapElementCanvas.GRID_COLOR,context.lineWidth=.1,this.heatmap.heatmap.isDrawGrid()&&!this.settings.squished)if(this.isColumns)for(var gridSize=availableSpace,i=start;end>i;i++){var size=positions.getItemSize(i),pix=positions.getPosition(i);size>7&&(context.beginPath(),context.moveTo(pix+size,0),context.lineTo(pix+size,gridSize),context.stroke())}else if(!this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE))for(var gridSize=availableSpace,i=start;end>i;i++){var size=positions.getItemSize(i),pix=positions.getPosition(i);size>7&&(context.beginPath(),context.moveTo(0,pix+size),context.lineTo(gridSize,pix+size),context.stroke())}context.lineWidth=1;var offset=1;if(this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)&&(this.renderColor(context,vector,start,end,clip,this.isColumns?availableSpace:0,!this.settings.discrete),offset+=this.settings.colorBarSize+2,availableSpace-=offset),!this.settings.squished&&this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)&&(this.renderShape(context,vector,start,end,clip,this.isColumns?availableSpace-offset:offset),offset+=this.settings.colorBarSize+2,availableSpace-=offset),this.isRenderAs(morpheus.VectorTrack.RENDER.ARC)&&(this.renderArc(context,vector,start,end,clip,this.settings.arcSize),offset+=this.settings.arcSize+2,availableSpace-=offset),!this.settings.squished&&this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)&&this.renderMolecule(context,vector,start,end,clip,offset,availableSpace),this.isRenderAs(morpheus.VectorTrack.RENDER.BOX_PLOT)){var barSize=this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT)?this.settings.barSize:availableSpace-2;offset++,this.renderBoxPlot(context,vector,start,end,clip,offset,barSize),offset+=barSize+2,availableSpace-=offset}if(this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)){var barSize=this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT)?this.settings.barSize:availableSpace-1;if(this.settings.stackedBar)this.renderStackedBar(context,vector,start,end,clip,offset,barSize);else{var fields=vector.getProperties().get(morpheus.VectorKeys.FIELDS),visibleFieldIndices=vector.getProperties().get(morpheus.VectorKeys.VISIBLE_FIELDS);null!=fields&&null==visibleFieldIndices&&(visibleFieldIndices=morpheus.Util.seq(fields.length)),null!=fields?this.renderUnstackedBar(context,vector,start,end,clip,offset,barSize,visibleFieldIndices):this.renderBar(context,vector,start,end,clip,offset,barSize)}offset+=barSize+2,availableSpace-=offset}!this.settings.squished&&this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR)&&(this.renderText(context,vector,!0,start,end,clip,offset,this.isColumns?fullAvailableSpace:0),offset+=this.settings.maxTextWidth+2,availableSpace-=offset),this.textWidth=0,!this.settings.squished&&this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT)&&(this.textWidth=availableSpace,this.renderText(context,vector,!1,start,end,clip,offset,this.isColumns?fullAvailableSpace:0),offset+=this.settings.textWidth+2,availableSpace-=offset)},showPopup:function(e,isHeader){function addSection(name){items.length>0&&items.push({separator:!0}),items=items.concat(sectionToItems[name])}if(this.heatmap.options.popupEnabled){var _this=this,project=this.project,isColumns=this.isColumns,hasSelection=isColumns?project.getColumnSelectionModel().count()>0:project.getRowSelectionModel().count()>0,ANNOTATE_SELECTION="Annotate Selection",INVERT_SELECTION="Invert Selection",SELECT_ALL="Select All",SHOW_SELECTION_ONLY="Show Selection Only",CLEAR_SELECTION="Clear Selection",HIGHLIGHT_MATCHING_VALUES="Highlight Matching Values",FIELDS="Fields...",DELETE="Delete...",TOOLTIP="Show In Tooltip",HIDE="Hide",REMOVE_SHOW_SELECTION_ONLY="Show All",SORT_ASC="Sort Ascending",SORT_DESC="Sort Descending",FILTER="Filter...",SORT_SEL_ASC="Sort Heat Map Ascending",SORT_SEL_DESC="Sort Heat Map Descending",SORT_SEL_TOP_N="Sort Heat Map Descending/Ascending",DISPLAY_BAR="Show Bar Chart",DISPLAY_STACKED_BAR="Stacked",DISPLAY_COLOR="Show Color",DISPLAY_TEXT="Show Text",DISPLAY_SHAPE="Show Shape",DISPLAY_ARC="Show Arc",DISPLAY_TEXT_AND_COLOR="Show Colored Text",DISPLAY_STRUCTURE="Show Chemical Structure",DISPLAY_CONTINUOUS="Continuous",TOGGLE="Expand/Collapse",positions=this.positions,heatmap=this.heatmap,sectionToItems={Sort:[],Selection:[],Display:[]};if(isHeader&§ionToItems.Sort.push({name:FILTER}),!isColumns){var toggle=!1,dataset=project.getSortedFilteredDataset();try{project.getRowSelectionModel().getViewIndices().forEach(function(index){if(-1!==dataset.getState(index))throw toggle=!0,"break"})}catch(x){}toggle&§ionToItems.Selection.push({name:TOGGLE})}var customItems=this.heatmap.getPopupItems();customItems&&customItems.length>0&&customItems.forEach(function(item){item.columns===isColumns&§ionToItems[item.section].push(item)}),sectionToItems.Selection.length>0&§ionToItems.Selection.push({separator:!0}),sectionToItems.Selection.push({name:"Copy"}),sectionToItems.Selection.push({separator:!0}),sectionToItems.Selection.push({name:ANNOTATE_SELECTION}),sectionToItems.Selection.push({name:INVERT_SELECTION}),sectionToItems.Selection.push({name:SELECT_ALL}),sectionToItems.Selection.push({name:CLEAR_SELECTION});var combinedFilter=isColumns?project.getColumnFilter():project.getRowFilter(),showSelectionOnlyIndex=combinedFilter.indexOf(SHOW_SELECTION_ONLY);-1!==showSelectionOnlyIndex&§ionToItems.Selection.push({name:REMOVE_SHOW_SELECTION_ONLY}),isHeader||(sectionToItems.Sort.push({name:SORT_SEL_ASC,disabled:!hasSelection}),sectionToItems.Sort.push({name:SORT_SEL_DESC,disabled:!hasSelection}),sectionToItems.Sort.push({name:SORT_SEL_TOP_N,disabled:!hasSelection}));var dataType=morpheus.VectorUtil.getDataType(this.getFullVector()),arrayFields=this.getFullVector().getProperties().get(morpheus.VectorKeys.FIELDS),isArray=void 0!==arrayFields,isNumber="number"===dataType||"[number]"===dataType;(isNumber||isArray)&§ionToItems.Display.push({name:DISPLAY_BAR,checked:this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)}),isArray&&(sectionToItems.Display.push({name:DISPLAY_STACKED_BAR,checked:this.settings.stackedBar}),sectionToItems.Display.push({name:FIELDS})),isArray||(sectionToItems.Display.push({name:DISPLAY_COLOR,checked:this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)}),sectionToItems.Display.push({name:DISPLAY_TEXT,checked:this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT)}),sectionToItems.Display.push({name:DISPLAY_SHAPE,checked:this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)})),isArray||isNumber||this.isColumns||-1===name.toLowerCase().indexOf("smile")||sectionToItems.Display.push({name:DISPLAY_STRUCTURE,checked:this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)}),sectionToItems.Display.push({name:TOOLTIP,checked:this.settings.inlineTooltip}),isArray||sectionToItems.Display.push({name:HIGHLIGHT_MATCHING_VALUES,checked:this.settings.highlightMatchingValues}),sectionToItems.Display.push({name:"Squished",checked:this.settings.squished}),(this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BOX_PLOT))&&(sectionToItems.Display.push({separator:!0}),this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)&§ionToItems.Display.push({name:"Edit Bar Color..."}),sectionToItems.Display.push({name:"Auto Range"}),sectionToItems.Display.push({name:"Custom Range..."})),(this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)||this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE))&&(sectionToItems.Display.push({separator:!0}),isNumber&§ionToItems.Display.push({name:DISPLAY_CONTINUOUS,checked:!this.settings.discrete}),(this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)&&isArray)&§ionToItems.Display.push({name:"Edit Colors..."}),this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)&§ionToItems.Display.push({name:"Edit Shapes..."}),(this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)&&isArray)&§ionToItems.Display.push({name:"Color Key",icon:"fa fa-key"})),this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)&§ionToItems.Display.push({name:"Shape Key",icon:"fa fa-key"}),sectionToItems.Display.push({separator:!0}),sectionToItems.Display.push({name:HIDE}),sectionToItems.Display.push({separator:!0}),sectionToItems.Display.push({ -name:DELETE});var items=[];addSection("Sort"),_.each(sectionToItems.Selection,function(item){item.name!==REMOVE_SHOW_SELECTION_ONLY&&item.name!==SELECT_ALL&&(item.disabled=!hasSelection)}),addSection(isHeader?"Display":"Selection"),e.preventDefault&&e.preventDefault(),morpheus.Popup.showPopup(items,{x:e.pageX,y:e.pageY},e.target,function(event,item){var customItem;if("Copy"===item){var dataset=project.getSortedFilteredDataset(),v=isColumns?dataset.getColumnMetadata().getByName(_this.name):dataset.getRowMetadata().getByName(_this.name),selectionModel=isColumns?project.getColumnSelectionModel():project.getRowSelectionModel(),text=[];selectionModel.getViewIndices().forEach(function(index){text.push(morpheus.Util.toString(v.getValue(index)))}),event.clipboardData.setData("text/plain",text.join(" "))}else if(item===FIELDS){var visibleFields,visibleFieldIndices=_this.getFullVector().getProperties().get(morpheus.VectorKeys.VISIBLE_FIELDS);if(null==visibleFieldIndices)visibleFields=arrayFields.slice(0);else{visibleFields=[];for(var i=0;ii;i++)viewIndices.has(i)||inverse.add(i);model.setViewIndices(inverse,!0)}else if(item===FILTER){var filter,vector=_this.getFullVector(),index=_this.isColumns?_this.project.getColumnFilter().indexOf(vector.getName()):_this.project.getRowFilter().indexOf(vector.getName());if(-1===index){if(morpheus.VectorUtil.isNumber(vector)&&morpheus.VectorUtil.containsMoreThanNValues(vector,9))filter=new morpheus.RangeFilter(NaN,NaN,vector.getName());else{var set=morpheus.VectorUtil.getSet(vector),array=set.values();array.sort(morpheus.SortKey.ASCENDING_COMPARATOR),filter=new morpheus.VectorFilter(set,set.size(),vector.getName())}filter&&(_this.isColumns?_this.project.getColumnFilter().add(filter,!0):_this.project.getRowFilter().add(filter,!0))}_this.isColumns?_this.project.getColumnFilter().trigger("focus",{}):_this.project.getRowFilter().trigger("focus",{})}else if(item===SORT_ASC||item===SORT_DESC){var sortKey=new morpheus.SortKey(_this.name,item===SORT_ASC?morpheus.SortKey.SortOrder.ASCENDING:morpheus.SortKey.SortOrder.DESCENDING);_this.isColumns?_this.project.setColumnSortKeys(morpheus.SortKey.keepExistingSortKeys([sortKey],project.getColumnSortKeys()),!0):_this.project.setRowSortKeys(morpheus.SortKey.keepExistingSortKeys([sortKey],project.getRowSortKeys()),!0)}else if(item==SORT_SEL_ASC||item==SORT_SEL_DESC||item===SORT_SEL_TOP_N){var sortOrder;sortOrder=item===SORT_SEL_ASC?morpheus.SortKey.SortOrder.ASCENDING:item===SORT_SEL_DESC?morpheus.SortKey.SortOrder.DESCENDING:morpheus.SortKey.SortOrder.TOP_N,heatmap.sortBasedOnSelection(sortOrder,isColumns,e&&e.shiftKey)}else if(item===SELECT_ALL){for(var selectionModel=isColumns?heatmap.getProject().getColumnSelectionModel():heatmap.getProject().getRowSelectionModel(),count=isColumns?heatmap.getProject().getSortedFilteredDataset().getColumnCount():heatmap.getProject().getSortedFilteredDataset().getRowCount(),indices=new morpheus.Set,i=0;count>i;i++)indices.add(i);selectionModel.setViewIndices(indices,!0)}else if("Auto Range"===item)delete _this.settings.min,delete _this.settings.max,delete _this.settings.mid,_this._update(),heatmap.revalidate();else if("Custom Range..."===item){var formBuilder=new morpheus.FormBuilder,items=[{name:"min",required:!0,type:"number",value:_this.settings.min},{name:"mid",required:!0,type:"number",value:_this.settings.mid},{name:"max",required:!0,type:"number",value:_this.settings.max}];_.each(items,function(item){formBuilder.append(item)}),morpheus.FormBuilder.showOkCancel({title:"Range",content:formBuilder.$form,okCallback:function(){_this.settings.min=parseFloat(formBuilder.getValue("min")),_this.settings.mid=parseFloat(formBuilder.getValue("mid")),_this.settings.max=parseFloat(formBuilder.getValue("max")),_this._update(),heatmap.revalidate()}})}else if("Squished"===item)_this.settings.squished=!_this.settings.squished,heatmap.revalidate();else if("Color Key"===item){var legend=new morpheus.HeatMapTrackColorLegend([_this],isColumns?_this.project.getColumnColorModel():_this.project.getRowColorModel()),size=legend.getPreferredSize();legend.setBounds(size),legend.repaint(),morpheus.FormBuilder.showInModal({title:"Color Key",html:legend.canvas})}else if("Shape Key"===item){var legend=new morpheus.HeatMapTrackShapeLegend([_this],isColumns?_this.project.getColumnShapeModel():_this.project.getRowShapeModel()),size=legend.getPreferredSize();legend.setBounds(size),legend.repaint(),morpheus.FormBuilder.showInModal({title:"Shape Key",html:legend.canvas})}else if("Edit Shapes..."===item){var shapeModel=(new morpheus.FormBuilder,isColumns?_this.project.getColumnShapeModel():_this.project.getRowShapeModel()),chooser=new morpheus.ShapeChooser({map:shapeModel.getMap(_this.name)});chooser.on("change",function(event){shapeModel.setMappedValue(_this.getFullVector(),event.value,event.shape),_this.setInvalid(!0),_this.repaint()}),morpheus.FormBuilder.showInModal({title:"Edit Shapes",html:chooser.$div,close:"Close"})}else if("Edit Colors..."===item){var colorSchemeChooser,colorModel=isColumns?_this.project.getColumnColorModel():_this.project.getRowColorModel();_this.settings.discrete?(colorSchemeChooser=new morpheus.DiscreteColorSchemeChooser({colorScheme:{scale:colorModel.getDiscreteColorScheme(_this.getFullVector())}}),colorSchemeChooser.on("change",function(event){colorModel.setMappedValue(_this.getFullVector(),event.value,event.color),_this.setInvalid(!0),_this.repaint()})):(colorSchemeChooser=new morpheus.HeatMapColorSchemeChooser({showRelative:!1}),colorSchemeChooser.setColorScheme(colorModel.getContinuousColorScheme(_this.getFullVector())),colorSchemeChooser.on("change",function(event){_this.setInvalid(!0),_this.repaint()})),morpheus.FormBuilder.showInModal({title:"Edit Colors",html:colorSchemeChooser.$div,close:"Close",callback:function(){colorSchemeChooser.dispose()}})}else if(item===TOOLTIP)_this.settings.inlineTooltip=!_this.settings.inlineTooltip;else if(item===HIGHLIGHT_MATCHING_VALUES)_this.settings.highlightMatchingValues=!_this.settings.highlightMatchingValues;else if(customItem=_.find(customItems,function(customItem){return customItem.name===item&&customItem.columns===isColumns}))if(customItem.task){var task={tabId:_this.heatmap.getTabManager().getActiveTabId()};_this.heatmap.getTabManager().addTask(task),setTimeout(function(){try{customItem.callback(heatmap)}catch(x){}_this.heatmap.getTabManager().removeTask(task)},1)}else customItem.callback(heatmap);else if(item===DISPLAY_CONTINUOUS)_this.settings.discrete=!_this.settings.discrete,_this._setChartMinMax(),_this.setInvalid(!0),_this.repaint();else if(item===HIDE)heatmap.setTrackVisible(_this.name,!1,_this.isColumns),heatmap.revalidate();else if(item===DISPLAY_STACKED_BAR)_this.settings.stackedBar=!_this.settings.stackedBar,_this._update(),heatmap.revalidate();else{item===DISPLAY_BAR?item=morpheus.VectorTrack.RENDER.BAR:item===DISPLAY_COLOR?item=morpheus.VectorTrack.RENDER.COLOR:item===DISPLAY_TEXT?item=morpheus.VectorTrack.RENDER.TEXT:item===DISPLAY_TEXT_AND_COLOR?item=morpheus.VectorTrack.RENDER.TEXT_AND_COLOR:item===DISPLAY_STRUCTURE?item=morpheus.VectorTrack.RENDER.MOLECULE:item===DISPLAY_SHAPE?item=morpheus.VectorTrack.RENDER.SHAPE:item===DISPLAY_ARC?item=morpheus.VectorTrack.RENDER.ARC:console.log("Unknown item "+item);var show=!_this.isRenderAs(item);show?_this.settings.renderMethod[item]=!0:delete _this.settings.renderMethod[item],_this._update(),heatmap.revalidate()}})}},renderColor:function(context,vector,start,end,clip,offset,continuous){var isColumns=this.isColumns,positions=this.positions,colorModel=isColumns?this.project.getColumnColorModel():this.project.getRowColorModel(),settings=this.settings,canvasSize=isColumns?this.getUnscaledHeight():this.getUnscaledWidth();settings.colorBarSize>canvasSize&&(settings.colorBarSize=canvasSize>=5?canvasSize-1:canvasSize);var getColor;getColor=continuous?_.bind(colorModel.getContinuousMappedValue,colorModel):_.bind(colorModel.getMappedValue,colorModel);for(var i=start;end>i;i++){var value=vector.getValue(i),position=positions.getPosition(i),size=positions.getItemSize(i),color=getColor(vector,value);context.fillStyle=color,isColumns?(context.beginPath(),context.rect(position,offset-settings.colorBarSize,size,settings.colorBarSize),context.fill()):(context.beginPath(),context.rect(offset,position,settings.colorBarSize,size),context.fill())}},renderShape:function(context,vector,start,end,clip,offset){var isColumns=this.isColumns,positions=this.positions,shapeModel=isColumns?this.project.getColumnShapeModel():this.project.getRowShapeModel(),settings=this.settings,canvasSize=isColumns?this.getUnscaledHeight():this.getUnscaledWidth();settings.colorBarSize>canvasSize&&(settings.colorBarSize=canvasSize>=5?canvasSize-1:canvasSize),context.fillStyle="black",context.strokeStyle="black";var lineWidth=context.lineWidth;context.lineWidth=1;for(var i=start;end>i;i++){var value=vector.getValue(i),position=positions.getPosition(i),itemSize=positions.getItemSize(i),minSize=Math.min(settings.colorBarSize,itemSize),size2=minSize/2,shape=shapeModel.getMappedValue(vector,value),x=isColumns?position+itemSize/2:offset+size2,y=isColumns?offset-size2:position+itemSize/2;size2-=.5,morpheus.CanvasUtil.drawShape(context,shape,x,y,size2)}context.lineWidth=lineWidth},renderArc:function(context,vector,start,end,clip,size){var isColumns=this.isColumns,positions=this.positions;this.project;context.save(),context.lineWidth=1;var fill=(d3.scale.linear().domain([1,size]).range([.8,1]).clamp(!0),d3.scale.category20b()),valueToIndices=morpheus.VectorUtil.createValueToIndicesMap(vector),total=positions.getPosition(positions.getLength()-1)+positions.getItemSize(positions.getLength()-1);context.translate(clip.x,clip.y);var width=clip.width,height=clip.height;if(isColumns){var squishFactor=width/total;context.scale(squishFactor,1)}else{var squishFactor=height/total;context.scale(1,squishFactor)}start=0,end=vector.size();for(var i=start;end>i;i++){var value=vector.getValue(i);if(null!=value){context.strokeStyle=fill(value);for(var indices=valueToIndices.get(value),pix=positions.getPosition(i)+positions.getItemSize(i)/2,j=0,nindices=indices.length;nindices>j;j++){var viewIndex=indices[j];if(viewIndex!==i){var endPix=positions.getPosition(viewIndex)+positions.getItemSize(viewIndex)/2,midPix=(endPix+pix)/2,arcRadius=(Math.abs(i-viewIndex),size);isColumns?(context.beginPath(),context.moveTo(pix,arcRadius),context.quadraticCurveTo(midPix,1,endPix,arcRadius)):(context.beginPath(),context.moveTo(1,pix),context.quadraticCurveTo(arcRadius,midPix,1,endPix)),context.stroke()}}}}context.restore()},sdfToSvg:function(sdf,width,height){this.jsme||"undefined"==typeof JSApplet||(this.jsmeId=_.uniqueId("m"),this.$jsmeDiv=$('
    ').appendTo($(document.body)),this.jsme=new JSApplet.JSME(this.jsmeId,"380px","340px",{})),this.jsme.readMolFile(sdf);var svg=$("#"+this.jsmeId+" > div > div > div:nth-child(2) > svg"),svgWidth=svg.width.baseVal.value,svgHeight=svg.height.baseVal.value,scale=Math.min(width/svgWidth,height/svgHeight),text=''+svg.innerHTML+"";return text},renderMolecule:function(context,vector,start,end,clip,offset){var positions=(this.isColumns,this.positions);context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,context.strokeStyle="black";for(var width=this.getUnscaledWidth(),customUrlProvider=void 0!==this.heatmap.options.structureUrlProvider,dummyTarget={childNodes:[],getContext:function(){return context}},i=start;end>i;i++){var spanEnd=this.spanMap.get(i);if(void 0!==spanEnd){var startPix=positions.getPosition(i),endPix=positions.getPosition(spanEnd-1)+positions.getSize(),size=endPix-startPix,value=vector.getValue(i),cache=this.moleculeCache[value];if(cache)if(customUrlProvider){if(cache.complete){var scaleFactor=Math.min(size/cache.height,width/cache.width),scaledWidth=cache.width*scaleFactor,scaledHeight=cache.height*scaleFactor,diff=cache.height-scaledHeight;startPix+=diff/2;try{context.drawImage(cache,offset,startPix,scaledWidth,scaledHeight)}catch(x){}}}else{var text=this.sdfToSvg(cache,width,size);canvg(dummyTarget,text,{ignoreMouse:!0,ignoreAnimation:!0,offsetY:startPix,ignoreClear:!0,ignoreDimensions:!0})}}}},createChartScale:function(availableSpace){var domain,range;this.settings.mid!==this.settings.min&&this.settings.mid!==this.settings.max?(domain=[this.settings.min,this.settings.mid,this.settings.max],range=this.isColumns?[availableSpace,availableSpace/2,0]:[0,availableSpace/2,availableSpace]):(domain=[this.settings.min,this.settings.max],range=this.isColumns?[availableSpace,0]:[0,availableSpace]);var scale=d3.scale.linear().domain(domain).range(range).clamp(!0);return scale},renderBar:function(context,vector,start,end,clip,offset,availableSpace){var isColumns=this.isColumns,positions=this.positions;context.fillStyle=this.settings.barColor;for(var scale=this.createChartScale(availableSpace),midPix=scale(this.settings.mid),settings=this.settings,discrete=settings.discrete&&null!=this.discreteValueMap,i=start;end>i;i++){var value=vector.getValue(i);discrete&&(value=this.discreteValueMap.get(value));var position=positions.getPosition(i),size=positions.getItemSize(i),scaledValue=scale(value);isColumns?(context.beginPath(),context.rect(position,Math.min(midPix,scaledValue),size,Math.abs(midPix-scaledValue)),context.fill()):(context.beginPath(),context.rect(offset+Math.min(midPix,scaledValue),position,Math.abs(midPix-scaledValue),size),context.fill())}},renderBoxPlot:function(context,vector,start,end,clip,offset,availableSpace){var isColumns=this.isColumns,positions=this.positions;context.strokeStyle="black",context.save(),context.translate(offset,0);var scale=this.createChartScale(availableSpace),visibleFieldIndices=vector.getProperties().get(morpheus.VectorKeys.VISIBLE_FIELDS);null==visibleFieldIndices&&(visibleFieldIndices=morpheus.Util.seq(vector.getProperties().get(morpheus.VectorKeys.FIELDS).length));for(var colorByVector=null!=this.settings.colorByField?this.getVector(this.settings.colorByField):null,colorModel=isColumns?this.project.getColumnColorModel():this.project.getRowColorModel(),i=start;end>i;i++){var array=vector.getValue(i);if(null!=array){var itemSize=positions.getItemSize(i);if(3>=itemSize)continue;var radius=2,pix=positions.getPosition(i),start=pix+1,end=pix+itemSize-1,center=(start+end)/2,_itemSize=itemSize-2,lineHeight=Math.max(2,_itemSize-8),box=array.box;if(null==box){var v=morpheus.VectorUtil.arrayAsVector(array);box=morpheus.BoxPlotItem(null!=visibleFieldIndices?new morpheus.SlicedVector(v,visibleFieldIndices):v),array.box=box}if(context.fillStyle="#bdbdbd",!isColumns){context.fillRect(Math.min(scale(box.q1),scale(box.q3)),start,Math.abs(scale(box.q1)-scale(box.q3)),_itemSize),context.fillRect(Math.min(scale(box.q1),scale(box.lowerAdjacentValue)),center-lineHeight/2,Math.abs(scale(box.q1)-scale(box.lowerAdjacentValue)),lineHeight),context.fillRect(Math.min(scale(box.q3),scale(box.upperAdjacentValue)),center-lineHeight/2,Math.abs(scale(box.q3)-scale(box.upperAdjacentValue)),lineHeight),context.fillStyle="#636363";for(var j=0,length=visibleFieldIndices.length;length>j;j++){var value=array[visibleFieldIndices[j]];if(null!=value){if(null!=colorByVector){var colorByArray=colorByVector.getValue(i);if(null!=colorByArray){var color=colorModel.getMappedValue(colorByVector,colorByArray[visibleFieldIndices[j]]);context.fillStyle=color}else context.fillStyle="#636363"}var pix=scale(value);context.beginPath(),context.arc(pix,center,radius,2*Math.PI,!1),context.fill()}}}}}context.restore()},renderStackedBar:function(context,vector,start,end,clip,offset,availableSpace){var isColumns=this.isColumns,positions=this.positions,scale=this.createChartScale(availableSpace),midPix=scale(this.settings.mid),colorModel=(this.settings,isColumns?this.project.getColumnColorModel():this.project.getRowColorModel()),selectionModel=isColumns?this.project.getRowSelectionModel():null,selectedModelIndices=null==selectionModel?[]:selectionModel.toModelIndices();context.strokeStyle="black",context.lineWidth=2;for(var i=start;end>i;i++){var array=vector.getValue(i);if(null!=array){var selectedBins=new morpheus.Set;if(null!=array.modelIndexToBin)for(var j=0;jj;j++){var value=array[j];value>=this.settings.mid?positivePairs.push({value:value,index:j}):0>value&&negativePairs.push({value:value,index:j})}for(var positiveIndices=morpheus.Util.indexSortPairs(positivePairs,!1),j=0,length=positiveIndices.length;length>j;j++){var index=positiveIndices[j],value=array[index],color=colorModel.getMappedValue(vector,index);context.fillStyle=color;var scaledValue=scale(value),nextScaledValue=j===length-1?midPix:scale(array[positiveIndices[j+1]]);if(isColumns?(context.beginPath(),context.rect(position,Math.min(nextScaledValue,scaledValue),size,Math.abs(nextScaledValue-scaledValue)),context.fill()):(context.beginPath(),context.rect(offset+Math.min(nextScaledValue,scaledValue),position,Math.abs(nextScaledValue-scaledValue),size),context.fill()),selectedBins.has(index)){context.beginPath();var ytop=(nextScaledValue+scaledValue)/2;context.moveTo(position,ytop),context.lineTo(position+size,ytop),context.stroke()}}for(var negativeIndices=morpheus.Util.indexSortPairs(negativePairs,!0),j=0,length=negativeIndices.length;length>j;j++){var index=negativeIndices[j],value=array[index],color=colorModel.getMappedValue(vector,index);context.fillStyle=color;var scaledValue=scale(value),nextScaledValue=j===length-1?midPix:scale(array[negativeIndices[j+1]]);if(isColumns?(context.beginPath(),context.rect(position,Math.min(nextScaledValue,scaledValue),size,Math.abs(nextScaledValue-scaledValue)),context.fill()):(context.beginPath(),context.rect(offset+Math.min(nextScaledValue,scaledValue),position,Math.abs(nextScaledValue-scaledValue),size),context.fill()),selectedBins.has(index)){context.beginPath();var ytop=(nextScaledValue+scaledValue)/2;context.moveTo(position,ytop),context.lineTo(position+size,ytop),context.stroke()}}}}context.lineWidth=1},renderUnstackedBar:function(context,vector,start,end,clip,offset,availableSpace,fieldIndices){var isColumns=this.isColumns,positions=this.positions,nvalues=fieldIndices.length,colorModel=(this.settings,isColumns?this.project.getColumnColorModel():this.project.getRowColorModel());context.fillStyle=this.settings.barColor;var barSpacer=0,barWidth=(availableSpace-(nvalues-1)*barSpacer)/nvalues,colorByVector=null!=this.settings.colorByField?this.getVector(this.settings.colorByField):null;context.strokeStyle="white";for(var i=start;end>i;i++){var array=vector.getValue(i);if(null!=array)for(var position=positions.getPosition(i),itemSize=positions.getItemSize(i),scale=this.createChartScale(itemSize-1),midPix=scale(this.settings.mid),xpix=0,j=0;nvalues>j;j++){var value=array[fieldIndices[j]];if(null!=colorByVector){var colorByArray=colorByVector.getValue(i),color=colorModel.getMappedValue(colorByVector,null!=colorByArray?colorByArray[fieldIndices[j]]:null);context.fillStyle=color}var scaledValue=scale(value);if(isColumns)context.beginPath(),context.rect(Math.min(midPix,scaledValue),offset+xpix,Math.abs(midPix-scaledValue),barWidth),context.fill();else{context.beginPath();var barHeight=Math.abs(midPix-scaledValue),ypix=position+itemSize-Math.max(midPix,scaledValue);context.rect(offset+xpix,ypix,barWidth,barHeight),context.fill()}xpix+=barWidth+barSpacer}}},renderText:function(context,vector,isColor,start,end,clip,offset,canvasSize){context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,context.textBaseline="middle";var positions=this.positions,isColumns=this.isColumns,colorModel=isColumns?this.project.getColumnColorModel():this.project.getRowColorModel();isColumns&&context.translate(clip.x,clip.y);for(var toStringFunction=morpheus.VectorTrack.vectorToString(vector),i=start;end>i;i++){var size=this.positions.getItemSize(i);if(!(6>size)){var value=vector.getValue(i);if(null!=value){value=toStringFunction(value);var position=positions.getPosition(i);isColor&&(context.fillStyle=colorModel.getMappedValue(vector,value)),isColumns?(context.save(),context.translate(position+size/2-clip.x,canvasSize-clip.y-offset),context.rotate(-Math.PI/2),context.fillText(value,0,0),context.restore()):context.fillText(value,offset,position+size/2)}}}}},morpheus.Util.extend(morpheus.VectorTrack,morpheus.AbstractCanvas),morpheus.VectorTrackHeader=function(project,name,isColumns,controller){function getResizeCursor(pos){return isColumns&&pos.y>=_this.getUnscaledHeight()-3?"ns-resize":pos.x>=_this.getUnscaledWidth()-3?"ew-resize":void 0}morpheus.AbstractCanvas.call(this),this.project=project,this.name=name,this.isColumns=isColumns;var canvas=this.canvas;this.controller=controller;var vector=(isColumns?project.getFullDataset().getColumnMetadata():project.getFullDataset().getRowMetadata()).getByName(name);vector&&vector.getProperties().has(morpheus.VectorKeys.TITLE)&&(this.canvas.setAttribute("title",vector.getProperties().get(morpheus.VectorKeys.TITLE)),$(this.canvas).tooltip());var _this=this;this.setBounds({height:this.defaultFontHeight+morpheus.VectorTrackHeader.FONT_OFFSET});var mouseMove=function(event){if(!morpheus.CanvasUtil.dragging){var pos=morpheus.CanvasUtil.getMousePos(event.target,event),cursor=getResizeCursor(pos);canvas.style.cursor=cursor?cursor:"default",_this.isMouseOver=!0,_this.repaint()}},mouseExit=function(e){morpheus.CanvasUtil.dragging||(canvas.style.cursor="default"),_this.isMouseOver=!1,_this.repaint()},showPopup=function(e){controller.setSelectedTrack(_this.name,isColumns);var track=controller.getTrack(_this.name,isColumns);if(!track)throw _this.name+" track not found";return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),track.showPopup(e,!0),!1};this.selectedBackgroundColor="#c8c8c8",this.backgroundColor="#f9f9f9",$(this.canvas).css("background-color",this.backgroundColor).on("mousemove.morpheus",mouseMove).on("mouseout.morpheus",mouseExit).on("mouseenter.morpheus",mouseMove),$(this.canvas).on("contextmenu.morpheus",showPopup);var resizeCursor,dragStartPosition,dragStartWidth=0,dragStartHeight=0,dragging=!1;this.hammer=morpheus.Util.hammer(canvas,["pan","tap","longpress"]).on("longpress",function(event){event.preventDefault(),controller.setSelectedTrack(_this.name,isColumns);var track=controller.getTrack(_this.name,isColumns);track.showPopup(event.srcEvent,!0)}).on("panend",function(event){_this.isMouseOver=!1,morpheus.CanvasUtil.dragging=!1,canvas.style.cursor="default";var index=controller.getTrackIndex(_this.name,isColumns),header=controller.getTrackHeaderByIndex(index,isColumns),track=controller.getTrackByIndex(index,isColumns),$canvas=$(track.canvas);$canvas.css("z-index","0"),$(header.canvas).css("z-index","0"),controller.revalidate()}).on("panstart",function(event){if(_this.isMouseOver=!1,!morpheus.CanvasUtil.dragging)if(resizeCursor=getResizeCursor(morpheus.CanvasUtil.getMousePos(event.target,event,!0)))morpheus.CanvasUtil.dragging=!0,canvas.style.cursor=resizeCursor,dragStartWidth=_this.getUnscaledWidth(),dragStartHeight=_this.getUnscaledHeight(),event.preventDefault(),dragging=!1;else{var index=controller.getTrackIndex(_this.name,isColumns);if(-1==index)throw _this.name+" not found";var header=controller.getTrackHeaderByIndex(index,isColumns),track=controller.getTrackByIndex(index,isColumns);controller.setSelectedTrack(_this.name,isColumns);var $canvas=$(track.canvas);dragStartPosition=$canvas.position(),$canvas.css("z-index","100"),$(header.canvas).css("z-index","100"),morpheus.CanvasUtil.dragging=!0,resizeCursor=void 0,dragging=!0}}).on("panmove",function(event){if(_this.isMouseOver=!1,resizeCursor){var width,height;if("ew-resize"===resizeCursor){var dx=event.deltaX;width=Math.max(8,dragStartWidth+dx)}if("ns-resize"===resizeCursor){var dy=event.deltaY;height=Math.max(8,dragStartHeight+dy)}controller.resizeTrack(_this.name,width,height,isColumns)}else if(dragging){var index=controller.getTrackIndex(_this.name,isColumns),header=controller.getTrackHeaderByIndex(index,isColumns),track=controller.getTrackByIndex(index,isColumns),ntracks=controller.getNumTracks(isColumns),delta=isColumns?event.deltaY:event.deltaX,newIndex=index+(delta>0?1:-1);newIndex=Math.min(Math.max(0,newIndex),ntracks-1);var prop=isColumns?"top":"left",w=isColumns?"getUnscaledHeight":"getUnscaledWidth",trackBounds={};trackBounds[prop]=dragStartPosition[prop]+delta,track.setBounds(trackBounds),header.setBounds(trackBounds);var dragOverTrack=controller.getTrackByIndex(newIndex,isColumns),dragOverWidth=dragOverTrack[w](),dragOverLeft=$(dragOverTrack.canvas).position()[prop],dragleft=dragStartPosition[prop]+delta,dragright=dragleft+track[w]();if((delta>0&&dragright>=dragOverLeft+dragOverWidth/2||0>delta&&dragOverLeft+dragOverWidth/2>=dragleft)&&index!==newIndex){controller.moveTrack(index,newIndex,isColumns);var otherHeader=controller.getTrackHeaderByIndex(index,isColumns),otherTrack=controller.getTrackByIndex(index,isColumns),$movedCanvas=$(otherTrack.canvas),newLeft=$movedCanvas.position()[prop];0>delta?newLeft+=track[w]():newLeft-=track[w]();var otherBounds={};otherBounds[prop]=newLeft,otherTrack.setBounds(otherBounds),otherHeader.setBounds(otherBounds)}}}).on("tap",function(event){if((!morpheus.Util.IS_MAC||!event.srcEvent.ctrlKey)&&(_this.isMouseOver=!1,controller.setSelectedTrack(_this.name,isColumns),(!isColumns||controller.options.columnsSortable)&&(isColumns||controller.options.rowsSortable))){var sortOrder,sortKey,additionalSort=event.srcEvent.shiftKey,isGroupBy=!1,existingSortKeyIndex=_this.getSortKeyIndexForColumnName(_this.getSortKeys(),_this.name);-1!=existingSortKeyIndex?(sortKey=_this.getSortKeys()[existingSortKeyIndex],sortOrder=sortKey.getSortOrder()===morpheus.SortKey.SortOrder.UNSORTED?morpheus.SortKey.SortOrder.ASCENDING:sortKey.getSortOrder()===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.SortOrder.DESCENDING:morpheus.SortKey.SortOrder.UNSORTED):(sortKey=new morpheus.SortKey(_this.name,morpheus.SortKey.SortOrder.ASCENDING),sortOrder=morpheus.SortKey.SortOrder.ASCENDING),null!=sortKey&&(sortKey.setSortOrder(sortOrder),_this.setSortingStatus(_this.getSortKeys(),sortKey,additionalSort,isGroupBy))}})},morpheus.VectorTrackHeader.FONT_OFFSET=2,morpheus.VectorTrackHeader.prototype={selected:!1,isMouseOver:!1,defaultFontHeight:11,dispose:function(){morpheus.AbstractCanvas.prototype.dispose.call(this),$(this.canvas).off("contextmenu.morpheus mousemove.morpheus mouseout.morpheus mouseenter.morpheus"),this.hammer.destroy()},getPreferredSize:function(){var size=this.getPrintSize();return size.width+=22,this.isColumns||(size.height=this.defaultFontHeight+morpheus.VectorTrackHeader.FONT_OFFSET),size},getPrintSize:function(){var context=this.canvas.getContext("2d");context.font=this.defaultFontHeight+"px "+morpheus.CanvasUtil.FONT_NAME;var width=4+context.measureText(this.name).width;return{width:width,height:this.getUnscaledHeight()}},getSortKeys:function(){return this.isColumns?this.project.getColumnSortKeys():this.project.getRowSortKeys()},setOrder:function(sortKeys){ -this.isColumns?this.project.setColumnSortKeys(morpheus.SortKey.keepExistingSortKeys(sortKeys,this.project.getColumnSortKeys()),!1):this.project.setRowSortKeys(morpheus.SortKey.keepExistingSortKeys(sortKeys,this.project.getRowSortKeys()),!1)},setGroupBy:function(groupBy){for(var existingGroupBy=this.isColumns?this.project.groupColumns:this.project.groupRows,index=-1,i=0,length=existingGroupBy.length;length>i;i++)if(existingGroupBy[i].toString()===groupBy.toString()){index=i;break}var newGroupBy=[groupBy];-1!==index&&(newGroupBy=existingGroupBy,newGroupBy.splice(index,1)),this.isColumns?this.project.setGroupColumns(newGroupBy,!0):this.project.setGroupRows(newGroupBy,!0)},setSelected:function(selected){selected!=this.selected&&(this.selected=selected,$(this.canvas).css({"background-color":this.selected?this.selectedBackgroundColor:this.backgroundColor}))},setSortingStatus:function(sortKeys,sortKey,additionalSort,isGroupBy){if(!isGroupBy)if(sortKey.getSortOrder()!=morpheus.SortKey.SortOrder.UNSORTED||additionalSort){if(additionalSort&&0==sortKeys.length&&(additionalSort=!1),additionalSort){var sortKeyIndex=this.getSortKeyIndexForColumnName(sortKeys,sortKey.toString());-1===sortKeyIndex?sortKeys.push(sortKey):sortKeys[sortKeyIndex]=sortKey}else sortKeys=[sortKey];this.setOrder(sortKeys)}else this.setOrder([]);isGroupBy?this.setGroupBy(sortKey):this.isColumns?this.project.trigger("columnSortOrderChanged"):this.project.trigger("rowSortOrderChanged")},getSortKeyIndexForColumnName:function(sortKeys,columnName){if(null!=sortKeys)for(var i=0,size=sortKeys.length;size>i;i++)if(columnName===sortKeys[i].toString())return i;return-1},print:function(clip,context){clip.height<=6||(context.textBaseline="bottom",this.isColumns?(context.textAlign="right",context.font=Math.min(this.defaultFontHeight,clip.height-morpheus.VectorTrackHeader.FONT_OFFSET)+"px "+morpheus.CanvasUtil.FONT_NAME):(context.textAlign="left",context.font=clip.height-morpheus.VectorTrackHeader.FONT_OFFSET+"px "+morpheus.CanvasUtil.FONT_NAME),context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,context.fillText(this.name,0,0))},draw:function(clip,context){var sortKeys=this.getSortKeys(),name=this.name,existingSortKeyIndex=this.getSortKeyIndexForColumnName(sortKeys,name);if(morpheus.CanvasUtil.resetTransform(context),context.clearRect(0,0,this.getUnscaledWidth(),this.getUnscaledHeight()),!(this.getUnscaledHeight()<5)){this.isColumns?(context.beginPath(),context.moveTo(0,this.getUnscaledHeight()),context.lineTo(this.getUnscaledWidth(),this.getUnscaledHeight()),context.stroke(),context.textAlign="right"):(context.beginPath(),context.moveTo(this.getUnscaledWidth(),0),context.lineTo(this.getUnscaledWidth(),this.getUnscaledHeight()),context.stroke(),context.textAlign="left");var fontHeight=Math.min(this.defaultFontHeight,this.getUnscaledHeight()-morpheus.VectorTrackHeader.FONT_OFFSET),squished=this.controller.getTrack(this.name,this.isColumns).settings.squished;context.font=(squished?"Italic ":"")+fontHeight+"px "+morpheus.CanvasUtil.FONT_NAME;var textWidth=context.measureText(name).width,isColumns=this.isColumns,xpix=this.isColumns?this.getUnscaledWidth()-2:10;isColumns&&(-1!=existingSortKeyIndex&&(xpix-=6),sortKeys.length>1&&(xpix-=6));var ypix=this.isColumns?this.getUnscaledHeight()/2:this.getUnscaledHeight()-(this.defaultFontHeight+morpheus.VectorTrackHeader.FONT_OFFSET)/2;if(context.textBaseline="middle",this.isMouseOver){context.fillStyle="rgb(0,0,0)";for(var xdot=xpix-(isColumns?textWidth+4:4),ydot=ypix-3,i=0;2>i;i++)for(var j=0;3>j;j++)context.fillRect(xdot-3*i,ydot+3*j,1.5,1.5)}if(context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,context.fillText(name,xpix,ypix),context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,-1!==existingSortKeyIndex){context.beginPath();var x=this.isColumns?xpix+4:xpix+textWidth+6,arrowHeight=Math.min(8,this.getUnscaledHeight()/2-1),arrowWidth=3;sortKeys[existingSortKeyIndex].getSortOrder()===morpheus.SortKey.SortOrder.ASCENDING?(context.translate(x,ypix-arrowHeight),context.moveTo(0,0),context.lineTo(arrowWidth,arrowHeight),context.lineTo(-arrowWidth,arrowHeight)):sortKeys[existingSortKeyIndex].getSortOrder()===morpheus.SortKey.SortOrder.DESCENDING?(context.translate(x,ypix),context.moveTo(0,arrowHeight),context.lineTo(arrowWidth,0),context.lineTo(-arrowWidth,0)):(context.translate(x,ypix-arrowHeight/2),context.moveTo(0,0),context.lineTo(arrowWidth,arrowHeight/2),context.lineTo(0,arrowHeight),context.lineTo(-arrowWidth,arrowHeight/2)),context.fill(),morpheus.CanvasUtil.resetTransform(context),sortKeys.length>1&&(context.textAlign="left",context.font="8px "+morpheus.CanvasUtil.FONT_NAME,context.fillText(""+(existingSortKeyIndex+1),x+4,ypix-3))}}}},morpheus.Util.extend(morpheus.VectorTrackHeader,morpheus.AbstractCanvas),morpheus.AverageLinkage=function(nelements,distmatrix){var j,n,clusterid,number,result;clusterid=[],number=[],result=[];for(var i=0;nelements-1>i;i++)result[i]={left:0,right:0,distance:0};for(j=0;nelements>j;j++)number[j]=1,clusterid[j]=j;var r={};for(n=nelements;n>1;n--){morpheus.HCluster.findClosestPair(n,distmatrix,r),result[nelements-n]={},result[nelements-n].distance=r.distance;var is=r.ip,js=r.jp;result[nelements-n].left=clusterid[is],result[nelements-n].right=clusterid[js];var sum=number[is]+number[js];for(j=0;js>j;j++)distmatrix[js][j]=distmatrix[is][j]*number[is]+distmatrix[js][j]*number[js],distmatrix[js][j]/=sum;for(j=js+1;is>j;j++)distmatrix[j][js]=distmatrix[is][j]*number[is]+distmatrix[j][js]*number[js],distmatrix[j][js]/=sum;for(j=is+1;n>j;j++)distmatrix[j][js]=distmatrix[j][is]*number[is]+distmatrix[j][js]*number[js],distmatrix[j][js]/=sum;for(j=0;is>j;j++)distmatrix[is][j]=distmatrix[n-1][j];for(j=is+1;n-1>j;j++)distmatrix[j][is]=distmatrix[n-1][j];number[js]=sum,number[is]=number[n-1],clusterid[js]=n-nelements-1,clusterid[is]=clusterid[n-1]}return result},morpheus.CollapseDataset=function(dataset,collapseToFields,summarizeFunction,shallowCopy){for(var vectors=[],i=0;iseries;series++)collapsedDataset.addSeries({name:dataset.getName(i),dataType:"Float32"});shallowCopy?collapsedDataset.setColumnMetadata(dataset.getColumnMetadata()):morpheus.MetadataUtil.copy(dataset.getColumnMetadata(),collapsedDataset.getColumnMetadata());for(var nfields=collapseToFields.length,collapseToVectors=[],i=0;nfields>i;i++)collapseToVectors.push(collapsedDataset.getRowMetadata().add(collapseToFields[i]));var counter=0;return idToIndices.forEach(function(rowIndices,key){for(var slice=morpheus.DatasetUtil.slicedView(dataset,rowIndices,null),view=new morpheus.DatasetColumnView(slice),series=0;nseries>series;series++){view.setSeriesIndex(series);for(var j=0,ncols=dataset.getColumnCount();ncols>j;j++)view.setIndex(j),collapsedDataset.setValue(counter,j,summarizeFunction(view),series)}for(var i=0;nfields>i;i++){var collapsedToVector=collapseToVectors[i],vector=vectors[i];collapsedToVector.setValue(counter,vector.getValue(rowIndices[0]))}counter++}),collapsedDataset},morpheus.CompleteLinkage=function(nelements,distmatrix){for(var j,n,clusterid=[],result=[],i=0;nelements-1>i;i++)result[i]={left:0,right:0,distance:0};for(j=0;nelements>j;j++)clusterid[j]=j;var r={};for(n=nelements;n>1;n--){morpheus.HCluster.findClosestPair(n,distmatrix,r),result[nelements-n].distance=r.distance;var is=r.ip,js=r.jp;for(j=0;js>j;j++)distmatrix[js][j]=Math.max(distmatrix[is][j],distmatrix[js][j]);for(j=js+1;is>j;j++)distmatrix[j][js]=Math.max(distmatrix[is][j],distmatrix[j][js]);for(j=is+1;n>j;j++)distmatrix[j][js]=Math.max(distmatrix[j][is],distmatrix[j][js]);for(j=0;is>j;j++)distmatrix[is][j]=distmatrix[n-1][j];for(j=is+1;n-1>j;j++)distmatrix[j][is]=distmatrix[n-1][j];result[nelements-n].left=clusterid[is],result[nelements-n].right=clusterid[js],clusterid[js]=n-nelements-1,clusterid[is]=clusterid[n-1]}return result},morpheus.HCluster=function(distmatrix,linkageAlgorithm){var nelements=distmatrix.length,nNodes=nelements-1;if(-1===nNodes){var root={id:0,height:0,index:0,minIndex:0,maxIndex:0,depth:0};return this.tree={maxHeight:0,rootNode:root,leafNodes:[],nLeafNodes:0},void(this.reorderedIndices=[0])}for(var tree=linkageAlgorithm(nelements,distmatrix),nodeorder=[],nodecounts=[],order=[],nodeID=[],i=0;nelements>i;i++)order[i]=i;for(var leftIds=[],rightIds=[],i=0;nNodes>i;i++){var order1,order2,counts1,counts2,ID1,ID2,min1=tree[i].left,min2=tree[i].right;if(nodeID[i]=nNodes+(i+2),0>min1){var index1=-min1-1;order1=nodeorder[index1],counts1=nodecounts[index1],ID1=nodeID[index1],tree[i].distance=Math.max(tree[i].distance,tree[index1].distance)}else order1=order[min1],counts1=1,ID1=min1;if(0>min2){var index2=-min2-1;order2=nodeorder[index2],counts2=nodecounts[index2],ID2=nodeID[index2],tree[i].distance=Math.max(tree[i].distance,tree[index2].distance)}else order2=order[min2],counts2=1,ID2=min2;leftIds[i]=ID1,rightIds[i]=ID2,nodecounts[i]=counts1+counts2,nodeorder[i]=(counts1*order1+counts2*order2)/(counts1+counts2)}for(var reorderedIndices=morpheus.HCluster.treeSort(nNodes,order,nodeorder,nodecounts,tree),idToIndex={},i=0,length=reorderedIndices.length;length>i;i++){var index=reorderedIndices[i];idToIndex[index]=i}for(var node,nodeIdToNode={},i=0,length=nodeID.length;length>i;i++){var id=nodeID[i],leftId=leftIds[i],lnode=nodeIdToNode[leftId];if(void 0===lnode){lnode={id:leftId};var index=idToIndex[leftId];lnode.index=index,lnode.minIndex=index,lnode.maxIndex=index,nodeIdToNode[lnode.id]=lnode}var rightId=rightIds[i],rnode=nodeIdToNode[rightId];if(void 0===rnode){rnode={id:rightId};var index=idToIndex[rightId];rnode.index=index,rnode.minIndex=index,rnode.maxIndex=index,nodeIdToNode[rnode.id]=rnode}node={id:id,children:[lnode,rnode],height:tree[i].distance,index:(rnode.index+lnode.index)/2},node.minIndex=Math.min(rnode.minIndex,lnode.minIndex),node.maxIndex=Math.max(rnode.maxIndex,lnode.maxIndex),lnode.parent=node,rnode.parent=node,nodeIdToNode[node.id]=node}this.reorderedIndices=reorderedIndices;for(var leafNodes=[],i=0,length=reorderedIndices.length;length>i;i++){var leaf=nodeIdToNode[reorderedIndices[i]];leaf.height=0,leafNodes.push(leaf)}morpheus.AbstractDendrogram.setNodeDepths(node),this.tree={maxHeight:node.height,rootNode:node,leafNodes:leafNodes,nLeafNodes:leafNodes.length}},morpheus.HCluster.findClosestPair=function(n,distmatrix,r){var i,j,temp,distance=distmatrix[1][0],ip=1,jp=0;for(i=1;n>i;i++)for(j=0;i>j;j++)temp=distmatrix[i][j],distance>temp&&(distance=temp,ip=i,jp=j);r.distance=distance,r.ip=ip,r.jp=jp},morpheus.HCluster.computeDistanceMatrix=function(dataset,distanceFunction){for(var matrix=[],n=dataset.getRowCount(),i=1;n>i;i++)matrix[i]=new Float32Array(i);if(null==distanceFunction)for(var i=1;n>i;i++)for(var j=0;i>j;j++)matrix[i][j]=dataset.getValue(i,j);else for(var list1=new morpheus.DatasetRowView(dataset),list2=new morpheus.DatasetRowView(dataset),i=1;n>i;i++){list1.setIndex(i);for(var j=0;i>j;j++)matrix[i][j]=distanceFunction(list1,list2.setIndex(j))}return matrix},morpheus.HCluster.treeSort=function(nNodes,order,nodeorder,nodecounts,tree){var i,nElements=nNodes+1,neworder=[],clusterids=[];for(i=0;nElements>i;i++)clusterids[i]=i,neworder[i]=0;for(i=0;nNodes>i;i++){var i1=tree[i].left,i2=tree[i].right,order1=0>i1?nodeorder[-i1-1]:order[i1],order2=0>i2?nodeorder[-i2-1]:order[i2],count1=0>i1?nodecounts[-i1-1]:1,count2=0>i2?nodecounts[-i2-1]:1;if(i2>i1){var j,increase=order2>order1?count1:count2;for(j=0;nElements>j;j++){var clusterid=clusterids[j];clusterid==i1&&order1>=order2&&(neworder[j]+=increase),clusterid==i2&&order2>order1&&(neworder[j]+=increase),clusterid!=i1&&clusterid!=i2||(clusterids[j]=-i-1)}}else{var j,increase=order2>=order1?count1:count2;for(j=0;nElements>j;j++){var clusterid=clusterids[j];clusterid==i1&&order1>order2&&(neworder[j]+=increase),clusterid==i2&&order2>=order1&&(neworder[j]+=increase),clusterid!=i1&&clusterid!=i2||(clusterids[j]=-i-1)}}}return morpheus.Util.indexSort(neworder,!0)},morpheus.HClusterGroupBy=function(dataset,groupByFieldNames,distanceFunction,linkageMethod){var vectors=(dataset.getRowMetadata(),morpheus.MetadataUtil.getVectors(dataset.getRowMetadata(),groupByFieldNames)),idToIndices=morpheus.VectorUtil.createValuesToIndicesMap(vectors),reorderedIndices=[],offset=0,root={id:-1,children:[],height:0},tree={maxHeight:0,rootNode:root,leafNodes:[],nLeafNodes:0};idToIndices.forEach(function(rowIndices,id){var hcl,originalIndicesForGroup=idToIndices.get(id),subset=morpheus.DatasetUtil.slicedView(dataset,originalIndicesForGroup,null),distanceMatrix=morpheus.HCluster.computeDistanceMatrix(subset,distanceFunction);hcl=new morpheus.HCluster(distanceMatrix,linkageMethod);for(var reorderedGroupIndices=hcl.reorderedIndices,i=0,rows=subset.getRowCount();rows>i;i++){var originalIndex=originalIndicesForGroup[reorderedGroupIndices[i]];reorderedIndices.push(originalIndex)}morpheus.AbstractDendrogram.dfs(hcl.tree.rootNode,function(node){return node.index+=offset,node.minIndex+=offset,node.maxIndex+=offset,node.id+=offset,!0}),0===hcl.tree.leafNodes.length?tree.leafNodes=tree.leafNodes.concat([hcl.tree.rootNode]):tree.leafNodes=tree.leafNodes.concat(hcl.tree.leafNodes),root.children.push(hcl.tree.rootNode),isNaN(hcl.tree.maxHeight)||(tree.maxHeight=Math.max(tree.maxHeight,hcl.tree.maxHeight)),offset+=subset.getRowCount()}),tree.nLeafNodes=tree.leafNodes.length,tree.rootNode.height=tree.maxHeight,this.tree=tree,this.reorderedIndices=reorderedIndices},morpheus.PermutationPValues=function(dataset,aIndices,bIndices,numPermutations,f){for(var numRows=dataset.getRowCount(),scores=new Float32Array(numRows),smoothPValues=!0,list1=new morpheus.DatasetRowView(new morpheus.SlicedDatasetView(dataset,null,aIndices)),list2=new morpheus.DatasetRowView(new morpheus.SlicedDatasetView(dataset,null,bIndices)),i=0;numRows>i;i++)scores[i]=f(list1.setIndex(i),list2.setIndex(i));dataset=new morpheus.SlicedDatasetView(dataset,null,aIndices.concat(bIndices));var rowSpecificPValues=new Float32Array(numRows),permuter=new morpheus.UnbalancedPermuter(aIndices.length,bIndices.length),permutationScore=new morpheus.TwoClassPermutationScore;permutationScore.init(dataset,f);for(var permutationIndex=0;numPermutations>permutationIndex;permutationIndex++){permutationScore.setPermutation(permuter.next());for(var i=0;numRows>i;i++){var permutedScore=permutationScore.getScore(i),score=scores[i];permutedScore>=score&&rowSpecificPValues[i]++}}for(var N=numPermutations,kArray=new Uint32Array(numRows),i=0;numRows>i;i++){var k=rowSpecificPValues[i];kArray[i]=k;var p;p=smoothPValues?(k+1)/(N+2):k/N;var oneMinusP=1-p;if(p>oneMinusP&&(p=oneMinusP),p*=2,0===p){for(var val=dataset.getValue(i,0),flat=!0,j=1,cols=dataset.getColumnCount();cols>j&♭j++)dataset.getValue(i,j)!=val&&(flat=!1);flat&&(p=1)}rowSpecificPValues[i]=p}this.rowSpecificPValues=rowSpecificPValues,this.k=kArray,this.fdr=morpheus.FDR_BH(rowSpecificPValues),this.scores=scores},morpheus.PermutationPValues.prototype={getBonferroni:function(index){return Math.min(this.rowSpecificPValues[index]*this.numRows,1)}},morpheus.UnbalancedPermuter=function(numClassZero,numClassOne){function getRandomIntInclusive(min,max){return Math.floor(Math.random()*(max-min+1))+min}for(var assignments=new Uint32Array(numClassZero+numClassOne),indices=new Uint32Array(numClassZero+numClassOne),i=0;i=1;i--){var j=getRandomIntInclusive(0,i),tmp=indices[j];indices[j]=indices[i],indices[i]=tmp}for(var i=0;n>i;i++)assignments[i]=0;for(var i=0;numClassOne>i;i++)assignments[indices[i]]=1;return assignments}},morpheus.TwoClassPermutationScore=function(){this.classZeroView=null,this.classOneView=null},morpheus.TwoClassPermutationScore.prototype={getScore:function(index){return this.classZeroView.setIndex(index),this.classOneView.setIndex(index),this.f(this.classZeroView,this.classOneView)},init:function(dataset,f){this.dataset=dataset,this.classZeroView=new morpheus.DatasetRowView(dataset),this.classOneView=new morpheus.DatasetRowView(dataset),this.f=f},setPermutation:function(permutedAssignments){for(var zeroIndices=[],oneIndices=[],i=0,length=permutedAssignments.length;length>i;i++)0===permutedAssignments[i]?zeroIndices.push(i):oneIndices.push(i);this.classZeroView.setDataset(new morpheus.SlicedDatasetView(this.dataset,null,zeroIndices)),this.classOneView.setDataset(new morpheus.SlicedDatasetView(this.dataset,null,oneIndices))}},morpheus.Ranking=function(values){for(var ranks=[],i=0,length=values.length;length>i;i++)ranks.push({value:values[i],position:i});if(0===ranks.length)return[];ranks.sort(function(a,b){return a.valueranks[i-1].value?(pos=i+1,tiesTrace.length>1&&morpheus.Ranking.fillAverage(out,tiesTrace),tiesTrace=[],tiesTrace.push(ranks[i].position)):tiesTrace.push(ranks[i].position),out[ranks[i].position]=pos;return tiesTrace.length>1&&morpheus.Ranking.fillAverage(out,tiesTrace),out},morpheus.Ranking.fill=function(data,tiesTrace,value){for(var i=0,length=tiesTrace.length;length>i;i++)data[tiesTrace[i]]=value},morpheus.Ranking.fillAverage=function(ranks,tiesTrace){var c=ranks[tiesTrace[0]],length=tiesTrace.length;morpheus.Ranking.fill(ranks,tiesTrace,(2*c+length-1)/2)},morpheus.SingleLinkage=function(nelements,distmatrix){var i,j,k,nnodes=nelements-1,temp=[],index=[],vector=[],result=[];for(i=0;nelements>i;i++)result[i]={left:0,right:0,distance:0};for(i=0;nnodes>i;i++)vector[i]=i;for(i=0;nelements>i;i++){for(result[i].distance=Number.MAX_VALUE,j=0;i>j;j++)temp[j]=distmatrix[i][j];for(j=0;i>j;j++)k=vector[j],result[j].distance>=temp[j]?(result[j].distancej;j++)result[j].distance>=result[vector[j]].distance&&(vector[j]=i)}for(i=0;nnodes>i;i++)result[i].left=i;for(result.sort(function(node1,node2){var term1=node1.distance,term2=node2.distance;return term2>term1?-1:term1>term2?1:0}),i=0;nelements>i;i++)index[i]=i;for(i=0;nnodes>i;i++)j=result[i].left,k=vector[j],result[i].left=index[j],result[i].right=index[k],index[k]=-i-1;var result2=[];for(i=0;nelements-1>i;i++)result2[i]=result[i];return result2}; \ No newline at end of file +"undefined"==typeof morpheus&&(morpheus={}),morpheus.Util=function(){},morpheus.Util.URL="https://www.broadinstitute.org/cancer/software/morpheus/",morpheus.Util.RIGHT_ARROW=String.fromCharCode(8594),morpheus.Util.extend=function(c1,c2){for(var key in c2.prototype)key in c1.prototype||(c1.prototype[key]=c2.prototype[key])},morpheus.Util.viewPortSize=function(){return window.getComputedStyle(document.body,":before").content.replace(/"/g,"")},morpheus.Util.TRACKING_CODE_LOADED=!1,morpheus.Util.loadTrackingCode=function(){if("undefined"!=typeof window){if(morpheus.Util.TRACKING_CODE_LOADED)return;!function(i,s,o,g,r,a,m){i.GoogleAnalyticsObject=r,i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date,a=s.createElement(o),m=s.getElementsByTagName(o)[0],a.async=1,a.src=g,m.parentNode.insertBefore(a,m)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-53973555-1","auto","morpheus"),ga("morpheus.send","pageview"),morpheus.Util.TRACKING_CODE_LOADED=!0}},morpheus.Util.trackEvent=function(options){"undefined"!=typeof window&&(morpheus.Util.TRACKING_CODE_LOADED||morpheus.Util.loadTrackingCode(),morpheus.Util.TRACKING_CODE_LOADED&&ga("morpheus.send",{hitType:"event",eventCategory:options.eventCategory,eventAction:options.eventAction,eventLabel:options.eventLabel}))},morpheus.Util.trim=function(val){for(var len=val.length,st=0;len>st&&val[st]<=" ";)st++;for(;len>st&&val[len-1]<=" ";)len--;return st>0||leni;i++)if(array instanceof types[i])return!0;return!1},morpheus.Util.getWindowSearchObject=function(){var searchObject={},hashObject={};return window.location.search.length>0&&(searchObject=morpheus.Util.getQueryParams(window.location.search.substring(1))),window.location.hash.length>0&&(hashObject=morpheus.Util.getQueryParams(window.location.hash.substring(1))),_.extend(hashObject,searchObject)},morpheus.Util.getQueryParams=function(s){var params={};if(!s)return params;for(var search=unescape(s),keyValuePairs=search.split("&"),i=0;i0?scripts[0].src:""},morpheus.Util.forceDelete=function(obj){try{var _garbageCollector=function(){var ef=URL.createObjectURL(new Blob([""],{type:"text/javascript"})),w=new Worker(ef);return URL.revokeObjectURL(ef),w}();_garbageCollector.postMessage(obj,[obj])}catch(x){console.log("Unable to delete")}},morpheus.Util.getFileName=function(fileOrUrl){var name=fileOrUrl instanceof File?fileOrUrl.name:fileOrUrl;name=""+name;var slash=name.lastIndexOf("/");if(-1!==slash&&slashquestion+1){name=name.substring(0,question);for(var params=name.substring(question+1),keyValuePairs=decodeURIComponent(params).split("&"),i=0;ivalue?"0"+value:value},morpheus.Util.getExtension=function(name){var dotIndex=name.lastIndexOf(".");if(dotIndex>0){var suffix=name.substring(dotIndex+1).toLowerCase();if("txt"===suffix||"gz"===suffix){var newPath=name.substring(0,dotIndex),secondDotIndex=newPath.lastIndexOf(".");if(secondDotIndex>0){var secondSuffix=newPath.substring(secondDotIndex+1,newPath.length).toLowerCase();if("segtab"===secondSuffix||"seg"===secondSuffix||"maf"===secondSuffix||"gct"===secondSuffix||"txt"===secondSuffix||"gmt"===secondSuffix)return secondSuffix}}return suffix}return""},morpheus.Util.getBaseFileName=function(name){var dotIndex=name.lastIndexOf(".");if(dotIndex>0){var suffix=name.substring(dotIndex+1,name.length);return"gz"===suffix||"zip"===suffix||"bz2"===suffix?morpheus.Util.getBaseFileName(name.substring(0,dotIndex)):name.substring(0,dotIndex)}return name},morpheus.Util.seq=function(length){for(var array=[],i=0;length>i;i++)array.push(i);return array},morpheus.Util.sequ32=function(length){for(var array=new Uint32Array(length),i=0;length>i;i++)array[i]=i;return array},morpheus.Util.paramsToObject=function(hash){var search=hash?window.location.hash:window.location.search;if(search.length<=1)return{};search=unescape(search);for(var keyValuePairs=search.substring(1).split("&"),result={},i=0,length=keyValuePairs.length;length>i;i++){var pair=keyValuePairs[i].split("="),values=result[pair[0]];void 0===values&&(values=[],result[pair[0]]=values),values.push(pair[1])}return result},morpheus.Util.endsWith=function(string,suffix){return string.length>=suffix.length&&string.substr(string.length-suffix.length)===suffix},morpheus.Util.measureSvgText=function(text,classname){if(!text||0===text.length)return{height:0,width:0};var container=d3.select("body").append("svg");classname&&container.attr("class",classname),container.append("text").attr({x:-1e3,y:-1e3}).text(text);var bbox=container.node().getBBox();return container.remove(),{height:bbox.height,width:bbox.width}},morpheus.Util.IS_MAC=!1,"undefined"!=typeof navigator&&(morpheus.Util.IS_MAC=!!navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i)),morpheus.Util.hammer=function(el,recognizers){var hammer=new Hammer(el,{recognizers:[]});return-1!==_.indexOf(recognizers,"pan")?hammer.add(new Hammer.Pan({threshold:1,direction:Hammer.DIRECTION_ALL})):-1!==_.indexOf(recognizers,"panh")?hammer.add(new Hammer.Pan({threshold:1,direction:Hammer.DIRECTION_HORIZONTAL})):-1!==_.indexOf(recognizers,"panv")&&hammer.add(new Hammer.Pan({threshold:1,direction:Hammer.DIRECTION_VERTICAL})),-1!==_.indexOf(recognizers,"tap")&&hammer.add(new Hammer.Tap),-1!==_.indexOf(recognizers,"pinch")&&hammer.add(new Hammer.Pinch),-1!==_.indexOf(recognizers,"longpress")&&hammer.add(new Hammer.Press({event:"longpress",time:1e3})),-1!==_.indexOf(recognizers,"press")&&hammer.add(new Hammer.Press),hammer},morpheus.Util.autocompleteArrayMatcher=function(q,cb,array,fields,max){var filteredSet=new morpheus.Set,substrRegex=new RegExp("^"+q,"i");if(fields)for(var nfields=fields.length,i=0,n=array.length;n>i;i++){for(var item=array[i],j=0;nfields>j;j++){var field=fields[j],value=item[field];if(substrRegex.test(value)){filteredSet.add(value);break}}if(filteredSet.size()===max)break}else for(var i=0,n=array.length;n>i;i++){var value=array[i];if(substrRegex.test(value)&&filteredSet.add(value),filteredSet.size()===max)break}cb(filteredSet.values())},morpheus.Util.autosuggest=function(options){options=$.extend({},{multi:!0,delay:500,suggestWhenEmpty:!0},options),options.$el.on("keydown",function(event){event.keyCode===$.ui.keyCode.TAB&&$(this).data("ui-autocomplete").menu.active&&event.preventDefault()}).autocomplete({minLength:0,delay:options.delay,source:function(request,response){var terms=morpheus.Util.getAutocompleteTokens(request.term,{trim:!1,selectionStart:options.$el[0].selectionStart});void 0!==terms.selectionStartIndex&&-1!==terms.selectionStartIndex||(terms.selectionStartIndex=terms.length-1),(options.suggestWhenEmpty||terms.length>0)&&options.filter(terms,response)},focus:function(){return!1},select:function(event,ui){if(ui.item.skip)return!1;if(options.multi){var terms=morpheus.Util.getAutocompleteTokens(this.value,{trim:!1,selectionStart:options.$el[0].selectionStart}),value='"'!==ui.item.value[0]&&ui.item.value.indexOf(" ")>0?'"'+ui.item.value+'"':ui.item.value,show=ui.item.show;return 0===terms.length?terms.push(value):terms[-1===terms.selectionStartIndex||void 0===terms.selectionStartIndex?terms.length-1:terms.selectionStartIndex]=value,this.value=terms.join(" "),show&&setTimeout(function(){options.$el.autocomplete("search",options.$el.val())},20),options.select&&options.select(),!1}options.select&&options.select(),13===event.which&&event.stopImmediatePropagation()}});var instance=options.$el.autocomplete("instance");instance._renderItem=function(ul,item){return $('
  • ').html(item.render?item.render():item.label).appendTo(ul)},options.suggestWhenEmpty&&options.$el.on("focus",function(){options.$el.autocomplete("search",options.$el.val())}),options.$el.on("keyup",function(e){13===e.which?options.$el.autocomplete("close"):options.suggestWhenEmpty&&""===options.$el.val()&&options.$el.autocomplete("search","")})},morpheus.Util.getAutocompleteTokens=function(text,options){if(options=$.extend({},{trim:!0},options),options.trim&&(text=$.trim(text)),""===text)return[];for(var inQuote=!1,tokens=[],currentToken=[],i=0,n=text.length;n>i;i++){var c=text[i];'"'===c?(inQuote=!inQuote,currentToken.push(c)):" "!==c&&" "!==c||inQuote?currentToken.push(c):(tokens.push({s:currentToken.join(""),inSelectionStart:currentToken.inSelectionStart}),currentToken=[]),i===options.selectionStart-1&&(currentToken.inSelectionStart=!0)}tokens.push({s:currentToken.join(""),inSelectionStart:currentToken.inSelectionStart}),options.trim||inQuote||" "!==text[text.length-1]||tokens.push({s:" ",inSelectionStart:!1});for(var filteredTokens=[],selectionStartIndex=-1,i=0,ntokens=tokens.length;ntokens>i;i++){var token=tokens[i],s=token.s;(options.trim||ntokens-1>i)&&(s=$.trim(s)),""!==s&&(token.inSelectionStart&&(selectionStartIndex=filteredTokens.length),filteredTokens.push(s))}return filteredTokens.selectionStartIndex=selectionStartIndex,filteredTokens},morpheus.Util.autocomplete=function($el,filterFunction,selectCb,singleTerm,autoclose){$el.on("keydown",function(event){event.keyCode===$.ui.keyCode.TAB&&$(this).data("ui-autocomplete").menu.active&&event.preventDefault()}).autocomplete({minLength:1,delay:1200,source:function(request,response){var terms=morpheus.Util.getAutocompleteTokens(request.term);terms.length>0&&filterFunction(terms.pop(),response)},focus:function(){return!1},select:function(event,ui){if(!singleTerm){var terms=morpheus.Util.getAutocompleteTokens(this.value);terms.pop();var val=ui.item.value;return val.indexOf(" ")>0&&'"'!==val[0]&&(val='"'+val+'"'),terms.push(val),this.value=terms.join(" "),selectCb&&selectCb(),$(this).autocomplete("close"),!1}selectCb&&(selectCb(),$(this).autocomplete("close"))}}),$el.autocomplete("instance")._renderItem=function(ul,item){return $("
  • ").html(item.label).appendTo(ul)},autoclose&&$el.on("keyup",function(e){13===e.which&&$el.autocomplete("close")})},morpheus.Util.showDialog=function($el,title,options){var $dialog=$("
    ");$el.appendTo($dialog),$dialog.appendTo($(document.body)),options||(options={}),$dialog.dialog({width:670,height:590,title:title,close:function(event,ui){$dialog.remove(),options.close&&options.close()}})},morpheus.Util.sheetToArray=function(sheet,delim){for(var r=XLSX.utils.decode_range(sheet["!ref"]),rows=[],R=r.s.r;R<=r.e.r;++R){for(var row=[],C=r.s.c;C<=r.e.c;++C){var val=sheet[XLSX.utils.encode_cell({c:C,r:R})];if(val){var txt=String(XLSX.utils.format_cell(val));row.push(txt)}else row.push("")}rows.push(delim?row.join(delim):row)}return rows},morpheus.Util.linesToObjects=function(lines){for(var header=lines[0],array=[],nfields=header.length,i=1,length=lines.length;length>i;i++){for(var line=lines[i],obj={},f=0;nfields>f;f++){var value=line[f],field=header[f];obj[field]=value}array.push(obj)}return array},morpheus.Util.xlsxTo2dArray=function(data){var workbook=XLSX.read(data,{type:"binary",cellFormula:!1,cellHTML:!1}),sheetNames=workbook.SheetNames,worksheet=workbook.Sheets[sheetNames[0]],lines=morpheus.Util.sheetToArray(worksheet);return lines},morpheus.Util.xlsxTo1dArray=function(data){var workbook=XLSX.read(data,{type:"binary",cellFormula:!1,cellHTML:!1}),sheetNames=workbook.SheetNames,worksheet=workbook.Sheets[sheetNames[0]],lines=morpheus.Util.sheetToArray(worksheet," ");return lines},morpheus.Util.hashCode=function(val){var h=0;if(val.length>0)for(var i=0;i(None)'),_.each(values,function(val){html.push('")}),html.join("")},morpheus.Util.rankIndexArray=function(index){for(var rank=[],n=index.length,j=0;n>j;j++)rank[index[j]]=j+1;return rank},morpheus.Util.indexSort=function(array,ascending){var pairs=[];return array.forEach(function(value,index){pairs.push({value:value,index:index})}),morpheus.Util.indexSortPairs(pairs,ascending)},morpheus.Util.indexSortPairs=function(array,ascending){ascending?array.sort(function(a,b){return a.valuei;i++)if(!comparator(array1[i],array2[i]))return!1;return!0},morpheus.Util._intFormat="undefined"!=typeof d3?d3.format(",i"):function(d){return""+Math.round(d)},morpheus.Util.intFormat=function(n){return morpheus.Util._intFormat(n)},morpheus.Util._nf="undefined"!=typeof d3?d3.format(".4f"):function(d){return""+d},morpheus.Util.nf=function(n){var str=1>n&&n>-1&&void 0!==n.toPrecision?n.toPrecision(4):morpheus.Util._nf(n);return morpheus.Util.removeTrailingZerosInFraction(str)},morpheus.Util.createNumberFormat=function(nfractionDigits){var d3Formatter=d3.format("."+nfractionDigits+"f"),f=function(value){var str=d3Formatter(value);return morpheus.Util.removeTrailingZerosInFraction(str)};return f},morpheus.Util.formatObject=function(value){return _.isNumber(value)?morpheus.Util.nf(value):value},morpheus.Util.arrayToString=function(array,sep){for(var s=[],i=0,length=array.length;length>i;i++)s.push(morpheus.Util.formatObject(array[i]));return s.join(sep)},morpheus.Util.wrapNumber=function(value,object){var n=new Number(value);return n.toObject=function(){return object},n},morpheus.Util.toString=function(value){if(null==value)return"";if(_.isNumber(value))return morpheus.Util.nf(value);if(morpheus.Util.isArray(value)){for(var s=[],i=0,length=value.length;length>i;i++)s.push(morpheus.Util.formatObject(value[i]));return s.join(", ")}return""+value},morpheus.Util.removeTrailingZerosInFraction=function(str){var index=str.lastIndexOf(".");if(-1!==index){for(var len=str.length,zeros=len,i=len-1;i>index&&"0"==str[i];i--,zeros--);if(zeros===index+1)return str.substring(0,index);if(len>zeros)return str.substring(0,index)+str.substring(index,zeros)}return str},morpheus.Util.s=function(n){return 1===n?"":"s"},morpheus.Util.create2dArray=function(rows,columns){for(var array2d=[],i=0;rows>i;i++){for(var array=[],j=0;columns>j;j++)array[j]=NaN;array2d.push(array)}return array2d},morpheus.Util.escapeRegex=function(value){return value.replace(/[*]/g,".*").replace(/[-[\]{}()+?,\\^$|#\s]/g,"\\$&")},morpheus.Util.createSearchPredicates=function(options){options=$.extend({},{validateFieldNames:!0},options);var tokens=options.tokens;if(null==tokens)return[];var availableFields=options.fields,validateFieldNames=options.validateFieldNames,fieldSearchEnabled=!validateFieldNames||null!=availableFields&&availableFields.length>0,fieldRegExp=/\\:/g,predicates=[],defaultIsExactMatch="exact"===options.defaultMatchMode;return tokens.forEach(function(token){var field=null,semi=token.indexOf(":");if(semi>0)if(fieldSearchEnabled&&92!==token.charCodeAt(semi-1)){var possibleToken=$.trim(token.substring(semi+1)),possibleField=$.trim(token.substring(0,semi));possibleField.length>0&&'"'===possibleField[0]&&'"'===possibleField[possibleField.length-1]?possibleField=possibleField.substring(1,possibleField.length-1):possibleField.length>0&&'"'===possibleField[0]&&'"'===possibleToken[possibleToken.length-1]&&'"'!==possibleToken[0]&&(possibleField=possibleField.substring(1,possibleField.length),possibleToken='"'+possibleToken),validateFieldNames&&-1===availableFields.indexOf(possibleField)||(token=possibleToken,field=possibleField)}else token=token.replace(fieldRegExp,":");var isNot=!1;"-"===token[0]&&(token=token.substring(1),isNot=!0);for(var predicate,rangeIndex=-1,rangeToken=null,rangeIndicators=["..",">=",">","<=","<","="],i=0;i"===rangeToken){var val=parseFloat(token.substring(rangeIndex+1));isNaN(val)||(predicate=new morpheus.Util.GreaterThanPredicate(field,val))}else if(">="===rangeToken){var val=parseFloat(token.substring(rangeIndex+2));isNaN(val)||(predicate=new morpheus.Util.GreaterThanOrEqualPredicate(field,val))}else if("<"===rangeToken){var val=parseFloat(token.substring(rangeIndex+1));isNaN(val)||(predicate=new morpheus.Util.LessThanPredicate(field,val))}else if("<="===rangeToken){var val=parseFloat(token.substring(rangeIndex+2));isNaN(val)||(predicate=new morpheus.Util.LessThanOrEqualPredicate(field,val))}else if("="===rangeToken){var val=parseFloat(token.substring(rangeIndex+1));isNaN(val)||(predicate=new morpheus.Util.EqualsPredicate(field,val))}else predicate=defaultIsExactMatch?new morpheus.Util.ExactTermPredicate(field,token):new morpheus.Util.RegexPredicate(field,token);else'"'===token[0]&&'"'===token[token.length-1]?(token=token.substring(1,token.length-1),predicate=new morpheus.Util.ExactTermPredicate(field,token)):predicate=-1!==token.indexOf("*")?new morpheus.Util.RegexPredicate(field,token):defaultIsExactMatch?new morpheus.Util.ExactTermPredicate(field,token):new morpheus.Util.RegexPredicate(field,token);null!=predicate&&predicates.push(isNot?new morpheus.Util.NotPredicate(predicate):predicate)}),predicates},morpheus.Util.createRegExpStringToMatchText=function(text){var tokens=morpheus.Util.getAutocompleteTokens(text);if(0===tokens.length)return null;var regex=[];return _.each(tokens,function(token){'"'===token[0]&&'"'===token[token.length-1]?(token=token.substring(1,token.length-1),regex.push("^"+morpheus.Util.escapeRegex(token)+"$")):regex.push(morpheus.Util.escapeRegex(token))}),"("+regex.join("|")+")"},morpheus.Util.createRegExpToMatchText=function(text){var s=morpheus.Util.createRegExpStringToMatchText(text);return null==s?null:new RegExp(s,"i")},morpheus.Util.reorderArray=function(array,index){for(var newArray=[],i=0;i1?s.substring(1):""},morpheus.Util.splitLines=function(lines){for(var tab=new RegExp(" "),tokens=[],i=0,nlines=lines.length;nlines>i;i++){var line=lines[i];""!==line&&tokens.push(line.split(tab))}return tokens},morpheus.Util.readLines=function(fileOrUrl){var isFile=fileOrUrl instanceof File,isString="string"==typeof fileOrUrl||fileOrUrl instanceof String,name=morpheus.Util.getFileName(fileOrUrl),ext=morpheus.Util.getExtension(name),deferred=$.Deferred();if(isString)if("xlsx"===ext){var oReq=new XMLHttpRequest;oReq.open("GET",fileOrUrl,!0),oReq.responseType="arraybuffer",oReq.onload=function(oEvent){var arrayBuffer=oReq.response;if(!arrayBuffer)throw"not found";for(var data=new Uint8Array(arrayBuffer),arr=[],i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);var bstr=arr.join(""),lines=morpheus.Util.xlsxTo1dArray(bstr);deferred.resolve(lines)},oReq.send(null)}else $.ajax({url:fileOrUrl}).done(function(text,status,xhr){deferred.resolve(morpheus.Util.splitOnNewLine(text))});else if(isFile){var reader=new FileReader;reader.onload=function(event){deferred.resolve("xlsx"===ext?morpheus.Util.xlsxTo1dArray(event.target.result):morpheus.Util.splitOnNewLine(event.target.result))},"xlsx"===ext?reader.readAsBinaryString(fileOrUrl):reader.readAsText(fileOrUrl)}else deferred.resolve(fileOrUrl);return deferred},morpheus.Util.createValueToIndices=function(array,field){var map=new morpheus.Map;return _.each(array,function(item){var key=item[field],values=map.get(key);void 0===values&&(values=[],map.set(key,values)),values.push(item)}),map},morpheus.Util.splitOnNewLine=function(text,commentChar){var commentCharCode=void 0!==commentChar?commentChar.charCodeAt(0):void 0,lines=text.split(/\n/);if(1===lines.length){var tmp=text.split(/\r/);tmp.length>1&&(lines=tmp)}for(var rows=[],i=0,nlines=lines.length;nlines>i;i++){var line=lines[i].trim();""!==line&&(void 0!==commentCharCode?line.charCodeAt(0)!==commentCharCode&&rows.push(line):rows.push(line))}return rows},morpheus.Util.ContainsPredicate=function(field,text){this.field=field,text=text.toLowerCase(),this.text=text},morpheus.Util.ContainsPredicate.prototype={accept:function(value){return value.toLowerCase&&-1!==value.toLowerCase().indexOf(this.text)},getField:function(){return this.field},isNumber:function(){return!1},toString:function(){return"ContainsPredicate "+this.field+":"+this.text}},morpheus.Util.ExactTermPredicate=function(field,term){this.field=field,term=term.toLowerCase(),this.text=term},morpheus.Util.ExactTermPredicate.prototype={accept:function(value){return value.toLowerCase&&value.toLowerCase()===this.text},getField:function(){return this.field},isNumber:function(){return!1},toString:function(){return"ExactTermPredicate "+this.field+":"+this.text}},morpheus.Util.RegexPredicate=function(field,text){this.field=field,this.text=text,this.regex=new RegExp(morpheus.Util.escapeRegex(text),"i")},morpheus.Util.RegexPredicate.prototype={accept:function(value){return this.regex.test(value)},getField:function(){return this.field},isNumber:function(){return!1},toString:function(){return"RegexPredicate "+this.field+":"+this.regex}},morpheus.Util.NumberRangePredicate=function(field,min,max){this.field=field,this.min=min,this.max=max},morpheus.Util.NumberRangePredicate.prototype={accept:function(value){return value>=this.min&&value<=this.max},getField:function(){return this.field},isNumber:function(){return!0},toString:function(){return"NumberRangePredicate "+this.field+":"+this.min+"..."+this.max}},morpheus.Util.GreaterThanPredicate=function(field,val){this.field=field,this.val=val},morpheus.Util.GreaterThanPredicate.prototype={accept:function(value){return value>this.val},getField:function(){return this.field},isNumber:function(){return!0}},morpheus.Util.GreaterThanOrEqualPredicate=function(field,val){this.field=field,this.val=val},morpheus.Util.GreaterThanOrEqualPredicate.prototype={accept:function(value){return value>=this.val},getField:function(){return this.field},isNumber:function(){return!0}},morpheus.Util.LessThanPredicate=function(field,val){this.field=field,this.val=val},morpheus.Util.LessThanPredicate.prototype={accept:function(value){return valuen;n++)event=events[n],parts=event.split("."),baseEvent=parts[0],name=parts[1]||"",this.eventListeners[baseEvent]||(this.eventListeners[baseEvent]=[]),this.eventListeners[baseEvent].push({name:name,handler:handler});return this},trigger:function(eventType,evt){this.eventListeners||(this.eventListeners={}),evt||(evt={}),evt.type=eventType,evt.source||(evt.source=this);var events=this.eventListeners[eventType];if(events)for(var len=events.length,i=0;len>i;i++)events[i].handler.apply(this,[evt]);return this},off:function(evtStr,handler){this.eventListeners||(this.eventListeners={});var n,t,event,parts,baseEvent,name,events=(evtStr||"").split(" "),len=events.length;if(!evtStr)for(t in this.eventListeners)this._off(t,null,handler);for(n=0;len>n;n++)if(event=events[n],parts=event.split("."),baseEvent=parts[0],name=parts[1],baseEvent)this.eventListeners[baseEvent]&&this._off(baseEvent,name,handler);else for(t in this.eventListeners)this._off(t,name,handler);return this},_off:function(type,name,handler){var i,evtName,evtListeners=this.eventListeners[type];for(i=0;ii;i++)if(this.array[i]!==other[i])return!1;return!0},getArray:function(){return this.array}},morpheus.Map=function(){this.map={},this.n=0},morpheus.Map.prototype={toString:function(){var s=[];return this.forEach(function(value,key){s.length>0&&s.push(", "),s.push(key),s.push("="),s.push(value)}),s.join("")},keys:function(){var keys=[];for(var key in this.map){var pair=this.map[key];keys.push(pair.key)}return keys},size:function(){return this.n},equals:function(m){if(m.size()!==this.size())return!1;var ret=!0;try{this.forEach(function(value,key){if(value!==m.get(key))throw ret=!1,"break"})}catch(e){}return ret},setAll:function(map){var _this=this;map.forEach(function(value,key){_this.set(key,value)})},set:function(key,value){var skey="\x00"+key,previous=this.map[skey];void 0===previous&&this.n++,this.map[skey]={key:key,value:value}},forEach:function(callback){for(var key in this.map){var pair=this.map[key];callback(pair.value,pair.key)}},values:function(){var values=[];for(var key in this.map){var pair=this.map[key];values.push(pair.value)}return values},get:function(key){var skey="\x00"+key,pair=this.map[skey];return void 0!==pair?pair.value:void 0},clear:function(){this.map={},this.n=0},remove:function(key){var skey="\x00"+key,pair=this.map[skey];return void 0!==pair?(delete this.map[skey],this.n--,pair.value):void 0},has:function(key){var skey="\x00"+key;return void 0!==this.map[skey]}},morpheus.Set=function(){this._map=new morpheus.Map},morpheus.Set.prototype={toString:function(){var s=[];return this.forEach(function(key){s.length>0&&s.push(", "),s.push(key)}),s.join("")},size:function(){return this._map.size()},equals:function(m){return this._map.equals(m)},forEach:function(callback){this._map.forEach(function(value,key){callback(key)})},add:function(value){this._map.set(value,!0)},values:function(){var values=[];return this._map.forEach(function(value,key){values.push(key)}),values},clear:function(){this._map.clear()},remove:function(key){this._map.remove(key)},has:function(key){return this._map.has(key)}},morpheus.BufferedReader=function(buffer){if(this.buffer=buffer,this.bufferLength=buffer.length,this.index=0,"undefined"!=typeof TextDecoder){var textDecoder=new TextDecoder;this.decoder=function(buf,start,end){return textDecoder.decode(buf.subarray(start,end))}}else this.decoder=function(buf,start,end){for(var s="",i=start;end>i;i++)s+=String.fromCharCode(buffer[i]);return s}},morpheus.BufferedReader.prototype={readLine:function(){var index=this.index,bufferLength=this.bufferLength;if(index>=bufferLength)return null;for(var buffer=this.buffer,start=index,end=start;bufferLength>index;index++){var c=buffer[index];if(10===c||13===c){end=index,index===bufferLength-1||10!==buffer[index+1]&&13!==buffer[index+1]||index++,index++;break}}return this.index=index,start===end&&index===bufferLength?String(this.decoder(this.buffer,start,bufferLength)):String(this.decoder(this.buffer,start,end))}},morpheus.BufferedReader.getArrayBuffer=function(fileOrUrl,callback){var isString="string"==typeof fileOrUrl||fileOrUrl instanceof String;if(isString){var oReq=new XMLHttpRequest;oReq.open("GET",fileOrUrl,!0),oReq.responseType="arraybuffer",oReq.onload=function(oEvent){callback(null,oReq.response)},oReq.onerror=function(oEvent){callback(oEvent)},oReq.onreadystatechange=function(oEvent){4===oReq.readyState&&200!==oReq.status&&(oReq.onload=null,oReq.onerror=null,callback(404===oReq.status?new Error(fileOrUrl+" not found."):new Error("Unable to read "+fileOrUrl+".")))},oReq.send(null)}else{var reader=new FileReader;reader.onload=function(event){callback(null,event.target.result)},reader.onerror=function(event){callback(event)},reader.readAsArrayBuffer(fileOrUrl)}},morpheus.ClsReader=function(){},morpheus.ClsReader.prototype={read:function(lines){var regex=/[ ,]+/,header=lines[0].split(regex);if(header.length<3)throw new Error("Header line needs three numbers");var headerNumbers=[];try{for(var i=0;3>i;i++)headerNumbers[i]=parseInt($.trim(header[i]))}catch(e){throw new Error("Header line element "+i+" is not a number")}if(headerNumbers[0]<=0)throw new Error("Header line missing first number, number of data points");if(headerNumbers[1]<=0)throw new Error("Header line missing second number, number of classes");var numClasses=headerNumbers[1],classDefinitionLine=(headerNumbers[0],lines[1]);classDefinitionLine=classDefinitionLine.substring(classDefinitionLine.indexOf("#")+1);var classNames=$.trim(classDefinitionLine).split(regex);if(classNames.lengthi;i++)i>0&&pw.push(" "),pw.push(valueToIndex.get(vector.getValue(i)));return pw.push("\n"),pw.join("")}},morpheus.ContentRangeNetworkInputStream=function(url,options){ +this.options=options||{},this.url=url,this.bytePosition=0,this.chunkSize=options.chunkSize||10485760,this.bytesRead=0,this.fileSize=-1,this.read()},morpheus.ContentRangeNetworkInputStream.prototype={read:function(){var _this=this,oReq=new XMLHttpRequest;oReq.open("GET",this.url,!0),oReq.responseType="arraybuffer",oReq.onload=function(oEvent){var arrayBuffer=oReq.response,byteArray=new Uint8Array(arrayBuffer),contentRange=oReq.getResponseHeader("Content-Range"),index=contentRange.lastIndexOf("/");_this.fileSize=parseInt(contentRange.substring(index+1)),_this.bytePosition+=byteArray.length,_this.bytesRead+=byteArray.length,_this.options.bytes(byteArray),_this.bytesRead<_this.fileSize?_this.read():_this.options.complete()};var end=this.bytePosition+this.chunkSize-1;-1!==this.fileSize&&(end=Math.min(end,this.fileSize-1)),oReq.setRequestHeader("Range","bytes="+this.bytePosition+"-"+end),oReq.setRequestHeader("If-None-Match","webkit-no-cache"),oReq.onerror=function(){console.log("error")},oReq.send(null)}},morpheus.FetchNetworkInputStream=function(url,options){function pump(reader){return reader.read().then(function(result){if(result.done)return void options.complete();var chunk=result.value;return bytesRead+=chunk.byteLength,options.bytes(chunk),pump(reader)})}var bytesRead=0;fetch(url).then(function(res){return pump(res.body.getReader())})},morpheus.FileInputStream=function(file,options){var _this=this;this.options=options||{},this.reader=new FileReader,this.reader.onloadend=function(evt){if(evt.target.readyState===FileReader.DONE){var arrayBuffer=evt.target.result,byteArray=new Uint8Array(arrayBuffer);_this.bytePosition+=byteArray.length,_this.bytesRead+=byteArray.length,_this.options.bytes(byteArray),_this.bytesRead<_this.fileSize?_this.read():options.complete()}},this.file=file,this.bytePosition=0,this.chunkSize=options.chunkSize||10485760,this.bytesRead=0,this.fileSize=file.size,this.read()},morpheus.FileInputStream.prototype={read:function(){var end=this.bytePosition+this.chunkSize;end=Math.min(end,this.fileSize);var blob=this.file.slice(this.bytePosition,end);this.reader.readAsArrayBuffer(blob)}},morpheus.GctReader=function(){},morpheus.GctReader.prototype={getFormatName:function(){return"gct"},read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{callback(null,_this._read(name,new morpheus.BufferedReader(new Uint8Array(arrayBuffer))))}catch(x){x.stack&&console.log(x.stack),callback(x)}})},_read:function(datasetName,reader){var versionLine=$.trim(reader.readLine());if(""===versionLine)throw new Error("Missing version line");var tab=/\t/,dimensionsLine=reader.readLine();if(null==dimensionsLine)throw new Error("No dimensions specified");var columnNamesLine=reader.readLine();if(null==columnNamesLine)throw new Error("No column annotations");var version=2;"#1.2"===versionLine?version=2:"#1.3"===versionLine?version=3:console.log("Unknown version: assuming version 2");var dimensions=dimensionsLine.split(/[ \t]/),numRowAnnotations=1,numColumnAnnotations=0,nrows=parseInt(dimensions[0]),ncols=parseInt(dimensions[1]);if(3==version&&(numRowAnnotations=parseInt(dimensions[2]),numColumnAnnotations=parseInt(dimensions[3])),0>=nrows||0>=ncols)throw new Error("Number of rows and columns must be greater than 0.");var columnNamesArray=columnNamesLine.split(tab);if(2==version){var expectedColumns=ncols+2;if(columnNamesArray.length!==expectedColumns)throw new Error("Expected "+(expectedColumns-2)+" column names, but read "+(columnNamesArray.length-2)+" column names.")}var name=columnNamesArray[0],slashIndex=name.lastIndexOf("/"),columnIdFieldName="id",rowIdFieldName="id";-1!=slashIndex&&slashIndexj;j++){var index=j+numRowAnnotations+1,columnName=indexj;j++){var columnName=columnNamesArray[j+numRowAnnotations+1];columnIds.setValue(j,String(columnName))}var rowAnnotationVectors=[dataset.getRowMetadata().add(rowIdFieldName)];if(3===version)for(var j=0;numRowAnnotations>j;j++){var rowMetadataName=""===columnNamesArray[1]?"description":columnNamesArray[j+1];rowAnnotationVectors.push(dataset.getRowMetadata().add(rowMetadataName))}else rowAnnotationVectors.push(dataset.getRowMetadata().add(columnNamesArray[1]));var dataColumnStart=numRowAnnotations+1;if(numColumnAnnotations>0)for(var columnAnnotationIndex=0;numColumnAnnotations>columnAnnotationIndex;columnAnnotationIndex++)for(var tokens=reader.readLine().split(tab),metadataName=tokens[0],v=dataset.getColumnMetadata().add(metadataName),j=0;ncols>j;j++)v.setValue(j,String(tokens[j+dataColumnStart]));for(var nonEmptyDescriptionFound=!1,numRowAnnotationsPlusOne=numRowAnnotations+1,rowIndex=0,nrows=dataset.getRowCount();nrows>rowIndex;rowIndex++){var s=reader.readLine();if(null===s)throw new Error("Missing data rows.");var tokens=s.split(tab);if(2===version){rowAnnotationVectors[0].setValue(rowIndex,String(tokens[0]));var desc=tokens[1];nonEmptyDescriptionFound||(nonEmptyDescriptionFound=""!==desc),rowAnnotationVectors[1].setValue(rowIndex,String(desc))}else for(var rowAnnotationIndex=0;numRowAnnotationsPlusOne>rowAnnotationIndex;rowAnnotationIndex++){var rowMetadataValue=tokens[rowAnnotationIndex];rowAnnotationVectors[rowAnnotationIndex].setValue(rowIndex,String(rowMetadataValue))}for(var columnIndex=0;ncols>columnIndex;columnIndex++){var token=tokens[columnIndex+dataColumnStart];dataset.setValue(rowIndex,columnIndex,parseFloat(token))}}if(2!==version||nonEmptyDescriptionFound||dataset.getRowMetadata().remove(1),rowIndex!==nrows)throw new Error("Missing data rows");for(var i=1,count=dataset.getRowMetadata().getMetadataCount();count>i;i++)morpheus.VectorUtil.maybeConvertStringToNumber(dataset.getRowMetadata().get(i));for(var i=1,count=dataset.getColumnMetadata().getMetadataCount();count>i;i++)morpheus.VectorUtil.maybeConvertStringToNumber(dataset.getColumnMetadata().get(i));return dataset}},morpheus.GctWriter=function(){},morpheus.GctWriter.idFirst=function(model){for(var fields=["id","Id","pr_id"],idIndex=-1,i=0;ii;i++)i!==idIndex&&(order[j++]=i);return new morpheus.MetadataModelColumnView(model,order)}return model},morpheus.GctWriter.prototype={toString:function(value){return morpheus.Util.toString(value)},write:function(dataset){var pw=[],rowMetadata=morpheus.GctWriter.idFirst(dataset.getRowMetadata()),columnMetadata=morpheus.GctWriter.idFirst(dataset.getColumnMetadata());return this.writeHeader(rowMetadata,columnMetadata,pw),this.writeData(dataset,rowMetadata,pw),pw.join("")},writeData:function(dataset,rowMetadata,pw){for(var ncols=dataset.getColumnCount(),rowMetadataCount=rowMetadata.getMetadataCount(),i=0,rows=dataset.getRowCount();rows>i;i++){for(var rowMetadataIndex=0;rowMetadataCount>rowMetadataIndex;rowMetadataIndex++){rowMetadataIndex>0&&pw.push(" ");var value=rowMetadata.get(rowMetadataIndex).getValue(i);null!==value&&pw.push(this.toString(value))}for(var j=0;ncols>j;j++){pw.push(" ");var value=dataset.getValue(i,j);pw.push(morpheus.Util.nf(value))}pw.push("\n")}},writeHeader:function(rowMetadata,columnMetadata,pw){var rows=rowMetadata.getItemCount(),ncols=columnMetadata.getItemCount();pw.push("#1.3\n");var rowMetadataCount=rowMetadata.getMetadataCount();pw.push(rows+" "+ncols+" "+(rowMetadataCount-1)+" "+(columnMetadata.getMetadataCount()-1)),pw.push("\n");for(var i=0;rowMetadataCount>i;i++){i>0&&pw.push(" ");var name=rowMetadata.get(i).getName();0===i&&name!==columnMetadata.get(0).getName()&&(name=name+"/"+columnMetadata.get(0).getName()),pw.push(name)}for(var j=0;ncols>j;j++)pw.push(" "),pw.push(this.toString(columnMetadata.get(0).getValue(j)));pw.push("\n");for(var columnMetadataIndex=1,metadataSize=columnMetadata.getMetadataCount();metadataSize>columnMetadataIndex;columnMetadataIndex++){pw.push(columnMetadata.get(columnMetadataIndex).getName());for(var i=1;rowMetadataCount>i;i++)pw.push(" "),pw.push("na");for(var j=0;ncols>j;j++){pw.push(" ");var value=columnMetadata.get(columnMetadataIndex).getValue(j);null!=value&&pw.push(this.toString(value))}pw.push("\n")}}},morpheus.GctWriter12=function(){this.options={rowDescription:"Description",rowId:"id",columnId:"id"}},morpheus.GctWriter12.prototype={toString:function(value){return morpheus.Util.toString(value)},write:function(dataset){var pw=[],rows=dataset.getRowCount(),columns=dataset.getColumnCount(),version="#1.2";pw.push(version),pw.push("\n"),pw.push(rows+" "+columns),pw.push("\n");var rowMetadata=morpheus.GctWriter.idFirst(dataset.getRowMetadata()),columnMetadata=morpheus.GctWriter.idFirst(dataset.getColumnMetadata());pw.push("Name"),pw.push(" "),pw.push("Description");var columnIds=columnMetadata.getByName(this.options.columnId);columnIds||(columnIds=columnMetadata.get(0));for(var j=0;columns>j;j++)pw.push(" "),pw.push(this.toString(columnIds.getValue(j)));var rowIds=rowMetadata.get(this.options.rowId);rowIds||(rowIds=rowMetadata.get(0));var rowDescriptions=rowMetadata.getByName(this.options.rowDescription);null==rowDescriptions&&rowMetadata.getMetadataCount()>1&&(rowDescriptions=rowMetadata.get(1));for(var i=0;rows>i;i++){pw.push("\n"),pw.push(this.toString(rowIds.getValue(i))),pw.push(" ");var rowDescription=null!=rowDescriptions?rowDescriptions.getValue(i):null;null!=rowDescription&&pw.push(this.toString(rowDescription));for(var j=0;columns>j;j++)pw.push(" "),pw.push(morpheus.Util.nf(dataset.getValue(i,j)))}return pw.push("\n"),pw.join("")}},morpheus.GisticReader=function(){},morpheus.GisticReader.prototype={read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{callback(null,_this._read(name,new morpheus.BufferedReader(new Uint8Array(arrayBuffer))))}catch(x){x.stack&&console.log(x.stack),callback(x)}})},_read:function(datasetName,reader){for(var s,tab=/\t/,header=morpheus.Util.trim(reader.readLine()).split(tab),ncols=header.length-9,matrix=[],rowIds=[],qValues=[];null!==(s=reader.readLine());)if(s=morpheus.Util.trim(s),""!==s){var tokens=s.split(tab);if("Actual Copy Change Given"===tokens[8]){var array=new Float32Array(ncols);matrix.push(array),rowIds.push(String($.trim(tokens[1]))),qValues.push(parseFloat(tokens[5]));for(var j=9;ncols>=j;j++){var token=tokens[j];array[j-9]=parseFloat(token)}}}for(var dataset=new morpheus.Dataset({name:datasetName,rows:matrix.length,columns:ncols,array:matrix,dataType:"Float32"}),columnIds=dataset.getColumnMetadata().add("id"),j=0;ncols>j;j++)columnIds.setValue(j,String(header[j+9]));return dataset.getRowMetadata().add("id").array=rowIds,dataset.getRowMetadata().add("q_value").array=qValues,dataset}},morpheus.GmtDatasetReader=function(){},morpheus.GmtDatasetReader.prototype={getFormatName:function(){return"gmt"},read:function(fileOrUrl,callback){var name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{callback(null,morpheus.DatasetUtil.geneSetsToDataset(name,(new morpheus.GmtReader).read(new morpheus.BufferedReader(new Uint8Array(arrayBuffer)))))}catch(x){callback(x)}})}},morpheus.GmtReader=function(){},morpheus.GmtReader.prototype={read:function(reader){for(var s,sets=[],tab=/\t/;null!=(s=reader.readLine());)if(""!==s&&"#"!==s[0]){var tokens=s.split(tab),name=tokens[0].trim(),description=tokens.length>1?tokens[1].trim():"";"BLANK"===description&&(description="");for(var ids=[],i=2;ii;i++)s+=String.fromCharCode(buf[i]);return s};var inputStreamOptions={bytes:function(buf){_this.str+=_this.decoder(buf,0,buf.length);var split=morpheus.LineReader._split(_this.str);if(split.lines.length>0){for(var lines=split.lines,i=0,nlines=lines.length;nlines>i;i++){var line=lines[i];""!==line&&options.line(line)}_this.str=split.remainder}},complete:function(){options.complete()}};isString?new morpheus.FetchNetworkInputStream(fileOrUrl,inputStreamOptions):new morpheus.FileInputStream(fileOrUrl,inputStreamOptions)},morpheus.LineReader._split=function(str){for(var lines=[],start=0,length=str.length,i=0;length>i;i++){var c=str[i];if("\n"===c||"\r"===c){var end=i;length-1>i&&"\n"===str[i+1]&&i++,lines.push(str.substring(start,end)),start=i+1}}return{lines:lines,remainder:length>=start?str.substring(start,length):""}},morpheus.MafFileReader=function(){this.geneFilter=null},morpheus.MafFileReader.summarizeMutations=function(dataset){var v=dataset.getRowMetadata().add("mutation_summary");v.getProperties().set(morpheus.VectorKeys.FIELDS,["Synonymous","In Frame Indel","Other Non-Synonymous","Missense","Splice Site","Frame Shift","Nonsense"]),v.getProperties().set(morpheus.VectorKeys.DATA_TYPE,"[number]"),v.getProperties().set(morpheus.VectorKeys.RECOMPUTE_FUNCTION,!0),v.getProperties().set(morpheus.VectorKeys.FUNCTION,function(view){for(var bins=new Int8Array(7),i=0,size=view.size();size>i;i++){var value=view.getValue(i);value>0&&bins[value-1]++}return bins})},morpheus.MafFileReader.getField=function(fieldNames,fieldNameToIndex,options){options=$.extend({},{remove:!0,lc:!1},options);for(var name,index,i=0;ii;i++){var name=header[i].toLowerCase();headerToIndex[name]=i}for(var fields=["Hugo_Symbol","Chromosome","Start_position","Reference_Allele","Tumor_Seq_Allele2","Variant_Classification","Protein_Change","ccf_hat","tumor_f","i_tumor_f","Tumor_Sample_Barcode","tumor_name","Tumor_Sample_UUID"],fieldNameToIndex={},i=0,length=fields.length;length>i;i++){var index=headerToIndex[fields[i].toLowerCase()];void 0!==index&&(fieldNameToIndex[fields[i].toLowerCase()]=index)}var ccfColumnName,ccfColumnIndex,sampleField=morpheus.MafFileReader.getField(["Tumor_Sample_Barcode","tumor_name","Tumor_Sample_UUID"],fieldNameToIndex,{lc:!0,remove:!0}),sampleColumnName=sampleField.name,sampleIdColumnIndex=sampleField.index,tumorFractionField=morpheus.MafFileReader.getField(["ccf_hat","tumor_f","i_tumor_f"],fieldNameToIndex,{lc:!0,remove:!0});void 0!==tumorFractionField&&(ccfColumnName=tumorFractionField.name,ccfColumnIndex=tumorFractionField.index);var chromosomeColumn=fieldNameToIndex["Chromosome".toLowerCase()],startPositionColumn=fieldNameToIndex["Start_position".toLowerCase()],refAlleleColumn=fieldNameToIndex["Reference_Allele".toLowerCase()],tumorAllelColumn=fieldNameToIndex["Tumor_Seq_Allele2".toLowerCase()],proteinChangeColumn=fieldNameToIndex["Protein_Change".toLowerCase()],geneSymbolColumn=fieldNameToIndex["Hugo_Symbol".toLowerCase()],variantColumnIndex=headerToIndex["Variant_Classification".toLowerCase()];if(void 0===variantColumnIndex)throw new Error("Variant_Classification not found");fields=[];var geneFields=[];for(var key in fieldNameToIndex)key!==sampleColumnName&&key!==ccfColumnName&&geneFields.push(key),fields.push(key);for(var s,geneColumnIndices=geneFields.map(function(field){return fieldNameToIndex[field]}),geneSymbolToIndex=(geneColumnIndices.length,new morpheus.Map),sampleIdToIndex=new morpheus.Map,variantMatrix=[],ccfMatrix=[];null!==(s=reader.readLine());){var tokens=s.split(tab),sample=String(tokens[sampleIdColumnIndex]),columnIndex=sampleIdToIndex.get(sample);void 0===columnIndex&&(columnIndex=sampleIdToIndex.size(),sampleIdToIndex.set(sample,columnIndex));var gene=String(tokens[geneSymbolColumn]);if("Unknown"!==gene&&(null==this.geneFilter||this.geneFilter.has(tokens[geneSymbolColumn]))){var rowIndex=geneSymbolToIndex.get(gene);void 0===rowIndex&&(rowIndex=geneSymbolToIndex.size(),geneSymbolToIndex.set(gene,rowIndex));var value=String(tokens[variantColumnIndex]),variantCode=morpheus.MafFileReader.VARIANT_MAP.get(value);void 0===variantCode&&(variantCode=3);var variantObject={},Protein_Change=tokens[proteinChangeColumn];Protein_Change&&(variantObject.Protein=String(Protein_Change)),variantObject.__v=variantCode,variantObject.Variant=value,variantObject.Mutation=String(tokens[chromosomeColumn])+":"+String(tokens[startPositionColumn])+" "+String(tokens[refAlleleColumn])+" > "+String(tokens[tumorAllelColumn]);var wrappedVariant=morpheus.Util.wrapNumber(variantCode,variantObject),variantRow=variantMatrix[rowIndex];void 0===variantRow&&(variantRow=[],variantMatrix[rowIndex]=variantRow);var ccf=-1,priorCcf=-1;if(void 0!==ccfColumnIndex){var ccfRow=ccfMatrix[rowIndex];void 0===ccfRow&&(ccfRow=[],ccfMatrix[rowIndex]=ccfRow),ccf=parseFloat(tokens[ccfColumnIndex]),priorCcf=ccfRow[columnIndex]||-1}var priorValue=variantRow[columnIndex]||-1;variantCode>priorValue?(variantRow[columnIndex]=wrappedVariant,void 0!==ccfColumnIndex&&(ccfRow[columnIndex]=ccf)):variantCode===priorValue&&ccf>priorCcf&&(variantRow[columnIndex]=wrappedVariant,ccfRow[columnIndex]=ccf)}}var dataset=new morpheus.Dataset({name:datasetName,array:variantMatrix,dataType:"object",rows:geneSymbolToIndex.size(),columns:sampleIdToIndex.size()}),columnIds=dataset.getColumnMetadata().add("id");sampleIdToIndex.forEach(function(index,id){columnIds.setValue(index,id)});var rowIds=dataset.getRowMetadata().add("id");geneSymbolToIndex.forEach(function(index,id){rowIds.setValue(index,id)});for(var i=0,nrows=dataset.getRowCount(),ncols=dataset.getColumnCount();nrows>i;i++)for(var j=0;ncols>j;j++)void 0===variantMatrix[i][j]&&(variantMatrix[i][j]=0);if(void 0!==ccfColumnIndex&&dataset.addSeries({dataType:"object",name:"allelic_fraction",array:ccfMatrix}),this.geneFilter){for(var orderVector=dataset.getRowMetadata().add("order"),i=0,size=orderVector.size();size>i;i++){var gene=rowIds.getValue(i),order=this.geneFilter.get(gene);orderVector.setValue(i,order)}var project=new morpheus.Project(dataset);project.setRowSortKeys([new morpheus.SortKey("order",morpheus.SortKey.SortOrder.ASCENDING)],!0);var tmp=project.getSortedFilteredDataset();project=new morpheus.Project(tmp);var columnIndices=morpheus.Util.seq(tmp.getColumnCount());columnIndices.sort(function(a,b){for(var i=0,nrows=tmp.getRowCount();nrows>i;i++)for(var seriesIndex=0,nseries=tmp.getSeriesCount();nseries>seriesIndex;seriesIndex++){var f1=tmp.getValue(i,a,seriesIndex);isNaN(f1)&&(f1=Number.NEGATIVE_INFINITY),f1=f1.valueOf();var f2=tmp.getValue(i,b,seriesIndex);isNaN(f2)&&(f2=Number.NEGATIVE_INFINITY),f2=f2.valueOf();var returnVal=f1===f2?0:f2>f1?1:-1;if(0!==returnVal)return returnVal}return 0}),dataset=new morpheus.SlicedDatasetView(dataset,null,columnIndices)}return morpheus.MafFileReader.summarizeMutations(dataset),morpheus.MafFileReader.summarizeMutations(new morpheus.TransposedDatasetView(dataset)),dataset},read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{callback(null,_this._getGeneLevelDataset(name,new morpheus.BufferedReader(new Uint8Array(arrayBuffer))))}catch(err){callback(err)}})}},morpheus.SegTabReader=function(){this.regions=null},morpheus.SegTabReader.binByRegion=function(dataset,regions){var chromosomeVector=dataset.getRowMetadata().getByName("Chromosome"),startVector=dataset.getRowMetadata().getByName("Start_bp"),endVector=dataset.getRowMetadata().getByName("End_bp"),collapsedDataset=new morpheus.Dataset({name:dataset.getName(),rows:regions.length,columns:dataset.getColumnCount(),dataType:"Float32"});morpheus.DatasetUtil.fill(collapsedDataset,NaN);for(var regionIdVector=collapsedDataset.getRowMetadata().add("id"),newChromosomeVector=collapsedDataset.getRowMetadata().add("chromosome"),newStartVector=collapsedDataset.getRowMetadata().add("start"),newEndVector=collapsedDataset.getRowMetadata().add("end"),nsegmentsVector=collapsedDataset.getRowMetadata().add("nsegments"),nseries=dataset.getSeriesCount(),series=1;nseries>series;series++)collapsedDataset.addSeries({name:dataset.getName(series),dataType:"Float32"});var summarizeFunction=morpheus.Mean;collapsedDataset.setColumnMetadata(dataset.getColumnMetadata());for(var regionIndex=0;regionIndexi;i++){var chromosome=chromosomeVector.getValue(i),start=startVector.getValue(i),end=endVector.getValue(i);region.chromosome==chromosome&&start>=region.start&&end<=region.end&&rowIndices.push(i)}if(rowIndices.length>0)for(var slice=morpheus.DatasetUtil.slicedView(dataset,rowIndices,null),columnView=new morpheus.DatasetColumnView(slice),j=0;jseries;series++)columnView.setSeriesIndex(series),collapsedDataset.setValue(regionIndex,j,summarizeFunction(columnView),series)}nsegmentsVector.setValue(regionIndex,rowIndices.length),regionIdVector.setValue(regionIndex,region.id),newChromosomeVector.setValue(regionIndex,region.chromosome),newStartVector.setValue(regionIndex,region.start),newEndVector.setValue(regionIndex,region.end)}return collapsedDataset},morpheus.SegTabReader.prototype={getFormatName:function(){return"seg"},setRegions:function(regions){this.regions=regions},_read:function(datasetName,reader){for(var tab=/\t/,header=reader.readLine().split(tab),fieldNameToIndex={},i=0,length=header.length;length>i;i++){var name=header[i].toLowerCase();fieldNameToIndex[name]=i}var ccfColumnName,ccfColumnIndex,sampleField=morpheus.MafFileReader.getField(["pair_id","Tumor_Sample_Barcode","tumor_name","Tumor_Sample_UUID","Sample"],fieldNameToIndex,{remove:!1,lc:!0}),sampleIdColumnIndex=(sampleField.name,sampleField.index),tumorFractionField=morpheus.MafFileReader.getField(["ccf_hat","tumor_f","i_tumor_f"],fieldNameToIndex,{remove:!1,lc:!0});void 0!==tumorFractionField&&(ccfColumnName=tumorFractionField.name,ccfColumnIndex=tumorFractionField.index);for(var s,chromosomeColumn=fieldNameToIndex.Chromosome,startPositionColumn=morpheus.MafFileReader.getField(["Start_bp","Start"],fieldNameToIndex,{remove:!1,lc:!0}).index,endPositionColumn=morpheus.MafFileReader.getField(["End_bp","End"],fieldNameToIndex,{remove:!1,lc:!0}).index,valueField=morpheus.MafFileReader.getField(["tau","Segment_Mean"],fieldNameToIndex,{remove:!1,lc:!0}).index,matrix=[],ccfMatrix=[],sampleIdToIndex=new morpheus.Map,chromosomeStartEndToIndex=new morpheus.Map;null!==(s=reader.readLine());)if(""!==s){var tokens=s.split(tab),sample=String(tokens[sampleIdColumnIndex]),columnIndex=sampleIdToIndex.get(sample);void 0===columnIndex&&(columnIndex=sampleIdToIndex.size(),sampleIdToIndex.set(sample,columnIndex));var rowId=new morpheus.Identifier([String(tokens[chromosomeColumn]),String(tokens[startPositionColumn]),String(tokens[endPositionColumn])]),rowIndex=chromosomeStartEndToIndex.get(rowId);void 0===rowIndex&&(rowIndex=chromosomeStartEndToIndex.size(),chromosomeStartEndToIndex.set(rowId,rowIndex));var value=parseFloat(String(tokens[valueField]));value=isNaN(value)?value:morpheus.Log2(value)-1;var matrixRow=matrix[rowIndex];void 0===matrixRow&&(matrixRow=[],matrix[rowIndex]=matrixRow,void 0!==ccfColumnIndex&&(ccfMatrix[rowIndex]=[])),matrixRow[columnIndex]=value,void 0!==ccfColumnIndex&&(ccfMatrix[rowIndex][columnIndex]=parseFloat(tokens[ccfColumnIndex]))}var dataset=new morpheus.Dataset({name:datasetName,array:matrix,dataType:"object",rows:chromosomeStartEndToIndex.size(),columns:sampleIdToIndex.size()}),columnIds=dataset.getColumnMetadata().add("id");sampleIdToIndex.forEach(function(index,id){columnIds.setValue(index,id)});var chromosomeVector=dataset.getRowMetadata().add("Chromosome"),startVector=dataset.getRowMetadata().add("Start_bp"),endVector=dataset.getRowMetadata().add("End_bp");return chromosomeStartEndToIndex.forEach(function(index,id){chromosomeVector.setValue(index,id.getArray()[0]),startVector.setValue(index,id.getArray()[1]),endVector.setValue(index,id.getArray()[2])}),void 0!==ccfColumnIndex&&dataset.addSeries({dataType:"object",name:"ccf",array:ccfMatrix}),null!=this.regions&&this.regions.length>0&&(dataset=morpheus.SegTabReader.binByRegion(dataset,this.regions)),dataset},read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){err?callback(err):callback(null,_this._read(name,new morpheus.BufferedReader(new Uint8Array(arrayBuffer))))})}},morpheus.TcgaUtil=function(){},morpheus.TcgaUtil.DISEASE_STUDIES={LAML:"Acute Myeloid Leukemia",ACC:"Adrenocortical carcinoma",BLCA:"Bladder Urothelial Carcinoma",LGG:"Brain Lower Grade Glioma",BRCA:"Breast invasive carcinoma",CESC:"Cervical squamous cell carcinoma and endocervical adenocarcinoma",CHOL:"Cholangiocarcinoma",LCML:"Chronic Myelogenous Leukemia",COAD:"Colon adenocarcinoma",CNTL:"Controls",ESCA:"Esophageal carcinoma ",FPPP:"FFPE Pilot Phase II",GBM:"Glioblastoma multiforme",HNSC:"Head and Neck squamous cell carcinoma",KICH:"Kidney Chromophobe",KIRC:"Kidney renal clear cell carcinoma",KIRP:"Kidney renal papillary cell carcinoma",LIHC:"Liver hepatocellular carcinoma",LUAD:"Lung adenocarcinoma",LUSC:"Lung squamous cell carcinoma",DLBC:"Lymphoid Neoplasm Diffuse Large B-cell Lymphoma",MESO:"Mesothelioma",MISC:"Miscellaneous",OV:"Ovarian serous cystadenocarcinoma",PAAD:"Pancreatic adenocarcinoma",PCPG:"Pheochromocytoma and Paraganglioma",PRAD:"Prostate adenocarcinoma",READ:"Rectum adenocarcinoma",SARC:"Sarcoma",SKCM:"Skin Cutaneous Melanoma",STAD:"Stomach adenocarcinoma",TGCT:"Testicular Germ Cell Tumors",THYM:"Thymoma",THCA:"Thyroid carcinoma",UCS:"Uterine Carcinosarcoma",UCEC:"Uterine Corpus Endometrial Carcinoma",UVM:"Uveal Melanoma",KIPAN:"Pan-Kidney Cohort",COADREAD:"Colonrectal adenocarcinoma",GBMLGG:"Glioma",STES:"Stomach and Esophageal Carcinoma"},morpheus.TcgaUtil.SAMPLE_TYPES={"01":"Primary solid Tumor","02":"Recurrent Solid Tumor","03":"Primary Blood Derived Cancer - Peripheral Blood","04":"Recurrent Blood Derived Cancer - Bone Marrow","05":"Additional - New Primary","06":"Metastatic","07":"Additional Metastatic","08":"Human Tumor Original Cells","09":"Primary Blood Derived Cancer - Bone Marrow",10:"Blood Derived Normal",11:"Solid Tissue Normal",12:"Buccal Cell Normal",13:"EBV Immortalized Normal",14:"Bone Marrow Normal",20:"Control Analyte",40:"Recurrent Blood Derived Cancer - Peripheral Blood",50:"Cell Lines",60:"Primary Xenograft Tissue",61:"Cell Line Derived Xenograft Tissue"},morpheus.TcgaUtil.barcode=function(s){var sampleType,tokens=s.split("-"),id=tokens[2];return tokens.length>3?(sampleType=tokens[3],sampleType.length>2&&(sampleType=sampleType.substring(0,2)),sampleType=morpheus.TcgaUtil.SAMPLE_TYPES[sampleType]):sampleType=morpheus.TcgaUtil.SAMPLE_TYPES["01"],{id:id.toLowerCase(),sampleType:sampleType}},morpheus.TcgaUtil.getDataset=function(options){function setIdAndSampleType(dataset){for(var idVector=dataset.getColumnMetadata().get(0),participantId=dataset.getColumnMetadata().add("participant_id"),sampleType=dataset.getColumnMetadata().add("sample_type"),i=0,size=idVector.size();size>i;i++){var barcode=morpheus.TcgaUtil.barcode(idVector.getValue(i));void 0!==barcode.sampleType?(idVector.setValue(i,barcode.id+"-"+barcode.sampleType),sampleType.setValue(i,barcode.sampleType)):idVector.setValue(i,barcode.id),participantId.setValue(i,barcode.id)}}var promises=[],datasets=[],returnDeferred=$.Deferred();if(options.mrna){var mrna=$.Deferred();promises.push(mrna),(new morpheus.TxtReader).read(options.mrna,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),mrna.resolve()})}var sigGenesLines;if(options.mutation){var mutation=$.Deferred();promises.push(mutation),(new morpheus.MafFileReader).read(options.mutation,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),mutation.resolve()});var sigGenesAnnotation=morpheus.Util.readLines(options.sigGenes);sigGenesAnnotation.done(function(lines){sigGenesLines=lines}),promises.push(sigGenesAnnotation)}if(options.gistic){var gistic=$.Deferred();promises.push(gistic),(new morpheus.GisticReader).read(options.gistic,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),gistic.resolve()})}if(options.gisticGene){var gisticGene=$.Deferred();promises.push(gisticGene),new morpheus.TxtReader({dataColumnStart:3}).read(options.gisticGene,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),gisticGene.resolve()})}if(options.seg){var seg=$.Deferred();promises.push(seg),(new morpheus.SegTabReader).read(options.seg,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),seg.resolve()})}if(options.rppa){var rppa=$.Deferred();promises.push(rppa),(new morpheus.TxtReader).read(options.rppa,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset),setIdAndSampleType(dataset)),rppa.resolve()})}if(options.methylation){var methylation=$.Deferred();promises.push(methylation),new morpheus.TxtReader({}).read(options.methylation,function(err,dataset){err?console.log("Error reading file:"+err):(datasets.push(dataset), +setIdAndSampleType(dataset)),methylation.resolve()})}var mrnaClustPromise=morpheus.Util.readLines(options.mrnaClust);promises.push(mrnaClustPromise);var sampleIdToClusterId;mrnaClustPromise.done(function(lines){sampleIdToClusterId=new morpheus.Map;for(var lineNumber=0;-1!==lines[lineNumber].indexOf("SampleName");)lineNumber++;for(var tab=/\t/;lineNumbermaxColumns&&(maxColumns=datasets[i].getColumnCount(),maxIndex=i),"mutations_merged.maf"===datasets[i].getName()&&(maxColumns=Number.MAX_VALUE,maxIndex=i);var datasetIndices=[];datasetIndices.push(maxIndex);for(var i=0;ij;j++)clusterIdVector.setValue(j,sampleIdToClusterId.get(idVector.getValue(j)));if(options.mutation){var sourceToIndices=morpheus.VectorUtil.createValueToIndicesMap(datasetToReturn.getRowMetadata().getByName("Source")),mutationDataset=new morpheus.SlicedDatasetView(datasetToReturn,sourceToIndices.get("mutations_merged.maf"));(new morpheus.OpenFileTool).annotate(sigGenesLines,mutationDataset,!1,null,"id","gene",["q"]);var qVector=mutationDataset.getRowMetadata().getByName("q"),qValueVector=mutationDataset.getRowMetadata().getByName("q_value");null==qValueVector&&(qValueVector=mutationDataset.getRowMetadata().add("q_value"));for(var i=0,size=qValueVector.size();size>i;i++)qValueVector.setValue(i,qVector.getValue(i));mutationDataset.getRowMetadata().remove(morpheus.MetadataUtil.indexOf(mutationDataset.getRowMetadata(),"q"))}annotationDef&&annotationCallbacks.forEach(function(f){f(datasetToReturn)}),returnDeferred.resolve(datasetToReturn)}),returnDeferred},morpheus.TxtReader=function(options){this.options=$.extend({},{dataRowStart:1,dataColumnStart:1},options)},morpheus.TxtReader.prototype={read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{callback(null,_this._read(name,new morpheus.BufferedReader(new Uint8Array(arrayBuffer))))}catch(x){callback(x)}})},_read:function(datasetName,reader){var tab=/\t/,header=morpheus.Util.trim(reader.readLine()).split(tab);if(this.options.dataRowStart>1)for(var i=1;ii;i++)arrayOfRowArrays.push([]);for(;null!==(s=reader.readLine());)if(s=morpheus.Util.trim(s),""!==s){var array=new Float32Array(ncols);matrix.push(array);for(var tokens=s.split(tab),j=0;dataColumnStart>j;j++)arrayOfRowArrays[j].push(String(tokens[j]));for(var j=dataColumnStart;ncols>=j;j++){var token=tokens[j];array[j-dataColumnStart]=parseFloat(token)}}for(var dataset=new morpheus.Dataset({name:datasetName,rows:matrix.length,columns:ncols,array:matrix,dataType:"Float32"}),columnIds=dataset.getColumnMetadata().add("id"),i=0,j=dataColumnStart;ncols>i;i++,j++)columnIds.setValue(i,String(header[j]));var rowIdVector=dataset.getRowMetadata().add("id");rowIdVector.array=arrayOfRowArrays[0];for(var i=1;dataColumnStart>i;i++){var v=dataset.getRowMetadata().add(header[i]);v.array=arrayOfRowArrays[i]}return dataset}},morpheus.XlsxDatasetReader=function(){},morpheus.XlsxDatasetReader.prototype={read:function(fileOrUrl,callback){var _this=this,name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(fileOrUrl));morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,arrayBuffer){if(err)callback(err);else try{for(var data=new Uint8Array(arrayBuffer),arr=[],i=0;i!=data.length;++i)arr[i]=String.fromCharCode(data[i]);var bstr=arr.join("");callback(null,_this._read(name,bstr))}catch(x){callback(x)}})},_read:function(datasetName,bstr){for(var lines=morpheus.Util.xlsxTo2dArray(bstr),nrows=lines.length-1,header=lines[0],ncols=header.length-1,dataset=new morpheus.Dataset({name:datasetName,rows:nrows,columns:ncols}),columnIds=dataset.getColumnMetadata().add("id"),j=1;ncols>=j;j++)columnIds.setValue(j-1,header[j]);for(var rowIds=dataset.getRowMetadata().add("id"),i=1;i=j;j++){var token=tokens[j],value=parseFloat(token);dataset.setValue(i-1,j-1,value)}}return dataset}},morpheus.VectorAdapter=function(v){if(null==v)throw"vector is null";this.v=v},morpheus.VectorAdapter.prototype={setValue:function(i,value){this.v.setValue(i,value)},getValue:function(i){return this.v.getValue(i)},getProperties:function(){return this.v.getProperties()},size:function(){return this.v.size()},getName:function(){return this.v.getName()},setName:function(name){this.v.setName(name)}},morpheus.AbstractDataset=function(name,rows,columns){this.seriesNames=[name],this.seriesArrays=[],this.seriesDataTypes=[],this.rows=rows,this.columns=columns,this.rowMetadataModel=new morpheus.MetadataModel(rows),this.columnMetadataModel=new morpheus.MetadataModel(columns)},morpheus.AbstractDataset.prototype={setRowMetadata:function(metadata){this.rowMetadataModel=metadata},setColumnMetadata:function(metadata){this.columnMetadataModel=metadata},getName:function(seriesIndex){return this.seriesNames[seriesIndex||0]},setName:function(seriesIndex,name){this.seriesNames[seriesIndex||0]=name},getRowMetadata:function(){return this.rowMetadataModel},getColumnMetadata:function(){return this.columnMetadataModel},getRowCount:function(){return this.rows},getColumnCount:function(){return this.columns},getValue:function(rowIndex,columnIndex,seriesIndex){},setValue:function(rowIndex,columnIndex,value,seriesIndex){},addSeries:function(options){},getSeriesCount:function(){return this.seriesArrays.length},getDataType:function(rowIndex,seriesIndex){return this.seriesDataTypes[seriesIndex]},toString:function(){return this.getName()}},morpheus.SignalToNoise=function(list1,list2){var m1=morpheus.Mean(list1),m2=morpheus.Mean(list2),s1=Math.sqrt(morpheus.Variance(list1,m1)),s2=Math.sqrt(morpheus.Variance(list2,m2));return(m1-m2)/(s1+s2)},morpheus.SignalToNoise.toString=function(){return"Signal to noise"},morpheus.createSignalToNoiseAdjust=function(percent){percent=percent||.2;var f=function(list1,list2){var m1=morpheus.Mean(list1),m2=morpheus.Mean(list2),s1=Math.sqrt(morpheus.Variance(list1,m1)),s2=Math.sqrt(morpheus.Variance(list2,m2));return s1=morpheus.SignalToNoise.thresholdStandardDeviation(m1,s1,percent),s2=morpheus.SignalToNoise.thresholdStandardDeviation(m2,s2,percent),(m1-m2)/(s1+s2)};return f.toString=function(){return"Signal to noise (adjust standard deviation)"},f},morpheus.SignalToNoise.thresholdStandardDeviation=function(mean,standardDeviation,percent){var returnValue=standardDeviation,absMean=Math.abs(mean),minStdev=percent*absMean;return minStdev>standardDeviation&&(returnValue=minStdev),percent>returnValue&&(returnValue=percent),returnValue},morpheus.createContingencyTable=function(listOne,listTwo,groupingValue){(null==groupingValue||isNaN(groupingValue))&&(groupingValue=1);for(var aHit=0,aMiss=0,j=0,size=listOne.size();size>j;j++){var val=listOne.getValue(j);isNaN(val)||(val>=groupingValue?aHit++:aMiss++)}for(var bHit=0,bMiss=0,j=0,size=listTwo.size();size>j;j++){var val=listTwo.getValue(j);isNaN(val)||(val>=groupingValue?bHit++:bMiss++)}var N=aHit+aMiss+bHit+bMiss,K=aHit+bHit,n=aHit+aMiss,k=aHit,a=k,b=K-k,c=n-k,d=N+k-n-K;return[a,b,c,d]},morpheus.FisherExact=function(listOne,listTwo){var abcd=morpheus.createContingencyTable(listOne,listTwo,1);return morpheus.FisherExact.fisherTest(abcd[0],abcd[1],abcd[2],abcd[3])},morpheus.createFisherExact=function(groupingValue){var f=function(listOne,listTwo){var abcd=morpheus.createContingencyTable(listOne,listTwo,groupingValue);return morpheus.FisherExact.fisherTest(abcd[0],abcd[1],abcd[2],abcd[3])};return f},morpheus.FisherExact.phyper=function(a,b,c,d){return Math.exp(morpheus.FisherExact.logFactorial(a+b)+morpheus.FisherExact.logFactorial(c+d)+morpheus.FisherExact.logFactorial(a+c)+morpheus.FisherExact.logFactorial(b+d)-(morpheus.FisherExact.logFactorial(a)+morpheus.FisherExact.logFactorial(b)+morpheus.FisherExact.logFactorial(c)+morpheus.FisherExact.logFactorial(d)+morpheus.FisherExact.logFactorial(a+b+c+d)))},morpheus.FisherExact.logFactorials=[0,0,.6931471805599453,1.791759469228055,3.1780538303479458,4.787491742782046,6.579251212010101,8.525161361065415,10.60460290274525,12.801827480081469,15.104412573075516,17.502307845873887,19.987214495661885,22.552163853123425,25.19122118273868,27.89927138384089,30.671860106080672,33.50507345013689,36.39544520803305,39.339884187199495,42.335616460753485,45.38013889847691,48.47118135183523,51.60667556776438,54.78472939811232,58.00360522298052,61.261701761002,64.55753862700634,67.88974313718154,71.25703896716801],morpheus.FisherExact.logFactorial=function(k){if(k>=30){var C0=.9189385332046728,C1=.08333333333333333,C3=-.002777777777777778,C5=.0007936507936507937,C7=-.0005952380952380953,r=1/k,rr=r*r;return(k+.5)*Math.log(k)-k+C0+r*(C1+rr*(C3+rr*(C5+rr*C7)))}return morpheus.FisherExact.logFactorials[k]},morpheus.FisherExact.fisherTest=function(a,b,c,d){for(var p=morpheus.FisherExact.phyper(a,b,c,d),sum=p,_a=0,n=a+b+c+d;n>=_a;_a++){var _b=a+b-_a,_c=a+c-_a,_d=b+d-_b;if(_a!==a&&_b>=0&&_c>=0&&_d>=0){var _p=morpheus.FisherExact.phyper(_a,_b,_c,_d);p>=_p&&(sum+=_p)}}return Math.min(1,sum)},morpheus.FisherExact.toString=function(){return"Fisher Exact Test"},morpheus.FoldChange=function(list1,list2){var m1=morpheus.Mean(list1),m2=morpheus.Mean(list2);return m1/m2},morpheus.FoldChange.toString=function(){return"Fold Change"},morpheus.TTest=function(list1,list2){var m1=morpheus.Mean(list1),m2=morpheus.Mean(list2),s1=Math.sqrt(morpheus.Variance(list1,m1)),s2=Math.sqrt(morpheus.Variance(list2,m2)),n1=morpheus.CountNonNaN(list1),n2=morpheus.CountNonNaN(list2);return(m1-m2)/Math.sqrt(s1*s1/n1+s2*s2/n2)},morpheus.TTest.toString=function(){return"T-Test"},morpheus.Spearman=function(list1,list2){for(var flist1=[],flist2=[],i=0,n=list1.size();n>i;i++){var v1=list1.getValue(i),v2=list2.getValue(i);isNaN(v1)||isNaN(v2)||(flist1.push(v1),flist2.push(v2))}var rank1=morpheus.Ranking(flist1),rank2=morpheus.Ranking(flist2);return morpheus.Pearson(new morpheus.Vector("",rank1.length).setArray(rank1),new morpheus.Vector("",rank2.length).setArray(rank2))},morpheus.Spearman.toString=function(){return"Spearman rank correlation"},morpheus.WeightedMean=function(weights,values){for(var numerator=0,denom=0,i=0,size=values.size();size>i;i++){var value=values.getValue(i);if(!isNaN(value)){var weight=weights.getValue(i);isNaN(weight)||(numerator+=weight*value,denom+=weight)}}return 0==denom?NaN:numerator/denom},morpheus.WeightedMean.toString=function(){return"Weighted average"},morpheus.createOneMinusMatrixValues=function(dataset){var f=function(listOne,listTwo){return 1-dataset.getValue(listOne.getIndex(),listTwo.getIndex())};return f.toString=function(){return"One minus matrix values (for a precomputed similarity matrix)"},f},morpheus.Pearson=function(listOne,listTwo){for(var sumx=0,sumxx=0,sumy=0,sumyy=0,sumxy=0,N=0,i=0,size=listOne.size();size>i;i++){var x=listOne.getValue(i),y=listTwo.getValue(i);isNaN(x)||isNaN(y)||(sumx+=x,sumxx+=x*x,sumy+=y,sumyy+=y*y,sumxy+=x*y,N++)}var numr=sumxy-sumx*sumy/N,denr=Math.sqrt((sumxx-sumx*sumx/N)*(sumyy-sumy*sumy/N));return 0==denr?1:numr/denr},morpheus.Pearson.toString=function(){return"Pearson correlation"},morpheus.Jaccard=function(listOne,listTwo){for(var orCount=0,andCount=0,i=0,size=listOne.size();size>i;i++){var xval=listOne.getValue(i),yval=listTwo.getValue(i);if(!isNaN(xval)&&!isNaN(yval)){var x=xval>0,y=yval>0;x&&y?andCount++:(x||y)&&orCount++}}return 0===orCount?1:1-andCount/orCount},morpheus.Jaccard.toString=function(){return"Jaccard distance"},morpheus.Cosine=function(listOne,listTwo){for(var sumX2=0,sumY2=0,sumXY=0,i=0,size=listOne.size();size>i;i++){var x=listOne.getValue(i),y=listTwo.getValue(i);isNaN(x)||isNaN(y)||(sumX2+=x*x,sumY2+=y*y,sumXY+=x*y)}return sumXY/Math.sqrt(sumX2*sumY2)},morpheus.Cosine.toString=function(){return"Cosine similarity"},morpheus.Euclidean=function(x,y){for(var dist=0,i=0,size=x.size();size>i;++i){var x_i=x.getValue(i),y_i=y.getValue(i);isNaN(x_i)||isNaN(y_i)||(dist+=(x_i-y_i)*(x_i-y_i))}return Math.sqrt(dist)},morpheus.Euclidean.toString=function(){return"Euclidean distance"},morpheus.OneMinusFunction=function(f){var dist=function(x,y){return 1-f(x,y)};return dist.toString=function(){var s=f.toString();return"One minus "+s[0].toLowerCase()+s.substring(1)},dist},morpheus.Dataset=function(options){morpheus.AbstractDataset.call(this,options.name,options.rows,options.columns),null==options.dataType&&(options.dataType="Float32"),this.seriesArrays.push(options.array?options.array:morpheus.Dataset.createArray(options)),this.seriesDataTypes.push(options.dataType)},morpheus.Dataset.toJson=function(dataset,options){options=options||{};for(var data=[],i=0,nrows=dataset.getRowCount();nrows>i;i++){var row=[];data.push(row);for(var j=0,ncols=dataset.getColumnCount();ncols>j;j++)row[j]=dataset.getValue(i,j)}var vectorToJson=function(vector){for(var array=[],i=0,size=vector.size();size>i;i++)array[i]=vector.getValue(i);return{name:vector.getName(),array:array}},metadataToJson=function(metadata,fields){var filter,vectors=[];fields&&(filter=new morpheus.Set,fields.forEach(function(field){filter.add(field)}));for(var i=0,count=metadata.getMetadataCount();count>i;i++){var v=metadata.get(i);filter?filter.has(v.getName())&&vectors.push(vectorToJson(v)):vectors.push(vectorToJson(v))}return vectors};return{rows:dataset.getRowCount(),columns:dataset.getColumnCount(),seriesArrays:[data],seriesNames:[dataset.getName()],rowMetadataModel:{vectors:metadataToJson(dataset.getRowMetadata(),options.rowFields)},columnMetadataModel:{vectors:metadataToJson(dataset.getColumnMetadata(),options.columnFields)}}},morpheus.Dataset.fromJson=function(options){options.array=options.seriesArrays[0];var dataset=new morpheus.Dataset(options);return dataset.seriesNames=options.seriesNames,options.rowMetadataModel&&options.rowMetadataModel.vectors.forEach(function(v){var vector=new morpheus.Vector(v.name,dataset.getRowCount());vector.array=v.array,dataset.rowMetadataModel.vectors.push(vector)}),options.columnMetadataModel&&options.columnMetadataModel.vectors.forEach(function(v){var vector=new morpheus.Vector(v.name,dataset.getColumnCount());vector.array=v.array,dataset.columnMetadataModel.vectors.push(vector)}),dataset},morpheus.Dataset.createArray=function(options){var array=[];if(null==options.dataType||"Float32"===options.dataType)for(var i=0;ii;i++)for(var j=0,columns=dataset.getColumnCount();columns>j;j++){var d=dataset.getValue(i,j);isNaN(d)||(min=Math.min(min,d))}return min},morpheus.DatasetUtil.slicedView=function(dataset,rows,columns){return new morpheus.SlicedDatasetView(dataset,rows,columns)},morpheus.DatasetUtil.transposedView=function(dataset){return dataset instanceof morpheus.TransposedDatasetView?dataset.getDataset():new morpheus.TransposedDatasetView(dataset)},morpheus.DatasetUtil.max=function(dataset){for(var max=-Number.MAX_VALUE,i=0,rows=dataset.getRowCount();rows>i;i++)for(var j=0,columns=dataset.getColumnCount();columns>j;j++){var d=dataset.getValue(i,j);isNaN(d)||(max=Math.max(max,d))}return max},morpheus.DatasetUtil.getDatasetReader=function(ext,options){var datasetReader;return"maf"===ext?(datasetReader=new morpheus.MafFileReader,options&&options.mafGeneFilter&&datasetReader.setGeneFilter(options.mafGeneFilter)):"gct"===ext?datasetReader=new morpheus.GctReader:"gmt"===ext?datasetReader=new morpheus.GmtDatasetReader:"xlsx"===ext?datasetReader=new morpheus.XlsxDatasetReader:"segtab"===ext||"seg"===ext?(datasetReader=new morpheus.SegTabReader,options&&options.regions&&datasetReader.setRegions(options.regions)):datasetReader="txt"===ext||"tsv"===ext||"csv"===ext?new morpheus.TxtReader:new morpheus.GctReader,datasetReader},morpheus.DatasetUtil.readDatasetArray=function(options){var retDef=$.Deferred(),loadedDatasets=[],promises=[];return _.each(options.dataset,function(option,i){var p=option.dataset.file?morpheus.DatasetUtil.read(option.dataset.file,option.dataset.options):morpheus.DatasetUtil.read(option.dataset);p.index=i,p.done(function(dataset){loadedDatasets[this.index]=dataset}),p.fail(function(err){var message=["Error opening "+(option.dataset.file?morpheus.Util.getFileName(option.dataset.file):morpheus.Util.getFileName(option.dataset))+"."];err.message&&(message.push("
    Cause: "),message.push(err.message)),retDef.reject(message.join(""))}),promises.push(p)}),0===promises.length&&retDef.reject("No datasets specified."),$.when.apply($,promises).then(function(){var joined;if(loadedDatasets.length>1){joined=new morpheus.JoinedDataset(loadedDatasets[0],loadedDatasets[1],"id","id");for(var i=2;ii;i++)sourceVector.setValue(i,name)}retDef.resolve(joined)}),retDef},morpheus.DatasetUtil.annotate=function(options){var retDef=$.Deferred(),promises=[],functions=[],isColumns=options.isColumns;return _.each(options.annotations,function(ann){if(morpheus.Util.isArray(ann.file))functions.push(function(dataset){(new morpheus.OpenFileTool).annotate(ann.file,dataset,isColumns,null,ann.datasetField,ann.fileField,ann.include)});else{var result=morpheus.Util.readLines(ann.file),fileName=morpheus.Util.getFileName(ann.file),deferred=$.Deferred();promises.push(deferred),result.fail(function(message){deferred.reject(message)}),result.done(function(lines){if(morpheus.Util.endsWith(fileName,".gmt")){var sets=(new morpheus.GmtReader).parseLines(lines);functions.push(function(dataset){(new morpheus.OpenFileTool).annotate(null,dataset,isColumns,sets,ann.datasetField,ann.fileField)}),deferred.resolve()}else morpheus.Util.endsWith(fileName,".cls")?(functions.push(function(dataset){(new morpheus.OpenFileTool).annotateCls(null,dataset,fileName,isColumns,lines)}),deferred.resolve()):(functions.push(function(dataset){(new morpheus.OpenFileTool).annotate(lines,dataset,isColumns,null,ann.datasetField,ann.fileField,ann.include)}),deferred.resolve())})}}),$.when.apply($,promises).then(function(){retDef.resolve(functions)}),retDef},morpheus.DatasetUtil.read=function(fileOrUrl,options){var isFile=fileOrUrl instanceof File,isString=_.isString(fileOrUrl),ext=morpheus.Util.getExtension(morpheus.Util.getFileName(fileOrUrl)),datasetReader=morpheus.DatasetUtil.getDatasetReader(ext,options);if(isString||isFile){var deferred=$.Deferred();if(options&&options.background){var path=morpheus.Util.getScriptPath(),blob=new Blob(["self.onmessage = function(e) {importScripts(e.data.path);var ext = morpheus.Util.getExtension(morpheus.Util.getFileName(e.data.fileOrUrl));var datasetReader = morpheus.DatasetUtil.getDatasetReader(ext, e.data.options);datasetReader.read(e.data.fileOrUrl, function(err,dataset) { self.postMessage(dataset); });}"]),blobURL=window.URL.createObjectURL(blob),worker=new Worker(blobURL);worker.addEventListener("message",function(e){deferred.resolve(morpheus.Dataset.fromJson(e.data)),window.URL.revokeObjectURL(blobURL)},!1),worker.postMessage({path:path,fileOrUrl:fileOrUrl,options:options})}else datasetReader.read(fileOrUrl,function(err,dataset){err?deferred.reject(err):deferred.resolve(dataset)});var pr=deferred.promise();return pr.toString=function(){return""+fileOrUrl},pr}if("function"==typeof fileOrUrl.done)return fileOrUrl;var deferred=$.Deferred();return deferred.resolve(fileOrUrl),deferred.promise()},morpheus.DatasetUtil.toObjectArray=function(dataset,options){var columns=options.columns||[0],columnFields=options.columnFields||["value"];if(columnFields.length!==columns.length)throw"columns.length !== columnFields.length";var metadataFields=options.metadataFields,rowMetadata=dataset.getRowMetadata();metadataFields||(metadataFields=morpheus.MetadataUtil.getMetadataNames(rowMetadata));for(var vectors=morpheus.MetadataUtil.getVectors(rowMetadata,metadataFields),array=[],i=0;ii;i++){var v=metadata.get(i),name=v.getName(),mapped=names[name];mapped&&v.setName(mapped)}};fixNames(dataset.getRowMetadata()),fixNames(dataset.getColumnMetadata());var fix666=function(metadata){for(var i=0,count=metadata.getMetadataCount();count>i;i++){var v=metadata.get(i);if("Dose (µM)"==v.getName())for(var j=0,size=v.size();size>j;j++){var value=v.getValue(j);null!=value&&v.setValue(j,parseFloat(value))}for(var isNumber=!1,j=0,size=v.size();size>j;j++){var value=v.getValue(j);if(null!=value){isNumber=_.isNumber(value);break}}for(var newValue=isNumber||"Dose (µM)"==v.getName()?0:"",j=0,size=v.size();size>j;j++){var value=v.getValue(j);null!=value&&"-666"==value&&v.setValue(j,newValue)}}};fix666(dataset.getRowMetadata()),fix666(dataset.getColumnMetadata());var fixCommas=function(metadata){var regex=/(,)([^ ])/g;_.each(["Lineage","Histology"],function(name){var v=metadata.getByName(name);if(null!=v)for(var i=0,size=v.size();size>i;i++){var val=v.getValue(i);val&&v.setValue(i,val.replace(regex,", $2"))}})};fixCommas(dataset.getRowMetadata()),fixCommas(dataset.getColumnMetadata())},morpheus.DatasetUtil.geneSetsToDataset=function(name,sets){for(var uniqueIds=new morpheus.Map,i=0,length=sets.length;length>i;i++)for(var ids=sets[i].ids,j=0,nIds=ids.length;nIds>j;j++)uniqueIds.set(ids[j],1);for(var uniqueIdsArray=uniqueIds.keys(),dataset=new morpheus.Dataset({name:name,rows:uniqueIdsArray.length,columns:sets.length}),columnIds=dataset.getColumnMetadata().add("id"),i=0,length=sets.length;length>i;i++)columnIds.setValue(i,sets[i].name);for(var rowIds=dataset.getRowMetadata().add("id"),i=0,size=uniqueIdsArray.length;size>i;i++)rowIds.setValue(i,uniqueIdsArray[i]);for(var rowIdToIndex=morpheus.VectorUtil.createValueToIndexMap(rowIds),i=0,length=sets.length;length>i;i++)for(var ids=sets[i].ids,j=0,nIds=ids.length;nIds>j;j++)dataset.setValue(rowIdToIndex.get(ids[j]),i,1);return dataset},morpheus.DatasetUtil.DATASET_FILE_FORMATS='GCT 1.3, GCT 1.2, MAF, GMT, or a tab-delimited text file',morpheus.DatasetUtil.BASIC_DATASET_FILE_FORMATS='GCT 1.3, GCT 1.2, or a tab-delimited text file',morpheus.DatasetUtil.GCT_FILE_FORMAT='GCT 1.3',morpheus.DatasetUtil.ANNOTATION_FILE_FORMATS='an xlsx file, tab-delimited text file, or a GMT file',morpheus.DatasetUtil.DENDROGRAM_FILE_FORMATS='a Newick file',morpheus.DatasetUtil.OPEN_FILE_FORMATS='GCT 1.3, GCT 1.2, MAF, GMT, a tab-delimited text file, or a Newick file',morpheus.DatasetUtil.getRootDataset=function(dataset){for(;dataset.getDataset;)dataset=dataset.getDataset();return dataset},morpheus.DatasetUtil.getSeriesIndex=function(dataset,name){for(var i=0,nseries=dataset.getSeriesCount();nseries>i;i++)if(name===dataset.getName(i))return i;return-1},morpheus.DatasetUtil.getSeriesNames=function(dataset){for(var names=[],i=0,nseries=dataset.getSeriesCount();nseries>i;i++)names.push(dataset.getName(i));return names.sort(function(a,b){return a=a.toLowerCase(),b=b.toLowerCase(),b>a?-1:a===b?0:1}),names},morpheus.DatasetUtil.searchValues=function(dataset,text,cb){if(""!==text){var tokens=morpheus.Util.getAutocompleteTokens(text);if(0!=tokens.length){for(var seriesIndices=[],i=0,nrows=dataset.getRowCount();nrows>i;i++)for(var k=0,nseries=dataset.getSeriesCount();nseries>k;k++)"object"===dataset.getDataType(i,k)&&seriesIndices.push([i,k]);if(0!==seriesIndices.length){var _val;elementSearch:for(var k=0,nseries=seriesIndices.length;nseries>k;k++)for(var pair=seriesIndices[k],j=0,ncols=dataset.getColumnCount();ncols>j;j++){var element=dataset.getValue(pair[0],j,pair[1]);if(null!=element&&element.toObject){_val=element.toObject();break elementSearch}}for(var fields=null==_val?[]:_.keys(_val),predicates=morpheus.Util.createSearchPredicates({tokens:tokens,fields:fields}),npredicates=predicates.length,k=0,nseries=seriesIndices.length;nseries>k;k++)for(var pair=seriesIndices[k],j=0,ncols=dataset.getColumnCount();ncols>j;j++){var matches=!1,element=dataset.getValue(pair[0],j,pair[1]);if(element&&element.toObject)for(var object=element.toObject(),p=0;npredicates>p&&!matches;p++){var predicate=predicates[p],filterColumnName=predicate.getField();if(null!=filterColumnName){var value=object[filterColumnName];if(null!=value&&predicate.accept(value)){if(cb(value,pair[0],j)===!1)return;matches=!0;break}}else for(var name in object){var value=object[name];if(null!=value&&predicate.accept(value)){if(cb(value,pair[0],j)===!1)return;matches=!0;break}}}}}}}},morpheus.DatasetUtil.fill=function(dataset,value,seriesIndex){seriesIndex=seriesIndex||0;for(var i=0,nrows=dataset.getRowCount(),ncols=dataset.getColumnCount();nrows>i;i++)for(var j=0;ncols>j;j++)dataset.setValue(i,j,value,seriesIndex)},morpheus.DatasetUtil.shallowCopy=function(dataset){var rowMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getRowMetadata()),columnMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getColumnMetadata()); +return dataset.getRowMetadata=function(){return rowMetadataModel},dataset.getColumnMetadata=function(){return columnMetadataModel},dataset},morpheus.DatasetUtil.copy=function(dataset){for(var newDataset=new morpheus.Dataset({name:dataset.getName(),rows:dataset.getRowCount(),columns:dataset.getColumnCount(),dataType:"object"}),seriesIndex=0,nseries=dataset.getSeriesCount();nseries>seriesIndex;seriesIndex++){seriesIndex>0&&newDataset.addSeries({name:dataset.getName(seriesIndex),rows:dataset.getRowCount(),columns:dataset.getColumnCount(),dataType:"object"});for(var i=0,nrows=dataset.getRowCount(),ncols=dataset.getColumnCount();nrows>i;i++)for(var j=0;ncols>j;j++)newDataset.setValue(i,j,dataset.getValue(i,j,seriesIndex),seriesIndex)}var rowMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getRowMetadata()),columnMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getColumnMetadata());return newDataset.getRowMetadata=function(){return rowMetadataModel},newDataset.getColumnMetadata=function(){return columnMetadataModel},newDataset},morpheus.DatasetUtil.toString=function(dataset,value,seriesIndex){seriesIndex=seriesIndex||0;for(var s=[],i=0,nrows=dataset.getRowCount(),ncols=dataset.getColumnCount();nrows>i;i++){for(var j=0;ncols>j;j++)j>0&&s.push(", "),s.push(morpheus.Util.nf(dataset.getValue(i,j,seriesIndex)));s.push("\n")}return s.join("")},morpheus.DatasetUtil.getNonEmptyRows=function(dataset){for(var rowsToKeep=[],i=0,nrows=dataset.getRowCount();nrows>i;i++){for(var keep=!1,j=0,ncols=dataset.getColumnCount();ncols>j;j++){var value=dataset.getValue(i,j);if(!isNaN(value)){keep=!0;break}}keep&&rowsToKeep.push(i)}return rowsToKeep},morpheus.ElementSelectionModel=function(project){this.viewIndices=new morpheus.Set,this.project=project},morpheus.ElementSelectionModel.prototype={click:function(rowIndex,columnIndex,add){var id=new morpheus.Identifier([rowIndex,columnIndex]),isSelected=this.viewIndices.has(id);add?isSelected?this.viewIndices.remove(id):this.viewIndices.add(id):(this.viewIndices.clear(),isSelected||this.viewIndices.add(id)),this.trigger("selectionChanged")},setViewIndices:function(indices){this.viewIndices=indices,this.trigger("selectionChanged")},clear:function(){this.viewIndices=new morpheus.Set},getViewIndices:function(){return this.viewIndices},count:function(){return this.viewIndices.size()},toModelIndices:function(){var project=this.project,modelIndices=[];return this.viewIndices.forEach(function(id){modelIndices.push(project.convertViewRowIndexToModel(id.getArray()[0]),project.convertViewColumnIndexToModel(id.getArray()[1]))}),modelIndices},save:function(){this.modelIndices=this.toModelIndices()},restore:function(){var project=this.project;this.viewIndices=new morpheus.Set;for(var i=0,length=this.modelIndices.length;length>i;i++){var rowIndex=project.convertModelRowIndexToView(this.modelIndices[i][0]),columnIndex=project.convertModelColumnIndexToView(this.modelIndices[i][1]);-1!==rowIndex&&-1!==columnIndex&&this.viewIndices.add(new morpheus.Identifier([rowIndex,columnIndex]))}}},morpheus.Util.extend(morpheus.ElementSelectionModel,morpheus.Events),morpheus.CombinedFilter=function(isAndFilter){this.filters=[],this.isAndFilter=isAndFilter,this.enabledFilters=[],this.name="combined filter"},morpheus.CombinedFilter.prototype={shallowClone:function(){var f=new morpheus.CombinedFilter(this.isAndFilter);return f.filters=this.filters.slice(0),f},toString:function(){return this.name},setAnd:function(isAndFilter,notify){this.isAndFilter=isAndFilter,notify&&this.trigger("and",{})},isAnd:function(){return this.isAndFilter},equals:function(f){if(!(f instanceof morpheus.CombinedFilter))return!1;if(this.isAndFilter!==f.isAndFilter)return!1;if(this.filters.length!==f.filters.length)return!1;for(var i=0,length=this.filters.length;length>i;i++)if(!this.filters[i].equals(f.filters[i]))return!1;return!0},add:function(filter,notify){this.filters.push(filter),notify&&this.trigger("add",{filter:filter})},getFilters:function(){return this.filters},get:function(index){return this.filters[index]},indexOf:function(name,type){for(var i=0,length=this.filters.length;length>i;i++)if(this.filters[i].toString()===name&&(null==type?!0:this.filters[i]instanceof type))return i;return-1},remove:function(index,notify){this.filters.splice(index,1),notify&&this.trigger("remove",{index:index})},set:function(index,filter){this.filters[index]=filter},insert:function(index,filter){this.filters.splice(index,0,filter)},clear:function(){this.filters=[]},init:function(dataset){for(var i=0,nfilters=this.filters.length;nfilters>i;i++)this.filters[i].init&&this.filters[i].init(dataset);this.enabledFilters=this.filters.filter(function(filter){return filter.isEnabled()})},accept:function(index){var filters=this.enabledFilters;if(this.isAndFilter){for(var i=0,nfilters=filters.length;nfilters>i;i++)if(filters[i].accept(index)===!1)return!1;return!0}for(var i=0,nfilters=filters.length;nfilters>i;i++)if(filters[i].accept(index))return!0;return!1},isEnabled:function(){return this.enabledFilters.length>0}},morpheus.Util.extend(morpheus.CombinedFilter,morpheus.Events),morpheus.IndexFilter=function(acceptIndicesSet,name){this.acceptIndicesSet=acceptIndicesSet,this.name=name},morpheus.IndexFilter.prototype={enabled:!0,isEnabled:function(){return this.enabled},setAcceptIndicesSet:function(acceptIndicesSet){this.acceptIndicesSet=acceptIndicesSet},setEnabled:function(enabled){this.enabled=enabled},equals:function(filter){return filter instanceof morpheus.IndexFilter&&this.acceptIndicesSet.equals(filter.acceptIndicesSet)},init:function(dataset){},toString:function(){return this.name},accept:function(index){return this.acceptIndicesSet.has(index)}},morpheus.VectorFilter=function(set,maxSetSize,name){this.set=set,this.name=name,this.maxSetSize=maxSetSize},morpheus.VectorFilter.prototype={enabled:!0,isEnabled:function(){return this.enabled&&this.set.size()>0&&this.set.size()!==this.maxSetSize&&null!=this.vector},setEnabled:function(enabled){this.enabled=enabled},equals:function(filter){return filter instanceof morpheus.VectorFilter&&this.name===filter.name},init:function(dataset){this.vector=dataset.getRowMetadata().getByName(this.name)},toString:function(){return this.name},accept:function(index){return this.set.has(this.vector.getValue(index))}},morpheus.NotNullFilter=function(name){this.name=name},morpheus.NotNullFilter.prototype={enabled:!0,isEnabled:function(){return this.enabled&&null!=this.vector},setEnabled:function(enabled){this.enabled=enabled},equals:function(filter){return filter instanceof morpheus.NotNullFilter&&this.name===filter.name},init:function(dataset){this.vector=dataset.getRowMetadata().getByName(this.name)},toString:function(){return this.name},accept:function(index){return null!=this.vector.getValue(index)}},morpheus.RangeFilter=function(min,max,name){this.min=min,this.max=max,this.name=name},morpheus.RangeFilter.prototype={enabled:!0,isEnabled:function(){return this.enabled&&(!isNaN(this.min)||!isNaN(this.max))&&this.vector},setEnabled:function(enabled){this.enabled=enabled},setMin:function(value){this.min=isNaN(value)?-Number.MAX_VALUE:value},setMax:function(value){this.max=isNaN(value)?Number.MAX_VALUE:value},equals:function(filter){return filter instanceof morpheus.RangeFilter&&this.name===filter.name},init:function(dataset){this.vector=dataset.getRowMetadata().getByName(this.name)},toString:function(){return this.name},accept:function(index){var value=this.vector.getValue(index);return value>=this.min&&value<=this.max}},morpheus.TopNFilter=function(n,direction,name){this.n=n,this.direction=direction,this.name=name},morpheus.TopNFilter.TOP=0,morpheus.TopNFilter.BOTTOM=1,morpheus.TopNFilter.TOP_BOTTOM=2,morpheus.TopNFilter.prototype={enabled:!0,isEnabled:function(){return this.enabled&&this.n>0&&this.vector},setEnabled:function(enabled){this.enabled=enabled},setN:function(value){this.n=value},setDirection:function(direction){this.direction=direction},equals:function(filter){return filter instanceof morpheus.TopNFilter&&this.name===filter.name&&this.n===filter.n&&this.direction===filter.direction},init:function(dataset){if(!this.vector){var vector=dataset.getRowMetadata().getByName(this.name);this.vector=vector;for(var set=new morpheus.Set,i=0,size=vector.size();size>i;i++){var value=vector.getValue(i);isNaN(value)||set.add(value)}var values=set.values();values.sort(function(a,b){return a===b?0:b>a?-1:1}),this.sortedValues=values}for(var topAndBottomIndices=[this.sortedValues.length-this.n,this.n-1],i=0;i=topAndBottomValues[0]}:this.direction===morpheus.TopNFilter.BOTTOM?this.f=function(val){return isNaN(val)?!1:val<=topAndBottomValues[1]}:this.f=function(val){return isNaN(val)?!1:val>=topAndBottomValues[0]||val<=topAndBottomValues[1]}},accept:function(index){return this.f(this.vector.getValue(index))},toString:function(){return this.name}},morpheus.AlwaysTrueFilter=function(){},morpheus.AlwaysTrueFilter.prototype={isEnabled:function(){return!1},setEnabled:function(enabled){},equals:function(filter){return filter instanceof morpheus.AlwaysTrueFilter},init:function(dataset){},toString:function(){return"AlwaysTrue"},accept:function(index){return!0}},morpheus.IndexMapper=function(project,isRows){this.project=project,this.isRows=isRows,this.sortKeys=[],this.modelToView=null,this.filteredModelIndices=null,this.filteredSortedModelIndices=null,this.filter=new morpheus.CombinedFilter(!0),this._filter(),this._sort()},morpheus.IndexMapper.prototype={convertModelIndexToView:function(modelIndex){var index=this.modelToView.get(modelIndex);return void 0!==index?index:-1},convertViewIndexToModel:function(viewIndex){return viewIndex=0?this.filteredSortedModelIndices[viewIndex]:-1},convertToView:function(){return this.filteredSortedModelIndices},setFilter:function(filter){this.filter=filter,this._filter(),this._sort()},_filter:function(){var filteredModelIndices,filter=this.filter,dataset=this.getFullDataset();if(null!=filter&&(filter.init(dataset),filter.isEnabled())){filteredModelIndices=[];for(var i=0,nrows=dataset.getRowCount();nrows>i;i++)filter.accept(i)&&filteredModelIndices.push(i)}this.filteredModelIndices=null!=filteredModelIndices?filteredModelIndices:morpheus.Util.seq(dataset.getRowCount())},_sort:function(){var sortKeys=this.sortKeys;if(sortKeys.length>0){for(var dataset=this.getFullDataset(),nkeys=sortKeys.length,i=0;nkeys>i;i++)sortKeys[i].init(dataset,this.filteredSortedModelIndices);this.filteredSortedModelIndices=this.filteredModelIndices.slice(0),this.filteredSortedModelIndices.sort(function(a,b){for(var i=0;nkeys>i;i++){var key=sortKeys[i],comparator=key.getComparator(),val1=key.getValue(a),val2=key.getValue(b),c=comparator(val1,val2);if(0!==c)return c}return 0})}else this.filteredSortedModelIndices=this.filteredModelIndices;for(var modelToView=new morpheus.Map,i=0,length=this.filteredSortedModelIndices.length;length>i;i++)modelToView.set(this.filteredSortedModelIndices[i],i);this.modelToView=modelToView},getFilter:function(){return this.filter},getViewCount:function(){return null==this.getFullDataset()?0:this.filteredSortedModelIndices.length},setSelectedModelIndices:function(selectedModelIndices){this.selectionModel.setSelectedModelIndices(selectedModelIndices)},setSortKeys:function(sortKeys){null==sortKeys&&(sortKeys=[]),this.sortKeys=sortKeys,this._sort()},getFullDataset:function(){var originalDataset=this.project.getFullDataset();return this.isRows?originalDataset:morpheus.DatasetUtil.transposedView(originalDataset)}},morpheus.JoinedDataset=function(dataset1,dataset2,dataset1Field,dataset2Field,sourceFieldName){if(sourceFieldName=sourceFieldName||"Source",this.dataset1Field=dataset1Field,this.dataset2Field=dataset2Field,null==dataset1)throw"dataset1 is null";if(null==dataset2)throw"dataset2 is null";if(dataset1Field){for(var v1=dataset1.getColumnMetadata().getByName(dataset1Field),dataset2ValueToIndex=morpheus.VectorUtil.createValueToIndexMap(dataset2.getColumnMetadata().getByName(dataset2Field)),dataset2ColumnIndices=[],i=0;ii;i++)sourceVector.setValue(i,name);if(!dataset2.getRowMetadata().getByName(sourceFieldName))for(var sourceVector=dataset2.getRowMetadata().add(sourceFieldName),name=dataset2.getName(),i=0,nrows=sourceVector.size();nrows>i;i++)sourceVector.setValue(i,name);for(var i=0,count=dataset1.getRowMetadata().getMetadataCount();count>i;i++){var name=dataset1.getRowMetadata().get(i).getName();null==dataset2.getRowMetadata().getByName(name)&&dataset2.getRowMetadata().add(name)}for(var i=0,count=dataset2.getRowMetadata().getMetadataCount();count>i;i++){var name=dataset2.getRowMetadata().get(i).getName();null==dataset1.getRowMetadata().getByName(name)&&dataset1.getRowMetadata().add(name)}for(var dataset2RowMetadataOrder=[],metadataInDifferentOrder=!1,i=0,count=dataset1.getRowMetadata().getMetadataCount();count>i;i++){var name=dataset1.getRowMetadata().get(i).getName(),index=morpheus.MetadataUtil.indexOf(dataset2.getRowMetadata(),name);dataset2RowMetadataOrder.push(index),index!==i&&(metadataInDifferentOrder=!0)}this.dataset1=dataset1,this.dataset2=dataset2;for(var maxSeriesCount=Math.max(this.dataset1.getSeriesCount(),this.dataset2.getSeriesCount()),i=this.dataset1.getSeriesCount();maxSeriesCount>i;i++)this.dataset1.addSeries({name:this.dataset2.getName(i)});for(var i=this.dataset2.getSeriesCount();maxSeriesCount>i;i++)this.dataset2.addSeries({name:this.dataset1.getName(i)});this.rowMetadata=new morpheus.JoinedMetadataModel(this.dataset1.getRowMetadata(),metadataInDifferentOrder?new morpheus.MetadataModelColumnView(this.dataset2.getRowMetadata(),dataset2RowMetadataOrder):this.dataset2.getRowMetadata())},morpheus.JoinedDataset.prototype={getName:function(seriesIndex){return this.dataset1.getName(seriesIndex)},setName:function(seriesIndex,name){this.dataset1.setName(seriesIndex,name)},getDatasets:function(){return[this.dataset1,this.dataset2]},getDataset1:function(){return this.dataset1},getRowMetadata:function(){return this.rowMetadata},getColumnMetadata:function(){return this.dataset1.getColumnMetadata()},getRowCount:function(){return this.dataset1.getRowCount()+this.dataset2.getRowCount()},getColumnCount:function(){return this.dataset1.getColumnCount()},getValue:function(i,j,seriesIndex){return ii;i++){var v1=this.m1.get(i),v2=this.m2.get(i),v=new morpheus.JoinedVector(v1,v2);v1.getProperties().forEach(function(val,key){morpheus.VectorKeys.COPY_IGNORE.has(key)||v.properties.set(key,val)}),v2.getProperties().forEach(function(val,key){morpheus.VectorKeys.COPY_IGNORE.has(key)||v.properties.set(key,val)}),this.vectors.push(v)}},morpheus.JoinedMetadataModel.prototype={add:function(name){var oldVector,index=morpheus.MetadataUtil.indexOf(this,name);-1!==index&&(oldVector=this.remove(index));var v=new morpheus.Vector(name,this.getItemCount());if(null!=oldVector){oldVector.getProperties().forEach(function(val,key){v.getProperties().set(key,val)});for(var i=0,size=oldVector.size();size>i;i++)v.setValue(i,oldVector.getValue(i))}return this.vectors.push(v),v},getItemCount:function(){return this.m1.getItemCount()+this.m2.getItemCount()},get:function(index){return this.vectors[index]},remove:function(index){return this.vectors.splice(index,1)[0]},getByName:function(name){for(var i=0,length=this.vectors.length;length>i;i++)if(name===this.vectors[i].getName())return this.vectors[i]},getMetadataCount:function(){return this.vectors.length}},morpheus.MetadataModel=function(itemCount){this.itemCount=itemCount,this.vectors=[]},morpheus.MetadataModel.prototype={add:function(name){var oldVector,index=morpheus.MetadataUtil.indexOf(this,name);-1!==index&&(oldVector=this.remove(index));var v=new morpheus.Vector(name,this.getItemCount());if(null!=oldVector)for(var i=0,size=oldVector.size();size>i;i++){var val=oldVector.getValue(i);v.setValue(i,val)}return this.vectors.push(v),v},getItemCount:function(){return this.itemCount},get:function(index){if(0>index||index>=this.vectors.length)throw"index "+index+" out of range";return this.vectors[index]},remove:function(index){if(0>index||index>=this.vectors.length)throw"index "+index+" out of range";return this.vectors.splice(index,1)[0]},getByName:function(name){var index=morpheus.MetadataUtil.indexOf(this,name);return-1!==index?this.get(index):void 0},getMetadataCount:function(){return this.vectors.length}},morpheus.MetadataModelAdapter=function(model){this.model=model},morpheus.MetadataModelAdapter.prototype={add:function(name){return this.model.add(name)},getItemCount:function(){return this.model.getItemCount()},get:function(index){return this.model.get(index)},remove:function(index){return this.model.remove(index)},getByName:function(name){return this.model.getByName(name)},getMetadataCount:function(){return this.model.getMetadataCount()}},morpheus.MetadataModelColumnView=function(model,indices){this.model=model,this.indices=indices},morpheus.MetadataModelColumnView.prototype={add:function(name){var vector=this.model.add(name),index=morpheus.MetadataUtil.indexOf(this.model,name);return this.indices.push(index),vector},getMetadataCount:function(){return this.indices.length},get:function(index){if(0>index||index>=this.indices.length)throw"index out of bounds";return this.model.get(this.indices[index])},remove:function(index){if(0>index||index>=this.indices.length)throw"index out of bounds";var v=this.model.remove(this.indices[index]);return this.indices.splice(index,1),v},getByName:function(name){var index=morpheus.MetadataUtil.indexOf(this,name);return-1!==index?this.get(index):void 0}},morpheus.Util.extend(morpheus.MetadataModelColumnView,morpheus.MetadataModelAdapter),morpheus.MetadataModelItemView=function(model,indices){this.model=model,this.indices=indices},morpheus.MetadataModelItemView.prototype={add:function(name){var v=this.model.add(name);return new morpheus.SlicedVector(v,this.indices)},getItemCount:function(){return this.indices.length},get:function(index){var v=this.model.get(index);if(void 0!==v)return new morpheus.SlicedVector(v,this.indices)},getByName:function(name){var v=this.model.getByName(name);if(void 0!==v)return new morpheus.SlicedVector(v,this.indices)},getMetadataCount:function(){return this.model.getMetadataCount()}},morpheus.Util.extend(morpheus.MetadataModelItemView,morpheus.MetadataModelAdapter),morpheus.MetadataUtil=function(){},morpheus.MetadataUtil.renameFields=function(dataset,options){_.each(options.rows,function(item){if(item.renameTo){var v=dataset.getRowMetadata().getByName(item.field);v&&v.setName(item.renameTo)}}),_.each(options.columns,function(item){if(item.renameTo){var v=dataset.getColumnMetadata().getByName(item.field);v&&v.setName(item.renameTo)}})},morpheus.MetadataUtil.search=function(options){var model=options.model,text=options.text,isColumns=options.isColumns;if(text=$.trim(text),""===text)return null;var tokens=morpheus.Util.getAutocompleteTokens(text);if(0==tokens.length)return null;var indexField=isColumns?"COLUMN":"ROW",fieldNames=morpheus.MetadataUtil.getMetadataNames(model);fieldNames.push(indexField);for(var predicates=morpheus.Util.createSearchPredicates({tokens:tokens,fields:fieldNames,defaultMatchMode:options.defaultMatchMode}),vectors=[],nameToVector=new morpheus.Map,j=0;ji;i++){for(var matches=!1,p=0;npredicates>p&&!matches;p++){var predicate=predicates[p],filterColumnName=predicate.getField();if(null!=filterColumnName){var value=null;if(filterColumnName===indexField){if(value=i+1,predicate.accept(value)){matches=!0;break}}else{var wrapper=nameToVector.get(filterColumnName);if(wrapper&&(value=wrapper.vector.getValue(i),null!=value))if(wrapper.isArray){for(var k=0;kj;j++){var wrapper=vectors[j],value=wrapper.vector.getValue(i);if(null!=value)if(wrapper.isArray){for(var k=0;k0?tokens[tokens.selectionStartIndex]:"";token=$.trim(token);try{if(""!==token){var field=null,semi=token.indexOf(":");if(semi>0&&92!==token.charCodeAt(semi-1)){var possibleField=$.trim(token.substring(0,semi));possibleField.length>0&&'"'===possibleField[0]&&'"'===possibleField[token.length-1]&&(possibleField=possibleField.substring(1,possibleField.length-1));var index=morpheus.MetadataUtil.indexOf(searchModel,possibleField);-1!==index&&(token=$.trim(token.substring(semi+1)),searchModel=new morpheus.MetadataModelColumnView(model,[index]))}var set=new morpheus.Set;regex=new RegExp("^"+morpheus.Util.escapeRegex(token),"i");for(var max=10,vectors=[],isArray=[],j=0;ji;i++)for(var j=0;nfields>j;j++){var v=vectors[j],val=v.getValue(i);if(null!=val)if(isArray[j])for(var k=0;k'+field+':'+val+""})})}}catch(x){}null==regex&&(regex=new RegExp(".*","i"));for(var j=0;j'+field+":",show:!0})}cb(matches)}},morpheus.MetadataUtil.getMetadataNames=function(metadataModel){for(var names=[],i=0,count=metadataModel.getMetadataCount();count>i;i++)names.push(metadataModel.get(i).getName(i));return names.sort(function(a,b){return a=a.toLowerCase(),b=b.toLowerCase(),b>a?-1:a===b?0:1}),names},morpheus.MetadataUtil.getVectors=function(metadataModel,names){var vectors=[];return names.forEach(function(name){var v=metadataModel.getByName(name);if(!v)throw name+" not found. Available fields are "+morpheus.MetadataUtil.getMetadataNames(metadataModel);vectors.push(v)}),vectors},morpheus.MetadataUtil.indexOf=function(metadataModel,name){for(var i=0,length=metadataModel.getMetadataCount();length>i;i++)if(name===metadataModel.get(i).getName())return i;return-1},morpheus.MetadataUtil.DEFAULT_HIDDEN_FIELDS=new morpheus.Set,["pr_analyte_id","pr_gene_title","pr_gene_id","pr_analyte_num","pr_bset_id","pr_lua_id","pr_pool_id","pr_is_bing","pr_is_inf","pr_is_lmark","qc_slope","qc_f_logp","qc_iqr","bead_batch","bead_revision","bead_set","det_mode","det_plate","det_well","mfc_plate_dim","mfc_plate_id","mfc_plate_name","mfc_plate_quad","mfc_plate_well","pert_dose_unit","pert_id_vendor","pert_mfc_desc","pert_mfc_id","pert_time","pert_time_unit","pert_univ_id","pert_vehicle","pool_id","rna_plate","rna_well","count_mean","count_cv","provenance_code"].forEach(function(name){morpheus.MetadataUtil.DEFAULT_HIDDEN_FIELDS.add(name)}),morpheus.MetadataUtil.DEFAULT_FIELDS_TO_SHOW={cell_id:!0,pert_idose:!0,pert_itime:!0,Id:!0,Name:!0,ID:!0,pr_id:!0,id:!0,pr_gene_symbol:!0,pr_is_lm:!0,is_lm:!0,pert_id:!0,pert_iname:!0,pert_desc:!0,Description:!0,gene_space:!0,pert_type:!0},morpheus.MetadataUtil.copy=function(src,dest){if(src.getItemCount()!=dest.getItemCount())throw"Item count not equal in source and destination. "+src.getItemCount()+" != "+dest.getItemCount();for(var itemCount=src.getItemCount(),metadataColumns=src.getMetadataCount(),j=0;metadataColumns>j;j++){var srcVector=src.get(j),destVector=dest.getByName(srcVector.getName());null==destVector&&(destVector=dest.add(srcVector.getName()));for(var i=0;itemCount>i;i++)destVector.setValue(i,srcVector.getValue(i))}},morpheus.MetadataUtil.addVectorIfNotExists=function(metadataModel,name){var v=metadataModel.getByName(name);return v||(v=metadataModel.add(name)),v},morpheus.MetadataUtil.getMatchingIndices=function(metadataModel,tokens){for(var indices={},itemIndex=0,nitems=metadataModel.getItemCount();nitems>itemIndex;itemIndex++){for(var matches=!1,metadataIndex=0,metadataCount=metadataModel.getMetadataCount();metadataCount>metadataIndex&&!matches;metadataIndex++)for(var vector=metadataModel.get(metadataModel.getColumnName(metadataIndex)),value=vector.getValue(itemIndex),i=0,length=tokens.length;length>i;i++)if(tokens[i]==value){matches=!0;break}matches&&(indices[itemIndex]=1)}return indices},morpheus.Positions=function(){this.spaces=void 0,this.defaultPositionFunction=function(index){return this.size*index},this.squishedPositionFunction=function(index){return this.positions[index]},this.positionFunction=this.defaultPositionFunction,this.squishedIndices={},this.isSquished=!1},morpheus.Positions.getBottom=function(rect,rowPositions){var bottom=rowPositions.getLength();return null!=rect&&(bottom=1+rowPositions.getIndex(rect.y+rect.height,!1),bottom=Math.max(0,bottom),bottom=Math.min(rowPositions.getLength(),bottom)),bottom},morpheus.Positions.getTop=function(rect,rowPositions){var top=0;return null!=rect&&(top=rowPositions.getIndex(rect.y,!1)-1,top=Math.max(0,top),top=Math.min(rowPositions.getLength(),top)),top},morpheus.Positions.getLeft=function(rect,columnPositions){var left=0;return null!=rect&&(left=columnPositions.getIndex(rect.x,!1)-1,left=Math.max(0,left),left=Math.min(columnPositions.getLength(),left)),left},morpheus.Positions.getRight=function(rect,columnPositions){var right=columnPositions.getLength();return null!=rect&&(right=1+columnPositions.getIndex(rect.x+rect.width,!1),right=Math.min(columnPositions.getLength(),right)),right},morpheus.Positions.prototype={length:0,size:13,squishFactor:.1,compress:!0,copy:function(){var copy=new morpheus.Positions;return this.spaces&&(copy.spaces=this.spaces.slice()),copy.compress=this.compress,copy.squishFactor=this.squishFactor,copy.size=this.size,copy.length=this.length,this.isSquished&&(copy.positionFunction=copy.squishedPositionFunction,copy.squishedIndices=_.clone(this.squishedIndices),copy.isSquished=!0),copy},getIndex:function(position,exact){return exact?this.binaryExactSearch(position):this.binaryInExactSearch(position)},getLength:function(){return this.length},getPosition:function(index){return this.positionFunction(index)+(void 0!==this.spaces?this.spaces[index]:0)},getItemSize:function(index){return this.squishedIndices[index]===!0?this.size*this.squishFactor:this.size},getSize:function(){return this.size},setSpaces:function(spaces){this.spaces=spaces},setLength:function(length){this.length=length},setSize:function(size){this.size=size,this.isSquished&&this.setSquishedIndices(this.squishedIndices)},setSquishedIndices:function(squishedIndices){if(null!=squishedIndices){var compress=this.compress;this.squishedIndices=squishedIndices;for(var positions=[],squishFactor=this.squishFactor,size=this.size,position=0,i=0,length=this.getLength();length>i;i++){var itemSize;squishedIndices[i]===!0?(positions.push(position),itemSize=size*squishFactor,position+=itemSize):(compress||(position=size*i),positions.push(position),position+=size)}this.isSquished=!0,this.positions=positions,this.positionFunction=this.squishedPositionFunction}else this.squishedIndices={},this.isSquished=!1,this.positionFunction=this.defaultPositionFunction},setSquishFactor:function(f){this.squishFactor!==f&&(this.squishFactor=f,this.isSquished&&this.setSquishedIndices(this.squishedIndices))},getSquishFactor:function(){return this.squishFactor},binaryExactSearch:function(position){for(var low=0,high=this.length-1;high>=low;){var mid=low+high>>1,midVal=this.getPosition(mid),size=this.getItemSize(mid);if(position>=midVal&&midVal+size>position)return mid;if(position>midVal)low=mid+1;else{if(!(midVal>position))return mid;high=mid-1}}return-1},binaryInExactSearch:function(position){var low=0,high=this.getLength()-1,maxIndex=this.getLength()-1; +if(position<=this.getPosition(0))return 0;for(;high>=low;){var mid=low+high>>1,midVal=this.getPosition(mid),size=this.getItemSize(mid),nextStart=maxIndex===mid?midVal+size:this.getPosition(mid+1);if(position>=midVal&&nextStart>position)return mid;if(position>midVal)low=mid+1;else{if(!(midVal>position))return mid;high=mid-1}}return low-1}},morpheus.Project=function(dataset){this.originalDataset=dataset,this.rowIndexMapper=new morpheus.IndexMapper(this,!0),this.columnIndexMapper=new morpheus.IndexMapper(this,!1),this.groupRows=[],this.groupColumns=[],this.rowColorModel=new morpheus.VectorColorModel,this.columnColorModel=new morpheus.VectorColorModel,this.rowShapeModel=new morpheus.VectorShapeModel,this.columnShapeModel=new morpheus.VectorShapeModel,this.hoverColumnIndex=-1,this.hoverRowIndex=-1,this.columnSelectionModel=new morpheus.SelectionModel(this,!0),this.rowSelectionModel=new morpheus.SelectionModel(this,!1),this.elementSelectionModel=new morpheus.ElementSelectionModel(this),morpheus.Project._recomputeCalculatedFields(this.originalDataset),morpheus.Project._recomputeCalculatedFields(new morpheus.TransposedDatasetView(this.originalDataset))},morpheus.Project.Events={DATASET_CHANGED:"datasetChanged",ROW_GROUP_BY_CHANGED:"rowGroupByChanged",COLUMN_GROUP_BY_CHANGED:"columnGroupByChanged",ROW_FILTER_CHANGED:"rowFilterChanged",COLUMN_FILTER_CHANGED:"columnFilterChanged",ROW_SORT_ORDER_CHANGED:"rowSortOrderChanged",COLUMN_SORT_ORDER_CHANGED:"columnSortOrderChanged",ROW_TRACK_REMOVED:"rowTrackRemoved",COLUMN_TRACK_REMOVED:"columnTrackRemoved"},morpheus.Project._recomputeCalculatedFields=function(dataset){for(var metadata=dataset.getRowMetadata(),view=new morpheus.DatasetRowView(dataset),metadataIndex=0,count=metadata.getMetadataCount();count>metadataIndex;metadataIndex++){var v=metadata.get(metadataIndex),f=v.getProperties().get(morpheus.VectorKeys.FUNCTION);if(null!=f&&v.getProperties().get(morpheus.VectorKeys.RECOMPUTE_FUNCTION))for(var i=0,nrows=dataset.getRowCount();nrows>i;i++)v.setValue(i,f(view.setIndex(i)))}},morpheus.Project.prototype={getHoverColumnIndex:function(){return this.hoverColumnIndex},setHoverColumnIndex:function(index){this.hoverColumnIndex=index},getHoverRowIndex:function(){return this.hoverRowIndex},setHoverRowIndex:function(index){this.hoverRowIndex=index},getRowColorModel:function(){return this.rowColorModel},getRowShapeModel:function(){return this.rowShapeModel},getColumnShapeModel:function(){return this.columnShapeModel},getGroupRows:function(){return this.groupRows},getGroupColumns:function(){return this.groupColumns},getFullDataset:function(){return this.originalDataset},getColumnSelectionModel:function(){return this.columnSelectionModel},getRowSelectionModel:function(){return this.rowSelectionModel},getFilteredSortedRowIndices:function(){return this.rowIndexMapper.convertToView()},getFilteredSortedColumnIndices:function(){return this.columnIndexMapper.convertToView()},getElementSelectionModel:function(){return this.elementSelectionModel},setFullDataset:function(dataset,notify){this.originalDataset=dataset,this.rowIndexMapper.setFilter(this.rowIndexMapper.getFilter()),this.columnIndexMapper.setFilter(this.columnIndexMapper.getFilter()),this.columnSelectionModel.clear(),this.rowSelectionModel.clear(),this.elementSelectionModel.clear(),notify&&this.trigger(morpheus.Project.Events.DATASET_CHANGED)},setGroupRows:function(keys,notify){this.groupRows=keys,notify&&this.trigger(morpheus.Project.Events.ROW_GROUP_BY_CHANGED)},setGroupColumns:function(keys,notify){this.groupColumns=keys,notify&&this.trigger(morpheus.Project.Events.COLUMN_GROUP_BY_CHANGED)},setRowFilter:function(filter,notify){this._saveSelection(!1),this.rowIndexMapper.setFilter(filter),this._restoreSelection(!1),notify&&this.trigger(morpheus.Project.Events.ROW_FILTER_CHANGED)},getRowFilter:function(){return this.rowIndexMapper.getFilter()},getColumnFilter:function(){return this.columnIndexMapper.getFilter()},setColumnFilter:function(filter,notify){this._saveSelection(!0),this.columnIndexMapper.setFilter(filter),this._restoreSelection(!0),notify&&this.trigger(morpheus.Project.Events.COLUMN_FILTER_CHANGED)},getColumnColorModel:function(){return this.columnColorModel},getSortedFilteredDataset:function(){return morpheus.DatasetUtil.slicedView(this.getFullDataset(),this.rowIndexMapper.convertToView(),this.columnIndexMapper.convertToView())},getSelectedDataset:function(options){options=$.extend({},{selectedRows:!0,selectedColumns:!0,emptyToAll:!0},options);var dataset=this.getSortedFilteredDataset(),rows=null;options.selectedRows&&(rows=this.rowSelectionModel.getViewIndices().values().sort(function(a,b){return a===b?0:b>a?-1:1}),0===rows.length&&options.emptyToAll&&(rows=null));var columns=null;return options.selectedColumns&&(columns=this.columnSelectionModel.getViewIndices().values().sort(function(a,b){return a===b?0:b>a?-1:1}),0===columns.length&&options.emptyToAll&&(columns=null)),morpheus.DatasetUtil.slicedView(dataset,rows,columns)},_saveSelection:function(isColumns){this.elementSelectionModel.save(),isColumns?this.columnSelectionModel.save():this.rowSelectionModel.save()},_restoreSelection:function(isColumns){isColumns?this.columnSelectionModel.restore():this.rowSelectionModel.restore(),this.elementSelectionModel.restore()},setRowSortKeys:function(keys,notify){this._saveSelection(!1),this.rowIndexMapper.setSortKeys(keys),this._restoreSelection(!1),notify&&this.trigger(morpheus.Project.Events.ROW_SORT_ORDER_CHANGED)},setColumnSortKeys:function(keys,notify){this._saveSelection(!0),this.columnIndexMapper.setSortKeys(keys),this._restoreSelection(!0),notify&&this.trigger(morpheus.Project.Events.COLUMN_SORT_ORDER_CHANGED)},getRowSortKeys:function(){return this.rowIndexMapper.sortKeys},getColumnSortKeys:function(){return this.columnIndexMapper.sortKeys},convertViewColumnIndexToModel:function(viewIndex){return this.columnIndexMapper.convertViewIndexToModel(viewIndex)},convertViewRowIndexToModel:function(viewIndex){return this.rowIndexMapper.convertViewIndexToModel(viewIndex)},convertModelRowIndexToView:function(modelIndex){return this.rowIndexMapper.convertModelIndexToView(modelIndex)},convertModelColumnIndexToView:function(modelIndex){return this.columnIndexMapper.convertModelIndexToView(modelIndex)},isColumnViewIndexSelected:function(index){return this.columnSelectionModel.isViewIndexSelected(index)},isRowViewIndexSelected:function(index){return this.rowSelectionModel.isViewIndexSelected(index)}},morpheus.Util.extend(morpheus.Project,morpheus.Events),morpheus.SelectionModel=function(project,isColumns){this.viewIndices=new morpheus.Set,this.project=project,this.isColumns=isColumns},morpheus.SelectionModel.prototype={setViewIndices:function(indices,notify){this.viewIndices=indices,notify&&this.trigger("selectionChanged")},isViewIndexSelected:function(index){return this.viewIndices.has(index)},clear:function(){this.viewIndices=new morpheus.Set},getViewIndices:function(){return this.viewIndices},count:function(){return this.viewIndices.size()},toModelIndices:function(){var project=this.project,f=this.isColumns?project.convertViewColumnIndexToModel:project.convertViewRowIndexToModel;f=_.bind(f,project);var modelIndices=[];return this.viewIndices.forEach(function(index){var m=f(index);modelIndices.push(m)}),modelIndices},save:function(){this.modelIndices=this.toModelIndices()},restore:function(){var project=this.project;this.viewIndices=new morpheus.Set;var f=this.isColumns?project.convertModelColumnIndexToView:project.convertModelRowIndexToView;f=_.bind(f,project);for(var i=0,length=this.modelIndices.length;length>i;i++){var index=f(this.modelIndices[i]);-1!==index&&this.viewIndices.add(index)}}},morpheus.Util.extend(morpheus.SelectionModel,morpheus.Events),morpheus.SlicedDatasetView=function(dataset,rowIndices,columnIndices){morpheus.DatasetAdapter.call(this,dataset),null==rowIndices&&(rowIndices=null),null==columnIndices&&(columnIndices=null),this.rowIndices=rowIndices,this.columnIndices=columnIndices},morpheus.SlicedDatasetView.prototype={getRowCount:function(){return null!==this.rowIndices?this.rowIndices.length:this.dataset.getRowCount()},getColumnCount:function(){return null!==this.columnIndices?this.columnIndices.length:this.dataset.getColumnCount()},getValue:function(i,j,seriesIndex){return this.dataset.getValue(null!==this.rowIndices?this.rowIndices[i]:i,null!==this.columnIndices?this.columnIndices[j]:j,seriesIndex)},setValue:function(i,j,value,seriesIndex){this.dataset.setValue(null!==this.rowIndices?this.rowIndices[i]:i,null!==this.columnIndices?this.columnIndices[j]:j,value,seriesIndex)},getRowMetadata:function(){return null!==this.rowIndices?new morpheus.MetadataModelItemView(this.dataset.getRowMetadata(),this.rowIndices):this.dataset.getRowMetadata()},getColumnMetadata:function(){return null!==this.columnIndices?new morpheus.MetadataModelItemView(this.dataset.getColumnMetadata(),this.columnIndices):this.dataset.getColumnMetadata()},toString:function(){return this.getName()}},morpheus.Util.extend(morpheus.SlicedDatasetView,morpheus.DatasetAdapter),morpheus.SlicedVector=function(v,indices){morpheus.VectorAdapter.call(this,v),this.indices=indices},morpheus.SlicedVector.prototype={setValue:function(i,value){this.v.setValue(this.indices[i],value)},getValue:function(i){return this.v.getValue(this.indices[i])},size:function(){return this.indices.length}},morpheus.Util.extend(morpheus.SlicedVector,morpheus.VectorAdapter),morpheus.MatchesOnTopSortKey=function(project,modelIndices,name){for(var modelHighlight={},viewIndices=[],i=0,length=modelIndices.length;length>i;i++)modelHighlight[modelIndices[i]]=!0,viewIndices.push(i);this.comparator=function(i1,i2){var a=void 0===modelHighlight[i1]?0:1,b=void 0==modelHighlight[i2]?0:1;return a>b?-1:a===b?0:1},this.indices=viewIndices,this.name=name},morpheus.MatchesOnTopSortKey.prototype={init:function(){},getSortOrder:function(){return 2},getComparator:function(){return this.comparator},getValue:function(i){return i},toString:function(i){return this.name}},morpheus.SortKey=function(field,sortOrder){"string"==typeof sortOrder&&(sortOrder=morpheus.SortKey.SortOrder[sortOrder.toUpperCase()]),this.field=field,this.sortOrder=sortOrder,this.v=null,this.c=null,this.setSortOrder(sortOrder)},morpheus.SortKey.SortOrder={ASCENDING:0,DESCENDING:1,UNSORTED:2,CUSTOM:3,TOP_N:4},morpheus.SortKey.ASCENDING_COMPARATOR=function(a,b){var aNaN=null==a||_.isNumber(a)&&isNaN(a),bNaN=null==b||_.isNumber(b)&&isNaN(b);return aNaN&&bNaN?0:aNaN?1:bNaN?-1:(a.toLowerCase&&(a=a.toLowerCase()),b.toLowerCase&&(b=b.toLowerCase()),a===b?0:b>a?-1:1)},morpheus.SortKey.DESCENDING_COMPARATOR=function(a,b){var aNaN=null==a||_.isNumber(a)&&isNaN(a),bNaN=null==b||_.isNumber(b)&&isNaN(b);return aNaN&&bNaN?0:aNaN?1:bNaN?-1:a===b?0:b>a?1:-1},morpheus.SortKey.NUMBER_ASCENDING_COMPARATOR=function(a,b){var aNaN=null==a||isNaN(a),bNaN=null==b||isNaN(b);return aNaN&&bNaN?0:aNaN?1:bNaN?-1:a===b?0:b>a?-1:1},morpheus.SortKey.NUMBER_DESCENDING_COMPARATOR=function(a,b){var aNaN=null==a||isNaN(a),bNaN=null==b||isNaN(b);return aNaN&&bNaN?0:aNaN?1:bNaN?-1:a===b?0:b>a?1:-1},morpheus.SortKey.STRING_ASCENDING_COMPARATOR=function(a,b){return a=null==a||void 0===a.toLowerCase?null:a.toLowerCase(),b=null==b||void 0===b.toLowerCase?null:b.toLowerCase(),a===b?0:b>a?-1:1},morpheus.SortKey.STRING_DESCENDING_COMPARATOR=function(a,b){return a=null==a||void 0===a.toLowerCase?null:a.toLowerCase(),b=null==b||void 0===b.toLowerCase?null:b.toLowerCase(),a===b?0:b>a?1:-1},morpheus.SortKey.ELEMENT_ASCENDING_COMPARATOR=function(obj1,obj2){var a=+obj1,b=+obj2,aNaN=isNaN(a),bNaN=isNaN(b);if(aNaN&&bNaN)return 0;if(aNaN)return 1;if(bNaN)return-1;if(a===b&&obj1.toObject&&obj2.toObject){var a1=obj1.toObject(),b1=obj2.toObject();for(var name in a1){a=a1[name],b=b1[name];var c=a===b?0:b>a?-1:1;if(0!==c)return c}}return a===b?0:b>a?-1:1},morpheus.SortKey.ELEMENT_DESCENDING_COMPARATOR=function(obj1,obj2){var a=+obj1,b=+obj2,aNaN=isNaN(a),bNaN=isNaN(b);if(aNaN&&bNaN)return 0;if(aNaN)return 1;if(bNaN)return-1;if(a===b&&obj1.toObject&&obj2.toObject){var a1=obj1.toObject(),b1=obj2.toObject();for(var name in a1){a=a1[name],b=b1[name];var c=a===b?0:b>a?1:-1;if(0!==c)return c}}return a===b?0:b>a?1:-1},morpheus.SortKey.BOX_PLOT_SUMMARY_FUNCTION=function(array){var box=array.box;if(null==box){var v=morpheus.VectorUtil.arrayAsVector(array);box=morpheus.BoxPlotItem(null!=this.indices?new morpheus.SlicedVector(v,this.indices):v),array.box=box}return box.q3},morpheus.SortKey.ARRAY_MAX_SUMMARY_FUNCTION=function(array){var a=0;if(null!=array){for(var aPosMax=-Number.MAX_VALUE,aNegMax=Number.MAX_VALUE,i=0,length=array.length;length>i;i++){var value=array[i];isNaN(value)||(value>=0?aPosMax=value>aPosMax?value:aPosMax:aNegMax=aNegMax>value?value:aNegMax)}aPosMax!==-Number.MAX_VALUE&&(a=aPosMax),aNegMax!==Number.MAX_VALUE&&(a=Math.abs(aNegMax)>a?aNegMax:a)}return a},morpheus.SortKey.ARRAY_ASCENDING_COMPARATOR=function(summary){return function(a,b){var aNaN=null==a,bNaN=null==b;return aNaN&&bNaN?0:aNaN?1:bNaN?-1:(a=summary(a),b=summary(b),aNaN=isNaN(a),bNaN=isNaN(b),aNaN&&bNaN?0:aNaN?1:bNaN?-1:a===b?0:b>a?-1:1)}},morpheus.SortKey.ARRAY_DESCENDING_COMPARATOR=function(summary){return function(a,b){var aNaN=null==a,bNaN=null==b;return aNaN&&bNaN?0:aNaN?1:bNaN?-1:(a=summary(a),b=summary(b),aNaN=isNaN(a),bNaN=isNaN(b),aNaN&&bNaN?0:aNaN?1:bNaN?-1:a===b?0:b>a?1:-1)}},morpheus.SortKey.reverseComparator=function(c){return function(a,b){return c(b,a)}},morpheus.SortKey.prototype={init:function(dataset){if(this.v=dataset.getRowMetadata().getByName(this.field),this.v){var dataType=morpheus.VectorUtil.getDataType(this.v);if("number"===dataType)this.c=this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.NUMBER_ASCENDING_COMPARATOR:morpheus.SortKey.NUMBER_DESCENDING_COMPARATOR;else if("[number]"===dataType){var summary=this.v.getProperties().get(morpheus.VectorKeys.ARRAY_SUMMARY_FUNCTION)||morpheus.SortKey.ARRAY_MAX_SUMMARY_FUNCTION;this.c=this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.ARRAY_ASCENDING_COMPARATOR(summary):morpheus.SortKey.ARRAY_DESCENDING_COMPARATOR(summary)}else this.c=this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.ASCENDING_COMPARATOR:morpheus.SortKey.DESCENDING_COMPARATOR}else this.v={},this.v.getValue=function(){return 0},this.c=this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.ASCENDING_COMPARATOR:morpheus.SortKey.DESCENDING_COMPARATOR},getComparator:function(){return this.c},getValue:function(i){return this.v.getValue(i)},setSortOrder:function(sortOrder){this.sortOrder=sortOrder},getSortOrder:function(){return this.sortOrder},toString:function(){return this.field}},morpheus.SortByValuesKey=function(modelIndices,sortOrder,isColumnSort){this.field="selection",this.bothCount=10,this.modelIndices=modelIndices,this.sortOrder=sortOrder,this.isColumnSort=isColumnSort,this.setSortOrder(sortOrder)},morpheus.SortByValuesKey.prototype={init:function(dataset,visibleModelIndices){if(this.dataset=morpheus.DatasetUtil.slicedView(dataset,null,this.modelIndices),this.rowView=new morpheus.DatasetRowView(this.dataset),this.summaryFunction=this.modelIndices.length>1?morpheus.Median:function(row){return row.getValue(0)},this.sortOrder===morpheus.SortKey.SortOrder.TOP_N){for(var pairs=[],missingIndices=[],i=0,nrows=visibleModelIndices.length;nrows>i;i++){var index=visibleModelIndices[i],value=this.summaryFunction(this.rowView.setIndex(index));isNaN(value)?missingIndices.push(index):pairs.push({index:index,value:value})}pairs.sort(function(a,b){return a.valuecounter;){for(var i=0;nInGroup>i&&ntop>topIndex;i++,topIndex++,counter++)modelIndexToValue[topPairs[topIndex].index]=counter;for(var indexCounterPairs=[],i=0;nInGroup>i&&bottomIndex>=0;i++,bottomIndex--,counter++)indexCounterPairs.push([bottomPairs[bottomIndex].index,counter]);for(var i=indexCounterPairs.length-1,j=0;i>=0;i--,j++){var item_i=indexCounterPairs[i],item_j=indexCounterPairs[j];modelIndexToValue[item_i[0]]=item_j[1]}}for(var i=0,length=missingIndices.length;length>i;i++,counter++)modelIndexToValue[missingIndices[i]]=counter;this.modelIndexToValue=modelIndexToValue}else delete this.modelIndexToValue},getComparator:function(){return this.c},getValue:function(i){return this.modelIndexToValue?this.modelIndexToValue[i]:this.summaryFunction(this.rowView.setIndex(i))},setSortOrder:function(sortOrder){"string"==typeof sortOrder&&(sortOrder=morpheus.SortKey.SortOrder[sortOrder.toUpperCase()]),this.sortOrder=sortOrder,this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?this.c=morpheus.SortKey.ELEMENT_ASCENDING_COMPARATOR:this.sortOrder===morpheus.SortKey.SortOrder.DESCENDING?this.c=morpheus.SortKey.ELEMENT_DESCENDING_COMPARATOR:this.c=morpheus.SortKey.NUMBER_ASCENDING_COMPARATOR},getSortOrder:function(){return this.sortOrder},toString:function(){return"values"}},morpheus.SpecifiedModelSortOrder=function(modelIndices,nvisible,name){this.nvisible=nvisible;for(var modelIndexToValue=[],i=0,length=modelIndices.length;length>i;i++)modelIndexToValue[modelIndices[i]]=i;this.modelIndexToValue=modelIndexToValue,this.name=name,this.c=morpheus.SortKey.ASCENDING_COMPARATOR},morpheus.SpecifiedModelSortOrder.prototype={init:function(dataset){},getComparator:function(a,b){return this.c},getValue:function(i){return this.modelIndexToValue[i]},setSortOrder:function(sortOrder){this.sortOrder=sortOrder,this.c=this.sortOrder===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.NUMBER_ASCENDING_COMPARATOR:morpheus.SortKey.NUMBER_DESCENDING_COMPARATOR},getSortOrder:function(){return this.sortOrder},getName:function(){return this.name}},morpheus.SortKey.keepExistingSortKeys=function(newSortKeys,existingSortKeys){for(var existingSpecifiedSortKey=null,i=0,length=existingSortKeys.length;length>i;i++){var key=existingSortKeys[i];key instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===key.name&&(existingSpecifiedSortKey=key)}if(existingSpecifiedSortKey){for(var newSortKeysHasSpecifiedSortKey=!1,i=0,length=newSortKeys.length;length>i;i++){var key=newSortKeys[i];key instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===key.name&&(newSortKeysHasSpecifiedSortKey=!0)}existingSpecifiedSortKey&&!newSortKeysHasSpecifiedSortKey&&newSortKeys.splice(newSortKeys.length,0,existingSpecifiedSortKey)}return newSortKeys},morpheus.SpecifiedGroupByKey=function(clusterIds){this.clusterIds=clusterIds,this.c=function(a,b){return a===b?0:b>a?-1:1}},morpheus.SpecifiedGroupByKey.prototype={init:function(dataset){},getComparator:function(a,b){return this.c},getValue:function(i){return this.clusterIds[i]},setSortOrder:function(sortOrder){},getSortOrder:function(){},getName:function(){return"Dendrogram Cut"}},morpheus.SymmetricProject=function(dataset){this.originalDataset=dataset,this.indexMapper=new morpheus.IndexMapper(this,!0),this.groups=[],this.colorModel=new morpheus.VectorColorModel,this.shapeModel=new morpheus.VectorShapeModel,this.hoverRowIndex=-1,this.hoverColumnIndex=-1,this.selectionModel=new morpheus.SelectionModel(this,!1),this.elementSelectionModel=new morpheus.ElementSelectionModel(this)},morpheus.SymmetricProject.prototype={getHoverColumnIndex:function(){return this.hoverColumnIndex},setHoverColumnIndex:function(index){this.hoverColumnIndex=index},getHoverRowIndex:function(){return this.hoverRowIndex},setHoverRowIndex:function(index){this.hoverRowIndex=index},getRowColorModel:function(){return this.colorModel},getRowShapeModel:function(){return this.shapeModel},getColumnShapeModel:function(){return this.shapeModel},getGroupRows:function(){return this.groups},getGroupColumns:function(){return this.groups},getFullDataset:function(){return this.originalDataset},getColumnSelectionModel:function(){return this.selectionModel},getRowSelectionModel:function(){return this.selectionModel},getElementSelectionModel:function(){return this.elementSelectionModel},getFilteredSortedRowIndices:function(){return this.indexMapper.convertToView()},getFilteredSortedColumnIndices:function(){return this.indexMapper.convertToView()},setFullDataset:function(dataset,notify){this.originalDataset=dataset,this.indexMapper.setFilter(this.indexMapper.getFilter()),this.selectionModel.clear(),this.elementSelectionModel.clear(),notify&&this.trigger(morpheus.Project.Events.DATASET_CHANGED)},setGroupRows:function(keys,notify){this.groups=keys,notify&&(this.trigger(morpheus.Project.Events.ROW_GROUP_BY_CHANGED),this.trigger(morpheus.Project.Events.COLUMN_GROUP_BY_CHANGED))},setGroupColumns:function(keys,notify){this.groups=keys,notify&&(this.trigger(morpheus.Project.Events.ROW_GROUP_BY_CHANGED),this.trigger(morpheus.Project.Events.COLUMN_GROUP_BY_CHANGED))},setRowFilter:function(filter,notify){this._saveSelection(!1),this.indexMapper.setFilter(filter),this._restoreSelection(!1),notify&&this.trigger(morpheus.Project.Events.ROW_FILTER_CHANGED)},getRowFilter:function(){return this.indexMapper.getFilter()},getColumnFilter:function(){return this.indexMapper.getFilter()},setColumnFilter:function(filter,notify){this._saveSelection(!0),this.indexMapper.setFilter(filter),this._restoreSelection(!0),notify&&this.trigger(morpheus.Project.Events.COLUMN_FILTER_CHANGED)},getColumnColorModel:function(){return this.colorModel},getSortedFilteredDataset:function(){return morpheus.DatasetUtil.slicedView(this.getFullDataset(),this.indexMapper.convertToView(),this.indexMapper.convertToView())},getSelectedDataset:function(options){options=$.extend({},{selectedRows:!0,selectedColumns:!0,emptyToAll:!0},options);var dataset=this.getSortedFilteredDataset(),rows=null;options.selectedRows&&(rows=this.selectionModel.getViewIndices().values().sort(function(a,b){return a===b?0:b>a?-1:1}),0===rows.length&&options.emptyToAll&&(rows=null));var columns=null;return options.selectedColumns&&(columns=this.selectionModel.getViewIndices().values().sort(function(a,b){return a===b?0:b>a?-1:1}),0===columns.length&&options.emptyToAll&&(columns=null)),morpheus.DatasetUtil.slicedView(dataset,rows,columns)},_saveSelection:function(isColumns){this.elementSelectionModel.save(),isColumns?this.selectionModel.save():this.selectionModel.save()},_restoreSelection:function(isColumns){isColumns?this.selectionModel.restore():this.selectionModel.restore(),this.elementSelectionModel.restore()},setRowSortKeys:function(keys,notify){this._saveSelection(!1),this.indexMapper.setSortKeys(keys),this._restoreSelection(!1),notify&&this.trigger(morpheus.Project.Events.ROW_SORT_ORDER_CHANGED)},setColumnSortKeys:function(keys,notify){this._saveSelection(!0),this.indexMapper.setSortKeys(keys),this._restoreSelection(!0),notify&&this.trigger(morpheus.Project.Events.COLUMN_SORT_ORDER_CHANGED)},getRowSortKeys:function(){return this.indexMapper.sortKeys},getColumnSortKeys:function(){return this.indexMapper.sortKeys},convertViewColumnIndexToModel:function(viewIndex){return this.indexMapper.convertViewIndexToModel(viewIndex)},convertViewRowIndexToModel:function(viewIndex){return this.indexMapper.convertViewIndexToModel(viewIndex)},convertModelRowIndexToView:function(modelIndex){return this.indexMapper.convertModelIndexToView(modelIndex)},convertModelColumnIndexToView:function(modelIndex){return this.indexMapper.convertModelIndexToView(modelIndex)},isColumnViewIndexSelected:function(index){return this.selectionModel.isViewIndexSelected(index)},isRowViewIndexSelected:function(index){return this.selectionModel.isViewIndexSelected(index)}},morpheus.Util.extend(morpheus.SymmetricProject,morpheus.Events),morpheus.TransposedDatasetView=function(dataset){morpheus.DatasetAdapter.call(this,dataset)},morpheus.TransposedDatasetView.prototype={getRowCount:function(){return this.dataset.getColumnCount()},getColumnCount:function(){return this.dataset.getRowCount()},getValue:function(i,j,seriesIndex){return this.dataset.getValue(j,i,seriesIndex)},setValue:function(i,j,value,seriesIndex){this.dataset.setValue(j,i,value,seriesIndex)},getRowMetadata:function(){return this.dataset.getColumnMetadata()},getColumnMetadata:function(){return this.dataset.getRowMetadata()}},morpheus.Util.extend(morpheus.TransposedDatasetView,morpheus.DatasetAdapter),morpheus.Percentile=function(vector,p,isSorted){return morpheus.ArrayPercentile(morpheus.RemoveNaN(vector),p,isSorted)},morpheus.RemoveNaN=function(values){for(var array=[],i=0,size=values.size();size>i;i++){var value=values.getValue(i);isNaN(value)||array.push(value)}return array},morpheus.Median=function(vector){return morpheus.ArrayPercentile(morpheus.RemoveNaN(vector),50,!1)},morpheus.Median.toString=function(){return"Median"},morpheus.ArrayPercentile=function(values,p,isSorted){return isSorted||values.sort(function(a,b){return b>a?-1:a===b?0:1}),d3.quantile(values,p/100)},morpheus.MaxPercentiles=function(percentiles){var f=function(vector){for(var values=[],i=0,size=vector.size();size>i;i++){var value=vector.getValue(i);isNaN(value)||values.push(value)}if(0===values.length)return NaN;values.sort(function(a,b){return b>a?-1:a===b?0:1});for(var max=0,i=0;iMath.abs(max)&&(max=p)}return max};return f.toString=function(){for(var s=["Maximum of "],i=0,length=percentiles.length;length>i;i++)i>0&&length>2&&s.push(", "),i===length-1&&s.push(2==length?" and ":"and "),s.push(percentiles[i]);return s.push(" percentiles"),s.join("")},f},morpheus.Mean=function(vector){for(var sum=0,count=0,i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);isNaN(val)||(sum+=val,count++)}return 0===count?NaN:sum/count},morpheus.Mean.toString=function(){return"Mean"},morpheus.Sum=function(vector){for(var sum=0,found=!1,i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);isNaN(val)||(found=!0,sum+=val)}return found?sum:NaN},morpheus.Sum.toString=function(){return"Sum"},morpheus.CountNonNaN=function(vector){for(var count=0,i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);isNaN(val)||count++}return count},morpheus.CountNonNaN.toString=function(){return"Count non-NaN"},morpheus.Max=function(vector){for(var max=-Number.MAX_VALUE,found=!1,i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);isNaN(val)||(found=!0,max=Math.max(max,val))}return found?max:NaN},morpheus.Max.toString=function(){return"Max"},morpheus.Min=function(vector){for(var min=Number.MAX_VALUE,found=!1,i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);isNaN(val)||(found=!0,min=Math.min(min,val))}return found?min:NaN},morpheus.Min.toString=function(){return"Min"},morpheus.Variance=function(list,mean){void 0==mean&&(mean=morpheus.Mean(list));for(var sum=0,n=0,j=0,size=list.size();size>j;j++){var x=list.getValue(j);if(!isNaN(x)){var diff=x-mean;diff*=diff,sum+=diff,n++}}if(1>=n)return NaN;n-=1,1>n&&(n=1);var variance=sum/n;return variance};var LOG_10=Math.log(10);morpheus.Log10=function(x){return 0>=x?0:Math.log(x)/LOG_10};var LOG_2=Math.log(2);morpheus.Log2=function(x){return 0>=x?0:Math.log(x)/LOG_2},morpheus.FDR_BH=function(nominalPValues){for(var size=nominalPValues.length,fdr=[],pValueIndices=morpheus.Util.indexSort(nominalPValues,!0),ranks=morpheus.Util.rankIndexArray(pValueIndices),i=pValueIndices.length-1;i>0;i--){var bigPValue=nominalPValues[pValueIndices[i]],smallPValue=nominalPValues[pValueIndices[i-1]];bigPValue==smallPValue&&(ranks[pValueIndices[i-1]]=ranks[pValueIndices[i]])}for(var i=0;size>i;i++){var rank=ranks[i],p=nominalPValues[i];fdr[i]=p*size/rank}for(var pIndices=morpheus.Util.indexSort(nominalPValues,!1),i=0;ii;i++)fdr[i]=Math.min(fdr[i],1);return fdr},morpheus.FDR_BH.tString=function(){return"FDR(BH)"},morpheus.Variance.toString=function(){return"Variance"},morpheus.MAD=function(list,median){null==median&&(median=morpheus.Percentile(list,50));for(var temp=[],j=0,size=list.size();size>j;j++){var value=list.getValue(j);isNaN(value)||temp.push(Math.abs(value-median))}var r=morpheus.Percentile(new morpheus.Vector("",temp.length).setArray(temp),50);return 1.4826*r},morpheus.MAD.toString=function(){return"Median absolute deviation"},morpheus.CV=function(list){var mean=morpheus.Mean(list),stdev=Math.sqrt(morpheus.Variance(list,mean));return stdev/mean},morpheus.CV.toString=function(){return"Coefficient of variation"},morpheus.BoxPlotItem=function(list){var values=morpheus.RemoveNaN(list);if(values.sort(function(a,b){return a===b?0:b>a?-1:1}),0===values.length)return{median:NaN,q1:NaN,q3:NaN,lowerAdjacentValue:NaN,upperAdjacentValue:NaN};for(var median=morpheus.ArrayPercentile(values,50,!0),q1=morpheus.ArrayPercentile(values,25,!0),q3=morpheus.ArrayPercentile(values,75,!0),w=1.5,upperAdjacentValue=-Number.MAX_VALUE,lowerAdjacentValue=Number.MAX_VALUE,upperOutlier=q3+w*(q3-q1),lowerOutlier=q1-w*(q3-q1),i=0,length=values.length;length>i;i++){var value=values[i];upperOutlier>=value&&(upperAdjacentValue=Math.max(upperAdjacentValue,value)),value>=lowerOutlier&&(lowerAdjacentValue=Math.min(lowerAdjacentValue,value))}return lowerAdjacentValue>q1&&(lowerAdjacentValue=q1),q3>upperAdjacentValue&&(upperAdjacentValue=q3),{median:median,q1:q1,q3:q3,lowerAdjacentValue:lowerAdjacentValue,upperAdjacentValue:upperAdjacentValue}},morpheus.Vector=function(name,size){this.name=name,this.array=[],this.n=size,this.properties=new morpheus.Map},morpheus.Vector.fromArray=function(name,array){var v=new morpheus.Vector(name,array.length);return v.array=array,v},morpheus.Vector.prototype={push:function(value){this.array.push(value)},getProperties:function(){return this.properties},setValue:function(index,value){this.array[index]=value},getValue:function(index){return this.array[index]},size:function(){return this.n},getName:function(){return this.name},setName:function(name){this.name=name},setArray:function(array){return this.array=array,this}},morpheus.VectorColorModel=function(){this.vectorNameToColorMap=new morpheus.Map,this.vectorNameToColorScheme=new morpheus.Map,this.colors=morpheus.VectorColorModel.TWENTY_COLORS},morpheus.VectorColorModel.YES_COLOR="#d8b365",morpheus.VectorColorModel.FEMALE="#ff99ff",morpheus.VectorColorModel.MALE="#66ccff",morpheus.VectorColorModel.TWENTY_COLORS=["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"],morpheus.VectorColorModel.CATEGORY_20A=morpheus.VectorColorModel.TWENTY_COLORS,morpheus.VectorColorModel.CATEGORY_20B=["#393b79","#5254a3","#6b6ecf","#9c9ede","#637939","#8ca252","#b5cf6b","#cedb9c","#8c6d31","#bd9e39","#e7ba52","#e7cb94","#843c39","#ad494a","#d6616b","#e7969c","#7b4173","#a55194","#ce6dbd","#de9ed6"],morpheus.VectorColorModel.CATEGORY_20C=["#3182bd","#6baed6","#9ecae1","#c6dbef","#e6550d","#fd8d3c","#fdae6b","#fdd0a2","#31a354","#74c476","#a1d99b","#c7e9c0","#756bb1","#9e9ac8","#bcbddc","#dadaeb","#636363","#969696","#bdbdbd","#d9d9d9"],morpheus.VectorColorModel.CATEGORY_ALL=[].concat(morpheus.VectorColorModel.CATEGORY_20A,morpheus.VectorColorModel.CATEGORY_20B,morpheus.VectorColorModel.CATEGORY_20C),morpheus.VectorColorModel.TABLEAU10=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],morpheus.VectorColorModel.STANDARD_COLORS={na:"#c0c0c0",nan:"#c0c0c0","":"#ffffff",wt:"#ffffff",n:"#ffffff",0:"#ffffff",y:morpheus.VectorColorModel.YES_COLOR,1:morpheus.VectorColorModel.YES_COLOR,male:morpheus.VectorColorModel.MALE,m:morpheus.VectorColorModel.MALE,female:morpheus.VectorColorModel.FEMALE,f:morpheus.VectorColorModel.FEMALE, +kd:"#C675A8",oe:"#56b4e9",cp:"#FF9933","trt_sh.cgs":"#C675A8",trt_oe:"#56b4e9",trt_cp:"#FF9933",a375:"#1490C1",a549:"#AAC8E9",hcc515:"#1C9C2A",hepg2:"#94DC89",ht29:"#946DBE",mcf7:"#C5B2D5",pc3:"#38C697",asc:"#FF8000",cd34:"#FFBB75",ha1e:"#FB4124",neu:"#FF9A94",npc:"#E57AC6",cancer:"#1490C1","immortalized normal":"#FF8000"},morpheus.VectorColorModel.getStandardColor=function(value){if(null==value)return"#ffffff";var stringValue=value.toString().toLowerCase();return morpheus.VectorColorModel.STANDARD_COLORS[stringValue]},morpheus.VectorColorModel.getColorMapForNumber=function(length){var colors;return colors=3>length?colorbrewer.Set1[3]:colorbrewer.Paired[length],colors?colors:morpheus.VectorColorModel.TWENTY_COLORS},morpheus.VectorColorModel.prototype={clear:function(vector){this.vectorNameToColorMap.remove(vector.getName()),this.vectorNameToColorScheme.remove(vector.getName())},copy:function(){var c=new morpheus.VectorColorModel;return c.colors=this.colors.slice(0),this.vectorNameToColorMap.forEach(function(colorMap,name){var newColorMap=new morpheus.Map;newColorMap.setAll(colorMap),c.vectorNameToColorMap.set(name,newColorMap)}),this.vectorNameToColorScheme.forEach(function(colorScheme,name){c.vectorNameToColorScheme.set(name,colorScheme.copy(new morpheus.Project(new morpheus.Dataset("",1,1))))}),c},clearAll:function(){this.vectorNameToColorMap=new morpheus.Map,this.vectorNameToColorScheme=new morpheus.Map},containsDiscreteColor:function(vector,value){var metadataValueToColorMap=this.vectorNameToColorMap.get(vector.getName());if(void 0===metadataValueToColorMap)return!1;var c=metadataValueToColorMap.get(value);return null!=c},setDiscreteColorMap:function(colors){this.colors=colors},getContinuousColorScheme:function(vector){return this.vectorNameToColorScheme.get(vector.getName())},getDiscreteColorScheme:function(vector){return this.vectorNameToColorMap.get(vector.getName())},createContinuousColorMap:function(vector){var min=morpheus.Min(vector),max=morpheus.Max(vector),cs=new morpheus.HeatMapColorScheme(new morpheus.Project(new morpheus.Dataset("",1,1)),{type:"fixed",map:[{value:min,color:colorbrewer.Greens[3][0]},{value:max,color:colorbrewer.Greens[3][2]}]});return this.vectorNameToColorScheme.set(vector.getName(),cs),cs},getContinuousMappedValue:function(vector,value){var cs=this.vectorNameToColorScheme.get(vector.getName());return void 0===cs&&(cs=this.createContinuousColorMap(vector)),cs.getColor(0,0,value)},_getColorForValue:function(value){var color=morpheus.VectorColorModel.getStandardColor(value);if(null==color)for(var existingMetadataValueToColorMap=this.vectorNameToColorMap.values(),i=0,length=existingMetadataValueToColorMap.length;length>i;i++)if(color=existingMetadataValueToColorMap[i].get(value),void 0!==color)return color;return color},getMappedValue:function(vector,value){var metadataValueToColorMap=this.vectorNameToColorMap.get(vector.getName());if(void 0===metadataValueToColorMap){metadataValueToColorMap=new morpheus.Map,this.vectorNameToColorMap.set(vector.getName(),metadataValueToColorMap);var values=morpheus.VectorUtil.getValues(vector),ncolors=0,colors=null;if(colors=values.length<3?colorbrewer.Dark2[3]:colorbrewer.Paired[values.length],colors||(colors=values.length<=20?d3.scale.category20().range():morpheus.VectorColorModel.CATEGORY_ALL),colors)for(var ncolors=colors.length,i=0,nvalues=values.length;nvalues>i;i++){var color=this._getColorForValue(values[i]);null==color&&(color=colors[i%ncolors]),metadataValueToColorMap.set(values[i],color)}else{var _this=this;_.each(values,function(val){_this.getMappedValue(vector,val)})}}var color=metadataValueToColorMap.get(value);if(null==color){if(color=this._getColorForValue(value),null==color){var index=metadataValueToColorMap.size();color=this.colors[index%this.colors.length]}metadataValueToColorMap.set(value,color)}return color},setMappedValue:function(vector,value,color){var metadataValueToColorMap=this.vectorNameToColorMap.get(vector.getName());void 0===metadataValueToColorMap&&(metadataValueToColorMap=new morpheus.Map,this.vectorNameToColorMap.set(vector.getName(),metadataValueToColorMap)),metadataValueToColorMap.set(value,color)}},morpheus.VectorKeys={},morpheus.VectorKeys.FIELDS="morpheus.fields",morpheus.VectorKeys.VALUE_TO_INDICES="morpheus.valueToIndices",morpheus.VectorKeys.VISIBLE_FIELDS="morpheus.visibleFields",morpheus.VectorKeys.DATA_TYPE="morpheus.dataType",morpheus.VectorKeys.ARRAY_SUMMARY_FUNCTION="morpheus.arraySummaryFunction",morpheus.VectorKeys.HEADER_SUMMARY="morpheus.headerSummary",morpheus.VectorKeys.SHOW_HEADER_SUMMARY="morpheus.showHeaderSummary",morpheus.VectorKeys.TITLE="morpheus.title",morpheus.VectorKeys.FUNCTION="morpheus.function",morpheus.VectorKeys.RECOMPUTE_FUNCTION="morpheus.recompute.function",morpheus.VectorKeys.COPY_IGNORE=new morpheus.Set,morpheus.VectorKeys.COPY_IGNORE.add(morpheus.VectorKeys.HEADER_SUMMARY),morpheus.VectorKeys.COPY_IGNORE.add(morpheus.VectorKeys.DATA_TYPE),morpheus.VectorKeys.COPY_IGNORE.add(morpheus.VectorKeys.VALUE_TO_INDICES),morpheus.VectorShapeModel=function(){this.shapes=morpheus.VectorShapeModel.SHAPES,this.vectorNameToShapeMap=new morpheus.Map},morpheus.VectorShapeModel.SHAPES=["circle","square","plus","x","asterisk","diamond","triangle-up","triangle-down","triangle-left","triangle-right","minus"],morpheus.VectorShapeModel.STANDARD_SHAPES={cp:"diamond",oe:"plus",pcl:"asterisk",kd:"minus",ctrl:"circle"},morpheus.VectorShapeModel.prototype={clear:function(vector){this.vectorNameToShapeMap.remove(vector.getName())},copy:function(){var c=new morpheus.VectorShapeModel;return c.shapes=this.shapes.slice(0),this.vectorNameToShapeMap.forEach(function(shapeMap,name){var newShapeMap=new morpheus.Map;newShapeMap.setAll(shapeMap),c.vectorNameToShapeMap.set(name,newShapeMap)}),c},clearAll:function(){this.vectorNameToShapeMap=new morpheus.Map},_getShapeForValue:function(value){if(null==value)return"none";var str=value.toString().toLowerCase(),mapped=morpheus.VectorShapeModel.STANDARD_SHAPES[str];if(void 0!==mapped)return mapped;for(var existingMetadataValueToShapeMap=this.vectorNameToShapeMap.values(),i=0,length=existingMetadataValueToShapeMap.length;length>i;i++){var shape=existingMetadataValueToShapeMap[i].get(value);if(void 0!==shape)return shape}},getMap:function(name){return this.vectorNameToShapeMap.get(name)},getMappedValue:function(vector,value){var metadataValueToShapeMap=this.vectorNameToShapeMap.get(vector.getName());if(void 0===metadataValueToShapeMap){metadataValueToShapeMap=new morpheus.Map,this.vectorNameToShapeMap.set(vector.getName(),metadataValueToShapeMap);for(var values=morpheus.VectorUtil.getValues(vector),i=0,nvalues=values.length;nvalues>i;i++){var shape=this._getShapeForValue(values[i]);null==shape&&(shape=this.shapes[i%this.shapes.length]),metadataValueToShapeMap.set(values[i],shape)}}var shape=metadataValueToShapeMap.get(value);if(null==shape){if(shape=this._getShapeForValue(value),null==shape){var index=metadataValueToShapeMap.size();shape=this.shapes[index%this.shapes.length]}metadataValueToShapeMap.set(value,shape)}return shape},setMappedValue:function(vector,value,shape){var metadataValueToShapeMap=this.vectorNameToShapeMap.get(vector.getName());void 0===metadataValueToShapeMap&&(metadataValueToShapeMap=new morpheus.Map,this.vectorNameToShapeMap.set(vector.getName(),metadataValueToShapeMap)),metadataValueToShapeMap.set(value,shape)}},morpheus.VectorUtil=function(){},morpheus.VectorUtil.createValueToIndicesMap=function(vector){if(!vector)throw"vector is null";for(var map=new morpheus.Map,j=0,size=vector.size();size>j;j++){var val=vector.getValue(j),list=map.get(val);void 0===list&&(list=[],map.set(val,list)),list.push(j)}return map},morpheus.VectorUtil.createValueToCountMap=function(vector){if(!vector)throw"vector is null";for(var map=new morpheus.Map,dataType=morpheus.VectorUtil.getDataType(vector),isArray="["===dataType[0],j=0,size=vector.size();size>j;j++){var val=vector.getValue(j);if(null!=val)if(isArray)for(var k=0;ki;i++){var s=vector.getValue(i);if(null!=s&&""!==s&&"NA"!==s&&"NaN"!==s&&!$.isNumeric(s))return!1;newValues.push(parseFloat(s))}for(var i=0,nrows=newValues.length;nrows>i;i++)vector.setValue(i,newValues[i]);return!0},morpheus.VectorUtil.createValuesToIndicesMap=function(vectors){var map=new morpheus.Map,nvectors=vectors.length;if(null==vectors[0])throw"no vectors found";for(var i=0,nitems=vectors[0].size();nitems>i;i++){for(var array=[],j=0;nvectors>j;j++){var vector=vectors[j],val=vector.getValue(i);array.push(val)}var key=new morpheus.Identifier(array),list=map.get(key);void 0===list&&(list=[],map.set(key,list)),list.push(i)}return map},morpheus.VectorUtil.createValuesToIndexMap=function(vectors){var map=new morpheus.Map,nvectors=vectors.length;if(null==vectors[0])throw"no vectors found";for(var i=0,nitems=vectors[0].size();nitems>i;i++){for(var array=[],j=0;nvectors>j;j++){var vector=vectors[j],val=vector.getValue(i);array.push(val)}var key=new morpheus.Identifier(array);map.set(key,i)}return map},morpheus.VectorUtil.containsMoreThanOneValue=function(vector){return morpheus.VectorUtil.containsMoreThanNValues(vector,1)},morpheus.VectorUtil.containsMoreThanNValues=function(vector,n){for(var s=new morpheus.Set,j=0,size=vector.size();size>j;j++){var val=vector.getValue(j);if(s.add(val),s.size()>n)return!0}return!1},morpheus.VectorUtil.createValueToIndexMap=function(vector){for(var map=new morpheus.Map,j=0,size=vector.size();size>j;j++){var val=vector.getValue(j);map.set(val,j)}return map},morpheus.VectorUtil.getValues=function(vector,excludeNull){for(var set=new morpheus.Set,j=0,size=vector.size();size>j;j++){var val=vector.getValue(j);excludeNull&&null==val||set.add(val)}var array=set.values();return array.sort(morpheus.SortKey.ASCENDING_COMPARATOR),array},morpheus.VectorUtil.getSet=function(vector){for(var set=new morpheus.Set,j=0,size=vector.size();size>j;j++)set.add(vector.getValue(j));return set},morpheus.VectorUtil.createSpanMap=function(vector){for(var previous=vector.getValue(0),startIndexToEndIndex=new morpheus.Map,start=0,i=1,nrows=vector.size();nrows>i;i++){var val=vector.getValue(i);previous!==val&&(previous=val,startIndexToEndIndex.set(start,i),start=i)}return startIndexToEndIndex.set(start,vector.size()),startIndexToEndIndex},morpheus.VectorUtil.toArray=function(vector){for(var array=[],i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);array.push(val)}return array},morpheus.VectorUtil.arrayAsVector=function(array,name){var v=new morpheus.Vector(name,array.length);return v.array=array,v},morpheus.VectorUtil.toString=function(vector){for(var array=[],i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);array.push(val)}return array.join(", ")},morpheus.VectorUtil.getDataType=function(vector){var dataType=vector.getProperties().get(morpheus.VectorKeys.DATA_TYPE);if(void 0===dataType){var firstNonNull=morpheus.VectorUtil.getFirstNonNull(vector),isArray=morpheus.Util.isArray(firstNonNull);isArray&&firstNonNull.length>0&&(firstNonNull=firstNonNull[0]),dataType=_.isString(firstNonNull)?"string":_.isNumber(firstNonNull)?"number":"object",isArray&&(dataType="["+dataType+"]"),vector.getProperties().set(morpheus.VectorKeys.DATA_TYPE,dataType)}return dataType},morpheus.VectorUtil.getMinMax=function(vector){var min=Number.MAX_VALUE,max=-Number.MAX_VALUE,fields=vector.getProperties().get(morpheus.VectorKeys.FIELDS);if(null!=fields)for(var nvalues=fields.length,i=0,size=vector.size();size>i;i++){var array=vector.getValue(i);if(array)for(var j=0;nvalues>j;j++){var value=array[j];isNaN(value)||(min=min>value?value:min,max=value>max?value:max)}}else for(var i=0,size=vector.size();size>i;i++){var value=vector.getValue(i);isNaN(value)||(min=min>value?value:min,max=value>max?value:max)}return{min:min,max:max}},morpheus.VectorUtil.getFirstNonNull=function(vector){for(var i=0,length=vector.size();length>i;i++){var val=vector.getValue(i);if(null!=val)return val}return null},morpheus.VectorUtil.isNumber=function(vector){return _.isNumber(morpheus.VectorUtil.getFirstNonNull(vector))},morpheus.LandingPage=function(pageOptions){pageOptions=$.extend({},{el:$("#vis")},pageOptions),this.pageOptions=pageOptions;var $el=$('');this.$el=$el;var html=[];html.push('
    '),html.push('
    logo Morpheus
    '),html.push("

    Open your own file

    "),html.push('
    '),html.push("

    Or select a preloaded dataset

    "),html.push('
    '),html.push(""),$(html.join("")).appendTo($el),(new morpheus.HelpMenu).$el.appendTo($el.find("[name=help]"));var formBuilder=new morpheus.FormBuilder;formBuilder.append({name:"file",showLabel:!1,value:"",type:"file",required:!0,help:morpheus.DatasetUtil.DATASET_FILE_FORMATS}),formBuilder.$form.appendTo($el.find("[name=formRow]")),this.formBuilder=formBuilder,this.$sampleDatasetsEl=$el.find("[name=exampleRow]")},morpheus.LandingPage.prototype={dispose:function(){this.formBuilder.setValue("file",""),this.$el.hide(),$(window).off("paste.morpheus drop.morpheus dragover.morpheus dragenter.morpheus beforeunload.morpheus"),$(window).on("beforeunload.morpheus",function(){return"Are you sure you want to close Morpheus?"}),this.formBuilder.off("change")},show:function(){var _this=this;this.sampleDatasets||(this.sampleDatasets=new morpheus.SampleDatasets({$el:this.$sampleDatasetsEl,callback:function(heatMapOptions){_this.open(heatMapOptions)}})),this.$el.show(),this.formBuilder.on("change",function(e){var value=e.value;""!==value&&null!=value&&_this.openFile(value)}),$(window).on("paste.morpheus",function(e){var text=e.originalEvent.clipboardData.getData("text/plain");if(null!=text&&text.length>0){var blob=new Blob([text]),url=window.URL.createObjectURL(blob);e.preventDefault(),e.stopPropagation(),_this.openFile(url)}}).on("dragover.morpheus dragenter.morpheus",function(e){e.preventDefault(),e.stopPropagation()}).on("drop.morpheus",function(e){if(e.originalEvent.dataTransfer&&e.originalEvent.dataTransfer.files.length){e.preventDefault(),e.stopPropagation();var files=e.originalEvent.dataTransfer.files;_this.openFile(files[0])}else if(e.originalEvent.dataTransfer){var url=e.originalEvent.dataTransfer.getData("URL");e.preventDefault(),e.stopPropagation(),_this.openFile(url)}})},open:function(options){this.dispose(),null==this.heatmap?(options.landingPage=this,options.el=this.pageOptions.el,this.heatmap=new morpheus.HeatMap(options)):(options.inheritFromParent=!1,options.parent=this.heatmap,new morpheus.HeatMap(options))},openFile:function(value){var _this=this,options={dataset:value},fileName=morpheus.Util.getFileName(value);morpheus.OpenDatasetTool.fileExtensionPrompt(fileName,function(readOptions){if(readOptions){var dataset=options.dataset;options.dataset={file:dataset,options:{}};for(var key in readOptions)options.dataset.options[key]=readOptions[key]}_this.open(options)})}},morpheus.SampleDatasets=function(options){options.openText||(options.openText="Open");var _this=this,$el=options.$el;this.callback=options.callback;var exampleHtml=[];exampleHtml.push(''),exampleHtml.push(""),exampleHtml.push(''),exampleHtml.push(''),exampleHtml.push(''),exampleHtml.push(''),exampleHtml.push('"),exampleHtml.push("
    Cancer Cell Line Encyclopedia (CCLE), Project Achilles Gene Expression Copy Number By Gene Mutations Gene essentiality
    "),exampleHtml.push('
    TCGA data version 1/11/2015
    Please adhere to the TCGA publication guidelines when using TCGA data in your publications.'),exampleHtml.push('
    '),$(exampleHtml.join("")).appendTo($el),$el.find("[name=ccle]").on("click",function(e){e.preventDefault();var $this=$(this),obj={};$this.parents("tr").find("input:checked").each(function(i,c){obj[$(c).data("type")]=!0}),_this.openCCLE(obj)}),$el.on("click","[name=tcgaLink]",function(e){e.preventDefault();var $this=$(this),type=$this.data("disease-type"),obj={};$this.parents("tr").find("input:checked").each(function(i,c){obj[$(c).data("type")]=!0});for(var options,i=0;i<_this.diseases.length;i++)if(_this.diseases[i].type===type){options=_this.diseases[i];break}obj.type=type,obj.name=options.name,_this.openTcga(obj)}),$el.on("click","[data-toggle=dataTypeToggle]",function(e){var $this=$(this),$button=$this.parents("tr").find("button"),isDisabled=0===$this.parents("tr").find("input:checked").length;$button.prop("disabled",isDisabled),isDisabled||$button.removeClass("animated flash").addClass("animated flash").one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){$(this).removeClass("animated flash")})}),$.ajax("//s3.amazonaws.com/appdata.cmap.org/morpheus/tcga/tcga_index.txt").done(function(text){for(var lines=text.split("\n"),diseases=[],i=0;ia?-1:1});var tcga=[];_this.diseases=diseases,tcga.push('');for(var i=0;i"),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push(""),tcga.push("")}tcga.push("
    "+disease.name+""),disease.mrna&&tcga.push(' Gene Expression'),tcga.push(""),disease.gistic&&tcga.push(' GISTIC Copy Number'),tcga.push(""),disease.gistic&&tcga.push(' Copy Number By Gene'),tcga.push(""),disease.sig_genes&&tcga.push(' Mutations'),tcga.push(""),disease.rppa&&tcga.push(' Proteomics'),tcga.push(""),disease.methylation&&tcga.push(' Methylation'),tcga.push(""),tcga.push('
    "),$(tcga.join("")).appendTo($el.find("[name=tcga]"))})},morpheus.SampleDatasets.getTcgaDataset=function(options){var baseUrl="//s3.amazonaws.com/appdata.cmap.org/morpheus/tcga/"+options.type+"/",datasetOptions={};return options.mrna&&(datasetOptions.mrna=baseUrl+"mRNAseq_RSEM_normalized_log2.txt"),options.methylation&&(datasetOptions.methylation=baseUrl+"meth.by_mean.data.txt"),options.sig_genes&&(datasetOptions.mutation=baseUrl+"mutations_merged.maf.txt",datasetOptions.sigGenes=baseUrl+"sig_genes.txt"),options.rppa&&(datasetOptions.rppa=baseUrl+"rppa.txt"),options.gistic&&(datasetOptions.gistic=baseUrl+"all_lesions.conf_99.txt"),options.gisticGene&&(datasetOptions.gisticGene=baseUrl+"all_data_by_genes.txt"),datasetOptions.mrnaClust=baseUrl+"bestclus.txt",datasetOptions.columnAnnotations=[{file:baseUrl+"All_CDEs.txt",datasetField:"participant_id",fileField:"patient_id"}],morpheus.TcgaUtil.getDataset(datasetOptions)},morpheus.SampleDatasets.getCCLEDataset=function(options){var datasets=[];options.sig_genes&&datasets.push({dataset:"//s3.amazonaws.com/appdata.cmap.org/morpheus/CCLE_hybrid_capture1650_hg19_NoCommonSNPs_NoNeutralVariants_CDS_2012.05.07.maf.txt"}),options.cn&&datasets.push({dataset:"//s3.amazonaws.com/appdata.cmap.org/morpheus/CCLE_copynumber_byGene_2013-12-03.gct"}),options.mrna&&datasets.push({dataset:"//s3.amazonaws.com/appdata.cmap.org/morpheus/CCLE_Expression_Entrez_2012-09-29.txt"}),options.ach&&datasets.push({dataset:"//s3.amazonaws.com/appdata.cmap.org/morpheus/Achilles_QC_v2.4.3.rnai.Gs.gct"});var columnAnnotations=[{file:"//s3.amazonaws.com/appdata.cmap.org/morpheus/CCLE_Sample_Info.txt",datasetField:"id",fileField:"id"}];options.ach&&columnAnnotations.push({file:"//s3.amazonaws.com/appdata.cmap.org/morpheus/Achilles_v2.4_SampleInfo_small.txt",datasetField:"id",fileField:"id"});var datasetToReturn,returnDeferred=$.Deferred(),datasetDef=morpheus.DatasetUtil.readDatasetArray({dataset:datasets}),annotationDef=morpheus.DatasetUtil.annotate({annotations:columnAnnotations,isColumns:!0});datasetDef.done(function(d){datasetToReturn=d}),datasetDef.fail(function(message){returnDeferred.reject(message)});var annotationCallbacks;return annotationDef.done(function(callbacks){annotationCallbacks=callbacks}),annotationDef.fail(function(message){returnDeferred.reject(message)}),$.when.apply($,[datasetDef,annotationDef]).then(function(){annotationCallbacks.forEach(function(f){f(datasetToReturn)}),returnDeferred.resolve(datasetToReturn)}),returnDeferred},morpheus.SampleDatasets.prototype={openTcga:function(options){this.callback({name:options.name,renderReady:function(heatMap){for(var whitelist=["age_at_initial_pathologic_diagnosis","breast_carcinoma_estrogen_receptor_status","breast_carcinoma_progesterone_receptor_status","lab_proc_her2_neu_immunohistochemistry_receptor_status","days_to_death","ethnicity","gender","histological_type","pathologic_stage"],columnMetadata=heatMap.getProject().getFullDataset().getColumnMetadata(),i=0;ii;i++)for(var j=0,ncols=dataset.getColumnCount();ncols>j;j++)dataset.setValue(i,j,morpheus.Log2(dataset.getValue(i,j)));if(options.input.inverse_log_2)for(var i=0,nrows=dataset.getRowCount();nrows>i;i++)for(var j=0,ncols=dataset.getColumnCount();ncols>j;j++){var value=dataset.getValue(i,j);value>=0&&dataset.setValue(i,j,Math.pow(2,value))}if(options.input["z-score"])for(var i=0,nrows=dataset.getRowCount();nrows>i;i++){rowView.setIndex(i);for(var mean=morpheus.Mean(rowView),stdev=Math.sqrt(morpheus.Variance(rowView)),j=0,ncols=dataset.getColumnCount();ncols>j;j++)dataset.setValue(i,j,(dataset.getValue(i,j)-mean)/stdev)}if(options.input["robust_z-score"])for(var i=0,nrows=dataset.getRowCount();nrows>i;i++){rowView.setIndex(i);for(var median=morpheus.Median(rowView),mad=morpheus.MAD(rowView,median),j=0,ncols=dataset.getColumnCount();ncols>j;j++)dataset.setValue(i,j,(dataset.getValue(i,j)-median)/mad)}project.trigger("datasetChanged"),project.getColumnSelectionModel().setViewIndices(selectedColumnIndices,!0),project.getRowSelectionModel().setViewIndices(selectedRowIndices,!0)}}},morpheus.AnnotateDendrogramTool=function(isColumns){this._isColumns=isColumns},morpheus.AnnotateDendrogramTool.prototype={toString:function(){return"Annotate Dendrogram"},gui:function(){return[{name:"file",value:"",type:"file",required:!0,help:"an xlsx file or a tab-delimitted text file"}]},execute:function(options){var fileOrUrl=options.input.file,isColumns=this._isColumns,controller=options.controller,result=morpheus.Util.readLines(fileOrUrl),dendrogram=(morpheus.Util.getFileName(fileOrUrl),isColumns?controller.columnDendrogram:controller.rowDendrogram),nameToNode=new morpheus.Map;morpheus.AbstractDendrogram.dfs(dendrogram.tree.rootNode,function(node){return nameToNode.set(node.name,node),!0});var tab=new RegExp(" ");result.done(function(lines){var header=lines[0].split(tab),promptTool={};promptTool.execute=function(options){for(var nodeIdField=options.input.node_id_field,nodeIdIndex=_.indexOf(header,nodeIdField),numberOfMatchingNodes=0,i=1;i
    ');var formBuilder=new morpheus.FormBuilder({vertical:!0});this.formBuilder=formBuilder,formBuilder.append({name:"chart_type",type:"select",options:["boxplot","row scatter","column scatter"]});var rowOptions=[],columnOptions=[],numericRowOptions=[],numericColumnOptions=[],options=[],numericOptions=[],updateOptions=function(){var dataset=project.getFullDataset();rowOptions=[{name:"(None)",value:""}],columnOptions=[{name:"(None)",value:""}],numericRowOptions=[{name:"(None)",value:""}],numericColumnOptions=[{name:"(None)",value:""}],options=[{name:"(None)",value:""}],numericOptions=[{name:"(None)",value:""}],morpheus.MetadataUtil.getMetadataNames(dataset.getRowMetadata()).forEach(function(name){var dataType=morpheus.VectorUtil.getDataType(dataset.getRowMetadata().getByName(name));"number"!==dataType&&"[number]"!==dataType||numericRowOptions.push({name:name+" (row)",value:name+"_r"}),rowOptions.push({name:name+" (row)",value:name+"_r"})}),morpheus.MetadataUtil.getMetadataNames(dataset.getColumnMetadata()).forEach(function(name){var dataType=morpheus.VectorUtil.getDataType(dataset.getColumnMetadata().getByName(name));"number"!==dataType&&"[number]"!==dataType||numericColumnOptions.push({name:name+" (column)",value:name+"_c"}),columnOptions.push({name:name+" (column)",value:name+"_c"})}),options=options.concat(rowOptions.slice(1)),options=options.concat(columnOptions.slice(1)),numericOptions=numericOptions.concat(numericRowOptions.slice(1)),numericOptions=numericOptions.concat(numericColumnOptions.slice(1))};updateOptions(),formBuilder.append({name:"group_columns_by",type:"select",options:options}),formBuilder.append({name:"group_rows_by",type:"select",options:options}),formBuilder.append({name:"axis_label",type:"select",options:rowOptions}),formBuilder.append({name:"show_points",type:"checkbox",value:!0}),formBuilder.append({name:"color",type:"select",options:options}),formBuilder.append({name:"size",type:"select",options:numericOptions}),formBuilder.$form.find("select").on("change",function(){setVisibility(),_this.draw()}),formBuilder.$form.find("input").on("click",function(){_this.draw()}),setVisibility();var draw=function(){_.debounce(_this.draw(),100)},trackChanged=function(){updateOptions(),setVisibility(),formBuilder.setOptions("group_columns_by",options,!0),formBuilder.setOptions("group_rows_by",options,!0)};project.getColumnSelectionModel().on("selectionChanged.chart",draw),project.getRowSelectionModel().on("selectionChanged.chart",draw),project.on("trackChanged.chart",trackChanged),this.$chart=this.$el.find("[name=chartDiv]");var $dialog=$('
    '),$configPane=this.$el.find("[name=configPane]");formBuilder.$form.appendTo($configPane), +this.$el.appendTo($dialog),$dialog.dialog({close:function(event,ui){project.off("trackChanged.chart",trackChanged),project.getRowSelectionModel().off("selectionChanged.chart",draw),project.getColumnSelectionModel().off("selectionChanged.chart",draw),_this.$el.empty()},resizable:!0,height:600,width:900}),this.draw()},morpheus.ChartTool2.getPlotlyDefaults=function(){var layout={autosize:!1,paper_bgcolor:"rgb(255,255,255)",plot_bgcolor:"rgb(229,229,229)",showlegend:!1,margin:{l:80,r:0,t:10,b:14,autoexpand:!0},xaxis:{zeroline:!1,titlefont:{size:12},gridcolor:"rgb(255,255,255)",showgrid:!0,showline:!1,showticklabels:!0,tickcolor:"rgb(127,127,127)",ticks:"outside",type:"linear"},yaxis:{zeroline:!1,titlefont:{size:12},gridcolor:"rgb(255,255,255)",showgrid:!0,showline:!1,showticklabels:!0,tickcolor:"rgb(127,127,127)",ticks:"outside",type:"linear"}},config={showLink:!1,displaylogo:!1,staticPlot:!1,showHints:!0,modeBarButtonsToRemove:["sendDataToCloud"]};return{layout:layout,config:config}},morpheus.ChartTool2.getVectorInfo=function(value){var field=value.substring(0,value.length-2),isColumns="_c"===value.substring(value.length-2);return{field:field,isColumns:isColumns}},morpheus.ChartTool2.prototype={annotate:function(options){var _this=this,formBuilder=new morpheus.FormBuilder;formBuilder.append({name:"annotation_name",type:"text",required:!0}),formBuilder.append({name:"annotation_value",type:"text",required:!0}),morpheus.FormBuilder.showOkCancel({title:"Annotate Selection",content:formBuilder.$form,okCallback:function(){var dataset=options.dataset,eventData=options.eventData,array=options.array,value=formBuilder.getValue("annotation_value"),annotationName=formBuilder.getValue("annotation_name"),isRows=!0,isColumns=!0,existingRowVector=null,rowVector=null;isRows&&(existingRowVector=dataset.getRowMetadata().getByName(annotationName),rowVector=dataset.getRowMetadata().add(annotationName));var existingColumnVector=null,columnVector=null;isColumns&&(existingColumnVector=dataset.getColumnMetadata().getByName(annotationName),columnVector=dataset.getColumnMetadata().add(annotationName));for(var p=0,nselected=eventData.points.length;nselected>p;p++){var item=array[eventData.points[p].pointNumber];isRows&&(_.isArray(item.row)?item.row.forEach(function(r){rowVector.setValue(r,value)}):rowVector.setValue(item.row,value)),isColumns&&columnVector.setValue(item.column,value)}isRows&&(morpheus.VectorUtil.maybeConvertStringToNumber(rowVector),_this.project.trigger("trackChanged",{vectors:[rowVector],render:null!=existingRowVector?[]:[morpheus.VectorTrack.RENDER.TEXT],columns:!1})),isColumns&&(morpheus.VectorUtil.maybeConvertStringToNumber(columnVector),_this.project.trigger("trackChanged",{vectors:[columnVector],render:null!=existingColumnVector?[]:[morpheus.VectorTrack.RENDER.TEXT],columns:!0}))}})},_createScatter:function(options){for(var dataset=options.dataset,colorByVector=options.colorByVector,colorModel=options.colorModel,sizeByVector=options.sizeByVector,sizeFunction=options.sizeFunction,myPlot=(this.heatmap,options.myPlot),isColumnScatter=options.isColumnScatter,x=[],y=[],text=[],color=colorByVector?[]:"#1f78b4",size=sizeByVector?[]:6,array=[],j=0,ncols=dataset.getColumnCount();ncols>j;j++){if(y.push(dataset.getValue(options.rowIndexOne,j)),x.push(dataset.getValue(options.rowIndexTwo,j)),array.push({row:[options.rowIndexOne,options.rowIndexTwo],column:j}),colorByVector){var colorByValue=colorByVector.getValue(j);color.push(colorModel.getMappedValue(colorByVector,colorByValue))}if(sizeByVector){var sizeByValue=sizeByVector.getValue(j);size.push(sizeFunction(sizeByValue))}var obj={j:j};obj.toString=function(){for(var trackNames=_this.getVisibleTrackNames(!isColumnScatter),s=[],i=0;i")}return s.join("")},text.push(obj)}var trace={x:x,y:y,marker:{color:color,size:size,symbol:"circle-open"},text:text,mode:"markers",type:"scatter"},selection=null,_this=this,config=$.extend(!0,{},options.config,{modeBarButtonsToAdd:[[{name:"annotate",title:"Annotate Selection",attr:"dragmode",val:"annotate",icon:{width:1792,path:"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z",ascent:1792,descent:0},click:function(){selection?_this.annotate({array:array,eventData:selection,dataset:dataset}):morpheus.FormBuilder.showInModal({title:"Annotate Selection",html:"Please select points in the chart",close:"Close"})}}]]});Plotly.newPlot(myPlot,[trace],options.layout,config),myPlot.on("plotly_selected",function(eventData){selection=eventData})},_createBoxPlot:function(options){for(var array=options.array,points=options.points,colorByVector=options.colorByVector,colorByGetter=options.colorByGetter,colorModel=options.colorModel,myPlot=options.myPlot,dataset=options.dataset,y=[],color=points&&colorByVector?[]:"#1f78b4",text=[],x=[],sizeFunction=(this.heatmap,options.sizeFunction),sizeByGetter=options.sizeByGetter,size=sizeFunction?[]:6,scale=d3.scale.linear().domain([0,1]).range([-.3,-1]),k=0,nitems=array.length;nitems>k;k++){var item=array[k];if(y.push(dataset.getValue(item.row,item.column)),points){if(x.push(scale(Math.random())),colorByVector){var colorByValue=colorByGetter(item);color.push(colorModel.getMappedValue(colorByVector,colorByValue))}if(sizeFunction){var sizeByValue=sizeByGetter(item);size.push(sizeFunction(sizeByValue))}var obj={row:item.row,column:item.column};obj.toString=function(){for(var s=[],trackNames=_this.getVisibleTrackNames(!0),trackIndex=0;trackIndex")}trackNames=_this.getVisibleTrackNames(!1);for(var trackIndex=0;trackIndex")}return s.join("")},text.push(obj)}}var traces=[{name:"",y:y,type:"box",boxpoints:!1}];points&&traces.push({name:"",x:x,y:y,hoverinfo:"y+text",mode:"markers",type:"scatter",text:text,marker:{symbol:"circle-open",size:size,color:color}});var selection=null,_this=this,config=$.extend(!0,{},options.config,{modeBarButtonsToAdd:[[{name:"annotate",title:"Annotate Selection",attr:"dragmode",val:"annotate",icon:{width:1792,path:"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z",ascent:1792,descent:0},click:function(){selection?_this.annotate({array:array,eventData:selection,dataset:dataset}):morpheus.FormBuilder.showInModal({title:"Annotate Selection",html:"Please select points in the chart",close:"Close"})}}]]});Plotly.newPlot(myPlot,traces,options.layout,config),myPlot.on("plotly_selected",function(eventData){selection=eventData})},draw:function(){this.$chart.empty();var plotlyDefaults=morpheus.ChartTool2.getPlotlyDefaults(),layout=plotlyDefaults.layout,config=plotlyDefaults.config,chartWidth=400,chartHeight=400,points=this.formBuilder.getValue("show_points"),groupColumnsBy=this.formBuilder.getValue("group_columns_by"),titleBy=this.formBuilder.getValue("axis_label"),colorBy=this.formBuilder.getValue("color"),sizeBy=this.formBuilder.getValue("size"),groupRowsBy=this.formBuilder.getValue("group_rows_by"),chartType=this.formBuilder.getValue("chart_type"),dataset=this.project.getSelectedDataset({emptyToAll:!1});if(this.dataset=dataset,dataset.getRowCount()*dataset.getColumnCount()===0)return void $("

    Please select rows and columns in the heat map.

    ").appendTo(this.$chart);dataset.getRowCount()*dataset.getColumnCount()>1e5&&(points=!1);var grid=[],rowIds=[void 0],columnIds=[void 0],items=[],colorByInfo=(this.heatmap,morpheus.ChartTool2.getVectorInfo(colorBy)),sizeByInfo=morpheus.ChartTool2.getVectorInfo(sizeBy);if("row scatter"!==chartType&&"column scatter"!==chartType){for(var i=0,nrows=dataset.getRowCount();nrows>i;i++)for(var j=0,ncols=dataset.getColumnCount();ncols>j;j++)items.push({row:i,column:j});var colorByInfo=morpheus.ChartTool2.getVectorInfo(colorBy),colorByVector=colorByInfo.isColumns?dataset.getColumnMetadata().getByName(colorByInfo.field):dataset.getRowMetadata().getByName(colorByInfo.field),colorModel=colorByInfo.isColumns?this.project.getColumnColorModel():this.project.getRowColorModel(),colorByGetter=colorByInfo.isColumns?function(item){return colorByVector.getValue(item.column)}:function(item){return colorByVector.getValue(item.row)},sizeByVector=sizeByInfo.isColumns?dataset.getColumnMetadata().getByName(sizeByInfo.field):dataset.getRowMetadata().getByName(sizeByInfo.field),sizeByGetter=sizeByInfo.isColumns?function(item){return sizeByVector.getValue(item.column)}:function(item){return sizeByVector.getValue(item.row)},sizeByScale=null;if(sizeByVector){var minMax=morpheus.VectorUtil.getMinMax(sizeByVector);sizeByScale=d3.scale.linear().domain([minMax.min,minMax.max]).range([3,16]).clamp(!0)}if(groupColumnsBy||groupRowsBy){var rowIdToArray=new morpheus.Map;if(groupRowsBy)for(var groupRowsByInfo=morpheus.ChartTool2.getVectorInfo(groupRowsBy),vector=groupRowsByInfo.isColumns?dataset.getColumnMetadata().getByName(groupRowsByInfo.field):dataset.getRowMetadata().getByName(groupRowsByInfo.field),getter=groupRowsByInfo.isColumns?function(item){return vector.getValue(item.column)}:function(item){return vector.getValue(item.row)},i=0,nitems=items.length;nitems>i;i++){var item=items[i],value=getter(item),array=rowIdToArray.get(value);void 0==array&&(array=[],rowIdToArray.set(value,array)),array.push(item)}else rowIdToArray.set(void 0,items);if(groupColumnsBy){var name=groupColumnsBy.substring(0,groupColumnsBy.length-2),isColumns="_c"===groupColumnsBy.substring(groupColumnsBy.length-2),vector=isColumns?dataset.getColumnMetadata().getByName(name):dataset.getRowMetadata().getByName(name),getter=isColumns?function(item){return vector.getValue(item.column)}:function(item){return vector.getValue(item.row)},columnIdToIndex=new morpheus.Map,rowIndex=0;rowIdToArray.forEach(function(array,id){grid[rowIndex]=[];for(var i=0,nitems=array.length;nitems>i;i++){var item=array[i],value=getter(item),columnIndex=columnIdToIndex.get(value);void 0===columnIndex&&(columnIndex=columnIdToIndex.size(),columnIdToIndex.set(value,columnIndex)),void 0===grid[rowIndex][columnIndex]&&(grid[rowIndex][columnIndex]=[]),grid[rowIndex][columnIndex].push(item)}rowIds[rowIndex]=id,rowIndex++}),columnIdToIndex.forEach(function(index,id){columnIds[index]=id})}else{var rowIndex=0;rowIdToArray.forEach(function(array,id){grid[rowIndex]=[array],rowIds[rowIndex]=id,rowIndex++})}}else grid=[[items]];for(var gridRowCount=rowIds.length,gridColumnCount=columnIds.length,i=0;gridRowCount>i;i++){var rowId=rowIds[i],yrange=[Number.MAX_VALUE,-Number.MAX_VALUE];if("boxplot"===chartType){for(var j=0;gridColumnCount>j;j++){var array=grid[i][j];if(array)for(var k=0,nitems=array.length;nitems>k;k++){var item=array[k],value=dataset.getValue(item.row,item.column);isNaN(value)||(yrange[0]=Math.min(yrange[0],value),yrange[1]=Math.max(yrange[1],value))}}var span=yrange[1]-yrange[0],delta=.01*span;yrange[1]+=delta,yrange[0]-=delta}for(var j=0;gridColumnCount>j;j++){var array=grid[i][j],columnId=columnIds[j];if(array){var $chart=$('
    ');$chart.appendTo(this.$chart);var myPlot=$chart[0];"boxplot"===chartType&&this._createBoxPlot({layout:$.extend(!0,{},layout,{width:chartWidth,height:chartHeight,yaxis:{range:yrange,title:rowId},xaxis:{title:columnId,showticklabels:!1}}),array:array,points:points,sizeByGetter:sizeByGetter,sizeFunction:sizeByScale,colorModel:colorModel,colorByVector:colorByVector,colorByGetter:colorByGetter,myPlot:myPlot,dataset:dataset,config:config})}}}}else{var titleInfo=morpheus.ChartTool2.getVectorInfo(titleBy),isColumnScatter="column scatter"===chartType;if(isColumnScatter&&(dataset=new morpheus.TransposedDatasetView(dataset)),dataset.getRowCount()>15)return void $("

    Maximum chart size exceeded.

    ").appendTo(this.$chart);var titleVector=dataset.getRowMetadata().getByName(titleInfo.field),colorByVector=dataset.getColumnMetadata().getByName(colorByInfo.field),colorModel=isColumnScatter?this.project.getRowColorModel():this.project.getColumnColorModel(),sizeByVector=dataset.getColumnMetadata().getByName(sizeByInfo.field),sizeByScale=null;if(sizeByVector){var minMax=morpheus.VectorUtil.getMinMax(sizeByVector);sizeByScale=d3.scale.linear().domain([minMax.min,minMax.max]).range([3,16]).clamp(!0)}for(var rowIndexOne=0,nrows=dataset.getRowCount();nrows>rowIndexOne;rowIndexOne++)for(var rowIndexTwo=0;nrows>rowIndexTwo;rowIndexTwo++)if(!(rowIndexOne>rowIndexTwo)){var $chart=$('
    '),myPlot=$chart[0];if($chart.appendTo(this.$chart),rowIndexOne===rowIndexTwo){for(var array=[],j=0,ncols=dataset.getColumnCount();ncols>j;j++)array.push({row:rowIndexTwo,column:j});this._createBoxPlot({array:array,points:points,colorByVector:colorByVector,colorModel:colorModel,colorByGetter:function(item){return colorByVector.getValue(item.column)},sizeByGetter:function(item){return sizeByVector.getValue(item.column)},sizeFunction:sizeByScale,myPlot:myPlot,dataset:dataset,config:config,transposed:isColumns,layout:$.extend(!0,{},layout,{width:chartWidth,height:chartHeight,margin:{b:80},xaxis:{title:null==titleVector?"":titleVector.getValue(rowIndexTwo),showticklabels:!1}})})}else this._createScatter({isColumnScatter:isColumnScatter,rowIndexOne:rowIndexOne,rowIndexTwo:rowIndexTwo,colorByVector:colorByVector,colorModel:colorModel,colorByGetter:function(item){return colorByVector.getValue(item.column)},sizeByVector:sizeByVector,sizeFunction:sizeByScale,myPlot:myPlot,dataset:dataset,config:config,layout:$.extend(!0,{},layout,{width:chartWidth,height:chartHeight,margin:{b:80},yaxis:{title:null==titleVector?"":titleVector.getValue(rowIndexOne)},xaxis:{title:null==titleVector?"":titleVector.getValue(rowIndexTwo)}})})}}}},morpheus.CollapseDatasetTool=function(){},morpheus.CollapseDatasetTool.Functions=[morpheus.Mean,morpheus.Median,new morpheus.MaxPercentiles([25,75]),morpheus.Min,morpheus.Max],morpheus.CollapseDatasetTool.Functions.fromString=function(s){for(var i=0;i__index;__index++){__rowView.setIndex(__index);var __val=eval(__formula);"function"==typeof __val&&(__val=""),__vector.setValue(__index,__val)}__project.trigger("trackChanged",{vectors:[__vector],render:["text"],columns:isColumns})}},morpheus.DendrogramEnrichmentTool=function(isColumns){this.isColumns=isColumns},morpheus.DendrogramEnrichmentTool.prototype={toString:function(){return"Dendrogram Enrichment"},gui:function(project){var dataset=project.getSortedFilteredDataset(),fields=morpheus.MetadataUtil.getMetadataNames(this.isColumns?dataset.getColumnMetadata():dataset.getRowMetadata());return[{name:"field",options:fields,type:"bootstrap-select",multiple:!1},{name:"min_p-value_for_enrichment",type:"text",value:"0.05"},{name:"minimum_number_of_total_members_in_group",type:"text",value:"5"},{name:"minimum_number_of_members_in_group",type:"text",value:"3"}]},execute:function(options){var project=options.project,controller=options.controller,pValue=options.input["min_p-value_for_enrichment"],minTotalGroupSize=options.input.minimum_number_of_total_members_in_group,minGroupSize=options.input.minimum_number_of_members_in_group,dataset=project.getSortedFilteredDataset(),dendrogram=this.isColumns?controller.columnDendrogram:controller.rowDendrogram,vector=this.isColumns?dataset.getColumnMetadata().getByName(options.input.field):dataset.getRowMetadata().getByName(options.input.field),valueToIndices=morpheus.VectorUtil.createValueToIndicesMap(vector),valueToGlobalCount=new morpheus.Map,values=[];valueToIndices.forEach(function(indices,value){valueToGlobalCount.set(value,indices.length),values.push(value)});var nvalues=values.length,N=vector.size();morpheus.AbstractDendrogram.dfs(dendrogram.tree.rootNode,function(node){delete node.info;for(var valueToCount=new morpheus.Map,i=0;nvalues>i;i++)valueToCount.set(values[i],0);var min=node.minIndex,max=node.maxIndex,n=max-min+1;if(n>1&&n>=minTotalGroupSize){for(var i=min;max>=i;i++){var value=vector.getValue(i);valueToCount.set(value,valueToCount.get(value)+1)}for(var i=0;nvalues>i;i++){var K=valueToGlobalCount.get(values[i]),k=valueToCount.get(values[i]);if(k>=minGroupSize){var a=k,b=K-k,c=n-k,d=N+k-n-K,p=morpheus.FisherExact.fisherTest(a,b,c,d);pValue>=p&&(node.info||(node.info={}),node.info[values[i]]=p)}}}return!0}),dendrogram.setInvalid(!0),dendrogram.repaint()}},morpheus.DevAPI=function(){},morpheus.DevAPI.prototype={toString:function(){return"API"},gui:function(){return[{name:"code",value:"",type:"textarea",required:!0,help:"Enter your code"}]},execute:function(options){var project=options.project,controller=options.controller,code=options.input.code,dataset=project.getSortedFilteredDataset();eval(code),project.setFullDataset(project.getFullDataset(),!0)}},morpheus.HClusterTool=function(){},morpheus.HClusterTool.PRECOMPUTED="Matrix values (for a precomputed distance matrix)",morpheus.HClusterTool.Functions=[morpheus.Euclidean,morpheus.Jaccard,new morpheus.OneMinusFunction(morpheus.Cosine),new morpheus.OneMinusFunction(morpheus.Pearson),new morpheus.OneMinusFunction(morpheus.Spearman),morpheus.HClusterTool.PRECOMPUTED],morpheus.HClusterTool.Functions.fromString=function(s){for(var i=0;i0?new morpheus.HClusterGroupBy(d,groupByFields,f,linkageMethod):new morpheus.HCluster(morpheus.HCluster.computeDistanceMatrix(d,f),linkageMethod)};return rows&&(rowsHcl=doCluster(input.selectedColumns?new morpheus.SlicedDatasetView(dataset,null,input.selectedColumns):dataset,input.group_rows_by)),columns&&(columnsHcl=doCluster(morpheus.DatasetUtil.transposedView(input.selectedRows?new morpheus.SlicedDatasetView(dataset,input.selectedRows,null):dataset),input.group_columns_by)),{rowsHcl:rowsHcl,columnsHcl:columnsHcl}},morpheus.HClusterTool.prototype={toString:function(){return"Hierarchical Clustering"},init:function(project,form){form.setOptions("group_rows_by",morpheus.MetadataUtil.getMetadataNames(project.getFullDataset().getRowMetadata())),form.setOptions("group_columns_by",morpheus.MetadataUtil.getMetadataNames(project.getFullDataset().getColumnMetadata())),form.setVisible("group_rows_by",!1),form.setVisible("cluster_rows_in_space_of_selected_columns_only",!1),form.$form.find("[name=cluster]").on("change",function(e){var val=$(this).val(),showGroupColumns=!1,showGroupRows=!1;"Columns"===val?showGroupColumns=!0:"Rows"===val?showGroupRows=!0:(showGroupColumns=!0,showGroupRows=!0),form.setVisible("group_columns_by",showGroupColumns),form.setVisible("group_rows_by",showGroupRows),form.setVisible("cluster_columns_in_space_of_selected_rows_only",showGroupColumns),form.setVisible("cluster_rows_in_space_of_selected_columns_only",showGroupRows)})},gui:function(){return[{name:"metric",options:morpheus.HClusterTool.Functions,value:morpheus.HClusterTool.Functions[3].toString(),type:"select"},{name:"cluster",options:["Columns","Rows","Rows and columns"],value:"Columns",type:"select"},{name:"linkage_method",options:["Average","Complete","Single"],value:"Average",type:"select"},{name:"group_columns_by",options:[],type:"bootstrap-select",multiple:!0},{name:"group_rows_by",options:[],type:"bootstrap-select",multiple:!0},{name:"cluster_columns_in_space_of_selected_rows_only",type:"checkbox"},{name:"cluster_rows_in_space_of_selected_columns_only",type:"checkbox"}]},execute:function(options){var project=options.project,controller=options.controller,selectedRows=options.input.cluster_columns_in_space_of_selected_rows_only?project.getRowSelectionModel().getViewIndices().values():null,selectedColumns=options.input.cluster_rows_in_space_of_selected_columns_only?project.getColumnSelectionModel().getViewIndices().values():null,rows="Rows"==options.input.cluster||"Rows and columns"==options.input.cluster,columns="Columns"==options.input.cluster||"Rows and columns"==options.input.cluster;options.input.selectedRows=selectedRows,options.input.selectedColumns=selectedColumns;var dataset=project.getSortedFilteredDataset();if(options.input.background!==!1){var subtitle=["clustering "];rows&&subtitle.push(dataset.getRowCount()+" row"+morpheus.Util.s(dataset.getRowCount())),columns&&(subtitle.push(rows?", ":""),subtitle.push(dataset.getColumnCount()+" column"+morpheus.Util.s(dataset.getColumnCount())));var blob=new Blob(["self.onmessage = function(e) {importScripts(e.data.scripts);self.postMessage(morpheus.HClusterTool.execute(morpheus.Dataset.fromJson(e.data.dataset), e.data.input));}"]),url=window.URL.createObjectURL(blob),worker=new Worker(url);return worker.postMessage({scripts:morpheus.Util.getScriptPath(),dataset:morpheus.Dataset.toJson(dataset,{columnFields:options.input.group_columns_by||[],rowFields:options.input.group_rows_by||[]}),input:options.input}),worker.onmessage=function(e){var result=e.data;result.rowsHcl&&controller.setDendrogram(result.rowsHcl.tree,!1,result.rowsHcl.reorderedIndices),result.columnsHcl&&controller.setDendrogram(result.columnsHcl.tree,!0,result.columnsHcl.reorderedIndices),worker.terminate(),window.URL.revokeObjectURL(url)},worker}var result=morpheus.HClusterTool.execute(dataset,options.input);result.rowsHcl&&controller.setDendrogram(result.rowsHcl.tree,!1,result.rowsHcl.reorderedIndices),result.columnsHcl&&controller.setDendrogram(result.columnsHcl.tree,!0,result.columnsHcl.reorderedIndices)}},morpheus.MarkerSelection=function(){},morpheus.MarkerSelection.Functions=[morpheus.FisherExact,morpheus.FoldChange,morpheus.SignalToNoise,morpheus.createSignalToNoiseAdjust(),morpheus.TTest],morpheus.MarkerSelection.Functions.fromString=function(s){for(var i=0;i0&&$field.val($field[0].options[0].value),updateAB($field.val());var $metric=form.$form.find("[name=metric]");$metric.on("change",function(e){var isFishy="Fisher Exact Test"===$(this).val();form.setVisible("grouping_value",isFishy),form.setVisible("permutations",!isFishy),form.setVisible("number_of_markers",!isFishy)}),form.setVisible("grouping_value",!1)},gui:function(project){var dataset=project.getSortedFilteredDataset(),fields=morpheus.MetadataUtil.getMetadataNames(dataset.getColumnMetadata());return[{name:"metric",options:morpheus.MarkerSelection.Functions,value:morpheus.SignalToNoise.toString(),type:"select",help:""},{name:"grouping_value",value:"1",help:"Class values are categorized into two groups based on whether dataset values are greater than or equal to this value"},{name:"field",options:fields,type:"select",multiple:!0},{name:"class_a",title:"Class A",options:[],value:"",type:"checkbox-list",multiple:!0},{name:"class_b",title:"Class B",options:[],value:"",type:"checkbox-list",multiple:!0},{name:"number_of_markers",value:"100",type:"text",help:'The initial number of markers to show in each direction. Click to change.'},{name:"permutations",value:"0",type:"text"}]},execute:function(options){function done(){project.getRowFilter().getFilters().length>0&&project.getRowFilter().setAnd(!0,!0);for(var rowFilters=project.getRowFilter().getFilters(),i=0;ii;i++){var abcd=morpheus.createContingencyTable(list1.setIndex(i),list2.setIndex(i),groupingValue);contingencyTableVector.setValue(i,"[["+abcd[0]+", "+abcd[1]+"], ["+abcd[2]+", "+abcd[3]+"]]");var ratio=abcd[0]*abcd[3]/(abcd[1]*abcd[2]);(isNaN(ratio)||ratio===Number.POSITIVE_INFINITY)&&(ratio=0),oddsRatioVector.setValue(i,ratio),v.setValue(i,morpheus.FisherExact.fisherTest(abcd[0],abcd[1],abcd[2],abcd[3])),pvalues.push(v.getValue(i))}for(var fdr=morpheus.FDR_BH(pvalues),i=0,size=dataset.getRowCount();size>i;i++)fdrVector.setValue(i,fdr[i]);vectors.push(oddsRatioVector),vectors.push(fdrVector),vectors.push(contingencyTableVector),done()}else{if(npermutations>0){options.input.numClassA=aIndices.length,options.input.npermutations=npermutations;var blob=new Blob(["self.onmessage = function(e) {importScripts(e.data.scripts);self.postMessage(morpheus.MarkerSelection.execute(morpheus.Dataset.fromJson(e.data.dataset), e.data.input));}"]),url=window.URL.createObjectURL(blob),worker=new Worker(url),subset=new morpheus.SlicedDatasetView(dataset,null,aIndices.concat(bIndices));return worker.postMessage({scripts:morpheus.Util.getScriptPath(),dataset:morpheus.Dataset.toJson(subset,{columnFields:[],rowFields:[]}),input:options.input}),worker.onmessage=function(e){for(var result=e.data,pvalueVector=dataset.getRowMetadata().add("p_value"),fdrVector=dataset.getRowMetadata().add("FDR(BH)"),kVector=dataset.getRowMetadata().add("k"),i=0,size=pvalueVector.size();size>i;i++)pvalueVector.setValue(i,result.rowSpecificPValues[i]),fdrVector.setValue(i,result.fdr[i]),kVector.setValue(i,result.k[i]),v.setValue(i,result.scores[i]);vectors.push(pvalueVector),vectors.push(fdrVector),vectors.push(kVector),done(),worker.terminate(),window.URL.revokeObjectURL(url)},worker}for(var i=0,size=dataset.getRowCount();size>i;i++)v.setValue(i,f(list1.setIndex(i),list2.setIndex(i)));done()}}},morpheus.NearestNeighbors=function(){},morpheus.NearestNeighbors.Functions=[morpheus.Cosine,morpheus.Euclidean,morpheus.Jaccard,morpheus.Pearson,morpheus.Spearman,morpheus.WeightedMean],morpheus.NearestNeighbors.Functions.fromString=function(s){for(var i=0;i1){for(var columnView=new morpheus.DatasetColumnView(d1),newDataset=new morpheus.Dataset({name:"",rows:1,columns:d1.getColumnCount()}),j=0,ncols=d1.getColumnCount();ncols>j;j++){var v=morpheus.Percentile(columnView.setIndex(j),50);newDataset.setValue(0,j,v)}d1=newDataset}list1=new morpheus.DatasetRowView(d1);var list2=new morpheus.DatasetRowView(dataset),v=dataset.getRowMetadata().getByName(f.toString());null==v&&(v=dataset.getRowMetadata().add(f.toString()));for(var i=0,size=dataset.getRowCount();size>i;i++)v.setValue(i,f(list1,list2.setIndex(i)));isColumns?project.setColumnSortKeys([new morpheus.SortKey(f.toString(),morpheus.SortKey.SortOrder.DESCENDING)],!0):project.setRowSortKeys([new morpheus.SortKey(f.toString(),morpheus.SortKey.SortOrder.DESCENDING)],!0),project.trigger("trackChanged",{vectors:[v],render:["text"],columns:isColumns})}},morpheus.NewHeatMapTool=function(){},morpheus.NewHeatMapTool.prototype={toString:function(){return"New Heat Map (Ctrl+X)"},execute:function(options){var project=options.project,controller=options.controller,dataset=project.getSelectedDataset({selectedRows:!0,selectedColumns:!0});morpheus.DatasetUtil.shallowCopy(dataset);var name=options.input.name||controller.getName();new morpheus.HeatMap({name:name,dataset:dataset,parent:controller})}},morpheus.OpenDatasetTool=function(){this.customUrls=[]},morpheus.OpenDatasetTool.fileExtensionPrompt=function(file,callback){var ext=morpheus.Util.getExtension(morpheus.Util.getFileName(file));"maf"===ext?this._promptMaf(function(mafGeneFilter){callback(mafGeneFilter)}):"seg"===ext||"segtab"===ext?this._promptSegtab(function(regions){callback(regions)}):callback(null)},morpheus.OpenDatasetTool._promptMaf=function(promptCallback){var formBuilder=new morpheus.FormBuilder;formBuilder.append({name:"MAF_gene_symbols",value:"",type:"textarea",required:!0,help:"Enter one gene symbol per line to filter genes. Leave blank to show all genes."}),morpheus.FormBuilder.showInModal({title:"Gene Symbols",html:formBuilder.$form,close:"OK",callback:function(){for(var text=formBuilder.getValue("MAF_gene_symbols"),lines=morpheus.Util.splitOnNewLine(text),mafGeneFilter=new morpheus.Map,i=0,nlines=lines.length,counter=0;nlines>i;i++){var line=lines[i];""!==line&&mafGeneFilter.set(line,counter++)}var readOptions=mafGeneFilter.size()>0?{mafGeneFilter:mafGeneFilter}:null;promptCallback(readOptions)}})},morpheus.OpenDatasetTool._promptSegtab=function(promptCallback){var formBuilder=new morpheus.FormBuilder;formBuilder.append({name:"regions",value:"",type:"textarea",required:!0,help:"Define the regions over which you want to define the CNAs. Enter one region per line. Each line should contain region_id, chromosome, start, and end separated by a tab. Leave blank to use all unique segments in the segtab file as regions."}),morpheus.FormBuilder.showInModal({title:"Regions",html:formBuilder.$form,close:"OK",callback:function(){for(var text=formBuilder.getValue("regions"),lines=morpheus.Util.splitOnNewLine(text),regions=[],tab=/\t/,i=0,nlines=lines.length;nlines>i;i++){var line=lines[i];if(""!==line){var tokens=line.split(tab);tokens.length>=4&®ions.push({id:tokens[0],chromosome:tokens[1],start:parseInt(tokens[2]),end:parseInt(tokens[3])})}}var readOptions=regions.length>0?{regions:regions}:null;promptCallback(readOptions)}})},morpheus.OpenDatasetTool.prototype={toString:function(){return"Open Dataset"},_read:function(options,deferred){var _this=this,project=options.project,controller=options.controller,file=options.input.file,action=options.input.open_file_action,dataset=project.getSortedFilteredDataset();deferred.fail(function(err){var message=["Error opening "+morpheus.Util.getFileName(file)+"."];err.message&&(message.push("
    Cause: "),message.push(err.message)),morpheus.FormBuilder.showInModal({title:"Error",html:message.join("")})}),deferred.done(function(newDataset){morpheus.Util.getExtension(morpheus.Util.getFileName(file)),morpheus.Util.getBaseFileName(morpheus.Util.getFileName(file));if("append"===action||"append columns"===action){var appendRows="append"===action;_.each(controller.options.rows,function(item){if(item.renameTo){var v=newDataset.getRowMetadata().getByName(item.field);v&&v.setName(item.renameTo)}}),_.each(controller.options.columns,function(item){if(item.renameTo){var v=newDataset.getColumnMetadata().getByName(item.field);v&&v.setName(item.renameTo)}}),controller.options.datasetReady&&controller.options.datasetReady(newDataset);var currentDatasetMetadataNames=morpheus.MetadataUtil.getMetadataNames(appendRows?dataset.getColumnMetadata():dataset.getRowMetadata()),newDatasetMetadataNames=morpheus.MetadataUtil.getMetadataNames(appendRows?newDataset.getColumnMetadata():newDataset.getRowMetadata());if(currentDatasetMetadataNames.length>1||newDatasetMetadataNames.length>1)_this._matchAppend(newDatasetMetadataNames,currentDatasetMetadataNames,controller,function(appendOptions){if(controller.getProject().setFullDataset(appendRows?new morpheus.JoinedDataset(dataset,newDataset,appendOptions.current_dataset_annotation_name,appendOptions.new_dataset_annotation_name):new morpheus.TransposedDatasetView(new morpheus.JoinedDataset(new morpheus.TransposedDatasetView(dataset),new morpheus.TransposedDatasetView(newDataset),appendOptions.current_dataset_annotation_name,appendOptions.new_dataset_annotation_name)),!0),controller.options.renderReady&&(controller.options.renderReady(controller),controller.updateDataset()),appendRows){controller.getHeatMapElementComponent().getColorScheme().setSeparateColorSchemeForRowMetadataField("Source");var sourcesSet=morpheus.VectorUtil.getSet(controller.getProject().getFullDataset().getRowMetadata().getByName("Source"));sourcesSet.forEach(function(source){controller.autoDisplay({extension:morpheus.Util.getExtension(source),filename:source})})}controller.tabManager.setTabTitle(controller.tabId,controller.getProject().getFullDataset().getRowCount()+" row"+morpheus.Util.s(controller.getProject().getFullDataset().getRowCount())+" x "+controller.getProject().getFullDataset().getColumnCount()+" column"+morpheus.Util.s(controller.getProject().getFullDataset().getColumnCount())),controller.revalidate()});else{if(controller.getProject().setFullDataset(appendRows?new morpheus.JoinedDataset(dataset,newDataset,currentDatasetMetadataNames[0],newDatasetMetadataNames[0]):new morpheus.TransposedDatasetView(new morpheus.JoinedDataset(new morpheus.TransposedDatasetView(dataset),new morpheus.TransposedDatasetView(newDataset),currentDatasetMetadataNames[0],newDatasetMetadataNames[0])),!0),controller.options.renderReady&&(controller.options.renderReady(controller),controller.updateDataset()),appendRows){controller.getHeatMapElementComponent().getColorScheme().setSeparateColorSchemeForRowMetadataField("Source");var sourcesSet=morpheus.VectorUtil.getSet(controller.getProject().getFullDataset().getRowMetadata().getByName("Source"));sourcesSet.forEach(function(source){controller.autoDisplay({extension:morpheus.Util.getExtension(source),filename:source})})}controller.tabManager.setTabTitle(controller.tabId,controller.getProject().getFullDataset().getRowCount()+" row"+morpheus.Util.s(controller.getProject().getFullDataset().getRowCount())+" x "+controller.getProject().getFullDataset().getColumnCount()+" column"+morpheus.Util.s(controller.getProject().getFullDataset().getColumnCount())),controller.revalidate()}}else"overlay"===action?_this._matchOverlay(morpheus.MetadataUtil.getMetadataNames(newDataset.getColumnMetadata()),morpheus.MetadataUtil.getMetadataNames(dataset.getColumnMetadata()),morpheus.MetadataUtil.getMetadataNames(newDataset.getRowMetadata()),morpheus.MetadataUtil.getMetadataNames(dataset.getRowMetadata()),controller,function(appendOptions){for(var rowValueToIndexMap=morpheus.VectorUtil.createValueToIndexMap(dataset.getRowMetadata().getByName(appendOptions.current_dataset_row_annotation_name)),columnValueToIndexMap=morpheus.VectorUtil.createValueToIndexMap(dataset.getColumnMetadata().getByName(appendOptions.current_dataset_column_annotation_name)),seriesIndex=dataset.addSeries({name:newDataset.getName(),dataType:"object"}),rowVector=newDataset.getRowMetadata().getByName(appendOptions.new_dataset_row_annotation_name),rowIndices=[],newDatasetRowIndicesSubset=[],i=0,size=rowVector.size();size>i;i++){var index=rowValueToIndexMap.get(rowVector.getValue(i));void 0!==index&&(rowIndices.push(index),newDatasetRowIndicesSubset.push(i))}for(var columnVector=newDataset.getColumnMetadata().getByName(appendOptions.new_dataset_column_annotation_name),columnIndices=[],newDatasetColumnIndicesSubset=[],i=0,size=columnVector.size();size>i;i++){var index=columnValueToIndexMap.get(columnVector.getValue(i));void 0!==index&&(columnIndices.push(index),newDatasetColumnIndicesSubset.push(i))}newDataset=new morpheus.SlicedDatasetView(newDataset,newDatasetRowIndicesSubset,newDatasetColumnIndicesSubset);for(var i=0,nrows=newDataset.getRowCount();nrows>i;i++)for(var j=0,ncols=newDataset.getColumnCount();ncols>j;j++)dataset.setValue(rowIndices[i],columnIndices[j],newDataset.getValue(i,j),seriesIndex)}):"open"===action?new morpheus.HeatMap({dataset:newDataset,parent:controller,inheritFromParent:!1}):console.log("Unknown action: "+action);controller.revalidate()})},execute:function(options){var file=options.input.file,_this=this;morpheus.OpenDatasetTool.fileExtensionPrompt(file,function(readOptions){var deferred=morpheus.DatasetUtil.read(file,readOptions);_this._read(options,deferred)})},_matchAppend:function(newDatasetMetadataNames,currentDatasetMetadataNames,controller,callback){var tool={};tool.execute=function(options){return options.input},tool.toString=function(){return"Select Fields"},tool.gui=function(){var items=[{name:"current_dataset_annotation_name",options:currentDatasetMetadataNames,type:"select",required:!0}];return items.push({name:"new_dataset_annotation_name",type:"select",options:newDatasetMetadataNames,required:!0}),items},morpheus.HeatMap.showTool(tool,controller,callback)},_matchOverlay:function(newDatasetColumnMetadataNames,currentDatasetColumnMetadataNames,newDatasetRowMetadataNames,currentDatasetRowMetadataNames,controller,callback){var tool={};tool.execute=function(options){return options.input},tool.toString=function(){return"Select Fields"},tool.gui=function(){var items=[];return items.push({name:"current_dataset_column_annotation_name",options:currentDatasetColumnMetadataNames,type:"select",required:!0}),items.push({name:"new_dataset_column_annotation_name",type:"select",options:newDatasetColumnMetadataNames,required:!0}),items.push({name:"current_dataset_row_annotation_name",options:currentDatasetRowMetadataNames,type:"select",required:!0}),items.push({name:"new_dataset_row_annotation_name",type:"select",options:newDatasetRowMetadataNames,required:!0}),items},morpheus.HeatMap.showTool(tool,controller,callback)}},morpheus.OpenDendrogramTool=function(file){this._file=file},morpheus.OpenDendrogramTool.prototype={toString:function(){return"Open Dendrogram"},init:function(project,form){var setValue=function(val){var isRows="Rows"===val,names=morpheus.MetadataUtil.getMetadataNames(isRows?project.getFullDataset().getRowMetadata():project.getFullDataset().getColumnMetadata());names.unshift("Newick file does not contain node ids"),form.setOptions("match_node_id_to",names)};form.$form.find("[name=orientation]").on("change",function(e){setValue($(this).val())}),setValue("Columns")},gui:function(){return[{name:"orientation",options:["Columns","Rows"],value:"Columns",type:"radio"},{name:"match_node_id_to",options:[],type:"select"}]},execute:function(options){var fileOrUrl=this._file,isColumns="Columns"===options.input.orientation,dendrogramField=options.input.match_node_id_to;"Newick file does not contain node ids"===dendrogramField&&(dendrogramField=null);var controller=options.controller,dendrogramDeferred=morpheus.Util.getText(fileOrUrl);dendrogramDeferred.done(function(text){var dataset=options.project.getSortedFilteredDataset();isColumns&&(dataset=morpheus.DatasetUtil.transposedView(dataset));var tree=morpheus.AbstractDendrogram.parseNewick(text);if(tree.leafNodes.length!==dataset.getRowCount())throw new Error("# leaf nodes in dendrogram "+tree.leafNodes.length+" != "+dataset.getRowCount());var indices=[];if(null!=dendrogramField)for(var vector=dataset.getRowMetadata().getByName(dendrogramField),valueToIndex=morpheus.VectorUtil.createValueToIndexMap(vector),i=0,length=tree.leafNodes.length;length>i;i++){var index=valueToIndex.get(tree.leafNodes[i].name);if(void 0===index)throw new Error("Unable to find dendrogram id "+tree.leafNodes[i].name+" in annotations");indices.push(index)}else for(var i=0,length=tree.leafNodes.length;length>i;i++)indices.push(i);controller.setDendrogram(tree,isColumns,indices)})}},morpheus.OpenFileTool=function(options){this.options=options||{}},morpheus.OpenFileTool.prototype={toString:function(){return"Open File"},gui:function(){var array=[{name:"open_file_action",options:[{name:"Annotate columns",value:"Annotate Columns"},{name:"Annotate rows",value:"Annotate Rows"},{divider:!0},{name:"Append rows to current dataset",value:"append"},{name:"Append columns to current dataset",value:"append columns"},{name:"Overlay onto current dataset",value:"overlay"},{name:"Open dataset in new tab",value:"open"},{divider:!0},{name:"Open dendrogram",value:"Open dendrogram"}],value:"open",type:"bootstrap-select"},{name:"file",showLabel:!1,placeholder:"Open your own file",value:"",type:"file",required:!0,help:morpheus.DatasetUtil.DATASET_FILE_FORMATS}];return array.options={ok:!1,size:"modal-lg"},array},init:function(project,form,initOptions){form.$form.find("[name=open_file_action]").on("change",function(e){var action=$(this).val();"append columns"===action||"append"===action||"open"===action||"overlay"===action?form.setHelpText("file",morpheus.DatasetUtil.DATASET_FILE_FORMATS):"Open dendrogram"===action?form.setHelpText("file",morpheus.DatasetUtil.DENDROGRAM_FILE_FORMATS):form.setHelpText("file",morpheus.DatasetUtil.ANNOTATION_FILE_FORMATS)}),$("

    Use your own file

    ").insertAfter(form.$form.find(".form-group:first"));var _this=this,id=_.uniqueId("morpheus");form.$form.append('

    ');var $sampleDatasets=$('
    ');form.$form.append($sampleDatasets);new morpheus.SampleDatasets({$el:$sampleDatasets,callback:function(heatMapOptions){form.setValue("file",heatMapOptions.dataset),_this.ok()}});form.on("change",function(e){var value=e.value;""!==value&&null!=value&&(form.setValue("file",value),_this.ok())})},execute:function(options){var that=this;this.options.file&&(options.input.file=this.options.file);var project=options.project;if("append columns"===options.input.open_file_action||"append"===options.input.open_file_action||"open"===options.input.open_file_action||"overlay"===options.input.open_file_action)(new morpheus.OpenDatasetTool).execute(options);else if("Open dendrogram"===options.input.open_file_action)morpheus.HeatMap.showTool(new morpheus.OpenDendrogramTool(options.input.file),options.controller);else{var controller=options.controller,isAnnotateColumns="Annotate Columns"==options.input.open_file_action,fileOrUrl=options.input.file,dataset=project.getFullDataset(),fileName=morpheus.Util.getFileName(fileOrUrl);if(morpheus.Util.endsWith(fileName,".cls")){var result=morpheus.Util.readLines(fileOrUrl);result.done(function(lines){that.annotateCls(controller,dataset,fileName,isAnnotateColumns,lines)})}else if(morpheus.Util.endsWith(fileName,".gmt"))morpheus.BufferedReader.getArrayBuffer(fileOrUrl,function(err,buf){if(err)throw new Error("Unable to read "+fileOrUrl);var sets=(new morpheus.GmtReader).read(new morpheus.BufferedReader(new Uint8Array(buf)));that.prompt(null,dataset,controller,isAnnotateColumns,sets)});else{var result=morpheus.Util.readLines(fileOrUrl);result.done(function(lines){that.prompt(lines,dataset,controller,isAnnotateColumns,null)})}}},annotateCls:function(controller,dataset,fileName,isColumns,lines){isColumns&&(dataset=morpheus.DatasetUtil.transposedView(dataset));var assignments=(new morpheus.ClsReader).read(lines);if(assignments.length!==dataset.getRowCount())throw new Error("Number of samples in cls file does not match dataset.");for(var vector=dataset.getRowMetadata().add(morpheus.Util.getBaseFileName(fileName)),i=0;ii;i++){var line=lines[i].split(tab),id=line[fileMatchOnColumnIndex],indices=idToIndices.get(id);if(void 0!==indices)for(var nIndices=indices.length,j=0;nheaders>j;j++)for(var token=line[columnIndices[j]],v=vectors[j],r=0;nIndices>r;r++)v.setValue(indices[r],token)}}else _.each(sets,function(set){var name=set.name,members=set.ids,v=dataset.getRowMetadata().add(name);vectors.push(v),_.each(members,function(id){var indices=idToIndices.get(id);if(void 0!==indices)for(var i=0,nIndices=indices.length;nIndices>i;i++)v.setValue(indices[i],name)})});for(var i=0;iGCT 1.3 or GCT 1.2 file name',required:!0},{name:"file_format",type:"radio",options:[{name:"GCT version 1.2",value:"1.2"},{name:"GCT version 1.3",value:"1.3"}],value:"1.3",required:!0}]},execute:function(options){var project=options.project,format=options.input.file_format,fileName=options.input.file_name,dataset=(options.controller,project.getSortedFilteredDataset()),text="1.2"===format?(new morpheus.GctWriter12).write(dataset):(new morpheus.GctWriter).write(dataset),blob=new Blob([text],{type:"text/plain;charset=charset=utf-8"});morpheus.Util.endsWith(fileName.toLowerCase(),".gct")||(fileName+=".gct"),saveAs(blob,fileName,!0)}},morpheus.SaveImageTool=function(){},morpheus.SaveImageTool.prototype={toString:function(){return"Save Image"},gui:function(){return[{name:"file_name",type:"text",required:!0},{name:"format",type:"select",options:["png","svg"],value:"svg",required:!0}]},execute:function(options){var fileName=options.input.file_name,format=options.input.format;morpheus.Util.endsWith(fileName.toLowerCase(),"."+format)||(fileName+="."+format);var controller=options.controller;controller.saveImage(fileName,format)}},morpheus.TransposeTool=function(){},morpheus.TransposeTool.prototype={toString:function(){return"Transpose"},execute:function(options){var project=options.project,controller=options.controller,dataset=new morpheus.TransposedDatasetView(project.getSortedFilteredDataset()),rowMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getRowMetadata()),columnMetadataModel=morpheus.MetadataUtil.shallowCopy(dataset.getColumnMetadata());dataset.getRowMetadata=function(){return rowMetadataModel},dataset.getColumnMetadata=function(){return columnMetadataModel};var name=options.input.name||controller.getName();new morpheus.HeatMap({name:name,dataset:dataset,inheritFromParentOptions:{transpose:!0},parent:controller})}},morpheus.WordCloudTool=function(){},morpheus.WordCloudTool.draw=function(options){function draw(words){g.selectAll("text").data(words).enter().append("text").style("font-family","Impact").on("mouseover",function(d){d3.select(this).transition().style("font-size",2*fontSizeScale(d.size)+"px")}).on("mouseout",function(d){d3.select(this).transition().style("font-size",fontSizeScale(d.size)+"px")}).on("click",function(d){options.heatMap.getToolbar().setSearchText({isColumns:options.isColumns,text:d.text.indexOf(" ")?'"'+d.text+'"':d.text})}).style("fill",function(d,i){return fill(i)}).attr("text-anchor","middle").attr("transform",function(d){return"translate("+[d.x,d.y]+")rotate("+d.rotate+")"}).text(function(d){return d.text}).style("font-size",function(d){return"1px"}).transition().duration(1e3).style("font-size",function(d){return fontSizeScale(d.size)+"px"})}var width=options.width,height=options.height,words=options.words,maxSize=options.maxSize,minSize=options.minSize,fill=options.fill||d3.scale.category20b(),fontSizeScale=d3.scale.linear().range([12,24]).domain([minSize,maxSize]).clamp(!0),g=d3.select(options.el).append("svg").attr("width",width).attr("height",height).append("g");g.attr("transform","translate("+[width/2,height/2]+")"),g.style("font-weight","900");var angle=d3.scale.linear().domain([0,0]).range([0,0]).clamp(!0);d3.layout.cloud().spiral("archimedean").size([width,height]).words(words).rotate(function(){return angle(~~(5*Math.random()))}).fontSize(function(d){return d.size}).on("end",draw).start()},morpheus.WordCloudTool.drawTable=function(options){var width=options.width,maxSize=options.maxSize,minSize=options.minSize,words=options.words;words.sort(function(a,b){return a.size===b.size?0:a.sizei;i++)minSize=Math.min(minSize,words[i].size),maxSize=Math.max(maxSize,words[i].size);var fill=function(value){return colorModel.getMappedValue(vector,words[value].text)},$dialog=$('
    '),width=960,height=600; +$dialog.dialog({resizable:!0,height:height+30,width:width+30}),morpheus.WordCloudTool.draw({minSize:minSize,maxSize:maxSize,isColumns:isColumns,heatMap:controller,el:$dialog[0],width:width,height:height,words:words,fill:fill}),morpheus.WordCloudTool.drawTable({minSize:minSize,maxSize:maxSize,isColumns:isColumns,heatMap:controller,el:$dialog[0],width:width,words:words})}},morpheus.AbstractCanvas=function(offscreen){this.canvas=morpheus.CanvasUtil.createCanvas(),this.lastClip=null,offscreen&&(this.offscreenCanvas=morpheus.CanvasUtil.createCanvas()),this.offset={x:0,y:0}},morpheus.AbstractCanvas.prototype={visible:!0,invalid:!0,scrollX:0,scrollY:0,prefWidth:void 0,prefHeight:void 0,getCanvas:function(){return this.canvas},scrollTop:function(pos){return void 0===pos?this.offset.y:void(this.offset.y=pos)},appendTo:function($el){$(this.canvas).appendTo($el)},scrollLeft:function(pos){return void 0===pos?this.offset.x:void(this.offset.x=pos)},dispose:function(){$(this.canvas).remove(),this.offscreenCanvas=void 0},getPrefWidth:function(){return this.prefWidth},setInvalid:function(invalid){this.invalid=invalid},setBounds:function(bounds){var backingScale=morpheus.CanvasUtil.BACKING_SCALE,canvases=[this.canvas];this.offscreenCanvas&&canvases.push(this.offscreenCanvas),null!=bounds.height&&_.each(canvases,function(canvas){canvas.height=bounds.height*backingScale,canvas.style.height=bounds.height+"px"}),null!=bounds.width&&_.each(canvases,function(canvas){canvas.width=bounds.width*backingScale,canvas.style.width=bounds.width+"px"}),null!=bounds.left&&_.each(canvases,function(canvas){canvas.style.left=bounds.left+"px"}),null!=bounds.top&&_.each(canvases,function(canvas){canvas.style.top=bounds.top+"px"})},paint:function(clip){var canvas=this.canvas,context=canvas.getContext("2d");morpheus.CanvasUtil.resetTransform(context);var width=this.getUnscaledWidth(),height=this.getUnscaledHeight();if(context.clearRect(0,0,width,height),this.prePaint&&(morpheus.CanvasUtil.resetTransform(context),context.translate(this.offset.x,this.offset.y),this.prePaint(clip,context)),morpheus.CanvasUtil.resetTransform(context),this.offscreenCanvas){if(this.invalid){var oc=this.offscreenCanvas.getContext("2d");morpheus.CanvasUtil.resetTransform(oc),context.translate(this.offset.x,this.offset.y),oc.clearRect(0,0,width,height),this.draw(clip,oc)}context.drawImage(this.offscreenCanvas,0,0,width,height)}else this.draw(clip,context);this.postPaint&&(morpheus.CanvasUtil.resetTransform(context),context.translate(this.offset.x,this.offset.y),this.postPaint(clip,context)),this.lastClip=clip,this.invalid=!1},repaint:function(){this.lastClip||(this.lastClip={x:0,y:0,width:this.getUnscaledWidth(),height:this.getUnscaledHeight()}),this.paint(this.lastClip)},draw:function(clip,context){console.log("Not implemented")},getPrefHeight:function(){return this.prefHeight},setPrefWidth:function(prefWidth){this.prefWidth=prefWidth},setPrefHeight:function(prefHeight){this.prefHeight=prefHeight},isVisible:function(){return this.visible},setVisible:function(visible){this.visible!==visible&&(this.visible=visible,this.canvas.style.display=visible?"":"none")},getUnscaledWidth:function(){return this.canvas.width/morpheus.CanvasUtil.BACKING_SCALE},getUnscaledHeight:function(){return this.canvas.height/morpheus.CanvasUtil.BACKING_SCALE},getWidth:function(){return this.canvas.width},getHeight:function(){return this.canvas.height}},morpheus.AbstractColorSupplier=function(){this.fractions=[0,.5,1],this.colors=["blue","white","red"],this.names=null,this.min=0,this.max=1,this.missingColor="#c0c0c0",this.scalingMode=morpheus.HeatMapColorScheme.ScalingMode.RELATIVE,this.stepped=!1,this._sizer=new morpheus.HeatMapSizer,this._conditions=new morpheus.HeatMapConditions},morpheus.AbstractColorSupplier.fromJson=function(json){var cs=json.stepped?new morpheus.SteppedColorSupplier:new morpheus.GradientColorSupplier;return cs.setDiscrete(json.discrete),cs.setScalingMode(json.scalingMode),cs.setMin(json.min),cs.setMax(json.max),cs.setMissingColor(json.missingColor),cs.setFractions({colors:json.colors,fractions:json.fractions,names:json.names}),cs},morpheus.AbstractColorSupplier.prototype={discrete:!1,getSizer:function(){return this._sizer},getConditions:function(){return this._conditions},isDiscrete:function(){return this.discrete},setDiscrete:function(discrete){this.discrete=discrete},createInstance:function(){throw"not implemented"},copy:function(){var c=this.createInstance();return c.discrete=this.discrete,c.setFractions({fractions:this.fractions.slice(0),colors:this.colors.slice(0)}),null!=this.names&&(c.names=this.names.slice(0)),this._sizer&&(c._sizer=this._sizer.copy()),this._conditions&&(c._conditions=this._conditions.copy()),c.scalingMode=this.scalingMode,c.min=this.min,c.max=this.max,c.missingColor=this.missingColor,c},setMissingColor:function(missingColor){this.missingColor=missingColor},getMissingColor:function(){return this.missingColor},getScalingMode:function(){return this.scalingMode},setScalingMode:function(scalingMode){scalingMode!==this.scalingMode&&(scalingMode===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE&&(this.min=0,this.max=1),this.scalingMode=scalingMode)},isStepped:function(){return!1},getColor:function(row,column,value){throw"not implemented"},getColors:function(){return this.colors},getNames:function(){return this.names},getFractions:function(){return this.fractions},getMin:function(){return this.min},getMax:function(){return this.max},setMin:function(min){this.min=min},setMax:function(max){this.max=max},setFractions:function(options){var index=morpheus.Util.indexSort(options.fractions,!0);this.fractions=morpheus.Util.reorderArray(options.fractions,index),this.colors=morpheus.Util.reorderArray(options.colors,index),this.names=options.names?morpheus.Util.reorderArray(options.names,index):null}},morpheus.AbstractComponent=function(){this.lastClip=null;var c=document.createElement("div");c.setAttribute("tabindex","0"),c.style.outline=0,c.style.overflow="hidden",c.style.position="absolute",this.el=c,this.$el=$(c)},morpheus.AbstractComponent.prototype={visible:!0,invalid:!0,prefWidth:void 0,prefHeight:void 0,appendTo:function($el){$(this.el).appendTo($el)},dispose:function(){$(this.el).remove()},getPrefWidth:function(){return this.prefWidth},setInvalid:function(invalid){this.invalid=invalid},setBounds:function(bounds){null!=bounds.left&&this.$el.css("left",bounds.left+"px"),null!=bounds.top&&this.$el.css("top",bounds.top+"px")},paint:function(clip){this.getUnscaledWidth(),this.getUnscaledHeight();this.draw(clip),this.lastClip=clip,this.invalid=!1},repaint:function(){this.lastClip||(this.lastClip={x:0,y:0,width:this.getUnscaledWidth(),height:this.getUnscaledHeight()}),this.paint(this.lastClip)},draw:function(clip){},getPrefHeight:function(){return this.prefHeight},setPrefWidth:function(prefWidth){this.prefWidth=prefWidth},setPrefHeight:function(prefHeight){this.prefHeight=prefHeight},isVisible:function(){return this.visible},setVisible:function(visible){this.visible!==visible&&(this.visible=visible,this.el.style.display=visible?"":"none")},getUnscaledWidth:function(){return this.$el.width()},getUnscaledHeight:function(){return this.$el.height()},getWidth:function(){return this.$el.width()},getHeight:function(){return this.$el.height()}},morpheus.AbstractDendrogram=function(controller,tree,positions,project,type){morpheus.AbstractCanvas.call(this,!0),this._overviewHighlightColor="#d8b365",this._searchHighlightColor="#e41a1c",this._selectedNodeColor=type===morpheus.AbstractDendrogram.Type.COLUMN?"#377eb8":"#984ea3",this.tree=tree,this.type=type,this.squishEnabled=!1,this.controller=controller,this.positions=positions,this.project=project;var $label=$("");$label.addClass("label label-info"),$label.css("position","absolute"),this.$label=$label;var $squishedLabel=$("");$squishedLabel.addClass("label label-default"),$squishedLabel.css("position","absolute").css("top",18),this.$squishedLabel=$squishedLabel,this.$label=$label,this.cutHeight=this.tree.maxHeight,this.drawLeafNodes=!0,this.lineWidth=.7,this.selectedNodeIds={},this.selectedRootNodeIdToNode={},this.nodeIdToHighlightedPathsToRoot={};var _this=this;this.defaultStroke="rgb(0,0,0)";var mouseMove=function(event){if(!morpheus.CanvasUtil.dragging){var position=morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,_this.lastClip.x,_this.lastClip.y);if(_this.isDragHotSpot(position))_this.canvas.style.cursor=_this.getResizeCursor();else{var nodes;if(_this.getNodes)nodes=_this.getNodes(position);else{var node=_this.getNode(position);node&&(nodes=[node])}if(null!=nodes){nodes.sort(function(a,b){return a.name=radius?_this.tree.maxHeight:Math.max(0,Math.min(_this.tree.maxHeight,_this.scale.invert(radius)))}cutHeight>=_this.tree.maxHeight?_this.resetCutHeight():_this.setCutHeight(cutHeight),event.preventDefault()}}))},morpheus.AbstractDendrogram.Type={COLUMN:0,ROW:1,RADIAL:2},morpheus.AbstractDendrogram.prototype={setSelectedNode:function(node,add){var viewIndices,_this=this,selectionModel=this.type===morpheus.AbstractDendrogram.Type.COLUMN?this.project.getColumnSelectionModel():this.project.getRowSelectionModel();if(null==node)_this.selectedNodeIds={},_this.selectedRootNodeIdToNode={},viewIndices=new morpheus.Set;else if(add?viewIndices=selectionModel.getViewIndices():(viewIndices=new morpheus.Set,_this.selectedNodeIds={},_this.selectedRootNodeIdToNode={}),null!=node){if(void 0===node.children){var contains=_this.nodeIdToHighlightedPathsToRoot[node.id];add||(_this.nodeIdToHighlightedPathsToRoot={}),contains?delete _this.nodeIdToHighlightedPathsToRoot[node.id]:_this.nodeIdToHighlightedPathsToRoot[node.id]=node}else _this.selectedRootNodeIdToNode[node.id]=node,morpheus.AbstractDendrogram.dfs(node,function(d){return _this.selectedNodeIds[d.id]=!0,!0});for(var i=node.minIndex;i<=node.maxIndex;i++)viewIndices.add(i)}_this.trigger("nodeSelectionChanged",_this.selectedRootNodeIdToNode),selectionModel.setViewIndices(viewIndices,!0),_this.repaint()},getPathStroke:function(node){return this.selectedNodeIds[node.id]?this._selectedNodeColor:this.defaultStroke},getNodeFill:function(node){return this.selectedRootNodeIdToNode[node.id]?this._selectedNodeColor:node.search?this._searchHighlightColor:void 0!==node.info?this._overviewHighlightColor:void 0},resetCutHeight:function(){this.positions.setSquishedIndices(null),this.type===morpheus.AbstractDendrogram.Type.COLUMN?this.project.setGroupColumns([],!0):this.project.setGroupRows([],!0),this.$label.text(""),this.$squishedLabel.text("");var dataset=this.project.getSortedFilteredDataset(),clusterIdVector=this.type===morpheus.AbstractDendrogram.Type.COLUMN?dataset.getColumnMetadata().getByName("dendrogram_cut"):dataset.getRowMetadata().getByName("dendrogram_cut");if(clusterIdVector)for(var i=0,size=clusterIdVector.size();size>i;i++)clusterIdVector.setValue(i,NaN)},setCutHeight:function(height){this.cutHeight=height;for(var squishedIndices={},clusterNumber=0,nsquished=0,squishEnabled=this.squishEnabled,roots=morpheus.AbstractDendrogram.cutAtHeight(this.tree.rootNode,this.cutHeight),dataset=this.project.getSortedFilteredDataset(),clusterIdVector=this.type===morpheus.AbstractDendrogram.Type.COLUMN?dataset.getColumnMetadata().add("dendrogram_cut"):dataset.getRowMetadata().add("dendrogram_cut"),i=0,nroots=roots.length;nroots>i;i++){var clusterId,root=roots[i],minChild=morpheus.AbstractDendrogram.getDeepestChild(root,!0),maxChild=morpheus.AbstractDendrogram.getDeepestChild(root,!1);squishEnabled&&minChild.index===maxChild.index?(squishedIndices[minChild.index]=!0,clusterId=-2,nsquished++):(clusterNumber++,clusterId=clusterNumber);for(var j=minChild.index;j<=maxChild.index;j++)clusterIdVector.setValue(j,clusterId)}if(this.$label.text(clusterNumber+" cluster"+morpheus.Util.s(clusterNumber)),nsquished>0?this.$squishedLabel.text(nsquished+" squished"):this.$squishedLabel.text(""),squishEnabled&&this.positions.setSquishedIndices(squishedIndices),-1===this.controller.getTrackIndex(clusterIdVector.getName(),this.type===morpheus.AbstractDendrogram.Type.COLUMN)){var settings={discrete:!0,discreteAutoDetermined:!0,renderMethod:{}};settings.renderMethod[morpheus.VectorTrack.RENDER.COLOR]=!0,this.controller.addTrack(clusterIdVector.getName(),this.type===morpheus.AbstractDendrogram.Type.COLUMN,settings)}this.type===morpheus.AbstractDendrogram.Type.COLUMN?this.project.setGroupColumns([new morpheus.SortKey(clusterIdVector.getName(),morpheus.SortKey.SortOrder.UNSORTED)],!0):this.project.setGroupRows([new morpheus.SortKey(clusterIdVector.getName(),morpheus.SortKey.SortOrder.UNSORTED)],!0)},dispose:function(){var $c=$(this.canvas);$c.off("mousemove.morpheus mouseout.morpheus mouseenter.morpheus contextmenu.morpheus"),$c.remove(),this.$label.remove(),this.$squishedLabel.remove(),this.hammer.destroy(),this.canvas=null,this.$label=null,this.$squishedLabel=null,this.hammer=null},isCut:function(){return this.cutHeightmaxIndex)){var nodeFill=this.getNodeFill(node);void 0!==nodeFill&&(context.fillStyle=nodeFill,this.drawNode(context,node)),context.strokeStyle=this.getPathStroke(node);var children=node.children;if(void 0!==children){this.drawNodePath(context,node,minIndex,maxIndex);for(var i=0,nchildren=children.length;nchildren>i;i++)this.drawDFS(context,children[i],minIndex,maxIndex)}}}},morpheus.AbstractDendrogram.setIndices=function(root){var setIndex=function(node){for(var children=node.children,maxIndex=children[0].maxIndex,minIndex=children[0].minIndex,i=1,length=children.length;length>i;i++){var child=children[i];minIndex=Math.min(minIndex,child.minIndex),maxIndex=Math.max(maxIndex,child.maxIndex)}node.maxIndex=maxIndex,node.minIndex=minIndex},counter=0,visit=function(node,callback){var n,children=node.children;if(children&&(n=children.length))for(var i=-1;++inode.children[node.children.length-1].index?0:node.children.length-1,node=node.children[index]}},morpheus.AbstractDendrogram.dfs=function(node,callback,childrenAccessor){if(void 0===childrenAccessor&&(childrenAccessor=function(n){return n.children}),callback(node)){var n,children=childrenAccessor(node);if(children&&(n=children.length))for(var i=-1;++ii;i++){var copy=$.extend({},children[i]);copy.parent=node,newChildren.push(copy)}node.children=newChildren;for(var i=0,n=newChildren.length;n>i;i++)recurse(newChildren[i])}else node.index=counter,node.minIndex=counter,node.maxIndex=counter,counter++}var counter=0,rootNode=$.extend({},tree.rootNode);return rootNode.parent=void 0,recurse(rootNode),{nLeafNodes:tree.nLeafNodes,maxDepth:tree.maxDepth,rootNode:rootNode}},morpheus.AbstractDendrogram.collapseAtDepth=function(rootNode,maxDepth){morpheus.AbstractDendrogram.dfs(rootNode,function(d){return d.collapsedChildren&&(d.children=d.collapsedChildren,d.collapsedChildren=void 0),!0}),morpheus.AbstractDendrogram.dfs(rootNode,function(d){var depth=d.depth;return depth>maxDepth?(d.collapsedChildren=d.children,d.children=void 0,!1):!0})},morpheus.AbstractDendrogram.setNodeDepths=function(rootNode){function recurse(node,depth){var children=node.children;if(node.depth=depth,max=Math.max(depth,max),void 0!==children)for(var i=-1,j=depth+1,n=children.length;++imax&&(max=n.depth,maxNode=n)}),maxNode},morpheus.AbstractDendrogram.search=function(rootNode,searchText){var predicates,tokens=morpheus.Util.getAutocompleteTokens(searchText),clearSearch=!1,nmatches=0;if(null==tokens||0==tokens.length)clearSearch=!0,morpheus.AbstractDendrogram.dfs(rootNode,function(node){return node.search=!1,!0}),nmatches=-1;else{predicates=morpheus.Util.createSearchPredicates({tokens:tokens});var npredicates=predicates.length;morpheus.AbstractDendrogram.dfs(rootNode,function(node){var matches=!1;if(node.info)searchLabel:for(var name in node.info){var vals=node.info[name];if(node.info)for(var p=0;npredicates>p;p++)for(var predicate=predicates[p],i=0,nvals=vals.length;nvals>i;i++)if(predicate.accept(vals[i])){matches=!0;break searchLabel}}return node.search=matches,matches&&nmatches++,!0})}return nmatches},morpheus.AbstractDendrogram.squishNonSearchedNodes=function(heatMap,isColumns){isColumns?heatMap.getHeatMapElementComponent().getColumnPositions().setSize(13):heatMap.getHeatMapElementComponent().getRowPositions().setSize(13);var expandedLeafNodes={},dendrogram=isColumns?heatMap.columnDendrogram:heatMap.rowDendrogram;morpheus.AbstractDendrogram.dfs(dendrogram.tree.rootNode,function(node){for(var i=node.minIndex;i<=node.maxIndex;i++)node.search&&(expandedLeafNodes[i]=!0);return!0});var clusterIds=[],previous=expandedLeafNodes[0],squishedIndices={};previous||(squishedIndices[0]=!0);var clusterNumber=0;clusterIds.push(clusterNumber);for(var i=1,nleaves=dendrogram.tree.leafNodes.length;nleaves>i;i++){var expanded=expandedLeafNodes[i];expanded!==previous&&(clusterNumber++,previous=expanded),expanded||(squishedIndices[i]=!0),clusterIds.push(clusterNumber)}isColumns?(heatMap.getHeatMapElementComponent().getColumnPositions().setSquishedIndices(squishedIndices),heatMap.getProject().setGroupColumns([new morpheus.SpecifiedGroupByKey(clusterIds)],!1)):(heatMap.getHeatMapElementComponent().getRowPositions().setSquishedIndices(squishedIndices),heatMap.getProject().setGroupRows([new morpheus.SpecifiedGroupByKey(clusterIds)],!1))},morpheus.AbstractDendrogram.getLeafNodes=function(rootNode){var leafNodes=[];return morpheus.AbstractDendrogram.dfs(rootNode,function(node){return void 0===node.children&&leafNodes.push(node),!0}),leafNodes},morpheus.Util.extend(morpheus.AbstractDendrogram,morpheus.AbstractCanvas),morpheus.Util.extend(morpheus.AbstractDendrogram,morpheus.Events),morpheus.CanvasUtil=function(){},morpheus.CanvasUtil.dragging=!1,morpheus.CanvasUtil.measureScrollbar=function(){var $c=$("
    ").appendTo("body"),dim={width:$c.width()-$c[0].clientWidth,height:$c.height()-$c[0].clientHeight};return $c.remove(),dim},morpheus.CanvasUtil.FONT_NAME='"Helvetica Neue",Helvetica,Arial,sans-serif',morpheus.CanvasUtil.FONT_COLOR="rgb(34, 34, 34)",morpheus.CanvasUtil.getPreferredSize=function(c){var size=c.getPreferredSize(),prefWidth=c.getPrefWidth(),prefHeight=c.getPrefHeight();return void 0!==prefWidth&&(size.width=prefWidth),void 0!==prefHeight&&(size.height=prefHeight),size},morpheus.CanvasUtil.BACKING_SCALE=1,"undefined"!=typeof window&&"devicePixelRatio"in window&&window.devicePixelRatio>1&&(morpheus.CanvasUtil.BACKING_SCALE=window.devicePixelRatio),morpheus.CanvasUtil.setBounds=function(canvas,bounds){var backingScale=morpheus.CanvasUtil.BACKING_SCALE;null!=bounds.height&&(canvas.height=bounds.height*backingScale,canvas.style.height=bounds.height+"px"),null!=bounds.width&&(canvas.width=bounds.width*backingScale,canvas.style.width=bounds.width+"px"),null!=bounds.left&&(canvas.style.left=bounds.left+"px"),null!=bounds.top&&(canvas.style.top=bounds.top+"px")},morpheus.CanvasUtil.drawShape=function(context,shape,x,y,size2){0>size2||(context.beginPath(),"minus"===shape?(context.arc(x,y,size2,0,2*Math.PI,!1),context.moveTo(x-size2,y),context.lineTo(x+size2,y)):"circle"===shape?context.arc(x,y,size2,0,2*Math.PI,!1):"square"===shape?context.rect(x-size2,y-size2,2*size2,2*size2):"plus"===shape?(context.moveTo(x,y-size2),context.lineTo(x,y+size2),context.moveTo(x-size2,y),context.lineTo(x+size2,y)):"x"===shape?(context.moveTo(x-size2,y-size2),context.lineTo(x+size2,y+size2),context.moveTo(x+size2,y-size2),context.lineTo(x-size2,y+size2)):"asterisk"===shape?(context.moveTo(x-size2,y-size2),context.lineTo(x+size2,y+size2),context.moveTo(x+size2,y-size2),context.lineTo(x-size2,y+size2),context.moveTo(x,y-size2),context.lineTo(x,y+size2)):"diamond"===shape?(context.moveTo(x,y-size2),context.lineTo(x+size2,y),context.lineTo(x,y+size2),context.lineTo(x-size2,y),context.lineTo(x,y-size2)):"triangle-up"===shape?(context.moveTo(x,y-size2),context.lineTo(x+size2,y+size2),context.lineTo(x-size2,y+size2),context.lineTo(x,y-size2)):"triangle-down"===shape?(context.moveTo(x,y+size2),context.lineTo(x-size2,y-size2),context.lineTo(x+size2,y-size2),context.lineTo(x,y+size2)):"triangle-left"===shape?(context.moveTo(x-size2,y),context.lineTo(x+size2,y-size2),context.lineTo(x+size2,y+size2),context.lineTo(x-size2,y)):"triangle-right"===shape&&(context.moveTo(x+size2,y),context.lineTo(x-size2,y+size2),context.lineTo(x-size2,y-size2),context.lineTo(x+size2,y)),context.stroke())},morpheus.CanvasUtil.drawLine=function(context,x1,y1,x2,y2){context.beginPath(),context.moveTo(x1,y1),context.lineTo(x2,y2),context.stroke()},morpheus.CanvasUtil.resetTransform=function(context){context.setTransform(1,0,0,1,0,0),1!==morpheus.CanvasUtil.BACKING_SCALE&&context.scale(morpheus.CanvasUtil.BACKING_SCALE,morpheus.CanvasUtil.BACKING_SCALE)},morpheus.CanvasUtil.bezierCurveTo=function(context,start,end){var m1=(start[1]+end[1])/2;context.beginPath(),context.moveTo(start[0],start[1]),context.bezierCurveTo(start[0],m1,end[0],m1,end[0],end[1]),context.stroke()},morpheus.CanvasUtil.createCanvas=function(){var $c=$("");return $c.attr("tabindex","0"),$c.css({cursor:"default",outline:0,overflow:"hidden",position:"absolute","z-index":1}),$c[0]},morpheus.CanvasUtil.getHeaderStringWidth=function(context,s){return context.font="14px "+morpheus.CanvasUtil.FONT_NAME,context.measureText(s).width+18},morpheus.CanvasUtil.getVectorStringWidth=function(context,vector,positions,end){if(positions.getSize()<6)return 0;var fontSize=Math.min(24,positions.getSize()-2);if(0>=fontSize)return 0;context.font=fontSize+"px "+morpheus.CanvasUtil.FONT_NAME;for(var toString=morpheus.VectorTrack.vectorToString(vector),maxWidth=0,i=0,n=0>=end?vector.size():Math.min(end,vector.size());n>i;i++){var value=vector.getValue(i);if(null!=value&&""!=value){value=toString(value);var width=context.measureText(value).width;width>maxWidth&&(maxWidth=width)}}return maxWidth>0?maxWidth+2:maxWidth},morpheus.CanvasUtil.clipString=function(context,string,availTextWidth){var textWidth=context.measureText(string).width;if(availTextWidth>=textWidth)return string;var clipString="...";if(availTextWidth-=context.measureText(clipString).width,0>=availTextWidth)return clipString;for(var width=0,nChars=0,stringLength=string.length;stringLength>nChars;nChars++)if(width+=context.measureText(string[nChars]).width,width>availTextWidth){string=string.substring(0,nChars);break}return string+clipString},morpheus.CanvasUtil.toSVG=function(drawable,file){var totalSize={width:drawable.getWidth(),height:drawable.getHeight()},context=new C2S(totalSize.width,totalSize.height);context.save(),drawable.draw({x:0,y:0,width:totalSize.width,height:totalSize.height},context),context.restore();var svg=context.getSerializedSvg(),blob=new Blob([svg],{type:"text/plain;charset=utf-8"});saveAs(blob,file)},morpheus.CanvasUtil.getMousePos=function(element,event,useDelta){return morpheus.CanvasUtil.getMousePosWithScroll(element,event,0,0,useDelta)},morpheus.CanvasUtil.getClientXY=function(event,useDelta){var clientX,clientY;return event.pointers?event.pointers.length>0?(clientX=event.pointers[0].clientX-(useDelta?event.deltaX:0),clientY=event.pointers[0].clientY-(useDelta?event.deltaY:0)):(clientX=event.srcEvent.clientX-(useDelta?event.deltaX:0), +clientY=event.srcEvent.clientY-(useDelta?event.deltaY:0)):(clientX=event.clientX,clientY=event.clientY),{x:clientX,y:clientY}},morpheus.CanvasUtil.getMousePosWithScroll=function(element,event,scrollX,scrollY,useDelta){return morpheus.CanvasUtil._getMousePosWithScroll(element,scrollX,scrollY,morpheus.CanvasUtil.getClientXY(event,useDelta))},morpheus.CanvasUtil._getMousePosWithScroll=function(element,scrollX,scrollY,clientXY){var rect=element.getBoundingClientRect();return{x:clientXY.x-rect.left+scrollX,y:clientXY.y-rect.top+scrollY}},morpheus.CheckBoxList=function(options){var _this=this,set=options.set||new morpheus.Set;options=$.extend(!0,{},{height:"138px",showHeader:!1,select:!1,search:!0,checkBoxSelectionOnTop:!1,rowHeader:function(item){var header=[];return header.push(' "),header.push(""),header.join("")}},options),options=morpheus.Table.createOptions(options),1===options.columns.length&&(options.maxWidth=583);for(var idColumn=options.columns[0],i=0;i'),html.push('"),html.push(''),html.push("");var $div=$(html.join("")),$checkBoxResults=$div.find("[name=checkBoxResults]");table.$gridDiv.before($div);var $selectAll=$div.find("[name=selectAll]"),$selectNone=$div.find("[name=selectNone]");$selectAll.on("click",function(e){for(var items=table.getItems(),i=0,nitems=items.length;nitems>i;i++)set.add(_this.getter(items[i]));_this.table.trigger("checkBoxSelectionChanged",{source:_this,set:set}),e.preventDefault(),_this.table.redraw()}),$div.find("[name=invertSel]").on("click",function(e){for(var items=table.getItems(),i=0,nitems=items.length;nitems>i;i++){var val=_this.getter(items[i]);set.has(val)?set.remove(val):set.add(val)}_this.table.trigger("checkBoxSelectionChanged",{source:_this,set:set}),e.preventDefault(),_this.table.redraw()}),$selectNone.on("click",function(e){for(var items=table.getItems(),i=0,nitems=items.length;nitems>i;i++)set.remove(_this.getter(items[i]));_this.table.trigger("checkBoxSelectionChanged",{source:_this,set:set}),e.preventDefault(),_this.table.redraw()}),this.set=set,this.table=table,$checkBoxResults.html("selected "+morpheus.Util.intFormat(set.size())+" of "+morpheus.Util.intFormat(table.getAllItemCount()));this.table.on("checkBoxSelectionChanged",function(){$checkBoxResults.html("selected "+morpheus.Util.intFormat(set.size())+" of "+morpheus.Util.intFormat(table.getAllItemCount())),_this.table.redraw()}),table.on("click",function(e){var $target=$(e.target),item=table.getItems()[e.row],value=_this.getter(item);$target.is(".morpheus-hover-show")?(set.clear(),set.add(value),_this.table.trigger("checkBoxSelectionChanged",{source:_this,set:set})):(!options.select||$target.is("[type=checkbox]")&&"toggle"===$target.attr("name"))&&(set.has(value)?set.remove(value):set.add(value),_this.table.trigger("checkBoxSelectionChanged",{source:_this,set:set}))})},morpheus.CheckBoxList.prototype={searchWithPredicates:function(predicates){this.table.searchWithPredicates(predicates)},autocomplete:function(tokens,cb){this.table.autocomplete(tokens,cb)},setHeight:function(height){this.table.setHeight(height)},resize:function(){this.table.resize()},setSearchVisible:function(visible){this.table.setSearchVisible(visible)},getSelectedRows:function(){return this.table.getSelectedRows()},getSelectedItems:function(){return this.table.getSelectedItems()},setSelectedRows:function(rows){this.table.setSelectedRows(rows)},getItems:function(items){return this.table.getItems()},getAllItemCount:function(){return this.table.getAllItemCount()},getFilteredItemCount:function(){return this.table.getFilteredItemCount()},setFilter:function(f){this.table.setFilter(f)},redraw:function(){this.table.redraw()},getSelection:function(){return this.set},clearSelection:function(values){this.set.clear(),this.table.redraw()},setValue:function(values){this.setSelectedValues(values)},setSelectedValues:function(values){if(this.set.clear(),morpheus.Util.isArray(values))for(var i=0;ii;i++)context.lineTo(x[i],y[i]);context.stroke()}},morpheus.Util.extend(morpheus.ColumnDendrogram,morpheus.AbstractDendrogram),morpheus.ConditionalRenderingUI=function(heatmap){var _this=this;this.heatmap=heatmap;var $div=$('
    ');$div.on("click","[name=add]",function(e){var $this=$(this),$row=$this.closest(".morpheus-entry"),index=$row.index(),condition={series:null,color:"rgb(0,0,0)",shape:null,accept:function(val){return!1}};heatmap.heatmap.getColorScheme().getConditions().insert(index,condition),$row.after(_this.add(condition)),e.preventDefault()}),$div.on("click","[name=delete]",function(e){var $this=$(this),$row=$this.closest(".morpheus-entry"),index=$row.index()-1;heatmap.heatmap.getColorScheme().getConditions().remove(index),heatmap.revalidate(),$row.remove(),e.preventDefault()});var html=[];html.push('
    '),html.push('
    '),html.push(''),html.push("
    "),html.push("
    "),$div.append(html.join("")),this.$div=$div,heatmap.heatmap.getColorScheme().getConditions().getConditions().forEach(function(c){_this.add(c).appendTo($div)})},morpheus.ConditionalRenderingUI.prototype={add:function(condition){function updateAccept(){var v1=parseFloat($($v1).val());isNaN(v1)&&(v1=-Number.MAX_VALUE);var v2=parseFloat($($v2).val());isNaN(v2)&&(v2=Number.MAX_VALUE);var v1Op=$v1Op.val(),v2Op=$v2Op.val(),gtf="gt"===v1Op?function(val){return val>v1}:function(val){return val>=v1},ltf="lt"===v2Op?function(val){return v2>val}:function(val){return v2>=val};condition.v1=v1,condition.v2=v2,condition.v1Op=v1Op,condition.v2Op=v2Op,condition.accept=function(val){return gtf(val)&<f(val)},_this.heatmap.revalidate()}var _this=this,html=[];html.push('
    '),html.push('
    '),html.push("
    "),html.push('
    '),html.push(''),html.push('"),html.push("
    "),html.push('
    '),html.push(''),html.push(''),html.push(''),html.push('and'),html.push(''),html.push(''),html.push("
    "),html.push('
    '),html.push('');var shapeField=new morpheus.ShapeField(["circle","square","diamond","triangle-up","triangle-down","triangle-left","triangle-right"]);html.push('
    '),html.push("
    "),html.push('
    '),html.push(''),html.push(''),html.push("
    "),html.push("
    "),html.push('
    '),html.push('
    '),html.push('Remove'),html.push("
    "),html.push("
    "),html.push("
    ");var $el=$(html.join(""));shapeField.$el.appendTo($el.find("[name=shapeHolder]"));var $color=$el.find("[name=color]"),$series=$el.find("[id=cond_series]"),$v1=$el.find("[name=v1]"),$v2=$el.find("[name=v2]"),$v1Op=$el.find("[name=lower]"),$v2Op=$el.find("[name=upper]");return $color.val(condition.color),$series.val(condition.series),shapeField.setShapeValue(condition.shape),$v1.val(condition.v1),$v2.val(condition.v2),$v1Op.val(condition.v1Op),$v2Op.val(condition.v2Op),$v1Op.on("change",function(e){updateAccept()}),$v2Op.on("change",function(e){updateAccept()}),$v1.on("keyup",_.debounce(function(e){updateAccept()},100)),$v2.on("keyup",_.debounce(function(e){updateAccept()},100)),$color.on("change",function(e){condition.color=$(this).val(),_this.heatmap.revalidate()}),shapeField.on("change",function(e){condition.shape=e.shape,_this.heatmap.revalidate()}),$series.on("change",function(e){condition.series=$(this).val(),_this.heatmap.revalidate()}),condition.series=$series.val(),$el}},morpheus.DiscreteColorSchemeChooser=function(options){var formBuilder=new morpheus.FormBuilder,map=options.colorScheme.scale,html=['"),formBuilder.append({name:"selected_value",type:"custom",value:html.join("")});var $select=formBuilder.$form.find("[name=colorPicker]");formBuilder.append({col:"col-xs-2",name:"selected_color",type:"color"});var selectedVal=$select.val(),_this=this,$color=formBuilder.$form.find("[name=selected_color]");$color.val(map.get(selectedVal)),$color.on("change",function(e){var color=$(this).val();map.set(selectedVal,color),_this.trigger("change",{value:selectedVal,color:color})}),$select.selectpicker().change(function(){selectedVal=$select.val();var c=map.get(selectedVal);$color.val(c)}),this.$div=formBuilder.$form},morpheus.DiscreteColorSchemeChooser.prototype={dispose:function(){}},morpheus.Util.extend(morpheus.DiscreteColorSchemeChooser,morpheus.Events),morpheus.DiscreteColorSupplier=function(){this.colorMap=new morpheus.Map,this.hiddenValue=0,this.hiddenValues=new morpheus.Set,morpheus.AbstractColorSupplier.call(this),this.scalingMode=morpheus.HeatMapColorScheme.ScalingMode.FIXED},morpheus.DiscreteColorSupplier.prototype={createInstance:function(){return new morpheus.DiscreteColorSupplier},setColorMap:function(array){this.colorMap=new morpheus.Map,this.colors=[],this.fractions=[],this.names=[],this.min=Number.MAX_VALUE,this.max=-Number.MAX_VALUE;for(var i=0;i'),html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push("
    "),html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push("
    "),html.push("
    "),this.$el=$(html.join(""));var _this=this;this.$el.find("[name=add]").on("click",function(){_this.addSelected()}),this.$el.find("[name=remove]").on("click",function(){_this.removeSelected()}),this.$el.find("[name=up]").on("click",function(){_this.moveUp()}),this.$el.find("[name=down]").on("click",function(){_this.moveDown()}),this.left=this.$el.find("[name=left]")[0],this.right=this.$el.find("[name=right]")[0];for(var i=0;i');this.$div=$div,$div.append(this.addBase());var $filterMode=$div.find("[name=filterMode]");$filterMode.on("change",function(e){var isAndFilter=$filterMode.prop("checked");(isColumns?project.getColumnFilter():project.getRowFilter()).setAnd(isAndFilter),isColumns?_this.project.setColumnFilter(_this.project.getColumnFilter(),!0):_this.project.setRowFilter(_this.project.getRowFilter(),!0),e.preventDefault()}),$div.on("click","[name=add]",function(e){var $this=$(this),$row=$this.closest(".morpheus-entry"),index=$row.index(),newFilter=new morpheus.AlwaysTrueFilter;(isColumns?project.getColumnFilter():project.getRowFilter()).insert(index,newFilter),$row.after(_this.add(newFilter)),e.preventDefault()}),$div.on("click","[name=delete]",function(e){var $this=$(this),$row=$this.closest(".morpheus-entry"),index=$row.index()-1;(isColumns?project.getColumnFilter():project.getRowFilter()).remove(index),$row.remove(),isColumns?_this.project.setColumnFilter(_this.project.getColumnFilter(),!0):_this.project.setRowFilter(_this.project.getRowFilter(),!0),e.preventDefault()}),$div.on("submit","form",function(e){$(this);e.preventDefault()}),$div.on("change","[name=by]",function(e){var $this=$(this),fieldName=$this.val(),$row=$this.closest(".morpheus-entry");$row.index()-1;_this.createFilter({fieldName:fieldName,$div:$this}),isColumns?_this.project.setColumnFilter(_this.project.getColumnFilter(),!0):_this.project.setRowFilter(_this.project.getRowFilter(),!0)});for(var combinedFilter=isColumns?project.getColumnFilter():project.getRowFilter(),filters=combinedFilter.getFilters?combinedFilter.getFilters():[],i=0;iRange of values
    "),html.push(' '),html.push(' '),html.push('
    Switch to top filter');var $form=$(html.join(""));$form.appendTo($ui),$ui.find("[name=switch]").on("click",function(e){e.preventDefault();for(var newFilter=morpheus.FilterUI.topFilter(project,name,isColumns,$ui),index=-1,filters=isColumns?project.getColumnFilter().getFilters():project.getRowFilter().getFilters(),i=0;iTop
    "),html.push(''),html.push(' '),html.push('
    Switch to range filter');var $form=$(html.join(""));$form.appendTo($ui);var $n=$ui.find("[name=n]"),$direction=$ui.find("[name=direction]");if($ui.find("[name=switch]").on("click",function(e){e.preventDefault();for(var newFilter=morpheus.FilterUI.rangeFilter(project,name,isColumns,$ui),index=-1,filters=isColumns?project.getColumnFilter().getFilters():project.getRowFilter().getFilters(),i=0;i'),html.push('
    '),html.push('
    '),html.push("
    "),html.push('
    '),html.push(''),html.push("
    "),html.push(""),html.join("")},add:function(filter){var project=this.project,isColumns=this.isColumns,fields=morpheus.MetadataUtil.getMetadataNames(isColumns?project.getFullDataset().getColumnMetadata():project.getFullDataset().getRowMetadata()),html=[];html.push('
    '),html.push('
    '),html.push(""),html.push('"),html.push("
    "),html.push('
    '),html.push('
    '),html.push("
    "),html.push('
    '),html.push('
    '),html.push('Remove'),html.push("
    "),html.push("
    "),html.push("
    "),html.join("")}},morpheus.FormBuilder=function(options){var that=this;this.prefix=_.uniqueId("form"),this.$form=$(""),this.$form.attr("role","form").attr("id",this.prefix),this.vertical=options&&options.vertical,this.vertical?(this.labelClass="control-label",this.titleClass="control-label"):(this.titleClass="col-xs-12 control-label",this.labelClass="col-xs-4 control-label",this.$form.addClass("form-horizontal")),this.$form.on("submit",function(e){e.preventDefault()}),this.$form.on("dragover",function(e){var node=$(e.originalEvent.srcElement).parent().parent().prev();node.is("select")&&node.hasClass("file-input")&&($(e.originalEvent.srcElement).parent().css("border","1px solid black"),e.preventDefault(),e.stopPropagation())}).on("dragenter",function(e){var node=$(e.originalEvent.srcElement).parent().parent().prev();node.is("select")&&node.hasClass("file-input")&&($(e.originalEvent.srcElement).parent().css("border","1px solid black"),e.preventDefault(),e.stopPropagation())}).on("dragleave",function(e){var node=$(e.originalEvent.srcElement).parent().parent().prev();node.is("select")&&node.hasClass("file-input")&&($(e.originalEvent.srcElement).parent().css("border",""),e.preventDefault(),e.stopPropagation())}).on("drop",function(e){var node=$(e.originalEvent.srcElement).parent().parent().prev();if(node.is("select")&&node.hasClass("file-input")){$(e.originalEvent.srcElement).parent().css("border","");var name=node.attr("name");if(name=name.substring(0,name.length-"_picker".length),e.originalEvent.dataTransfer)if(e.originalEvent.dataTransfer.files.length){e.preventDefault(),e.stopPropagation();var files=e.originalEvent.dataTransfer.files;that.setValue(name,files[0]),that.trigger("change",{name:name,value:files[0]})}else{var url=e.originalEvent.dataTransfer.getData("URL");e.preventDefault(),e.stopPropagation(),that.setValue(name,url),that.trigger("change",{name:name,value:url})}}})},morpheus.FormBuilder.showProgressBar=function(options){var content=[];content.push('
    '),content.push('
    '), +content.push('
    '),content.push('
    '),content.push("
    "),content.push('
    '),content.push(''),content.push("
    "),content.push("
    "),options.subtitle&&(content.push('
    '),content.push('

    '),content.push(options.subtitle),content.push("

    "),content.push("
    ")),content.push("
    ");var $content=$(content.join(""));return $content.find("[name=stop]").on("click",function(e){options.stop(),e.preventDefault()}),morpheus.FormBuilder.showInDraggableDiv({title:options.title,$content:$content})},morpheus.FormBuilder.showInDraggableDiv=function(options){var width=options.width||"300px",html=[];html.push('
    '),html.push('

    '+options.title+"

    "),html.push('
    '),html.push("
    ");var $div=$(html.join("")),$content=$div.find("[name=content]");return $div.find("[name=header]").on("dblclick",function(){"none"===$content.css("display")?$content.css("display",""):$content.css("display","none")}),options.$content.appendTo($content),$div.css("left",$(window).width()/2-$content.outerWidth()/2),$div.draggable({handle:"[name=header]",containment:"document"}),$div.appendTo($(document.body)),$div},morpheus.FormBuilder.promptForDataset=function(cb){var formBuilder=new morpheus.FormBuilder;formBuilder.append({name:"file",value:"",type:"file",required:!0,help:morpheus.DatasetUtil.DATASET_FILE_FORMATS});var $modal;formBuilder.on("change",function(e){var value=e.value;""!==value&&null!=value&&($modal.modal("hide"),$modal.remove(),cb(value))}),$modal=morpheus.FormBuilder.showInModal({title:"Dataset",html:formBuilder.$form,close:!1})},morpheus.FormBuilder.showInModal=function(options){var $div=morpheus.FormBuilder._showInModal({z:options.z,title:options.title,html:options.html,footer:options.close?'":null,onClose:options.callback,backdrop:options.backdrop,size:options.size});return $div},morpheus.FormBuilder.showOkCancel=function(options){options=$.extend({},{ok:!0},options);var footer=[];options.ok&&footer.push(''),options.apply&&footer.push(''),footer.push('');var $div=morpheus.FormBuilder._showInModal({title:options.title,html:options.content,footer:footer.join(""),onClose:options.hiddenCallback,size:options.size}),$ok=$div.find("[name=ok]");return $ok.on("click",function(e){options.okCallback(),$div.modal("hide")}),options.focus&&$ok.focus(),options.draggable&&$div.draggable({handle:".modal-header",containment:"document"}),$div},morpheus.FormBuilder.hasChanged=function(object,keyToUIElement){for(var keys=_.keys(keyToUIElement),i=0;i"),html.push('"),html.push("");var $div=$(html.join(""));return $div.on("mousewheel",function(e){e.stopPropagation()}),$div.find(".modal-body").html(options.html),$div.prependTo($(document.body)),$div.modal({backdrop:options.backdrop===!0}).on("hidden.bs.modal",function(e){$div.remove(),options.onClose&&options.onClose()}),$div},morpheus.FormBuilder.prototype={appendContent:function($content){this.$form.append($content)},addSeparator:function(){var html=[];html.push('
    '),this.vertical||html.push('
    '),html.push("
    "),this.vertical||html.push("
    "),html.push("
    "),this.$form.append(html.join(""))},_append:function(html,field,isFieldStart){var that=this,required=field.required,name=field.name,type=field.type;if("separator"==type)return html.push(this.vertical?'
    ':'
    '),html.push("
    "),void html.push("
    ");var title=field.title,disabled=field.disabled,help=field.help,value=field.value,showLabel=field.showLabel,col="";this.vertical||(col=field.col||"col-xs-8"),void 0===showLabel&&(showLabel="checkbox"!==type&&"button"!==type&&"radio"!==type,showLabel=showLabel||void 0!==field.options);var id=that.prefix+"_"+name;if(void 0===title&&(title=name.replace(/_/g," "),title=title[0].toUpperCase()+title.substring(1)),showLabel?(html.push('"),isFieldStart&&html.push('
    ')):isFieldStart&&!this.vertical&&html.push('
    '),"radio"===type)field.options?_.each(field.options,function(choice){var isChoiceObject=_.isObject(choice)&&void 0!==choice.value,optionValue=isChoiceObject?choice.value:choice,optionText=isChoiceObject?choice.name:choice,selected=value===optionValue;html.push('
    ")}):(html.push('
    "));else if("checkbox"===type)html.push('
    ");else if("checkbox-list"===type)html.push('
    ');else if("select"==type||"bootstrap-select"==type)"bootstrap-select"==type?html.push('"),"bootstrap-select"==field.type&&field.toggle&&(html.push('

    All | None

    '),that.$form.on("click","[name="+name+"_all]",function(evt){evt.preventDefault();var $select=that.$form.find("[name="+name+"]");$select.selectpicker("val",$.map($select.find("option"),function(o){return $(o).val()})),$select.trigger("change")}),that.$form.on("click","[name="+name+"_none]",function(evt){evt.preventDefault();var $select=that.$form.find("[name="+name+"]");$select.selectpicker("val",[]),$select.trigger("change")}));else if("textarea"==type)html.push('");else if("button"==type)html.push('");else if("custom"===type)html.push(value);else if("file"===type){html.push('"),field.url!==!1&&(html.push("
    "),html.push(''),html.push("
    ")),html.push(''),that.$form.on("change","[name="+name+"_picker]",function(evt){var $this=$(this),val=$this.val(),showTextInput="URL"===val;if("Dropbox"===val){var options={success:function(files){that.setValue(name,files[0].link),that.trigger("change",{name:name,value:files[0].link})},linkType:"direct",multiselect:!1};Dropbox.choose(options)}else"My Computer"===val&&that.$form.find("[name="+name+"_file]").click();that.$form.find("[name="+name+"_text]").css("display",showTextInput?"":"none")}),that.$form.on("keyup","[name="+name+"_text]",function(evt){var text=$.trim($(this).val());that.setValue(name,text),13===evt.which&&that.trigger("change",{name:name,value:text})}),that.$form.on("change","[name="+name+"_file]",function(evt){var files=evt.target.files;that.setValue(name,files[0]),that.trigger("change",{name:name,value:files[0]})})}else type=null==type?"text":type,"div"===type?html.push('
    "),"div"===type&&html.push("
    ");void 0!==help&&(html.push(''),html.push(help),html.push(""))},append:function(fields){var html=[],that=this,isArray=morpheus.Util.isArray(fields);isArray||(fields=[fields]),html.push('
    '),_.each(fields,function(field,index){that._append(html,field,0===index)}),html.push("
    "),html.push("
    ");var $div=$(html.join(""));this.$form.append($div);var checkBoxLists=$div.find(".checkbox-list");if(checkBoxLists.length>0){var checkBoxIndex=0;_.each(fields,function(field){if("checkbox-list"===field.type){var list=new morpheus.CheckBoxList({responsive:!1,$el:$(checkBoxLists[checkBoxIndex]),items:field.options});$(checkBoxLists[checkBoxIndex]).data("morpheus.checkbox-list",list),checkBoxIndex++}})}$div.find(".selectpicker").selectpicker({iconBase:"fa",tickIcon:"fa-check",style:"btn-default btn-sm"})},clear:function(){this.$form.empty()},getValue:function(name){var $v=this.$form.find("[name="+name+"]");return 0===$v.length&&($v=this.$form.find("[name="+name+"_picker]")),morpheus.FormBuilder.getValue($v)},setOptions:function(name,options,selectFirst){var $select=this.$form.find("[name="+name+"]"),checkBoxList=$select.data("morpheus.checkbox-list");if(checkBoxList)checkBoxList.setItems(options);else{var html=[],selection=$select.val();_.each(options,function(choice){html.push('")}),$select.html(html.join("")),$select.val(selection),selectFirst&&null==$select.val()&&$select[0].options.length>0&&$select.val($select[0].options[0].value),$select.hasClass("selectpicker")&&($select.selectpicker("refresh"),$select.selectpicker("render"))}},find:function(name){return this.$form.find("[name="+name+"]")},setHelpText:function(name,value){var v=this.$form.find("[name="+name+"_help]");v.html(value)},setValue:function(name,value){var v=this.$form.find("[name="+name+"]");if(0===v.length&&(v=this.$form.find("[name="+name+"_picker]"),"file"===v.attr("type")))return v.data("files",value);var type=v.attr("type"),list=v.data("morpheus.checkbox-list");list?list.setValue(value):("radio"===type?v.filter("[value="+value+"]").prop("checked",!0):"checkbox"===type?v.prop("checked",value):v.val(value),v.hasClass("selectpicker")&&v.selectpicker("render"))},setVisible:function(name,visible){var $div=this.$form.find("[name="+name+"]").parents(".form-group");visible?$div.show():$div.hide()},remove:function(name){var $div=this.$form.find("[name="+name+"]").parents(".form-group");$div.remove()},setEnabled:function(name,enabled){var $div=this.$form.find("[name="+name+"]");$div.attr("disabled",!enabled),enabled?$div.parents(".form-group").find("label").removeClass("text-muted"):$div.parents(".form-group").find("label").addClass("text-muted")}},morpheus.Util.extend(morpheus.FormBuilder,morpheus.Events),morpheus.GradientColorSupplier=function(){morpheus.AbstractColorSupplier.call(this),this._updateScale()},morpheus.GradientColorSupplier.prototype={createInstance:function(){return new morpheus.GradientColorSupplier},getColor:function(row,column,value){if(isNaN(value))return this.missingColor;var min=this.min,max=this.max,colors=this.colors;if(min>=value)return colors[0];if(value>=max)return colors[colors.length-1];var fraction=morpheus.SteppedColorSupplier.linearScale(value,min,max,0,100)/100;return this.colorScale(fraction)},setFractions:function(options){morpheus.AbstractColorSupplier.prototype.setFractions.call(this,options),this._updateScale()},_updateScale:function(){this.colorScale=d3.scale.linear().domain(this.fractions).range(this.colors).clamp(!0)}},morpheus.Util.extend(morpheus.GradientColorSupplier,morpheus.AbstractColorSupplier),morpheus.Grid=function(options){function getItemColumnValue(item,column){return column.getter(item)}this.options=options;var grid,_this=this;this.items=options.items,this.modelToView=null,this.viewOrder=null;var model={getLength:function(){return null!=_this.viewOrder?_this.viewOrder.length:_this.items.length},getItem:function(index){return _this.items[null!=_this.viewOrder?_this.viewOrder[index]:index]}};this.$el=options.$el;var gridOptions=$.extend({},{select:!0,headerRowHeight:0,showHeaderRow:!1,multiColumnSort:!0,multiSelect:!1,topPanelHeight:0,enableTextSelectionOnCells:!0,forceFitColumns:!0,dataItemColumnValueExtractor:getItemColumnValue,defaultFormatter:function(row,cell,value,columnDef,dataContext){if(_.isNumber(value))return morpheus.Util.nf(value);if(morpheus.Util.isArray(value)){for(var s=[],i=0,length=value.length;length>i;i++){i>0&&s.push(", ");value[i];s.push(value[i])}return s.join("")}return value}},options.gridOptions||{});if(grid=new Slick.Grid(options.$el,model,options.columns,gridOptions),this.grid=grid,grid.registerPlugin(new morpheus.AutoTooltips2),grid.onCellChange.subscribe(function(e,args){_this.trigger("edit",args)}),gridOptions.select&&(grid.setSelectionModel(new Slick.RowSelectionModel({selectActiveRow:!0,multiSelect:gridOptions.multiSelect})),grid.getSelectionModel().onSelectedRangesChanged.subscribe(function(e){var nitems=grid.getDataLength();_this.trigger("selectionChanged",{selectedRows:grid.getSelectedRows().filter(function(row){return row>=0&&nitems>=row})})})),grid.onSort.subscribe(function(e,args){_this.sortCols=args.sortCols,_this._updateMappings(),grid.invalidate()}),options.$el.on("click",function(e){var cell=grid.getCellFromEvent(e);cell&&_this.trigger("click",{row:cell.row,target:e.target})}),options.$el.on("dblclick",function(e){var cell=grid.getCellFromEvent(e);cell&&_this.trigger("dblclick",{row:cell.row,target:e.target})}),options.sort){var gridSortColumns=[],gridColumns=grid.getColumns(),sortCols=[];options.sort.forEach(function(c){for(var column=null,i=0;i=0&&nitems>=row})},getSelectedItems:function(){for(var rows=this.grid.getSelectedRows(),selection=[],i=0,nrows=rows.length;nrows>i;i++)selection.push(this.items[this.convertViewIndexToModel(rows[i])]);return selection},getSelectedItem:function(){var rows=this.grid.getSelectedRows();return 1===rows.length?this.items[this.convertViewIndexToModel(rows[0])]:null},getItems:function(){for(var items=[],i=0,length=this.getFilteredItemCount();length>i;i++)items.push(this.items[this.convertViewIndexToModel(i)]);return items},getAllItemCount:function(){return this.items.length},getAllItems:function(){return this.items},getFilteredItemCount:function(){return this.viewOrder?this.viewOrder.length:this.items.length},redraw:function(){this.grid.invalidate()},redrawRows:function(rows){this.grid.invalidateRows(rows),this.grid.render()},setItems:function(items){this.items=items,this.grid.getSelectionModel()&&this.grid.setSelectedRows([]),this.setFilter(this.filter),this.columnsAutosized||this.autosizeColumns()},convertModelIndexToView:function(modelIndex){if(null!==this.modelToView){var index=this.modelToView.get(modelIndex);return void 0!==index?index:-1}return modelIndex},convertViewIndexToModel:function(viewIndex){return null!=this.viewOrder?viewIndex=0?this.viewOrder[viewIndex]:-1:viewIndex},_updateMappings:function(){var selectedViewIndices=null!=this.grid.getSelectionModel()?this.grid.getSelectedRows():null,selectedModelIndices=[];if(selectedViewIndices)for(var i=0,length=selectedViewIndices.length;length>i;i++)selectedModelIndices.push(this.convertViewIndexToModel(selectedViewIndices[i]));if(this.viewOrder=null,null!=this.filter){this.viewOrder=[];for(var i=0,length=this.items.length;length>i;i++)this.filter(this.items[i])&&this.viewOrder.push(i)}var cols=this.sortCols;if(cols&&cols.length>0){if(null==this.viewOrder){this.viewOrder=[];for(var i=0,length=this.items.length;length>i;i++)this.viewOrder.push(i)}var ncols=cols.length,items=this.items;this.viewOrder.sort(function(index1,index2){for(var i=0;ncols>i;i++){var getter=cols[i].sortCol.getter,sign=cols[i].sortAsc?1:-1,value1=getter(items[index1]),value2=getter(items[index2]),comparator=cols[i].sortCol.comparator,result=comparator(value1,value2)*sign;if(0!==result)return result}return 0})}if(null!=this.viewOrder){this.modelToView=new morpheus.Map;for(var i=0,length=this.viewOrder.length;length>i;i++)this.modelToView.set(this.viewOrder[i],i)}else this.modelToView=null;if(null!=this.grid.getSelectionModel()){for(var newSelectedViewIndices=[],i=0,length=selectedModelIndices.length;length>i;i++){var index=this.convertModelIndexToView(selectedModelIndices[i]);void 0!==index&&newSelectedViewIndices.push(index)}this.grid.setSelectedRows(newSelectedViewIndices)}},setSelectedRows:function(rows){this.grid.setSelectedRows(rows)},setFilter:function(filter){this.filter=filter,this._updateMappings(),this.grid.invalidate(),this.trigger("filter")},getFilter:function(){return this.filter},autosizeColumns:function(){this.columnsAutosized=!0;var columns=this.grid.getColumns(),items=this.getItems();if(columns&&!(columns.length<=1)){var div=document.createElement("div");document.body.appendChild(div);var $d=$(div);$d.css({position:"absolute",left:-1e3,top:-1e3});var $row=$('
    '),$cell=$row.find(".slick-cell");$row.appendTo($d);for(var gridWidth=this.options.$el.width(),maxWidth=Math.min(parseInt(gridWidth/2),400),getColumnWidth=function(column){$cell.html(column.name);var w=Math.max($cell.outerWidth(),4);if(column.prototypeValue)$cell.html(column.prototypeValue),w=Math.max($cell.outerWidth(),w);else for(var i=0,nrows=Math.min(items.length,10);nrows>i;i++){var text=column.formatter(i,null,column.getter(items[i]),column,items[i]);$cell.html(text),w=Math.max($cell.outerWidth(),w)}column.width=parseInt(Math.min(maxWidth,w))},totalWidth=0,i=0;itotalWidth||totalWidth>gridWidth&&(columns[columns.length-1].width-=totalWidth-gridWidth),$d.remove(),this.grid.resizeCanvas()}}},morpheus.Util.extend(morpheus.Grid,morpheus.Events),morpheus.AutoTooltips2=function(options){function init(grid){_grid=grid,$(_grid.getCanvasNode()).on("mouseover",".slick-row",showToolTip),$(_grid.getCanvasNode()).on("mouseout",".slick-row",hideToolTip),$(_grid.getCanvasNode()).on("mouseup",hideAll)}function destroy(){$(_grid.getCanvasNode()).off("mouseover",showToolTip),$(_grid.getCanvasNode()).off("mouseout",hideToolTip),$(_grid.getCanvasNode()).off("mouseup",hideAll)}function hideToolTip(e){var cell=_grid.getCellFromEvent(e);if(cell){var $node=$(_grid.getCellNode(cell.row,cell.cell));$node.data("bs.tooltip")&&$node.tooltip("hide")}}function hideAll(){$(_grid.getCanvasNode()).find("[data-original-title]").attr("data-original-title","").tooltip("hide")}function showToolTip(e){var cell=_grid.getCellFromEvent(e);if(cell){var $node=$(_grid.getCellNode(cell.row,cell.cell)),text="",c=_grid.getColumns()[cell.cell],show=!1;if(c.alwaysShowTooltip||$node[0].scrollWidth>$node[0].offsetWidth){var item=_grid.getDataItem(cell.row);text=c.tooltip(item,c.getter(item)),show=!0}$node.attr("data-original-title",text);var hasTip=$node.data("bs.tooltip");hasTip||$node.tooltip({placement:"auto",html:!0,container:"body",trigger:"manual"}),show?$node.tooltip("show"):hasTip&&$node.tooltip("hide")}}var _grid;$.extend(this,{init:init,destroy:destroy})},morpheus.HeatMap=function(options){morpheus.Util.loadTrackingCode();var _this=this;options=$.extend(!0,{},{el:null,dataset:void 0,rowAnnotations:void 0,columnAnnotations:void 0,columnGroupBy:void 0,rowGroupBy:void 0,colorScheme:void 0,rowSortBy:void 0,columnSortBy:void 0,rowDendrogram:void 0,columnDendrogram:void 0,columnDendrogramField:"id",rowDendrogramField:"id",rows:[],columns:[],tools:void 0,rowFilter:void 0,columnFilter:void 0,customUrls:void 0,height:"window",width:void 0,inheritFromParent:!0,inheritFromParentOptions:{transpose:!1},structureUrlProvider:void 0,promises:void 0,renderReady:void 0,datasetReady:void 0,loadedCallback:void 0,name:void 0,rowsSortable:!0,columnsSortable:!0,popupEnabled:!0,symmetric:!1,keyboard:!0,inlineTooltip:!0,$loadingImage:$('
    Loading...
    '),toolbar:{zoom:!0,tools:!0,searchRows:!0,searchColumns:!0,sort:!0,options:!0,saveImage:!0,saveDataset:!0,openFile:!0,filter:!0,colorKey:!0,searchValues:!1}},options),this.options=options,this.tooltipProvider=morpheus.HeatMapTooltipProvider,options.el?this.$el=$(options.el):this.$el=$("
    "),options.landingPage||(options.landingPage=new morpheus.LandingPage,options.landingPage.$el.prependTo(this.$el)),this.options.name||(this.options.name=morpheus.Util.getBaseFileName(morpheus.Util.getFileName(this.options.dataset.file?this.options.dataset.file:this.options.dataset)));null==this.options.parent;if(null==this.options.parent){this.tabManager=this.options.tabManager?this.options.tabManager:new morpheus.TabManager({landingPage:this.options.landingPage});var $a=$('');$a.tooltip({placement:"auto"});var $right=$('
    ');$a.appendTo($right),(new morpheus.HelpMenu).$el.appendTo($right),$right.appendTo(this.tabManager.$nav),this.options.tabManager||(this.tabManager.$nav.appendTo(this.$el),this.tabManager.$tabContent.appendTo(this.$el))}else this.options.inheritFromParent&&(this.popupItems=this.options.parent.popupItems,this.options.tabOpened||(this.options.tabOpened=this.options.parent.options.tabOpened),this.options.drawCallback=this.options.parent.options.drawCallback),this.tabManager=this.options.parent.tabManager;this.$el=$("
    "),this.$el.css({width:"100%","user-select":"none","-webkit-user-select":"none","-webkit-user-drag":"none","-webkit-tap-highlight-color":"rgba(0, 0, 0, 0)","-moz-user-select":"none","-moz-user-drag":"none","-moz-tap-highlight-color":"rgba(0, 0, 0, 0)","-ms-user-select":"none","-ms-user-drag":"none","-ms-tap-highlight-color":"rgba(0, 0, 0, 0)","-o-user-select":"none","-o-user-drag":"none","-o-tap-highlight-color":"rgba(0, 0, 0, 0)",overflow:""});var tab=this.tabManager.add({$el:this.$el,closeable:!0,rename:!0,title:this.options.name,object:this,focus:!0});options.$loadingImage&&options.$loadingImage.appendTo(this.$el),this.tabId=tab.id,this.$tabPanel=tab.$panel,this.options.dataSource=options.dataset?options.dataset.file?options.dataset.file:options.dataset:"",this._togglingInfoWindow=!1,this.tooltipMode=0,this.el=this.$el[0];var promises=[];if(options.promises)for(var i=0;iCause: "),message.push(err.message)),morpheus.FormBuilder.showInModal({title:"Error",html:message.join("")})}),promises.push(deferred),$.when.apply($,promises).then(function(){_this.options.$loadingImage&&_this.options.$loadingImage.remove(),_this._init(),heatMapLoaded()})}},morpheus.HeatMap.SPACE_BETWEEN_HEAT_MAP_AND_ANNOTATIONS=6,morpheus.HeatMap.showTool=function(tool,controller,callback){if(tool.gui){var gui=tool.gui(controller.getProject()),formBuilder=new morpheus.FormBuilder;_.each(gui,function(item){formBuilder.append(item)});var tabId=controller.getTabManager().getActiveTabId();tool.init&&tool.init(controller.getProject(),formBuilder,{controller:controller});var $formDiv,okCallback=function(){var task={name:tool.toString(),tabId:tabId};controller.getTabManager().addTask(task);var input={};_.each(gui,function(item){input[item.name]=formBuilder.getValue(item.name)}),setTimeout(function(){try{var value=tool.execute({controller:controller,project:controller.getProject(),input:input});if(value instanceof Worker){value.onerror=function(e){task.worker.terminate(),morpheus.FormBuilder.showInModal({ +title:"Error",html:e,close:"Close"}),e.stack&&console.log(e.stack)};var terminate=_.bind(value.terminate,value);task.worker=value,value.terminate=function(){terminate();try{controller.getTabManager().removeTask(task)}catch(x){console.log("Error removing task")}callback&&callback(input)}}else callback&&callback(input)}catch(e){morpheus.FormBuilder.showInModal({title:"Error",html:e,close:"Close"}),e.stack&&console.log(e.stack)}finally{if(void 0===task.worker)try{controller.getTabManager().removeTask(task)}catch(x){console.log("Error removing task")}tool.dispose&&tool.dispose()}},0)};tool.ok=function(){okCallback(),$formDiv.modal("hide")};var guiOptions=$.extend({},{ok:!0},gui.options);$formDiv=morpheus.FormBuilder.showOkCancel({title:tool.toString(),apply:tool.apply,ok:guiOptions.ok,size:guiOptions.size,draggable:!0,content:formBuilder.$form,align:"right",okCallback:okCallback})}else try{tool.execute({controller:controller,project:controller.getProject(),input:{}});callback&&callback({})}catch(e){morpheus.FormBuilder.showInModal({title:"Error",html:e,close:"Close"}),e.stack&&console.log(e.stack)}finally{tool.dispose&&tool.dispose()}morpheus.Util.trackEvent({eventCategory:"Tool",eventAction:tool.toString()})},morpheus.HeatMap.getSpaces=function(groupByKeys,length,gapSize){for(var previousArray=[],nkeys=groupByKeys.length,keyIndex=0;nkeys>keyIndex;keyIndex++){var key=groupByKeys[keyIndex];previousArray.push(key.getValue(0))}var spaces=[],sum=0;spaces.push(sum);for(var i=1;length>i;i++){for(var isEqual=!0,keyIndex=0;nkeys>keyIndex;keyIndex++){var key=groupByKeys[keyIndex],comparator=key.getComparator(),val=key.getValue(i),c=comparator(val,previousArray[keyIndex]);if(0!==c){isEqual=!1;for(var keyIndex2=0;nkeys>keyIndex2;keyIndex2++)previousArray[keyIndex2]=groupByKeys[keyIndex2].getValue(i);break}}isEqual||(sum+=gapSize),spaces.push(sum)}return spaces},morpheus.HeatMap.createGroupBySpaces=function(dataset,groupByKeys,gapSize){if(groupByKeys.length>0){for(var nkeys=groupByKeys.length,keyIndex=0;nkeys>keyIndex;keyIndex++)groupByKeys[keyIndex].init(dataset);return morpheus.HeatMap.getSpaces(groupByKeys,dataset.getRowCount(),gapSize)}},morpheus.HeatMap.isDendrogramVisible=function(project,isColumns){var sortKeys=isColumns?project.getColumnSortKeys():project.getRowSortKeys(),size=isColumns?project.getSortedFilteredDataset().getColumnCount():project.getSortedFilteredDataset().getRowCount();return 1===sortKeys.length?sortKeys[0]instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===sortKeys[0].name&&sortKeys[0].nvisible===size:void 0},morpheus.HeatMap.prototype={gapSize:10,updatingScroll:!1,autoDisplay:function(options){null==options.filename&&(options.filename="");var colorScheme;if("segtab"===options.extension||"seg"===options.extension)colorScheme={type:"fixed",map:morpheus.HeatMapColorScheme.Predefined.CN().map.map(function(item){return{value:Math.pow(2,1+item.value),color:item.color}})};else if("maf"===options.extension){colorScheme=morpheus.HeatMapColorScheme.Predefined.MAF();var colorMap=morpheus.HeatMapColorScheme.Predefined.MAF().map,rowMutProfile=this.project.getFullDataset().getRowMetadata().getByName("mutation_summary"),columnMutProfile=this.project.getFullDataset().getColumnMetadata().getByName("mutation_summary"),track=this.getTrack("mutation_summary",!1);track&&track.settingFromConfig("stacked_bar"),track=this.getTrack("mutation_summary",!0),track&&track.settingFromConfig("stacked_bar");for(var i=1;ii;i++){var key=existingSortKeys[i];if(key instanceof morpheus.SortByValuesKey&&morpheus.Util.arrayEquals(key.modelIndices,modelIndices)){priorSortKeyIndex=i,key.getSortOrder()===morpheus.SortKey.SortOrder.UNSORTED?sortOrder=morpheus.SortKey.SortOrder.DESCENDING:key.getSortOrder()===morpheus.SortKey.SortOrder.DESCENDING?sortOrder=morpheus.SortKey.SortOrder.ASCENDING:key.getSortOrder()===morpheus.SortKey.SortOrder.ASCENDING?sortOrder=morpheus.SortKey.SortOrder.TOP_N:key.getSortOrder()===morpheus.SortKey.SortOrder.TOP_N&&(sortOrder=morpheus.SortKey.SortOrder.UNSORTED);break}}null==sortOrder&&(sortOrder=morpheus.SortKey.SortOrder.DESCENDING);var sortKeys;if(append)sortKeys=isColumns?project.getRowSortKeys():project.getColumnSortKeys(),-1!==priorSortKeyIndex?sortOrder===morpheus.SortKey.SortOrder.UNSORTED?sortKeys.splice(priorSortKeyIndex,1):sortKeys[priorSortKeyIndex].setSortOrder(sortOrder):sortOrder!==morpheus.SortKey.SortOrder.UNSORTED&&sortKeys.push(new morpheus.SortByValuesKey(modelIndices,sortOrder,!isColumns)),sortKeys=morpheus.SortKey.keepExistingSortKeys(sortKeys,isColumns?project.getRowSortKeys():project.getColumnSortKeys());else{var newSortKeys=sortOrder===morpheus.SortKey.SortOrder.UNSORTED?[]:[new morpheus.SortByValuesKey(modelIndices,sortOrder,!isColumns)];sortKeys=morpheus.SortKey.keepExistingSortKeys(newSortKeys,isColumns?project.getRowSortKeys():project.getColumnSortKeys())}isColumns?(project.setRowSortKeys(sortKeys,!0),this.scrollTop(0)):(project.setColumnSortKeys(sortKeys,!0),this.scrollLeft(0))}},getToolbarElement:function(){return this.toolbar.$el},getToolbar:function(){return this.toolbar},setName:function(name){this.options.name=name},getName:function(){return this.options.name},showOptions:function(){new morpheus.HeatMapOptions(this)},getProject:function(){return this.project},setDendrogram:function(tree,isColumns,viewIndices){var dendrogram=isColumns?this.columnDendrogram:this.rowDendrogram;if(dendrogram&&(dendrogram.dispose(),dendrogram=null),null!=tree){for(var modelIndices=[],modelIndexSet=new morpheus.Set,size=isColumns?this.project.getFullDataset().getColumnCount():this.project.getFullDataset().getRowCount(),i=0;size>i;i++)modelIndexSet.add(i);for(var i=0,length=viewIndices.length;length>i;i++){var modelIndex=isColumns?this.project.convertViewColumnIndexToModel(viewIndices[i]):this.project.convertViewRowIndexToModel(viewIndices[i]);modelIndices.push(modelIndex),modelIndexSet.remove(modelIndex)}var nvisible=modelIndices.length;if(modelIndexSet.size()>0)for(var indices=modelIndexSet.values(),i=0,length=indices.length;length>i;i++)modelIndices.push(indices[i]);isColumns?(dendrogram=new morpheus.ColumnDendrogram(this,tree,this.heatmap.getColumnPositions(),this.project),dendrogram.filter=this.project.getColumnFilter().shallowClone(),this.columnDendrogram=dendrogram,this.project.setColumnSortKeys([new morpheus.SpecifiedModelSortOrder(modelIndices,nvisible,"dendrogram")],!0)):(dendrogram=new morpheus.RowDendrogram(this,tree,this.heatmap.getRowPositions(),this.project),dendrogram.filter=this.project.getRowFilter().shallowClone(),this.rowDendrogram=dendrogram,this.project.setRowSortKeys([new morpheus.SpecifiedModelSortOrder(modelIndices,nvisible,"dendrogram")],!0)),dendrogram.appendTo(this.$parent),dendrogram.$label.appendTo(this.$parent),dendrogram.$squishedLabel.appendTo(this.$parent)}else{for(var sortKeys=isColumns?this.project.getColumnSortKeys():this.project.getRowSortKeys(),i=0;i0){var tipText=[],dataset=project.getSortedFilteredDataset(),rowTracks=_this.rowTracks.filter(function(t){return t.settings.inlineTooltip}),columnTracks=_this.columnTracks.filter(function(t){return t.settings.inlineTooltip});return selectedViewIndices.forEach(function(id){var rowIndex=id.getArray()[0],columnIndex=id.getArray()[1];tipText.push(morpheus.Util.nf(dataset.getValue(rowIndex,columnIndex))),rowTracks.forEach(function(track){tipText.push(" "),tipText.push(morpheus.Util.formatObject(dataset.getRowMetadata().getByName(track.name).getValue(rowIndex)))}),columnTracks.forEach(function(track){tipText.push(" "),tipText.push(morpheus.Util.formatObject(dataset.getColumnMetadata().getByName(track.name).getValue(columnIndex)))}),tipText.push("\n")}),tipText.join("")}},_init:function(){function reorderTracks(array,isColumns){var nameOrderPairs=[],found=!1;if(_.each(array,function(item){var name=item.renameTo||item.field,order=999;null!=item.order&&(order=item.order,found=!0),nameOrderPairs.push({name:name,order:order})}),found){nameOrderPairs.sort(function(a,b){return a.order===b.order?0:a.order
    ").css("position","relative"),this.$parent.appendTo(this.$el),this.toolbar=new morpheus.HeatMapToolBar(this),this.options.customUrls&&this.setCustomUrls(this.options.customUrls),this.vscroll=new morpheus.ScrollBar(!0),this.vscroll.appendTo(this.$parent),this.vscroll.on("scroll",function(){_this.updatingScroll||_this.paintAll({paintRows:!0,paintColumns:!1,invalidateRows:!0,invalidateColumns:!1})}),this.beforeColumnTrackDivider=new morpheus.Divider(!1),this.beforeColumnTrackDivider.appendTo(this.$parent);var dragStartHeight=0;this.beforeColumnTrackDivider.on("resizeStart",function(e){dragStartHeight=_this.columnDendrogram.getUnscaledHeight()}).on("resize",function(e){var newHeight=Math.max(8,dragStartHeight+e.delta);_this.columnDendrogram.setPrefHeight(newHeight),_this.revalidate()}).on("resizeEnd",function(){dragStartHeight=0}),this.afterRowDendrogramDivider=new morpheus.Divider(!0),this.afterRowDendrogramDivider.appendTo(this.$parent);var rowDendrogramStartWidth=0;this.afterRowDendrogramDivider.on("resizeStart",function(e){rowDendrogramStartWidth=_this.rowDendrogram.getUnscaledWidth()}).on("resize",function(e){var newWidth=Math.max(8,rowDendrogramStartWidth+e.delta);_this.rowDendrogram.setPrefWidth(newWidth),_this.revalidate()}).on("resizeEnd",function(){rowDendrogramStartWidth=0}),this.afterVerticalScrollBarDivider=new morpheus.Divider(!0),this.afterVerticalScrollBarDivider.appendTo(this.$parent);var resizeStartHeatMapWidth=0;this.afterVerticalScrollBarDivider.on("resizeStart",function(e){resizeStartHeatMapWidth=_this.heatmap.getUnscaledWidth()}).on("resize",function(e){_this.heatmap.prefWidth=resizeStartHeatMapWidth+e.delta,_this.revalidate()}),this.hscroll=new morpheus.ScrollBar(!1),this.hscroll.appendTo(this.$parent),this.hscroll.on("scroll",function(){_this.updatingScroll||_this.paintAll({paintRows:!1,paintColumns:!0,invalidateRows:!1,invalidateColumns:!0})});var heatmap=new morpheus.HeatMapElementCanvas(this.project);this.options.drawCallback&&heatmap.setDrawCallback(this.options.drawCallback),$(heatmap.canvas).on("contextmenu",function(e){morpheus.Popup.showPopup([{name:"Copy",disabled:0===_this.project.getElementSelectionModel().count()},{name:"Save Image (Ctrl-S)"},{separator:!0},{name:"Show Inline Tooltip",checked:_this.options.inlineTooltip}],{x:e.pageX,y:e.pageY},e.target,function(event,item){if("Show Inline Tooltip"===item)_this.options.inlineTooltip=!_this.options.inlineTooltip;else if("Save Image (Ctrl-S)"===item)morpheus.HeatMap.showTool(new morpheus.SaveImageTool,_this);else{var text=_this.getSelectedElementsText();""!==text&&event.clipboardData.setData("text/plain",text)}}),e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation()}),heatmap.appendTo(this.$parent),this.heatmap=heatmap;var rowDendrogramSortKey=null;if(void 0!=rowDendrogram){var tree=rowDendrogram;if(tree.leafNodes.length!==this.project.getFullDataset().getRowCount())throw"# leaf nodes in row dendrogram "+tree.leafNodes.length+" != "+this.project.getFullDataset().getRowCount();if(null!=this.options.rowDendrogramField){for(var vector=dataset.getRowMetadata().getByName(this.options.rowDendrogramField),rowIndices=[],map=new morpheus.Map,re=/[,:]/g,j=0,size=vector.size();size>j;j++){var key=vector.getValue(j);map.set(key.replace(re,""),j)}for(var i=0,length=tree.leafNodes.length;length>i;i++){var index=map.get(tree.leafNodes[i].name);if(void 0===index)throw"Unable to find row dendrogram id "+tree.leafNodes[i].name+" in row annotations";rowIndices.push(index)}}else for(var i=0,length=tree.leafNodes.length;length>i;i++)rowIndices.push(i);this.rowDendrogram=new morpheus.RowDendrogram(this,tree,heatmap.getRowPositions(),this.project,!0),rowDendrogramSortKey=new morpheus.SpecifiedModelSortOrder(rowIndices,rowIndices.length,"dendrogram"),this.rowDendrogram.appendTo(this.$parent),this.rowDendrogram.$label.appendTo(this.$parent),this.rowDendrogram.$squishedLabel.appendTo(this.$parent)}var columnDendrogramSortKey=null;if(void 0!==columnDendrogram){var tree=columnDendrogram;if(tree.leafNodes.length!==this.project.getFullDataset().getColumnCount())throw"# leaf nodes "+tree.leafNodes.length+" != "+this.project.getFullDataset().getColumnCount();var columnIndices=[];if(null!=this.options.columnDendrogramField){for(var vector=dataset.getColumnMetadata().getByName(this.options.columnDendrogramField),map=new morpheus.Map,re=/[,:]/g,j=0,size=vector.size();size>j;j++){var key=vector.getValue(j);map.set(key.replace(re,""),j)}for(var i=0,length=tree.leafNodes.length;length>i;i++){var index=map.get(tree.leafNodes[i].name);if(void 0===index)throw"Unable to find column dendrogram id "+tree.leafNodes[i].name+" in column annotations";columnIndices.push(index)}}else for(var i=0,length=tree.leafNodes.length;length>i;i++)columnIndices.push(i);this.columnDendrogram=new morpheus.ColumnDendrogram(this,tree,heatmap.getColumnPositions(),this.project,!0),columnDendrogramSortKey=new morpheus.SpecifiedModelSortOrder(columnIndices,columnIndices.length,"dendrogram"),this.columnDendrogram.appendTo(this.$parent),this.columnDendrogram.$label.appendTo(this.$parent),this.columnDendrogram.$squishedLabel.appendTo(this.$parent)}if(null!==rowDendrogramSortKey&&this.project.setRowSortKeys([rowDendrogramSortKey]),null!==columnDendrogramSortKey&&this.project.setColumnSortKeys([columnDendrogramSortKey]),null!=this.options.rowGroupBy)for(var i=0;ii;i++){var display=displaySpecified?"None":void 0,v=isColumns?dataset.getColumnMetadata().get(i):dataset.getRowMetadata().get(i),name=v.getName(),option=nameToOption.get(name);if(!morpheus.MetadataUtil.DEFAULT_HIDDEN_FIELDS.has(name)||null!=option){var count=isColumns?dataset.getColumnCount():dataset.getRowCount();if(option||displaySpecified||!(count>1)||morpheus.VectorUtil.containsMoreThanOneValue(v)){null==option&&(option={}),option.title&&v.getProperties().set(morpheus.VectorKeys.TITLE,option.title),option.display&&(display="function"==typeof option.display?option.display(name):option.display);var add="None"!==display;if(add){isColumns&&null==display&&(display="pert_iname"===name||"id"===name||isFirst?"text":"color"),isFirst=!1;var track=isColumns?_this.addColumnTrack(name,display):_this.addRowTrack(name,display);if(track.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)&&option.color){var m=isColumns?_this.project.getColumnColorModel():_this.project.getRowColorModel();if(track.isDiscrete())_.each(options.color,function(p){m.setMappedValue(v,p.value,p.color)});else{var cs=m.createContinuousColorMap(v),min=Number.MAX_VALUE,max=-Number.MAX_VALUE;_.each(options.color,function(p){min=Math.min(min,p.value),max=Math.max(max,p.value)}),cs.setMin(min),cs.setMax(max);var valueToFraction=d3.scale.linear().domain([cs.getMin(),cs.getMax()]).range([0,1]).clamp(!0),fractions=[],colors=[];_.each(options.color,function(p){fractions.push(valueToFraction(p.value)),colors.push(p.color)}),cs.setFractions({fractions:fractions,colors:colors})}}if(track.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)&&option.shape){var m=isColumns?_this.project.getColumnShapeModel():_this.project.getRowShapeModel();_.each(options.shape,function(p){m.setMappedValue(v,p.value,p.shape)})}}}}}};if(setInitialDisplay(!1,this.options.rows),setInitialDisplay(!0,this.options.columns),reorderTracks(this.options.rows,!1),reorderTracks(this.options.columns,!0),null==this.options.colorScheme){var ext="";if(this.options.dataSource)try{ext=morpheus.Util.getExtension(morpheus.Util.getFileName(this.options.dataSource))}catch(x){}var colorScheme=this.autoDisplay({extension:ext});null==colorScheme&&(colorScheme={type:"relative"}),this.options.colorScheme=colorScheme;var name=this.project.getFullDataset().getName();if("maf"===ext&&!this.options.rowSortBy){var sortKeys=[];this.project.getFullDataset().getRowMetadata().getByName("order")&&sortKeys.push(new morpheus.SortKey("order",morpheus.SortKey.SortOrder.ASCENDING)),sortKeys.push(new morpheus.SortKey("id",morpheus.SortKey.SortOrder.ASCENDING)),this.project.setRowSortKeys(sortKeys,!1)}-1!==morpheus.DatasetUtil.getSeriesIndex(this.project.getFullDataset(),"allelic_fraction")&&(this.options.sizeBy="allelic_fraction")}if(this.options.parent&&this.options.inheritFromParent)heatmap.setColorScheme(this.options.parent.heatmap.getColorScheme().copy(this.project));else if(heatmap.setColorScheme(new morpheus.HeatMapColorScheme(this.project,this.options.colorScheme)),null!=this.options.dataset.getRowMetadata().getByName("Source")){var sourcesSet=morpheus.VectorUtil.getSet(this.options.dataset.getRowMetadata().getByName("Source"));this.heatmap.getColorScheme().setSeparateColorSchemeForRowMetadataField("Source"),sourcesSet.forEach(function(source){_this.autoDisplay({extension:morpheus.Util.getExtension(source),filename:""+source})})}if(this.options.sizeBy&&heatmap.getColorScheme().getSizer().setSeriesName(this.options.sizeBy),this.updateDataset(),this.options.uiReady&&this.options.uiReady(this),this.options.tabOpened){try{this.options.tabOpened(this)}catch(x){console.log("Error in tabOpened"),x.stack&&console.log(x.stack)}this.updateDataset()}if(this.options.renderReady){try{this.options.renderReady(this)}catch(x){console.log("Error in renderReady"),x.stack&&console.log(x.stack)}this.updateDataset()}null!=this.options.rowSize&&("fit"===this.options.rowSize?this.heatmap.getRowPositions().setSize(this.getFitRowSize()):this.heatmap.getRowPositions().setSize(this.options.rowSize)),null!=this.options.columnSize&&("fit"===this.options.columnSize?this.heatmap.getColumnPositions().setSize(this.getFitColumnSize()):this.heatmap.getColumnPositions().setSize(this.options.columnSize)),null==this.options.rowSize&&null==this.options.columnSize||this.revalidate(),this.options.parent=null,this.$tipFollow=$('
    '),this.$tipFollow.appendTo(this.$parent),this.$tipInfoWindow=$('
    '),this.$tipInfoWindow.appendTo(this.$parent),this.$tipInfoWindow.dialog({close:function(event,ui){_this._togglingInfoWindow||_this.toggleInfoWindow()},autoOpen:!1,width:220,height:280,minHeight:38,minWidth:10,collision:"fit",position:{my:"right-30 bottom",at:"right top",of:this.$parent},title:"Info"}),this.getProject().on("rowFilterChanged columnFilterChanged rowGroupByChanged columnGroupByChanged rowSortOrderChanged columnSortOrderChanged datasetChanged",function(e){if("datasetChanged"===e.type){for(var dataset=_this.getProject().getFullDataset(),i=0;i<_this.rowTracks.length;i++){var track=_this.rowTracks[i];dataset.getRowMetadata().getByName(track.getName())||(_this.removeTrack(track.getName(),!1),i--)}for(var i=0;i<_this.columnTracks.length;i++){var track=_this.columnTracks[i];dataset.getColumnMetadata().getByName(track.getName())||(_this.removeTrack(track.getName(),!0),i--)}}_this.updateDataset(),_this.revalidate()}),this.getProject().on("trackChanged",function(e){var columns=e.columns;_.each(e.vectors,function(v,i){var index=_this.getTrackIndex(v.getName(),columns);if(-1===index)columns?_this.addColumnTrack(v.getName(),e.render[i]):_this.addRowTrack(v.getName(),e.render[i]);else{var track=_this.getTrackByIndex(index,columns),render=e.render[i];render&&track.settingFromConfig(render),track.setInvalid(!0)}}),_this.revalidate()}),this.getProject().on("rowTrackRemoved",function(e){_this.removeTrack(e.vector.getName(),!1),_this.revalidate()}),this.getProject().on("columnTrackRemoved",function(e){_this.removeTrack(e.vector.getName(),!0),_this.revalidate()}),this.getProject().getRowSelectionModel().on("selectionChanged",function(){for(var i=0;i<_this.columnTracks.length;i++){var track=_this.columnTracks[i];track.settings.stackedBar&&track.isRenderAs(morpheus.VectorTrack.RENDER.BAR)&&(track.setInvalid(!0),track.repaint())}_this.verticalSearchBar.update(),_this.paintAll({paintRows:!0,paintColumns:!1,invalidateRows:!1,invalidateColumns:!1})}),this.getProject().getColumnSelectionModel().on("selectionChanged",function(){_this.horizontalSearchBar.update(),_this.paintAll({paintRows:!1,paintColumns:!0,invalidateRows:!1,invalidateColumns:!1})}),$(window).on("paste.morpheus",function(e){if(_this.isActiveComponent()){var text=e.originalEvent.clipboardData.getData("text/plain");if(null!=text&&text.length>0){var blob=new Blob([text]),url=window.URL.createObjectURL(blob);e.preventDefault(),e.stopPropagation(),morpheus.HeatMap.showTool(new morpheus.OpenFileTool({file:url}),_this)}}}).on("beforecopy.morpheus",function(e){_this.isActiveComponent()&&e.preventDefault()}).on("copy.morpheus",function(ev){if(_this.isActiveComponent()){var activeComponent=_this.getActiveComponent(),project=_this.project;if(2===activeComponent){var text=_this.getSelectedElementsText();if(""!==text)return ev.originalEvent.clipboardData.setData("text/plain",text),ev.preventDefault(),void ev.stopImmediatePropagation()}var dataset=project.getSelectedDataset({emptyToAll:!1}),columnMetadata=dataset.getColumnMetadata(),rowMetadata=dataset.getRowMetadata(),visibleColumnFields=_this.getVisibleTrackNames(!0),columnFieldIndices=[];_.each(visibleColumnFields,function(name){var index=morpheus.MetadataUtil.indexOf(columnMetadata,name);-1!==index&&columnFieldIndices.push(index)}),columnMetadata=new morpheus.MetadataModelColumnView(columnMetadata,columnFieldIndices);var rowMetadata=dataset.getRowMetadata(),visibleRowFields=_this.getVisibleTrackNames(!1),rowFieldIndices=[];_.each(visibleRowFields,function(name){var index=morpheus.MetadataUtil.indexOf(rowMetadata,name);-1!==index&&rowFieldIndices.push(index)}),rowMetadata=new morpheus.MetadataModelColumnView(rowMetadata,rowFieldIndices);var text=[],rowsSelected=dataset.getRowCount()>0,columnsSelected=dataset.getColumnCount()>0;if(rowsSelected&&columnsSelected)text=(new morpheus.GctWriter).write(dataset);else{for(var text=[],model=rowsSelected?rowMetadata:columnMetadata,i=0,count=model.getItemCount();count>i;i++){for(var j=0,nfields=model.getMetadataCount();nfields>j;j++){var v=model.get(j);j>0&&text.push(" "),text.push(morpheus.Util.toString(v.getValue(i)))}text.push("\n")}text=text.join("")}ev.originalEvent.clipboardData.setData("text/plain",text),ev.preventDefault(),ev.stopImmediatePropagation()}}),this.options.keyboard&&new morpheus.HeatMapKeyListener(this);var dragStartScrollTop,dragStartScrollLeft;this.hammer=morpheus.Util.hammer(_this.heatmap.canvas,["pan","pinch","tap"]).on("panmove",function(event){_this.updatingScroll=!0;var rows=!1,columns=!1;if(0!==event.deltaY){var pos=dragStartScrollTop+event.deltaY;_this.scrollTop(pos),rows=!0}if(0!==event.deltaX){var pos=dragStartScrollLeft+event.deltaX;_this.scrollLeft(pos),columns=!0}_this.updatingScroll=!1,_this.paintAll({paintRows:rows,paintColumns:rows,invalidateRows:rows,invalidateColumns:columns}),event.preventDefault()}).on("panstart",function(event){dragStartScrollTop=_this.scrollTop(),dragStartScrollLeft=_this.scrollLeft()}).on("tap",function(event){var commandKey=morpheus.Util.IS_MAC?event.srcEvent.metaKey:event.srcEvent.ctrlKey;if(!morpheus.Util.IS_MAC||!event.srcEvent.ctrlKey){var position=morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,_this.scrollLeft(),_this.scrollTop()),rowIndex=_this.heatmap.getRowPositions().getIndex(position.y,!1),columnIndex=_this.heatmap.getColumnPositions().getIndex(position.x,!1);_this.project.getElementSelectionModel().click(rowIndex,columnIndex,event.srcEvent.shiftKey||commandKey)}}).on("pinch",function(event){var scale=event.scale;_this.heatmap.getRowPositions().setSize(13*scale),_this.heatmap.getColumnPositions().setSize(13*scale);var reval={};-1!==_this.project.getHoverRowIndex()&&(reval.scrollTop=this.heatmap.getRowPositions().getPosition(this.project.getHoverRowIndex())),-1!==_this.project.getHoverColumnIndex()&&(reval.scrollLeft=this.heatmap.getColumnPositions().getPosition(this.project.getHoverColumnIndex())),_this.revalidate(reval),event.preventDefault()});var heatMapMouseMoved=function(event){var mouseI,mouseJ;if("mouseout"===event.type)mouseI=-1,mouseJ=-1;else{var position=morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,_this.scrollLeft(),_this.scrollTop());mouseI=_this.heatmap.getRowPositions().getIndex(position.y,!1),mouseJ=_this.heatmap.getColumnPositions().getIndex(position.x,!1)}_this.setMousePosition(mouseI,mouseJ,{event:event})};$(_this.heatmap.canvas).on("mouseout",heatMapMouseMoved).on("mousemove",heatMapMouseMoved),_.each(this.options.tools,function(item){var tool=_this.toolbar.getToolByName(item.name);if(null==tool)console.log(item.name+" not found.");else try{var gui=tool.gui(_this.getProject()),formBuilder=new morpheus.FormBuilder;_.each(gui,function(item){formBuilder.append(item)});var input={};if(_.each(gui,function(item){input[item.name]=formBuilder.getValue(item.name)}),item.params)for(var key in item.params)input[key]=item.params[key];tool.execute({controller:_this,project:_this.getProject(),input:input})}catch(x){x.stack&&console.log(x.stack),console.log("Error running "+item.name)}finally{tool.dispose&&tool.dispose()}})},setMousePosition:function(i,j,options){this.mousePositionOptions=options;var updateColumns=this.project.getHoverColumnIndex()!==j,updateRows=this.project.getHoverRowIndex()!==i; +updateColumns||updateRows?(this.project.setHoverRowIndex(i),this.project.setHoverColumnIndex(j),this.setToolTip(i,j,options),this.paintAll({paintRows:updateRows,paintColumns:updateColumns,invalidateRows:!1,invalidateColumns:!1})):this._updateTipFollowPosition(options),this.trigger("change",{name:"setMousePosition",source:this,arguments:arguments})},setTooltipMode:function(mode){this._togglingInfoWindow=!0,this.tooltipMode=mode,this.$tipInfoWindow.html(""),this.toolbar.$tip.html(""),this.$tipFollow.html("").css({left:-1e3,top:-1e3}),this.setToolTip(-1,-1),1===this.tooltipMode?this.$tipInfoWindow.dialog("open"):this.$tipInfoWindow.dialog("close"),this._togglingInfoWindow=!1},toggleInfoWindow:function(){this.setTooltipMode(1==this.tooltipMode?0:1)},setToolTip:function(rowIndex,columnIndex,options){options=options||{},this.options.showSeriesNameInTooltip&&(options.showSeriesNameInTooltip=!0);var tipText=this.tooltipProvider(this,rowIndex,columnIndex,options,0===this.tooltipMode?"   ":"
    "),tipFollowText="";this.options.inlineTooltip&&(tipFollowText=this.tooltipProvider(this,rowIndex,columnIndex,options,"
    ",!0)),0===this.tooltipMode?this.toolbar.$tip.html(tipText):1===this.tooltipMode&&this.$tipInfoWindow.html(tipText),""!==tipFollowText?(this.tipFollowHidden=!1,this.$tipFollow.html(tipFollowText),this._updateTipFollowPosition(options)):(this.tipFollowHidden=!0,this.$tipFollow.html("").css({left:-1e3,top:-1e3})),this.trigger("change",{name:"setToolTip",source:this,arguments:arguments})},_updateTipFollowPosition:function(options){if(!this.tipFollowHidden){var rect=this.$parent[0].getBoundingClientRect(),tipWidth=this.$tipFollow.width(),tipHeight=this.$tipFollow.height(),left=options.event.clientX-rect.left+16;left+tipWidth>=rect.right&&(left=options.event.clientX-rect.left-16-tipWidth);var top=options.event.clientY-rect.top+16;top+tipHeight>=rect.bottom-rect.top&&(top=options.event.clientY-rect.top-16-tipHeight),this.$tipFollow.css({left:left,top:top})}},setTrackVisibility:function(tracks){var _this=this;_.each(tracks,function(track){var existingTrack=_this.getTrack(track.name,track.isColumns);track.visible&&null!=existingTrack&&0===_.keys(existingTrack.renderSettings).length&&existingTrack.settingFromConfig(track.isColumns?"Color":"Text"),_this.setTrackVisible(track.name,track.visible,track.isColumns)}),this.revalidate(),this.trigger("change",{name:"setTrackVisibility",source:this,arguments:arguments})},setTrackVisible:function(name,visible,isColumns){var trackIndex=this.getTrackIndex(name,isColumns);if(-1===trackIndex){if(!visible)return;isColumns?this.addColumnTrack(name):this.addRowTrack(name)}else{var track=isColumns?this.columnTracks[trackIndex]:this.rowTracks[trackIndex],header=isColumns?this.columnTrackHeaders[trackIndex]:this.rowTrackHeaders[trackIndex];if(track.isVisible()===visible)return;track.setVisible(visible),header.setVisible(visible)}this.trigger("change",{name:"setTrackVisible",source:this,arguments:arguments})},addRowTrack:function(name,renderSettings){if(void 0===name)throw"Name not specified";if("None"!==renderSettings){null==renderSettings&&(renderSettings="[number]"===morpheus.VectorUtil.getDataType(this.project.getFullDataset().getRowMetadata().getByName(name))?"bar":morpheus.VectorTrack.RENDER.TEXT);var track=new morpheus.VectorTrack(this.project,name,this.heatmap.getRowPositions(),!1,this);track.settingFromConfig(renderSettings),this.rowTracks.push(track),track.appendTo(this.$parent),$(track.canvas).css("z-index","0");var header=new morpheus.VectorTrackHeader(this.project,name,!1,this);return this.rowTrackHeaders.push(header),header.appendTo(this.$parent),$(header.canvas).css("z-index","0"),track._selection=new morpheus.TrackSelection(track,this.heatmap.getRowPositions(),this.project.getRowSelectionModel(),!1,this),track}},addTrack:function(name,isColumns,renderSettings){isColumns?this.addColumnTrack(name,renderSettings):this.addRowTrack(name,renderSettings)},addColumnTrack:function(name,renderSettings){if(void 0===name)throw"Name not specified";if("None"!==renderSettings){null==renderSettings&&(renderSettings="[number]"===morpheus.VectorUtil.getDataType(this.project.getFullDataset().getColumnMetadata().getByName(name))?"bar":morpheus.VectorTrack.RENDER.TEXT);var track=new morpheus.VectorTrack(this.project,name,this.heatmap.getColumnPositions(),!0,this);track.settingFromConfig(renderSettings),this.columnTracks.push(track),track.appendTo(this.$parent);var header=new morpheus.VectorTrackHeader(this.project,name,!0,this);return this.columnTrackHeaders.push(header),header.appendTo(this.$parent),track._selection=new morpheus.TrackSelection(track,this.heatmap.getColumnPositions(),this.project.getColumnSelectionModel(),!0,this),track}},addPopup:function(item){this.popupItems||(this.popupItems=[]),this.popupItems.push(item)},getPopupItems:function(){return this.popupItems||[]},removeTrack:function(name,isColumns){var index=this.getTrackIndex(name,isColumns),tracks=isColumns?this.columnTracks:this.rowTracks;if(isNaN(index)||0>index||index>=tracks.length)return void console.log("removeTrack: "+name+" not found.");var headers=isColumns?this.columnTrackHeaders:this.rowTrackHeaders,track=tracks[index],header=headers[index];track.dispose(),track._selection.dispose(),header.dispose(),tracks.splice(index,1),headers.splice(index,1),this.trigger("change",{name:"removeTrack",source:this,arguments:arguments})},updateDataset:function(){var dataset=this.project.getSortedFilteredDataset();this.verticalSearchBar.update(),this.horizontalSearchBar.update(),this.heatmap.setDataset(dataset),this.heatmap.getRowPositions().spaces=morpheus.HeatMap.createGroupBySpaces(dataset,this.project.getGroupRows(),this.gapSize),this.heatmap.getColumnPositions().spaces=morpheus.HeatMap.createGroupBySpaces(new morpheus.TransposedDatasetView(dataset),this.project.getGroupColumns(),this.gapSize),this.trigger("change",{name:"updateDataset",source:this,arguments:arguments})},zoom:function(isZoomIn,options){options=$.extend({},{rows:!0,columns:!0},options),isZoomIn?(options.rows&&this.heatmap.getRowPositions().setSize(1.5*this.heatmap.getRowPositions().getSize()),options.columns&&this.heatmap.getColumnPositions().setSize(1.5*this.heatmap.getColumnPositions().getSize())):(options.rows&&this.heatmap.getRowPositions().setSize(this.heatmap.getRowPositions().getSize()/1.5),options.columns&&this.heatmap.getColumnPositions().setSize(this.heatmap.getColumnPositions().getSize()/1.5));var reval={};options.rows&&-1!==this.project.getHoverRowIndex()&&(reval.scrollTop=this.heatmap.getRowPositions().getPosition(this.project.getHoverRowIndex())),options.columns&&-1!==this.project.getHoverColumnIndex()&&(reval.scrollLeft=this.heatmap.getColumnPositions().getPosition(this.project.getHoverColumnIndex())),this.revalidate(reval),this.trigger("change",{name:"zoom",source:this,arguments:arguments})},getTrackIndex:function(name,isColumns){for(var tracks=isColumns?this.columnTracks:this.rowTracks,i=0,length=tracks.length;length>i;i++)if(void 0!==tracks[i].name&&tracks[i].name===name)return i;return-1},getNumTracks:function(isColumns){return isColumns?this.columnTracks.length:this.rowTracks.length},moveTrack:function(index,newIndex,isColumns){var tracks=isColumns?this.columnTracks:this.rowTracks,headers=isColumns?this.columnTrackHeaders:this.rowTrackHeaders,track=tracks[index];tracks.splice(index,1);var header=headers[index];headers.splice(index,1),tracks.splice(newIndex,0,track),headers.splice(newIndex,0,header),this.trigger("change",{name:"moveTrack",source:this,arguments:arguments})},getTrackByIndex:function(index,isColumns){return isColumns?this.columnTracks[index]:this.rowTracks[index]},getTrackHeaderByIndex:function(index,isColumns){return isColumns?this.columnTrackHeaders[index]:this.rowTrackHeaders[index]},getTrack:function(name,isColumns){var index=this.getTrackIndex(name,isColumns);if(-1!==index)return isColumns?this.columnTracks[index]:this.rowTracks[index]},isActiveComponent:function(){var active=document.activeElement,tagName=active.tagName;return"INPUT"==tagName||"SELECT"==tagName||"TEXTAREA"==tagName?!1:this.$tabPanel[0].contains(active)},getActiveComponent:function(){var active=document.activeElement;if("CANVAS"===active.tagName){for(var i=0,ntracks=this.columnTracks.length;ntracks>i;i++)if(this.columnTracks[i].canvas===active)return 1;for(var i=0,ntracks=this.rowTracks.length;ntracks>i;i++)if(this.rowTracks[i].canvas===active)return 0;if(this.heatmap.canvas===active)return 2}return-1},getVisibleTrackNames:function(isColumns){for(var names=[],tracks=isColumns?this.columnTracks:this.rowTracks,i=0,length=tracks.length;length>i;i++)tracks[i].isVisible()&&names.push(tracks[i].name);return names},resizeTrack:function(name,width,height,isColumns){var index=this.getTrackIndex(name,isColumns);if(-1===index)throw name+" not found in resize track";if(isColumns){var track=this.columnTracks[index],header=this.columnTrackHeaders[index];if(height&&(track.setPrefHeight(height),header.setPrefHeight(height)),width)for(var i=0;ii;i++){var track=this.rowTracks[i];track.setInvalid(invalidateRows),track.isVisible()&&(track.paint({x:0,y:y,height:unscaledHeight,width:unscaledWidth}),this.rowTrackHeaders[i].paint())}null!=this.rowDendrogram&&(this.rowDendrogram.setInvalid(invalidateRows),this.isDendrogramVisible(!1)?(this.rowDendrogram.setVisible(!0),this.rowDendrogram.paint({x:0,y:y,height:unscaledHeight,width:this.rowDendrogram.getUnscaledWidth()})):this.rowDendrogram.setVisible(!1))}if(columns){for(var i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];track.setInvalid(invalidateColumns),track.paint({x:x,y:0,width:unscaledWidth,height:track.getUnscaledHeight()}),this.columnTrackHeaders[i].paint()}null!=this.columnDendrogram&&(this.columnDendrogram.setInvalid(invalidateColumns),this.isDendrogramVisible(!0)?(this.columnDendrogram.setVisible(!0),this.columnDendrogram.paint({x:x,y:0,width:unscaledWidth,height:this.columnDendrogram.getUnscaledHeight()})):this.columnDendrogram.setVisible(!1))}(invalidateRows||invalidateColumns)&&this.heatmap.setInvalid(!0),this.heatmap.paint({x:x,y:y,width:unscaledWidth,height:unscaledHeight}),this.trigger("change",{name:"paintAll",source:this,arguments:arguments})},scrollTop:function(pos){return void 0===pos?this.vscroll.getValue():(this.vscroll.setValue(pos,!0),void this.trigger("change",{name:"scrollTop",source:this,arguments:arguments}))},scrollLeft:function(pos){return void 0===pos?this.hscroll.getValue():(this.trigger("change",{name:"scrollLeft",source:this,arguments:arguments}),void this.hscroll.setValue(pos,!0))},setSelectedTrack:function(name,isColumns){if(name!==this.selectedTrackName||isColumns!==this.selectedTrackIsColumns){var index=this.getTrackIndex(this.selectedTrackName,this.selectedTrackIsColumns);-1!==index&&this.getTrackHeaderByIndex(index,this.selectedTrackIsColumns).setSelected(!1),this.selectedTrackName=name,this.selectedTrackIsColumns=isColumns;var index=this.getTrackIndex(this.selectedTrackName,this.selectedTrackIsColumns);-1!==index&&this.getTrackHeaderByIndex(index,this.selectedTrackIsColumns).setSelected(!0),this.trigger("change",{name:"setSelected",source:this,arguments:arguments})}},saveImage:function(file,format){var bounds=this.getTotalSize();if("svg"===format){var context=new C2S(bounds.width,bounds.height);this.snapshot(context);var svg=context.getSerializedSvg(),blob=new Blob([svg],{type:"text/plain;charset=utf-8"});saveAs(blob,file,!0)}else{var canvas=$("")[0],backingScale=morpheus.CanvasUtil.BACKING_SCALE,height=bounds.height*backingScale,width=bounds.width*backingScale;canvas.height=height,canvas.style.height=bounds.height+"px",canvas.width=width,canvas.style.width=bounds.width+"px",this.snapshot(canvas.getContext("2d")),canvas.toBlob(function(blob){if(0===blob.size)throw"Image is too large.";saveAs(blob,file,!0)})}},getTotalSize:function(options){options=$.extend({},{legend:!0},options);var heatmapPrefSize=this.heatmap.getPreferredSize(),totalSize={width:heatmapPrefSize.width,height:heatmapPrefSize.height};this.isDendrogramVisible(!1)&&(totalSize.width+=this.rowDendrogram.getUnscaledWidth()),this.isDendrogramVisible(!0)&&(totalSize.height+=this.columnDendrogram.getUnscaledHeight());for(var maxHeaderHeight=0,maxHeaderWidth=0,i=0,length=this.rowTracks.length;length>i;i++){var track=this.rowTracks[i];if(track.isVisible()){var headerSize=this.rowTrackHeaders[i].getPrintSize();totalSize.width+=Math.max(headerSize.width,track.getPrintSize().width),maxHeaderHeight=Math.max(maxHeaderHeight,headerSize.height)}}totalSize.height+=maxHeaderHeight;for(var i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];track.isVisible()&&(totalSize.height+=track.getPrintSize().height,maxHeaderWidth=Math.max(maxHeaderWidth,this.columnTrackHeaders[i].getPrintSize().width))}if(maxHeaderWidth+=10,totalSize.width+=maxHeaderWidth,options.legend){var legendHeight=null!=this.heatmap.getColorScheme().getNames()?14*this.heatmap.getColorScheme().getNames().length:40;totalSize.height+=legendHeight}var trackLegendSize=new morpheus.HeatMapTrackColorLegend(_.filter(this.columnTracks,function(track){return track.isVisible()&&(track.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||track.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR))}),this.getProject().getColumnColorModel()).getPreferredSize();return totalSize.height+=trackLegendSize.height,totalSize.width=Math.max(totalSize.width,trackLegendSize.width),trackLegendSize=new morpheus.HeatMapTrackColorLegend(_.filter(this.rowTracks,function(track){return track.isVisible()&&(track.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||track.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR))}),this.getProject().getRowColorModel()).getPreferredSize(),totalSize.height+=trackLegendSize.height,totalSize.width=10+Math.max(totalSize.width,trackLegendSize.width),totalSize},getHeatMapElementComponent:function(){return this.heatmap},snapshot:function(context,options){options=$.extend({},{legend:!0},options);var heatmapPrefSize=this.heatmap.getPreferredSize(),legendHeight=(this.getTotalSize(options),0);options.legend&&(null!=this.heatmap.getColorScheme().getNames()?14*this.heatmap.getColorScheme().getNames().length:40,context.save(),context.translate(50,0),morpheus.HeatMapColorSchemeLegend.drawColorScheme(context,this.heatmap.getColorScheme(),200,!0),context.restore()),context.save(),context.translate(4,legendHeight);var columnTrackLegend=new morpheus.HeatMapTrackColorLegend(_.filter(this.columnTracks,function(track){return track.isVisible()&&(track.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||track.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR))}),this.getProject().getColumnColorModel());columnTrackLegend.draw({},context),context.restore();var columnTrackLegendSize=columnTrackLegend.getPreferredSize();context.save(),context.translate(4+columnTrackLegendSize.width,legendHeight);var rowTrackLegend=new morpheus.HeatMapTrackColorLegend(_.filter(this.rowTracks,function(track){return track.isVisible()&&(track.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||track.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR))}),this.getProject().getRowColorModel());rowTrackLegend.draw({},context),context.restore(),legendHeight+=Math.max(rowTrackLegend.getPreferredSize().height,columnTrackLegendSize.height);var heatmapY=this.isDendrogramVisible(!0)?this.columnDendrogram.getUnscaledHeight():0;heatmapY+=legendHeight+10;for(var heatmapX=this.isDendrogramVisible(!1)?this.rowDendrogram.getUnscaledWidth():0,totalColumnTrackHeight=0,i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];if(track.isVisible()){var header=this.columnTrackHeaders[i];heatmapX=Math.max(heatmapX,header.getPrintSize().width);var height=track.getPrintSize().height;heatmapY+=height,totalColumnTrackHeight+=height}}heatmapX+=10;for(var i=0,length=this.rowTracks.length;length>i;i++){var track=this.rowTracks[i];if(track.isVisible()){var header=this.rowTrackHeaders[i];heatmapY=Math.max(heatmapY,header.getPrintSize().height)}}if(this.isDendrogramVisible(!1)){var rowDendrogramClip={x:0,y:0,width:this.rowDendrogram.getUnscaledWidth(),height:heatmapPrefSize.height};context.save(),context.translate(0,heatmapY),this.rowDendrogram.prePaint(rowDendrogramClip,context),this.rowDendrogram.draw(rowDendrogramClip,context),context.restore()}if(this.isDendrogramVisible(!0)){context.save(),context.translate(heatmapX,legendHeight);var columnDendrogramClip={x:0,y:0,width:heatmapPrefSize.width,height:this.columnDendrogram.getUnscaledHeight()};this.columnDendrogram.prePaint(columnDendrogramClip,context),this.columnDendrogram.draw(columnDendrogramClip,context),context.restore()}for(var columnTrackY=heatmapY-10-totalColumnTrackHeight,i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];if(track.isVisible()){context.save();var tx=heatmapX;context.translate(tx,columnTrackY);var trackClip={x:0,y:0,width:heatmapPrefSize.width,height:track.getPrintSize().height};track.print(trackClip,context),context.restore();var header=this.columnTrackHeaders[i];context.save();var headerSize=header.getPrintSize(),headerClip={x:0,y:0,width:headerSize.width,height:headerSize.height};context.translate(tx-10,columnTrackY+trackClip.height),header.print(headerClip,context),context.restore(),columnTrackY+=Math.max(headerClip.height,trackClip.height)}}context.save(),context.translate(heatmapX,heatmapY),this.heatmap.draw({x:0,y:0,width:heatmapPrefSize.width,height:heatmapPrefSize.height},context),context.restore();for(var sum=0,i=0,length=this.rowTracks.length;length>i;i++){var track=this.rowTracks[i];if(track.isVisible()){context.save();var tx=10+heatmapX+heatmapPrefSize.width+sum,ty=heatmapY,trackClip={x:0,y:0,width:track.getPrintSize().width,height:heatmapPrefSize.height};context.translate(tx,ty),context.strokeStyle="white",context.rect(0,0,trackClip.width,trackClip.height),context.stroke(),context.clip(),track.print(trackClip,context),context.restore();var header=this.rowTrackHeaders[i];context.save();var headerSize=header.getPrintSize(),headerClip={x:0,y:0,width:headerSize.width,height:headerSize.height};context.translate(tx,ty-4),header.print(headerClip,context),context.restore(),sum+=Math.max(headerSize.width,trackClip.width)}}},resetZoom:function(){var heatmap=this.heatmap,rowSizes=heatmap.getRowPositions(),columnSizes=heatmap.getColumnPositions();rowSizes.setSize(13),columnSizes.setSize(13);var reval={};-1!==this.project.getHoverRowIndex()&&(reval.scrollTop=this.heatmap.getRowPositions().getPosition(this.project.getHoverRowIndex())),-1!==this.project.getHoverColumnIndex()&&(reval.scrollLeft=this.heatmap.getColumnPositions().getPosition(this.project.getHoverColumnIndex())),this.revalidate(reval)},getFitColumnSize:function(){var heatmap=this.heatmap,availablePixels=this.getAvailableWidth();this.rowDendrogram&&(availablePixels-=this.rowDendrogram.getUnscaledWidth());for(var trackPixels=12,i=0,length=this.rowTracks.length;length>i;i++){var track=this.rowTracks[i];track.isVisible()&&(trackPixels+=track.getUnscaledWidth())}for(var i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];if(track.isVisible()){trackPixels+=this.columnTrackHeaders[i].getUnscaledWidth();break}}availablePixels-=trackPixels;var positions=heatmap.getColumnPositions(),totalCurrent=positions.getItemSize(positions.getLength()-1)+positions.getPosition(positions.getLength()-1),size=positions.getSize();return size*=availablePixels/totalCurrent,size=Math.min(22,size)},getFitRowSize:function(){var heatmap=this.heatmap,availablePixels=this.getAvailableHeight();this.columnDendrogram&&(availablePixels-=this.columnDendrogram.getUnscaledHeight());for(var trackPixels=12,i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];track.isVisible()&&(trackPixels+=track.getUnscaledHeight())}availablePixels-=trackPixels;var positions=heatmap.getRowPositions(),totalCurrent=positions.getItemSize(positions.getLength()-1)+positions.getPosition(positions.getLength()-1),size=positions.getSize();return size*=availablePixels/totalCurrent,size=Math.min(22,size)},fitToWindow:function(repaint){if(this.heatmap.getRowPositions().setSize(this.getFitRowSize()),this.heatmap.getColumnPositions().setSize(this.getFitColumnSize()),repaint){var reval={};-1!==this.project.getHoverRowIndex()&&(reval.scrollTop=this.heatmap.getRowPositions().getPosition(this.project.getHoverRowIndex())),-1!==this.project.getHoverColumnIndex()&&(reval.scrollLeft=this.heatmap.getColumnPositions().getPosition(this.project.getHoverColumnIndex())),this.revalidate(reval)}},getAvailableHeight:function(){if(_.isNumber(this.options.height))return this.options.height;var height=$(window).height()-this.$parent.offset().top-24;return"window"===this.options.height?height:Math.max(Math.round(.7*screen.height),height)},getAvailableWidth:function(){return this.options.width?this.options.width:this.tabManager.getWidth()-30},revalidate:function(options){options=options||{},this.updatingScroll=!0;var availableHeight=this.getAvailableHeight(),availableWidth=this.getAvailableWidth(),heatmapPrefSize=this.heatmap.getPreferredSize(),columnDendrogramHeight=0,rowDendrogramWidth=0;this.columnDendrogram&&(columnDendrogramHeight=morpheus.CanvasUtil.getPreferredSize(this.columnDendrogram).height),this.rowDendrogram&&(rowDendrogramWidth=morpheus.CanvasUtil.getPreferredSize(this.rowDendrogram).width);for(var rowTrackWidthSum=0,i=0,length=this.rowTracks.length;length>i;i++)this.rowTracks[i].isVisible()&&(rowTrackWidthSum+=Math.max(morpheus.CanvasUtil.getPreferredSize(this.rowTrackHeaders[i]).width,morpheus.CanvasUtil.getPreferredSize(this.rowTracks[i]).width));for(var ypos=columnDendrogramHeight,maxHeaderWidth=0,i=0,length=this.columnTracks.length;length>i;i++)if(this.columnTracks[i].isVisible()){var width=morpheus.CanvasUtil.getPreferredSize(this.columnTrackHeaders[i]).width;maxHeaderWidth=Math.max(maxHeaderWidth,width)}var xpos=Math.max(rowDendrogramWidth,maxHeaderWidth),heatMapWidth=heatmapPrefSize.width,maxHeatMapWidth=Math.max(50,availableWidth-rowTrackWidthSum-xpos-morpheus.HeatMap.SPACE_BETWEEN_HEAT_MAP_AND_ANNOTATIONS);maxHeatMapWidth>0&&heatMapWidth>maxHeatMapWidth&&(heatMapWidth=maxHeatMapWidth,heatMapWidth=Math.min(heatMapWidth,heatmapPrefSize.width)),void 0!==this.heatmap.prefWidth&&(heatMapWidth=Math.min(heatmapPrefSize.width,this.heatmap.prefWidth)),void 0!==this.columnDendrogram?(this.columnDendrogram.setBounds({width:heatMapWidth,height:columnDendrogramHeight,left:xpos,top:0}),this.columnDendrogram.$label.css("left",xpos+this.columnDendrogram.getUnscaledWidth()+10).css("top",2),this.columnDendrogram.$squishedLabel.css("left",xpos+this.columnDendrogram.getUnscaledWidth()+10).css("top",18),this.beforeColumnTrackDivider.setVisible(!0),this.beforeColumnTrackDivider.setBounds({left:xpos-maxHeaderWidth,top:ypos,width:maxHeaderWidth}),ypos++):this.beforeColumnTrackDivider.setVisible(!1);for(var i=0,length=this.columnTracks.length;length>i;i++){var track=this.columnTracks[i];if(track.isVisible()){var size=morpheus.CanvasUtil.getPreferredSize(track),headerSize=morpheus.CanvasUtil.getPreferredSize(this.columnTrackHeaders[i]);size.height=Math.max(size.height,headerSize.height),track.setBounds({width:heatMapWidth,height:size.height,left:xpos,top:ypos}),this.columnTrackHeaders[i].setBounds({width:maxHeaderWidth,height:size.height,left:xpos-maxHeaderWidth,top:ypos}),ypos+=size.height}}ypos+=morpheus.HeatMap.SPACE_BETWEEN_HEAT_MAP_AND_ANNOTATIONS;var heatMapHeight=heatmapPrefSize.height;heatMapHeight>availableHeight-ypos&&(heatMapHeight=Math.max(100,Math.min(heatmapPrefSize.height,availableHeight-ypos))),0>ypos&&(ypos=0),this.rowDendrogram?(this.rowDendrogram.setBounds({width:Math.max(rowDendrogramWidth,maxHeaderWidth),height:heatMapHeight,left:0,top:ypos}),this.rowDendrogram.$label.css("left",0).css("top",2),this.afterRowDendrogramDivider.setVisible(!0),this.afterRowDendrogramDivider.setBounds({height:heatMapHeight,left:this.rowDendrogram.getUnscaledWidth(),top:ypos}),xpos++):this.afterRowDendrogramDivider.setVisible(!1),this.heatmap.setBounds({width:heatMapWidth,height:heatMapHeight,left:xpos,top:ypos}),this.hSortByValuesIndicator.setBounds({height:4,width:heatMapWidth,left:xpos,top:ypos-4}),this.hscroll.setVisible(heatMapWidthi;i++){var track=this.rowTracks[i];if(track.isVisible()){nvisibleRowTracks++;break}}this.vSortByValuesIndicator.setBounds({width:4,height:heatMapHeight,left:xpos,top:ypos}),nvisibleRowTracks>0&&(xpos+=morpheus.HeatMap.SPACE_BETWEEN_HEAT_MAP_AND_ANNOTATIONS);for(var rowAnnotationXStart=xpos,i=0,length=this.rowTracks.length;length>i;i++){var track=this.rowTracks[i];if(track.isVisible()){var size=morpheus.CanvasUtil.getPreferredSize(track),headerSize=morpheus.CanvasUtil.getPreferredSize(this.rowTrackHeaders[i]);size.width=Math.max(headerSize.width,size.width),size.height=heatMapHeight,track.setBounds({width:size.width,height:size.height,left:xpos,top:ypos}),this.rowTrackHeaders[i].setBounds({width:size.width,left:xpos,top:ypos-headerSize.height-5,height:headerSize.height}),xpos+=size.width}}this.afterVerticalScrollBarDivider.setVisible(nvisibleRowTracks>0),this.afterVerticalScrollBarDivider.setBounds({left:rowAnnotationXStart-2,top:ypos-18}),this.vscroll.setVisible(heatMapHeightj;j++){var d=this.datasetRowView.getValue(j);isNaN(d)||(this.rowCachedMax=d>this.rowCachedMax?d:this.rowCachedMax,this.rowCachedMin=d
    "),this.currentValue=null,this.legend=new morpheus.LegendWithStops,this.legend.on("added",function(e){var fractions=that.colorScheme.getFractions();fractions.push(e.fraction);var colors=that.colorScheme.getColors();colors.push("black"),that.colorScheme.setFractions({fractions:fractions,colors:colors}),that.setSelectedIndex(_.indexOf(fractions,e.fraction)),that.fireChanged()}).on("selectedIndex",function(e){that.setSelectedIndex(e.selectedIndex)}).on("delete",function(index){that.deleteSelectedStop()}).on("moved",function(e){var fraction=e.fraction,fractions=that.colorScheme.getFractions();fractions[that.legend.selectedIndex]=fraction,that.colorScheme.setFractions({fractions:fractions,colors:that.colorScheme.getColors()});var newIndex=that.colorScheme.getFractions().indexOf(fraction);-1!==newIndex&&(that.legend.selectedIndex=newIndex);var fractionToValue=d3.scale.linear().domain([0,1]).range([that.colorScheme.getMin(),that.colorScheme.getMax()]).clamp(!0);that.formBuilder.setValue("selected_value",fractionToValue(fractions[that.legend.selectedIndex])),that.fireChanged()});var $row=$("
    ");$row.css("height","50px").css("width","300px").css("margin-left","auto").css("margin-right","auto"),$row.appendTo(this.$div),this.colorScheme=null,$(this.legend.canvas).appendTo($row);var formBuilder=new morpheus.FormBuilder,items=[];items=items.concat({name:"selected_color",type:"color",col:"col-xs-2"},{name:"selected_value",type:"text",col:"col-xs-4"},[{name:"delete",type:"button",value:"Delete Selected Color Stop"},{name:"add",type:"button",value:"Add Color Stop"}],{name:"minimum",type:"text",col:"col-xs-4"},{name:"maximum",type:"text",col:"col-xs-4"}),options.showRelative&&(items=items.concat({name:"color_scheme",type:"radio",options:["fixed","relative"]})),items=items.concat({name:"missing_color",type:"color",col:"col-xs-2"}),items.push({name:"stepped_colors",type:"checkbox",value:!1,help:"Intervals include left end point and exclude right end point, except for the highest interval"}),_.each(items,function(item){formBuilder.append(item)}),this.$div.append(formBuilder.$form),formBuilder.$form.find("[name^=selected],[name=delete]").prop("disabled",!0),formBuilder.$form.find("[name=add]").on("click",function(e){for(var fractions=that.colorScheme.getFractions(),val=.5;val>=0&&-1!==_.indexOf(fractions,val);)val-=.1;val=Math.max(0,val),fractions.push(val);var colors=that.colorScheme.getColors();colors.push("black"),that.colorScheme.setFractions({fractions:fractions,colors:colors}),that.setSelectedIndex(_.indexOf(fractions,val)),that.fireChanged()}),formBuilder.$form.find("[name=delete]").on("click",function(e){that.deleteSelectedStop()}),formBuilder.$form.on("keyup","[name=selected_value]",_.debounce(function(e){var val=parseFloat($(this).val());isNaN(val)||(that.setSelectedValue(val),that.fireChanged())},100)),formBuilder.$form.on("change","[name=selected_color]",function(e){var colors=that.colorScheme.getColors();colors[that.legend.selectedIndex]=$(this).val(),that.colorScheme.setFractions({fractions:that.colorScheme.getFractions(),colors:colors}),that.fireChanged()}),formBuilder.$form.on("change","[name=missing_color]",function(e){var color=$(this).val();that.colorScheme.setMissingColor(color),that.fireChanged()}),formBuilder.$form.on("change","[name=stepped_colors]",function(e){that.colorScheme.setStepped($(this).prop("checked")),that.fireChanged()}),formBuilder.$form.on("keyup","[name=minimum]",_.debounce(function(e){var val=parseFloat($(this).val());isNaN(val)||(that.colorScheme.setMin(val),that.setSelectedIndex(that.legend.selectedIndex),that.fireChanged())},100)),formBuilder.$form.on("keyup","[name=maximum]",_.debounce(function(e){var val=parseFloat($(this).val());isNaN(val)||(that.colorScheme.setMax(val),that.setSelectedIndex(that.legend.selectedIndex),that.fireChanged())},100)),formBuilder.$form.on("change","[name=color_scheme]",_.throttle(function(e){that.legend.selectedIndex=-1;var val=$(this).val(),scalingMode="relative"===val?morpheus.HeatMapColorScheme.ScalingMode.RELATIVE:morpheus.HeatMapColorScheme.ScalingMode.FIXED;that.colorScheme.setScalingMode(scalingMode),that.setColorScheme(that.colorScheme),that.fireChanged()},100)),this.formBuilder=formBuilder},morpheus.HeatMapColorSchemeChooser.prototype={deleteSelectedStop:function(){var fractions=this.colorScheme.getFractions();fractions.splice(this.legend.selectedIndex,1);var colors=this.colorScheme.getColors();colors.splice(this.legend.selectedIndex,1),this.colorScheme.setFractions({fractions:fractions,colors:colors}),this.formBuilder.$form.find("[name^=selected],[name=delete]").prop("disabled",!0),this.legend.setSelectedIndex(-1),this.fireChanged()},setSelectedValue:function(val){var valueToFraction=d3.scale.linear().domain([this.colorScheme.getMin(),this.colorScheme.getMax()]).range([0,1]).clamp(!0),fractions=this.colorScheme.getFractions();fractions[this.legend.selectedIndex]=valueToFraction(val),this.colorScheme.setFractions({fractions:fractions,colors:this.colorScheme.getColors()})},setSelectedIndex:function(index){var fractions=this.colorScheme.getFractions();index>=fractions.length&&(index=-1),this.legend.setSelectedIndex(index);var formBuilder=this.formBuilder;if(formBuilder.$form.find("[name^=selected],[name=delete]").prop("disabled",-1===this.legend.selectedIndex),-1!==this.legend.selectedIndex){var fractionToValue=d3.scale.linear().domain([0,1]).range([this.colorScheme.getMin(),this.colorScheme.getMax()]).clamp(!0);formBuilder.setValue("selected_value",fractionToValue(fractions[this.legend.selectedIndex]));var context=this.legend.canvas.getContext("2d"),colors=this.colorScheme.getColors();context.fillStyle=colors[this.legend.selectedIndex],formBuilder.setValue("selected_color",context.fillStyle)}else formBuilder.setValue("selected_value","");this.draw()},setMinMax:function(){this.colorScheme.getScalingMode()===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE&&(this.colorScheme.setMin(0),this.colorScheme.setMax(1))},dispose:function(){this.off("change"),this.legend.destroy(),this.formBuilder.$form.off("keyup","input"),this.formBuilder.$form.off("change","[name=color_scheme]")},restoreCurrentValue:function(){this.colorScheme.setCurrentValue&&this.colorScheme.setCurrentValue(this.currentValue)},setCurrentValue:function(value){this.currentValue=value,this.colorScheme.setCurrentValue&&this.colorScheme.setCurrentValue(this.currentValue),this.setColorScheme(this.colorScheme)},setColorScheme:function(colorScheme){this.colorScheme=colorScheme,this.setMinMax(),colorScheme.setCurrentValue&&colorScheme.setCurrentValue(this.currentValue),this.formBuilder.setValue("color_scheme",colorScheme.getScalingMode()===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE?"relative":"fixed"),this.formBuilder.$form.find("[name=minimum],[name=maximum]").prop("disabled",colorScheme.getScalingMode()===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE),this.formBuilder.setValue("minimum",this.colorScheme.getMin()),this.formBuilder.setValue("maximum",this.colorScheme.getMax()),this.formBuilder.setValue("stepped_colors",this.colorScheme.isStepped()),this.formBuilder.setValue("missing_color",this.colorScheme.getMissingColor()),this.draw()},getFractionToStopPix:function(){return d3.scale.linear().clamp(!0).domain([0,1]).range([this.legend.border,this.legend.getUnscaledWidth()-this.legend.border])},fireChanged:function(){this.trigger("change"),this.setColorScheme(this.colorScheme)},draw:function(){var colorScheme=this.colorScheme;colorScheme.getScalingMode()===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE&&(colorScheme.setMin(0),colorScheme.setMax(1));var fractions=colorScheme.getFractions(),colors=colorScheme.getColors(),fractionToStopPix=this.getFractionToStopPix();this.legend.draw(fractions,colors,colorScheme.isStepped(),fractionToStopPix)}},morpheus.Util.extend(morpheus.HeatMapColorSchemeChooser,morpheus.Events),morpheus.HeatMapColorSchemeLegend=function(controller,$keyContent){var totalHeight,colorScheme=controller.heatmap.getColorScheme(),tracks=colorScheme.getColorByValues();$keyContent.empty();var ntracks=tracks.length;tracks.forEach(function(value){if(null!=value||1===ntracks){if("null"!=value){var $label=$(''+value+"");$keyContent.append($label),totalHeight+=$label.height()}var trackLegend=new morpheus.HeatMapColorSchemeLegendTrack(colorScheme,value);$(trackLegend.canvas).css("position",""),trackLegend.repaint(),trackLegend.on("selectionChanged",function(){controller.heatmap.setInvalid(!0),controller.heatmap.repaint()}),$keyContent.append($(trackLegend.canvas)),totalHeight+=trackLegend.getUnscaledHeight()}}),controller.options.$key&&($keyContent.append(controller.options.$key),totalHeight+=controller.options.$key.height());var $edit=$('');$edit.find("[name=options]").on("click",function(e){e.preventDefault(),controller.showOptions(),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"options"})}),totalHeight+=$edit.height(),$keyContent.append($edit),$keyContent.css({"text-overflow":"ellipsis",overflow:"hidden",width:"250px",height:totalHeight+"px"})},morpheus.HeatMapColorSchemeLegendTrack=function(colorScheme,value){morpheus.AbstractCanvas.call(this,!1);var _this=this;this.value=value,this.colorScheme=colorScheme,colorScheme.setCurrentValue(value);var hiddenValues=colorScheme.getHiddenValues(),names=colorScheme.getNames(),hasNames=null!=names,legendHeight=hasNames?14*names.length:30,bounds={width:250,height:legendHeight};this.hasNames=hasNames,this.setBounds(bounds),hasNames&&hiddenValues&&$(this.canvas).on("click",function(e){e.preventDefault(),e.stopPropagation();var clickedRow=Math.floor((e.clientY-_this.canvas.getBoundingClientRect().top)/14),fractionToValue=d3.scale.linear().domain([0,1]).range([colorScheme.getMin(),colorScheme.getMax()]).clamp(!0),fractions=colorScheme.getFractions(),value=fractionToValue(fractions[clickedRow]);hiddenValues.has(value)?hiddenValues.remove(value):hiddenValues.add(value),_this.trigger("selectionChanged"),_this.repaint()})},morpheus.HeatMapColorSchemeLegendTrack.prototype={draw:function(clip,context){var colorScheme=this.colorScheme;colorScheme.setCurrentValue(this.value),context.fillStyle="white",context.fillRect(0,0,this.getUnscaledWidth(),this.getUnscaledHeight()),context.translate(this.hasNames?14:(this.getUnscaledWidth()-200)/2,0),morpheus.HeatMapColorSchemeLegend.drawColorScheme(context,colorScheme,200)}},morpheus.Util.extend(morpheus.HeatMapColorSchemeLegendTrack,morpheus.AbstractCanvas),morpheus.Util.extend(morpheus.HeatMapColorSchemeLegendTrack,morpheus.Events),morpheus.HeatMapColorSchemeLegend.drawColorScheme=function(context,colorScheme,width,printing,hideText){var names=colorScheme.getNames(),hasNames=null!=names;if(hasNames)morpheus.HeatMapColorSchemeLegend.drawColorSchemeVertically(context,colorScheme,colorScheme.getHiddenValues(),printing);else{if(morpheus.HeatMapColorSchemeLegend.draw(context,colorScheme.getFractions(),colorScheme.getColors(),width,12,colorScheme.isStepped()),context.strokeStyle="LightGrey",context.strokeRect(0,0,width,12),hideText)return;var map=d3.scale.linear().domain([0,1]).range([0,width]).clamp(!0),fractionToValue=d3.scale.linear().domain([0,1]).range([colorScheme.getMin(),colorScheme.getMax()]).clamp(!0);if(context.textAlign="center",context.textBaseline="top",context.fillStyle="black",context.font="12px "+morpheus.CanvasUtil.FONT_NAME,colorScheme.getScalingMode()===morpheus.HeatMapColorScheme.ScalingMode.RELATIVE)context.fillText("row min",0,14),context.fillText("row max",width,14);else{for(var fractions=colorScheme.getFractions(),lastTextPixEnd=-1,halfway=parseInt(fractions.length/2),i=0;halfway>i;i++){var pix=map(fractions[i]),text="";text=hasNames?""!=names[i]?names[i]+" ("+fractionToValue(fractions[i])+")":names[i]:morpheus.Util.nf(fractionToValue(fractions[i]));var textWidth=context.measureText(text).width;pix>lastTextPixEnd&&context.fillText(text,pix,14),lastTextPixEnd=pix+textWidth/2}for(var lastTextPixStart=1e4,i=fractions.length-1;i>=halfway;i--){var pix=map(fractions[i]),text="";text=hasNames?""!=names[i]?names[i]+" ("+fractionToValue(fractions[i])+")":names[i]:morpheus.Util.nf(fractionToValue(fractions[i]));var textWidth=context.measureText(text).width;lastTextPixStart>pix&&(context.fillText(text,pix,14),lastTextPixStart=pix-textWidth/2)}}}},morpheus.HeatMapColorSchemeLegend.drawColorSchemeVertically=function(context,colorScheme,hiddenValues,printing){var fractionToValue=d3.scale.linear().domain([0,1]).range([colorScheme.getMin(),colorScheme.getMax()]).clamp(!0);context.textAlign="left",context.textBaseline="top",context.fillStyle="black";var fractions=colorScheme.getFractions(),colors=colorScheme.getColors(),names=colorScheme.getNames();context.strokeStyle="LightGrey";var xpix=0,ypix=0;context.font="12px "+morpheus.CanvasUtil.FONT_NAME;for(var i=0;ii;i++){context.fillStyle=colors[i];var x1=map(fractions[i]),x2=i===length-1?width:map(fractions[i+1]);context.fillRect(Math.min(x1,x2),0,Math.abs(x2-x1),height)}else{for(var gradient=context.createLinearGradient(0,0,width,height),i=0,length=fractions.length;length>i;i++)gradient.addColorStop(fractions[i],colors[i]);context.fillStyle=gradient,context.fillRect(0,0,width,height)}},morpheus.HeatMapColorSchemeLegend.prototype={},morpheus.HeatMapSynchronizer=function(){this.controllers=[]},morpheus.HeatMapSynchronizer.prototype={firing:!1,getProject:function(){return this.controllers[0].getProject()},zoom:function(){this.controllers[0].zoom.apply(this.controllers[0],arguments)},setTrackVisible:function(){this.controllers[0].setTrackVisible.apply(this.controllers[0],arguments)},revalidate:function(){this.controllers[0].revalidate.apply(this.controllers[0],arguments)},add:function(controller){var that=this;this.controllers.push(controller),controller.on("change",function(event){if(!that.firing){var source=event.source,method=event.name;that.firing=!0,_.each(that.controllers,function(c){c!==source&&c[method].apply(c,event.arguments)}),that.firing=!1}})}},morpheus.HeatMapElementCanvas=function(project){morpheus.AbstractCanvas.call(this,!0),this.colorScheme=null,this.project=project,this.dataset=null;var _this=this;this.columnPositions=new morpheus.Positions,this.rowPositions=new morpheus.Positions,this.lastPosition={left:-1,right:-1,top:-1,bottom:-1},project.getElementSelectionModel().on("selectionChanged",function(){_this.repaint()})},morpheus.HeatMapElementCanvas.GRID_COLOR="rgb(128,128,128)",morpheus.HeatMapElementCanvas.prototype={drawGrid:!0,getColorScheme:function(){return this.colorScheme},isDrawGrid:function(){return this.drawGrid},setDrawGrid:function(drawGrid){this.drawGrid=drawGrid},setColorScheme:function(colorScheme){this.colorScheme=colorScheme},setDataset:function(dataset){this.dataset=dataset,this.columnPositions.setLength(this.dataset.getColumnCount()),this.rowPositions.setLength(this.dataset.getRowCount())},getColumnPositions:function(){return this.columnPositions},getRowPositions:function(){return this.rowPositions},getPreferredSize:function(context){var w=Math.ceil(this.columnPositions.getPosition(this.columnPositions.getLength()-1)+this.columnPositions.getItemSize(this.columnPositions.getLength()-1)),h=Math.ceil(this.rowPositions.getPosition(this.rowPositions.getLength()-1)+this.rowPositions.getItemSize(this.rowPositions.getLength()-1));return{width:w,height:h}},prePaint:function(clip,context){var lastPosition=this.lastPosition,columnPositions=this.columnPositions,rowPositions=this.rowPositions,left=morpheus.Positions.getLeft(clip,columnPositions),right=morpheus.Positions.getRight(clip,columnPositions),top=morpheus.Positions.getTop(clip,rowPositions),bottom=morpheus.Positions.getBottom(clip,rowPositions);(this.invalid||left!==lastPosition.left||right!==lastPosition.right||top!==lastPosition.top||bottom!==lastPosition.bottom)&&(lastPosition.right=right,lastPosition.left=left,lastPosition.top=top,lastPosition.bottom=bottom,this.invalid=!0)},postPaint:function(clip,context){morpheus.CanvasUtil.resetTransform(context);var project=this.project;context.strokeStyle="Grey",context.lineWidth=1;var rowPositions=this.getRowPositions(),columnPositions=this.getColumnPositions();if(project.getHoverColumnIndex()>=0||project.getHoverRowIndex()>=0){var height=rowPositions.getItemSize(project.getHoverColumnIndex()),width=columnPositions.getItemSize(project.getHoverColumnIndex()),y=-1===project.getHoverRowIndex()?rowPositions.getPosition(rowPositions.getLength()-1):rowPositions.getPosition(project.getHoverRowIndex()),x=-1===project.getHoverColumnIndex()?columnPositions.getPosition(0):columnPositions.getPosition(project.getHoverColumnIndex());-1!==project.getHoverColumnIndex()&&context.strokeRect(x-clip.x,0,width,this.getUnscaledHeight()),-1!==project.getHoverRowIndex()&&context.strokeRect(0,y-clip.y,this.getUnscaledWidth(),height),-1!==project.getHoverColumnIndex()&&-1!==project.getHoverRowIndex()&&(context.strokeStyle="black",context.lineWidth=3,context.strokeRect(x-clip.x+1.5,y-clip.y+1.5,width-1.5,height-1.5))}var left=morpheus.Positions.getLeft(clip,columnPositions),right=morpheus.Positions.getRight(clip,columnPositions),top=morpheus.Positions.getTop(clip,rowPositions),bottom=morpheus.Positions.getBottom(clip,rowPositions);context.strokeStyle="rgb(182,213,253)",context.lineWidth=3,context.translate(-clip.x,-clip.y);var selectedElements=project.getElementSelectionModel().getViewIndices();null!=selectedElements&&selectedElements.forEach(function(id){var rowIndex=id.getArray()[0],columnIndex=id.getArray()[1];if(rowIndex>=top&&bottom>rowIndex&&columnIndex>=left&&right>columnIndex){var rowSize=rowPositions.getItemSize(rowIndex),py=rowPositions.getPosition(rowIndex),columnSize=columnPositions.getItemSize(columnIndex),px=columnPositions.getPosition(columnIndex);context.strokeRect(px+1.5,py+1.5,columnSize-1.5,rowSize-1.5)}})},setElementDrawCallback:function(elementDrawCallback){this._elementDrawCallback=elementDrawCallback},setDrawCallback:function(drawCallback){this.drawCallback=drawCallback},draw:function(clip,context){var columnPositions=this.columnPositions,rowPositions=this.rowPositions,left=morpheus.Positions.getLeft(clip,columnPositions),right=morpheus.Positions.getRight(clip,columnPositions),top=morpheus.Positions.getTop(clip,rowPositions),bottom=morpheus.Positions.getBottom(clip,rowPositions),dataset=this.dataset;context.translate(-clip.x,-clip.y);for(var colorScheme=this.colorScheme,drawGrid=this.drawGrid,elementDrawCallback=this._elementDrawCallback,seriesNameToIndex={},i=0;irow;row++)for(var rowSize=rowPositions.getItemSize(row),py=rowPositions.getPosition(row),column=left;right>column;column++){var columnSize=columnPositions.getItemSize(column),px=columnPositions.getPosition(column);if(context.fillStyle=colorScheme.getColor(row,column,dataset.getValue(row,column)),column===left){sizer=colorScheme.getSizer(),sizeBySeriesName=sizer.getSeriesName(),sizeBySeriesIndex=null!=sizeBySeriesName?seriesNameToIndex[sizeBySeriesName]:void 0,conditionSeriesIndices=[],conditions=colorScheme.getConditions().getConditions();for(var ci=0,nconditions=conditions.length;nconditions>ci;ci++)conditionSeriesIndices.push(seriesNameToIndex[conditions[ci].series])}var yoffset=0,cellRowSize=rowSize;if(void 0!==sizeBySeriesIndex){var sizeByValue=dataset.getValue(row,column,sizeBySeriesIndex);if(!isNaN(sizeByValue)){var f=sizer.valueToFraction(sizeByValue),rowDiff=rowSize-rowSize*f;yoffset=rowDiff,cellRowSize-=rowDiff}}if(conditions.length>0){for(var condition=null,ci=0,nconditions=conditions.length;nconditions>ci;ci++){var cond=conditions[ci],condValue=dataset.getValue(row,column,conditionSeriesIndices[ci]);if(!isNaN(condValue)&&cond.accept(condValue)){condition=cond;break}}if(null!==condition){context.fillRect(px,py+yoffset,columnSize,cellRowSize);var x=px+cellRowSize/2,y=py+yoffset+columnSize/2;context.fillStyle=condition.color,morpheus.CanvasUtil.drawShape(context,condition.shape,x,y,Math.min(columnSize,cellRowSize)/4),context.fill()}else context.fillRect(px,py+yoffset,columnSize,cellRowSize)}else context.fillRect(px,py+yoffset,columnSize,cellRowSize);elementDrawCallback&&elementDrawCallback(context,dataset,row,column,px,py,columnSize,rowSize)}if(drawGrid){context.strokeStyle=morpheus.HeatMapElementCanvas.GRID_COLOR,context.lineWidth=.1;for(var row=top;bottom>row;row++)for(var rowSize=rowPositions.getItemSize(row),py=rowPositions.getPosition(row),column=left;right>column;column++){var columnSize=columnPositions.getItemSize(column),px=columnPositions.getPosition(column),grid=drawGrid&&columnSize>10&&rowSize>10;grid&&context.strokeRect(px,py,columnSize,rowSize)}}this.drawCallback&&this.drawCallback({context:context,dataset:dataset,top:top,bottom:bottom,left:left,right:right,rowPositions:rowPositions,columnPositions:columnPositions,project:this.project,clip:clip}),context.lineWidth=1,context.translate(clip.x,clip.y)}},morpheus.Util.extend(morpheus.HeatMapElementCanvas,morpheus.AbstractCanvas),morpheus.HeatMapKeyListener=function(controller){var keydown=function(e){var tagName=e.target.tagName;if("INPUT"!=tagName&&"SELECT"!=tagName&&"TEXTAREA"!=tagName){var found=!1,commandKey=morpheus.Util.IS_MAC?e.metaKey:e.ctrlKey,shiftKey=(e.altKey,e.shiftKey);if(commandKey&&65===e.which){var active=controller.getActiveComponent();if(-1!==active){found=!0;for(var selectionModel=0===active?controller.getProject().getRowSelectionModel():controller.getProject().getColumnSelectionModel(),count=0===active?controller.getProject().getSortedFilteredDataset().getRowCount():controller.getProject().getSortedFilteredDataset().getColumnCount(),indices=new morpheus.Set,i=0;count>i;i++)indices.add(i);selectionModel.setViewIndices(indices,!0),found=!0}}else if(61===e.which||187===e.which||107===e.which)controller.zoom(!0),found=!0;else if(173===e.which||189===e.which||109===e.which)controller.zoom(!1),found=!0;else if(35===e.which)controller.scrollLeft(controller.heatmap.getPreferredSize().width),controller.scrollTop(controller.heatmap.getPreferredSize().height),found=!0;else if(36===e.which)controller.scrollLeft(0),controller.scrollTop(0),found=!0;else if(34===e.which){var pos=controller.scrollTop(); +controller.scrollTop(pos+controller.heatmap.getUnscaledHeight()-2),found=!0}else if(33===e.which){var pos=controller.scrollTop();controller.scrollTop(pos-controller.heatmap.getUnscaledHeight()+2),found=!0}else 38===e.which?(commandKey?controller.scrollTop(0):controller.scrollTop(controller.scrollTop()-8),found=!0):40===e.which?(commandKey?controller.scrollTop(controller.heatmap.getPreferredSize().height):controller.scrollTop(controller.scrollTop()+8),found=!0):37===e.which?(commandKey?controller.scrollLeft(0):controller.scrollLeft(controller.scrollLeft()-8),found=!0):39===e.which?(commandKey?controller.scrollLeft(controller.heatmap.getPreferredSize().width):controller.scrollLeft(controller.scrollLeft()+8),found=!0):commandKey&&(83===e.which?(shiftKey?morpheus.HeatMap.showTool(new morpheus.SaveDatasetTool,controller):morpheus.HeatMap.showTool(new morpheus.SaveImageTool,controller),found=!0):79===e.which?(morpheus.HeatMap.showTool(new morpheus.OpenFileTool,controller),found=!0):70===e.which?(controller.getToolbarElement().find(e.shiftKey?"[name=searchColumns]":"[name=searchRows]").focus(),found=!0):88===e.which&&(morpheus.HeatMap.showTool(new morpheus.NewHeatMapTool,controller),found=!0));return found?(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!1):void 0}},$keyelement=controller.$el;$keyelement.on("keydown",keydown),$keyelement.on("dragover.morpheus dragenter.morpheus",function(e){e.preventDefault(),e.stopPropagation()}).on("drop.morpheus",function(e){if(e.originalEvent.dataTransfer&&e.originalEvent.dataTransfer.files.length){e.preventDefault(),e.stopPropagation();var files=e.originalEvent.dataTransfer.files;morpheus.HeatMap.showTool(new morpheus.OpenFileTool({file:files[0]}),controller)}}),$keyelement.on("paste.morpheus",function(e){var tagName=e.target.tagName;if("INPUT"!=tagName&&"SELECT"!=tagName&&"TEXTAREA"!=tagName){var text=e.originalEvent.clipboardData.getData("text/plain");if(null!=text&&text.length>0){e.preventDefault(),e.stopPropagation();var blob=new Blob([text]),url=window.URL.createObjectURL(blob);morpheus.HeatMap.showTool(new morpheus.OpenFileTool({file:url}),controller)}}}),$keyelement.on("mousewheel",function(e){var scrolly=e.deltaY*e.deltaFactor,scrollx=e.deltaX*e.deltaFactor;e.altKey?controller.zoom(scrolly>0,{rows:!0,columns:!0}):(0!==scrolly&&controller.scrollTop(controller.scrollTop()-scrolly),0!==scrollx&&controller.scrollLeft(controller.scrollLeft()-scrollx)),e.preventDefault(),e.stopPropagation()})},morpheus.HeatMapOptions=function(controller){function createMetadataField(isColumns){var options=[],value={},field={type:"bootstrap-select",name:isColumns?"column_annotations":"row_annotations",multiple:!0,value:value,options:options,toggle:!0};return _.each(controller.getVisibleTrackNames(isColumns),function(name){value[name]=!0}),_.each(morpheus.MetadataUtil.getMetadataNames(isColumns?controller.getProject().getFullDataset().getColumnMetadata():controller.getProject().getFullDataset().getRowMetadata()),function(name){options.push(name)}),field}function annotationsListener($select,isColumns){var names=[];_.each(controller.getVisibleTrackNames(isColumns),function(name){names.push(name)});var values=$select.val(),selectedNow=_.difference(values,names),unselectedNow=_.difference(names,values),tracks=[];_.each(selectedNow,function(name){tracks.push({name:name,isColumns:isColumns,visible:!0})}),_.each(unselectedNow,function(name){tracks.push({name:name,isColumns:isColumns,visible:!1})}),controller.setTrackVisibility(tracks),colorSchemeChooser.restoreCurrentValue()}var items=[{name:"color_by",required:!0,type:"select",options:["(None)"].concat(morpheus.MetadataUtil.getMetadataNames(controller.getProject().getFullDataset().getRowMetadata())),value:controller.heatmap.getColorScheme().getSeparateColorSchemeForRowMetadataField()},{name:"color_by_value",required:!0,type:"select",options:[]},{name:"load_predefined_scheme",required:!0,type:"select",options:[{name:"",value:""},{name:"relative",value:"gene"},{name:"binary",value:"binary"},{name:"MAF",value:"MAF"},{name:"fixed (-1.5, -0.1, 0.1, 1.5)",value:"cn"},{name:"fixed (-90, -80, 80, 90)",value:"100scale2"},{name:"fixed (-90, 90)",value:"100scale1"}]},{name:"save_color_scheme",type:"button"},{name:"load_color_scheme",type:"file"}];controller.getProject().getFullDataset().getSeriesCount()>1&&(items.push({name:"size_by",required:!0,type:"select",options:["(None)"].concat(morpheus.DatasetUtil.getSeriesNames(controller.getProject().getFullDataset()))}),items.push({name:"size_by_minimum",title:"Size by minimum",required:!0,type:"text",col:"col-xs-4"}),items.push({name:"size_by_maximum",title:"Size by maximum",required:!0,type:"text",col:"col-xs-4"}),items.push({name:"conditional_rendering",required:!0,type:"button",col:"col-xs-4"}));var displayItems=[{name:"show_grid",required:!0,type:"checkbox",value:controller.heatmap.isDrawGrid()},{name:"row_size",required:!0,type:"text",col:"col-xs-4",value:morpheus.Util.nf(controller.heatmap.getRowPositions().getSize())},{name:"column_size",required:!0,type:"text",col:"col-xs-4",value:morpheus.Util.nf(controller.heatmap.getColumnPositions().getSize())}];controller.rowDendrogram&&displayItems.push({name:"row_dendrogram_line_thickness",required:!0,type:"text",col:"col-xs-4",value:morpheus.Util.nf(controller.rowDendrogram?controller.rowDendrogram.lineWidth:1)}),controller.columnDendrogram&&displayItems.push({name:"column_dendrogram_line_thickness",required:!0,type:"text",col:"col-xs-4",value:morpheus.Util.nf(controller.columnDendrogram?controller.columnDendrogram.lineWidth:1)}),displayItems.push({name:"info_window",required:!0,type:"select",col:"col-xs-4",options:[{name:"Fixed To Top",value:0},{name:"New Window",value:1}],value:controller.tooltipMode}),displayItems.push({name:"inline_tooltip",required:!0,type:"checkbox",value:controller.options.inlineTooltip});var colorSchemeFormBuilder=new morpheus.FormBuilder;_.each(items,function(item){colorSchemeFormBuilder.append(item)});var displayFormBuilder=new morpheus.FormBuilder;_.each(displayItems,function(item){displayFormBuilder.append(item)});var colorSchemeChooser=new morpheus.HeatMapColorSchemeChooser({showRelative:!0});colorSchemeChooser.on("change",function(){controller.heatmap.getColorScheme().getSizer&&null!=controller.heatmap.getColorScheme().getSizer()&&(colorSchemeFormBuilder.setValue("size_by",controller.heatmap.getColorScheme().getSizer().getSeriesName()),colorSchemeFormBuilder.setEnabled("size_by_minimum",null!=controller.heatmap.getColorScheme().getSizer().getSeriesName()),colorSchemeFormBuilder.setEnabled("size_by_maximum",null!=controller.heatmap.getColorScheme().getSizer().getSeriesName()),colorSchemeFormBuilder.setValue("size_by_minimum",controller.heatmap.getColorScheme().getSizer().getMin()),colorSchemeFormBuilder.setValue("size_by_maximum",controller.heatmap.getColorScheme().getSizer().getMax())),controller.heatmap.setInvalid(!0),controller.heatmap.repaint(),colorSchemeChooser.restoreCurrentValue()});var annotationsBuilder=new morpheus.FormBuilder;annotationsBuilder.append(createMetadataField(!1)),annotationsBuilder.append(createMetadataField(!0));var $ca=annotationsBuilder.$form.find("[name=column_annotations]");$ca.on("change",function(e){annotationsListener($(this),!0)});var $ra=annotationsBuilder.$form.find("[name=row_annotations]");$ra.on("change",function(e){annotationsListener($(this),!1)});var annotationOptionsTabId=_.uniqueId("morpheus"),heatMapOptionsTabId=_.uniqueId("morpheus"),displayOptionsTabId=_.uniqueId("morpheus"),$metadataDiv=$('
    ');$metadataDiv.append($(annotationsBuilder.$form));var $heatMapDiv=$('
    ');$heatMapDiv.append(colorSchemeChooser.$div),$heatMapDiv.append($(colorSchemeFormBuilder.$form));var $displayDiv=$('
    ');$displayDiv.append($(displayFormBuilder.$form)),displayFormBuilder.$form.find("[name=show_grid]").on("click",function(e){var grid=$(this).prop("checked");controller.heatmap.setDrawGrid(grid),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()}),displayFormBuilder.$form.find("[name=inline_tooltip]").on("click",function(e){controller.options.inlineTooltip=$(this).prop("checked")}),displayFormBuilder.$form.find("[name=row_size]").on("keyup",_.debounce(function(e){controller.heatmap.getRowPositions().setSize(parseFloat($(this).val())),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100)),displayFormBuilder.$form.find("[name=info_window]").on("change",function(e){controller.setTooltipMode(parseInt($(this).val()))});var $colorByValue=colorSchemeFormBuilder.$form.find("[name=color_by_value]"),separateSchemesField=controller.heatmap.getColorScheme().getSeparateColorSchemeForRowMetadataField();null!=separateSchemesField&&$colorByValue.html(morpheus.Util.createOptions(morpheus.VectorUtil.createValueToIndexMap(controller.project.getFullDataset().getRowMetadata().getByName(separateSchemesField)).keys())),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme()),null!=separateSchemesField&&colorSchemeChooser.setCurrentValue($colorByValue.val()),controller.heatmap.getColorScheme().getSizer&&null!=controller.heatmap.getColorScheme().getSizer()&&controller.heatmap.getColorScheme().getSizer().getSeriesName()&&colorSchemeFormBuilder.setValue("size_by",controller.heatmap.getColorScheme().getSizer().getSeriesName()),colorSchemeFormBuilder.$form.find("[name=size_by]").on("change",function(e){var series=$(this).val();"(None)"==series&&(series=null),colorSchemeChooser.colorScheme.getSizer().setSeriesName(series),colorSchemeChooser.fireChanged()}),colorSchemeFormBuilder.$form.find("[name=size_by_minimum]").on("keyup",_.debounce(function(e){colorSchemeChooser.colorScheme.getSizer().setMax(parseFloat($(this).val())),colorSchemeChooser.fireChanged()},100)),colorSchemeFormBuilder.$form.find("[name=conditional_rendering]").on("click",function(e){e.preventDefault();var conditionalRenderingUI=new morpheus.ConditionalRenderingUI(controller);morpheus.FormBuilder.showInModal({title:"Conditional Rendering",html:conditionalRenderingUI.$div,close:"Close",z:1051,callback:function(){}})}),colorSchemeFormBuilder.$form.find("[name=size_by_maximum]").on("keyup",_.debounce(function(e){colorSchemeChooser.colorScheme.getSizer().setMax(parseFloat($(this).val())),colorSchemeChooser.fireChanged()},100)),colorSchemeFormBuilder.find("save_color_scheme").on("click",function(e){e.preventDefault();var blob=new Blob([controller.heatmap.getColorScheme().toJson()],{type:"application/json"});saveAs(blob,"color_scheme.json")}),colorSchemeFormBuilder.on("change",function(e){"load_color_scheme"===e.name&&""!==e.value&&null!=e.value&&morpheus.Util.getText(e.value).done(function(text){var json=JSON.parse($.trim(text));controller.heatmap.getColorScheme().fromJson(json),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme()),controller.heatmap.setInvalid(!0),controller.heatmap.repaint()}).fail(function(){morpheus.FormBuilder.showInModal({title:"Error",html:"Unable to read saved color scheme."})})}),colorSchemeFormBuilder.$form.on("change","[name=load_predefined_scheme]",function(e){var val=$(this).val();""!==val?("gene"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.RELATIVE())):"cn"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.CN())):"MAF"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.MAF())):"binary"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.BINARY())):"100scale1"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.SUMMLY())):"100scale2"===val?controller.heatmap.getColorScheme().setColorSupplierForCurrentValue(morpheus.HeatMapColorScheme.createColorSupplier(morpheus.HeatMapColorScheme.Predefined.SUMMLY2())):console.log("not found"),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme()),controller.heatmap.setInvalid(!0),controller.heatmap.repaint(),$(this).val("")):console.log("empty option selected"),colorSchemeChooser.restoreCurrentValue()}),colorSchemeFormBuilder.$form.find("[name=color_by]").on("change",function(e){var colorByField=$(this).val();"(None)"==colorByField&&(colorByField=null),controller.heatmap.getColorScheme().setSeparateColorSchemeForRowMetadataField(colorByField),null!=colorByField&&$colorByValue.html(morpheus.Util.createOptions(morpheus.VectorUtil.createValueToIndexMap(controller.project.getFullDataset().getRowMetadata().getByName(colorByField)).keys()));var colorByValue=$colorByValue.val();controller.heatmap.getColorScheme().setCurrentValue(colorByValue),colorSchemeChooser.setCurrentValue(colorByValue),controller.heatmap.setInvalid(!0),controller.heatmap.repaint(),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme())}),$colorByValue.on("change",function(e){null==controller.heatmap.getColorScheme().getSeparateColorSchemeForRowMetadataField()?(colorSchemeChooser.setCurrentValue(null),controller.heatmap.getColorScheme().setCurrentValue(null),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme())):(colorSchemeChooser.setCurrentValue($colorByValue.val()),colorSchemeChooser.setColorScheme(controller.heatmap.getColorScheme()))}),displayFormBuilder.$form.find("[name=column_size]").on("keyup",_.debounce(function(e){controller.heatmap.getColumnPositions().setSize(parseFloat($(this).val())),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100)),displayFormBuilder.$form.find("[name=gap_size]").on("keyup",_.debounce(function(e){controller.gapSize=parseFloat($(this).val()),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100)),displayFormBuilder.$form.find("[name=squish_factor]").on("keyup",_.debounce(function(e){var f=parseFloat($(this).val());controller.heatmap.getColumnPositions().setSquishFactor(f),controller.heatmap.getRowPositions().setSquishFactor(f),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100)),displayFormBuilder.$form.find("[name=row_dendrogram_line_thickness]").on("keyup",_.debounce(function(e){controller.rowDendrogram.lineWidth=parseFloat($(this).val()),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100)),displayFormBuilder.$form.find("[name=column_dendrogram_line_thickness]").on("keyup",_.debounce(function(e){controller.columnDendrogram.lineWidth=parseFloat($(this).val()),controller.revalidate(),colorSchemeChooser.restoreCurrentValue()},100));var $tab=$('
    ');$metadataDiv.appendTo($tab),$heatMapDiv.appendTo($tab),$displayDiv.appendTo($tab);var $div=$("
    "),$ul=$('');$ul.appendTo($div),$tab.appendTo($div),$ul.find("[role=tab]:eq(1)").tab("show"),morpheus.FormBuilder.showInModal({title:"Options",html:$div,close:"Close",callback:function(){$div.find("input").off("keyup"),$ca.off("change"),$ra.off("change"),$div.remove(),colorSchemeChooser.dispose()}})},morpheus.HeatMapToolBar=function(controller){this.controller=controller,this.rowSearchResultModelIndices=[],this.columnSearchResultModelIndices=[];var _this=this,$el=$('
    '),searchHtml=[],$search=$('');if($search.on("submit",function(e){e.preventDefault()}),controller.options.toolbar.searchRows&&(searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push(''),searchHtml.push('"),searchHtml.push("
    "),searchHtml.push(''),searchHtml.push("
    "),searchHtml.push('
    '),searchHtml.push(''),searchHtml.push('
    '),searchHtml.push(''),searchHtml.push(''),searchHtml.push(''),searchHtml.push("
    "),searchHtml.push("
    ")),controller.options.toolbar.searchColumns&&(searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push(''),searchHtml.push('"),searchHtml.push("
    "),searchHtml.push('
    '),searchHtml.push("
    "),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push(''),searchHtml.push(''),searchHtml.push(''),searchHtml.push(''),searchHtml.push(""),searchHtml.push("
    ")),searchHtml.push('
    '),searchHtml.push('
    Values
    '),searchHtml.push("
    "),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push("
    "),searchHtml.push('"),searchHtml.push('"),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push('
    '),searchHtml.push("
    "),searchHtml.push('
    '),searchHtml.push("
    "),$(searchHtml.join("")).appendTo($search),controller.options.toolbar.searchValues||$search.find("[name=searchValuesDiv]").css("display","none"),controller.options.tour){var $tour=$('');$tour.prependTo($search.find("[name=right]")),$tour.on("click",function(e){e.preventDefault(),controller.options.tour(controller)})}controller.options.$help&&controller.options.$help.appendTo($search.find("[name=right]"));var $tools=$('
    ');$tools.on("submit",function(e){e.preventDefault()});var $toolbarForm=$('
    ');$toolbarForm.on("submit",function(e){e.preventDefault()});var toolbarHtml=[];controller.options.toolbar.zoom&&(toolbarHtml.push('
    '),toolbarHtml.push(''),toolbarHtml.push(''),toolbarHtml.push(''),toolbarHtml.push('')),toolbarHtml.push('
    '),controller.options.toolbar.sort&&toolbarHtml.push(''),controller.options.toolbar.options&&toolbarHtml.push(''),toolbarHtml.push('
    '),controller.options.toolbar.saveImage&&toolbarHtml.push(''),controller.options.toolbar.saveDataset&&toolbarHtml.push(''),controller.options.toolbar.openFile&&toolbarHtml.push(''),toolbarHtml.push('
    '),controller.options.toolbar.filter&&toolbarHtml.push(''),"undefined"!=typeof Plotly&&toolbarHtml.push('');var tools=[{tool:new morpheus.HClusterTool},{tool:new morpheus.MarkerSelection},{tool:new morpheus.NearestNeighbors},{tool:new morpheus.NewHeatMapTool},null,{tool:new morpheus.AdjustDataTool},{tool:new morpheus.CollapseDatasetTool},{tool:new morpheus.CreateAnnotation},{tool:new morpheus.TransposeTool},{tool:new morpheus.WordCloudTool}];if(this.getToolByName=function(name){for(var i=0;i'),toolbarHtml.push(''),toolbarHtml.push('
    ")}toolbarHtml.push('
    '),controller.options.toolbar.colorKey&&(toolbarHtml.push('
    '),toolbarHtml.push(''),toolbarHtml.push('"),toolbarHtml.push("
    "));var tipWidth=400;"undefined"!=typeof window&&(tipWidth=window.screen.width-400),toolbarHtml.push('
    '),toolbarHtml.push("
    "),$search.appendTo($el.find("[name=toolbarSearch]")),$(toolbarHtml.join("")).appendTo($toolbarForm),$toolbarForm.appendTo($el.find("[name=toolbarButtons]")),$el.prependTo(controller.$el);var $tools=$el.find("[name=tools]");this.$tip=$el.find("[name=tip]"),$tools.on("click","li > a",function(e){e.preventDefault();var index=parseInt($(this).attr("name"));tools[index].tool?morpheus.HeatMap.showTool(tools[index].tool,controller):tools[index].action()}),this.defaultRowMatchMode="contains",this.defaultColumnMatchMode="contains";var $rowSearchOptions=$el.find("[name=rowSearchOptions]");$rowSearchOptions.on("click","li > a",function(e){e.preventDefault(),_this.defaultRowMatchMode=$(this).attr("name"),$rowSearchOptions.find("li").removeClass("active"),$(this).parent("li").addClass("active"),_this.search(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"rowSearchMatchMode"})});var $columnSearchOptions=$el.find("[name=columnSearchOptions]");$columnSearchOptions.on("click","li > a",function(e){e.preventDefault(),_this.defaultColumnMatchMode=$(this).attr("name"),$columnSearchOptions.find("li").removeClass("active"),$(this).parent("li").addClass("active"),_this.search(!1),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"columnSearchMatchMode"})});var filterModal=[],filterLabelId=_.uniqueId("morpheus");filterModal.push('");var $filterModal=$(filterModal.join(""));$filterModal.on("mousewheel",function(e){e.stopPropagation()});var $filter=$("
    ");$filter.appendTo($filterModal.find(".modal-body")),$filterModal.appendTo($el);var filterHtml=[];filterHtml.push('
    '),filterHtml.push('
    ');var $filterChooser=$(filterHtml.join(""));$filterChooser.appendTo($filter);var columnFilterUI=new morpheus.FilterUI(controller.getProject(),!0),rowFilterUI=new morpheus.FilterUI(controller.getProject(),!1);controller.getProject().getRowFilter().on("focus",function(e){$filterChooser.find("[value=rows]").prop("checked",!0),columnFilterUI.$div.hide(),rowFilterUI.$div.show(),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"rowFilter"})}),controller.getProject().getColumnFilter().on("focus",function(e){$filterChooser.find("[value=columns]").prop("checked",!0),columnFilterUI.$div.show(),rowFilterUI.$div.hide(),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"columnFilter"})}),rowFilterUI.$div.appendTo($filter),columnFilterUI.$div.appendTo($filter),columnFilterUI.$div.css("display","none");var $filterRadio=$filterChooser.find("[name=rowsOrColumns]");$filterRadio.on("change",function(e){var val=$filterRadio.filter(":checked").val();"columns"===val?(columnFilterUI.$div.show(),rowFilterUI.$div.hide()):(columnFilterUI.$div.hide(),rowFilterUI.$div.show()),e.preventDefault()}),$el.find("[name=filterButton]").on("click",function(){$filterModal.modal("show"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"filter"})}),$el.find('[data-toggle="tooltip"]').tooltip({placement:"bottom",container:"body",trigger:"hover"}).on("click",function(){$(this).tooltip("hide")});var $key=$el.find("[name=key]"),$keyContent=$el.find("[name=keyContent]");$key.dropdown().parent().on("show.bs.dropdown",function(){new morpheus.HeatMapColorSchemeLegend(controller,$keyContent),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"colorKey"})}),$el.find("[name=openFile]").on("click",function(){morpheus.HeatMap.showTool(new morpheus.OpenFileTool({customUrls:controller._customUrls}),controller)}),$el.find("[name=saveImage]").on("click",function(){morpheus.HeatMap.showTool(new morpheus.SaveImageTool,controller)}),$el.find("[name=saveDataset]").on("click",function(){morpheus.HeatMap.showTool(new morpheus.SaveDatasetTool,controller)}),$el.find("[name=chart]").on("click",function(){new morpheus.ChartTool2({ +project:controller.getProject(),getVisibleTrackNames:_.bind(controller.getVisibleTrackNames,controller)}),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"chart"})});var _this=this;$el.find("[name=tutorial]").on("click",function(){window.open("http://www.broadinstitute.org/cancer/software/morpheus/tutorial.html"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"tutorial"})}),this.$previousColumnMatch=$el.find("[name=previousColumnMatch]"),this.$nextColumnMatch=$el.find("[name=nextColumnMatch]"),this.$previousRowMatch=$el.find("[name=previousRowMatch]"),this.$nextRowMatch=$el.find("[name=nextRowMatch]"),this.$dimensionsLabel=$el.find("[name=dim]"),this.$columnTextField=$el.find("[name=searchColumns]"),this.$valueTextField=$el.find("[name=searchValues]"),this.$selectionLabel=$el.find("[name=selection]"),this.$rowTextField=$el.find("[name=searchRows]"),this.$columnMatchesToTop=$el.find("[name=columnMatchesToTop]"),this.$rowMatchesToTop=$el.find("[name=rowMatchesToTop]"),this.$rowSearchDiv=$el.find("[name=rowSearchDiv]"),this.$columnSearchDiv=$el.find("[name=columnSearchDiv]"),this.$searchRowDendrogramWrapper=$el.find("[name=searchRowDendrogramWrapper]"),this.$searchRowDendrogram=$el.find("[name=searchRowDendrogram]"),this.$searchResultsRowDendrogram=$el.find("[name=searchResultsRowDendrogram]"),this.$searchColumnDendrogramWrapper=$el.find("[name=searchColumnDendrogramWrapper]"),this.$searchColumnDendrogram=$el.find("[name=searchColumnDendrogram]"),this.$searchResultsColumnDendrogram=$el.find("[name=searchResultsColumnDendrogram]"),controller.on("dendrogramAnnotated",function(e){(e.isColumns?_this.$searchColumnDendrogramWrapper:_this.$searchRowDendrogramWrapper).show()}),controller.on("dendrogramChanged",function(e){(e.isColumns?_this.$searchColumnDendrogramWrapper:_this.$searchRowDendrogramWrapper).hide()});var project=controller.getProject();morpheus.Util.autosuggest({$el:this.$rowTextField,filter:function(terms,cb){var indices=[],meta=project.getSortedFilteredDataset().getRowMetadata();controller.getVisibleTrackNames(!1).forEach(function(name){indices.push(morpheus.MetadataUtil.indexOf(meta,name))}),meta=new morpheus.MetadataModelColumnView(meta,indices),morpheus.MetadataUtil.autocomplete(meta)(terms,cb)},select:function(){_this.search(!0)}}),this.$rowTextField.on("keyup",_.debounce(function(e){13===e.which&&e.preventDefault(),_this.search(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"searchRows"})},500)),morpheus.Util.autosuggest({$el:this.$columnTextField,filter:function(terms,cb){var indices=[],meta=project.getSortedFilteredDataset().getColumnMetadata();controller.getVisibleTrackNames(!0).forEach(function(name){indices.push(morpheus.MetadataUtil.indexOf(meta,name))}),meta=new morpheus.MetadataModelColumnView(meta,indices),morpheus.MetadataUtil.autocomplete(meta)(terms,cb)},select:function(){_this.search(!1)}}),this.$columnTextField.on("keyup",_.debounce(function(e){13===e.which&&e.preventDefault(),_this.search(!1),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"searchColumns"})},500)),this.$searchRowDendrogram.on("keyup",_.debounce(function(e){13===e.which&&e.preventDefault(),_this.searchDendrogram(!1),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"searchRowDendrogram"})},500)),this.$searchColumnDendrogram.on("keyup",_.debounce(function(e){13===e.which&&e.preventDefault(),_this.searchDendrogram(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"searchColumnDendrogram"})},500)),morpheus.Util.autocomplete(this.$valueTextField,function(term,cb){var values=new morpheus.Set;morpheus.DatasetUtil.searchValues(project.getSortedFilteredDataset(),$.trim(_this.$valueTextField.val()),function(value,i,j){return values.add(value),3===values.size()?!1:void 0}),cb(values.values().map(function(val){return{value:val}}))},function(){}),this.$valueTextField.on("keyup",_.debounce(function(e){13===e.which&&(_this.$valueTextField.autocomplete("close"),e.preventDefault());var $searchResultsLabel=_this.$el.find("[name=searchResultsValues]"),text=$.trim(_this.$valueTextField.val());if(""===text)$searchResultsLabel.html(""),project.getElementSelectionModel().setViewIndices(null);else{var viewIndices=new morpheus.Set;morpheus.DatasetUtil.searchValues(project.getSortedFilteredDataset(),text,function(value,i,j){viewIndices.add(new morpheus.Identifier([i,j]))}),project.getElementSelectionModel().setViewIndices(viewIndices),$searchResultsLabel.html(viewIndices.size()+" match"+(1===viewIndices.size()?"":"es"))}},500)),$toolbarForm.on("submit",function(e){e.preventDefault()}),$toolbarForm.on("click","[name=in]",function(e){e.preventDefault(),controller.zoom(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"zoomIn"})}),$toolbarForm.on("click","[name=out]",function(e){e.preventDefault(),controller.zoom(!1),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"zoomOut"})}),$toolbarForm.on("click","[name=options]",function(e){e.preventDefault(),controller.showOptions(),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"options"})}),$toolbarForm.on("click","[name=sort]",function(e){e.preventDefault(),new morpheus.SortDialog(project),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"sort"})}),$toolbarForm.on("click","[name=fit]",function(e){e.preventDefault(),controller.fitToWindow(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"fit"})}),$toolbarForm.on("click","[name=resetZoom]",function(e){e.preventDefault(),controller.resetZoom(),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"resetZoom"})}),this.$el=$el;var updateFilterStatus=function(){controller.getProject().getRowFilter().isEnabled()||controller.getProject().getColumnFilter().isEnabled()?_this.$el.find("[name=filterButton]").addClass("btn-primary"):_this.$el.find("[name=filterButton]").removeClass("btn-primary")};updateFilterStatus(),this.$columnMatchesToTop.on("click",function(e){e.preventDefault();var $this=$(this);$this.toggleClass("btn-primary");var sortKeys=project.getColumnSortKeys();if(sortKeys=sortKeys.filter(function(key){return key instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===key.name}),$this.hasClass("btn-primary")){var key=new morpheus.MatchesOnTopSortKey(project,_this.columnSearchResultModelIndices,"matches on top");sortKeys.splice(0,0,key),controller.scrollLeft(0)}_this.searching=!0,project.setColumnSortKeys(sortKeys,!0),_this._updateSearchIndices(!0),_this.searching=!1,morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"columnMatchesToTop"})}),this.$rowMatchesToTop.on("click",function(e){e.preventDefault();var $this=$(this);$this.toggleClass("btn-primary");var sortKeys=project.getRowSortKeys();if(sortKeys=sortKeys.filter(function(key){return key instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===key.name}),$this.hasClass("btn-primary")){var key=new morpheus.MatchesOnTopSortKey(project,_this.rowSearchResultModelIndices,"matches on top");sortKeys.splice(0,0,key),controller.scrollTop(0)}_this.searching=!0,project.setRowSortKeys(sortKeys,!0),_this._updateSearchIndices(!1),_this.searching=!1,morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"rowMatchesToTop"})}),project.on("rowSortOrderChanged.morpheus",function(e){_this.searching||(_this._updateSearchIndices(!1),_this.$rowMatchesToTop.removeClass("btn-primary"))}),project.on("columnSortOrderChanged.morpheus",function(e){_this.searching||(_this._updateSearchIndices(!0),_this.$columnMatchesToTop.removeClass("btn-primary"))}),controller.getProject().on("rowFilterChanged.morpheus",function(e){_this.search(!0),updateFilterStatus()}),controller.getProject().on("columnFilterChanged.morpheus",function(e){_this.search(!1),updateFilterStatus()}),controller.getProject().on("datasetChanged.morpheus",function(){_this.search(!0),_this.search(!1),updateFilterStatus()}),controller.getProject().getRowSelectionModel().on("selectionChanged.morpheus",function(){_this.updateSelectionLabel()}),controller.getProject().getColumnSelectionModel().on("selectionChanged.morpheus",function(){_this.updateSelectionLabel()}),this.rowSearchResultViewIndicesSorted=null,this.currentRowSearchIndex=0,this.columnSearchResultViewIndicesSorted=null,this.currentColumnSearchIndex=-1,this.$previousColumnMatch.on("click",function(){_this.currentColumnSearchIndex--,_this.currentColumnSearchIndex<0&&(_this.currentColumnSearchIndex=_this.columnSearchResultViewIndicesSorted.length-1),controller.scrollLeft(controller.getHeatMapElementComponent().getColumnPositions().getPosition(_this.columnSearchResultViewIndicesSorted[_this.currentColumnSearchIndex])),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"previousColumnMatch"})}),this.$previousRowMatch.on("click",function(){_this.currentRowSearchIndex--,_this.currentRowSearchIndex<0&&(_this.currentRowSearchIndex=_this.rowSearchResultViewIndicesSorted.length-1),controller.scrollTop(controller.getHeatMapElementComponent().getRowPositions().getPosition(_this.rowSearchResultViewIndicesSorted[_this.currentRowSearchIndex])),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"previousRowMatch"})}),this.$nextColumnMatch.on("click",function(){_this.next(!0),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"nextColumnMatch"})}),this.$nextRowMatch.on("click",function(){_this.next(!1),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"nextRowMatch"})}),this.updateDimensionsLabel(),this.updateSelectionLabel()},morpheus.HeatMapToolBar.HIGHLIGHT_SEARCH_MODE=0,morpheus.HeatMapToolBar.FILTER_SEARCH_MODE=1,morpheus.HeatMapToolBar.MATCHES_TO_TOP_SEARCH_MODE=2,morpheus.HeatMapToolBar.SELECT_MATCHES_SEARCH_MODE=3,morpheus.HeatMapToolBar.prototype={quickColumnFilter:!1,searching:!1,rowSearchMode:morpheus.HeatMapToolBar.SELECT_MATCHES_SEARCH_MODE,columnSearchMode:morpheus.HeatMapToolBar.SELECT_MATCHES_SEARCH_MODE,_updateSearchIndices:function(isColumns){var project=this.controller.getProject();if(isColumns){for(var viewIndices=[],modelIndices=this.columnSearchResultModelIndices,i=0,length=modelIndices.length;length>i;i++){var index=project.convertModelColumnIndexToView(modelIndices[i]);-1!==index&&viewIndices.push(index)}viewIndices.sort(function(a,b){return b>a?-1:1}),this.columnSearchResultViewIndicesSorted=viewIndices,this.currentColumnSearchIndex=-1}else{for(var viewIndices=[],modelIndices=this.rowSearchResultModelIndices,i=0,length=modelIndices.length;length>i;i++){var index=project.convertModelRowIndexToView(modelIndices[i]);-1!==index&&viewIndices.push(index)}viewIndices.sort(function(a,b){return b>a?-1:1}),this.rowSearchResultViewIndicesSorted=viewIndices,this.currentRowSearchIndex=-1}},next:function(isColumns){var controller=this.controller;isColumns?(this.currentColumnSearchIndex++,this.currentColumnSearchIndex>=this.columnSearchResultViewIndicesSorted.length&&(this.currentColumnSearchIndex=0),controller.scrollLeft(controller.getHeatMapElementComponent().getColumnPositions().getPosition(this.columnSearchResultViewIndicesSorted[this.currentColumnSearchIndex]))):(this.currentRowSearchIndex++,this.currentRowSearchIndex>=this.rowSearchResultViewIndicesSorted.length&&(this.currentRowSearchIndex=0),controller.scrollTop(controller.getHeatMapElementComponent().getRowPositions().getPosition(this.rowSearchResultViewIndicesSorted[this.currentRowSearchIndex])))},setSearchText:function(options){var $tf=options.isColumns?this.$columnTextField:this.$rowTextField,existing=options.append?$.trim($tf.val()):"";""!==existing&&(existing+=" "),options.onTop&&(options.isColumns?this.$columnMatchesToTop.addClass("btn-primary"):this.$rowMatchesToTop.addClass("btn-primary")),$tf.val(existing+options.text),this.search(!options.isColumns),options.scrollTo&&this.next(options.isColumns)},updateDimensionsLabel:function(){var p=this.controller.getProject(),d=p.getFullDataset(),f=p.getSortedFilteredDataset(),text="showing "+morpheus.Util.intFormat(f.getRowCount())+" of "+morpheus.Util.intFormat(d.getRowCount())+" rows, "+morpheus.Util.intFormat(f.getColumnCount())+" of "+morpheus.Util.intFormat(d.getColumnCount())+" columns";this.$dimensionsLabel.html(text)},updateSelectionLabel:function(){var nc=this.controller.getProject().getColumnSelectionModel().count(),nr=this.controller.getProject().getRowSelectionModel().count(),text=[];text.push(morpheus.Util.intFormat(nr)+" row"),1!==nr&&text.push("s"),text.push(" selected, "),text.push(morpheus.Util.intFormat(nc)+" column"),1!==nc&&text.push("s"),text.push(" selected"),this.$selectionLabel.html(text.join(""))},searchDendrogram:function(isColumns){var text=$.trim(isColumns?this.$searchColumnDendrogram.val():this.$searchRowDendrogram.val()),dendrogram=isColumns?this.controller.columnDendrogram:this.controller.rowDendrogram,$searchResults=isColumns?this.$searchResultsColumnDendrogram:this.$searchResultsRowDendrogram,matches=morpheus.AbstractDendrogram.search(dendrogram.tree.rootNode,text);if(-1===matches?$searchResults.html(""):$searchResults.html(matches+" match"+(1===matches?"":"es")),0>=matches){var positions=isColumns?this.controller.getHeatMapElementComponent().getColumnPositions():this.controller.getHeatMapElementComponent().getRowPositions();positions.setSquishedIndices(null),isColumns?this.controller.getProject().setGroupColumns([],!0):this.controller.getProject().setGroupRows([],!0),positions.setSize(isColumns?this.controller.getFitColumnSize():this.controller.getFitRowSize())}else morpheus.AbstractDendrogram.squishNonSearchedNodes(this.controller,isColumns);this.controller.updateDataset(),this.controller.revalidate()},search:function(isRows){this.searching=!0;for(var isMatchesOnTop=isRows?this.$rowMatchesToTop.hasClass("btn-primary"):this.$columnMatchesToTop.hasClass("btn-primary"),controller=this.controller,project=controller.getProject(),sortKeys=isRows?project.getRowSortKeys():project.getColumnSortKeys(),keyIndex=-1,i=0;ii;i++){var viewIndex=searchResultViewIndices[i];searchResultsModelIndices.push(isRows?project.convertViewRowIndexToModel(viewIndex):project.convertViewColumnIndexToModel(viewIndex))}if(null!==searchResultViewIndices&&isMatchesOnTop){var key=new morpheus.MatchesOnTopSortKey(project,searchResultsModelIndices,"matches on top");sortKeys=sortKeys.filter(function(key){return!(key instanceof morpheus.MatchesOnTopSortKey)}),searchResultViewIndices=key.indices,sortKeys.splice(0,0,key),isRows?project.setRowSortKeys(sortKeys,!1):project.setColumnSortKeys(sortKeys,!1)}var searchResultsViewIndicesSet=new morpheus.Set;if(null!=searchResultViewIndices)for(var i=0,length=searchResultViewIndices.length;length>i;i++){var viewIndex=searchResultViewIndices[i];searchResultsViewIndicesSet.add(viewIndex)}null==searchResultViewIndices&&(searchResultViewIndices=[]),isRows?(this.rowSearchResultModelIndices=searchResultsModelIndices,this.rowSearchResultViewIndicesSorted=searchResultViewIndices.sort(function(a,b){return b>a?-1:1}),this.currentRowSearchIndex=-1):(this.columnSearchResultModelIndices=searchResultsModelIndices,this.columnSearchResultViewIndicesSorted=searchResultViewIndices.sort(function(a,b){return b>a?-1:1}),this.currentColumnSearchIndex=-1),(isRows?project.getRowSelectionModel():project.getColumnSelectionModel()).setViewIndices(searchResultsViewIndicesSet,!0),isMatchesOnTop&&(isRows?project.setRowSortKeys(morpheus.SortKey.keepExistingSortKeys(sortKeys,project.getRowSortKeys()),!0):project.setColumnSortKeys(morpheus.SortKey.keepExistingSortKeys(sortKeys,project.getColumnSortKeys()),!0)),this.updateDimensionsLabel(),this.updateSelectionLabel(),this.searching=!1}},morpheus.HeatMapTooltipProvider=function(heatMap,rowIndex,columnIndex,options,separator,quick){var dataset=heatMap.project.getSortedFilteredDataset(),tipText=[];if(quick||options.value&&_.each(options.value,function(pair){if(tipText.length>0&&tipText.push(separator),tipText.push(pair.name),tipText.push(": "),_.isArray(pair.value))for(var i=0;i0&&tipText.push(", "),tipText.push(pair.value[i]);else tipText.push(pair.value);tipText.push("")}),-1!==rowIndex&&-1!==columnIndex){for(var i=0,nseries=dataset.getSeriesCount();nseries>i;i++)morpheus.HeatMapTooltipProvider._matrixValueToString(dataset,rowIndex,columnIndex,i,tipText,separator,options.showSeriesNameInTooltip||i>0);if(quick){var quickRowTracks=heatMap.rowTracks.filter(function(t){return t.settings.inlineTooltip});morpheus.HeatMapTooltipProvider._tracksToString(options,quickRowTracks,dataset.getRowMetadata(),rowIndex,tipText,separator),morpheus.HeatMapTooltipProvider._tracksToString(options,heatMap.columnTracks.filter(function(t){return t.settings.inlineTooltip}),dataset.getColumnMetadata(),columnIndex,tipText,separator)}}if(quick){if(null!=options.name){var metadata=-1!==rowIndex?dataset.getRowMetadata():dataset.getColumnMetadata(),vector=metadata.getByName(options.name),track=heatMap.getTrack(options.name,-1!==columnIndex),colorByName=null!=track?track.settings.colorByField:null,additionalVector=null!=colorByName?metadata.getByName(colorByName):null;morpheus.HeatMapTooltipProvider.vectorToString(vector,-1!==rowIndex?rowIndex:columnIndex,tipText,separator,additionalVector)}}else-1!==rowIndex&&morpheus.HeatMapTooltipProvider._metadataToString(options,heatMap.rowTracks,dataset.getRowMetadata(),rowIndex,tipText,separator),-1!==columnIndex&&morpheus.HeatMapTooltipProvider._metadataToString(options,heatMap.columnTracks,dataset.getColumnMetadata(),columnIndex,tipText,separator);var rowNodes=[],columnNodes=[],selectedRowNodes=[],selectedColumnNodes=[];if(options.rowNodes&&(rowNodes=options.rowNodes),options.columnNodes&&(columnNodes=options.columnNodes),!quick){if(heatMap.rowDendrogram&&(selectedRowNodes=_.values(heatMap.rowDendrogram.selectedRootNodeIdToNode)),heatMap.columnDendrogram&&(selectedColumnNodes=_.values(heatMap.columnDendrogram.selectedRootNodeIdToNode)),selectedRowNodes.length>0&&rowNodes.length>0){var nodeIds={};_.each(selectedRowNodes,function(n){nodeIds[n.id]=!0}),rowNodes=_.filter(rowNodes,function(n){return void 0===nodeIds[n.id]})}if(selectedColumnNodes.length>0&&columnNodes.length>0){var nodeIds={};_.each(selectedColumnNodes,function(n){nodeIds[n.id]=!0}),columnNodes=_.filter(columnNodes,function(n){return void 0===nodeIds[n.id]})}}return morpheus.HeatMapTooltipProvider._nodesToString(tipText,rowNodes,null,separator),morpheus.HeatMapTooltipProvider._nodesToString(tipText,columnNodes,null,separator),quick||(selectedRowNodes.length>0&&morpheus.HeatMapTooltipProvider._nodesToString(tipText,selectedRowNodes,heatMap.rowDendrogram._selectedNodeColor,separator),selectedColumnNodes.length>0&&morpheus.HeatMapTooltipProvider._nodesToString(tipText,selectedColumnNodes,heatMap.columnDendrogram._selectedNodeColor,separator)),tipText.join("")},morpheus.HeatMapTooltipProvider._matrixValueToString=function(dataset,rowIndex,columnIndex,seriesIndex,tipText,separator,showSeriesNameInTooltip){var val=dataset.getValue(rowIndex,columnIndex,seriesIndex);if(null!=val)if(val.toObject||!_.isNumber(val)){var obj=val.toObject?val.toObject():val,keys=_.keys(obj);_.each(keys,function(key){if("__v"!==key){var v=morpheus.Util.formatObject(obj[key]);tipText.length>0&&tipText.push(separator),tipText.push(key),tipText.push(": "),tipText.push(v),tipText.push("")}})}else tipText.length>0&&tipText.push(separator),showSeriesNameInTooltip&&(tipText.push(dataset.getName(seriesIndex)),tipText.push(": ")),tipText.push(""),tipText.push(morpheus.Util.nf(val)),tipText.push("")},morpheus.HeatMapTooltipProvider.vectorToString=function(vector,index,tipText,separator,additionalVector){var arrayValueToString=function(arrayFieldName,arrayVal){if(null!=arrayVal)if(null!=arrayFieldName&&(tipText.length>0&&tipText.push(separator),tipText.push(arrayFieldName)),arrayVal.toObject){tipText.push(" ");var obj=arrayVal.toObject(),keys=_.keys(obj);_.each(keys,function(key){var subVal=obj[key];null!=subVal&&""!=subVal&&(tipText.length>0&&tipText.push(separator),tipText.push(key),tipText.push(": "),tipText.push(morpheus.Util.formatObject(subVal)),tipText.push(""))})}else tipText.push(": "),tipText.push(morpheus.Util.formatObject(arrayVal)),tipText.push("")};if(null!=vector){var primaryVal=vector.getValue(index);if(null!=primaryVal&&""!=primaryVal){var primaryFields=vector.getProperties().get(morpheus.VectorKeys.FIELDS);if(null!=primaryFields){var visibleFieldIndices=vector.getProperties().get(morpheus.VectorKeys.VISIBLE_FIELDS);void 0===visibleFieldIndices&&(visibleFieldIndices=morpheus.Util.seq(primaryFields.length));var additionalFieldNames=null!=additionalVector?additionalVector.getProperties().get(morpheus.VectorKeys.FIELDS):null,additionalVal=null!=additionalFieldNames?additionalVector.getValue(index):null;tipText.length>0&&tipText.push(separator),tipText.push(vector.getName());for(var j=0;j0&&tipText.push(separator),tipText.push(additionalVector.getName());for(var j=0;j0&&tipText.push(separator),tipText.push(vector.getName()),tipText.push(": "),tipText.push(morpheus.Util.formatObject(primaryVal)),tipText.push("")}}},morpheus.HeatMapTooltipProvider._tracksToString=function(options,tracks,metadata,index,tipText,separator){for(var i=0;ii;i++){var track=tracks[i];track.isVisible()&&track.isShowTooltip()&&(tracks[i].name===options.name?filtered.splice(0,0,track):filtered.push(track))}morpheus.HeatMapTooltipProvider._tracksToString(options,filtered,metadata,index,tipText,separator)},morpheus.HeatMapTooltipProvider._nodesToString=function(tipText,nodes,color,separator){var renderField=function(name,value){if(null!=value){if(tipText.length>0&&tipText.push(separator),color&&tipText.push(''),tipText.push(name),tipText.push(": "),_.isArray(value))for(var i=0;i0&&tipText.push(", "),tipText.push(morpheus.Util.formatObject(value[i]));else tipText.push(morpheus.Util.formatObject(value));tipText.push(""),color&&tipText.push("")}};_.each(nodes,function(node){if(node.info)for(var name in node.info){var value=node.info[name];renderField(name,value)}renderField("depth",node.depth);var nLeafNodes=1+Math.abs(node.maxIndex-node.minIndex);nLeafNodes>0&&renderField("# of leaf nodes",nLeafNodes)})},morpheus.HeatMapTrackColorLegend=function(tracks,colorModel){morpheus.AbstractCanvas.call(this,!1),this.tracks=tracks,this.colorModel=colorModel,this.canvas.style.position=""},morpheus.HeatMapTrackColorLegend.prototype={getPreferredSize:function(){var tracks=this.tracks,colorModel=this.colorModel,xpix=0,ypix=0,maxYPix=0,canvas=this.canvas,context=canvas.getContext("2d");context.font="12px "+morpheus.CanvasUtil.FONT_NAME;for(var i=0;i0?maxYPix+30:0}},draw:function(clip,context){for(var tracks=this.tracks,colorModel=this.colorModel,xpix=0,i=0;i0?maxYPix+30:0}},draw:function(clip,context){var tracks=this.tracks,shapeModel=this.shapeModel,xpix=0,ypix=0;context.textAlign="left",context.textBaseline="top",context.font="12px "+morpheus.CanvasUtil.FONT_NAME,context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,context.strokeStyle="black";for(var i=0;i'),html.push(''),html.push('"),html.push("
    "),this.$el=$(html.join("")),this.$el.find("button").on("click",function(e){e.stopImmediatePropagation()}),this.$el.find("[name=contact]").on("click",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),window.open("mailto:morpheus@broadinstitute.org"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"contact"})}),this.$el.find("[name=tutorial]").on("click",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),window.open(morpheus.Util.URL+"tutorial.html"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"tutorial"})}),this.$el.find("[name=linking]").on("click",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),window.open(morpheus.Util.URL+"linking.html"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"linking"})}),this.$el.find("[name=source]").on("click",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),window.open("https://github.com/joshua-gould/morpheus.js"),morpheus.Util.trackEvent({eventCategory:"ToolBar",eventAction:"source"})})},morpheus.LegendWithStops=function(){morpheus.AbstractCanvas.call(this,!1),this.setBounds({width:300,height:40});var that=this;this.hammer=morpheus.Util.hammer(this.canvas,["pan","tap","press"]).on("panmove",function(event){if(-1!==that.panStartSelectedIndex){var position=morpheus.CanvasUtil.getMousePos(event.target,event),fraction=that.fractionToStopPix.invert(position.x);fraction=Math.max(0,fraction),fraction=Math.min(1,fraction),that.trigger("moved",{fraction:fraction})}}).on("panstart",function(event){that.panStartSelectedIndex=that.findIndexForPosition(morpheus.CanvasUtil.getMousePos(event.target,event,!0))}).on("panend",function(event){that.panStartSelectedIndex=-1}).on("tap",function(event){var position=morpheus.CanvasUtil.getMousePos(event.target,event);if(event.tapCount>1){var fraction=that.fractionToStopPix.invert(position.x);that.trigger("added",{fraction:fraction})}else that.selectedIndex=that.findIndexForPosition(position),that.trigger("selectedIndex",{selectedIndex:that.selectedIndex})}),$(this.canvas).on("keydown",function(e){8!=e.which&&46!=e.which||-1===that.selectedIndex||(that.trigger("delete"),e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation())})},morpheus.LegendWithStops.prototype={selectedIndex:-1,border:7,stopHalfSize:5,panStartSelectedIndex:-1,destroy:function(){$(this.canvas).off("keyup"),this.hammer.destroy()},setSelectedIndex:function(index){this.panStartSelectedIndex=-1},findIndexForPosition:function(position){if(position.y>=22)for(var i=0,length=this.fractions.length;length>i;i++){var pix=this.fractionToStopPix(this.fractions[i]),start=pix-this.stopHalfSize,end=pix+this.stopHalfSize;if(position.x>=start&&position.x<=end)return i}return-1},draw:function(fractions,colors,stepped,fractionToStopPix){this.fractions=fractions,this.colors=colors,this.stepped=stepped,this.fractionToStopPix=fractionToStopPix;var context=this.canvas.getContext("2d");morpheus.CanvasUtil.resetTransform(context),context.clearRect(0,0,this.getUnscaledWidth(),this.getUnscaledHeight()),context.translate(this.border,0),morpheus.HeatMapColorSchemeLegend.draw(context,fractions,colors,this.getUnscaledWidth()-2*this.border,this.getUnscaledHeight()-20,stepped),context.translate(-this.border,0),context.lineWidth=1, +context.strokeStyle="Grey",context.strokeRect(this.border,0,this.getUnscaledWidth()-2*this.border,this.getUnscaledHeight()-20);for(var i=0;i0&&fractions[i]===fractions[i-1])){context.fillStyle=colors[i];var pix=fractionToStopPix(fractions[i]);context.fillRect(pix-this.stopHalfSize,22,2*this.stopHalfSize,2*this.stopHalfSize),this.selectedIndex===i?(context.lineWidth=2,context.strokeStyle="black"):(context.lineWidth=1,context.strokeStyle="Grey"),context.strokeRect(pix-this.stopHalfSize,22,2*this.stopHalfSize,2*this.stopHalfSize)}}},morpheus.Util.extend(morpheus.LegendWithStops,morpheus.AbstractCanvas),morpheus.Util.extend(morpheus.LegendWithStops,morpheus.Events),morpheus.Popup={},morpheus.Popup.initted=!1,morpheus.Popup.init=function(){if(!morpheus.Popup.initted){var client=new Clipboard("a[name=Copy]",{text:function(trigger){var event={clipboardData:{setData:function(dataType,data){this.data=data}}};return morpheus.Popup.popupCallback(event,"Copy"),morpheus.Popup.hide(),event.clipboardData.data}});morpheus.Popup.client=client,morpheus.Popup.initted=!0,morpheus.Popup.$popupDiv=$(document.createElement("div")),morpheus.Popup.$popupDiv.css("position","absolute").css("zIndex",999).addClass("dropdown clearfix"),morpheus.Popup.$contextMenu=$(document.createElement("ul")),morpheus.Popup.$contextMenu.addClass("dropdown-menu").css("display","block").css("position","static").css("margin-bottom","5px"),morpheus.Popup.$contextMenu.appendTo(morpheus.Popup.$popupDiv),morpheus.Popup.$contextMenu.on("click","a",function(e){var $this=$(this),name=$.trim($this.text());"Copy"!==name&&(morpheus.Popup.popupCallback(e,name),morpheus.Popup.hide())})}},morpheus.Popup.popupInDom=!1,morpheus.Popup.hidePopupMenu=function(e){morpheus.Popup.component==e.target&&(e.preventDefault(),e.stopPropagation()),morpheus.Popup.hide()},morpheus.Popup.hide=function(){morpheus.Popup.$popupDiv.hide(),$(document.body).off("mousedown",morpheus.Popup.hidePopupMenu),morpheus.Popup.popupCallback=null,morpheus.Popup.component=null},morpheus.Popup.showPopup=function(menuItems,position,component,callback){if(morpheus.Popup.init(),morpheus.Popup.component==component)return void morpheus.Popup.hide();morpheus.Popup.popupCallback=callback,morpheus.Popup.component=component;for(var html=[],i=0,length=menuItems.length;length>i;i++){var item=menuItems[i];item.header?html.push('
  • "):item.separator?html.push('
  • '):(html.push('
  • '),item.checked&&html.push(''),html.push(item.name),item.icon&&html.push(''),html.push(""),html.push("
  • "))}morpheus.Popup.$contextMenu.html(html.join("")),morpheus.Popup.popupInDom||(morpheus.Popup.popupInDom=!0,morpheus.Popup.$popupDiv.appendTo($(document.body))),morpheus.Popup.$popupDiv.css({display:"block",left:position.x,top:position.y}),morpheus.Popup.$popupDiv.show();var $body=$(document.body);$body.off("mousedown",morpheus.Popup.hidePopupMenu),window.setTimeout(function(){$body.on("mousedown",function(e){var $target=$(e.target);"popup-item"!==$target.data("type")&&morpheus.Popup.hidePopupMenu(e)})},1)},morpheus.RowDendrogram=function(controller,tree,positions,project){morpheus.AbstractDendrogram.call(this,controller,tree,positions,project,morpheus.AbstractDendrogram.Type.ROW)},morpheus.RowDendrogram.prototype={drawNode:function(context,node){var radius=this.getNodeRadius(node),pix=this.toPix(node);context.beginPath(),context.arc(pix[0],pix[1],radius,2*Math.PI,!1),context.fill()},isDragHotSpot:function(p){return Math.abs(this.scale(this.cutHeight)-p.x)<=2},preDraw:function(context,clip){context.setLineDash&&context.setLineDash([5]),context.strokeStyle="black";var nx=this.scale(this.cutHeight);context.beginPath(),context.moveTo(nx,clip.y),context.lineTo(nx,this.getUnscaledHeight()),context.stroke(),context.setLineDash&&context.setLineDash([])},getPreferredSize:function(){return{width:100,height:Math.ceil(this.positions.getPosition(this.positions.getLength()-1)+this.positions.getItemSize(this.positions.getLength()-1))}},paintMouseOver:function(clip,context){-1!==this.project.getHoverRowIndex()&&(morpheus.CanvasUtil.resetTransform(context),context.translate(0,-clip.y),this.drawRowBorder(context,this.positions,this.project.getHoverRowIndex(),this.getUnscaledWidth()))},drawRowBorder:function(context,positions,index,gridSize){var size=positions.getItemSize(index),pix=positions.getPosition(index);context.beginPath(),context.moveTo(0,pix+size),context.lineTo(gridSize,pix+size),context.stroke(),context.beginPath(),context.moveTo(0,pix),context.lineTo(gridSize,pix),context.stroke()},createScale:function(){return d3.scale.linear().domain([0,this.tree.maxHeight]).range([this.getUnscaledWidth(),0])},getMaxIndex:function(clip){return morpheus.Positions.getBottom(clip,this.positions)},getMinIndex:function(clip){return morpheus.Positions.getTop(clip,this.positions)},toPix:function(node){var min=this.positions.getPosition(node.minIndex)+this.positions.getItemSize(node.minIndex)/2,max=this.positions.getPosition(node.maxIndex)+this.positions.getItemSize(node.maxIndex)/2;return[this.scale(node.height),(min+max)/2]},drawPathFromNodeToParent:function(context,node){var pix=this.toPix(node),parentPix=this.toPix(node.parent);context.beginPath(),context.moveTo(pix[0],pix[1]),context.lineTo(parentPix[0],pix[1]),context.lineTo(parentPix[0],parentPix[1]),context.stroke()},drawNodePath:function(context,node,minIndex,maxIndex){var x,y,children=node.children,left=children[0],right=children[1],ry=this.toPix(right)[1],rx=this.scale(right.height),ly=this.toPix(left)[1],lx=this.scale(left.height),nx=this.scale(node.height);if(this.drawLeafNodes)x=[rx,nx,nx,lx],y=[ry,ry,ly,ly];else{var leftIsLeaf=void 0!==left.children,rightIsLeaf=void 0!==right.children;leftIsLeaf&&(lx=nx+4),rightIsLeaf&&(rx=nx+4),x=[rx,nx,nx,lx],y=[ry,ry,ly,ly]}context.beginPath(),context.moveTo(x[0],y[0]);for(var i=1,length=x.length;length>i;i++)context.lineTo(x[i],y[i]);context.stroke()}},morpheus.Util.extend(morpheus.RowDendrogram,morpheus.AbstractDendrogram),morpheus.ScentedSearch=function(model,positions,isVertical,scrollbar,controller){morpheus.AbstractCanvas.call(this,!1),this.model=model,this.positions=positions,this.isVertical=isVertical,this.scrollbar=scrollbar,this.controller=controller,this.searchIndices=[],scrollbar.decorator=this;var _this=this,mouseMove=function(e){var index=_this.getIndex(e);_this.mouseMovedIndex=index,document.body.style.cursor=0>index?"default":"pointer",scrollbar.canvas.style.cursor=0>index?"default":"pointer";var tipOptions={event:e};isVertical?controller.setToolTip(index>=0?_this.searchIndices[index]:-1,-1,tipOptions):controller.setToolTip(-1,index>=0?_this.searchIndices[index]:-1,tipOptions)},mouseExit=function(e){document.body.style.cursor="default",scrollbar.canvas.style.cursor="default"};$(scrollbar.canvas).on("mousemove",mouseMove).on("mouseexit",mouseExit)},morpheus.ScentedSearch.prototype={mouseMovedIndex:-1,getIndex:function(event){var pix=morpheus.CanvasUtil.getMousePos(event.target,event),val=pix[this.isVertical?"y":"x"];return this.getIndexForPix(val)},getIndexForPix:function(pix){var indices=this.searchIndices;if(null==indices)return-1;var tolerance=1.2;if(this.mouseMovedIndex>0){var midVal=this.positions.getPosition(indices[this.mouseMovedIndex])*scale;if(Math.abs(midVal-pix)<=tolerance)return this.mouseMovedIndex}for(var low=0,scale=this.scale,high=indices.length-1;high>=low;){var mid=low+high>>1,midVal=this.positions.getPosition(indices[mid])*scale,cmp=0;if(Math.abs(midVal-pix)<=tolerance?cmp=0:pix>midVal?cmp=-1:midVal>pix&&(cmp=1),0>cmp)low=mid+1;else{if(!(cmp>0))return mid;high=mid-1}}return-1},tap:function(position){var val=position[this.isVertical?"y":"x"],index=this.getIndexForPix(val);return this.scrollbar.canvas.style.cursor=0>index?"default":"pointer",index>=0?(this.isVertical?this.controller.scrollTop(this.positions.getPosition(this.searchIndices[index])):this.controller.scrollLeft(this.positions.getPosition(this.searchIndices[index])),!0):!1},update:function(){this.searchIndices=this.model.getViewIndices().values().sort(function(a,b){return b>a?-1:1})},draw:function(clip,context){var width=this.scrollbar.getUnscaledWidth(),height=this.scrollbar.getUnscaledHeight();this.scale=(this.isVertical?height:width)/(this.positions.getPosition(this.positions.getLength()-1)+this.positions.getItemSize(this.positions.getLength()-1));var innerColor="#FFDD00",outerColor="#CCAA00";context.strokeStyle=outerColor,context.fillStyle=innerColor,context.lineWidth=1,this.drawIndices(context,this.searchIndices),this.drawHoverIndices(context)},drawHoverIndices:function(context){var heatmap=this.controller;if(context.fillStyle="black",heatmap.mousePositionOptions&&null!=heatmap.mousePositionOptions.name){var isColumns=!this.isVertical,track=heatmap.getTrack(heatmap.mousePositionOptions.name,isColumns);if(null==track)return;if(track.settings.highlightMatchingValues){var hoverIndex=isColumns?heatmap.getProject().getHoverColumnIndex():heatmap.getProject().getHoverRowIndex();if(-1===hoverIndex)return;var vector=track.getVector(),value=vector.getValue(hoverIndex),valueToModelIndices=track.getFullVector().getProperties().get(morpheus.VectorKeys.VALUE_TO_INDICES);if(!valueToModelIndices){var fullVector=track.getFullVector();valueToModelIndices=morpheus.VectorUtil.createValueToIndicesMap(fullVector),fullVector.getProperties().set(morpheus.VectorKeys.VALUE_TO_INDICES,valueToModelIndices)}var modelIndices=valueToModelIndices.get(value);if(null==modelIndices)return void console.log("valueToModelIndices error");for(var scale=this.scale,lineLength=this.isVertical?this.scrollbar.getUnscaledWidth():this.scrollbar.getUnscaledHeight(),isVertical=this.isVertical,positions=this.positions,project=heatmap.getProject(),i=0,length=modelIndices.length;length>i;i++){var modelIndex=modelIndices[i],index=isVertical?project.convertModelRowIndexToView(modelIndex):project.convertModelColumnIndexToView(modelIndex);if(-1!==index){var pix=positions.getPosition(index)*scale;isVertical?context.fillRect(0,pix,lineLength,2):context.fillRect(pix,0,2,lineLength)}}}}},drawIndices:function(context,highlightedIndices){for(var scale=this.scale,lineLength=this.isVertical?this.scrollbar.getUnscaledWidth():this.scrollbar.getUnscaledHeight(),isVertical=this.isVertical,positions=this.positions,i=0,length=highlightedIndices.length;length>i;i++){var index=highlightedIndices[i],pix=positions.getPosition(index)*scale;isVertical?(context.fillRect(0,pix,lineLength,2),context.strokeRect(0,pix,lineLength,2)):(context.fillRect(pix,0,2,lineLength),context.strokeRect(pix,0,2,lineLength))}}},morpheus.Util.extend(morpheus.ScentedSearch,morpheus.AbstractCanvas),morpheus.ScrollBar=function(isVertical){morpheus.AbstractCanvas.call(this),this.isVertical=isVertical,$(this.canvas).css("border","1px solid #d8d8d8"),isVertical?this.setBounds({width:12}):this.setBounds({height:12}),this.field=this.isVertical?"y":"x";var that=this,mouseMove=function(event){if(!morpheus.CanvasUtil.dragging){var position=morpheus.CanvasUtil.getMousePos(event.target,event,!0),mouseOver=position[that.field]>=that.thumbPos&&position[that.field]<=that.thumbPos+that.thumbExtent;that.thumbMouseOver!==mouseOver&&(that.thumbMouseOver=mouseOver,that.repaint())}},mouseExit=function(e){!morpheus.CanvasUtil.dragging&&that.thumbMouseOver&&(that.thumbMouseOver=!1,that.repaint())};$(this.canvas).on("mousemove",mouseMove).on("mouseout",mouseExit).on("mouseenter",mouseMove),this.hammer=morpheus.Util.hammer(this.canvas,[this.isVertical?"panv":"panh","tap"]).on("panstart",function(event){var position=morpheus.CanvasUtil.getMousePos(event.target,event,!0);position[that.field]>=that.thumbPos&&position[that.field]<=that.thumbPos+that.thumbExtent?(that.draggingThumb=!0,that.dragStartThumbPos=that.thumbPos):that.draggingThumb=!1}).on("panend",function(event){that.draggingThumb=!1}).on("panmove",function(event){if(that.draggingThumb){var thumbPosPix=(morpheus.CanvasUtil.getMousePos(event.target,event),that.dragStartThumbPos+(that.isVertical?event.deltaY:event.deltaX)),f=thumbPosPix/(that.visibleExtent-that.thumbExtent),value=f*that.maxValue;that.setValue(value,!0),event.preventDefault(),event.srcEvent.stopPropagation(),event.srcEvent.stopImmediatePropagation()}}).on("tap doubletap",function(event){if(!that.draggingThumb){var position=morpheus.CanvasUtil.getMousePos(event.target,event);if(!that.decorator.tap(position)){var thumbExtentToValue=that.thumbExtent/that.totalExtent*that.totalExtent;that.scrollToTop=position[that.field]'];map.forEach(function(val,key){html.push("'),html.push(key),html.push("")}),html.push(""),formBuilder.append({name:"selected_value",type:"custom",value:html.join("")});var shapeField=new morpheus.ShapeField;formBuilder.append({col:"col-xs-2",name:"selected_shape",type:"custom",value:'
    '}),shapeField.$el.appendTo(formBuilder.find("shape"));var $valuePicker=formBuilder.$form.find("[name=valuePicker]"),selectedVal=$valuePicker.val(),_this=this;shapeField.setShapeValue(map.get(selectedVal)),shapeField.on("change",function(e){map.set(selectedVal,e.shape),_this.trigger("change",{value:selectedVal,shape:e.shape})}),$valuePicker.selectpicker().change(function(){selectedVal=$valuePicker.val(),shapeField.setShapeValue(map.get(selectedVal))}),this.$div=formBuilder.$form},morpheus.ShapeChooser.prototype={},morpheus.Util.extend(morpheus.ShapeChooser,morpheus.Events),morpheus.ShapeField=function(shapes){shapes=shapes||morpheus.VectorShapeModel.SHAPES;var _this=this,html=[],size2=8,x=4,y=4;html.push('
    '),html.push(''),html.push('
    ");var $el=$(html.join("")),$header=$el.find("[name=selection]");$el.on("click","li > a",function(e){var shape=$(this).attr("value");setShapeValue(shape),_this.trigger("change",{shape:shape})});var setShapeValue=function(val){if($header.attr("value",val),"none"===val)$header.html("(None)");else{var context=new C2S(2*size2,2*size2);context.translate(4,4),morpheus.CanvasUtil.drawShape(context,val,x,y,size2),$header.html(context.getSerializedSvg())}};this.setShapeValue=setShapeValue,this.$el=$el},morpheus.ShapeField.prototype={},morpheus.Util.extend(morpheus.ShapeField,morpheus.Events),morpheus.SortByValuesIndicator=function(project,isVertical,positions){morpheus.AbstractCanvas.call(this,!0),this.project=project,this.isVertical=isVertical,this.positions=positions,this.lastPosition={start:-1,end:-1}},morpheus.SortByValuesIndicator.prototype={prePaint:function(clip,context){var positions=this.positions,start=0,end=positions.getLength();this.isVertical?(start=morpheus.Positions.getTop(clip,positions),end=morpheus.Positions.getBottom(clip,positions)):(start=morpheus.Positions.getLeft(clip,positions),end=morpheus.Positions.getRight(clip,positions)),(this.invalid||start!==this.lastPosition.start||end!==this.lastPosition.end)&&(this.lastPosition.start=start,this.lastPosition.end=end,this.invalid=!0)},draw:function(clip,context){var project=this.project,isVertical=this.isVertical,positions=this.positions,sortKeys=isVertical?project.getColumnSortKeys():project.getRowSortKeys();context.translate(-clip.x,-clip.y),context.fillStyle="black",context.textBaseline="top",context.textAlign="left",context.font="8px "+morpheus.CanvasUtil.FONT_NAME;var start=0,end=positions.getLength();isVertical?(start=morpheus.Positions.getTop(clip,positions),end=morpheus.Positions.getBottom(clip,positions)):(start=morpheus.Positions.getLeft(clip,positions),end=morpheus.Positions.getRight(clip,positions));for(var arrowWidth=3,arrowHeight=4,i=0;i=start&&end>view){context.save();var pix=positions.getPosition(view),size=positions.getItemSize(view);isVertical?context.translate(2,pix+size/2):context.translate(pix+size/2,0),context.beginPath(),key.getSortOrder()===morpheus.SortKey.SortOrder.ASCENDING?(context.moveTo(0,0),context.lineTo(arrowWidth,arrowHeight),context.lineTo(-arrowWidth,arrowHeight)):key.getSortOrder()===morpheus.SortKey.SortOrder.DESCENDING?(context.moveTo(0,arrowHeight),context.lineTo(arrowWidth,0),context.lineTo(-arrowWidth,0)):(context.moveTo(0,0),context.lineTo(arrowWidth,arrowHeight/2),context.lineTo(0,arrowHeight),context.lineTo(-arrowWidth,arrowHeight/2)),context.fill(),context.restore()}}}}},morpheus.Util.extend(morpheus.SortByValuesIndicator,morpheus.AbstractCanvas),morpheus.SortDialog=function(project){function toggle(isColumns){_this.isColumns=isColumns;var $element=_this.build(project,isColumns);$div.empty().html($element),$div.on("click","[name=delete]",function(e){var $this=$(this);e.preventDefault(),$this.closest("div.row").remove()}),$div.on("click","[name=add]",function(e){var $this=$(this),level=[],$sibling=$this.closest("div.row");_this.createLevel(level,new morpheus.SortKey("",morpheus.SortKey.SortOrder.ASCENDING),_this.fields),$sibling.after($(level.join(""))),e.preventDefault()})}var _this=this,$chooserDiv=$('
    '),$div=$('
    '),html=[];html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push("
    "),html.push("
    "),html.push("
    "),$chooserDiv.html(html.join("")),$chooserDiv.on("change","[name=rowsOrColumns]",function(e){var $this=$(this);toggle("columns"===$this.val())}),toggle(!1);var $outer=$("
    ");$chooserDiv.appendTo($outer),$div.appendTo($outer),morpheus.FormBuilder.showOkCancel({title:"Sort",content:$outer,okCallback:function(){var $forms=$div.find("form"),sortBy=$forms.find("[name=sortBy]").map(function(){return $(this).val()}),sortOrder=$forms.find("[name=sortOrder]:checked").map(function(){return $(this).val()}),groupBy=$div.find("[name=groupBy]").val(),newSortKeys=[],modelIndices=_this.isColumns?project.getRowSelectionModel().toModelIndices():project.getColumnSelectionModel().toModelIndices(),existingSortKeys=_this.isColumns?project.getColumnSortKeys():project.getRowSortKeys(),keysToKeep=_.filter(existingSortKeys,function(key){return key instanceof morpheus.MatchesOnTopSortKey||key instanceof morpheus.SpecifiedModelSortOrder&&"dendrogram"===key.name});keysToKeep.length>0&&_.each(keysToKeep,function(key){newSortKeys.push(key)});for(var newSortKeyFields=new morpheus.Set,i=0;i'),html.push('
    '),html.push('
    '),html.push('
    ');var groupByKeys=(isColumns?project.getGroupColumns():project.getGroupRows()).map(function(key){return key.field});return html.push('"),html.push(""),html.push("
    "),$(html.join(""))},createLevel0:function(html){html.push('
    '),html.push('
    '),html.push('
    '),html.push('Add sort level'),html.push("
    "),html.push("
    "),html.push("
    ")},createLevel:function(html,key,fields){html.push('
    '),html.push('
    '),html.push('
    '),html.push('
    '),html.push('"),html.push("
    "),html.push('
    '),html.push('
    "),html.push('
    "),html.push("
    "),html.push('
    '),html.push('Delete'),html.push("
    "),html.push('
    '),html.push('Add sort level'),html.push("
    "),html.push("
    "),html.push("
    ")}},morpheus.Spacer=function(width,height){this.width=width,this.height=height},morpheus.Spacer.prototype={prefWidth:void 0,prefHeight:void 0,visible:!0,dispose:function(){},getPrefWidth:function(){return this.prefWidth},draw:function(clip){},getPreferredSize:function(){return{width:this.width,height:this.height}},setBounds:function(){},getPrefHeight:function(){return this.prefHeight},setPrefWidth:function(prefWidth){this.prefWidth=prefWidth},setPrefHeight:function(prefHeight){this.prefHeight=prefHeight},isVisible:function(){return this.visible},setVisible:function(visible){this.visible=visible},getWidth:function(){return this.width},getHeight:function(){return this.height}},morpheus.SteppedColorSupplier=function(){morpheus.AbstractColorSupplier.call(this),this.hiddenValue=0,this.hiddenValues=new morpheus.Set,this.stepped=!0},morpheus.SteppedColorSupplier.linearScale=function(value,input0,input1,pix0,pix1){return(value-input0)/(input1-input0)*(pix1-pix0)+pix0},morpheus.SteppedColorSupplier.prototype={createInstance:function(){return new morpheus.SteppedColorSupplier},isStepped:function(){return!0},getHiddenValues:function(){return this.hiddenValues},getIndexForFraction:function(f){var fractions=this.fractions;if(f<=fractions[0])return 0;if(f>=fractions[fractions.length-1])return fractions.length-1;for(var i=0;i=left&&right>f)return i}return fractions.length-1},getColor:function(row,column,value){if(this.hiddenValues.has(value)&&(value=this.hiddenValue),isNaN(value))return this.missingColor;var min=this.min,max=this.max,colors=this.colors;if(min>=value)return colors[0];if(value>=max)return colors[colors.length-1];var fraction=morpheus.SteppedColorSupplier.linearScale(value,min,max,0,100)/100;return colors[this.getIndexForFraction(fraction)]}},morpheus.Util.extend(morpheus.SteppedColorSupplier,morpheus.AbstractColorSupplier),morpheus.TabManager=function(options){function rename($a){var builder=new morpheus.FormBuilder;builder.append({name:"name",type:"text",value:$.trim($a.contents().first().text())}),morpheus.FormBuilder.showOkCancel({title:"Rename Tab",content:builder.$form,okCallback:function(){var name=$.trim(builder.getValue("name"));""!==name&&(_this.activeTabObject.setName(name),$a.contents().first().replaceWith(name+" "))}})}this.options=$.extend({},{autohideTabBar:!1},options);var _this=this;this.activeTabObject=null,this.activeTabId=null,this.idToTabObject=new morpheus.Map,this.$nav=$(''),this.$nav.on("click","li > a",function(e){var tabId=$(this).attr("href");e.preventDefault(),_this.activeTabId!==tabId&&$(this).tab("show")}),this.$nav.on("dblclick","li > a",function(e){e.preventDefault(),$(this).data("morpheus-rename")&&rename($(this))}),this.$nav.on("contextmenu.morpheus","li > a",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation();var $a=$(this);return $a.data("morpheus-rename")&&morpheus.Popup.showPopup([{name:"Rename"}],{x:e.pageX,y:e.pageY},e.target,function(event,item){rename($a)}),!1}),this.$nav.on("click","button",function(e){e.preventDefault();var target=$(this).attr("data-target");_this.remove(target)}),this.$tabContent=$('
    '),this.$nav.on("shown.bs.tab",'a[data-toggle="tab"]',function(e){if(!_this.adding){var previous=_this.activeTabObject;_this.activeTabId=$(e.target).attr("href"),_this.activeTabObject=_this.idToTabObject.get(_this.activeTabId),_this.trigger("change",{tab:_this.activeTabObject,previous:previous})}})},morpheus.TabManager.prototype={setTabText:function(id,text){this.$nav.find("a").filter("[href="+id+"]").contents().first().replaceWith(text+" "),this.idToTabObject.get(id).setName(name)},addTask:function(task){var $a=this.$nav.find("a[href="+task.tabId+"]");if(0===$a.length)throw new Error(task.tabId+" not found.");var $i=$a.find("i"),tasks=$i.data("tasks");tasks||(tasks=[]),task.id=_.uniqueId("task"),tasks.push(task),$i.data("tasks",tasks),$a.removeClass("animated flash").addClass("animated flash").one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){$(this).removeClass("animated flash")}),$i.addClass("fa fa-spinner fa-spin")},removeTask:function(task){var $a=this.$nav.find("a[href="+task.tabId+"]"),$i=$a.find("i"),tasks=$i.data("tasks");tasks||(tasks=[]);for(var index=-1,i=0;i'),li.push(''),li.push(options.title),li.push(' '),options.closeable&&li.push(' '),li.push("");var $link=$(li.join(""));$link.appendTo(this.$nav);var $panel=$('
    ');return options.$el.appendTo($panel),$panel.appendTo(this.$tabContent),options.enabled===!1&&($link.addClass("disabled"),$link.find("a").addClass("btn disabled")),options.focus&&(this.$nav.find('a[data-toggle="tab"]:last').tab("show"),this.activeTabId="#"+id,this.activeTabObject=options.object,$panel.focus()),this.adding=!1,this.options.autohideTabBar&&this.$nav.css("display",this.idToTabObject.size()>1?"":"none"),{$panel:$panel,id:"#"+id}},remove:function(target){void 0===target&&(target=this.activeTabId),this.idToTabObject.remove(target),this.$nav.find("[href="+target+"]").parent().remove(),this.$tabContent.find(target).remove(); +var $a=this.$nav.find('a[data-toggle="tab"]:last');0===$a.length&&this.options.landingPage&&this.options.landingPage.show(),$a.tab("show"),this.options.autohideTabBar&&this.$nav.css("display",this.idToTabObject.size()>1?"":"none")},setActiveTab:function(id){id===this.activeTabId&&this.trigger("change",{tab:this.activeTabObject,previous:null});var $a=this.$nav.find("[href="+id+"]");$a.parent().removeClass("disabled"),$a.removeClass("btn disabled"),$a.tab("show")},setTabTitle:function(id,title){this.$nav.find("a").filter("[href="+id+"]").attr("title",title)},setTabEnabled:function(id,enabled){var $a=this.$nav.find("a").filter("[href="+id+"]");enabled?($a.parent().removeClass("disabled"),$a.removeClass("btn disabled")):($a.parent().addClass("disabled"),$a.addClass("btn disabled"))}},morpheus.Util.extend(morpheus.TabManager,morpheus.Events),morpheus.Table=function(options){options=morpheus.Table.createOptions(options),this.options=options,options.width||(options.width=options.$el.attr("class"));var _this=this,height=options.height,$gridDiv=$('
    ');this.$gridDiv=$gridDiv,$gridDiv.appendTo(options.$el);var columns=options.columns;this.columns=columns;var visibleColumns=columns.filter(function(c){return c.visible}),grid=new morpheus.Grid({gridOptions:{forceFitColumns:!0,select:options.select,rowHeight:options.rowHeight,autoEdit:!1,editable:!1,autoHeight:"auto"===options.height,enableTextSelectionOnCells:!0},$el:$gridDiv,items:options.items,columns:visibleColumns});if(this.grid=grid,options.search){var tableSearch=new morpheus.TableSearchUI;tableSearch.$el.prependTo(options.$el),tableSearch.setTable(this),this.tableSearch=tableSearch}if(visibleColumns.length!==this.columns.length){var select=[];select.push('");var $select=$(select.join("")),$div=$('
    ');$select.appendTo($div),$div.prependTo(options.$el),$select.selectpicker({iconBase:"fa",tickIcon:"fa-check",style:"btn-default btn-sm"}),$select.on("change",function(){var selectedItems=$select.val(),selectedItemsSet=new morpheus.Set;selectedItems.forEach(function(item){selectedItemsSet.add(parseInt(item))});var visibleColumns=[];_this.columns.forEach(function(c,i){selectedItemsSet.has(i)&&visibleColumns.push(c)}),grid.setColumns(visibleColumns),_this.resize(),_this.redraw()})}var collapsed=!1,lastWidth=-1,resize=function(){if(_this.options.responsive){var gridWidth=options.$el.width();gridWidth!==lastWidth&&(lastWidth=gridWidth,$gridDiv.css("width",gridWidth+"px"),!collapsed&&gridWidth1?(collapsed=!0,$gridDiv.addClass("slick-stacked"),_this.grid.grid.getOptions().rowHeight=options.rowHeight*columns.length,_this.grid.grid.setColumns([{id:0,tooltip:function(item,value){for(var html=[],i=0;i")},collapsed:!0,getter:function(item){return item},formatter:function(row,cell,value,columnDef,dataContext){var html=[];html.push('
    '),options.rowHeader&&html.push(options.rowHeader(dataContext));for(var i=0;i'):html.push("
    ");var c=columns[i],s=c.renderer(dataContext,c.getter(dataContext));html.push(s),html.push("
    ")}return html.push("
    "),html.join("")},sortable:!1,name:""}]),$gridDiv.find(".slick-header").hide(),_this.grid.grid.resizeCanvas(),_this.grid.grid.invalidate()):collapsed&&gridWidth>=options.collapseBreakpoint?($gridDiv.removeClass("slick-stacked"),collapsed=!1,options.showHeader&&$gridDiv.find(".slick-header").show(),_this.grid.grid.getOptions().rowHeight=options.rowHeight,_this.grid.grid.setColumns(columns),_this.grid.grid.resizeCanvas(),options.select&&_this.grid.grid.setSelectedRows(_this.grid.grid.getSelectedRows()),_this.grid.grid.invalidate()):(_this.grid.grid.resizeCanvas(),_this.grid.grid.invalidate()))}};options.showHeader||$gridDiv.find(".slick-header").hide(),options.responsive&&($(window).on("resize orientationchange",resize),$gridDiv.on("remove",function(){$(window).off("resize",resize)}),resize()),this.resize=resize,options.columns.length>1&&null!=options.items&&options.items.length>0&&this.setItems(options.items)},morpheus.Table.defaultRenderer=function(item,value){if(_.isNumber(value))return morpheus.Util.nf(value);if(morpheus.Util.isArray(value)){for(var s=[],i=0,length=value.length;length>i;i++){i>0&&s.push(", ");value[i];s.push(value[i])}return s.join("")}return""+value},morpheus.Table.prototype={setHeight:function(height){if(this.options.height=height,"auto"===height?(this.$gridDiv.css("height",""),this.grid.grid.getOptions().autoHeight=!0,this.grid.grid.setOptions(this.grid.grid.getOptions())):this.$gridDiv.css("height",height),this.grid.grid.resizeCanvas(),"auto"===height){var height=this.getItems().length*this.options.rowHeight+this.options.rowHeight;this.$gridDiv.find(".slick-viewport").css("height",height+"px")}this.grid.grid.invalidate()},setSearchVisible:function(visible){this.tableSearch&&(visible?this.tableSearch.$el.show():this.tableSearch.$el.hide())},autocomplete:function(tokens,response){var matches=[],token=null!=tokens&&tokens.length>0?tokens[tokens.selectionStartIndex]:"";token=$.trim(token);var columns=this.columns.filter(function(c){return c.searchable}),ncolumns=columns.length,showField=ncolumns>1;if(""===token){if(1>=ncolumns)return response(matches);for(var i=0;ncolumns>i;i++){var field=columns[i].name;matches.push({value:field+":",label:''+field+":",show:!0})}return matches.sort(function(a,b){return a.value===b.value?0:a.value0){if(92!==token.charCodeAt(semi-1)){var possibleField=$.trim(token.substring(0,semi));possibleField.length>0&&'"'===possibleField[0]&&'"'===possibleField[token.length-1]&&(possibleField=possibleField.substring(1,possibleField.length-1));for(var columnNameToColumn=new morpheus.Map,columnNames=columns.map(function(c){return c.name}),i=0;i1)for(var regex=new RegExp("^"+morpheus.Util.escapeRegex(token),"i"),j=0;ncolumns>j;j++){var field=columns[j].name;regex.test(field)&&matches.push({value:field+":",label:''+field+":",show:!0})}for(var set=new morpheus.Set,regex=new RegExp("^"+morpheus.Util.escapeRegex(token),"i"),items=this.getItems(),maxSize=matches.length+10,i=0,nitems=items.length;nitems>i;i++)for(var item=items[i],j=0;ncolumns>j;j++){var field=columns[j].name,value=columns[j].getter(item);if(morpheus.Util.isArray(value))for(var nvalues=value.length,k=0;nvalues>k;k++){var val=value[k];if(regex.test(val)&&!set.has(val)&&(set.add(val),matches.push({value:showField?field+":"+val:val,label:showField?''+field+':'+val+"":''+val+""})),matches.length===maxSize)return response(matches)}else if(regex.test(value)&&!set.has(value)&&(set.add(value),matches.push({value:showField?field+":"+value:value,label:showField?''+field+':'+value+"":''+value+""}),matches.length===maxSize))return response(matches)}return response(matches)},searchWithPredicates:function(predicates){if(null==predicates||0===predicates.length)return void this.grid.setFilter(null);for(var columns=this.columns.filter(function(c){return c.searchable}),columnNameToColumn=new morpheus.Map,columnNames=columns.map(function(c){return c.name}),i=0;ii;i++){var predicate=predicates[i],filterColumnName=predicate.getField();if(null!=filterColumnName){var column=columnNameToColumn.get(filterColumnName);column&&(predicate.column=column,filteredPredicates.push(predicate))}else filteredPredicates.push(predicate)}predicates=filteredPredicates,npredicates=predicates.length,this.grid.setFilter(function(item){for(var p=0;npredicates>p;p++){var searchColumns,predicate=predicates[p];searchColumns=predicate.column?[predicate.column]:columns;for(var j=0,ncolumns=searchColumns.length;ncolumns>j;j++){var value=searchColumns[j].getter(item);if(morpheus.Util.isArray(value)){for(var nvalues=value.length,i=0;nvalues>i;i++)if(predicate.accept(value[i]))return!0}else{var predicate=predicates[p];if(predicate.accept(value))return!0}}}return!1})},search:function(text){if(""===text)this.grid.setFilter(null);else{var tokens=morpheus.Util.getAutocompleteTokens(text),columns=this.columns.filter(function(c){return c.searchable}),columnNames=columns.map(function(c){return c.name}),predicates=morpheus.Util.createSearchPredicates({tokens:tokens,fields:columnNames});this.searchWithPredicates(predicates)}},getSelectedRows:function(){return this.grid.getSelectedRows()},getSelectedItems:function(){return this.grid.getSelectedItems()},getSelectedItem:function(){return this.grid.getSelectedItem()},setSelectedRows:function(rows){this.grid.setSelectedRows(rows)},getItems:function(items){return this.grid.getItems()},getAllItemCount:function(){return this.grid.getAllItemCount()},getFilteredItemCount:function(){return this.grid.getFilteredItemCount()},setFilter:function(f){this.grid.setFilter(f)},setItems:function(items){this.grid.setItems(items),this.grid.redraw()},redraw:function(){this.grid.redraw()},on:function(evtStr,handler){this.grid.on(evtStr,handler)},off:function(evtStr,handler){this.grid.off(evtStr,handler)},trigger:function(evtStr){this.grid.trigger(evtStr)}},morpheus.Table.createOptions=function(options){options=$.extend(!0,{},{items:[],height:"564px",collapseBreakpoint:500,showHeader:!0,select:!0,rowHeader:null,responsive:!0,fixedWidth:"320px"},options),options.columns||(options.columns=[{name:""}]);var columns=[];return options.columns.forEach(function(c,i){var column=$.extend(!0,{},{id:i,tooltip:function(dataContext,value){return morpheus.Table.defaultRenderer(dataContext,value)},formatter:function(row,cell,value,columnDef,dataContext){return column.renderer(dataContext,value)},comparator:function(a,b){var aNaN=null==a||_.isNumber(a)&&isNaN(a),bNaN=null==b||_.isNumber(b)&&isNaN(b);return aNaN&&bNaN?0:aNaN?1:bNaN?-1:(a.toLowerCase&&(a=a.toLowerCase()),b.toLowerCase&&(b=b.toLowerCase()),a===b?0:b>a?-1:1)},sortable:!0,searchable:!0,width:null,name:c.name,renderer:morpheus.Table.defaultRenderer},c);void 0===column.visible&&(column.visible=!0),column.getter||(column.getter=null==column.field?function(item){return item}:function(item){return item[c.field]}),options.rowHeader&&0===i&&(column.formatter=function(row,cell,value,columnDef,dataContext){return options.rowHeader(dataContext)+column.renderer(dataContext,value)}),columns.push(column)}),options.columns=columns,1===options.columns.length?options.tableClass="slick-table-compact":options.tableClass="slick-striped-table",options.rowHeight||(options.rowHeight="slick-table-compact"===options.tableClass?18:20),options},morpheus.TableSearchUI=function(){var _this=this,html=[];html.push('
    '),html.push('
    '),html.push('
    '),html.push(''),html.push('
    '),html.push("
    "),html.push("
    "),html.push("
    ");var $el=$(html.join(""));this.$el=$el,$el.find("form").on("submit",function(e){e.preventDefault()});var $search=$el.find("[name=search]"),$searchResults=$el.find("[name=searchResults]");this.$searchResults=$searchResults,$search.on("keyup",_.debounce(function(){_this.table.search($.trim($(this).val()))},100)),morpheus.Util.autosuggest({$el:$search,suggestWhenEmpty:!0,filter:function(tokens,response){_this.table.autocomplete(tokens,response)},select:function(){_this.table.search($.trim($search.val()))}})},morpheus.TableSearchUI.prototype={updateSearchLabel:function(){var filteredCount=this.table.getFilteredItemCount(),text="";filteredCount!==this.table.getAllItemCount()&&(text+=morpheus.Util.intFormat(filteredCount)+" match"+(1!==filteredCount?"es":"")),this.$searchResults.html(text)},setTable:function(table){this.table=table;var _this=this;table.options.responsive||this.$el.css("width",table.options.fixedWidth),table.on("filter",function(){_this.updateSearchLabel()})}},morpheus.TrackSelection=function(track,positions,selectionModel,isColumns,controller){function getPosition(event,useDelta){if(track.settings.squished){var total=positions.getPosition(positions.getLength()-1)+positions.getItemSize(positions.getLength()-1),squishFactor=total/(isColumns?track.getUnscaledWidth():track.getUnscaledHeight()),p=(morpheus.CanvasUtil.getClientXY(event,useDelta),morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,0,0,useDelta));return p[coord]*=squishFactor,p}return morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,controller.scrollLeft(),controller.scrollTop(),useDelta)}var canvas=track.canvas,startIndex=-1,coord=isColumns?"x":"y";this.hammer=morpheus.Util.hammer(canvas,["pan","tap","longpress"]).on("longpress",function(event){event.preventDefault(),event.srcEvent.stopImmediatePropagation(),event.srcEvent.stopPropagation(),controller.setSelectedTrack(track.name,isColumns),track.showPopup(event.srcEvent)}).on("panmove",function(event){var position=getPosition(event),endIndex=positions.getIndex(position[coord],!1),commandKey=morpheus.Util.IS_MAC?event.srcEvent.metaKey:event.srcEvent.ctrlKey,viewIndices=commandKey?selectionModel.getViewIndices():new morpheus.Set,_startIndex=startIndex;if(startIndex>endIndex){var tmp=endIndex;endIndex=_startIndex,_startIndex=tmp}for(var i=_startIndex;endIndex>=i;i++)viewIndices.add(i);if(selectionModel.setViewIndices(viewIndices,!0),isColumns){var scrollLeft=controller.scrollLeft(),scrollRight=scrollLeft+controller.heatmap.getUnscaledWidth();position.x>scrollRight?controller.scrollLeft(scrollLeft+8):position.xscrollBottom?controller.scrollTop(scrollTop+8):position.y1){if(isColumns&&!controller.options.columnsSortable||!isColumns&&!controller.options.rowsSortable)return;controller.sortBasedOnSelection(null,isColumns,event.srcEvent.shiftKey)}else{controller.setSelectedTrack(track.name,isColumns);var commandKey=morpheus.Util.IS_MAC?event.srcEvent.metaKey:event.srcEvent.ctrlKey;if(morpheus.Util.IS_MAC&&event.srcEvent.ctrlKey)return;var viewIndices;if(commandKey)viewIndices=selectionModel.getViewIndices(),viewIndices.has(index)?viewIndices.remove(index):viewIndices.add(index);else if(event.srcEvent.shiftKey){viewIndices=selectionModel.getViewIndices();var min=Number.MAX_VALUE,max=-Number.MAX_VALUE;for(var viewIndex in viewIndices)min=Math.min(viewIndex,min),max=Math.max(viewIndex,max);if(index>=max)for(var i=max;index>=i;i++)viewIndices.add(i);else for(var i=Math.min(index,min),max=Math.max(index,min);max>=i;i++)viewIndices.add(i)}else viewIndices=new morpheus.Set,viewIndices.add(index);selectionModel.setViewIndices(viewIndices,!0)}})},morpheus.TrackSelection.prototype={dispose:function(){this.hammer.destroy()}},morpheus.VectorTrack=function(project,name,positions,isColumns,heatmap){morpheus.AbstractCanvas.call(this,!0),this.preferredSize={width:0,height:0},this.project=project,this.positions=positions,this.isColumns=isColumns,this.name=name,this.visible=!0,this.heatmap=heatmap,this.id=_.uniqueId();var _this=this;this.updateSpanMapFunction=function(){_this.spanMap=morpheus.VectorUtil.createSpanMap(_this.getVector())},this.lastPosition={start:-1,end:-1},this.events="rowSortOrderChanged rowFilterChanged datasetChanged";var mouseMoved=function(event){var index=-1;if("mouseout"!==event.type){var position=morpheus.CanvasUtil.getMousePosWithScroll(event.target,event,heatmap.scrollLeft(),heatmap.scrollTop());if(_this.settings.squished){var total=positions.getPosition(positions.getLength()-1)+positions.getItemSize(positions.getLength()-1),squishFactor=total/(isColumns?_this.getUnscaledWidth():_this.getUnscaledHeight());position[isColumns?"x":"y"]*=squishFactor}index=isColumns?_this.positions.getIndex(position.x,!1):_this.positions.getIndex(position.y,!1)}isColumns?heatmap.setMousePosition(-1,index,{name:_this.name,event:event}):heatmap.setMousePosition(index,-1,{name:_this.name,event:event})};$(this.canvas).on("contextmenu.morpheus",function(e){return e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),heatmap.setSelectedTrack(_this.name,isColumns),_this.showPopup(e),!1}),this.settings={maxTextWidth:void 0,squished:!1,inlineTooltip:!1,tooltip:!0,discrete:!0,highlightMatchingValues:!1,discreteAutoDetermined:!1,colorBarSize:12,stackedBar:!1,renderMethod:{},selectionColor:"rgb(182,213,253)",colorByField:null,barColor:"#bdbdbd",barSize:40,arcSize:60,min:void 0,mid:void 0,max:void 0,minMaxReversed:!1},$(this.canvas).on("mousemove.morpheus mouseout.morpheus",mouseMoved)},morpheus.VectorTrack.RENDER={TEXT:0,COLOR:1,BAR:2,MOLECULE:3,TEXT_AND_COLOR:4,SHAPE:5,ARC:6,BOX_PLOT:7},morpheus.VectorTrack.vectorToString=function(vector){var formatter=function(v){return""+v},dataType=morpheus.VectorUtil.getDataType(vector);return"number"===dataType?formatter=morpheus.Util.nf:"[number]"===dataType?formatter=function(v){var s=[];if(null!=v)for(var i=0,arrayLength=v.length;arrayLength>i;i++)s.push(morpheus.Util.nf(v[i]));return s.join(", ")}:"[string]"===dataType&&(formatter=function(v){var s=[];if(null!=v)for(var i=0,arrayLength=v.length;arrayLength>i;i++)s.push(v[i]);return s.join(", ")}),formatter},morpheus.VectorTrack.prototype={settingFromConfig:function(conf){var settings=this.settings;if(_.isString(conf)){settings.renderMethod={};for(var tokens=conf.split(","),i=0,length=tokens.length;length>i;i++){var method=$.trim(tokens[i]);method=method.toUpperCase();var mapped=morpheus.VectorTrack.RENDER[method];void 0!==mapped?settings.renderMethod[mapped]=!0:"DISCRETE"===method?(settings.discrete=!0,settings.discreteAutoDetermined=!0):"CONTINUOUS"===method?(settings.discrete=!1,settings.discreteAutoDetermined=!0):"HIGHLIGHT"===method?settings.highlightMatchingValues=!0:"STACKED_BAR"===method?(settings.stackedBar=!0,settings.renderMethod[morpheus.VectorTrack.RENDER.BAR]=!0):"BOX_PLOT"===method?settings.renderMethod[morpheus.VectorTrack.RENDER.BOX_PLOT]=!0:console.log(method+" not found.")}}else _.isNumber(conf)?(settings.renderMethod={},settings.renderMethod[conf]=!0):_.isObject(conf)&&(conf.maxTextWidth=void 0,this.settings=$.extend({},this.settings,conf));this._update()},isDiscrete:function(){return this.settings.discrete},setShowTooltip:function(value){this.settings.tooltip=value},isShowTooltip:function(){return this.settings.tooltip},isRenderAs:function(value){return this.settings.renderMethod[value]},dispose:function(){morpheus.AbstractCanvas.prototype.dispose.call(this),$(this.canvas).off("contextmenu.morpheus mousemove.morpheus mouseout.morpheus"),this.project.off(this.events,this.updateSpanMapFunction)},getName:function(){return this.name},getVector:function(name){name=null==name?this.name:name;var vector=this.isColumns?this.project.getSortedFilteredDataset().getColumnMetadata().getByName(name):this.project.getSortedFilteredDataset().getRowMetadata().getByName(name);return vector?vector:new morpheus.Vector(name,0)},getFullVector:function(){var vector=this.isColumns?this.project.getFullDataset().getColumnMetadata().getByName(this.name):this.project.getFullDataset().getRowMetadata().getByName(this.name);return vector?vector:new morpheus.Vector(this.name,0)},_updatePreferredSize:function(){var size=this._computePreferredSize();this.preferredSize.width=size.width,this.preferredSize.height=size.height},_computePreferredSize:function(forPrint){var width=0,height=0;if(this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT)||this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR))if(this.positions.getSize()>=6){var context=this.canvas.getContext("2d"),textWidth=morpheus.CanvasUtil.getVectorStringWidth(context,this.getVector(),this.positions,forPrint?-1:this.isColumns?120:100);forPrint||(textWidth=Math.min(textWidth,this.isColumns?100:500),this.settings.maxTextWidth=textWidth),width+=textWidth}else forPrint||(this.settings.maxTextWidth=0);this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)&&(width+=this.settings.barSize),this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)&&(width+=this.settings.colorBarSize),this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)&&(width+=this.settings.colorBarSize),this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)&&(width+=300),forPrint||this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)||(width=Math.min(300,width)),this.isRenderAs(morpheus.VectorTrack.RENDER.ARC)&&(width+=this.settings.arcSize),this.isRenderAs(morpheus.VectorTrack.RENDER.BOX_PLOT)&&(width+=100);var nkeys=_.keys(this.settings.renderMethod).length;return nkeys>0&&(width+=2*(nkeys-1)),width=Math.max(0,width),this.isColumns?{width:height,height:width}:{width:width,height:height}},getPreferredSize:function(){return this.preferredSize},getPrintSize:function(){return this._computePreferredSize(!0)},_createDiscreteValueMap:function(){var values=morpheus.VectorUtil.getValues(this.getFullVector());values.sort(morpheus.SortKey.ASCENDING_COMPARATOR),this.discreteValueMap=new morpheus.Map;for(var i=0,length=values.length;length>i;i++)this.discreteValueMap.set(values[i],i+1);this.settings.min=0,this.settings.mid=0,this.settings.max=values.length},_setChartMinMax:function(){if(this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BOX_PLOT))if(this.settings.stackedBar||!this.settings.discrete||this.isRenderAs(morpheus.VectorTrack.RENDER.BOX_PLOT)){if(null==this.settings.min||null==this.settings.max||null==this.settings.mid){var vector=this.getFullVector(),minMax=morpheus.VectorUtil.getMinMax(vector),min=minMax.min,max=minMax.max;if(this.settings.minMaxReversed){var tmp=max;max=min,min=tmp}null==this.settings.min&&(this.settings.min=Math.min(0,min)),null==this.settings.max&&(this.settings.max=Math.max(0,max)),null==this.settings.mid&&(this.settings.mid=this.settings.min<0?0:this.settings.min)}}else this.discreteValueMap||this._createDiscreteValueMap()},_update:function(){if(!this.settings.discreteAutoDetermined&&(this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BAR))&&((this.getFullVector().getProperties().has(morpheus.VectorKeys.FIELDS)||_.isNumber(morpheus.VectorUtil.getFirstNonNull(this.getFullVector())))&&(this.settings.discrete=!1),this.settings.discreteAutoDetermined=!0),this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)&&this.project.off(this.events,this.updateSpanMapFunction),this._setChartMinMax(),this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)&&(this.project.on(this.events,this.updateSpanMapFunction),!this.moleculeCache)){this.moleculeCache={};var _this=this,valueToModelIndices=this.getFullVector().getProperties().get(morpheus.VectorKeys.VALUE_TO_INDICES);if(!valueToModelIndices){var fullVector=this.getFullVector();valueToModelIndices=morpheus.VectorUtil.createValueToIndicesMap(fullVector),fullVector.getProperties().set(morpheus.VectorKeys.VALUE_TO_INDICES,valueToModelIndices)}if(void 0!==_this.heatmap.options.structureUrlProvider)valueToModelIndices.forEach(function(indices,value){var url=_this.heatmap.options.structureUrlProvider(value),image=new Image;image.src=url,_this.moleculeCache[value]=image}),setTimeout(2e3,function(){_this.setInvalid(!0),_this.repaint()});else for(var values=valueToModelIndices.keys(),doRequest=function(smile){$.ajax({contentType:"text/plain",context:{smile:smile},data:{string:smile,representation:"sdf"},url:"http://cactus.nci.nih.gov/chemical/structure"}).done(function(text){_this.moleculeCache[this.smile]=text,values.length>0&&doRequest(values.pop()),_this.invalid=!0,_this.repaint()})},i=0;6>i;i++)doRequest(values.pop());this.updateSpanMapFunction()}this._updatePreferredSize()},postPaint:function(clip,context){context.lineWidth=1,context.strokeStyle="Grey";var project=this.project,setup=this._setup(context,clip),vector=setup.vector,start=setup.start,end=setup.end;this.isColumns?-1!==project.getHoverColumnIndex()&&this.drawColumnBorder(context,this.positions,project.getHoverColumnIndex(),this.getUnscaledHeight()):-1!==project.getHoverRowIndex()&&this.drawRowBorder(context,this.positions,project.getHoverRowIndex(),this.getUnscaledWidth()),this._highlightMatchingValues(context,vector,start,end)},_highlightMatchingValues:function(context,viewVector,start,end){var project=this.project,positions=this.positions;context.strokeStyle="black",context.lineWidth=3;var hoverIndex=this.isColumns?project.getHoverColumnIndex():project.getHoverRowIndex(),value=viewVector.getValue(hoverIndex);if(this.settings.highlightMatchingValues&&-1!==hoverIndex&&this.heatmap.mousePositionOptions&&this.heatmap.mousePositionOptions.name===viewVector.getName()){var valueToModelIndices=this.getFullVector().getProperties().get(morpheus.VectorKeys.VALUE_TO_INDICES);if(!valueToModelIndices){var fullVector=this.getFullVector();valueToModelIndices=morpheus.VectorUtil.createValueToIndicesMap(fullVector),fullVector.getProperties().set(morpheus.VectorKeys.VALUE_TO_INDICES,valueToModelIndices)}var indices=valueToModelIndices.get(value);if(null==indices)return void console.log("valueToModelIndices error");if(indices.length<=1)return;if(this.isColumns){if(-1!==project.getHoverColumnIndex()){var height=this.getUnscaledHeight();context.beginPath();for(var i=0,nindices=indices.length;nindices>i;i++){var viewIndex=project.convertModelColumnIndexToView(indices[i]);if(viewIndex>=start&&end>viewIndex){var size=positions.getItemSize(viewIndex),pix=positions.getPosition(viewIndex);context.rect(pix,0,size,height)}}context.stroke()}}else{context.beginPath();for(var width=this.getUnscaledWidth(),indices=valueToModelIndices.get(value),i=0,nindices=indices.length;nindices>i;i++){var viewIndex=project.convertModelRowIndexToView(indices[i]);if(viewIndex>=start&&end>viewIndex){var size=positions.getItemSize(viewIndex),pix=positions.getPosition(viewIndex);context.rect(0,pix,width,size)}}context.stroke()}}},prePaint:function(clip,context){var project=this.project,positions=this.positions,height=this.getUnscaledHeight(),width=this.getUnscaledWidth(),setup=this._setup(context,clip),start=setup.start,end=setup.end;context.lineWidth=1,context.fillStyle=this.settings.selectionColor;if(this.isColumns){var viewIndices=project.getColumnSelectionModel().getViewIndices();viewIndices.forEach(function(i){if(i>=start&&end>=i){var size=positions.getItemSize(i),pix=positions.getPosition(i);context.fillRect(pix,0,size,height)}})}else if(!this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)){var viewIndices=project.getRowSelectionModel().getViewIndices();viewIndices.forEach(function(i){if(i>=start&&end>=i){var size=positions.getItemSize(i),pix=positions.getPosition(i);context.fillRect(0,pix,width,size)}})}(this.invalid||start!==this.lastPosition.start||end!==this.lastPosition.end)&&(this.lastPosition.start=start,this.lastPosition.end=end,this.invalid=!0)},drawRowBorder:function(context,positions,index,gridSize){var size=positions.getItemSize(index),pix=positions.getPosition(index);context.beginPath(),context.moveTo(0,pix+size),context.lineTo(gridSize,pix+size),context.stroke(),context.beginPath(),context.moveTo(0,pix),context.lineTo(gridSize,pix),context.stroke()},drawColumnBorder:function(context,positions,index,gridSize){var size=positions.getItemSize(index),pix=positions.getPosition(index);context.beginPath(),context.moveTo(pix+size,0),context.lineTo(pix+size,gridSize),context.stroke(),context.beginPath(),context.moveTo(pix,0),context.lineTo(pix,gridSize),context.stroke()},isSquished:function(){return this.settings.squished},_setup:function(context,clip){var start=0,vector=this.getVector(),end=vector.size(),settings=this.settings,positions=this.positions,width=clip.width,height=clip.height;if(settings.squished||(this.isColumns?(start=morpheus.Positions.getLeft(clip,positions),end=morpheus.Positions.getRight(clip,positions)):(start=morpheus.Positions.getTop(clip,positions),end=morpheus.Positions.getBottom(clip,positions))),settings.squished){var total=positions.getPosition(positions.getLength()-1)+positions.getItemSize(positions.getLength()-1);if(this.isColumns){var squishFactor=width/total;context.scale(squishFactor,1)}else{var squishFactor=height/total;context.scale(1,squishFactor)}}else context.translate(-clip.x,-clip.y);return{start:start,end:end,vector:vector}},draw:function(clip,context){this._draw(clip,context,this.isColumns?this.getUnscaledHeight():this.getUnscaledWidth())},print:function(clip,context){this._draw(clip,context,this.isColumns?clip.height:clip.width)},_draw:function(clip,context,availableSpace){var fullAvailableSpace=availableSpace,positions=this.positions,setup=this._setup(context,clip),start=setup.start,end=setup.end,vector=setup.vector;context.textAlign="left",context.fillStyle=morpheus.CanvasUtil.FONT_COLOR;var fontSize=Math.min(24,positions.getSize()-2),size=0;if(context.font=fontSize+"px "+morpheus.CanvasUtil.FONT_NAME,context.strokeStyle=morpheus.HeatMapElementCanvas.GRID_COLOR,context.lineWidth=.1,this.heatmap.heatmap.isDrawGrid()&&!this.settings.squished)if(this.isColumns)for(var gridSize=availableSpace,i=start;end>i;i++){var size=positions.getItemSize(i),pix=positions.getPosition(i);size>7&&(context.beginPath(),context.moveTo(pix+size,0),context.lineTo(pix+size,gridSize),context.stroke())}else if(!this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE))for(var gridSize=availableSpace,i=start;end>i;i++){var size=positions.getItemSize(i),pix=positions.getPosition(i);size>7&&(context.beginPath(),context.moveTo(0,pix+size),context.lineTo(gridSize,pix+size),context.stroke())}context.lineWidth=1;var offset=1;if(this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)&&(this.renderColor(context,vector,start,end,clip,this.isColumns?availableSpace:0,!this.settings.discrete),offset+=this.settings.colorBarSize+2,availableSpace-=offset),!this.settings.squished&&this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)&&(this.renderShape(context,vector,start,end,clip,this.isColumns?availableSpace-offset:offset),offset+=this.settings.colorBarSize+2,availableSpace-=offset),this.isRenderAs(morpheus.VectorTrack.RENDER.ARC)&&(this.renderArc(context,vector,start,end,clip,this.settings.arcSize), +offset+=this.settings.arcSize+2,availableSpace-=offset),!this.settings.squished&&this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)&&this.renderMolecule(context,vector,start,end,clip,offset,availableSpace),this.isRenderAs(morpheus.VectorTrack.RENDER.BOX_PLOT)){var barSize=this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT)?this.settings.barSize:availableSpace-2;offset++,this.renderBoxPlot(context,vector,start,end,clip,offset,barSize),offset+=barSize+2,availableSpace-=offset}if(this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)){var barSize=this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT)?this.settings.barSize:availableSpace-1;if(this.settings.stackedBar)this.renderStackedBar(context,vector,start,end,clip,offset,barSize);else{var fields=vector.getProperties().get(morpheus.VectorKeys.FIELDS),visibleFieldIndices=vector.getProperties().get(morpheus.VectorKeys.VISIBLE_FIELDS);null!=fields&&null==visibleFieldIndices&&(visibleFieldIndices=morpheus.Util.seq(fields.length)),null!=fields?this.renderUnstackedBar(context,vector,start,end,clip,offset,barSize,visibleFieldIndices):this.renderBar(context,vector,start,end,clip,offset,barSize)}offset+=barSize+2,availableSpace-=offset}!this.settings.squished&&this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR)&&(this.renderText(context,vector,!0,start,end,clip,offset,this.isColumns?fullAvailableSpace:0),offset+=this.settings.maxTextWidth+2,availableSpace-=offset),this.textWidth=0,!this.settings.squished&&this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT)&&(this.textWidth=availableSpace,this.renderText(context,vector,!1,start,end,clip,offset,this.isColumns?fullAvailableSpace:0),offset+=this.settings.textWidth+2,availableSpace-=offset)},showPopup:function(e,isHeader){function addSection(name){items.length>0&&items.push({separator:!0}),items=items.concat(sectionToItems[name])}if(this.heatmap.options.popupEnabled){var _this=this,project=this.project,isColumns=this.isColumns,hasSelection=isColumns?project.getColumnSelectionModel().count()>0:project.getRowSelectionModel().count()>0,ANNOTATE_SELECTION="Annotate Selection",INVERT_SELECTION="Invert Selection",SELECT_ALL="Select All",SHOW_SELECTION_ONLY="Show Selection Only",CLEAR_SELECTION="Clear Selection",HIGHLIGHT_MATCHING_VALUES="Highlight Matching Values",FIELDS="Fields...",DELETE="Delete...",TOOLTIP="Show In Tooltip",HIDE="Hide",REMOVE_SHOW_SELECTION_ONLY="Show All",SORT_ASC="Sort Ascending",SORT_DESC="Sort Descending",FILTER="Filter...",SORT_SEL_ASC="Sort Heat Map Ascending",SORT_SEL_DESC="Sort Heat Map Descending",SORT_SEL_TOP_N="Sort Heat Map Descending/Ascending",DISPLAY_BAR="Show Bar Chart",DISPLAY_STACKED_BAR="Stacked",DISPLAY_COLOR="Show Color",DISPLAY_TEXT="Show Text",DISPLAY_SHAPE="Show Shape",DISPLAY_ARC="Show Arc",DISPLAY_TEXT_AND_COLOR="Show Colored Text",DISPLAY_STRUCTURE="Show Chemical Structure",DISPLAY_CONTINUOUS="Continuous",TOGGLE="Expand/Collapse",positions=this.positions,heatmap=this.heatmap,sectionToItems={Sort:[],Selection:[],Display:[]};if(isHeader&§ionToItems.Sort.push({name:FILTER}),!isColumns){var toggle=!1,dataset=project.getSortedFilteredDataset();try{project.getRowSelectionModel().getViewIndices().forEach(function(index){if(-1!==dataset.getState(index))throw toggle=!0,"break"})}catch(x){}toggle&§ionToItems.Selection.push({name:TOGGLE})}var customItems=this.heatmap.getPopupItems();customItems&&customItems.length>0&&customItems.forEach(function(item){item.columns===isColumns&§ionToItems[item.section].push(item)}),sectionToItems.Selection.length>0&§ionToItems.Selection.push({separator:!0}),sectionToItems.Selection.push({name:"Copy"}),sectionToItems.Selection.push({separator:!0}),sectionToItems.Selection.push({name:ANNOTATE_SELECTION}),sectionToItems.Selection.push({name:INVERT_SELECTION}),sectionToItems.Selection.push({name:SELECT_ALL}),sectionToItems.Selection.push({name:CLEAR_SELECTION});var combinedFilter=isColumns?project.getColumnFilter():project.getRowFilter(),showSelectionOnlyIndex=combinedFilter.indexOf(SHOW_SELECTION_ONLY);-1!==showSelectionOnlyIndex&§ionToItems.Selection.push({name:REMOVE_SHOW_SELECTION_ONLY}),isHeader||(sectionToItems.Sort.push({name:SORT_SEL_ASC,disabled:!hasSelection}),sectionToItems.Sort.push({name:SORT_SEL_DESC,disabled:!hasSelection}),sectionToItems.Sort.push({name:SORT_SEL_TOP_N,disabled:!hasSelection}));var dataType=morpheus.VectorUtil.getDataType(this.getFullVector()),arrayFields=this.getFullVector().getProperties().get(morpheus.VectorKeys.FIELDS),isArray=void 0!==arrayFields,isNumber="number"===dataType||"[number]"===dataType;(isNumber||isArray)&§ionToItems.Display.push({name:DISPLAY_BAR,checked:this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)}),isArray&&(sectionToItems.Display.push({name:DISPLAY_STACKED_BAR,checked:this.settings.stackedBar}),sectionToItems.Display.push({name:FIELDS})),isArray||(sectionToItems.Display.push({name:DISPLAY_COLOR,checked:this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)}),sectionToItems.Display.push({name:DISPLAY_TEXT,checked:this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT)}),sectionToItems.Display.push({name:DISPLAY_SHAPE,checked:this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)})),isArray||isNumber||this.isColumns||-1===name.toLowerCase().indexOf("smile")||sectionToItems.Display.push({name:DISPLAY_STRUCTURE,checked:this.isRenderAs(morpheus.VectorTrack.RENDER.MOLECULE)}),sectionToItems.Display.push({name:TOOLTIP,checked:this.settings.inlineTooltip}),isArray||sectionToItems.Display.push({name:HIGHLIGHT_MATCHING_VALUES,checked:this.settings.highlightMatchingValues}),sectionToItems.Display.push({name:"Squished",checked:this.settings.squished}),(this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BOX_PLOT))&&(sectionToItems.Display.push({separator:!0}),this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)&§ionToItems.Display.push({name:"Edit Bar Color..."}),sectionToItems.Display.push({name:"Auto Range"}),sectionToItems.Display.push({name:"Custom Range..."})),(this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)||this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE))&&(sectionToItems.Display.push({separator:!0}),isNumber&§ionToItems.Display.push({name:DISPLAY_CONTINUOUS,checked:!this.settings.discrete}),(this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)&&isArray)&§ionToItems.Display.push({name:"Edit Colors..."}),this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)&§ionToItems.Display.push({name:"Edit Shapes..."}),(this.isRenderAs(morpheus.VectorTrack.RENDER.COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.TEXT_AND_COLOR)||this.isRenderAs(morpheus.VectorTrack.RENDER.BAR)&&isArray)&§ionToItems.Display.push({name:"Color Key",icon:"fa fa-key"})),this.isRenderAs(morpheus.VectorTrack.RENDER.SHAPE)&§ionToItems.Display.push({name:"Shape Key",icon:"fa fa-key"}),sectionToItems.Display.push({separator:!0}),sectionToItems.Display.push({name:HIDE}),sectionToItems.Display.push({separator:!0}),sectionToItems.Display.push({name:DELETE});var items=[];addSection("Sort"),_.each(sectionToItems.Selection,function(item){item.name!==REMOVE_SHOW_SELECTION_ONLY&&item.name!==SELECT_ALL&&(item.disabled=!hasSelection)}),addSection(isHeader?"Display":"Selection"),e.preventDefault&&e.preventDefault(),morpheus.Popup.showPopup(items,{x:e.pageX,y:e.pageY},e.target,function(event,item){var customItem;if("Copy"===item){var dataset=project.getSortedFilteredDataset(),v=isColumns?dataset.getColumnMetadata().getByName(_this.name):dataset.getRowMetadata().getByName(_this.name),selectionModel=isColumns?project.getColumnSelectionModel():project.getRowSelectionModel(),text=[];selectionModel.getViewIndices().forEach(function(index){text.push(morpheus.Util.toString(v.getValue(index)))}),event.clipboardData.setData("text/plain",text.join(" "))}else if(item===FIELDS){var visibleFields,visibleFieldIndices=_this.getFullVector().getProperties().get(morpheus.VectorKeys.VISIBLE_FIELDS);if(null==visibleFieldIndices)visibleFields=arrayFields.slice(0);else{visibleFields=[];for(var i=0;ii;i++)viewIndices.has(i)||inverse.add(i);model.setViewIndices(inverse,!0)}else if(item===FILTER){var filter,vector=_this.getFullVector(),index=_this.isColumns?_this.project.getColumnFilter().indexOf(vector.getName()):_this.project.getRowFilter().indexOf(vector.getName());if(-1===index){if(morpheus.VectorUtil.isNumber(vector)&&morpheus.VectorUtil.containsMoreThanNValues(vector,9))filter=new morpheus.RangeFilter(NaN,NaN,vector.getName());else{var set=morpheus.VectorUtil.getSet(vector),array=set.values();array.sort(morpheus.SortKey.ASCENDING_COMPARATOR),filter=new morpheus.VectorFilter(set,set.size(),vector.getName())}filter&&(_this.isColumns?_this.project.getColumnFilter().add(filter,!0):_this.project.getRowFilter().add(filter,!0))}_this.isColumns?_this.project.getColumnFilter().trigger("focus",{}):_this.project.getRowFilter().trigger("focus",{})}else if(item===SORT_ASC||item===SORT_DESC){var sortKey=new morpheus.SortKey(_this.name,item===SORT_ASC?morpheus.SortKey.SortOrder.ASCENDING:morpheus.SortKey.SortOrder.DESCENDING);_this.isColumns?_this.project.setColumnSortKeys(morpheus.SortKey.keepExistingSortKeys([sortKey],project.getColumnSortKeys()),!0):_this.project.setRowSortKeys(morpheus.SortKey.keepExistingSortKeys([sortKey],project.getRowSortKeys()),!0)}else if(item==SORT_SEL_ASC||item==SORT_SEL_DESC||item===SORT_SEL_TOP_N){var sortOrder;sortOrder=item===SORT_SEL_ASC?morpheus.SortKey.SortOrder.ASCENDING:item===SORT_SEL_DESC?morpheus.SortKey.SortOrder.DESCENDING:morpheus.SortKey.SortOrder.TOP_N,heatmap.sortBasedOnSelection(sortOrder,isColumns,e&&e.shiftKey)}else if(item===SELECT_ALL){for(var selectionModel=isColumns?heatmap.getProject().getColumnSelectionModel():heatmap.getProject().getRowSelectionModel(),count=isColumns?heatmap.getProject().getSortedFilteredDataset().getColumnCount():heatmap.getProject().getSortedFilteredDataset().getRowCount(),indices=new morpheus.Set,i=0;count>i;i++)indices.add(i);selectionModel.setViewIndices(indices,!0)}else if("Auto Range"===item)delete _this.settings.min,delete _this.settings.max,delete _this.settings.mid,_this._update(),heatmap.revalidate();else if("Custom Range..."===item){var formBuilder=new morpheus.FormBuilder,items=[{name:"min",required:!0,type:"number",value:_this.settings.min},{name:"mid",required:!0,type:"number",value:_this.settings.mid},{name:"max",required:!0,type:"number",value:_this.settings.max}];_.each(items,function(item){formBuilder.append(item)}),morpheus.FormBuilder.showOkCancel({title:"Range",content:formBuilder.$form,okCallback:function(){_this.settings.min=parseFloat(formBuilder.getValue("min")),_this.settings.mid=parseFloat(formBuilder.getValue("mid")),_this.settings.max=parseFloat(formBuilder.getValue("max")),_this._update(),heatmap.revalidate()}})}else if("Squished"===item)_this.settings.squished=!_this.settings.squished,heatmap.revalidate();else if("Color Key"===item){var legend=new morpheus.HeatMapTrackColorLegend([_this],isColumns?_this.project.getColumnColorModel():_this.project.getRowColorModel()),size=legend.getPreferredSize();legend.setBounds(size),legend.repaint(),morpheus.FormBuilder.showInModal({title:"Color Key",html:legend.canvas})}else if("Shape Key"===item){var legend=new morpheus.HeatMapTrackShapeLegend([_this],isColumns?_this.project.getColumnShapeModel():_this.project.getRowShapeModel()),size=legend.getPreferredSize();legend.setBounds(size),legend.repaint(),morpheus.FormBuilder.showInModal({title:"Shape Key",html:legend.canvas})}else if("Edit Shapes..."===item){var shapeModel=(new morpheus.FormBuilder,isColumns?_this.project.getColumnShapeModel():_this.project.getRowShapeModel()),chooser=new morpheus.ShapeChooser({map:shapeModel.getMap(_this.name)});chooser.on("change",function(event){shapeModel.setMappedValue(_this.getFullVector(),event.value,event.shape),_this.setInvalid(!0),_this.repaint()}),morpheus.FormBuilder.showInModal({title:"Edit Shapes",html:chooser.$div,close:"Close"})}else if("Edit Colors..."===item){var colorSchemeChooser,colorModel=isColumns?_this.project.getColumnColorModel():_this.project.getRowColorModel();_this.settings.discrete?(colorSchemeChooser=new morpheus.DiscreteColorSchemeChooser({colorScheme:{scale:colorModel.getDiscreteColorScheme(_this.getFullVector())}}),colorSchemeChooser.on("change",function(event){colorModel.setMappedValue(_this.getFullVector(),event.value,event.color),_this.setInvalid(!0),_this.repaint()})):(colorSchemeChooser=new morpheus.HeatMapColorSchemeChooser({showRelative:!1}),colorSchemeChooser.setColorScheme(colorModel.getContinuousColorScheme(_this.getFullVector())),colorSchemeChooser.on("change",function(event){_this.setInvalid(!0),_this.repaint()})),morpheus.FormBuilder.showInModal({title:"Edit Colors",html:colorSchemeChooser.$div,close:"Close",callback:function(){colorSchemeChooser.dispose()}})}else if(item===TOOLTIP)_this.settings.inlineTooltip=!_this.settings.inlineTooltip;else if(item===HIGHLIGHT_MATCHING_VALUES)_this.settings.highlightMatchingValues=!_this.settings.highlightMatchingValues;else if(customItem=_.find(customItems,function(customItem){return customItem.name===item&&customItem.columns===isColumns}))if(customItem.task){var task={tabId:_this.heatmap.getTabManager().getActiveTabId()};_this.heatmap.getTabManager().addTask(task),setTimeout(function(){try{customItem.callback(heatmap)}catch(x){}_this.heatmap.getTabManager().removeTask(task)},1)}else customItem.callback(heatmap);else if(item===DISPLAY_CONTINUOUS)_this.settings.discrete=!_this.settings.discrete,_this._setChartMinMax(),_this.setInvalid(!0),_this.repaint();else if(item===HIDE)heatmap.setTrackVisible(_this.name,!1,_this.isColumns),heatmap.revalidate();else if(item===DISPLAY_STACKED_BAR)_this.settings.stackedBar=!_this.settings.stackedBar,_this._update(),heatmap.revalidate();else{item===DISPLAY_BAR?item=morpheus.VectorTrack.RENDER.BAR:item===DISPLAY_COLOR?item=morpheus.VectorTrack.RENDER.COLOR:item===DISPLAY_TEXT?item=morpheus.VectorTrack.RENDER.TEXT:item===DISPLAY_TEXT_AND_COLOR?item=morpheus.VectorTrack.RENDER.TEXT_AND_COLOR:item===DISPLAY_STRUCTURE?item=morpheus.VectorTrack.RENDER.MOLECULE:item===DISPLAY_SHAPE?item=morpheus.VectorTrack.RENDER.SHAPE:item===DISPLAY_ARC?item=morpheus.VectorTrack.RENDER.ARC:console.log("Unknown item "+item);var show=!_this.isRenderAs(item);show?_this.settings.renderMethod[item]=!0:delete _this.settings.renderMethod[item],_this._update(),heatmap.revalidate()}})}},renderColor:function(context,vector,start,end,clip,offset,continuous){var isColumns=this.isColumns,positions=this.positions,colorModel=isColumns?this.project.getColumnColorModel():this.project.getRowColorModel(),settings=this.settings,canvasSize=isColumns?this.getUnscaledHeight():this.getUnscaledWidth();settings.colorBarSize>canvasSize&&(settings.colorBarSize=canvasSize>=5?canvasSize-1:canvasSize);var getColor;getColor=continuous?_.bind(colorModel.getContinuousMappedValue,colorModel):_.bind(colorModel.getMappedValue,colorModel);for(var i=start;end>i;i++){var value=vector.getValue(i),position=positions.getPosition(i),size=positions.getItemSize(i),color=getColor(vector,value);context.fillStyle=color,isColumns?(context.beginPath(),context.rect(position,offset-settings.colorBarSize,size,settings.colorBarSize),context.fill()):(context.beginPath(),context.rect(offset,position,settings.colorBarSize,size),context.fill())}},renderShape:function(context,vector,start,end,clip,offset){var isColumns=this.isColumns,positions=this.positions,shapeModel=isColumns?this.project.getColumnShapeModel():this.project.getRowShapeModel(),settings=this.settings,canvasSize=isColumns?this.getUnscaledHeight():this.getUnscaledWidth();settings.colorBarSize>canvasSize&&(settings.colorBarSize=canvasSize>=5?canvasSize-1:canvasSize),context.fillStyle="black",context.strokeStyle="black";var lineWidth=context.lineWidth;context.lineWidth=1;for(var i=start;end>i;i++){var value=vector.getValue(i),position=positions.getPosition(i),itemSize=positions.getItemSize(i),minSize=Math.min(settings.colorBarSize,itemSize),size2=minSize/2,shape=shapeModel.getMappedValue(vector,value),x=isColumns?position+itemSize/2:offset+size2,y=isColumns?offset-size2:position+itemSize/2;size2-=.5,morpheus.CanvasUtil.drawShape(context,shape,x,y,size2)}context.lineWidth=lineWidth},renderArc:function(context,vector,start,end,clip,size){var isColumns=this.isColumns,positions=this.positions;this.project;context.save(),context.lineWidth=1;var fill=(d3.scale.linear().domain([1,size]).range([.8,1]).clamp(!0),d3.scale.category20b()),valueToIndices=morpheus.VectorUtil.createValueToIndicesMap(vector),total=positions.getPosition(positions.getLength()-1)+positions.getItemSize(positions.getLength()-1);context.translate(clip.x,clip.y);var width=clip.width,height=clip.height;if(isColumns){var squishFactor=width/total;context.scale(squishFactor,1)}else{var squishFactor=height/total;context.scale(1,squishFactor)}start=0,end=vector.size();for(var i=start;end>i;i++){var value=vector.getValue(i);if(null!=value){context.strokeStyle=fill(value);for(var indices=valueToIndices.get(value),pix=positions.getPosition(i)+positions.getItemSize(i)/2,j=0,nindices=indices.length;nindices>j;j++){var viewIndex=indices[j];if(viewIndex!==i){var endPix=positions.getPosition(viewIndex)+positions.getItemSize(viewIndex)/2,midPix=(endPix+pix)/2,arcRadius=(Math.abs(i-viewIndex),size);isColumns?(context.beginPath(),context.moveTo(pix,arcRadius),context.quadraticCurveTo(midPix,1,endPix,arcRadius)):(context.beginPath(),context.moveTo(1,pix),context.quadraticCurveTo(arcRadius,midPix,1,endPix)),context.stroke()}}}}context.restore()},sdfToSvg:function(sdf,width,height){this.jsme||"undefined"==typeof JSApplet||(this.jsmeId=_.uniqueId("m"),this.$jsmeDiv=$('
    ').appendTo($(document.body)),this.jsme=new JSApplet.JSME(this.jsmeId,"380px","340px",{})),this.jsme.readMolFile(sdf);var svg=$("#"+this.jsmeId+" > div > div > div:nth-child(2) > svg"),svgWidth=svg.width.baseVal.value,svgHeight=svg.height.baseVal.value,scale=Math.min(width/svgWidth,height/svgHeight),text=''+svg.innerHTML+"";return text},renderMolecule:function(context,vector,start,end,clip,offset){var positions=(this.isColumns,this.positions);context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,context.strokeStyle="black";for(var width=this.getUnscaledWidth(),customUrlProvider=void 0!==this.heatmap.options.structureUrlProvider,dummyTarget={childNodes:[],getContext:function(){return context}},i=start;end>i;i++){var spanEnd=this.spanMap.get(i);if(void 0!==spanEnd){var startPix=positions.getPosition(i),endPix=positions.getPosition(spanEnd-1)+positions.getSize(),size=endPix-startPix,value=vector.getValue(i),cache=this.moleculeCache[value];if(cache)if(customUrlProvider){if(cache.complete){var scaleFactor=Math.min(size/cache.height,width/cache.width),scaledWidth=cache.width*scaleFactor,scaledHeight=cache.height*scaleFactor,diff=cache.height-scaledHeight;startPix+=diff/2;try{context.drawImage(cache,offset,startPix,scaledWidth,scaledHeight)}catch(x){}}}else{var text=this.sdfToSvg(cache,width,size);canvg(dummyTarget,text,{ignoreMouse:!0,ignoreAnimation:!0,offsetY:startPix,ignoreClear:!0,ignoreDimensions:!0})}}}},createChartScale:function(availableSpace){var domain,range;this.settings.mid!==this.settings.min&&this.settings.mid!==this.settings.max?(domain=[this.settings.min,this.settings.mid,this.settings.max],range=this.isColumns?[availableSpace,availableSpace/2,0]:[0,availableSpace/2,availableSpace]):(domain=[this.settings.min,this.settings.max],range=this.isColumns?[availableSpace,0]:[0,availableSpace]);var scale=d3.scale.linear().domain(domain).range(range).clamp(!0);return scale},renderBar:function(context,vector,start,end,clip,offset,availableSpace){var isColumns=this.isColumns,positions=this.positions;context.fillStyle=this.settings.barColor;for(var scale=this.createChartScale(availableSpace),midPix=scale(this.settings.mid),settings=this.settings,discrete=settings.discrete&&null!=this.discreteValueMap,i=start;end>i;i++){var value=vector.getValue(i);discrete&&(value=this.discreteValueMap.get(value));var position=positions.getPosition(i),size=positions.getItemSize(i),scaledValue=scale(value);isColumns?(context.beginPath(),context.rect(position,Math.min(midPix,scaledValue),size,Math.abs(midPix-scaledValue)),context.fill()):(context.beginPath(),context.rect(offset+Math.min(midPix,scaledValue),position,Math.abs(midPix-scaledValue),size),context.fill())}},renderBoxPlot:function(context,vector,start,end,clip,offset,availableSpace){var isColumns=this.isColumns,positions=this.positions;context.strokeStyle="black",context.save(),context.translate(offset,0);var scale=this.createChartScale(availableSpace),visibleFieldIndices=vector.getProperties().get(morpheus.VectorKeys.VISIBLE_FIELDS);null==visibleFieldIndices&&(visibleFieldIndices=morpheus.Util.seq(vector.getProperties().get(morpheus.VectorKeys.FIELDS).length));for(var colorByVector=null!=this.settings.colorByField?this.getVector(this.settings.colorByField):null,colorModel=isColumns?this.project.getColumnColorModel():this.project.getRowColorModel(),i=start;end>i;i++){var array=vector.getValue(i);if(null!=array){var itemSize=positions.getItemSize(i);if(3>=itemSize)continue;var radius=2,pix=positions.getPosition(i),start=pix+1,end=pix+itemSize-1,center=(start+end)/2,_itemSize=itemSize-2,lineHeight=Math.max(2,_itemSize-8),box=array.box;if(null==box){var v=morpheus.VectorUtil.arrayAsVector(array);box=morpheus.BoxPlotItem(null!=visibleFieldIndices?new morpheus.SlicedVector(v,visibleFieldIndices):v),array.box=box}if(context.fillStyle="#bdbdbd",!isColumns){context.fillRect(Math.min(scale(box.q1),scale(box.q3)),start,Math.abs(scale(box.q1)-scale(box.q3)),_itemSize),context.fillRect(Math.min(scale(box.q1),scale(box.lowerAdjacentValue)),center-lineHeight/2,Math.abs(scale(box.q1)-scale(box.lowerAdjacentValue)),lineHeight),context.fillRect(Math.min(scale(box.q3),scale(box.upperAdjacentValue)),center-lineHeight/2,Math.abs(scale(box.q3)-scale(box.upperAdjacentValue)),lineHeight),context.fillStyle="#636363";for(var j=0,length=visibleFieldIndices.length;length>j;j++){var value=array[visibleFieldIndices[j]];if(null!=value){if(null!=colorByVector){var colorByArray=colorByVector.getValue(i);if(null!=colorByArray){var color=colorModel.getMappedValue(colorByVector,colorByArray[visibleFieldIndices[j]]);context.fillStyle=color}else context.fillStyle="#636363"}var pix=scale(value);context.beginPath(),context.arc(pix,center,radius,2*Math.PI,!1),context.fill()}}}}}context.restore()},renderStackedBar:function(context,vector,start,end,clip,offset,availableSpace){var isColumns=this.isColumns,positions=this.positions,scale=this.createChartScale(availableSpace),midPix=scale(this.settings.mid),colorModel=(this.settings,isColumns?this.project.getColumnColorModel():this.project.getRowColorModel()),selectionModel=isColumns?this.project.getRowSelectionModel():null,selectedModelIndices=null==selectionModel?[]:selectionModel.toModelIndices();context.strokeStyle="black",context.lineWidth=2;for(var i=start;end>i;i++){var array=vector.getValue(i);if(null!=array){var selectedBins=new morpheus.Set;if(null!=array.modelIndexToBin)for(var j=0;jj;j++){var value=array[j];value>=this.settings.mid?positivePairs.push({value:value,index:j}):0>value&&negativePairs.push({value:value,index:j})}for(var positiveIndices=morpheus.Util.indexSortPairs(positivePairs,!1),j=0,length=positiveIndices.length;length>j;j++){var index=positiveIndices[j],value=array[index],color=colorModel.getMappedValue(vector,index);context.fillStyle=color;var scaledValue=scale(value),nextScaledValue=j===length-1?midPix:scale(array[positiveIndices[j+1]]);if(isColumns?(context.beginPath(),context.rect(position,Math.min(nextScaledValue,scaledValue),size,Math.abs(nextScaledValue-scaledValue)),context.fill()):(context.beginPath(),context.rect(offset+Math.min(nextScaledValue,scaledValue),position,Math.abs(nextScaledValue-scaledValue),size),context.fill()),selectedBins.has(index)){context.beginPath();var ytop=(nextScaledValue+scaledValue)/2;context.moveTo(position,ytop),context.lineTo(position+size,ytop),context.stroke()}}for(var negativeIndices=morpheus.Util.indexSortPairs(negativePairs,!0),j=0,length=negativeIndices.length;length>j;j++){var index=negativeIndices[j],value=array[index],color=colorModel.getMappedValue(vector,index);context.fillStyle=color;var scaledValue=scale(value),nextScaledValue=j===length-1?midPix:scale(array[negativeIndices[j+1]]);if(isColumns?(context.beginPath(),context.rect(position,Math.min(nextScaledValue,scaledValue),size,Math.abs(nextScaledValue-scaledValue)),context.fill()):(context.beginPath(),context.rect(offset+Math.min(nextScaledValue,scaledValue),position,Math.abs(nextScaledValue-scaledValue),size),context.fill()),selectedBins.has(index)){context.beginPath();var ytop=(nextScaledValue+scaledValue)/2;context.moveTo(position,ytop),context.lineTo(position+size,ytop),context.stroke()}}}}context.lineWidth=1},renderUnstackedBar:function(context,vector,start,end,clip,offset,availableSpace,fieldIndices){var isColumns=this.isColumns,positions=this.positions,nvalues=fieldIndices.length,colorModel=(this.settings,isColumns?this.project.getColumnColorModel():this.project.getRowColorModel());context.fillStyle=this.settings.barColor;var barSpacer=0,barWidth=(availableSpace-(nvalues-1)*barSpacer)/nvalues,colorByVector=null!=this.settings.colorByField?this.getVector(this.settings.colorByField):null;context.strokeStyle="white";for(var i=start;end>i;i++){var array=vector.getValue(i);if(null!=array)for(var position=positions.getPosition(i),itemSize=positions.getItemSize(i),scale=this.createChartScale(itemSize-1),midPix=scale(this.settings.mid),xpix=0,j=0;nvalues>j;j++){var value=array[fieldIndices[j]];if(null!=colorByVector){var colorByArray=colorByVector.getValue(i),color=colorModel.getMappedValue(colorByVector,null!=colorByArray?colorByArray[fieldIndices[j]]:null);context.fillStyle=color}var scaledValue=scale(value);if(isColumns)context.beginPath(),context.rect(Math.min(midPix,scaledValue),offset+xpix,Math.abs(midPix-scaledValue),barWidth),context.fill();else{context.beginPath();var barHeight=Math.abs(midPix-scaledValue),ypix=position+itemSize-Math.max(midPix,scaledValue);context.rect(offset+xpix,ypix,barWidth,barHeight),context.fill()}xpix+=barWidth+barSpacer}}},renderText:function(context,vector,isColor,start,end,clip,offset,canvasSize){context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,context.textBaseline="middle";var positions=this.positions,isColumns=this.isColumns,colorModel=isColumns?this.project.getColumnColorModel():this.project.getRowColorModel();isColumns&&context.translate(clip.x,clip.y);for(var toStringFunction=morpheus.VectorTrack.vectorToString(vector),i=start;end>i;i++){var size=this.positions.getItemSize(i);if(!(6>size)){ +var value=vector.getValue(i);if(null!=value){value=toStringFunction(value);var position=positions.getPosition(i);isColor&&(context.fillStyle=colorModel.getMappedValue(vector,value)),isColumns?(context.save(),context.translate(position+size/2-clip.x,canvasSize-clip.y-offset),context.rotate(-Math.PI/2),context.fillText(value,0,0),context.restore()):context.fillText(value,offset,position+size/2)}}}}},morpheus.Util.extend(morpheus.VectorTrack,morpheus.AbstractCanvas),morpheus.VectorTrackHeader=function(project,name,isColumns,controller){function getResizeCursor(pos){return isColumns&&pos.y>=_this.getUnscaledHeight()-3?"ns-resize":pos.x>=_this.getUnscaledWidth()-3?"ew-resize":void 0}morpheus.AbstractCanvas.call(this),this.project=project,this.name=name,this.isColumns=isColumns;var canvas=this.canvas;this.controller=controller;var vector=(isColumns?project.getFullDataset().getColumnMetadata():project.getFullDataset().getRowMetadata()).getByName(name);vector&&vector.getProperties().has(morpheus.VectorKeys.TITLE)&&(this.canvas.setAttribute("title",vector.getProperties().get(morpheus.VectorKeys.TITLE)),$(this.canvas).tooltip());var _this=this;this.setBounds({height:this.defaultFontHeight+morpheus.VectorTrackHeader.FONT_OFFSET});var mouseMove=function(event){if(!morpheus.CanvasUtil.dragging){var pos=morpheus.CanvasUtil.getMousePos(event.target,event),cursor=getResizeCursor(pos);canvas.style.cursor=cursor?cursor:"default",_this.isMouseOver=!0,_this.repaint()}},mouseExit=function(e){morpheus.CanvasUtil.dragging||(canvas.style.cursor="default"),_this.isMouseOver=!1,_this.repaint()},showPopup=function(e){controller.setSelectedTrack(_this.name,isColumns);var track=controller.getTrack(_this.name,isColumns);if(!track)throw _this.name+" track not found";return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),track.showPopup(e,!0),!1};this.selectedBackgroundColor="#c8c8c8",this.backgroundColor="#f9f9f9",$(this.canvas).css("background-color",this.backgroundColor).on("mousemove.morpheus",mouseMove).on("mouseout.morpheus",mouseExit).on("mouseenter.morpheus",mouseMove),$(this.canvas).on("contextmenu.morpheus",showPopup);var resizeCursor,dragStartPosition,dragStartWidth=0,dragStartHeight=0,dragging=!1;this.hammer=morpheus.Util.hammer(canvas,["pan","tap","longpress"]).on("longpress",function(event){event.preventDefault(),controller.setSelectedTrack(_this.name,isColumns);var track=controller.getTrack(_this.name,isColumns);track.showPopup(event.srcEvent,!0)}).on("panend",function(event){_this.isMouseOver=!1,morpheus.CanvasUtil.dragging=!1,canvas.style.cursor="default";var index=controller.getTrackIndex(_this.name,isColumns),header=controller.getTrackHeaderByIndex(index,isColumns),track=controller.getTrackByIndex(index,isColumns),$canvas=$(track.canvas);$canvas.css("z-index","0"),$(header.canvas).css("z-index","0"),controller.revalidate()}).on("panstart",function(event){if(_this.isMouseOver=!1,!morpheus.CanvasUtil.dragging)if(resizeCursor=getResizeCursor(morpheus.CanvasUtil.getMousePos(event.target,event,!0)))morpheus.CanvasUtil.dragging=!0,canvas.style.cursor=resizeCursor,dragStartWidth=_this.getUnscaledWidth(),dragStartHeight=_this.getUnscaledHeight(),event.preventDefault(),dragging=!1;else{var index=controller.getTrackIndex(_this.name,isColumns);if(-1==index)throw _this.name+" not found";var header=controller.getTrackHeaderByIndex(index,isColumns),track=controller.getTrackByIndex(index,isColumns);controller.setSelectedTrack(_this.name,isColumns);var $canvas=$(track.canvas);dragStartPosition=$canvas.position(),$canvas.css("z-index","100"),$(header.canvas).css("z-index","100"),morpheus.CanvasUtil.dragging=!0,resizeCursor=void 0,dragging=!0}}).on("panmove",function(event){if(_this.isMouseOver=!1,resizeCursor){var width,height;if("ew-resize"===resizeCursor){var dx=event.deltaX;width=Math.max(8,dragStartWidth+dx)}if("ns-resize"===resizeCursor){var dy=event.deltaY;height=Math.max(8,dragStartHeight+dy)}controller.resizeTrack(_this.name,width,height,isColumns)}else if(dragging){var index=controller.getTrackIndex(_this.name,isColumns),header=controller.getTrackHeaderByIndex(index,isColumns),track=controller.getTrackByIndex(index,isColumns),ntracks=controller.getNumTracks(isColumns),delta=isColumns?event.deltaY:event.deltaX,newIndex=index+(delta>0?1:-1);newIndex=Math.min(Math.max(0,newIndex),ntracks-1);var prop=isColumns?"top":"left",w=isColumns?"getUnscaledHeight":"getUnscaledWidth",trackBounds={};trackBounds[prop]=dragStartPosition[prop]+delta,track.setBounds(trackBounds),header.setBounds(trackBounds);var dragOverTrack=controller.getTrackByIndex(newIndex,isColumns),dragOverWidth=dragOverTrack[w](),dragOverLeft=$(dragOverTrack.canvas).position()[prop],dragleft=dragStartPosition[prop]+delta,dragright=dragleft+track[w]();if((delta>0&&dragright>=dragOverLeft+dragOverWidth/2||0>delta&&dragOverLeft+dragOverWidth/2>=dragleft)&&index!==newIndex){controller.moveTrack(index,newIndex,isColumns);var otherHeader=controller.getTrackHeaderByIndex(index,isColumns),otherTrack=controller.getTrackByIndex(index,isColumns),$movedCanvas=$(otherTrack.canvas),newLeft=$movedCanvas.position()[prop];0>delta?newLeft+=track[w]():newLeft-=track[w]();var otherBounds={};otherBounds[prop]=newLeft,otherTrack.setBounds(otherBounds),otherHeader.setBounds(otherBounds)}}}).on("tap",function(event){if((!morpheus.Util.IS_MAC||!event.srcEvent.ctrlKey)&&(_this.isMouseOver=!1,controller.setSelectedTrack(_this.name,isColumns),(!isColumns||controller.options.columnsSortable)&&(isColumns||controller.options.rowsSortable))){var sortOrder,sortKey,additionalSort=event.srcEvent.shiftKey,isGroupBy=!1,existingSortKeyIndex=_this.getSortKeyIndexForColumnName(_this.getSortKeys(),_this.name);-1!=existingSortKeyIndex?(sortKey=_this.getSortKeys()[existingSortKeyIndex],sortOrder=sortKey.getSortOrder()===morpheus.SortKey.SortOrder.UNSORTED?morpheus.SortKey.SortOrder.ASCENDING:sortKey.getSortOrder()===morpheus.SortKey.SortOrder.ASCENDING?morpheus.SortKey.SortOrder.DESCENDING:morpheus.SortKey.SortOrder.UNSORTED):(sortKey=new morpheus.SortKey(_this.name,morpheus.SortKey.SortOrder.ASCENDING),sortOrder=morpheus.SortKey.SortOrder.ASCENDING),null!=sortKey&&(sortKey.setSortOrder(sortOrder),_this.setSortingStatus(_this.getSortKeys(),sortKey,additionalSort,isGroupBy))}})},morpheus.VectorTrackHeader.FONT_OFFSET=2,morpheus.VectorTrackHeader.prototype={selected:!1,isMouseOver:!1,defaultFontHeight:11,dispose:function(){morpheus.AbstractCanvas.prototype.dispose.call(this),$(this.canvas).off("contextmenu.morpheus mousemove.morpheus mouseout.morpheus mouseenter.morpheus"),this.hammer.destroy()},getPreferredSize:function(){var size=this.getPrintSize();return size.width+=22,this.isColumns||(size.height=this.defaultFontHeight+morpheus.VectorTrackHeader.FONT_OFFSET),size},getPrintSize:function(){var context=this.canvas.getContext("2d");context.font=this.defaultFontHeight+"px "+morpheus.CanvasUtil.FONT_NAME;var width=4+context.measureText(this.name).width;return{width:width,height:this.getUnscaledHeight()}},getSortKeys:function(){return this.isColumns?this.project.getColumnSortKeys():this.project.getRowSortKeys()},setOrder:function(sortKeys){this.isColumns?this.project.setColumnSortKeys(morpheus.SortKey.keepExistingSortKeys(sortKeys,this.project.getColumnSortKeys()),!1):this.project.setRowSortKeys(morpheus.SortKey.keepExistingSortKeys(sortKeys,this.project.getRowSortKeys()),!1)},setGroupBy:function(groupBy){for(var existingGroupBy=this.isColumns?this.project.groupColumns:this.project.groupRows,index=-1,i=0,length=existingGroupBy.length;length>i;i++)if(existingGroupBy[i].toString()===groupBy.toString()){index=i;break}var newGroupBy=[groupBy];-1!==index&&(newGroupBy=existingGroupBy,newGroupBy.splice(index,1)),this.isColumns?this.project.setGroupColumns(newGroupBy,!0):this.project.setGroupRows(newGroupBy,!0)},setSelected:function(selected){selected!=this.selected&&(this.selected=selected,$(this.canvas).css({"background-color":this.selected?this.selectedBackgroundColor:this.backgroundColor}))},setSortingStatus:function(sortKeys,sortKey,additionalSort,isGroupBy){if(!isGroupBy)if(sortKey.getSortOrder()!=morpheus.SortKey.SortOrder.UNSORTED||additionalSort){if(additionalSort&&0==sortKeys.length&&(additionalSort=!1),additionalSort){var sortKeyIndex=this.getSortKeyIndexForColumnName(sortKeys,sortKey.toString());-1===sortKeyIndex?sortKeys.push(sortKey):sortKeys[sortKeyIndex]=sortKey}else sortKeys=[sortKey];this.setOrder(sortKeys)}else this.setOrder([]);isGroupBy?this.setGroupBy(sortKey):this.isColumns?this.project.trigger("columnSortOrderChanged"):this.project.trigger("rowSortOrderChanged")},getSortKeyIndexForColumnName:function(sortKeys,columnName){if(null!=sortKeys)for(var i=0,size=sortKeys.length;size>i;i++)if(columnName===sortKeys[i].toString())return i;return-1},print:function(clip,context){clip.height<=6||(context.textBaseline="bottom",this.isColumns?(context.textAlign="right",context.font=Math.min(this.defaultFontHeight,clip.height-morpheus.VectorTrackHeader.FONT_OFFSET)+"px "+morpheus.CanvasUtil.FONT_NAME):(context.textAlign="left",context.font=clip.height-morpheus.VectorTrackHeader.FONT_OFFSET+"px "+morpheus.CanvasUtil.FONT_NAME),context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,context.fillText(this.name,0,0))},draw:function(clip,context){var sortKeys=this.getSortKeys(),name=this.name,existingSortKeyIndex=this.getSortKeyIndexForColumnName(sortKeys,name);if(morpheus.CanvasUtil.resetTransform(context),context.clearRect(0,0,this.getUnscaledWidth(),this.getUnscaledHeight()),!(this.getUnscaledHeight()<5)){this.isColumns?(context.beginPath(),context.moveTo(0,this.getUnscaledHeight()),context.lineTo(this.getUnscaledWidth(),this.getUnscaledHeight()),context.stroke(),context.textAlign="right"):(context.beginPath(),context.moveTo(this.getUnscaledWidth(),0),context.lineTo(this.getUnscaledWidth(),this.getUnscaledHeight()),context.stroke(),context.textAlign="left");var fontHeight=Math.min(this.defaultFontHeight,this.getUnscaledHeight()-morpheus.VectorTrackHeader.FONT_OFFSET),squished=this.controller.getTrack(this.name,this.isColumns).settings.squished;context.font=(squished?"Italic ":"")+fontHeight+"px "+morpheus.CanvasUtil.FONT_NAME;var textWidth=context.measureText(name).width,isColumns=this.isColumns,xpix=this.isColumns?this.getUnscaledWidth()-2:10;isColumns&&(-1!=existingSortKeyIndex&&(xpix-=6),sortKeys.length>1&&(xpix-=6));var ypix=this.isColumns?this.getUnscaledHeight()/2:this.getUnscaledHeight()-(this.defaultFontHeight+morpheus.VectorTrackHeader.FONT_OFFSET)/2;if(context.textBaseline="middle",this.isMouseOver){context.fillStyle="rgb(0,0,0)";for(var xdot=xpix-(isColumns?textWidth+4:4),ydot=ypix-3,i=0;2>i;i++)for(var j=0;3>j;j++)context.fillRect(xdot-3*i,ydot+3*j,1.5,1.5)}if(context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,context.fillText(name,xpix,ypix),context.fillStyle=morpheus.CanvasUtil.FONT_COLOR,-1!==existingSortKeyIndex){context.beginPath();var x=this.isColumns?xpix+4:xpix+textWidth+6,arrowHeight=Math.min(8,this.getUnscaledHeight()/2-1),arrowWidth=3;sortKeys[existingSortKeyIndex].getSortOrder()===morpheus.SortKey.SortOrder.ASCENDING?(context.translate(x,ypix-arrowHeight),context.moveTo(0,0),context.lineTo(arrowWidth,arrowHeight),context.lineTo(-arrowWidth,arrowHeight)):sortKeys[existingSortKeyIndex].getSortOrder()===morpheus.SortKey.SortOrder.DESCENDING?(context.translate(x,ypix),context.moveTo(0,arrowHeight),context.lineTo(arrowWidth,0),context.lineTo(-arrowWidth,0)):(context.translate(x,ypix-arrowHeight/2),context.moveTo(0,0),context.lineTo(arrowWidth,arrowHeight/2),context.lineTo(0,arrowHeight),context.lineTo(-arrowWidth,arrowHeight/2)),context.fill(),morpheus.CanvasUtil.resetTransform(context),sortKeys.length>1&&(context.textAlign="left",context.font="8px "+morpheus.CanvasUtil.FONT_NAME,context.fillText(""+(existingSortKeyIndex+1),x+4,ypix-3))}}}},morpheus.Util.extend(morpheus.VectorTrackHeader,morpheus.AbstractCanvas),morpheus.AverageLinkage=function(nelements,distmatrix){var j,n,clusterid,number,result;clusterid=[],number=[],result=[];for(var i=0;nelements-1>i;i++)result[i]={left:0,right:0,distance:0};for(j=0;nelements>j;j++)number[j]=1,clusterid[j]=j;var r={};for(n=nelements;n>1;n--){morpheus.HCluster.findClosestPair(n,distmatrix,r),result[nelements-n]={},result[nelements-n].distance=r.distance;var is=r.ip,js=r.jp;result[nelements-n].left=clusterid[is],result[nelements-n].right=clusterid[js];var sum=number[is]+number[js];for(j=0;js>j;j++)distmatrix[js][j]=distmatrix[is][j]*number[is]+distmatrix[js][j]*number[js],distmatrix[js][j]/=sum;for(j=js+1;is>j;j++)distmatrix[j][js]=distmatrix[is][j]*number[is]+distmatrix[j][js]*number[js],distmatrix[j][js]/=sum;for(j=is+1;n>j;j++)distmatrix[j][js]=distmatrix[j][is]*number[is]+distmatrix[j][js]*number[js],distmatrix[j][js]/=sum;for(j=0;is>j;j++)distmatrix[is][j]=distmatrix[n-1][j];for(j=is+1;n-1>j;j++)distmatrix[j][is]=distmatrix[n-1][j];number[js]=sum,number[is]=number[n-1],clusterid[js]=n-nelements-1,clusterid[is]=clusterid[n-1]}return result},morpheus.CollapseDataset=function(dataset,collapseToFields,summarizeFunction,shallowCopy){for(var vectors=[],i=0;iseries;series++)collapsedDataset.addSeries({name:dataset.getName(i),dataType:"Float32"});shallowCopy?collapsedDataset.setColumnMetadata(dataset.getColumnMetadata()):morpheus.MetadataUtil.copy(dataset.getColumnMetadata(),collapsedDataset.getColumnMetadata());for(var nfields=collapseToFields.length,collapseToVectors=[],i=0;nfields>i;i++)collapseToVectors.push(collapsedDataset.getRowMetadata().add(collapseToFields[i]));var counter=0;return idToIndices.forEach(function(rowIndices,key){for(var slice=morpheus.DatasetUtil.slicedView(dataset,rowIndices,null),view=new morpheus.DatasetColumnView(slice),series=0;nseries>series;series++){view.setSeriesIndex(series);for(var j=0,ncols=dataset.getColumnCount();ncols>j;j++)view.setIndex(j),collapsedDataset.setValue(counter,j,summarizeFunction(view),series)}for(var i=0;nfields>i;i++){var collapsedToVector=collapseToVectors[i],vector=vectors[i];collapsedToVector.setValue(counter,vector.getValue(rowIndices[0]))}counter++}),collapsedDataset},morpheus.CompleteLinkage=function(nelements,distmatrix){for(var j,n,clusterid=[],result=[],i=0;nelements-1>i;i++)result[i]={left:0,right:0,distance:0};for(j=0;nelements>j;j++)clusterid[j]=j;var r={};for(n=nelements;n>1;n--){morpheus.HCluster.findClosestPair(n,distmatrix,r),result[nelements-n].distance=r.distance;var is=r.ip,js=r.jp;for(j=0;js>j;j++)distmatrix[js][j]=Math.max(distmatrix[is][j],distmatrix[js][j]);for(j=js+1;is>j;j++)distmatrix[j][js]=Math.max(distmatrix[is][j],distmatrix[j][js]);for(j=is+1;n>j;j++)distmatrix[j][js]=Math.max(distmatrix[j][is],distmatrix[j][js]);for(j=0;is>j;j++)distmatrix[is][j]=distmatrix[n-1][j];for(j=is+1;n-1>j;j++)distmatrix[j][is]=distmatrix[n-1][j];result[nelements-n].left=clusterid[is],result[nelements-n].right=clusterid[js],clusterid[js]=n-nelements-1,clusterid[is]=clusterid[n-1]}return result},morpheus.HCluster=function(distmatrix,linkageAlgorithm){var nelements=distmatrix.length,nNodes=nelements-1;if(-1===nNodes){var root={id:0,height:0,index:0,minIndex:0,maxIndex:0,depth:0};return this.tree={maxHeight:0,rootNode:root,leafNodes:[],nLeafNodes:0},void(this.reorderedIndices=[0])}for(var tree=linkageAlgorithm(nelements,distmatrix),nodeorder=[],nodecounts=[],order=[],nodeID=[],i=0;nelements>i;i++)order[i]=i;for(var leftIds=[],rightIds=[],i=0;nNodes>i;i++){var order1,order2,counts1,counts2,ID1,ID2,min1=tree[i].left,min2=tree[i].right;if(nodeID[i]=nNodes+(i+2),0>min1){var index1=-min1-1;order1=nodeorder[index1],counts1=nodecounts[index1],ID1=nodeID[index1],tree[i].distance=Math.max(tree[i].distance,tree[index1].distance)}else order1=order[min1],counts1=1,ID1=min1;if(0>min2){var index2=-min2-1;order2=nodeorder[index2],counts2=nodecounts[index2],ID2=nodeID[index2],tree[i].distance=Math.max(tree[i].distance,tree[index2].distance)}else order2=order[min2],counts2=1,ID2=min2;leftIds[i]=ID1,rightIds[i]=ID2,nodecounts[i]=counts1+counts2,nodeorder[i]=(counts1*order1+counts2*order2)/(counts1+counts2)}for(var reorderedIndices=morpheus.HCluster.treeSort(nNodes,order,nodeorder,nodecounts,tree),idToIndex={},i=0,length=reorderedIndices.length;length>i;i++){var index=reorderedIndices[i];idToIndex[index]=i}for(var node,nodeIdToNode={},i=0,length=nodeID.length;length>i;i++){var id=nodeID[i],leftId=leftIds[i],lnode=nodeIdToNode[leftId];if(void 0===lnode){lnode={id:leftId};var index=idToIndex[leftId];lnode.index=index,lnode.minIndex=index,lnode.maxIndex=index,nodeIdToNode[lnode.id]=lnode}var rightId=rightIds[i],rnode=nodeIdToNode[rightId];if(void 0===rnode){rnode={id:rightId};var index=idToIndex[rightId];rnode.index=index,rnode.minIndex=index,rnode.maxIndex=index,nodeIdToNode[rnode.id]=rnode}node={id:id,children:[lnode,rnode],height:tree[i].distance,index:(rnode.index+lnode.index)/2},node.minIndex=Math.min(rnode.minIndex,lnode.minIndex),node.maxIndex=Math.max(rnode.maxIndex,lnode.maxIndex),lnode.parent=node,rnode.parent=node,nodeIdToNode[node.id]=node}this.reorderedIndices=reorderedIndices;for(var leafNodes=[],i=0,length=reorderedIndices.length;length>i;i++){var leaf=nodeIdToNode[reorderedIndices[i]];leaf.height=0,leafNodes.push(leaf)}morpheus.AbstractDendrogram.setNodeDepths(node),this.tree={maxHeight:node.height,rootNode:node,leafNodes:leafNodes,nLeafNodes:leafNodes.length}},morpheus.HCluster.findClosestPair=function(n,distmatrix,r){var i,j,temp,distance=distmatrix[1][0],ip=1,jp=0;for(i=1;n>i;i++)for(j=0;i>j;j++)temp=distmatrix[i][j],distance>temp&&(distance=temp,ip=i,jp=j);r.distance=distance,r.ip=ip,r.jp=jp},morpheus.HCluster.computeDistanceMatrix=function(dataset,distanceFunction){for(var matrix=[],n=dataset.getRowCount(),i=1;n>i;i++)matrix[i]=new Float32Array(i);if(null==distanceFunction)for(var i=1;n>i;i++)for(var j=0;i>j;j++)matrix[i][j]=dataset.getValue(i,j);else for(var list1=new morpheus.DatasetRowView(dataset),list2=new morpheus.DatasetRowView(dataset),i=1;n>i;i++){list1.setIndex(i);for(var j=0;i>j;j++)matrix[i][j]=distanceFunction(list1,list2.setIndex(j))}return matrix},morpheus.HCluster.treeSort=function(nNodes,order,nodeorder,nodecounts,tree){var i,nElements=nNodes+1,neworder=[],clusterids=[];for(i=0;nElements>i;i++)clusterids[i]=i,neworder[i]=0;for(i=0;nNodes>i;i++){var i1=tree[i].left,i2=tree[i].right,order1=0>i1?nodeorder[-i1-1]:order[i1],order2=0>i2?nodeorder[-i2-1]:order[i2],count1=0>i1?nodecounts[-i1-1]:1,count2=0>i2?nodecounts[-i2-1]:1;if(i2>i1){var j,increase=order2>order1?count1:count2;for(j=0;nElements>j;j++){var clusterid=clusterids[j];clusterid==i1&&order1>=order2&&(neworder[j]+=increase),clusterid==i2&&order2>order1&&(neworder[j]+=increase),clusterid!=i1&&clusterid!=i2||(clusterids[j]=-i-1)}}else{var j,increase=order2>=order1?count1:count2;for(j=0;nElements>j;j++){var clusterid=clusterids[j];clusterid==i1&&order1>order2&&(neworder[j]+=increase),clusterid==i2&&order2>=order1&&(neworder[j]+=increase),clusterid!=i1&&clusterid!=i2||(clusterids[j]=-i-1)}}}return morpheus.Util.indexSort(neworder,!0)},morpheus.HClusterGroupBy=function(dataset,groupByFieldNames,distanceFunction,linkageMethod){var vectors=(dataset.getRowMetadata(),morpheus.MetadataUtil.getVectors(dataset.getRowMetadata(),groupByFieldNames)),idToIndices=morpheus.VectorUtil.createValuesToIndicesMap(vectors),reorderedIndices=[],offset=0,root={id:-1,children:[],height:0},tree={maxHeight:0,rootNode:root,leafNodes:[],nLeafNodes:0};idToIndices.forEach(function(rowIndices,id){var hcl,originalIndicesForGroup=idToIndices.get(id),subset=morpheus.DatasetUtil.slicedView(dataset,originalIndicesForGroup,null),distanceMatrix=morpheus.HCluster.computeDistanceMatrix(subset,distanceFunction);hcl=new morpheus.HCluster(distanceMatrix,linkageMethod);for(var reorderedGroupIndices=hcl.reorderedIndices,i=0,rows=subset.getRowCount();rows>i;i++){var originalIndex=originalIndicesForGroup[reorderedGroupIndices[i]];reorderedIndices.push(originalIndex)}morpheus.AbstractDendrogram.dfs(hcl.tree.rootNode,function(node){return node.index+=offset,node.minIndex+=offset,node.maxIndex+=offset,node.id+=offset,!0}),0===hcl.tree.leafNodes.length?tree.leafNodes=tree.leafNodes.concat([hcl.tree.rootNode]):tree.leafNodes=tree.leafNodes.concat(hcl.tree.leafNodes),root.children.push(hcl.tree.rootNode),isNaN(hcl.tree.maxHeight)||(tree.maxHeight=Math.max(tree.maxHeight,hcl.tree.maxHeight)),offset+=subset.getRowCount()}),tree.nLeafNodes=tree.leafNodes.length,tree.rootNode.height=tree.maxHeight,this.tree=tree,this.reorderedIndices=reorderedIndices},morpheus.PermutationPValues=function(dataset,aIndices,bIndices,numPermutations,f){for(var numRows=dataset.getRowCount(),scores=new Float32Array(numRows),smoothPValues=!0,list1=new morpheus.DatasetRowView(new morpheus.SlicedDatasetView(dataset,null,aIndices)),list2=new morpheus.DatasetRowView(new morpheus.SlicedDatasetView(dataset,null,bIndices)),i=0;numRows>i;i++)scores[i]=f(list1.setIndex(i),list2.setIndex(i));dataset=new morpheus.SlicedDatasetView(dataset,null,aIndices.concat(bIndices));var rowSpecificPValues=new Float32Array(numRows),permuter=new morpheus.UnbalancedPermuter(aIndices.length,bIndices.length),permutationScore=new morpheus.TwoClassPermutationScore;permutationScore.init(dataset,f);for(var permutationIndex=0;numPermutations>permutationIndex;permutationIndex++){permutationScore.setPermutation(permuter.next());for(var i=0;numRows>i;i++){var permutedScore=permutationScore.getScore(i),score=scores[i];permutedScore>=score&&rowSpecificPValues[i]++}}for(var N=numPermutations,kArray=new Uint32Array(numRows),i=0;numRows>i;i++){var k=rowSpecificPValues[i];kArray[i]=k;var p;p=smoothPValues?(k+1)/(N+2):k/N;var oneMinusP=1-p;if(p>oneMinusP&&(p=oneMinusP),p*=2,0===p){for(var val=dataset.getValue(i,0),flat=!0,j=1,cols=dataset.getColumnCount();cols>j&♭j++)dataset.getValue(i,j)!=val&&(flat=!1);flat&&(p=1)}rowSpecificPValues[i]=p}this.rowSpecificPValues=rowSpecificPValues,this.k=kArray,this.fdr=morpheus.FDR_BH(rowSpecificPValues),this.scores=scores},morpheus.PermutationPValues.prototype={getBonferroni:function(index){return Math.min(this.rowSpecificPValues[index]*this.numRows,1)}},morpheus.UnbalancedPermuter=function(numClassZero,numClassOne){function getRandomIntInclusive(min,max){return Math.floor(Math.random()*(max-min+1))+min}for(var assignments=new Uint32Array(numClassZero+numClassOne),indices=new Uint32Array(numClassZero+numClassOne),i=0;i=1;i--){var j=getRandomIntInclusive(0,i),tmp=indices[j];indices[j]=indices[i],indices[i]=tmp}for(var i=0;n>i;i++)assignments[i]=0;for(var i=0;numClassOne>i;i++)assignments[indices[i]]=1;return assignments}},morpheus.TwoClassPermutationScore=function(){this.classZeroView=null,this.classOneView=null},morpheus.TwoClassPermutationScore.prototype={getScore:function(index){return this.classZeroView.setIndex(index),this.classOneView.setIndex(index),this.f(this.classZeroView,this.classOneView)},init:function(dataset,f){this.dataset=dataset,this.classZeroView=new morpheus.DatasetRowView(dataset),this.classOneView=new morpheus.DatasetRowView(dataset),this.f=f},setPermutation:function(permutedAssignments){for(var zeroIndices=[],oneIndices=[],i=0,length=permutedAssignments.length;length>i;i++)0===permutedAssignments[i]?zeroIndices.push(i):oneIndices.push(i);this.classZeroView.setDataset(new morpheus.SlicedDatasetView(this.dataset,null,zeroIndices)),this.classOneView.setDataset(new morpheus.SlicedDatasetView(this.dataset,null,oneIndices))}},morpheus.Ranking=function(values){for(var ranks=[],i=0,length=values.length;length>i;i++)ranks.push({value:values[i],position:i});if(0===ranks.length)return[];ranks.sort(function(a,b){return a.valueranks[i-1].value?(pos=i+1,tiesTrace.length>1&&morpheus.Ranking.fillAverage(out,tiesTrace),tiesTrace=[],tiesTrace.push(ranks[i].position)):tiesTrace.push(ranks[i].position),out[ranks[i].position]=pos;return tiesTrace.length>1&&morpheus.Ranking.fillAverage(out,tiesTrace),out},morpheus.Ranking.fill=function(data,tiesTrace,value){for(var i=0,length=tiesTrace.length;length>i;i++)data[tiesTrace[i]]=value},morpheus.Ranking.fillAverage=function(ranks,tiesTrace){var c=ranks[tiesTrace[0]],length=tiesTrace.length;morpheus.Ranking.fill(ranks,tiesTrace,(2*c+length-1)/2)},morpheus.SingleLinkage=function(nelements,distmatrix){var i,j,k,nnodes=nelements-1,temp=[],index=[],vector=[],result=[];for(i=0;nelements>i;i++)result[i]={left:0,right:0,distance:0};for(i=0;nnodes>i;i++)vector[i]=i;for(i=0;nelements>i;i++){for(result[i].distance=Number.MAX_VALUE,j=0;i>j;j++)temp[j]=distmatrix[i][j];for(j=0;i>j;j++)k=vector[j],result[j].distance>=temp[j]?(result[j].distancej;j++)result[j].distance>=result[vector[j]].distance&&(vector[j]=i)}for(i=0;nnodes>i;i++)result[i].left=i;for(result.sort(function(node1,node2){var term1=node1.distance,term2=node2.distance;return term2>term1?-1:term1>term2?1:0}),i=0;nelements>i;i++)index[i]=i;for(i=0;nnodes>i;i++)j=result[i].left,k=vector[j],result[i].left=index[j],result[i].right=index[k],index[k]=-i-1;var result2=[];for(i=0;nelements-1>i;i++)result2[i]=result[i];return result2}; \ No newline at end of file