17043 lines
884 KiB
HTML
17043 lines
884 KiB
HTML
<!DOCTYPE HTML>
|
||
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Get Started With The A* Pathfinding Project - A* Pathfinding Project</title>
|
||
<style>/*!
|
||
* Bootstrap v3.3.5 (http://getbootstrap.com)
|
||
* Copyright 2011-2015 Twitter, Inc.
|
||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||
*/
|
||
|
||
/*!
|
||
* Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=ca1d29b8c16a782c676c)
|
||
* Config saved to config.json and https://gist.github.com/ca1d29b8c16a782c676c
|
||
*/
|
||
/*!
|
||
* Bootstrap v3.3.5 (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;
|
||
-ms-text-size-adjust: 100%;
|
||
-webkit-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: bold;
|
||
}
|
||
dfn {
|
||
font-style: italic;
|
||
}
|
||
h1 {
|
||
font-size: 2em;
|
||
margin: 0.67em 0;
|
||
}
|
||
mark {
|
||
background: #ff0;
|
||
color: #000;
|
||
}
|
||
small {
|
||
font-size: 80%;
|
||
}
|
||
sub,
|
||
sup {
|
||
font-size: 75%;
|
||
line-height: 0;
|
||
position: relative;
|
||
vertical-align: baseline;
|
||
}
|
||
sup {
|
||
top: -0.5em;
|
||
}
|
||
sub {
|
||
bottom: -0.25em;
|
||
}
|
||
img {
|
||
border: 0;
|
||
}
|
||
svg:not(:root) {
|
||
overflow: hidden;
|
||
}
|
||
figure {
|
||
margin: 1em 40px;
|
||
}
|
||
hr {
|
||
-webkit-box-sizing: content-box;
|
||
-moz-box-sizing: content-box;
|
||
box-sizing: content-box;
|
||
height: 0;
|
||
}
|
||
pre {
|
||
overflow: auto;
|
||
}
|
||
code,
|
||
kbd,
|
||
pre,
|
||
samp {
|
||
font-family: monospace, monospace;
|
||
font-size: 1em;
|
||
}
|
||
button,
|
||
input,
|
||
optgroup,
|
||
select,
|
||
textarea {
|
||
color: inherit;
|
||
font: inherit;
|
||
margin: 0;
|
||
}
|
||
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 {
|
||
border: 0;
|
||
padding: 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-appearance: textfield;
|
||
-webkit-box-sizing: content-box;
|
||
-moz-box-sizing: content-box;
|
||
box-sizing: content-box;
|
||
}
|
||
input[type="search"]::-webkit-search-cancel-button,
|
||
input[type="search"]::-webkit-search-decoration {
|
||
-webkit-appearance: none;
|
||
}
|
||
fieldset {
|
||
border: 1px solid #c0c0c0;
|
||
margin: 0 2px;
|
||
padding: 0.35em 0.625em 0.75em;
|
||
}
|
||
legend {
|
||
border: 0;
|
||
padding: 0;
|
||
}
|
||
textarea {
|
||
overflow: auto;
|
||
}
|
||
optgroup {
|
||
font-weight: bold;
|
||
}
|
||
table {
|
||
border-collapse: collapse;
|
||
border-spacing: 0;
|
||
}
|
||
td,
|
||
th {
|
||
padding: 0;
|
||
}
|
||
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
|
||
@media print {
|
||
*,
|
||
*:before,
|
||
*:after {
|
||
background: transparent !important;
|
||
color: #000 !important;
|
||
-webkit-box-shadow: none !important;
|
||
box-shadow: none !important;
|
||
text-shadow: none !important;
|
||
}
|
||
a,
|
||
a:visited {
|
||
text-decoration: underline;
|
||
}
|
||
a[href]:after {
|
||
content: " (" attr(href) ")";
|
||
}
|
||
abbr[title]:after {
|
||
content: " (" attr(title) ")";
|
||
}
|
||
a[href^="#"]:after,
|
||
a[href^="javascript:"]:after {
|
||
content: "";
|
||
}
|
||
pre,
|
||
blockquote {
|
||
border: 1px solid #999;
|
||
page-break-inside: avoid;
|
||
}
|
||
thead {
|
||
display: table-header-group;
|
||
}
|
||
tr,
|
||
img {
|
||
page-break-inside: avoid;
|
||
}
|
||
img {
|
||
max-width: 100% !important;
|
||
}
|
||
p,
|
||
h2,
|
||
h3 {
|
||
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 th,
|
||
.table-bordered td {
|
||
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: normal;
|
||
line-height: 1;
|
||
-webkit-font-smoothing: antialiased;
|
||
-moz-osx-font-smoothing: grayscale;
|
||
}
|
||
.glyphicon-asterisk:before {
|
||
content: "\2a";
|
||
}
|
||
.glyphicon-plus:before {
|
||
content: "\2b";
|
||
}
|
||
.glyphicon-euro:before,
|
||
.glyphicon-eur: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;
|
||
}
|
||
*:before,
|
||
*:after {
|
||
-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: #333333;
|
||
background-color: #ffffff;
|
||
}
|
||
input,
|
||
button,
|
||
select,
|
||
textarea {
|
||
font-family: inherit;
|
||
font-size: inherit;
|
||
line-height: inherit;
|
||
}
|
||
a {
|
||
color: #337ab7;
|
||
text-decoration: none;
|
||
}
|
||
a:hover,
|
||
a:focus {
|
||
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;
|
||
}
|
||
.img-responsive,
|
||
.thumbnail > img,
|
||
.thumbnail a > img,
|
||
.carousel-inner > .item > img,
|
||
.carousel-inner > .item > a > img {
|
||
display: block;
|
||
max-width: 100%;
|
||
height: auto;
|
||
}
|
||
.img-rounded {
|
||
border-radius: 6px;
|
||
}
|
||
.img-thumbnail {
|
||
padding: 4px;
|
||
line-height: 1.42857143;
|
||
background-color: #ffffff;
|
||
border: 1px solid #dddddd;
|
||
border-radius: 4px;
|
||
-webkit-transition: all 0.2s ease-in-out;
|
||
-o-transition: all 0.2s ease-in-out;
|
||
transition: all 0.2s ease-in-out;
|
||
display: inline-block;
|
||
max-width: 100%;
|
||
height: auto;
|
||
}
|
||
.img-circle {
|
||
border-radius: 50%;
|
||
}
|
||
hr {
|
||
margin-top: 20px;
|
||
margin-bottom: 20px;
|
||
border: 0;
|
||
border-top: 1px solid #eeeeee;
|
||
}
|
||
.sr-only {
|
||
position: absolute;
|
||
width: 1px;
|
||
height: 1px;
|
||
margin: -1px;
|
||
padding: 0;
|
||
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,
|
||
h2 small,
|
||
h3 small,
|
||
h4 small,
|
||
h5 small,
|
||
h6 small,
|
||
.h1 small,
|
||
.h2 small,
|
||
.h3 small,
|
||
.h4 small,
|
||
.h5 small,
|
||
.h6 small,
|
||
h1 .small,
|
||
h2 .small,
|
||
h3 .small,
|
||
h4 .small,
|
||
h5 .small,
|
||
h6 .small,
|
||
.h1 .small,
|
||
.h2 .small,
|
||
.h3 .small,
|
||
.h4 .small,
|
||
.h5 .small,
|
||
.h6 .small {
|
||
font-weight: normal;
|
||
line-height: 1;
|
||
color: #777777;
|
||
}
|
||
h1,
|
||
.h1,
|
||
h2,
|
||
.h2,
|
||
h3,
|
||
.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,
|
||
.h4,
|
||
h5,
|
||
.h5,
|
||
h6,
|
||
.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 {
|
||
background-color: #fcf8e3;
|
||
padding: .2em;
|
||
}
|
||
.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: #777777;
|
||
}
|
||
.text-primary {
|
||
color: #337ab7;
|
||
}
|
||
a.text-primary:hover,
|
||
a.text-primary:focus {
|
||
color: #286090;
|
||
}
|
||
.text-success {
|
||
color: #3c763d;
|
||
}
|
||
a.text-success:hover,
|
||
a.text-success:focus {
|
||
color: #2b542c;
|
||
}
|
||
.text-info {
|
||
color: #31708f;
|
||
}
|
||
a.text-info:hover,
|
||
a.text-info:focus {
|
||
color: #245269;
|
||
}
|
||
.text-warning {
|
||
color: #8a6d3b;
|
||
}
|
||
a.text-warning:hover,
|
||
a.text-warning:focus {
|
||
color: #66512c;
|
||
}
|
||
.text-danger {
|
||
color: #a94442;
|
||
}
|
||
a.text-danger:hover,
|
||
a.text-danger:focus {
|
||
color: #843534;
|
||
}
|
||
.bg-primary {
|
||
color: #fff;
|
||
background-color: #337ab7;
|
||
}
|
||
a.bg-primary:hover,
|
||
a.bg-primary:focus {
|
||
background-color: #286090;
|
||
}
|
||
.bg-success {
|
||
background-color: #dff0d8;
|
||
}
|
||
a.bg-success:hover,
|
||
a.bg-success:focus {
|
||
background-color: #c1e2b3;
|
||
}
|
||
.bg-info {
|
||
background-color: #d9edf7;
|
||
}
|
||
a.bg-info:hover,
|
||
a.bg-info:focus {
|
||
background-color: #afd9ee;
|
||
}
|
||
.bg-warning {
|
||
background-color: #fcf8e3;
|
||
}
|
||
a.bg-warning:hover,
|
||
a.bg-warning:focus {
|
||
background-color: #f7ecb5;
|
||
}
|
||
.bg-danger {
|
||
background-color: #f2dede;
|
||
}
|
||
a.bg-danger:hover,
|
||
a.bg-danger:focus {
|
||
background-color: #e4b9b9;
|
||
}
|
||
.page-header {
|
||
padding-bottom: 9px;
|
||
margin: 40px 0 20px;
|
||
border-bottom: 1px solid #eeeeee;
|
||
}
|
||
ul,
|
||
ol {
|
||
margin-top: 0;
|
||
margin-bottom: 10px;
|
||
}
|
||
ul ul,
|
||
ol ul,
|
||
ul ol,
|
||
ol ol {
|
||
margin-bottom: 0;
|
||
}
|
||
.list-unstyled {
|
||
padding-left: 0;
|
||
list-style: none;
|
||
}
|
||
.list-inline {
|
||
padding-left: 0;
|
||
list-style: none;
|
||
margin-left: -5px;
|
||
}
|
||
.list-inline > li {
|
||
display: inline-block;
|
||
padding-left: 5px;
|
||
padding-right: 5px;
|
||
}
|
||
dl {
|
||
margin-top: 0;
|
||
margin-bottom: 20px;
|
||
}
|
||
dt,
|
||
dd {
|
||
line-height: 1.42857143;
|
||
}
|
||
dt {
|
||
font-weight: bold;
|
||
}
|
||
dd {
|
||
margin-left: 0;
|
||
}
|
||
@media (min-width: 768px) {
|
||
.dl-horizontal dt {
|
||
float: left;
|
||
width: 160px;
|
||
clear: left;
|
||
text-align: right;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
}
|
||
.dl-horizontal dd {
|
||
margin-left: 180px;
|
||
}
|
||
}
|
||
abbr[title],
|
||
abbr[data-original-title] {
|
||
cursor: help;
|
||
border-bottom: 1px dotted #777777;
|
||
}
|
||
.initialism {
|
||
font-size: 90%;
|
||
text-transform: uppercase;
|
||
}
|
||
blockquote {
|
||
padding: 10px 20px;
|
||
margin: 0 0 20px;
|
||
font-size: 17.5px;
|
||
border-left: 5px solid #eeeeee;
|
||
}
|
||
blockquote p:last-child,
|
||
blockquote ul:last-child,
|
||
blockquote ol:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
blockquote footer,
|
||
blockquote small,
|
||
blockquote .small {
|
||
display: block;
|
||
font-size: 80%;
|
||
line-height: 1.42857143;
|
||
color: #777777;
|
||
}
|
||
blockquote footer:before,
|
||
blockquote small:before,
|
||
blockquote .small:before {
|
||
content: '\2014 \00A0';
|
||
}
|
||
.blockquote-reverse,
|
||
blockquote.pull-right {
|
||
padding-right: 15px;
|
||
padding-left: 0;
|
||
border-right: 5px solid #eeeeee;
|
||
border-left: 0;
|
||
text-align: right;
|
||
}
|
||
.blockquote-reverse footer:before,
|
||
blockquote.pull-right footer:before,
|
||
.blockquote-reverse small:before,
|
||
blockquote.pull-right small:before,
|
||
.blockquote-reverse .small:before,
|
||
blockquote.pull-right .small:before {
|
||
content: '';
|
||
}
|
||
.blockquote-reverse footer:after,
|
||
blockquote.pull-right footer:after,
|
||
.blockquote-reverse small:after,
|
||
blockquote.pull-right small:after,
|
||
.blockquote-reverse .small: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: #ffffff;
|
||
background-color: #333333;
|
||
border-radius: 3px;
|
||
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||
}
|
||
kbd kbd {
|
||
padding: 0;
|
||
font-size: 100%;
|
||
font-weight: bold;
|
||
-webkit-box-shadow: none;
|
||
box-shadow: none;
|
||
}
|
||
pre {
|
||
display: block;
|
||
padding: 9.5px;
|
||
margin: 0 0 10px;
|
||
font-size: 13px;
|
||
line-height: 1.42857143;
|
||
word-break: break-all;
|
||
word-wrap: break-word;
|
||
color: #333333;
|
||
background-color: #f5f5f5;
|
||
border: 1px solid #cccccc;
|
||
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 {
|
||
margin-right: auto;
|
||
margin-left: auto;
|
||
padding-left: 15px;
|
||
padding-right: 15px;
|
||
}
|
||
@media (min-width: 768px) {
|
||
.container {
|
||
width: 750px;
|
||
}
|
||
}
|
||
@media (min-width: 992px) {
|
||
.container {
|
||
width: 970px;
|
||
}
|
||
}
|
||
@media (min-width: 1200px) {
|
||
.container {
|
||
width: 1170px;
|
||
}
|
||
}
|
||
.container-fluid {
|
||
margin-right: auto;
|
||
margin-left: auto;
|
||
padding-left: 15px;
|
||
padding-right: 15px;
|
||
}
|
||
.row {
|
||
margin-left: -15px;
|
||
margin-right: -15px;
|
||
}
|
||
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
|
||
position: relative;
|
||
min-height: 1px;
|
||
padding-left: 15px;
|
||
padding-right: 15px;
|
||
}
|
||
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
|
||
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-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
|
||
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-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
|
||
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-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
|
||
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: #777777;
|
||
text-align: left;
|
||
}
|
||
th {
|
||
text-align: left;
|
||
}
|
||
.table {
|
||
width: 100%;
|
||
max-width: 100%;
|
||
margin-bottom: 20px;
|
||
}
|
||
.table > thead > tr > th,
|
||
.table > tbody > tr > th,
|
||
.table > tfoot > tr > th,
|
||
.table > thead > tr > td,
|
||
.table > tbody > tr > td,
|
||
.table > tfoot > tr > td {
|
||
padding: 8px;
|
||
line-height: 1.42857143;
|
||
vertical-align: top;
|
||
border-top: 1px solid #dddddd;
|
||
}
|
||
.table > thead > tr > th {
|
||
vertical-align: bottom;
|
||
border-bottom: 2px solid #dddddd;
|
||
}
|
||
.table > caption + thead > tr:first-child > th,
|
||
.table > colgroup + thead > tr:first-child > th,
|
||
.table > thead:first-child > tr:first-child > th,
|
||
.table > caption + thead > tr:first-child > td,
|
||
.table > colgroup + thead > tr:first-child > td,
|
||
.table > thead:first-child > tr:first-child > td {
|
||
border-top: 0;
|
||
}
|
||
.table > tbody + tbody {
|
||
border-top: 2px solid #dddddd;
|
||
}
|
||
.table .table {
|
||
background-color: #ffffff;
|
||
}
|
||
.table-condensed > thead > tr > th,
|
||
.table-condensed > tbody > tr > th,
|
||
.table-condensed > tfoot > tr > th,
|
||
.table-condensed > thead > tr > td,
|
||
.table-condensed > tbody > tr > td,
|
||
.table-condensed > tfoot > tr > td {
|
||
padding: 5px;
|
||
}
|
||
.table-bordered {
|
||
border: 1px solid #dddddd;
|
||
}
|
||
.table-bordered > thead > tr > th,
|
||
.table-bordered > tbody > tr > th,
|
||
.table-bordered > tfoot > tr > th,
|
||
.table-bordered > thead > tr > td,
|
||
.table-bordered > tbody > tr > td,
|
||
.table-bordered > tfoot > tr > td {
|
||
border: 1px solid #dddddd;
|
||
}
|
||
.table-bordered > thead > tr > th,
|
||
.table-bordered > thead > tr > td {
|
||
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;
|
||
float: none;
|
||
display: table-column;
|
||
}
|
||
table td[class*="col-"],
|
||
table th[class*="col-"] {
|
||
position: static;
|
||
float: none;
|
||
display: table-cell;
|
||
}
|
||
.table > thead > tr > td.active,
|
||
.table > tbody > tr > td.active,
|
||
.table > tfoot > tr > td.active,
|
||
.table > thead > tr > th.active,
|
||
.table > tbody > tr > th.active,
|
||
.table > tfoot > tr > th.active,
|
||
.table > thead > tr.active > td,
|
||
.table > tbody > tr.active > td,
|
||
.table > tfoot > tr.active > td,
|
||
.table > thead > tr.active > th,
|
||
.table > tbody > tr.active > th,
|
||
.table > tfoot > tr.active > th {
|
||
background-color: #f5f5f5;
|
||
}
|
||
.table-hover > tbody > tr > td.active:hover,
|
||
.table-hover > tbody > tr > th.active:hover,
|
||
.table-hover > tbody > tr.active:hover > td,
|
||
.table-hover > tbody > tr:hover > .active,
|
||
.table-hover > tbody > tr.active:hover > th {
|
||
background-color: #e8e8e8;
|
||
}
|
||
.table > thead > tr > td.success,
|
||
.table > tbody > tr > td.success,
|
||
.table > tfoot > tr > td.success,
|
||
.table > thead > tr > th.success,
|
||
.table > tbody > tr > th.success,
|
||
.table > tfoot > tr > th.success,
|
||
.table > thead > tr.success > td,
|
||
.table > tbody > tr.success > td,
|
||
.table > tfoot > tr.success > td,
|
||
.table > thead > tr.success > th,
|
||
.table > tbody > tr.success > th,
|
||
.table > tfoot > tr.success > th {
|
||
background-color: #dff0d8;
|
||
}
|
||
.table-hover > tbody > tr > td.success:hover,
|
||
.table-hover > tbody > tr > th.success:hover,
|
||
.table-hover > tbody > tr.success:hover > td,
|
||
.table-hover > tbody > tr:hover > .success,
|
||
.table-hover > tbody > tr.success:hover > th {
|
||
background-color: #d0e9c6;
|
||
}
|
||
.table > thead > tr > td.info,
|
||
.table > tbody > tr > td.info,
|
||
.table > tfoot > tr > td.info,
|
||
.table > thead > tr > th.info,
|
||
.table > tbody > tr > th.info,
|
||
.table > tfoot > tr > th.info,
|
||
.table > thead > tr.info > td,
|
||
.table > tbody > tr.info > td,
|
||
.table > tfoot > tr.info > td,
|
||
.table > thead > tr.info > th,
|
||
.table > tbody > tr.info > th,
|
||
.table > tfoot > tr.info > th {
|
||
background-color: #d9edf7;
|
||
}
|
||
.table-hover > tbody > tr > td.info:hover,
|
||
.table-hover > tbody > tr > th.info:hover,
|
||
.table-hover > tbody > tr.info:hover > td,
|
||
.table-hover > tbody > tr:hover > .info,
|
||
.table-hover > tbody > tr.info:hover > th {
|
||
background-color: #c4e3f3;
|
||
}
|
||
.table > thead > tr > td.warning,
|
||
.table > tbody > tr > td.warning,
|
||
.table > tfoot > tr > td.warning,
|
||
.table > thead > tr > th.warning,
|
||
.table > tbody > tr > th.warning,
|
||
.table > tfoot > tr > th.warning,
|
||
.table > thead > tr.warning > td,
|
||
.table > tbody > tr.warning > td,
|
||
.table > tfoot > tr.warning > td,
|
||
.table > thead > tr.warning > th,
|
||
.table > tbody > tr.warning > th,
|
||
.table > tfoot > tr.warning > th {
|
||
background-color: #fcf8e3;
|
||
}
|
||
.table-hover > tbody > tr > td.warning:hover,
|
||
.table-hover > tbody > tr > th.warning:hover,
|
||
.table-hover > tbody > tr.warning:hover > td,
|
||
.table-hover > tbody > tr:hover > .warning,
|
||
.table-hover > tbody > tr.warning:hover > th {
|
||
background-color: #faf2cc;
|
||
}
|
||
.table > thead > tr > td.danger,
|
||
.table > tbody > tr > td.danger,
|
||
.table > tfoot > tr > td.danger,
|
||
.table > thead > tr > th.danger,
|
||
.table > tbody > tr > th.danger,
|
||
.table > tfoot > tr > th.danger,
|
||
.table > thead > tr.danger > td,
|
||
.table > tbody > tr.danger > td,
|
||
.table > tfoot > tr.danger > td,
|
||
.table > thead > tr.danger > th,
|
||
.table > tbody > tr.danger > th,
|
||
.table > tfoot > tr.danger > th {
|
||
background-color: #f2dede;
|
||
}
|
||
.table-hover > tbody > tr > td.danger:hover,
|
||
.table-hover > tbody > tr > th.danger:hover,
|
||
.table-hover > tbody > tr.danger:hover > td,
|
||
.table-hover > tbody > tr:hover > .danger,
|
||
.table-hover > tbody > tr.danger:hover > th {
|
||
background-color: #ebcccc;
|
||
}
|
||
.table-responsive {
|
||
overflow-x: auto;
|
||
min-height: 0.01%;
|
||
}
|
||
@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 #dddddd;
|
||
}
|
||
.table-responsive > .table {
|
||
margin-bottom: 0;
|
||
}
|
||
.table-responsive > .table > thead > tr > th,
|
||
.table-responsive > .table > tbody > tr > th,
|
||
.table-responsive > .table > tfoot > tr > th,
|
||
.table-responsive > .table > thead > tr > td,
|
||
.table-responsive > .table > tbody > tr > td,
|
||
.table-responsive > .table > tfoot > tr > td {
|
||
white-space: nowrap;
|
||
}
|
||
.table-responsive > .table-bordered {
|
||
border: 0;
|
||
}
|
||
.table-responsive > .table-bordered > thead > tr > th:first-child,
|
||
.table-responsive > .table-bordered > tbody > tr > th:first-child,
|
||
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
|
||
.table-responsive > .table-bordered > thead > tr > td:first-child,
|
||
.table-responsive > .table-bordered > tbody > tr > td:first-child,
|
||
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
|
||
border-left: 0;
|
||
}
|
||
.table-responsive > .table-bordered > thead > tr > th:last-child,
|
||
.table-responsive > .table-bordered > tbody > tr > th:last-child,
|
||
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
|
||
.table-responsive > .table-bordered > thead > tr > td:last-child,
|
||
.table-responsive > .table-bordered > tbody > tr > td:last-child,
|
||
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
|
||
border-right: 0;
|
||
}
|
||
.table-responsive > .table-bordered > tbody > tr:last-child > th,
|
||
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
|
||
.table-responsive > .table-bordered > tbody > tr:last-child > td,
|
||
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
|
||
border-bottom: 0;
|
||
}
|
||
}
|
||
fieldset {
|
||
padding: 0;
|
||
margin: 0;
|
||
border: 0;
|
||
min-width: 0;
|
||
}
|
||
legend {
|
||
display: block;
|
||
width: 100%;
|
||
padding: 0;
|
||
margin-bottom: 20px;
|
||
font-size: 21px;
|
||
line-height: inherit;
|
||
color: #333333;
|
||
border: 0;
|
||
border-bottom: 1px solid #e5e5e5;
|
||
}
|
||
label {
|
||
display: inline-block;
|
||
max-width: 100%;
|
||
margin-bottom: 5px;
|
||
font-weight: bold;
|
||
}
|
||
input[type="search"] {
|
||
-webkit-box-sizing: border-box;
|
||
-moz-box-sizing: border-box;
|
||
box-sizing: border-box;
|
||
}
|
||
input[type="radio"],
|
||
input[type="checkbox"] {
|
||
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="radio"]:focus,
|
||
input[type="checkbox"]: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: #555555;
|
||
}
|
||
.form-control {
|
||
display: block;
|
||
width: 100%;
|
||
height: 34px;
|
||
padding: 6px 12px;
|
||
font-size: 14px;
|
||
line-height: 1.42857143;
|
||
color: #555555;
|
||
background-color: #ffffff;
|
||
background-image: none;
|
||
border: 1px solid #cccccc;
|
||
border-radius: 4px;
|
||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||
box-shadow: inset 0 1px 1px rgba(0, 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, 0.6);
|
||
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
|
||
}
|
||
.form-control::-moz-placeholder {
|
||
color: #999999;
|
||
opacity: 1;
|
||
}
|
||
.form-control:-ms-input-placeholder {
|
||
color: #999999;
|
||
}
|
||
.form-control::-webkit-input-placeholder {
|
||
color: #999999;
|
||
}
|
||
.form-control[disabled],
|
||
.form-control[readonly],
|
||
fieldset[disabled] .form-control {
|
||
background-color: #eeeeee;
|
||
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[type="date"].input-sm,
|
||
input[type="time"].input-sm,
|
||
input[type="datetime-local"].input-sm,
|
||
input[type="month"].input-sm,
|
||
.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"] {
|
||
line-height: 30px;
|
||
}
|
||
input[type="date"].input-lg,
|
||
input[type="time"].input-lg,
|
||
input[type="datetime-local"].input-lg,
|
||
input[type="month"].input-lg,
|
||
.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"] {
|
||
line-height: 46px;
|
||
}
|
||
}
|
||
.form-group {
|
||
margin-bottom: 15px;
|
||
}
|
||
.radio,
|
||
.checkbox {
|
||
position: relative;
|
||
display: block;
|
||
margin-top: 10px;
|
||
margin-bottom: 10px;
|
||
}
|
||
.radio label,
|
||
.checkbox label {
|
||
min-height: 20px;
|
||
padding-left: 20px;
|
||
margin-bottom: 0;
|
||
font-weight: normal;
|
||
cursor: pointer;
|
||
}
|
||
.radio input[type="radio"],
|
||
.radio-inline input[type="radio"],
|
||
.checkbox input[type="checkbox"],
|
||
.checkbox-inline input[type="checkbox"] {
|
||
position: absolute;
|
||
margin-left: -20px;
|
||
margin-top: 4px \9;
|
||
}
|
||
.radio + .radio,
|
||
.checkbox + .checkbox {
|
||
margin-top: -5px;
|
||
}
|
||
.radio-inline,
|
||
.checkbox-inline {
|
||
position: relative;
|
||
display: inline-block;
|
||
padding-left: 20px;
|
||
margin-bottom: 0;
|
||
vertical-align: middle;
|
||
font-weight: normal;
|
||
cursor: pointer;
|
||
}
|
||
.radio-inline + .radio-inline,
|
||
.checkbox-inline + .checkbox-inline {
|
||
margin-top: 0;
|
||
margin-left: 10px;
|
||
}
|
||
input[type="radio"][disabled],
|
||
input[type="checkbox"][disabled],
|
||
input[type="radio"].disabled,
|
||
input[type="checkbox"].disabled,
|
||
fieldset[disabled] input[type="radio"],
|
||
fieldset[disabled] input[type="checkbox"] {
|
||
cursor: not-allowed;
|
||
}
|
||
.radio-inline.disabled,
|
||
.checkbox-inline.disabled,
|
||
fieldset[disabled] .radio-inline,
|
||
fieldset[disabled] .checkbox-inline {
|
||
cursor: not-allowed;
|
||
}
|
||
.radio.disabled label,
|
||
.checkbox.disabled label,
|
||
fieldset[disabled] .radio label,
|
||
fieldset[disabled] .checkbox label {
|
||
cursor: not-allowed;
|
||
}
|
||
.form-control-static {
|
||
padding-top: 7px;
|
||
padding-bottom: 7px;
|
||
margin-bottom: 0;
|
||
min-height: 34px;
|
||
}
|
||
.form-control-static.input-lg,
|
||
.form-control-static.input-sm {
|
||
padding-left: 0;
|
||
padding-right: 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;
|
||
}
|
||
textarea.input-sm,
|
||
select[multiple].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 textarea.form-control,
|
||
.form-group-sm select[multiple].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;
|
||
}
|
||
textarea.input-lg,
|
||
select[multiple].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 textarea.form-control,
|
||
.form-group-lg select[multiple].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;
|
||
}
|
||
.input-lg + .form-control-feedback,
|
||
.input-group-lg + .form-control-feedback,
|
||
.form-group-lg .form-control + .form-control-feedback {
|
||
width: 46px;
|
||
height: 46px;
|
||
line-height: 46px;
|
||
}
|
||
.input-sm + .form-control-feedback,
|
||
.input-group-sm + .form-control-feedback,
|
||
.form-group-sm .form-control + .form-control-feedback {
|
||
width: 30px;
|
||
height: 30px;
|
||
line-height: 30px;
|
||
}
|
||
.has-success .help-block,
|
||
.has-success .control-label,
|
||
.has-success .radio,
|
||
.has-success .checkbox,
|
||
.has-success .radio-inline,
|
||
.has-success .checkbox-inline,
|
||
.has-success.radio label,
|
||
.has-success.checkbox label,
|
||
.has-success.radio-inline label,
|
||
.has-success.checkbox-inline label {
|
||
color: #3c763d;
|
||
}
|
||
.has-success .form-control {
|
||
border-color: #3c763d;
|
||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||
}
|
||
.has-success .form-control:focus {
|
||
border-color: #2b542c;
|
||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
|
||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
|
||
}
|
||
.has-success .input-group-addon {
|
||
color: #3c763d;
|
||
border-color: #3c763d;
|
||
background-color: #dff0d8;
|
||
}
|
||
.has-success .form-control-feedback {
|
||
color: #3c763d;
|
||
}
|
||
.has-warning .help-block,
|
||
.has-warning .control-label,
|
||
.has-warning .radio,
|
||
.has-warning .checkbox,
|
||
.has-warning .radio-inline,
|
||
.has-warning .checkbox-inline,
|
||
.has-warning.radio label,
|
||
.has-warning.checkbox label,
|
||
.has-warning.radio-inline label,
|
||
.has-warning.checkbox-inline label {
|
||
color: #8a6d3b;
|
||
}
|
||
.has-warning .form-control {
|
||
border-color: #8a6d3b;
|
||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||
}
|
||
.has-warning .form-control:focus {
|
||
border-color: #66512c;
|
||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
|
||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
|
||
}
|
||
.has-warning .input-group-addon {
|
||
color: #8a6d3b;
|
||
border-color: #8a6d3b;
|
||
background-color: #fcf8e3;
|
||
}
|
||
.has-warning .form-control-feedback {
|
||
color: #8a6d3b;
|
||
}
|
||
.has-error .help-block,
|
||
.has-error .control-label,
|
||
.has-error .radio,
|
||
.has-error .checkbox,
|
||
.has-error .radio-inline,
|
||
.has-error .checkbox-inline,
|
||
.has-error.radio label,
|
||
.has-error.checkbox label,
|
||
.has-error.radio-inline label,
|
||
.has-error.checkbox-inline label {
|
||
color: #a94442;
|
||
}
|
||
.has-error .form-control {
|
||
border-color: #a94442;
|
||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||
}
|
||
.has-error .form-control:focus {
|
||
border-color: #843534;
|
||
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
|
||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
|
||
}
|
||
.has-error .input-group-addon {
|
||
color: #a94442;
|
||
border-color: #a94442;
|
||
background-color: #f2dede;
|
||
}
|
||
.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 .input-group-addon,
|
||
.form-inline .input-group .input-group-btn,
|
||
.form-inline .input-group .form-control {
|
||
width: auto;
|
||
}
|
||
.form-inline .input-group > .form-control {
|
||
width: 100%;
|
||
}
|
||
.form-inline .control-label {
|
||
margin-bottom: 0;
|
||
vertical-align: middle;
|
||
}
|
||
.form-inline .radio,
|
||
.form-inline .checkbox {
|
||
display: inline-block;
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
vertical-align: middle;
|
||
}
|
||
.form-inline .radio label,
|
||
.form-inline .checkbox label {
|
||
padding-left: 0;
|
||
}
|
||
.form-inline .radio input[type="radio"],
|
||
.form-inline .checkbox input[type="checkbox"] {
|
||
position: relative;
|
||
margin-left: 0;
|
||
}
|
||
.form-inline .has-feedback .form-control-feedback {
|
||
top: 0;
|
||
}
|
||
}
|
||
.form-horizontal .radio,
|
||
.form-horizontal .checkbox,
|
||
.form-horizontal .radio-inline,
|
||
.form-horizontal .checkbox-inline {
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
padding-top: 7px;
|
||
}
|
||
.form-horizontal .radio,
|
||
.form-horizontal .checkbox {
|
||
min-height: 27px;
|
||
}
|
||
.form-horizontal .form-group {
|
||
margin-left: -15px;
|
||
margin-right: -15px;
|
||
}
|
||
@media (min-width: 768px) {
|
||
.form-horizontal .control-label {
|
||
text-align: right;
|
||
margin-bottom: 0;
|
||
padding-top: 7px;
|
||
}
|
||
}
|
||
.form-horizontal .has-feedback .form-control-feedback {
|
||
right: 15px;
|
||
}
|
||
@media (min-width: 768px) {
|
||
.form-horizontal .form-group-lg .control-label {
|
||
padding-top: 14.333333px;
|
||
font-size: 18px;
|
||
}
|
||
}
|
||
@media (min-width: 768px) {
|
||
.form-horizontal .form-group-sm .control-label {
|
||
padding-top: 6px;
|
||
font-size: 12px;
|
||
}
|
||
}
|
||
.btn {
|
||
display: inline-block;
|
||
margin-bottom: 0;
|
||
font-weight: normal;
|
||
text-align: center;
|
||
vertical-align: middle;
|
||
-ms-touch-action: manipulation;
|
||
touch-action: manipulation;
|
||
cursor: pointer;
|
||
background-image: none;
|
||
border: 1px solid transparent;
|
||
white-space: nowrap;
|
||
padding: 6px 12px;
|
||
font-size: 14px;
|
||
line-height: 1.42857143;
|
||
border-radius: 4px;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
.btn:focus,
|
||
.btn:active:focus,
|
||
.btn.active:focus,
|
||
.btn.focus,
|
||
.btn:active.focus,
|
||
.btn.active.focus {
|
||
outline: thin dotted;
|
||
outline: 5px auto -webkit-focus-ring-color;
|
||
outline-offset: -2px;
|
||
}
|
||
.btn:hover,
|
||
.btn:focus,
|
||
.btn.focus {
|
||
color: #333333;
|
||
text-decoration: none;
|
||
}
|
||
.btn:active,
|
||
.btn.active {
|
||
outline: 0;
|
||
background-image: none;
|
||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||
}
|
||
.btn.disabled,
|
||
.btn[disabled],
|
||
fieldset[disabled] .btn {
|
||
cursor: not-allowed;
|
||
opacity: 0.65;
|
||
filter: alpha(opacity=65);
|
||
-webkit-box-shadow: none;
|
||
box-shadow: none;
|
||
}
|
||
a.btn.disabled,
|
||
fieldset[disabled] a.btn {
|
||
pointer-events: none;
|
||
}
|
||
.btn-default {
|
||
color: #333333;
|
||
background-color: #ffffff;
|
||
border-color: #cccccc;
|
||
}
|
||
.btn-default:focus,
|
||
.btn-default.focus {
|
||
color: #333333;
|
||
background-color: #e6e6e6;
|
||
border-color: #8c8c8c;
|
||
}
|
||
.btn-default:hover {
|
||
color: #333333;
|
||
background-color: #e6e6e6;
|
||
border-color: #adadad;
|
||
}
|
||
.btn-default:active,
|
||
.btn-default.active,
|
||
.open > .dropdown-toggle.btn-default {
|
||
color: #333333;
|
||
background-color: #e6e6e6;
|
||
border-color: #adadad;
|
||
}
|
||
.btn-default:active:hover,
|
||
.btn-default.active:hover,
|
||
.open > .dropdown-toggle.btn-default:hover,
|
||
.btn-default:active:focus,
|
||
.btn-default.active:focus,
|
||
.open > .dropdown-toggle.btn-default:focus,
|
||
.btn-default:active.focus,
|
||
.btn-default.active.focus,
|
||
.open > .dropdown-toggle.btn-default.focus {
|
||
color: #333333;
|
||
background-color: #d4d4d4;
|
||
border-color: #8c8c8c;
|
||
}
|
||
.btn-default:active,
|
||
.btn-default.active,
|
||
.open > .dropdown-toggle.btn-default {
|
||
background-image: none;
|
||
}
|
||
.btn-default.disabled,
|
||
.btn-default[disabled],
|
||
fieldset[disabled] .btn-default,
|
||
.btn-default.disabled:hover,
|
||
.btn-default[disabled]:hover,
|
||
fieldset[disabled] .btn-default:hover,
|
||
.btn-default.disabled:focus,
|
||
.btn-default[disabled]:focus,
|
||
fieldset[disabled] .btn-default:focus,
|
||
.btn-default.disabled.focus,
|
||
.btn-default[disabled].focus,
|
||
fieldset[disabled] .btn-default.focus,
|
||
.btn-default.disabled:active,
|
||
.btn-default[disabled]:active,
|
||
fieldset[disabled] .btn-default:active,
|
||
.btn-default.disabled.active,
|
||
.btn-default[disabled].active,
|
||
fieldset[disabled] .btn-default.active {
|
||
background-color: #ffffff;
|
||
border-color: #cccccc;
|
||
}
|
||
.btn-default .badge {
|
||
color: #ffffff;
|
||
background-color: #333333;
|
||
}
|
||
.btn-primary {
|
||
color: #ffffff;
|
||
background-color: #337ab7;
|
||
border-color: #2e6da4;
|
||
}
|
||
.btn-primary:focus,
|
||
.btn-primary.focus {
|
||
color: #ffffff;
|
||
background-color: #286090;
|
||
border-color: #122b40;
|
||
}
|
||
.btn-primary:hover {
|
||
color: #ffffff;
|
||
background-color: #286090;
|
||
border-color: #204d74;
|
||
}
|
||
.btn-primary:active,
|
||
.btn-primary.active,
|
||
.open > .dropdown-toggle.btn-primary {
|
||
color: #ffffff;
|
||
background-color: #286090;
|
||
border-color: #204d74;
|
||
}
|
||
.btn-primary:active:hover,
|
||
.btn-primary.active:hover,
|
||
.open > .dropdown-toggle.btn-primary:hover,
|
||
.btn-primary:active:focus,
|
||
.btn-primary.active:focus,
|
||
.open > .dropdown-toggle.btn-primary:focus,
|
||
.btn-primary:active.focus,
|
||
.btn-primary.active.focus,
|
||
.open > .dropdown-toggle.btn-primary.focus {
|
||
color: #ffffff;
|
||
background-color: #204d74;
|
||
border-color: #122b40;
|
||
}
|
||
.btn-primary:active,
|
||
.btn-primary.active,
|
||
.open > .dropdown-toggle.btn-primary {
|
||
background-image: none;
|
||
}
|
||
.btn-primary.disabled,
|
||
.btn-primary[disabled],
|
||
fieldset[disabled] .btn-primary,
|
||
.btn-primary.disabled:hover,
|
||
.btn-primary[disabled]:hover,
|
||
fieldset[disabled] .btn-primary:hover,
|
||
.btn-primary.disabled:focus,
|
||
.btn-primary[disabled]:focus,
|
||
fieldset[disabled] .btn-primary:focus,
|
||
.btn-primary.disabled.focus,
|
||
.btn-primary[disabled].focus,
|
||
fieldset[disabled] .btn-primary.focus,
|
||
.btn-primary.disabled:active,
|
||
.btn-primary[disabled]:active,
|
||
fieldset[disabled] .btn-primary:active,
|
||
.btn-primary.disabled.active,
|
||
.btn-primary[disabled].active,
|
||
fieldset[disabled] .btn-primary.active {
|
||
background-color: #337ab7;
|
||
border-color: #2e6da4;
|
||
}
|
||
.btn-primary .badge {
|
||
color: #337ab7;
|
||
background-color: #ffffff;
|
||
}
|
||
.btn-success {
|
||
color: #ffffff;
|
||
background-color: #5cb85c;
|
||
border-color: #4cae4c;
|
||
}
|
||
.btn-success:focus,
|
||
.btn-success.focus {
|
||
color: #ffffff;
|
||
background-color: #449d44;
|
||
border-color: #255625;
|
||
}
|
||
.btn-success:hover {
|
||
color: #ffffff;
|
||
background-color: #449d44;
|
||
border-color: #398439;
|
||
}
|
||
.btn-success:active,
|
||
.btn-success.active,
|
||
.open > .dropdown-toggle.btn-success {
|
||
color: #ffffff;
|
||
background-color: #449d44;
|
||
border-color: #398439;
|
||
}
|
||
.btn-success:active:hover,
|
||
.btn-success.active:hover,
|
||
.open > .dropdown-toggle.btn-success:hover,
|
||
.btn-success:active:focus,
|
||
.btn-success.active:focus,
|
||
.open > .dropdown-toggle.btn-success:focus,
|
||
.btn-success:active.focus,
|
||
.btn-success.active.focus,
|
||
.open > .dropdown-toggle.btn-success.focus {
|
||
color: #ffffff;
|
||
background-color: #398439;
|
||
border-color: #255625;
|
||
}
|
||
.btn-success:active,
|
||
.btn-success.active,
|
||
.open > .dropdown-toggle.btn-success {
|
||
background-image: none;
|
||
}
|
||
.btn-success.disabled,
|
||
.btn-success[disabled],
|
||
fieldset[disabled] .btn-success,
|
||
.btn-success.disabled:hover,
|
||
.btn-success[disabled]:hover,
|
||
fieldset[disabled] .btn-success:hover,
|
||
.btn-success.disabled:focus,
|
||
.btn-success[disabled]:focus,
|
||
fieldset[disabled] .btn-success:focus,
|
||
.btn-success.disabled.focus,
|
||
.btn-success[disabled].focus,
|
||
fieldset[disabled] .btn-success.focus,
|
||
.btn-success.disabled:active,
|
||
.btn-success[disabled]:active,
|
||
fieldset[disabled] .btn-success:active,
|
||
.btn-success.disabled.active,
|
||
.btn-success[disabled].active,
|
||
fieldset[disabled] .btn-success.active {
|
||
background-color: #5cb85c;
|
||
border-color: #4cae4c;
|
||
}
|
||
.btn-success .badge {
|
||
color: #5cb85c;
|
||
background-color: #ffffff;
|
||
}
|
||
.btn-info {
|
||
color: #ffffff;
|
||
background-color: #5bc0de;
|
||
border-color: #46b8da;
|
||
}
|
||
.btn-info:focus,
|
||
.btn-info.focus {
|
||
color: #ffffff;
|
||
background-color: #31b0d5;
|
||
border-color: #1b6d85;
|
||
}
|
||
.btn-info:hover {
|
||
color: #ffffff;
|
||
background-color: #31b0d5;
|
||
border-color: #269abc;
|
||
}
|
||
.btn-info:active,
|
||
.btn-info.active,
|
||
.open > .dropdown-toggle.btn-info {
|
||
color: #ffffff;
|
||
background-color: #31b0d5;
|
||
border-color: #269abc;
|
||
}
|
||
.btn-info:active:hover,
|
||
.btn-info.active:hover,
|
||
.open > .dropdown-toggle.btn-info:hover,
|
||
.btn-info:active:focus,
|
||
.btn-info.active:focus,
|
||
.open > .dropdown-toggle.btn-info:focus,
|
||
.btn-info:active.focus,
|
||
.btn-info.active.focus,
|
||
.open > .dropdown-toggle.btn-info.focus {
|
||
color: #ffffff;
|
||
background-color: #269abc;
|
||
border-color: #1b6d85;
|
||
}
|
||
.btn-info:active,
|
||
.btn-info.active,
|
||
.open > .dropdown-toggle.btn-info {
|
||
background-image: none;
|
||
}
|
||
.btn-info.disabled,
|
||
.btn-info[disabled],
|
||
fieldset[disabled] .btn-info,
|
||
.btn-info.disabled:hover,
|
||
.btn-info[disabled]:hover,
|
||
fieldset[disabled] .btn-info:hover,
|
||
.btn-info.disabled:focus,
|
||
.btn-info[disabled]:focus,
|
||
fieldset[disabled] .btn-info:focus,
|
||
.btn-info.disabled.focus,
|
||
.btn-info[disabled].focus,
|
||
fieldset[disabled] .btn-info.focus,
|
||
.btn-info.disabled:active,
|
||
.btn-info[disabled]:active,
|
||
fieldset[disabled] .btn-info:active,
|
||
.btn-info.disabled.active,
|
||
.btn-info[disabled].active,
|
||
fieldset[disabled] .btn-info.active {
|
||
background-color: #5bc0de;
|
||
border-color: #46b8da;
|
||
}
|
||
.btn-info .badge {
|
||
color: #5bc0de;
|
||
background-color: #ffffff;
|
||
}
|
||
.btn-warning {
|
||
color: #ffffff;
|
||
background-color: #f0ad4e;
|
||
border-color: #eea236;
|
||
}
|
||
.btn-warning:focus,
|
||
.btn-warning.focus {
|
||
color: #ffffff;
|
||
background-color: #ec971f;
|
||
border-color: #985f0d;
|
||
}
|
||
.btn-warning:hover {
|
||
color: #ffffff;
|
||
background-color: #ec971f;
|
||
border-color: #d58512;
|
||
}
|
||
.btn-warning:active,
|
||
.btn-warning.active,
|
||
.open > .dropdown-toggle.btn-warning {
|
||
color: #ffffff;
|
||
background-color: #ec971f;
|
||
border-color: #d58512;
|
||
}
|
||
.btn-warning:active:hover,
|
||
.btn-warning.active:hover,
|
||
.open > .dropdown-toggle.btn-warning:hover,
|
||
.btn-warning:active:focus,
|
||
.btn-warning.active:focus,
|
||
.open > .dropdown-toggle.btn-warning:focus,
|
||
.btn-warning:active.focus,
|
||
.btn-warning.active.focus,
|
||
.open > .dropdown-toggle.btn-warning.focus {
|
||
color: #ffffff;
|
||
background-color: #d58512;
|
||
border-color: #985f0d;
|
||
}
|
||
.btn-warning:active,
|
||
.btn-warning.active,
|
||
.open > .dropdown-toggle.btn-warning {
|
||
background-image: none;
|
||
}
|
||
.btn-warning.disabled,
|
||
.btn-warning[disabled],
|
||
fieldset[disabled] .btn-warning,
|
||
.btn-warning.disabled:hover,
|
||
.btn-warning[disabled]:hover,
|
||
fieldset[disabled] .btn-warning:hover,
|
||
.btn-warning.disabled:focus,
|
||
.btn-warning[disabled]:focus,
|
||
fieldset[disabled] .btn-warning:focus,
|
||
.btn-warning.disabled.focus,
|
||
.btn-warning[disabled].focus,
|
||
fieldset[disabled] .btn-warning.focus,
|
||
.btn-warning.disabled:active,
|
||
.btn-warning[disabled]:active,
|
||
fieldset[disabled] .btn-warning:active,
|
||
.btn-warning.disabled.active,
|
||
.btn-warning[disabled].active,
|
||
fieldset[disabled] .btn-warning.active {
|
||
background-color: #f0ad4e;
|
||
border-color: #eea236;
|
||
}
|
||
.btn-warning .badge {
|
||
color: #f0ad4e;
|
||
background-color: #ffffff;
|
||
}
|
||
.btn-danger {
|
||
color: #ffffff;
|
||
background-color: #d9534f;
|
||
border-color: #d43f3a;
|
||
}
|
||
.btn-danger:focus,
|
||
.btn-danger.focus {
|
||
color: #ffffff;
|
||
background-color: #c9302c;
|
||
border-color: #761c19;
|
||
}
|
||
.btn-danger:hover {
|
||
color: #ffffff;
|
||
background-color: #c9302c;
|
||
border-color: #ac2925;
|
||
}
|
||
.btn-danger:active,
|
||
.btn-danger.active,
|
||
.open > .dropdown-toggle.btn-danger {
|
||
color: #ffffff;
|
||
background-color: #c9302c;
|
||
border-color: #ac2925;
|
||
}
|
||
.btn-danger:active:hover,
|
||
.btn-danger.active:hover,
|
||
.open > .dropdown-toggle.btn-danger:hover,
|
||
.btn-danger:active:focus,
|
||
.btn-danger.active:focus,
|
||
.open > .dropdown-toggle.btn-danger:focus,
|
||
.btn-danger:active.focus,
|
||
.btn-danger.active.focus,
|
||
.open > .dropdown-toggle.btn-danger.focus {
|
||
color: #ffffff;
|
||
background-color: #ac2925;
|
||
border-color: #761c19;
|
||
}
|
||
.btn-danger:active,
|
||
.btn-danger.active,
|
||
.open > .dropdown-toggle.btn-danger {
|
||
background-image: none;
|
||
}
|
||
.btn-danger.disabled,
|
||
.btn-danger[disabled],
|
||
fieldset[disabled] .btn-danger,
|
||
.btn-danger.disabled:hover,
|
||
.btn-danger[disabled]:hover,
|
||
fieldset[disabled] .btn-danger:hover,
|
||
.btn-danger.disabled:focus,
|
||
.btn-danger[disabled]:focus,
|
||
fieldset[disabled] .btn-danger:focus,
|
||
.btn-danger.disabled.focus,
|
||
.btn-danger[disabled].focus,
|
||
fieldset[disabled] .btn-danger.focus,
|
||
.btn-danger.disabled:active,
|
||
.btn-danger[disabled]:active,
|
||
fieldset[disabled] .btn-danger:active,
|
||
.btn-danger.disabled.active,
|
||
.btn-danger[disabled].active,
|
||
fieldset[disabled] .btn-danger.active {
|
||
background-color: #d9534f;
|
||
border-color: #d43f3a;
|
||
}
|
||
.btn-danger .badge {
|
||
color: #d9534f;
|
||
background-color: #ffffff;
|
||
}
|
||
.btn-link {
|
||
color: #337ab7;
|
||
font-weight: normal;
|
||
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:hover,
|
||
.btn-link:focus,
|
||
.btn-link:active {
|
||
border-color: transparent;
|
||
}
|
||
.btn-link:hover,
|
||
.btn-link:focus {
|
||
color: #23527c;
|
||
text-decoration: underline;
|
||
background-color: transparent;
|
||
}
|
||
.btn-link[disabled]:hover,
|
||
fieldset[disabled] .btn-link:hover,
|
||
.btn-link[disabled]:focus,
|
||
fieldset[disabled] .btn-link:focus {
|
||
color: #777777;
|
||
text-decoration: none;
|
||
}
|
||
.btn-lg,
|
||
.btn-group-lg > .btn {
|
||
padding: 10px 16px;
|
||
font-size: 18px;
|
||
line-height: 1.3333333;
|
||
border-radius: 6px;
|
||
}
|
||
.btn-sm,
|
||
.btn-group-sm > .btn {
|
||
padding: 5px 10px;
|
||
font-size: 12px;
|
||
line-height: 1.5;
|
||
border-radius: 3px;
|
||
}
|
||
.btn-xs,
|
||
.btn-group-xs > .btn {
|
||
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="submit"].btn-block,
|
||
input[type="reset"].btn-block,
|
||
input[type="button"].btn-block {
|
||
width: 100%;
|
||
}
|
||
.fade {
|
||
opacity: 0;
|
||
-webkit-transition: opacity 0.15s linear;
|
||
-o-transition: opacity 0.15s linear;
|
||
transition: opacity 0.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-property: height, visibility;
|
||
-o-transition-property: height, visibility;
|
||
transition-property: height, visibility;
|
||
-webkit-transition-duration: 0.35s;
|
||
-o-transition-duration: 0.35s;
|
||
transition-duration: 0.35s;
|
||
-webkit-transition-timing-function: ease;
|
||
-o-transition-timing-function: ease;
|
||
transition-timing-function: ease;
|
||
}
|
||
.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;
|
||
}
|
||
.dropup,
|
||
.dropdown {
|
||
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;
|
||
list-style: none;
|
||
font-size: 14px;
|
||
text-align: left;
|
||
background-color: #ffffff;
|
||
border: 1px solid #cccccc;
|
||
border: 1px solid rgba(0, 0, 0, 0.15);
|
||
border-radius: 4px;
|
||
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
||
-webkit-background-clip: padding-box;
|
||
background-clip: padding-box;
|
||
}
|
||
.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: normal;
|
||
line-height: 1.42857143;
|
||
color: #333333;
|
||
white-space: nowrap;
|
||
}
|
||
.dropdown-menu > li > a:hover,
|
||
.dropdown-menu > li > a:focus {
|
||
text-decoration: none;
|
||
color: #262626;
|
||
background-color: #f5f5f5;
|
||
}
|
||
.dropdown-menu > .active > a,
|
||
.dropdown-menu > .active > a:hover,
|
||
.dropdown-menu > .active > a:focus {
|
||
color: #ffffff;
|
||
text-decoration: none;
|
||
outline: 0;
|
||
background-color: #337ab7;
|
||
}
|
||
.dropdown-menu > .disabled > a,
|
||
.dropdown-menu > .disabled > a:hover,
|
||
.dropdown-menu > .disabled > a:focus {
|
||
color: #777777;
|
||
}
|
||
.dropdown-menu > .disabled > a:hover,
|
||
.dropdown-menu > .disabled > a:focus {
|
||
text-decoration: none;
|
||
background-color: transparent;
|
||
background-image: none;
|
||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||
cursor: not-allowed;
|
||
}
|
||
.open > .dropdown-menu {
|
||
display: block;
|
||
}
|
||
.open > a {
|
||
outline: 0;
|
||
}
|
||
.dropdown-menu-right {
|
||
left: auto;
|
||
right: 0;
|
||
}
|
||
.dropdown-menu-left {
|
||
left: 0;
|
||
right: auto;
|
||
}
|
||
.dropdown-header {
|
||
display: block;
|
||
padding: 3px 20px;
|
||
font-size: 12px;
|
||
line-height: 1.42857143;
|
||
color: #777777;
|
||
white-space: nowrap;
|
||
}
|
||
.dropdown-backdrop {
|
||
position: fixed;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
top: 0;
|
||
z-index: 990;
|
||
}
|
||
.pull-right > .dropdown-menu {
|
||
right: 0;
|
||
left: auto;
|
||
}
|
||
.dropup .caret,
|
||
.navbar-fixed-bottom .dropdown .caret {
|
||
border-top: 0;
|
||
border-bottom: 4px dashed;
|
||
border-bottom: 4px solid \9;
|
||
content: "";
|
||
}
|
||
.dropup .dropdown-menu,
|
||
.navbar-fixed-bottom .dropdown .dropdown-menu {
|
||
top: auto;
|
||
bottom: 100%;
|
||
margin-bottom: 2px;
|
||
}
|
||
@media (min-width: 768px) {
|
||
.navbar-right .dropdown-menu {
|
||
left: auto;
|
||
right: 0;
|
||
}
|
||
.navbar-right .dropdown-menu-left {
|
||
left: 0;
|
||
right: auto;
|
||
}
|
||
}
|
||
.btn-group,
|
||
.btn-group-vertical {
|
||
position: relative;
|
||
display: inline-block;
|
||
vertical-align: middle;
|
||
}
|
||
.btn-group > .btn,
|
||
.btn-group-vertical > .btn {
|
||
position: relative;
|
||
float: left;
|
||
}
|
||
.btn-group > .btn:hover,
|
||
.btn-group-vertical > .btn:hover,
|
||
.btn-group > .btn:focus,
|
||
.btn-group-vertical > .btn:focus,
|
||
.btn-group > .btn:active,
|
||
.btn-group-vertical > .btn:active,
|
||
.btn-group > .btn.active,
|
||
.btn-group-vertical > .btn.active {
|
||
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-bottom-right-radius: 0;
|
||
border-top-right-radius: 0;
|
||
}
|
||
.btn-group > .btn:last-child:not(:first-child),
|
||
.btn-group > .dropdown-toggle:not(:first-child) {
|
||
border-bottom-left-radius: 0;
|
||
border-top-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-bottom-right-radius: 0;
|
||
border-top-right-radius: 0;
|
||
}
|
||
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
|
||
border-bottom-left-radius: 0;
|
||
border-top-left-radius: 0;
|
||
}
|
||
.btn-group .dropdown-toggle:active,
|
||
.btn-group.open .dropdown-toggle {
|
||
outline: 0;
|
||
}
|
||
.btn-group > .btn + .dropdown-toggle {
|
||
padding-left: 8px;
|
||
padding-right: 8px;
|
||
}
|
||
.btn-group > .btn-lg + .dropdown-toggle {
|
||
padding-left: 12px;
|
||
padding-right: 12px;
|
||
}
|
||
.btn-group.open .dropdown-toggle {
|
||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||
box-shadow: inset 0 3px 5px rgba(0, 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-right-radius: 4px;
|
||
border-bottom-right-radius: 0;
|
||
border-bottom-left-radius: 0;
|
||
}
|
||
.btn-group-vertical > .btn:last-child:not(:first-child) {
|
||
border-bottom-left-radius: 4px;
|
||
border-top-right-radius: 0;
|
||
border-top-left-radius: 0;
|
||
}
|
||
.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-right-radius: 0;
|
||
border-top-left-radius: 0;
|
||
}
|
||
.btn-group-justified {
|
||
display: table;
|
||
width: 100%;
|
||
table-layout: fixed;
|
||
border-collapse: separate;
|
||
}
|
||
.btn-group-justified > .btn,
|
||
.btn-group-justified > .btn-group {
|
||
float: none;
|
||
display: table-cell;
|
||
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="radio"],
|
||
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
|
||
[data-toggle="buttons"] > .btn input[type="checkbox"],
|
||
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
|
||
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-left: 0;
|
||
padding-right: 0;
|
||
}
|
||
.input-group .form-control {
|
||
position: relative;
|
||
z-index: 2;
|
||
float: left;
|
||
width: 100%;
|
||
margin-bottom: 0;
|
||
}
|
||
.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;
|
||
}
|
||
textarea.input-group-lg > .form-control,
|
||
textarea.input-group-lg > .input-group-addon,
|
||
textarea.input-group-lg > .input-group-btn > .btn,
|
||
select[multiple].input-group-lg > .form-control,
|
||
select[multiple].input-group-lg > .input-group-addon,
|
||
select[multiple].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;
|
||
}
|
||
textarea.input-group-sm > .form-control,
|
||
textarea.input-group-sm > .input-group-addon,
|
||
textarea.input-group-sm > .input-group-btn > .btn,
|
||
select[multiple].input-group-sm > .form-control,
|
||
select[multiple].input-group-sm > .input-group-addon,
|
||
select[multiple].input-group-sm > .input-group-btn > .btn {
|
||
height: auto;
|
||
}
|
||
.input-group-addon,
|
||
.input-group-btn,
|
||
.input-group .form-control {
|
||
display: table-cell;
|
||
}
|
||
.input-group-addon:not(:first-child):not(:last-child),
|
||
.input-group-btn:not(:first-child):not(:last-child),
|
||
.input-group .form-control: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: normal;
|
||
line-height: 1;
|
||
color: #555555;
|
||
text-align: center;
|
||
background-color: #eeeeee;
|
||
border: 1px solid #cccccc;
|
||
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="radio"],
|
||
.input-group-addon input[type="checkbox"] {
|
||
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:not(:last-child):not(.dropdown-toggle),
|
||
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
|
||
border-bottom-right-radius: 0;
|
||
border-top-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:last-child > .btn,
|
||
.input-group-btn:last-child > .btn-group > .btn,
|
||
.input-group-btn:last-child > .dropdown-toggle,
|
||
.input-group-btn:first-child > .btn:not(:first-child),
|
||
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
|
||
border-bottom-left-radius: 0;
|
||
border-top-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:hover,
|
||
.input-group-btn > .btn:focus,
|
||
.input-group-btn > .btn:active {
|
||
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 {
|
||
margin-bottom: 0;
|
||
padding-left: 0;
|
||
list-style: none;
|
||
}
|
||
.nav > li {
|
||
position: relative;
|
||
display: block;
|
||
}
|
||
.nav > li > a {
|
||
position: relative;
|
||
display: block;
|
||
padding: 10px 15px;
|
||
}
|
||
.nav > li > a:hover,
|
||
.nav > li > a:focus {
|
||
text-decoration: none;
|
||
background-color: #eeeeee;
|
||
}
|
||
.nav > li.disabled > a {
|
||
color: #777777;
|
||
}
|
||
.nav > li.disabled > a:hover,
|
||
.nav > li.disabled > a:focus {
|
||
color: #777777;
|
||
text-decoration: none;
|
||
background-color: transparent;
|
||
cursor: not-allowed;
|
||
}
|
||
.nav .open > a,
|
||
.nav .open > a:hover,
|
||
.nav .open > a:focus {
|
||
background-color: #eeeeee;
|
||
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 #dddddd;
|
||
}
|
||
.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: #eeeeee #eeeeee #dddddd;
|
||
}
|
||
.nav-tabs > li.active > a,
|
||
.nav-tabs > li.active > a:hover,
|
||
.nav-tabs > li.active > a:focus {
|
||
color: #555555;
|
||
background-color: #ffffff;
|
||
border: 1px solid #dddddd;
|
||
border-bottom-color: transparent;
|
||
cursor: default;
|
||
}
|
||
.nav-tabs.nav-justified {
|
||
width: 100%;
|
||
border-bottom: 0;
|
||
}
|
||
.nav-tabs.nav-justified > li {
|
||
float: none;
|
||
}
|
||
.nav-tabs.nav-justified > li > a {
|
||
text-align: center;
|
||
margin-bottom: 5px;
|
||
}
|
||
.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:hover,
|
||
.nav-tabs.nav-justified > .active > a:focus {
|
||
border: 1px solid #dddddd;
|
||
}
|
||
@media (min-width: 768px) {
|
||
.nav-tabs.nav-justified > li > a {
|
||
border-bottom: 1px solid #dddddd;
|
||
border-radius: 4px 4px 0 0;
|
||
}
|
||
.nav-tabs.nav-justified > .active > a,
|
||
.nav-tabs.nav-justified > .active > a:hover,
|
||
.nav-tabs.nav-justified > .active > a:focus {
|
||
border-bottom-color: #ffffff;
|
||
}
|
||
}
|
||
.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:hover,
|
||
.nav-pills > li.active > a:focus {
|
||
color: #ffffff;
|
||
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 {
|
||
text-align: center;
|
||
margin-bottom: 5px;
|
||
}
|
||
.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:hover,
|
||
.nav-tabs-justified > .active > a:focus {
|
||
border: 1px solid #dddddd;
|
||
}
|
||
@media (min-width: 768px) {
|
||
.nav-tabs-justified > li > a {
|
||
border-bottom: 1px solid #dddddd;
|
||
border-radius: 4px 4px 0 0;
|
||
}
|
||
.nav-tabs-justified > .active > a,
|
||
.nav-tabs-justified > .active > a:hover,
|
||
.nav-tabs-justified > .active > a:focus {
|
||
border-bottom-color: #ffffff;
|
||
}
|
||
}
|
||
.tab-content > .tab-pane {
|
||
display: none;
|
||
}
|
||
.tab-content > .active {
|
||
display: block;
|
||
}
|
||
.nav-tabs .dropdown-menu {
|
||
margin-top: -1px;
|
||
border-top-right-radius: 0;
|
||
border-top-left-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 {
|
||
overflow-x: visible;
|
||
padding-right: 15px;
|
||
padding-left: 15px;
|
||
border-top: 1px solid transparent;
|
||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||
-webkit-overflow-scrolling: touch;
|
||
}
|
||
.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-top .navbar-collapse,
|
||
.navbar-static-top .navbar-collapse,
|
||
.navbar-fixed-bottom .navbar-collapse {
|
||
padding-left: 0;
|
||
padding-right: 0;
|
||
}
|
||
}
|
||
.navbar-fixed-top .navbar-collapse,
|
||
.navbar-fixed-bottom .navbar-collapse {
|
||
max-height: 340px;
|
||
}
|
||
@media (max-device-width: 480px) and (orientation: landscape) {
|
||
.navbar-fixed-top .navbar-collapse,
|
||
.navbar-fixed-bottom .navbar-collapse {
|
||
max-height: 200px;
|
||
}
|
||
}
|
||
.container > .navbar-header,
|
||
.container-fluid > .navbar-header,
|
||
.container > .navbar-collapse,
|
||
.container-fluid > .navbar-collapse {
|
||
margin-right: -15px;
|
||
margin-left: -15px;
|
||
}
|
||
@media (min-width: 768px) {
|
||
.container > .navbar-header,
|
||
.container-fluid > .navbar-header,
|
||
.container > .navbar-collapse,
|
||
.container-fluid > .navbar-collapse {
|
||
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-top,
|
||
.navbar-fixed-bottom {
|
||
position: fixed;
|
||
right: 0;
|
||
left: 0;
|
||
z-index: 1030;
|
||
}
|
||
@media (min-width: 768px) {
|
||
.navbar-fixed-top,
|
||
.navbar-fixed-bottom {
|
||
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;
|
||
padding: 15px 15px;
|
||
font-size: 18px;
|
||
line-height: 20px;
|
||
height: 50px;
|
||
}
|
||
.navbar-brand:hover,
|
||
.navbar-brand:focus {
|
||
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;
|
||
margin-right: 15px;
|
||
padding: 9px 10px;
|
||
margin-top: 8px;
|
||
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 > li > a,
|
||
.navbar-nav .open .dropdown-menu .dropdown-header {
|
||
padding: 5px 15px 5px 25px;
|
||
}
|
||
.navbar-nav .open .dropdown-menu > li > a {
|
||
line-height: 20px;
|
||
}
|
||
.navbar-nav .open .dropdown-menu > li > a:hover,
|
||
.navbar-nav .open .dropdown-menu > li > a:focus {
|
||
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 {
|
||
margin-left: -15px;
|
||
margin-right: -15px;
|
||
padding: 10px 15px;
|
||
border-top: 1px solid transparent;
|
||
border-bottom: 1px solid transparent;
|
||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
|
||
margin-top: 8px;
|
||
margin-bottom: 8px;
|
||
}
|
||
@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 .input-group-addon,
|
||
.navbar-form .input-group .input-group-btn,
|
||
.navbar-form .input-group .form-control {
|
||
width: auto;
|
||
}
|
||
.navbar-form .input-group > .form-control {
|
||
width: 100%;
|
||
}
|
||
.navbar-form .control-label {
|
||
margin-bottom: 0;
|
||
vertical-align: middle;
|
||
}
|
||
.navbar-form .radio,
|
||
.navbar-form .checkbox {
|
||
display: inline-block;
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
vertical-align: middle;
|
||
}
|
||
.navbar-form .radio label,
|
||
.navbar-form .checkbox label {
|
||
padding-left: 0;
|
||
}
|
||
.navbar-form .radio input[type="radio"],
|
||
.navbar-form .checkbox input[type="checkbox"] {
|
||
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;
|
||
border: 0;
|
||
margin-left: 0;
|
||
margin-right: 0;
|
||
padding-top: 0;
|
||
padding-bottom: 0;
|
||
-webkit-box-shadow: none;
|
||
box-shadow: none;
|
||
}
|
||
}
|
||
.navbar-nav > li > .dropdown-menu {
|
||
margin-top: 0;
|
||
border-top-right-radius: 0;
|
||
border-top-left-radius: 0;
|
||
}
|
||
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
|
||
margin-bottom: 0;
|
||
border-top-right-radius: 4px;
|
||
border-top-left-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-left: 15px;
|
||
margin-right: 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: #777777;
|
||
}
|
||
.navbar-default .navbar-brand:hover,
|
||
.navbar-default .navbar-brand:focus {
|
||
color: #5e5e5e;
|
||
background-color: transparent;
|
||
}
|
||
.navbar-default .navbar-text {
|
||
color: #777777;
|
||
}
|
||
.navbar-default .navbar-nav > li > a {
|
||
color: #777777;
|
||
}
|
||
.navbar-default .navbar-nav > li > a:hover,
|
||
.navbar-default .navbar-nav > li > a:focus {
|
||
color: #333333;
|
||
background-color: transparent;
|
||
}
|
||
.navbar-default .navbar-nav > .active > a,
|
||
.navbar-default .navbar-nav > .active > a:hover,
|
||
.navbar-default .navbar-nav > .active > a:focus {
|
||
color: #555555;
|
||
background-color: #e7e7e7;
|
||
}
|
||
.navbar-default .navbar-nav > .disabled > a,
|
||
.navbar-default .navbar-nav > .disabled > a:hover,
|
||
.navbar-default .navbar-nav > .disabled > a:focus {
|
||
color: #cccccc;
|
||
background-color: transparent;
|
||
}
|
||
.navbar-default .navbar-toggle {
|
||
border-color: #dddddd;
|
||
}
|
||
.navbar-default .navbar-toggle:hover,
|
||
.navbar-default .navbar-toggle:focus {
|
||
background-color: #dddddd;
|
||
}
|
||
.navbar-default .navbar-toggle .icon-bar {
|
||
background-color: #888888;
|
||
}
|
||
.navbar-default .navbar-collapse,
|
||
.navbar-default .navbar-form {
|
||
border-color: #e7e7e7;
|
||
}
|
||
.navbar-default .navbar-nav > .open > a,
|
||
.navbar-default .navbar-nav > .open > a:hover,
|
||
.navbar-default .navbar-nav > .open > a:focus {
|
||
background-color: #e7e7e7;
|
||
color: #555555;
|
||
}
|
||
@media (max-width: 767px) {
|
||
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
|
||
color: #777777;
|
||
}
|
||
.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
|
||
.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
|
||
color: #333333;
|
||
background-color: transparent;
|
||
}
|
||
.navbar-default .navbar-nav .open .dropdown-menu > .active > a,
|
||
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
|
||
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
|
||
color: #555555;
|
||
background-color: #e7e7e7;
|
||
}
|
||
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
|
||
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
|
||
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
|
||
color: #cccccc;
|
||
background-color: transparent;
|
||
}
|
||
}
|
||
.navbar-default .navbar-link {
|
||
color: #777777;
|
||
}
|
||
.navbar-default .navbar-link:hover {
|
||
color: #333333;
|
||
}
|
||
.navbar-default .btn-link {
|
||
color: #777777;
|
||
}
|
||
.navbar-default .btn-link:hover,
|
||
.navbar-default .btn-link:focus {
|
||
color: #333333;
|
||
}
|
||
.navbar-default .btn-link[disabled]:hover,
|
||
fieldset[disabled] .navbar-default .btn-link:hover,
|
||
.navbar-default .btn-link[disabled]:focus,
|
||
fieldset[disabled] .navbar-default .btn-link:focus {
|
||
color: #cccccc;
|
||
}
|
||
.navbar-inverse {
|
||
background-color: #222222;
|
||
border-color: #080808;
|
||
}
|
||
.navbar-inverse .navbar-brand {
|
||
color: #9d9d9d;
|
||
}
|
||
.navbar-inverse .navbar-brand:hover,
|
||
.navbar-inverse .navbar-brand:focus {
|
||
color: #ffffff;
|
||
background-color: transparent;
|
||
}
|
||
.navbar-inverse .navbar-text {
|
||
color: #9d9d9d;
|
||
}
|
||
.navbar-inverse .navbar-nav > li > a {
|
||
color: #9d9d9d;
|
||
}
|
||
.navbar-inverse .navbar-nav > li > a:hover,
|
||
.navbar-inverse .navbar-nav > li > a:focus {
|
||
color: #ffffff;
|
||
background-color: transparent;
|
||
}
|
||
.navbar-inverse .navbar-nav > .active > a,
|
||
.navbar-inverse .navbar-nav > .active > a:hover,
|
||
.navbar-inverse .navbar-nav > .active > a:focus {
|
||
color: #ffffff;
|
||
background-color: #080808;
|
||
}
|
||
.navbar-inverse .navbar-nav > .disabled > a,
|
||
.navbar-inverse .navbar-nav > .disabled > a:hover,
|
||
.navbar-inverse .navbar-nav > .disabled > a:focus {
|
||
color: #444444;
|
||
background-color: transparent;
|
||
}
|
||
.navbar-inverse .navbar-toggle {
|
||
border-color: #333333;
|
||
}
|
||
.navbar-inverse .navbar-toggle:hover,
|
||
.navbar-inverse .navbar-toggle:focus {
|
||
background-color: #333333;
|
||
}
|
||
.navbar-inverse .navbar-toggle .icon-bar {
|
||
background-color: #ffffff;
|
||
}
|
||
.navbar-inverse .navbar-collapse,
|
||
.navbar-inverse .navbar-form {
|
||
border-color: #101010;
|
||
}
|
||
.navbar-inverse .navbar-nav > .open > a,
|
||
.navbar-inverse .navbar-nav > .open > a:hover,
|
||
.navbar-inverse .navbar-nav > .open > a:focus {
|
||
background-color: #080808;
|
||
color: #ffffff;
|
||
}
|
||
@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:hover,
|
||
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
|
||
color: #ffffff;
|
||
background-color: transparent;
|
||
}
|
||
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
|
||
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
|
||
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
|
||
color: #ffffff;
|
||
background-color: #080808;
|
||
}
|
||
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
|
||
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
|
||
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
|
||
color: #444444;
|
||
background-color: transparent;
|
||
}
|
||
}
|
||
.navbar-inverse .navbar-link {
|
||
color: #9d9d9d;
|
||
}
|
||
.navbar-inverse .navbar-link:hover {
|
||
color: #ffffff;
|
||
}
|
||
.navbar-inverse .btn-link {
|
||
color: #9d9d9d;
|
||
}
|
||
.navbar-inverse .btn-link:hover,
|
||
.navbar-inverse .btn-link:focus {
|
||
color: #ffffff;
|
||
}
|
||
.navbar-inverse .btn-link[disabled]:hover,
|
||
fieldset[disabled] .navbar-inverse .btn-link:hover,
|
||
.navbar-inverse .btn-link[disabled]:focus,
|
||
fieldset[disabled] .navbar-inverse .btn-link:focus {
|
||
color: #444444;
|
||
}
|
||
.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 {
|
||
content: "/\00a0";
|
||
padding: 0 5px;
|
||
color: #cccccc;
|
||
}
|
||
.breadcrumb > .active {
|
||
color: #777777;
|
||
}
|
||
.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;
|
||
line-height: 1.42857143;
|
||
text-decoration: none;
|
||
color: #337ab7;
|
||
background-color: #ffffff;
|
||
border: 1px solid #dddddd;
|
||
margin-left: -1px;
|
||
}
|
||
.pagination > li:first-child > a,
|
||
.pagination > li:first-child > span {
|
||
margin-left: 0;
|
||
border-bottom-left-radius: 4px;
|
||
border-top-left-radius: 4px;
|
||
}
|
||
.pagination > li:last-child > a,
|
||
.pagination > li:last-child > span {
|
||
border-bottom-right-radius: 4px;
|
||
border-top-right-radius: 4px;
|
||
}
|
||
.pagination > li > a:hover,
|
||
.pagination > li > span:hover,
|
||
.pagination > li > a:focus,
|
||
.pagination > li > span:focus {
|
||
z-index: 3;
|
||
color: #23527c;
|
||
background-color: #eeeeee;
|
||
border-color: #dddddd;
|
||
}
|
||
.pagination > .active > a,
|
||
.pagination > .active > span,
|
||
.pagination > .active > a:hover,
|
||
.pagination > .active > span:hover,
|
||
.pagination > .active > a:focus,
|
||
.pagination > .active > span:focus {
|
||
z-index: 2;
|
||
color: #ffffff;
|
||
background-color: #337ab7;
|
||
border-color: #337ab7;
|
||
cursor: default;
|
||
}
|
||
.pagination > .disabled > span,
|
||
.pagination > .disabled > span:hover,
|
||
.pagination > .disabled > span:focus,
|
||
.pagination > .disabled > a,
|
||
.pagination > .disabled > a:hover,
|
||
.pagination > .disabled > a:focus {
|
||
color: #777777;
|
||
background-color: #ffffff;
|
||
border-color: #dddddd;
|
||
cursor: not-allowed;
|
||
}
|
||
.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-bottom-left-radius: 6px;
|
||
border-top-left-radius: 6px;
|
||
}
|
||
.pagination-lg > li:last-child > a,
|
||
.pagination-lg > li:last-child > span {
|
||
border-bottom-right-radius: 6px;
|
||
border-top-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-bottom-left-radius: 3px;
|
||
border-top-left-radius: 3px;
|
||
}
|
||
.pagination-sm > li:last-child > a,
|
||
.pagination-sm > li:last-child > span {
|
||
border-bottom-right-radius: 3px;
|
||
border-top-right-radius: 3px;
|
||
}
|
||
.pager {
|
||
padding-left: 0;
|
||
margin: 20px 0;
|
||
list-style: none;
|
||
text-align: center;
|
||
}
|
||
.pager li {
|
||
display: inline;
|
||
}
|
||
.pager li > a,
|
||
.pager li > span {
|
||
display: inline-block;
|
||
padding: 5px 14px;
|
||
background-color: #ffffff;
|
||
border: 1px solid #dddddd;
|
||
border-radius: 15px;
|
||
}
|
||
.pager li > a:hover,
|
||
.pager li > a:focus {
|
||
text-decoration: none;
|
||
background-color: #eeeeee;
|
||
}
|
||
.pager .next > a,
|
||
.pager .next > span {
|
||
float: right;
|
||
}
|
||
.pager .previous > a,
|
||
.pager .previous > span {
|
||
float: left;
|
||
}
|
||
.pager .disabled > a,
|
||
.pager .disabled > a:hover,
|
||
.pager .disabled > a:focus,
|
||
.pager .disabled > span {
|
||
color: #777777;
|
||
background-color: #ffffff;
|
||
cursor: not-allowed;
|
||
}
|
||
.label {
|
||
display: inline;
|
||
padding: .2em .6em .3em;
|
||
font-size: 75%;
|
||
font-weight: bold;
|
||
line-height: 1;
|
||
color: #ffffff;
|
||
text-align: center;
|
||
white-space: nowrap;
|
||
vertical-align: baseline;
|
||
border-radius: .25em;
|
||
}
|
||
a.label:hover,
|
||
a.label:focus {
|
||
color: #ffffff;
|
||
text-decoration: none;
|
||
cursor: pointer;
|
||
}
|
||
.label:empty {
|
||
display: none;
|
||
}
|
||
.btn .label {
|
||
position: relative;
|
||
top: -1px;
|
||
}
|
||
.label-default {
|
||
background-color: #777777;
|
||
}
|
||
.label-default[href]:hover,
|
||
.label-default[href]:focus {
|
||
background-color: #5e5e5e;
|
||
}
|
||
.label-primary {
|
||
background-color: #337ab7;
|
||
}
|
||
.label-primary[href]:hover,
|
||
.label-primary[href]:focus {
|
||
background-color: #286090;
|
||
}
|
||
.label-success {
|
||
background-color: #5cb85c;
|
||
}
|
||
.label-success[href]:hover,
|
||
.label-success[href]:focus {
|
||
background-color: #449d44;
|
||
}
|
||
.label-info {
|
||
background-color: #5bc0de;
|
||
}
|
||
.label-info[href]:hover,
|
||
.label-info[href]:focus {
|
||
background-color: #31b0d5;
|
||
}
|
||
.label-warning {
|
||
background-color: #f0ad4e;
|
||
}
|
||
.label-warning[href]:hover,
|
||
.label-warning[href]:focus {
|
||
background-color: #ec971f;
|
||
}
|
||
.label-danger {
|
||
background-color: #d9534f;
|
||
}
|
||
.label-danger[href]:hover,
|
||
.label-danger[href]:focus {
|
||
background-color: #c9302c;
|
||
}
|
||
.badge {
|
||
display: inline-block;
|
||
min-width: 10px;
|
||
padding: 3px 7px;
|
||
font-size: 12px;
|
||
font-weight: bold;
|
||
color: #ffffff;
|
||
line-height: 1;
|
||
vertical-align: middle;
|
||
white-space: nowrap;
|
||
text-align: center;
|
||
background-color: #777777;
|
||
border-radius: 10px;
|
||
}
|
||
.badge:empty {
|
||
display: none;
|
||
}
|
||
.btn .badge {
|
||
position: relative;
|
||
top: -1px;
|
||
}
|
||
.btn-xs .badge,
|
||
.btn-group-xs > .btn .badge {
|
||
top: 0;
|
||
padding: 1px 5px;
|
||
}
|
||
a.badge:hover,
|
||
a.badge:focus {
|
||
color: #ffffff;
|
||
text-decoration: none;
|
||
cursor: pointer;
|
||
}
|
||
.list-group-item.active > .badge,
|
||
.nav-pills > .active > a > .badge {
|
||
color: #337ab7;
|
||
background-color: #ffffff;
|
||
}
|
||
.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: #eeeeee;
|
||
}
|
||
.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 {
|
||
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-left: 60px;
|
||
padding-right: 60px;
|
||
}
|
||
.jumbotron h1,
|
||
.jumbotron .h1 {
|
||
font-size: 63px;
|
||
}
|
||
}
|
||
.thumbnail {
|
||
display: block;
|
||
padding: 4px;
|
||
margin-bottom: 20px;
|
||
line-height: 1.42857143;
|
||
background-color: #ffffff;
|
||
border: 1px solid #dddddd;
|
||
border-radius: 4px;
|
||
-webkit-transition: border 0.2s ease-in-out;
|
||
-o-transition: border 0.2s ease-in-out;
|
||
transition: border 0.2s ease-in-out;
|
||
}
|
||
.thumbnail > img,
|
||
.thumbnail a > img {
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
}
|
||
a.thumbnail:hover,
|
||
a.thumbnail:focus,
|
||
a.thumbnail.active {
|
||
border-color: #337ab7;
|
||
}
|
||
.thumbnail .caption {
|
||
padding: 9px;
|
||
color: #333333;
|
||
}
|
||
.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: bold;
|
||
}
|
||
.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 {
|
||
background-color: #dff0d8;
|
||
border-color: #d6e9c6;
|
||
color: #3c763d;
|
||
}
|
||
.alert-success hr {
|
||
border-top-color: #c9e2b3;
|
||
}
|
||
.alert-success .alert-link {
|
||
color: #2b542c;
|
||
}
|
||
.alert-info {
|
||
background-color: #d9edf7;
|
||
border-color: #bce8f1;
|
||
color: #31708f;
|
||
}
|
||
.alert-info hr {
|
||
border-top-color: #a6e1ec;
|
||
}
|
||
.alert-info .alert-link {
|
||
color: #245269;
|
||
}
|
||
.alert-warning {
|
||
background-color: #fcf8e3;
|
||
border-color: #faebcc;
|
||
color: #8a6d3b;
|
||
}
|
||
.alert-warning hr {
|
||
border-top-color: #f7e1b5;
|
||
}
|
||
.alert-warning .alert-link {
|
||
color: #66512c;
|
||
}
|
||
.alert-danger {
|
||
background-color: #f2dede;
|
||
border-color: #ebccd1;
|
||
color: #a94442;
|
||
}
|
||
.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 {
|
||
overflow: hidden;
|
||
height: 20px;
|
||
margin-bottom: 20px;
|
||
background-color: #f5f5f5;
|
||
border-radius: 4px;
|
||
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
||
}
|
||
.progress-bar {
|
||
float: left;
|
||
width: 0%;
|
||
height: 100%;
|
||
font-size: 12px;
|
||
line-height: 20px;
|
||
color: #ffffff;
|
||
text-align: center;
|
||
background-color: #337ab7;
|
||
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
||
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
||
-webkit-transition: width 0.6s ease;
|
||
-o-transition: width 0.6s ease;
|
||
transition: width 0.6s ease;
|
||
}
|
||
.progress-striped .progress-bar,
|
||
.progress-bar-striped {
|
||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
-webkit-background-size: 40px 40px;
|
||
background-size: 40px 40px;
|
||
}
|
||
.progress.active .progress-bar,
|
||
.progress-bar.active {
|
||
-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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
}
|
||
.progress-bar-info {
|
||
background-color: #5bc0de;
|
||
}
|
||
.progress-striped .progress-bar-info {
|
||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
}
|
||
.progress-bar-warning {
|
||
background-color: #f0ad4e;
|
||
}
|
||
.progress-striped .progress-bar-warning {
|
||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
}
|
||
.progress-bar-danger {
|
||
background-color: #d9534f;
|
||
}
|
||
.progress-striped .progress-bar-danger {
|
||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||
}
|
||
.media {
|
||
margin-top: 15px;
|
||
}
|
||
.media:first-child {
|
||
margin-top: 0;
|
||
}
|
||
.media,
|
||
.media-body {
|
||
zoom: 1;
|
||
overflow: hidden;
|
||
}
|
||
.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-left,
|
||
.media-right,
|
||
.media-body {
|
||
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 {
|
||
margin-bottom: 20px;
|
||
padding-left: 0;
|
||
}
|
||
.list-group-item {
|
||
position: relative;
|
||
display: block;
|
||
padding: 10px 15px;
|
||
margin-bottom: -1px;
|
||
background-color: #ffffff;
|
||
border: 1px solid #dddddd;
|
||
}
|
||
.list-group-item:first-child {
|
||
border-top-right-radius: 4px;
|
||
border-top-left-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: #555555;
|
||
}
|
||
a.list-group-item .list-group-item-heading,
|
||
button.list-group-item .list-group-item-heading {
|
||
color: #333333;
|
||
}
|
||
a.list-group-item:hover,
|
||
button.list-group-item:hover,
|
||
a.list-group-item:focus,
|
||
button.list-group-item:focus {
|
||
text-decoration: none;
|
||
color: #555555;
|
||
background-color: #f5f5f5;
|
||
}
|
||
button.list-group-item {
|
||
width: 100%;
|
||
text-align: left;
|
||
}
|
||
.list-group-item.disabled,
|
||
.list-group-item.disabled:hover,
|
||
.list-group-item.disabled:focus {
|
||
background-color: #eeeeee;
|
||
color: #777777;
|
||
cursor: not-allowed;
|
||
}
|
||
.list-group-item.disabled .list-group-item-heading,
|
||
.list-group-item.disabled:hover .list-group-item-heading,
|
||
.list-group-item.disabled:focus .list-group-item-heading {
|
||
color: inherit;
|
||
}
|
||
.list-group-item.disabled .list-group-item-text,
|
||
.list-group-item.disabled:hover .list-group-item-text,
|
||
.list-group-item.disabled:focus .list-group-item-text {
|
||
color: #777777;
|
||
}
|
||
.list-group-item.active,
|
||
.list-group-item.active:hover,
|
||
.list-group-item.active:focus {
|
||
z-index: 2;
|
||
color: #ffffff;
|
||
background-color: #337ab7;
|
||
border-color: #337ab7;
|
||
}
|
||
.list-group-item.active .list-group-item-heading,
|
||
.list-group-item.active:hover .list-group-item-heading,
|
||
.list-group-item.active:focus .list-group-item-heading,
|
||
.list-group-item.active .list-group-item-heading > small,
|
||
.list-group-item.active:hover .list-group-item-heading > small,
|
||
.list-group-item.active:focus .list-group-item-heading > small,
|
||
.list-group-item.active .list-group-item-heading > .small,
|
||
.list-group-item.active:hover .list-group-item-heading > .small,
|
||
.list-group-item.active:focus .list-group-item-heading > .small {
|
||
color: inherit;
|
||
}
|
||
.list-group-item.active .list-group-item-text,
|
||
.list-group-item.active:hover .list-group-item-text,
|
||
.list-group-item.active:focus .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:hover,
|
||
button.list-group-item-success:hover,
|
||
a.list-group-item-success:focus,
|
||
button.list-group-item-success:focus {
|
||
color: #3c763d;
|
||
background-color: #d0e9c6;
|
||
}
|
||
a.list-group-item-success.active,
|
||
button.list-group-item-success.active,
|
||
a.list-group-item-success.active:hover,
|
||
button.list-group-item-success.active:hover,
|
||
a.list-group-item-success.active:focus,
|
||
button.list-group-item-success.active:focus {
|
||
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:hover,
|
||
button.list-group-item-info:hover,
|
||
a.list-group-item-info:focus,
|
||
button.list-group-item-info:focus {
|
||
color: #31708f;
|
||
background-color: #c4e3f3;
|
||
}
|
||
a.list-group-item-info.active,
|
||
button.list-group-item-info.active,
|
||
a.list-group-item-info.active:hover,
|
||
button.list-group-item-info.active:hover,
|
||
a.list-group-item-info.active:focus,
|
||
button.list-group-item-info.active:focus {
|
||
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:hover,
|
||
button.list-group-item-warning:hover,
|
||
a.list-group-item-warning:focus,
|
||
button.list-group-item-warning:focus {
|
||
color: #8a6d3b;
|
||
background-color: #faf2cc;
|
||
}
|
||
a.list-group-item-warning.active,
|
||
button.list-group-item-warning.active,
|
||
a.list-group-item-warning.active:hover,
|
||
button.list-group-item-warning.active:hover,
|
||
a.list-group-item-warning.active:focus,
|
||
button.list-group-item-warning.active:focus {
|
||
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:hover,
|
||
button.list-group-item-danger:hover,
|
||
a.list-group-item-danger:focus,
|
||
button.list-group-item-danger:focus {
|
||
color: #a94442;
|
||
background-color: #ebcccc;
|
||
}
|
||
a.list-group-item-danger.active,
|
||
button.list-group-item-danger.active,
|
||
a.list-group-item-danger.active:hover,
|
||
button.list-group-item-danger.active:hover,
|
||
a.list-group-item-danger.active:focus,
|
||
button.list-group-item-danger.active:focus {
|
||
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: #ffffff;
|
||
border: 1px solid transparent;
|
||
border-radius: 4px;
|
||
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
||
}
|
||
.panel-body {
|
||
padding: 15px;
|
||
}
|
||
.panel-heading {
|
||
padding: 10px 15px;
|
||
border-bottom: 1px solid transparent;
|
||
border-top-right-radius: 3px;
|
||
border-top-left-radius: 3px;
|
||
}
|
||
.panel-heading > .dropdown .dropdown-toggle {
|
||
color: inherit;
|
||
}
|
||
.panel-title {
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
font-size: 16px;
|
||
color: inherit;
|
||
}
|
||
.panel-title > a,
|
||
.panel-title > small,
|
||
.panel-title > .small,
|
||
.panel-title > small > a,
|
||
.panel-title > .small > a {
|
||
color: inherit;
|
||
}
|
||
.panel-footer {
|
||
padding: 10px 15px;
|
||
background-color: #f5f5f5;
|
||
border-top: 1px solid #dddddd;
|
||
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-right-radius: 3px;
|
||
border-top-left-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-right-radius: 0;
|
||
border-top-left-radius: 0;
|
||
}
|
||
.panel-heading + .list-group .list-group-item:first-child {
|
||
border-top-width: 0;
|
||
}
|
||
.list-group + .panel-footer {
|
||
border-top-width: 0;
|
||
}
|
||
.panel > .table,
|
||
.panel > .table-responsive > .table,
|
||
.panel > .panel-collapse > .table {
|
||
margin-bottom: 0;
|
||
}
|
||
.panel > .table caption,
|
||
.panel > .table-responsive > .table caption,
|
||
.panel > .panel-collapse > .table caption {
|
||
padding-left: 15px;
|
||
padding-right: 15px;
|
||
}
|
||
.panel > .table:first-child,
|
||
.panel > .table-responsive:first-child > .table:first-child {
|
||
border-top-right-radius: 3px;
|
||
border-top-left-radius: 3px;
|
||
}
|
||
.panel > .table:first-child > thead: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-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
|
||
border-top-left-radius: 3px;
|
||
border-top-right-radius: 3px;
|
||
}
|
||
.panel > .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 td:first-child,
|
||
.panel > .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 td:first-child,
|
||
.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:first-child,
|
||
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
|
||
border-top-left-radius: 3px;
|
||
}
|
||
.panel > .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 td:last-child,
|
||
.panel > .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 td:last-child,
|
||
.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:last-child,
|
||
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
|
||
border-top-right-radius: 3px;
|
||
}
|
||
.panel > .table:last-child,
|
||
.panel > .table-responsive:last-child > .table:last-child {
|
||
border-bottom-right-radius: 3px;
|
||
border-bottom-left-radius: 3px;
|
||
}
|
||
.panel > .table:last-child > tbody:last-child > tr:last-child,
|
||
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
|
||
.panel > .table:last-child > tfoot:last-child > tr:last-child,
|
||
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
|
||
border-bottom-left-radius: 3px;
|
||
border-bottom-right-radius: 3px;
|
||
}
|
||
.panel > .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 td:first-child,
|
||
.panel > .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 td:first-child,
|
||
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
|
||
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
|
||
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
|
||
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
|
||
border-bottom-left-radius: 3px;
|
||
}
|
||
.panel > .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 td:last-child,
|
||
.panel > .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 td:last-child,
|
||
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
|
||
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
|
||
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
|
||
.panel > .table-responsive:last-child > .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 #dddddd;
|
||
}
|
||
.panel > .table > tbody:first-child > tr:first-child th,
|
||
.panel > .table > tbody:first-child > tr:first-child td {
|
||
border-top: 0;
|
||
}
|
||
.panel > .table-bordered,
|
||
.panel > .table-responsive > .table-bordered {
|
||
border: 0;
|
||
}
|
||
.panel > .table-bordered > thead > tr > th:first-child,
|
||
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
|
||
.panel > .table-bordered > tbody > tr > th:first-child,
|
||
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
|
||
.panel > .table-bordered > tfoot > tr > th:first-child,
|
||
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
|
||
.panel > .table-bordered > thead > tr > td:first-child,
|
||
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
|
||
.panel > .table-bordered > tbody > tr > td:first-child,
|
||
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
|
||
.panel > .table-bordered > tfoot > tr > td:first-child,
|
||
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
|
||
border-left: 0;
|
||
}
|
||
.panel > .table-bordered > thead > tr > th:last-child,
|
||
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
|
||
.panel > .table-bordered > tbody > tr > th:last-child,
|
||
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
|
||
.panel > .table-bordered > tfoot > tr > th:last-child,
|
||
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
|
||
.panel > .table-bordered > thead > tr > td:last-child,
|
||
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
|
||
.panel > .table-bordered > tbody > tr > td:last-child,
|
||
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
|
||
.panel > .table-bordered > tfoot > tr > td:last-child,
|
||
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
|
||
border-right: 0;
|
||
}
|
||
.panel > .table-bordered > thead > tr:first-child > td,
|
||
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
|
||
.panel > .table-bordered > tbody > tr:first-child > td,
|
||
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
|
||
.panel > .table-bordered > thead > tr:first-child > th,
|
||
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
|
||
.panel > .table-bordered > tbody > tr:first-child > th,
|
||
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
|
||
border-bottom: 0;
|
||
}
|
||
.panel > .table-bordered > tbody > tr:last-child > td,
|
||
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
|
||
.panel > .table-bordered > tfoot > tr:last-child > td,
|
||
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
|
||
.panel > .table-bordered > tbody > tr:last-child > th,
|
||
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
|
||
.panel > .table-bordered > tfoot > tr:last-child > th,
|
||
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
|
||
border-bottom: 0;
|
||
}
|
||
.panel > .table-responsive {
|
||
border: 0;
|
||
margin-bottom: 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 > .panel-body,
|
||
.panel-group .panel-heading + .panel-collapse > .list-group {
|
||
border-top: 1px solid #dddddd;
|
||
}
|
||
.panel-group .panel-footer {
|
||
border-top: 0;
|
||
}
|
||
.panel-group .panel-footer + .panel-collapse .panel-body {
|
||
border-bottom: 1px solid #dddddd;
|
||
}
|
||
.panel-default {
|
||
border-color: #dddddd;
|
||
}
|
||
.panel-default > .panel-heading {
|
||
color: #333333;
|
||
background-color: #f5f5f5;
|
||
border-color: #dddddd;
|
||
}
|
||
.panel-default > .panel-heading + .panel-collapse > .panel-body {
|
||
border-top-color: #dddddd;
|
||
}
|
||
.panel-default > .panel-heading .badge {
|
||
color: #f5f5f5;
|
||
background-color: #333333;
|
||
}
|
||
.panel-default > .panel-footer + .panel-collapse > .panel-body {
|
||
border-bottom-color: #dddddd;
|
||
}
|
||
.panel-primary {
|
||
border-color: #337ab7;
|
||
}
|
||
.panel-primary > .panel-heading {
|
||
color: #ffffff;
|
||
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: #ffffff;
|
||
}
|
||
.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 iframe,
|
||
.embed-responsive embed,
|
||
.embed-responsive object,
|
||
.embed-responsive video {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
bottom: 0;
|
||
height: 100%;
|
||
width: 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, 0.05);
|
||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
||
}
|
||
.well blockquote {
|
||
border-color: #ddd;
|
||
border-color: rgba(0, 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: bold;
|
||
line-height: 1;
|
||
color: #000000;
|
||
text-shadow: 0 1px 0 #ffffff;
|
||
opacity: 0.2;
|
||
filter: alpha(opacity=20);
|
||
}
|
||
.close:hover,
|
||
.close:focus {
|
||
color: #000000;
|
||
text-decoration: none;
|
||
cursor: pointer;
|
||
opacity: 0.5;
|
||
filter: alpha(opacity=50);
|
||
}
|
||
button.close {
|
||
padding: 0;
|
||
cursor: pointer;
|
||
background: transparent;
|
||
border: 0;
|
||
-webkit-appearance: none;
|
||
}
|
||
.modal-open {
|
||
overflow: hidden;
|
||
}
|
||
.modal {
|
||
display: none;
|
||
overflow: hidden;
|
||
position: fixed;
|
||
top: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
left: 0;
|
||
z-index: 1050;
|
||
-webkit-overflow-scrolling: touch;
|
||
outline: 0;
|
||
}
|
||
.modal.fade .modal-dialog {
|
||
-webkit-transform: translate(0, -25%);
|
||
-ms-transform: translate(0, -25%);
|
||
-o-transform: translate(0, -25%);
|
||
transform: translate(0, -25%);
|
||
-webkit-transition: -webkit-transform 0.3s ease-out;
|
||
-o-transition: -o-transform 0.3s ease-out;
|
||
transition: transform 0.3s ease-out;
|
||
}
|
||
.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: #ffffff;
|
||
border: 1px solid #999999;
|
||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||
border-radius: 6px;
|
||
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
|
||
box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
|
||
-webkit-background-clip: padding-box;
|
||
background-clip: padding-box;
|
||
outline: 0;
|
||
}
|
||
.modal-backdrop {
|
||
position: fixed;
|
||
top: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
left: 0;
|
||
z-index: 1040;
|
||
background-color: #000000;
|
||
}
|
||
.modal-backdrop.fade {
|
||
opacity: 0;
|
||
filter: alpha(opacity=0);
|
||
}
|
||
.modal-backdrop.in {
|
||
opacity: 0.5;
|
||
filter: alpha(opacity=50);
|
||
}
|
||
.modal-header {
|
||
padding: 15px;
|
||
border-bottom: 1px solid #e5e5e5;
|
||
min-height: 16.42857143px;
|
||
}
|
||
.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-left: 5px;
|
||
margin-bottom: 0;
|
||
}
|
||
.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, 0.5);
|
||
box-shadow: 0 5px 15px rgba(0, 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-style: normal;
|
||
font-weight: normal;
|
||
letter-spacing: normal;
|
||
line-break: auto;
|
||
line-height: 1.42857143;
|
||
text-align: left;
|
||
text-align: start;
|
||
text-decoration: none;
|
||
text-shadow: none;
|
||
text-transform: none;
|
||
white-space: normal;
|
||
word-break: normal;
|
||
word-spacing: normal;
|
||
word-wrap: normal;
|
||
font-size: 12px;
|
||
opacity: 0;
|
||
filter: alpha(opacity=0);
|
||
}
|
||
.tooltip.in {
|
||
opacity: 0.9;
|
||
filter: alpha(opacity=90);
|
||
}
|
||
.tooltip.top {
|
||
margin-top: -3px;
|
||
padding: 5px 0;
|
||
}
|
||
.tooltip.right {
|
||
margin-left: 3px;
|
||
padding: 0 5px;
|
||
}
|
||
.tooltip.bottom {
|
||
margin-top: 3px;
|
||
padding: 5px 0;
|
||
}
|
||
.tooltip.left {
|
||
margin-left: -3px;
|
||
padding: 0 5px;
|
||
}
|
||
.tooltip-inner {
|
||
max-width: 200px;
|
||
padding: 3px 8px;
|
||
color: #ffffff;
|
||
text-align: center;
|
||
background-color: #000000;
|
||
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: #000000;
|
||
}
|
||
.tooltip.top-left .tooltip-arrow {
|
||
bottom: 0;
|
||
right: 5px;
|
||
margin-bottom: -5px;
|
||
border-width: 5px 5px 0;
|
||
border-top-color: #000000;
|
||
}
|
||
.tooltip.top-right .tooltip-arrow {
|
||
bottom: 0;
|
||
left: 5px;
|
||
margin-bottom: -5px;
|
||
border-width: 5px 5px 0;
|
||
border-top-color: #000000;
|
||
}
|
||
.tooltip.right .tooltip-arrow {
|
||
top: 50%;
|
||
left: 0;
|
||
margin-top: -5px;
|
||
border-width: 5px 5px 5px 0;
|
||
border-right-color: #000000;
|
||
}
|
||
.tooltip.left .tooltip-arrow {
|
||
top: 50%;
|
||
right: 0;
|
||
margin-top: -5px;
|
||
border-width: 5px 0 5px 5px;
|
||
border-left-color: #000000;
|
||
}
|
||
.tooltip.bottom .tooltip-arrow {
|
||
top: 0;
|
||
left: 50%;
|
||
margin-left: -5px;
|
||
border-width: 0 5px 5px;
|
||
border-bottom-color: #000000;
|
||
}
|
||
.tooltip.bottom-left .tooltip-arrow {
|
||
top: 0;
|
||
right: 5px;
|
||
margin-top: -5px;
|
||
border-width: 0 5px 5px;
|
||
border-bottom-color: #000000;
|
||
}
|
||
.tooltip.bottom-right .tooltip-arrow {
|
||
top: 0;
|
||
left: 5px;
|
||
margin-top: -5px;
|
||
border-width: 0 5px 5px;
|
||
border-bottom-color: #000000;
|
||
}
|
||
.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-style: normal;
|
||
font-weight: normal;
|
||
letter-spacing: normal;
|
||
line-break: auto;
|
||
line-height: 1.42857143;
|
||
text-align: left;
|
||
text-align: start;
|
||
text-decoration: none;
|
||
text-shadow: none;
|
||
text-transform: none;
|
||
white-space: normal;
|
||
word-break: normal;
|
||
word-spacing: normal;
|
||
word-wrap: normal;
|
||
font-size: 14px;
|
||
background-color: #ffffff;
|
||
-webkit-background-clip: padding-box;
|
||
background-clip: padding-box;
|
||
border: 1px solid #cccccc;
|
||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||
border-radius: 6px;
|
||
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||
}
|
||
.popover.top {
|
||
margin-top: -10px;
|
||
}
|
||
.popover.right {
|
||
margin-left: 10px;
|
||
}
|
||
.popover.bottom {
|
||
margin-top: 10px;
|
||
}
|
||
.popover.left {
|
||
margin-left: -10px;
|
||
}
|
||
.popover-title {
|
||
margin: 0;
|
||
padding: 8px 14px;
|
||
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 {
|
||
border-width: 10px;
|
||
content: "";
|
||
}
|
||
.popover.top > .arrow {
|
||
left: 50%;
|
||
margin-left: -11px;
|
||
border-bottom-width: 0;
|
||
border-top-color: #999999;
|
||
border-top-color: rgba(0, 0, 0, 0.25);
|
||
bottom: -11px;
|
||
}
|
||
.popover.top > .arrow:after {
|
||
content: " ";
|
||
bottom: 1px;
|
||
margin-left: -10px;
|
||
border-bottom-width: 0;
|
||
border-top-color: #ffffff;
|
||
}
|
||
.popover.right > .arrow {
|
||
top: 50%;
|
||
left: -11px;
|
||
margin-top: -11px;
|
||
border-left-width: 0;
|
||
border-right-color: #999999;
|
||
border-right-color: rgba(0, 0, 0, 0.25);
|
||
}
|
||
.popover.right > .arrow:after {
|
||
content: " ";
|
||
left: 1px;
|
||
bottom: -10px;
|
||
border-left-width: 0;
|
||
border-right-color: #ffffff;
|
||
}
|
||
.popover.bottom > .arrow {
|
||
left: 50%;
|
||
margin-left: -11px;
|
||
border-top-width: 0;
|
||
border-bottom-color: #999999;
|
||
border-bottom-color: rgba(0, 0, 0, 0.25);
|
||
top: -11px;
|
||
}
|
||
.popover.bottom > .arrow:after {
|
||
content: " ";
|
||
top: 1px;
|
||
margin-left: -10px;
|
||
border-top-width: 0;
|
||
border-bottom-color: #ffffff;
|
||
}
|
||
.popover.left > .arrow {
|
||
top: 50%;
|
||
right: -11px;
|
||
margin-top: -11px;
|
||
border-right-width: 0;
|
||
border-left-color: #999999;
|
||
border-left-color: rgba(0, 0, 0, 0.25);
|
||
}
|
||
.popover.left > .arrow:after {
|
||
content: " ";
|
||
right: 1px;
|
||
border-right-width: 0;
|
||
border-left-color: #ffffff;
|
||
bottom: -10px;
|
||
}
|
||
.carousel {
|
||
position: relative;
|
||
}
|
||
.carousel-inner {
|
||
position: relative;
|
||
overflow: hidden;
|
||
width: 100%;
|
||
}
|
||
.carousel-inner > .item {
|
||
display: none;
|
||
position: relative;
|
||
-webkit-transition: 0.6s ease-in-out left;
|
||
-o-transition: 0.6s ease-in-out left;
|
||
transition: 0.6s ease-in-out left;
|
||
}
|
||
.carousel-inner > .item > img,
|
||
.carousel-inner > .item > a > img {
|
||
line-height: 1;
|
||
}
|
||
@media all and (transform-3d), (-webkit-transform-3d) {
|
||
.carousel-inner > .item {
|
||
-webkit-transition: -webkit-transform 0.6s ease-in-out;
|
||
-o-transition: -o-transform 0.6s ease-in-out;
|
||
transition: transform 0.6s ease-in-out;
|
||
-webkit-backface-visibility: hidden;
|
||
backface-visibility: hidden;
|
||
-webkit-perspective: 1000px;
|
||
perspective: 1000px;
|
||
}
|
||
.carousel-inner > .item.next,
|
||
.carousel-inner > .item.active.right {
|
||
-webkit-transform: translate3d(100%, 0, 0);
|
||
transform: translate3d(100%, 0, 0);
|
||
left: 0;
|
||
}
|
||
.carousel-inner > .item.prev,
|
||
.carousel-inner > .item.active.left {
|
||
-webkit-transform: translate3d(-100%, 0, 0);
|
||
transform: translate3d(-100%, 0, 0);
|
||
left: 0;
|
||
}
|
||
.carousel-inner > .item.next.left,
|
||
.carousel-inner > .item.prev.right,
|
||
.carousel-inner > .item.active {
|
||
-webkit-transform: translate3d(0, 0, 0);
|
||
transform: translate3d(0, 0, 0);
|
||
left: 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;
|
||
left: 0;
|
||
bottom: 0;
|
||
width: 15%;
|
||
opacity: 0.5;
|
||
filter: alpha(opacity=50);
|
||
font-size: 20px;
|
||
color: #ffffff;
|
||
text-align: center;
|
||
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
|
||
}
|
||
.carousel-control.left {
|
||
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
|
||
background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
|
||
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
|
||
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
|
||
background-repeat: repeat-x;
|
||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
|
||
}
|
||
.carousel-control.right {
|
||
left: auto;
|
||
right: 0;
|
||
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
|
||
background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
|
||
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
|
||
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
|
||
background-repeat: repeat-x;
|
||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
|
||
}
|
||
.carousel-control:hover,
|
||
.carousel-control:focus {
|
||
outline: 0;
|
||
color: #ffffff;
|
||
text-decoration: none;
|
||
opacity: 0.9;
|
||
filter: alpha(opacity=90);
|
||
}
|
||
.carousel-control .icon-prev,
|
||
.carousel-control .icon-next,
|
||
.carousel-control .glyphicon-chevron-left,
|
||
.carousel-control .glyphicon-chevron-right {
|
||
position: absolute;
|
||
top: 50%;
|
||
margin-top: -10px;
|
||
z-index: 5;
|
||
display: inline-block;
|
||
}
|
||
.carousel-control .icon-prev,
|
||
.carousel-control .glyphicon-chevron-left {
|
||
left: 50%;
|
||
margin-left: -10px;
|
||
}
|
||
.carousel-control .icon-next,
|
||
.carousel-control .glyphicon-chevron-right {
|
||
right: 50%;
|
||
margin-right: -10px;
|
||
}
|
||
.carousel-control .icon-prev,
|
||
.carousel-control .icon-next {
|
||
width: 20px;
|
||
height: 20px;
|
||
line-height: 1;
|
||
font-family: serif;
|
||
}
|
||
.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%;
|
||
margin-left: -30%;
|
||
padding-left: 0;
|
||
list-style: none;
|
||
text-align: center;
|
||
}
|
||
.carousel-indicators li {
|
||
display: inline-block;
|
||
width: 10px;
|
||
height: 10px;
|
||
margin: 1px;
|
||
text-indent: -999px;
|
||
border: 1px solid #ffffff;
|
||
border-radius: 10px;
|
||
cursor: pointer;
|
||
background-color: #000 \9;
|
||
background-color: rgba(0, 0, 0, 0);
|
||
}
|
||
.carousel-indicators .active {
|
||
margin: 0;
|
||
width: 12px;
|
||
height: 12px;
|
||
background-color: #ffffff;
|
||
}
|
||
.carousel-caption {
|
||
position: absolute;
|
||
left: 15%;
|
||
right: 15%;
|
||
bottom: 20px;
|
||
z-index: 10;
|
||
padding-top: 20px;
|
||
padding-bottom: 20px;
|
||
color: #ffffff;
|
||
text-align: center;
|
||
text-shadow: 0 1px 2px rgba(0, 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-prev,
|
||
.carousel-control .icon-next {
|
||
width: 30px;
|
||
height: 30px;
|
||
margin-top: -15px;
|
||
font-size: 30px;
|
||
}
|
||
.carousel-control .glyphicon-chevron-left,
|
||
.carousel-control .icon-prev {
|
||
margin-left: -15px;
|
||
}
|
||
.carousel-control .glyphicon-chevron-right,
|
||
.carousel-control .icon-next {
|
||
margin-right: -15px;
|
||
}
|
||
.carousel-caption {
|
||
left: 20%;
|
||
right: 20%;
|
||
padding-bottom: 30px;
|
||
}
|
||
.carousel-indicators {
|
||
bottom: 20px;
|
||
}
|
||
}
|
||
.clearfix:before,
|
||
.clearfix:after,
|
||
.dl-horizontal dd:before,
|
||
.dl-horizontal dd:after,
|
||
.container:before,
|
||
.container:after,
|
||
.container-fluid:before,
|
||
.container-fluid:after,
|
||
.row:before,
|
||
.row:after,
|
||
.form-horizontal .form-group:before,
|
||
.form-horizontal .form-group:after,
|
||
.btn-toolbar:before,
|
||
.btn-toolbar:after,
|
||
.btn-group-vertical > .btn-group:before,
|
||
.btn-group-vertical > .btn-group:after,
|
||
.nav:before,
|
||
.nav:after,
|
||
.navbar:before,
|
||
.navbar:after,
|
||
.navbar-header:before,
|
||
.navbar-header:after,
|
||
.navbar-collapse:before,
|
||
.navbar-collapse:after,
|
||
.pager:before,
|
||
.pager:after,
|
||
.panel-body:before,
|
||
.panel-body:after,
|
||
.modal-footer:before,
|
||
.modal-footer:after {
|
||
content: " ";
|
||
display: table;
|
||
}
|
||
.clearfix:after,
|
||
.dl-horizontal dd:after,
|
||
.container:after,
|
||
.container-fluid:after,
|
||
.row:after,
|
||
.form-horizontal .form-group:after,
|
||
.btn-toolbar:after,
|
||
.btn-group-vertical > .btn-group:after,
|
||
.nav:after,
|
||
.navbar:after,
|
||
.navbar-header:after,
|
||
.navbar-collapse:after,
|
||
.pager:after,
|
||
.panel-body:after,
|
||
.modal-footer:after {
|
||
clear: both;
|
||
}
|
||
.center-block {
|
||
display: block;
|
||
margin-left: auto;
|
||
margin-right: 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-xs,
|
||
.visible-sm,
|
||
.visible-md,
|
||
.visible-lg {
|
||
display: none !important;
|
||
}
|
||
.visible-xs-block,
|
||
.visible-xs-inline,
|
||
.visible-xs-inline-block,
|
||
.visible-sm-block,
|
||
.visible-sm-inline,
|
||
.visible-sm-inline-block,
|
||
.visible-md-block,
|
||
.visible-md-inline,
|
||
.visible-md-inline-block,
|
||
.visible-lg-block,
|
||
.visible-lg-inline,
|
||
.visible-lg-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;
|
||
}
|
||
th.visible-xs,
|
||
td.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;
|
||
}
|
||
th.visible-sm,
|
||
td.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;
|
||
}
|
||
th.visible-md,
|
||
td.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;
|
||
}
|
||
th.visible-lg,
|
||
td.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;
|
||
}
|
||
th.visible-print,
|
||
td.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;
|
||
}
|
||
}
|
||
</style>
|
||
<style>.com { color: #93a1a1; }
|
||
.lit { color: #195f91; }
|
||
.pun, .opn, .clo { color: #93a1a1; }
|
||
.fun { color: #dc322f; }
|
||
.str, .atv { color: #D14; }
|
||
.kwd, .prettyprint .tag { color: #1e347b; }
|
||
.typ, .atn, .dec, .var { color: teal; }
|
||
.pln { color: #48484c; }
|
||
|
||
.prettyprint {
|
||
padding: 8px;
|
||
background-color: #f7f7f9;
|
||
border: 1px solid #e1e1e8;
|
||
}
|
||
.prettyprint.linenums {
|
||
-webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
|
||
-moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
|
||
box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
|
||
}
|
||
|
||
/* Specify class=linenums on a pre to get line numbering */
|
||
ol.linenums {
|
||
margin: 0 0 0 33px; /* IE indents via margin-left */
|
||
}
|
||
ol.linenums li {
|
||
padding-left: 12px;
|
||
color: #bebec5;
|
||
line-height: 20px;
|
||
text-shadow: 0 1px 0 #fff;
|
||
}
|
||
|
||
.str { color:#181; font-style:italic }
|
||
.kwd { color:#369 }
|
||
.com { color:#666 }
|
||
.typ { color:#c40 }
|
||
.lit { color:#900 }
|
||
.pun { color:#000; font-weight:bold }
|
||
.pln { color:#333 }
|
||
.tag { color:#369; font-weight:bold }
|
||
.atn { color:#939; font-weight:bold }
|
||
.atv { color:#181 }
|
||
.dec { color:#606 }
|
||
|
||
.com{ color: #A62A00; }
|
||
.typ{ color: #0A67A3; }
|
||
.kwd{ color: #3B0470; }</style>
|
||
<style>nav.sidebar {
|
||
width: 300px;
|
||
margin-top: 75px;
|
||
box-shadow: inset 2px 0px 0px 0px #CCC;
|
||
flex-grow: 0;
|
||
flex-shrink: 0;
|
||
}
|
||
nav.sidebar #searchfield {
|
||
width: 100%;
|
||
background-color: #f5f5f5;
|
||
border-radius: 4px;
|
||
}
|
||
nav.sidebar .sidebar-package-header {
|
||
padding-left: 18px;
|
||
padding-bottom: 5px;
|
||
padding-top: 10px;
|
||
position: relative;
|
||
vertical-align: baseline;
|
||
}
|
||
nav.sidebar .sidebar-brand {
|
||
font-size: 14pt;
|
||
font-family: bitter;
|
||
color: #333;
|
||
}
|
||
nav.sidebar .sidebar-brand:hover {
|
||
text-decoration: none;
|
||
color: #000;
|
||
}
|
||
nav.sidebar .package-version {
|
||
font-family: bitter;
|
||
margin-left: 8px;
|
||
right: 10px;
|
||
position: absolute;
|
||
padding-right: 10px;
|
||
}
|
||
|
||
nav.navbar .package-version {
|
||
display: inline-block;
|
||
padding-top: 15px;
|
||
font-size: 18px;
|
||
line-height: 20px;
|
||
color: #777;
|
||
}
|
||
|
||
.wrapper {
|
||
display: flex;
|
||
align-items: start;
|
||
}
|
||
|
||
.sidenav-l0 {
|
||
padding-left: 0px;
|
||
font-weight: bold;
|
||
line-height: 1.5;
|
||
margin-bottom: 0px;
|
||
}
|
||
.sidenav-l0 li {
|
||
position: relative;
|
||
display: block;
|
||
list-style: none;
|
||
}
|
||
.sidenav-l0 a {
|
||
position: relative;
|
||
display: block;
|
||
padding-left: 10px;
|
||
padding-top: 0px;
|
||
padding-bottom: 5px;
|
||
}
|
||
.sidenav-l0 a:hover, .sidenav-l0 a:focus {
|
||
text-decoration: none;
|
||
}
|
||
.sidenav-l0 li > a:hover, .sidenav-l0 li.active > a {
|
||
padding-left: 8px;
|
||
border-width: 0px 0px 0px 2px;
|
||
border-color: #000000;
|
||
border-style: solid;
|
||
background-color: transparent;
|
||
}
|
||
.sidenav-l0 li.active > a {
|
||
font-weight: bold;
|
||
}
|
||
|
||
li p {
|
||
margin-bottom: 0px;
|
||
}
|
||
|
||
.sidenav-l1 {
|
||
font-weight: normal;
|
||
padding-left: 0px;
|
||
}
|
||
.sidenav-l1 li > a {
|
||
padding-left: 30px;
|
||
}
|
||
.sidenav-l1 li > a:hover, .sidenav-l1 li.active > a {
|
||
padding-left: 28px;
|
||
}
|
||
|
||
.sidenav-l2 {
|
||
font-weight: normal;
|
||
padding-left: 0px;
|
||
}
|
||
.sidenav-l2 li > a {
|
||
padding-left: 40px;
|
||
}
|
||
.sidenav-l2 li > a:hover, .sidenav-l2 li.active > a {
|
||
padding-left: 38px;
|
||
}
|
||
|
||
.sidenav-l3 {
|
||
font-weight: normal;
|
||
padding-left: 0px;
|
||
}
|
||
.sidenav-l3 li > a {
|
||
padding-left: 50px;
|
||
}
|
||
.sidenav-l3 li > a:hover, .sidenav-l3 li.active > a {
|
||
padding-left: 48px;
|
||
}
|
||
|
||
.sidenav-l4 {
|
||
font-weight: normal;
|
||
padding-left: 0px;
|
||
}
|
||
.sidenav-l4 li > a {
|
||
padding-left: 60px;
|
||
}
|
||
.sidenav-l4 li > a:hover, .sidenav-l4 li.active > a {
|
||
padding-left: 58px;
|
||
}
|
||
|
||
.arrow-down {
|
||
width: 0;
|
||
height: 0;
|
||
border-left: 4px solid transparent;
|
||
border-right: 4px solid transparent;
|
||
border-top: 4px solid #333;
|
||
margin-right: 4px;
|
||
display: inline-block;
|
||
}
|
||
|
||
.arrow-none {
|
||
width: 0;
|
||
height: 0;
|
||
margin-right: 12px;
|
||
display: inline-block;
|
||
}
|
||
|
||
.arrow-right {
|
||
width: 0;
|
||
height: 0;
|
||
border-top: 4px solid transparent;
|
||
border-bottom: 4px solid transparent;
|
||
border-left: 4px solid #333;
|
||
margin-right: 8px;
|
||
display: inline-block;
|
||
}
|
||
|
||
.container {
|
||
margin-right: auto;
|
||
margin-left: auto;
|
||
padding-left: 15px;
|
||
padding-right: 15px;
|
||
padding-top: 25px;
|
||
}
|
||
|
||
/*@media (min-width: 768px) {
|
||
.container {
|
||
width: 750px;
|
||
}
|
||
}
|
||
@media (min-width: 992px) {
|
||
.container {
|
||
width: 970px;
|
||
}
|
||
}
|
||
@media (min-width: 1200px) {
|
||
.container {
|
||
width: 1170px;
|
||
}
|
||
}
|
||
@media (min-width: 1200px + 300px) {
|
||
.container {
|
||
width: 1170px + 300px;
|
||
}
|
||
}*/
|
||
body {
|
||
font-family: "Source Sans Pro", sans-serif;
|
||
font-size: 15px;
|
||
}
|
||
|
||
h1, h2, h3, h4 {
|
||
font-family: "Bitter", serif;
|
||
}
|
||
|
||
span.file-location {
|
||
color: #BDBDBD;
|
||
}
|
||
|
||
.sidebar {
|
||
display: block;
|
||
font-size: 80%;
|
||
line-height: 50%;
|
||
}
|
||
|
||
.memberdef {
|
||
position: relative;
|
||
border-width: 2px;
|
||
border-style: solid;
|
||
border-width: 2px;
|
||
border-color: black;
|
||
box-shadow: 0px 2px 5px #CCC;
|
||
-webkit-border-radius: 5;
|
||
-moz-border-radius: 5;
|
||
border-radius: 5;
|
||
margin: 5px;
|
||
padding: 5px;
|
||
}
|
||
.memberdef h3 {
|
||
margin-top: 0px;
|
||
padding-top: 3px;
|
||
font-size: 20px;
|
||
line-height: normal;
|
||
}
|
||
|
||
table.compound-view tr {
|
||
margin: 4px;
|
||
}
|
||
table.compound-view tr td {
|
||
font-size: 11px;
|
||
}
|
||
table.compound-view tr a {
|
||
transition: background-color 0.1s;
|
||
-webkit-transition: background-color 0.1s;
|
||
display: block;
|
||
border-radius: 5px;
|
||
border-style: solid;
|
||
border-width: 1px;
|
||
border-color: #FFF;
|
||
height: 60px;
|
||
background-color: #EEE;
|
||
text-align: center;
|
||
padding: 5px;
|
||
color: #222;
|
||
}
|
||
table.compound-view tr a b {
|
||
color: #0D5484;
|
||
}
|
||
table.compound-view tr a:hover {
|
||
text-decoration: none;
|
||
background-color: #DDD;
|
||
}
|
||
|
||
video, .youtube-video {
|
||
border-radius: 3px;
|
||
margin: 5px;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
max-width: 100%;
|
||
max-height: 800px;
|
||
display: block;
|
||
border: 1px solid #444;
|
||
}
|
||
|
||
img {
|
||
border-radius: 3px;
|
||
margin: 5px;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
max-width: 100%;
|
||
max-height: 800px;
|
||
display: block;
|
||
border: 1px solid #444;
|
||
}
|
||
|
||
.borderless img {
|
||
border: none;
|
||
}
|
||
|
||
code {
|
||
display: block;
|
||
white-space: pre;
|
||
overflow: auto;
|
||
margin-top: 5px;
|
||
}
|
||
|
||
/** Needs a bit of resetting since it can turn out basically anywhere in the DOM */
|
||
.tooltip {
|
||
margin: 0px;
|
||
font-size: 11px;
|
||
font-weight: normal;
|
||
font-style: normal;
|
||
text-decoration: none;
|
||
line-height: normal;
|
||
white-space: normal;
|
||
font-family: Hevetica, Arial, Sans-serif;
|
||
text-shadow: none;
|
||
}
|
||
.tooltip p {
|
||
display: inline;
|
||
margin: 0px;
|
||
}
|
||
|
||
.label {
|
||
margin-right: 2px;
|
||
margin-left: 2px;
|
||
}
|
||
|
||
.empty-section {
|
||
font-size: 0.9em;
|
||
color: #BBB;
|
||
}
|
||
|
||
.compound-kind {
|
||
color: #888;
|
||
}
|
||
|
||
.simplesect {
|
||
border-style: solid;
|
||
border-width: 0px 0px 0px 4px;
|
||
padding-left: 5px;
|
||
margin-bottom: 5px;
|
||
}
|
||
.simplesect h3 {
|
||
font-size: 16px;
|
||
line-height: normal;
|
||
margin-top: 2px;
|
||
margin-bottom: 3px;
|
||
}
|
||
.simplesect > p {
|
||
margin-top: 0px;
|
||
margin-bottom: 0px;
|
||
margin-left: 14px;
|
||
}
|
||
|
||
.simplesect-return {
|
||
border-color: #505050;
|
||
}
|
||
|
||
.simplesect-author, .simplesect-authors {
|
||
border-color: #0BAA0B;
|
||
}
|
||
|
||
.simplesect-version {
|
||
border-color: #0BAA0B;
|
||
}
|
||
|
||
.simplesect-since {
|
||
border-color: #D48B0D;
|
||
}
|
||
|
||
.simplesect-date {
|
||
border-color: #505050;
|
||
}
|
||
|
||
.simplesect-note {
|
||
border-color: #15458C;
|
||
}
|
||
|
||
.simplesect-warning {
|
||
border-color: #D40D0D;
|
||
}
|
||
|
||
.simplesect-pre {
|
||
border-color: #505050;
|
||
}
|
||
|
||
.simplesect-post {
|
||
border-color: #505050;
|
||
}
|
||
|
||
.simplesect-copyright {
|
||
border-color: #505050;
|
||
}
|
||
|
||
.simplesect-invariant {
|
||
border-color: #505050;
|
||
}
|
||
|
||
.simplesect-remark {
|
||
border-color: #15458C;
|
||
}
|
||
|
||
.simplesect-attention {
|
||
border-color: #D48B0D;
|
||
}
|
||
|
||
.simplesect-par {
|
||
border-color: #505050;
|
||
}
|
||
|
||
.simplesect-rcs {
|
||
border-color: #505050;
|
||
}
|
||
|
||
.simplesect-see {
|
||
border-color: #0BAA0B;
|
||
}
|
||
|
||
.simplesect-deprecated {
|
||
border-color: #303030;
|
||
}
|
||
|
||
.member-list .member-brief {
|
||
font-family: monospace;
|
||
}
|
||
.member-list .member-brief .member-name {
|
||
color: #337ab7;
|
||
font-weight: bold;
|
||
}
|
||
.member-list .member-brief .member-paramlist {
|
||
color: #5b5b5b;
|
||
}
|
||
.member-list .member-desc p {
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.member-prot {
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.member-list-item-header {
|
||
padding-top: 5px;
|
||
padding-bottom: 1px;
|
||
}
|
||
.member-list-item-header p {
|
||
margin-top: 0px;
|
||
margin-bottom: 0px;
|
||
}
|
||
|
||
.member-list-item-header:focus, .member-list-item-header:hover {
|
||
background-color: rgba(0, 0, 0, 0.05);
|
||
}
|
||
|
||
table.member-list-section td {
|
||
padding-top: 0.1em;
|
||
padding-bottom: 0.1em;
|
||
}
|
||
table.member-list-section .member-desc {
|
||
width: 100%;
|
||
}
|
||
table.member-list-section .member-desc, table.member-list-section .member-name, table.member-list-section .member-type {
|
||
font-size: 0.9em;
|
||
margin-bottom: 0px;
|
||
padding-bottom: 0px;
|
||
}
|
||
table.member-list-section a, table.member-list-section p, table.member-list-section span {
|
||
-webkit-margin-after: 0px;
|
||
line-height: 1.5em;
|
||
vertical-align: center;
|
||
}
|
||
|
||
.member-detailed {
|
||
background: #EEE;
|
||
border-bottom: 1px #AAA solid;
|
||
}
|
||
.member-detailed .member-name {
|
||
font-weight: bold;
|
||
}
|
||
@media print {
|
||
.member-detailed {
|
||
display: block;
|
||
}
|
||
}
|
||
|
||
.member-params-detail {
|
||
margin-left: 30px;
|
||
margin-top: 5px;
|
||
}
|
||
.member-params-detail td, .member-params-detail th {
|
||
padding-left: 8px;
|
||
padding-right: 8px;
|
||
padding-top: 2px;
|
||
padding-bottom: 2px;
|
||
vertical-align: top;
|
||
}
|
||
.member-params-detail td p, .member-params-detail th p {
|
||
margin: 0 0 5px;
|
||
}
|
||
.member-params-detail .param-name {
|
||
color: #000;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.protection {
|
||
display: inline;
|
||
padding: 0.4em 0.6em 0em 0.6em;
|
||
margin-right: 0.2em;
|
||
font-size: 75%;
|
||
font-weight: bold;
|
||
line-height: 1;
|
||
color: #ffffff;
|
||
text-align: center;
|
||
white-space: nowrap;
|
||
vertical-align: baseline;
|
||
border-radius: 0.3em;
|
||
background-color: #fc20e6;
|
||
}
|
||
|
||
.member-side-prot {
|
||
margin: 5px 5px 5px 0px;
|
||
}
|
||
|
||
@media (min-width: 908px) {
|
||
.member-side-prot {
|
||
margin: 0px;
|
||
position: absolute;
|
||
left: -75px;
|
||
width: 70px;
|
||
text-align: right;
|
||
}
|
||
.member-side-prot span {
|
||
margin-bottom: 3px;
|
||
}
|
||
}
|
||
.member-top-prot {
|
||
position: absolute;
|
||
left: 0px;
|
||
top: 0px;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: #EEE;
|
||
display: none;
|
||
padding: 5px 5px 5px 15px;
|
||
line-height: 50%;
|
||
border-top: 1px #AAA solid;
|
||
}
|
||
.member-top-prot .protection {
|
||
display: inline-block;
|
||
padding: 0.4em 0.6em 0.4em 0.6em;
|
||
}
|
||
|
||
.member-side-prot {
|
||
line-height: 50%;
|
||
}
|
||
.member-side-prot .protection {
|
||
display: inline-block;
|
||
padding: 0.4em 0.6em 0.4em 0.6em;
|
||
}
|
||
|
||
.deprecated {
|
||
text-decoration: line-through;
|
||
text-decoration-color: #555;
|
||
}
|
||
|
||
.protection-public {
|
||
background-color: #5cb85c;
|
||
}
|
||
|
||
.protection-private {
|
||
background-color: #666666;
|
||
}
|
||
|
||
.protection-protected {
|
||
background-color: #c1c1c1;
|
||
}
|
||
|
||
.protection-package {
|
||
background-color: #7f3b2c;
|
||
}
|
||
|
||
.protection-abstract {
|
||
background-color: #865add;
|
||
}
|
||
|
||
.protection-readonly {
|
||
background-color: #f0ad4e;
|
||
}
|
||
|
||
.protection-static {
|
||
background-color: #5bc0de;
|
||
}
|
||
|
||
a:focus {
|
||
outline: none;
|
||
}
|
||
|
||
.member-list {
|
||
list-style-type: none;
|
||
padding-left: 0px;
|
||
}
|
||
.member-list ul {
|
||
list-style-type: none;
|
||
padding-left: 0px;
|
||
}
|
||
|
||
.member-depth-1 {
|
||
padding-left: 32px;
|
||
}
|
||
|
||
.member-depth-2 {
|
||
padding-left: 52px;
|
||
}
|
||
|
||
.member-depth-3 {
|
||
padding-left: 72px;
|
||
}
|
||
|
||
.member-depth-4 {
|
||
padding-left: 92px;
|
||
}
|
||
|
||
.member-depth-5 {
|
||
padding-left: 112px;
|
||
}
|
||
|
||
.member-depth-6, .member-depth-7, .member-depth-8 {
|
||
padding-left: 132px;
|
||
}
|
||
|
||
.header-version {
|
||
position: absolute;
|
||
right: 20px;
|
||
top: 0;
|
||
vertical-align: center;
|
||
line-height: 50px;
|
||
color: #777;
|
||
}
|
||
|
||
.inner-dropdown-menu {
|
||
list-style: none;
|
||
font-size: 14px;
|
||
text-align: left;
|
||
padding-left: 0px;
|
||
}
|
||
.inner-dropdown-menu > li > a {
|
||
display: block;
|
||
padding: 3px 20px 3px 40px;
|
||
clear: both;
|
||
font-weight: normal;
|
||
line-height: 1.42857143;
|
||
color: #333333;
|
||
white-space: nowrap;
|
||
}
|
||
.inner-dropdown-menu > li > a:hover,
|
||
.inner-dropdown-menu > li > a:focus {
|
||
text-decoration: none;
|
||
color: #262626;
|
||
background-color: #f5f5f5;
|
||
}
|
||
.inner-dropdown-menu > .active > a,
|
||
.inner-dropdown-menu > .active > a:hover,
|
||
.inner-dropdown-menu > .active > a:focus {
|
||
color: #ffffff;
|
||
text-decoration: none;
|
||
outline: 0;
|
||
background-color: #337ab7;
|
||
}
|
||
|
||
.dropdown-menu a {
|
||
height: 26px;
|
||
}
|
||
.dropdown-menu a .glyphicon {
|
||
margin-right: 8px;
|
||
padding-top: 1px;
|
||
}
|
||
.dropdown-menu a small {
|
||
float: right;
|
||
margin-left: 10px;
|
||
line-height: 182%;
|
||
}
|
||
|
||
.search-dropdown-align {
|
||
margin-left: 0px;
|
||
min-width: 208px;
|
||
}
|
||
|
||
@keyframes shadowPulse {
|
||
0% {
|
||
box-shadow: 0px 0px 0px rgba(71, 91, 118, 0.7);
|
||
}
|
||
10% {
|
||
box-shadow: 0px 0px 0px rgba(71, 91, 118, 0.7);
|
||
}
|
||
50% {
|
||
box-shadow: 0px 0px 10px rgba(71, 91, 118, 0.7);
|
||
}
|
||
100% {
|
||
box-shadow: 0px 0px 0px rgba(71, 91, 118, 0.7);
|
||
}
|
||
}
|
||
.shadowPulse {
|
||
animation-name: shadowPulse;
|
||
animation-duration: 1s;
|
||
animation-iteration-count: 2;
|
||
animation-timing-function: ease;
|
||
}
|
||
|
||
#banner {
|
||
width: 100%;
|
||
display: block;
|
||
text-align: center;
|
||
background: #f0af0b;
|
||
padding-top: 7px;
|
||
color: #000;
|
||
overflow: hidden;
|
||
padding-bottom: 6px;
|
||
}
|
||
#banner a {
|
||
color: #000;
|
||
text-decoration: underline;
|
||
}
|
||
|
||
h1 {
|
||
margin-top: 0px;
|
||
}
|
||
|
||
table.table-filled {
|
||
border: 1px solid #e1e1e8;
|
||
border-radius: 3px;
|
||
border-collapse: separate;
|
||
background-color: #f7f7f9;
|
||
}
|
||
|
||
table.horizontalAlternative2D3D th {
|
||
text-align: center;
|
||
}
|
||
table.horizontalAlternative2D3D th.Alt2D {
|
||
background: #6599e7;
|
||
}
|
||
table.horizontalAlternative2D3D th.Alt3D {
|
||
background: #ed8585;
|
||
}
|
||
table.horizontalAlternative2D3D td {
|
||
padding: 10px;
|
||
width: 50%;
|
||
vertical-align: top;
|
||
}
|
||
table.horizontalAlternative2D3D td.Alt2D {
|
||
background: #6599e755;
|
||
}
|
||
table.horizontalAlternative2D3D td.Alt3D {
|
||
background: #ed858555;
|
||
}
|
||
|
||
.inspector-field {
|
||
margin-left: 20px;
|
||
}
|
||
|
||
.prettyprint {
|
||
margin-bottom: 10px;
|
||
}
|
||
|
||
/*# sourceMappingURL=style.css.map */
|
||
</style>
|
||
<style>@font-face {
|
||
font-family: 'Bitter';
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
src: local('Bitter Regular'), local('Bitter-Regular'), url(https://fonts.gstatic.com/s/bitter/v13/rax8HiqOu8IVPmn7f4xs.ttf) format('truetype');
|
||
}
|
||
</style>
|
||
<script type="text/javascript">var pathToRoot = "";</script>
|
||
</head>
|
||
<body>
|
||
<div id="banner"></div>
|
||
<div class="container">
|
||
<div class="wrapper">
|
||
<nav class="sidebar hidden-print hidden-sm hidden-xs">
|
||
<ul class="sidenav-l0">
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/changelog.html'><span class='arrow-none'></span>Changelog</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/beginner.html'><span class='arrow-down'></span>Get Started</a>
|
||
<ul class='sidenav-l1'>
|
||
<li class='active'>
|
||
<a href='http://arongranberg.com/astar/docs/getstarted.html'><span class='arrow-down'></span>Get Started With The A* Pathfinding Project</a>
|
||
<ul class='sidenav-l2'>
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/custom_movement_script.html'><span class='arrow-none'></span>Writing a movement script</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/getstarted2.html'><span class='arrow-right'></span>Using navmeshes</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/inspector.html'><span class='arrow-none'></span>The A* Inspector</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/graphtypes.html'><span class='arrow-none'></span>Graph Types</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/errormessages.html'><span class='arrow-none'></span>Error messages</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/javscript.html'><span class='arrow-none'></span>Working with Javascript</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/agentmovement.html'><span class='arrow-right'></span>Agent Movement</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/graphgeneration.html'><span class='arrow-right'></span>Graph Generation</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/deploying.html'><span class='arrow-right'></span>Deploying</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/misc.html'><span class='arrow-right'></span>Misc</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/deprecated.html'><span class='arrow-none'></span>Deprecated List</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/examples2.html'><span class='arrow-none'></span>Examples</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/groups.html'><span class='arrow-none'></span>Groups</a>
|
||
</li>
|
||
|
||
<li class=''>
|
||
<a href='http://arongranberg.com/astar/docs/classes.html'><span class='arrow-none'></span>Classes</a>
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
</nav> <div style="flex-grow: 1; min-width: 0;">
|
||
<nav class="navbar navbar-default">
|
||
<div class="container-fluid">
|
||
<div class="navbar-header">
|
||
<a class="navbar-brand" href="index.html">A* Pathfinding Project</a>
|
||
<span class="package-version"">4.2.17</span>
|
||
</div>
|
||
<div class="collapse navbar-collapse">
|
||
<ul class="nav navbar-nav">
|
||
</ul>
|
||
<ul class="nav navbar-nav navbar-right">
|
||
<li>
|
||
<form id="searchform" style="display: none;" class="navbar-form">
|
||
<div class="form-group">
|
||
<input type="text" autocomplete="off" id="searchfield" class="form-control" placeholder="Search">
|
||
</div>
|
||
</form>
|
||
<ul id="search-dropdown" class="dropdown-menu search-dropdown-align">
|
||
<li><a href="http://arongranberg.com/astar/docs/#">Action</a></li>
|
||
<li><a href="http://arongranberg.com/astar/docs/#">Another action</a></li>
|
||
<li><a href="http://arongranberg.com/astar/docs/#">Something else here</a></li>
|
||
<li role="separator" class="divider"></li>
|
||
<li><a href="http://arongranberg.com/astar/docs/#">Separated link</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</nav> <div class="row">
|
||
<article class="col-md-12">
|
||
|
||
<h1>Get Started With The A* Pathfinding Project</h1><div class='alert alert-danger' role='alert'>This is an excerpt from the full documentation. You can view the full documentation <a href='http://arongranberg.com/astar/docs'>here</a>. Most links on this page will just take you to the full documentation.</div>
|
||
|
||
<p>Get Started with the A* Pathfinding Project. </p>
|
||
<p>Get Started with the A* Pathfinding Project</p><p>Pathfinding is all about finding the best path between point A and B. This is what the A* Pathfinding Project does, in this tutorial you will learn how to set up the project in a new scene and get a simple AI moving while avoiding obstacles.</p><p>This AI you will write will not be very advanced, it is just the minimal amount of code needed to get moving and following a path. If you want a more advanced AI you can either extend the script you will write in this tutorial or use (or extend) the AIPath or RichAI scripts included in the package (see part 2 for basic usage of the RichAI component).</p><h3 id='downloading' >Downloading</h3><p>The first thing you need to do, if you haven't done so already, is to download the A* Pathfinding Project<br>
|
||
The project can be downloaded from <a href='http://www.arongranberg.com/astar/download' >here</a>, you can either download the free version with some limited features (but still very powerful) or buy the pro version with more cool stuff included.<br>
|
||
If you want, you can explore the different example scenes in the project before you start with the next section.</p><h3 id='js' >Javascript (Unityscript)</h3><p>If you are using UnityScript, you should first follow the instructions on the page <a href='http://arongranberg.com/astar/docs/javscript.html'>Working with Javascript</a>.</p><p>All example code is in C#. But I hope it will not be too hard following them since C# and Unityscript are quite similar. You should know that UnityScript does not support optional parameters so you must always pass all parameters to a function. If you get an error message that the function you are trying to call has no such overload, this might be the problem. Then check the docs for all parameters and their default values.</p><h3 id='usingIphone' >Deploying for Mobile/UWP</h3><p>Depending on which platform you are building for, you might want to read this page first: <a href='http://arongranberg.com/astar/docs/iphone.html'>Deploying for mobile/uwp</a></p><h3 id='errors' >Troubleshooting</h3><p>At this stage, if you are getting any compiler errors from the code you can first check the Readme_upgrading.txt file included, if you are upgrading from an older version. A common problem is that classes in the A* Pathfinding Project have the same name as classes in your project. This can be solved either by renaming one of the classes, or placing your class in a namespace so it will not conflict with the other class anymore.</p><p>If you are still getting errors, take a look at the forums (see <a href='http://forum.arongranberg.com' >http://forum.arongranberg.com</a>) to see if anyone else has the same problem or post a new question there.</p><h3 id='overview' >Overview</h3><p><ul><li><p>The central script of the A* Pathfinding Project is the script '<a href='http://arongranberg.com/astar/docs/<undefined>'>astarpath.cs</a>', it acts as a central hub for everything else.<br>
|
||
In the <a href='http://arongranberg.com/astar/docs/astarpath.html'>AstarPath</a> inspector you create all graphs and adjust all settings.<br>
|
||
There should always be one (always one, no more) <a href='http://arongranberg.com/astar/docs/<undefined>'>astarpath.cs</a> component in a scene which uses Pathfinding.<br>
|
||
The <a href='http://arongranberg.com/astar/docs/<undefined>'>astarpath.cs</a> script can be found at Menu bar–>Components–>Pathfinding–>Pathfinder</p>
|
||
</li><li><p>The second most important component is the '<a href='http://arongranberg.com/astar/docs/<undefined>'>Seeker.cs</a>' component, a Seeker component should be attached to every GameObject which uses Pathfinding (e.g all AIs).<br>
|
||
The Seeker component handles path calls for one unit and post processes the paths. The Seeker isn't needed, but it makes Pathfinding easier.</p>
|
||
</li><li><p>To make the AIs move there are a number of included movement scripts in the package (e.g <a href='http://arongranberg.com/astar/docs/aipath.html'>AIPath</a>, RichAI, <a href='http://arongranberg.com/astar/docs/ailerp.html'>AILerp</a>). You may use one of the included ones or you can write your own (see <a href='http://arongranberg.com/astar/docs/custom_movement_script.html'>Writing a movement script</a>). You can find a comparison of the built-in movement scripts here: <a href='http://arongranberg.com/astar/docs/movementscripts.html'>Movement scripts</a>.</p>
|
||
</li><li><p>Lastly there are the modifier scripts (e.g <a href='http://arongranberg.com/astar/docs/<undefined>'>SimpleSmoothModifier.cs</a>). Modifiers post-processes paths to smooth or simplify them, if a modifier is attached to the same GameObject as a Seeker it will post-process all paths that Seeker handles. See <a href='http://arongranberg.com/astar/docs/modifiers2.html'>Using Modifiers</a>.</p>
|
||
</li></ul>
|
||
</p><h3 id='video' >Video Tutorial</h3><p>If you prefer a video tutorial instead of a text tutorial. Here is a video for you. The video tutorial takes a more high-level approach and you will learn how to use the built-in movement scripts instead of writing a custom one. Since the video and text tutorials cover slightly different ground, it is not a bad idea to take a look at both.</p><p> <iframe class="youtube-video" width="690" height="400" src="https://www.youtube.com/embed/5QT5Czfe0YE" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p><p>You can also take a look at the excellent tutorial by Gabriel Williams (Unity Cookie) in part 8 of the series on making a Tower Defence game: <a href='https://www.youtube.com/watch?feature=player_embedded&v=PUJSvd53v4k' >https://www.youtube.com/watch?feature=player_embedded&v=PUJSvd53v4k</a> The video covers most things which will be discussed in the text tutorial.</p><h3 id='newscene' >New Scene</h3><p>Create a new scene, name it "PathfindingTest". Now let's create something which an AI could walk on and something for it to avoid: add a plane to the scene, place it in the scene origin (0,0,0) and scale it to 10,10,10.<br>
|
||
Create a new layer (Edit->Project Settings->Tags) named "Ground" and place the plane in that layer. Now create some cubes of differerent scales and place them on the plane, these will be obstacles which the AI should avoid. Place them in a new layer named "Obstacles".<br>
|
||
Your scene should now look something like this: <img class="tinyshadow" src="data:image/png;base64,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"></img></p><h3 id='addingastar' >Adding A*</h3><p>Now we have ground for an AI to stand on and obstacles for it to avoid. So now we are going to add the A* Pathfinding System to the scene to enable Pathfinding.<br>
|
||
Create a new GameObject, name it "A*", add the "AstarPath" component to it (Menu bar–>Components–>Pathfinding–>Pathfinder).<br>
|
||
The <a href='http://arongranberg.com/astar/docs/astarpath.html'>AstarPath</a> inspector is divided into several parts. The two most important is the Graphs area and the Scan button at the bottom.<br>
|
||
The Graphs area holds all the graphs in your scene, you may have up to 256 but usually 1 or 2 will be sufficient. A single graph is usually preferred for simplicity.<br>
|
||
If you open the Graphs area by clicking on it you will see a list of graphs which you can add. I can't explain them all here but the two main ones is the <a href='http://arongranberg.com/astar/docs/gridgraph.html'>Grid Graph</a> which generates nodes in a grid pattern and the Recast Graph which automatically calculates a navmesh from the world (only available in the pro version).<br>
|
||
The Scan button is for updating the graphs, this is also done on startup (unless the startup is cached, more about that in <a href='http://arongranberg.com/astar/docs/saveloadgraphs.html'>another part</a>) and some graphs will do it automatically when changing the graph settings and the scanning won't cause any lag.<br>
|
||
There is also a <a href='http://arongranberg.com/astar/docs/shortcuts.html'>shortcut</a> to use Cmd+Alt+S (mac) or Ctrl+Alt+S (windows).</p><p>For this tutorial we will create a Grid Graph, after adding it, click on the new <a href='http://arongranberg.com/astar/docs/gridgraph.html'>Grid Graph </a> label to bring up the graph inspector. <img class="tinyshadow" src="data:image/png;base64,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"></img> As the name implies, the GridGraph will generate a grid of nodes, width*depth. A grid can be positioned anywhere in the scene and you can rotate it any way you want.<br>
|
||
The Node Size variable determines how large a square/node in the grid is, for this tutorial you can leave it at 1, so the nodes will be spaced 1 unit apart.<br>
|
||
The position needs to be changed though. Switch to bottom-left in the small selector to the right of the position field (currently named "Center"), then enter (-50,-0.1,-50). The -0.1 is to avoid floating point errors, in our scene the ground is at Y=0, if the graph was to have position Y=0 too, we might get annoying floating point errors when casting rays against it for example (like the height check does).<br>
|
||
To make the grid fit our scene we need to change the width and depth variables, set both to 100 in this case. You can see that the grid is correctly positioned by the white bounding rectangle in the scene view which should now be enclosing the plane exactly.</p><h4 id='heighttest' >Height Testing</h4><p>In order to place the nodes at their correct height, the A* system fires off a bunch of rays against the scene to see where they hit. That's the Height Testing settings.<br>
|
||
A ray, optionally thick (as opposed to a line), is fired from [Ray Length] units above the grid downwards, a node is placed where it hits. If it doesn't hit anything, it is either made unwalkable if the Unwalkable When No Ground variable is toggled or the node is placed at Y=0 relative to the grid if it is set to false.<br>
|
||
We need to change the mask used, currently it includes everything, but that would include our obstacles as well, and we don't want that. So set the Mask to only include the "Ground" layer which we created earlier.<br>
|
||
</p><h4 id='collisiontest' >Collision Testing</h4><p>When a node has been placed, it is checked for walkability, this can be done with a Sphere, Capsule or a Ray. Usually a capsule is used with the same diameter and height as the AI character which is going to be walking around in the world, preferably with some margin though.<br>
|
||
Our AI will have the standard diameter and height of 1 and 2 world units respectively, but we will set the diameter and height for the collision testing to 2 and 2 to get some margin.<br>
|
||
Next, to make the system aware of the obstacles we placed, we need to change the mask for the Collision Testing, this time set it to contain only the "Obstacles" layer as we wouldn't want our ground to be treated as an obstacle.</p><p>Now everything should be set up correctly to scan the graph.<br>
|
||
Press Scan. Wait a fraction of a second and you've got a generated grid! (if you have done everything correctly, that is, compare your settings to the image below, also check that Show Graphs is true)<br>
|
||
<table class='table table-striped table-filled' ><tr rows='1' cols='2' ><td thead='no' ><p> <img class="tinyshadow" src="data:image/png;base64,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"></img> </p>
|
||
</td><td thead='no' ><p> <img class="tinyshadow" src="data:image/png;base64,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"></img> </p>
|
||
</td></tr></table>
|
||
</p><h3 id='addingai' >Adding the AI</h3><p>What is a pathfinding test without some moving stuff? Not fun at all, so let's add an AI to play around with.<br>
|
||
Create a capsule and add the Character Controller component to it, also place it somewhere visible on the plane.<br>
|
||
Add the Seeker component to the AI, this script is a helper script for calling requesting paths from other scripts, it can also handle path modifiers which can e.g smooth the path or simplify it using raycasts.</p><p>There are 2 alternatives now. You can either write your own movement script or you can use one of the built-in movement scripts. I recommend following the tutorial for writing a custom movement script even if you end up using one of the built-in ones in your game because it makes it easier to understand how the system works under the hood.</p><p>Check out this subpage for the tutorial: <a href='http://arongranberg.com/astar/docs/custom_movement_script.html'>Writing a movement script</a></p><p>There are also included movement scripts in the project which you can use if you don't want to write your own script. The included scripts are much more advanced than what you write in the tutorial linked above. The included scripts are called <a href='http://arongranberg.com/astar/docs/aipath.html'>AIPath</a>, RichAI and <a href='http://arongranberg.com/astar/docs/ailerp.html'>AILerp</a>. The AIPath script can be used on any graph while RichAI is primarily for navmesh based graphs. While the AIPath and RichAI scripts follow the path loosely, the AILerp script uses interpolation to move along the path very precisely, but perhaps not in the most realistic way. Which one you use depends on your game.</p><p></p><div class='simplesect simplesect-see' ><h3>See</h3><p>For more information about the included movement scripts, take a look at <a href='http://arongranberg.com/astar/docs/movementscripts.html'>Movement scripts</a>. You can also see how they are used in the included example scenes.</p></div><p>
|
||
For this tutorial you can attach the <a href='http://arongranberg.com/astar/docs/aipath.html'>AIPath</a> component to the AI. Create a new GameObject named "Target" and position it where you want the AI to move. Then attach the <a href='http://arongranberg.com/astar/docs/aidestinationsetter.html'>AIDestinationSetter</a> component to the AI. This component is just a very simple helper script which will tell the AIPath script to move to a particular location. You will likely replace this script with your own game specific script in the future. The AIDestinationSetter component has a single field called "target", assign the "Target" GameObject that you created earlier to this field.</p><p>If you press play now the AI should move to the target. How the movement scripts work and how to configure them is explained in more detail in the video tutorial linked above. Take a look at that if something doesn't seem to work.</p><h3 id='smoothing' >Smoothing</h3><p>Now you have learned how to set up a simple grid graph and how to calculate paths Pathfinding, but surely there must be a way to get those paths to look a bit smoother?<br>
|
||
Sure it is. Path smoothing and simplification scripts are called Path Modifiers and are scripts which can be added to the same GameObject as a Seeker.<br>
|
||
The most straight forward one is the Simple Smooth modifier which can be found at Menu bar–>Components–>Pathfinding–>Modifiers–>Simple Smooth. Add that to our AI.<br>
|
||
What this modifier is going to do, is to subdivide the path a number of times until each segment becomes smaller than the Max Segment Length variable. Then it will smooth the path by moving the points closer to each other. The modifier has a number of settings, I won't go through all of them here. See the SimpleSmoothModifier documentation for more info about each variable. For this tutorial you can set Max Segment Length to, say 1. Iterations to 5 and Strength to 0.25. Experiment with it to get good values.</p><p>Now press play again, the path should look much smoother, just as we wanted.<br>
|
||
</p><div class='simplesect simplesect-note' ><h3>Note</h3><p>Smoothers don't usually take world geometry or the graph into account, so be careful with applying too much smoothing since that could cause paths to pass through unwalkable areas.</p></div><p>
|
||
<img class="tinyshadow" src="data:image/png;base64,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"></img></p><p>Another good modifier to use is the <a href='http://arongranberg.com/astar/docs/funnelmodifier.html'>FunnelModifier</a> which will simplify the path a great deal. This modifier is almost always used when using navmesh/recast graphs.</p><p>Read more about modifiers on the page <a href='http://arongranberg.com/astar/docs/modifiers2.html'>Using Modifiers</a>.</p><h3 id='logging' >Logging settings</h3><p>Every time a path is calculated by the system it can optionally be logged to the console. This can be a big help in understanding what the system is doing and also to spot performance issues. Logging is not free however, so for release builds it is recommended that you disable it.</p><p>You can change the logging settings under the A* Inspector -> Settings -> Debug tab. <img class="tinyshadow" srcset="images/path_logging@2x.png 2x" src="data:image/png;base64,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"></img></p><p>Use less debugging to improve performance (a bit) or just to get rid of the Console spam. Use more debugging (heavy) if you want more information about what the pathfinding scripts are doing. The InGame option will display the latest path log using in-game GUI.</p><h3 id='end' >The End</h3><p>That was the end of the Get Started tutorial part 1. I hope you learned something from it.<br>
|
||
From here on you can explore the rest of the documentation or dig straight in to the project.<br>
|
||
If you want a little better AI, you can use the AIPath script which is included in the project.</p><p>You can continue with the next part of the get started tutorial, where we will use navmesh graphs: <a href='http://arongranberg.com/astar/docs/getstarted2.html'>Using navmeshes</a></p><p>You can also take a look in the sidebar, there you will find a number of tutorials for how to use the package.</p><p>Good Luck! </p><div class='alert alert-danger' role='alert'>This is an excerpt from the full documentation. You can view the full documentation <a href='http://arongranberg.com/astar/docs'>here</a>. Most links on this page will just take you to the full documentation.</div>
|
||
|
||
</article>
|
||
</div>
|
||
<div class="row">
|
||
<div class="col-md-12" style="height: 30px">
|
||
</div>
|
||
</div> </div>
|
||
</div>
|
||
</div>
|
||
<script>/*!
|
||
* jQuery JavaScript Library v2.1.4
|
||
* http://jquery.com/
|
||
*
|
||
* Includes Sizzle.js
|
||
* http://sizzlejs.com/
|
||
*
|
||
* Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
|
||
* Released under the MIT license
|
||
* http://jquery.org/license
|
||
*
|
||
* Date: 2015-04-28T16:01Z
|
||
*/
|
||
|
||
(function( global, factory ) {
|
||
|
||
if ( typeof module === "object" && typeof module.exports === "object" ) {
|
||
// For CommonJS and CommonJS-like environments where a proper `window`
|
||
// is present, execute the factory and get jQuery.
|
||
// For environments that do not have a `window` with a `document`
|
||
// (such as Node.js), expose a factory as module.exports.
|
||
// This accentuates the need for the creation of a real `window`.
|
||
// e.g. var jQuery = require("jquery")(window);
|
||
// See ticket #14549 for more info.
|
||
module.exports = global.document ?
|
||
factory( global, true ) :
|
||
function( w ) {
|
||
if ( !w.document ) {
|
||
throw new Error( "jQuery requires a window with a document" );
|
||
}
|
||
return factory( w );
|
||
};
|
||
} else {
|
||
factory( global );
|
||
}
|
||
|
||
// Pass this if window is not defined yet
|
||
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
|
||
|
||
// Support: Firefox 18+
|
||
// Can't be in strict mode, several libs including ASP.NET trace
|
||
// the stack via arguments.caller.callee and Firefox dies if
|
||
// you try to trace through "use strict" call chains. (#13335)
|
||
//
|
||
|
||
var arr = [];
|
||
|
||
var slice = arr.slice;
|
||
|
||
var concat = arr.concat;
|
||
|
||
var push = arr.push;
|
||
|
||
var indexOf = arr.indexOf;
|
||
|
||
var class2type = {};
|
||
|
||
var toString = class2type.toString;
|
||
|
||
var hasOwn = class2type.hasOwnProperty;
|
||
|
||
var support = {};
|
||
|
||
|
||
|
||
var
|
||
// Use the correct document accordingly with window argument (sandbox)
|
||
document = window.document,
|
||
|
||
version = "2.1.4",
|
||
|
||
// Define a local copy of jQuery
|
||
jQuery = function( selector, context ) {
|
||
// The jQuery object is actually just the init constructor 'enhanced'
|
||
// Need init if jQuery is called (just allow error to be thrown if not included)
|
||
return new jQuery.fn.init( selector, context );
|
||
},
|
||
|
||
// Support: Android<4.1
|
||
// Make sure we trim BOM and NBSP
|
||
rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
|
||
|
||
// Matches dashed string for camelizing
|
||
rmsPrefix = /^-ms-/,
|
||
rdashAlpha = /-([\da-z])/gi,
|
||
|
||
// Used by jQuery.camelCase as callback to replace()
|
||
fcamelCase = function( all, letter ) {
|
||
return letter.toUpperCase();
|
||
};
|
||
|
||
jQuery.fn = jQuery.prototype = {
|
||
// The current version of jQuery being used
|
||
jquery: version,
|
||
|
||
constructor: jQuery,
|
||
|
||
// Start with an empty selector
|
||
selector: "",
|
||
|
||
// The default length of a jQuery object is 0
|
||
length: 0,
|
||
|
||
toArray: function() {
|
||
return slice.call( this );
|
||
},
|
||
|
||
// Get the Nth element in the matched element set OR
|
||
// Get the whole matched element set as a clean array
|
||
get: function( num ) {
|
||
return num != null ?
|
||
|
||
// Return just the one element from the set
|
||
( num < 0 ? this[ num + this.length ] : this[ num ] ) :
|
||
|
||
// Return all the elements in a clean array
|
||
slice.call( this );
|
||
},
|
||
|
||
// Take an array of elements and push it onto the stack
|
||
// (returning the new matched element set)
|
||
pushStack: function( elems ) {
|
||
|
||
// Build a new jQuery matched element set
|
||
var ret = jQuery.merge( this.constructor(), elems );
|
||
|
||
// Add the old object onto the stack (as a reference)
|
||
ret.prevObject = this;
|
||
ret.context = this.context;
|
||
|
||
// Return the newly-formed element set
|
||
return ret;
|
||
},
|
||
|
||
// Execute a callback for every element in the matched set.
|
||
// (You can seed the arguments with an array of args, but this is
|
||
// only used internally.)
|
||
each: function( callback, args ) {
|
||
return jQuery.each( this, callback, args );
|
||
},
|
||
|
||
map: function( callback ) {
|
||
return this.pushStack( jQuery.map(this, function( elem, i ) {
|
||
return callback.call( elem, i, elem );
|
||
}));
|
||
},
|
||
|
||
slice: function() {
|
||
return this.pushStack( slice.apply( this, arguments ) );
|
||
},
|
||
|
||
first: function() {
|
||
return this.eq( 0 );
|
||
},
|
||
|
||
last: function() {
|
||
return this.eq( -1 );
|
||
},
|
||
|
||
eq: function( i ) {
|
||
var len = this.length,
|
||
j = +i + ( i < 0 ? len : 0 );
|
||
return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
|
||
},
|
||
|
||
end: function() {
|
||
return this.prevObject || this.constructor(null);
|
||
},
|
||
|
||
// For internal use only.
|
||
// Behaves like an Array's method, not like a jQuery method.
|
||
push: push,
|
||
sort: arr.sort,
|
||
splice: arr.splice
|
||
};
|
||
|
||
jQuery.extend = jQuery.fn.extend = function() {
|
||
var options, name, src, copy, copyIsArray, clone,
|
||
target = arguments[0] || {},
|
||
i = 1,
|
||
length = arguments.length,
|
||
deep = false;
|
||
|
||
// Handle a deep copy situation
|
||
if ( typeof target === "boolean" ) {
|
||
deep = target;
|
||
|
||
// Skip the boolean and the target
|
||
target = arguments[ i ] || {};
|
||
i++;
|
||
}
|
||
|
||
// Handle case when target is a string or something (possible in deep copy)
|
||
if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
|
||
target = {};
|
||
}
|
||
|
||
// Extend jQuery itself if only one argument is passed
|
||
if ( i === length ) {
|
||
target = this;
|
||
i--;
|
||
}
|
||
|
||
for ( ; i < length; i++ ) {
|
||
// Only deal with non-null/undefined values
|
||
if ( (options = arguments[ i ]) != null ) {
|
||
// Extend the base object
|
||
for ( name in options ) {
|
||
src = target[ name ];
|
||
copy = options[ name ];
|
||
|
||
// Prevent never-ending loop
|
||
if ( target === copy ) {
|
||
continue;
|
||
}
|
||
|
||
// Recurse if we're merging plain objects or arrays
|
||
if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
|
||
if ( copyIsArray ) {
|
||
copyIsArray = false;
|
||
clone = src && jQuery.isArray(src) ? src : [];
|
||
|
||
} else {
|
||
clone = src && jQuery.isPlainObject(src) ? src : {};
|
||
}
|
||
|
||
// Never move original objects, clone them
|
||
target[ name ] = jQuery.extend( deep, clone, copy );
|
||
|
||
// Don't bring in undefined values
|
||
} else if ( copy !== undefined ) {
|
||
target[ name ] = copy;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Return the modified object
|
||
return target;
|
||
};
|
||
|
||
jQuery.extend({
|
||
// Unique for each copy of jQuery on the page
|
||
expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
|
||
|
||
// Assume jQuery is ready without the ready module
|
||
isReady: true,
|
||
|
||
error: function( msg ) {
|
||
throw new Error( msg );
|
||
},
|
||
|
||
noop: function() {},
|
||
|
||
isFunction: function( obj ) {
|
||
return jQuery.type(obj) === "function";
|
||
},
|
||
|
||
isArray: Array.isArray,
|
||
|
||
isWindow: function( obj ) {
|
||
return obj != null && obj === obj.window;
|
||
},
|
||
|
||
isNumeric: function( obj ) {
|
||
// parseFloat NaNs numeric-cast false positives (null|true|false|"")
|
||
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
|
||
// subtraction forces infinities to NaN
|
||
// adding 1 corrects loss of precision from parseFloat (#15100)
|
||
return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
|
||
},
|
||
|
||
isPlainObject: function( obj ) {
|
||
// Not plain objects:
|
||
// - Any object or value whose internal [[Class]] property is not "[object Object]"
|
||
// - DOM nodes
|
||
// - window
|
||
if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
|
||
return false;
|
||
}
|
||
|
||
if ( obj.constructor &&
|
||
!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
|
||
return false;
|
||
}
|
||
|
||
// If the function hasn't returned already, we're confident that
|
||
// |obj| is a plain object, created by {} or constructed with new Object
|
||
return true;
|
||
},
|
||
|
||
isEmptyObject: function( obj ) {
|
||
var name;
|
||
for ( name in obj ) {
|
||
return false;
|
||
}
|
||
return true;
|
||
},
|
||
|
||
type: function( obj ) {
|
||
if ( obj == null ) {
|
||
return obj + "";
|
||
}
|
||
// Support: Android<4.0, iOS<6 (functionish RegExp)
|
||
return typeof obj === "object" || typeof obj === "function" ?
|
||
class2type[ toString.call(obj) ] || "object" :
|
||
typeof obj;
|
||
},
|
||
|
||
// Evaluates a script in a global context
|
||
globalEval: function( code ) {
|
||
var script,
|
||
indirect = eval;
|
||
|
||
code = jQuery.trim( code );
|
||
|
||
if ( code ) {
|
||
// If the code includes a valid, prologue position
|
||
// strict mode pragma, execute code by injecting a
|
||
// script tag into the document.
|
||
if ( code.indexOf("use strict") === 1 ) {
|
||
script = document.createElement("script");
|
||
script.text = code;
|
||
document.head.appendChild( script ).parentNode.removeChild( script );
|
||
} else {
|
||
// Otherwise, avoid the DOM node creation, insertion
|
||
// and removal by using an indirect global eval
|
||
indirect( code );
|
||
}
|
||
}
|
||
},
|
||
|
||
// Convert dashed to camelCase; used by the css and data modules
|
||
// Support: IE9-11+
|
||
// Microsoft forgot to hump their vendor prefix (#9572)
|
||
camelCase: function( string ) {
|
||
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
||
},
|
||
|
||
nodeName: function( elem, name ) {
|
||
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
||
},
|
||
|
||
// args is for internal usage only
|
||
each: function( obj, callback, args ) {
|
||
var value,
|
||
i = 0,
|
||
length = obj.length,
|
||
isArray = isArraylike( obj );
|
||
|
||
if ( args ) {
|
||
if ( isArray ) {
|
||
for ( ; i < length; i++ ) {
|
||
value = callback.apply( obj[ i ], args );
|
||
|
||
if ( value === false ) {
|
||
break;
|
||
}
|
||
}
|
||
} else {
|
||
for ( i in obj ) {
|
||
value = callback.apply( obj[ i ], args );
|
||
|
||
if ( value === false ) {
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
// A special, fast, case for the most common use of each
|
||
} else {
|
||
if ( isArray ) {
|
||
for ( ; i < length; i++ ) {
|
||
value = callback.call( obj[ i ], i, obj[ i ] );
|
||
|
||
if ( value === false ) {
|
||
break;
|
||
}
|
||
}
|
||
} else {
|
||
for ( i in obj ) {
|
||
value = callback.call( obj[ i ], i, obj[ i ] );
|
||
|
||
if ( value === false ) {
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return obj;
|
||
},
|
||
|
||
// Support: Android<4.1
|
||
trim: function( text ) {
|
||
return text == null ?
|
||
"" :
|
||
( text + "" ).replace( rtrim, "" );
|
||
},
|
||
|
||
// results is for internal usage only
|
||
makeArray: function( arr, results ) {
|
||
var ret = results || [];
|
||
|
||
if ( arr != null ) {
|
||
if ( isArraylike( Object(arr) ) ) {
|
||
jQuery.merge( ret,
|
||
typeof arr === "string" ?
|
||
[ arr ] : arr
|
||
);
|
||
} else {
|
||
push.call( ret, arr );
|
||
}
|
||
}
|
||
|
||
return ret;
|
||
},
|
||
|
||
inArray: function( elem, arr, i ) {
|
||
return arr == null ? -1 : indexOf.call( arr, elem, i );
|
||
},
|
||
|
||
merge: function( first, second ) {
|
||
var len = +second.length,
|
||
j = 0,
|
||
i = first.length;
|
||
|
||
for ( ; j < len; j++ ) {
|
||
first[ i++ ] = second[ j ];
|
||
}
|
||
|
||
first.length = i;
|
||
|
||
return first;
|
||
},
|
||
|
||
grep: function( elems, callback, invert ) {
|
||
var callbackInverse,
|
||
matches = [],
|
||
i = 0,
|
||
length = elems.length,
|
||
callbackExpect = !invert;
|
||
|
||
// Go through the array, only saving the items
|
||
// that pass the validator function
|
||
for ( ; i < length; i++ ) {
|
||
callbackInverse = !callback( elems[ i ], i );
|
||
if ( callbackInverse !== callbackExpect ) {
|
||
matches.push( elems[ i ] );
|
||
}
|
||
}
|
||
|
||
return matches;
|
||
},
|
||
|
||
// arg is for internal usage only
|
||
map: function( elems, callback, arg ) {
|
||
var value,
|
||
i = 0,
|
||
length = elems.length,
|
||
isArray = isArraylike( elems ),
|
||
ret = [];
|
||
|
||
// Go through the array, translating each of the items to their new values
|
||
if ( isArray ) {
|
||
for ( ; i < length; i++ ) {
|
||
value = callback( elems[ i ], i, arg );
|
||
|
||
if ( value != null ) {
|
||
ret.push( value );
|
||
}
|
||
}
|
||
|
||
// Go through every key on the object,
|
||
} else {
|
||
for ( i in elems ) {
|
||
value = callback( elems[ i ], i, arg );
|
||
|
||
if ( value != null ) {
|
||
ret.push( value );
|
||
}
|
||
}
|
||
}
|
||
|
||
// Flatten any nested arrays
|
||
return concat.apply( [], ret );
|
||
},
|
||
|
||
// A global GUID counter for objects
|
||
guid: 1,
|
||
|
||
// Bind a function to a context, optionally partially applying any
|
||
// arguments.
|
||
proxy: function( fn, context ) {
|
||
var tmp, args, proxy;
|
||
|
||
if ( typeof context === "string" ) {
|
||
tmp = fn[ context ];
|
||
context = fn;
|
||
fn = tmp;
|
||
}
|
||
|
||
// Quick check to determine if target is callable, in the spec
|
||
// this throws a TypeError, but we will just return undefined.
|
||
if ( !jQuery.isFunction( fn ) ) {
|
||
return undefined;
|
||
}
|
||
|
||
// Simulated bind
|
||
args = slice.call( arguments, 2 );
|
||
proxy = function() {
|
||
return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
|
||
};
|
||
|
||
// Set the guid of unique handler to the same of original handler, so it can be removed
|
||
proxy.guid = fn.guid = fn.guid || jQuery.guid++;
|
||
|
||
return proxy;
|
||
},
|
||
|
||
now: Date.now,
|
||
|
||
// jQuery.support is not used in Core but other projects attach their
|
||
// properties to it so it needs to exist.
|
||
support: support
|
||
});
|
||
|
||
// Populate the class2type map
|
||
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
|
||
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
||
});
|
||
|
||
function isArraylike( obj ) {
|
||
|
||
// Support: iOS 8.2 (not reproducible in simulator)
|
||
// `in` check used to prevent JIT error (gh-2145)
|
||
// hasOwn isn't used here due to false negatives
|
||
// regarding Nodelist length in IE
|
||
var length = "length" in obj && obj.length,
|
||
type = jQuery.type( obj );
|
||
|
||
if ( type === "function" || jQuery.isWindow( obj ) ) {
|
||
return false;
|
||
}
|
||
|
||
if ( obj.nodeType === 1 && length ) {
|
||
return true;
|
||
}
|
||
|
||
return type === "array" || length === 0 ||
|
||
typeof length === "number" && length > 0 && ( length - 1 ) in obj;
|
||
}
|
||
var Sizzle =
|
||
/*!
|
||
* Sizzle CSS Selector Engine v2.2.0-pre
|
||
* http://sizzlejs.com/
|
||
*
|
||
* Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
|
||
* Released under the MIT license
|
||
* http://jquery.org/license
|
||
*
|
||
* Date: 2014-12-16
|
||
*/
|
||
(function( window ) {
|
||
|
||
var i,
|
||
support,
|
||
Expr,
|
||
getText,
|
||
isXML,
|
||
tokenize,
|
||
compile,
|
||
select,
|
||
outermostContext,
|
||
sortInput,
|
||
hasDuplicate,
|
||
|
||
// Local document vars
|
||
setDocument,
|
||
document,
|
||
docElem,
|
||
documentIsHTML,
|
||
rbuggyQSA,
|
||
rbuggyMatches,
|
||
matches,
|
||
contains,
|
||
|
||
// Instance-specific data
|
||
expando = "sizzle" + 1 * new Date(),
|
||
preferredDoc = window.document,
|
||
dirruns = 0,
|
||
done = 0,
|
||
classCache = createCache(),
|
||
tokenCache = createCache(),
|
||
compilerCache = createCache(),
|
||
sortOrder = function( a, b ) {
|
||
if ( a === b ) {
|
||
hasDuplicate = true;
|
||
}
|
||
return 0;
|
||
},
|
||
|
||
// General-purpose constants
|
||
MAX_NEGATIVE = 1 << 31,
|
||
|
||
// Instance methods
|
||
hasOwn = ({}).hasOwnProperty,
|
||
arr = [],
|
||
pop = arr.pop,
|
||
push_native = arr.push,
|
||
push = arr.push,
|
||
slice = arr.slice,
|
||
// Use a stripped-down indexOf as it's faster than native
|
||
// http://jsperf.com/thor-indexof-vs-for/5
|
||
indexOf = function( list, elem ) {
|
||
var i = 0,
|
||
len = list.length;
|
||
for ( ; i < len; i++ ) {
|
||
if ( list[i] === elem ) {
|
||
return i;
|
||
}
|
||
}
|
||
return -1;
|
||
},
|
||
|
||
booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
|
||
|
||
// Regular expressions
|
||
|
||
// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
|
||
whitespace = "[\\x20\\t\\r\\n\\f]",
|
||
// http://www.w3.org/TR/css3-syntax/#characters
|
||
characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
|
||
|
||
// Loosely modeled on CSS identifier characters
|
||
// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
|
||
// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
|
||
identifier = characterEncoding.replace( "w", "w#" ),
|
||
|
||
// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
|
||
attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
|
||
// Operator (capture 2)
|
||
"*([*^$|!~]?=)" + whitespace +
|
||
// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
|
||
"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
|
||
"*\\]",
|
||
|
||
pseudos = ":(" + characterEncoding + ")(?:\\((" +
|
||
// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
|
||
// 1. quoted (capture 3; capture 4 or capture 5)
|
||
"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
|
||
// 2. simple (capture 6)
|
||
"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
|
||
// 3. anything else (capture 2)
|
||
".*" +
|
||
")\\)|)",
|
||
|
||
// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
|
||
rwhitespace = new RegExp( whitespace + "+", "g" ),
|
||
rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
|
||
|
||
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
|
||
rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
|
||
|
||
rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
|
||
|
||
rpseudo = new RegExp( pseudos ),
|
||
ridentifier = new RegExp( "^" + identifier + "$" ),
|
||
|
||
matchExpr = {
|
||
"ID": new RegExp( "^#(" + characterEncoding + ")" ),
|
||
"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
|
||
"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
|
||
"ATTR": new RegExp( "^" + attributes ),
|
||
"PSEUDO": new RegExp( "^" + pseudos ),
|
||
"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
|
||
"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
|
||
"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
|
||
"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
|
||
// For use in libraries implementing .is()
|
||
// We use this for POS matching in `select`
|
||
"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
|
||
whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
|
||
},
|
||
|
||
rinputs = /^(?:input|select|textarea|button)$/i,
|
||
rheader = /^h\d$/i,
|
||
|
||
rnative = /^[^{]+\{\s*\[native \w/,
|
||
|
||
// Easily-parseable/retrievable ID or TAG or CLASS selectors
|
||
rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
|
||
|
||
rsibling = /[+~]/,
|
||
rescape = /'|\\/g,
|
||
|
||
// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
|
||
runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
|
||
funescape = function( _, escaped, escapedWhitespace ) {
|
||
var high = "0x" + escaped - 0x10000;
|
||
// NaN means non-codepoint
|
||
// Support: Firefox<24
|
||
// Workaround erroneous numeric interpretation of +"0x"
|
||
return high !== high || escapedWhitespace ?
|
||
escaped :
|
||
high < 0 ?
|
||
// BMP codepoint
|
||
String.fromCharCode( high + 0x10000 ) :
|
||
// Supplemental Plane codepoint (surrogate pair)
|
||
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
|
||
},
|
||
|
||
// Used for iframes
|
||
// See setDocument()
|
||
// Removing the function wrapper causes a "Permission Denied"
|
||
// error in IE
|
||
unloadHandler = function() {
|
||
setDocument();
|
||
};
|
||
|
||
// Optimize for push.apply( _, NodeList )
|
||
try {
|
||
push.apply(
|
||
(arr = slice.call( preferredDoc.childNodes )),
|
||
preferredDoc.childNodes
|
||
);
|
||
// Support: Android<4.0
|
||
// Detect silently failing push.apply
|
||
arr[ preferredDoc.childNodes.length ].nodeType;
|
||
} catch ( e ) {
|
||
push = { apply: arr.length ?
|
||
|
||
// Leverage slice if possible
|
||
function( target, els ) {
|
||
push_native.apply( target, slice.call(els) );
|
||
} :
|
||
|
||
// Support: IE<9
|
||
// Otherwise append directly
|
||
function( target, els ) {
|
||
var j = target.length,
|
||
i = 0;
|
||
// Can't trust NodeList.length
|
||
while ( (target[j++] = els[i++]) ) {}
|
||
target.length = j - 1;
|
||
}
|
||
};
|
||
}
|
||
|
||
function Sizzle( selector, context, results, seed ) {
|
||
var match, elem, m, nodeType,
|
||
// QSA vars
|
||
i, groups, old, nid, newContext, newSelector;
|
||
|
||
if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
|
||
setDocument( context );
|
||
}
|
||
|
||
context = context || document;
|
||
results = results || [];
|
||
nodeType = context.nodeType;
|
||
|
||
if ( typeof selector !== "string" || !selector ||
|
||
nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
|
||
|
||
return results;
|
||
}
|
||
|
||
if ( !seed && documentIsHTML ) {
|
||
|
||
// Try to shortcut find operations when possible (e.g., not under DocumentFragment)
|
||
if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
|
||
// Speed-up: Sizzle("#ID")
|
||
if ( (m = match[1]) ) {
|
||
if ( nodeType === 9 ) {
|
||
elem = context.getElementById( m );
|
||
// Check parentNode to catch when Blackberry 4.6 returns
|
||
// nodes that are no longer in the document (jQuery #6963)
|
||
if ( elem && elem.parentNode ) {
|
||
// Handle the case where IE, Opera, and Webkit return items
|
||
// by name instead of ID
|
||
if ( elem.id === m ) {
|
||
results.push( elem );
|
||
return results;
|
||
}
|
||
} else {
|
||
return results;
|
||
}
|
||
} else {
|
||
// Context is not a document
|
||
if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
|
||
contains( context, elem ) && elem.id === m ) {
|
||
results.push( elem );
|
||
return results;
|
||
}
|
||
}
|
||
|
||
// Speed-up: Sizzle("TAG")
|
||
} else if ( match[2] ) {
|
||
push.apply( results, context.getElementsByTagName( selector ) );
|
||
return results;
|
||
|
||
// Speed-up: Sizzle(".CLASS")
|
||
} else if ( (m = match[3]) && support.getElementsByClassName ) {
|
||
push.apply( results, context.getElementsByClassName( m ) );
|
||
return results;
|
||
}
|
||
}
|
||
|
||
// QSA path
|
||
if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
|
||
nid = old = expando;
|
||
newContext = context;
|
||
newSelector = nodeType !== 1 && selector;
|
||
|
||
// qSA works strangely on Element-rooted queries
|
||
// We can work around this by specifying an extra ID on the root
|
||
// and working up from there (Thanks to Andrew Dupont for the technique)
|
||
// IE 8 doesn't work on object elements
|
||
if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
|
||
groups = tokenize( selector );
|
||
|
||
if ( (old = context.getAttribute("id")) ) {
|
||
nid = old.replace( rescape, "\\$&" );
|
||
} else {
|
||
context.setAttribute( "id", nid );
|
||
}
|
||
nid = "[id='" + nid + "'] ";
|
||
|
||
i = groups.length;
|
||
while ( i-- ) {
|
||
groups[i] = nid + toSelector( groups[i] );
|
||
}
|
||
newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
|
||
newSelector = groups.join(",");
|
||
}
|
||
|
||
if ( newSelector ) {
|
||
try {
|
||
push.apply( results,
|
||
newContext.querySelectorAll( newSelector )
|
||
);
|
||
return results;
|
||
} catch(qsaError) {
|
||
} finally {
|
||
if ( !old ) {
|
||
context.removeAttribute("id");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// All others
|
||
return select( selector.replace( rtrim, "$1" ), context, results, seed );
|
||
}
|
||
|
||
/**
|
||
* Create key-value caches of limited size
|
||
* @returns {Function(string, Object)} Returns the Object data after storing it on itself with
|
||
* property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
|
||
* deleting the oldest entry
|
||
*/
|
||
function createCache() {
|
||
var keys = [];
|
||
|
||
function cache( key, value ) {
|
||
// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
|
||
if ( keys.push( key + " " ) > Expr.cacheLength ) {
|
||
// Only keep the most recent entries
|
||
delete cache[ keys.shift() ];
|
||
}
|
||
return (cache[ key + " " ] = value);
|
||
}
|
||
return cache;
|
||
}
|
||
|
||
/**
|
||
* Mark a function for special use by Sizzle
|
||
* @param {Function} fn The function to mark
|
||
*/
|
||
function markFunction( fn ) {
|
||
fn[ expando ] = true;
|
||
return fn;
|
||
}
|
||
|
||
/**
|
||
* Support testing using an element
|
||
* @param {Function} fn Passed the created div and expects a boolean result
|
||
*/
|
||
function assert( fn ) {
|
||
var div = document.createElement("div");
|
||
|
||
try {
|
||
return !!fn( div );
|
||
} catch (e) {
|
||
return false;
|
||
} finally {
|
||
// Remove from its parent by default
|
||
if ( div.parentNode ) {
|
||
div.parentNode.removeChild( div );
|
||
}
|
||
// release memory in IE
|
||
div = null;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Adds the same handler for all of the specified attrs
|
||
* @param {String} attrs Pipe-separated list of attributes
|
||
* @param {Function} handler The method that will be applied
|
||
*/
|
||
function addHandle( attrs, handler ) {
|
||
var arr = attrs.split("|"),
|
||
i = attrs.length;
|
||
|
||
while ( i-- ) {
|
||
Expr.attrHandle[ arr[i] ] = handler;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Checks document order of two siblings
|
||
* @param {Element} a
|
||
* @param {Element} b
|
||
* @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
|
||
*/
|
||
function siblingCheck( a, b ) {
|
||
var cur = b && a,
|
||
diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
|
||
( ~b.sourceIndex || MAX_NEGATIVE ) -
|
||
( ~a.sourceIndex || MAX_NEGATIVE );
|
||
|
||
// Use IE sourceIndex if available on both nodes
|
||
if ( diff ) {
|
||
return diff;
|
||
}
|
||
|
||
// Check if b follows a
|
||
if ( cur ) {
|
||
while ( (cur = cur.nextSibling) ) {
|
||
if ( cur === b ) {
|
||
return -1;
|
||
}
|
||
}
|
||
}
|
||
|
||
return a ? 1 : -1;
|
||
}
|
||
|
||
/**
|
||
* Returns a function to use in pseudos for input types
|
||
* @param {String} type
|
||
*/
|
||
function createInputPseudo( type ) {
|
||
return function( elem ) {
|
||
var name = elem.nodeName.toLowerCase();
|
||
return name === "input" && elem.type === type;
|
||
};
|
||
}
|
||
|
||
/**
|
||
* Returns a function to use in pseudos for buttons
|
||
* @param {String} type
|
||
*/
|
||
function createButtonPseudo( type ) {
|
||
return function( elem ) {
|
||
var name = elem.nodeName.toLowerCase();
|
||
return (name === "input" || name === "button") && elem.type === type;
|
||
};
|
||
}
|
||
|
||
/**
|
||
* Returns a function to use in pseudos for positionals
|
||
* @param {Function} fn
|
||
*/
|
||
function createPositionalPseudo( fn ) {
|
||
return markFunction(function( argument ) {
|
||
argument = +argument;
|
||
return markFunction(function( seed, matches ) {
|
||
var j,
|
||
matchIndexes = fn( [], seed.length, argument ),
|
||
i = matchIndexes.length;
|
||
|
||
// Match elements found at the specified indexes
|
||
while ( i-- ) {
|
||
if ( seed[ (j = matchIndexes[i]) ] ) {
|
||
seed[j] = !(matches[j] = seed[j]);
|
||
}
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
/**
|
||
* Checks a node for validity as a Sizzle context
|
||
* @param {Element|Object=} context
|
||
* @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
|
||
*/
|
||
function testContext( context ) {
|
||
return context && typeof context.getElementsByTagName !== "undefined" && context;
|
||
}
|
||
|
||
// Expose support vars for convenience
|
||
support = Sizzle.support = {};
|
||
|
||
/**
|
||
* Detects XML nodes
|
||
* @param {Element|Object} elem An element or a document
|
||
* @returns {Boolean} True iff elem is a non-HTML XML node
|
||
*/
|
||
isXML = Sizzle.isXML = function( elem ) {
|
||
// documentElement is verified for cases where it doesn't yet exist
|
||
// (such as loading iframes in IE - #4833)
|
||
var documentElement = elem && (elem.ownerDocument || elem).documentElement;
|
||
return documentElement ? documentElement.nodeName !== "HTML" : false;
|
||
};
|
||
|
||
/**
|
||
* Sets document-related variables once based on the current document
|
||
* @param {Element|Object} [doc] An element or document object to use to set the document
|
||
* @returns {Object} Returns the current document
|
||
*/
|
||
setDocument = Sizzle.setDocument = function( node ) {
|
||
var hasCompare, parent,
|
||
doc = node ? node.ownerDocument || node : preferredDoc;
|
||
|
||
// If no document and documentElement is available, return
|
||
if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
|
||
return document;
|
||
}
|
||
|
||
// Set our document
|
||
document = doc;
|
||
docElem = doc.documentElement;
|
||
parent = doc.defaultView;
|
||
|
||
// Support: IE>8
|
||
// If iframe document is assigned to "document" variable and if iframe has been reloaded,
|
||
// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
|
||
// IE6-8 do not support the defaultView property so parent will be undefined
|
||
if ( parent && parent !== parent.top ) {
|
||
// IE11 does not have attachEvent, so all must suffer
|
||
if ( parent.addEventListener ) {
|
||
parent.addEventListener( "unload", unloadHandler, false );
|
||
} else if ( parent.attachEvent ) {
|
||
parent.attachEvent( "onunload", unloadHandler );
|
||
}
|
||
}
|
||
|
||
/* Support tests
|
||
---------------------------------------------------------------------- */
|
||
documentIsHTML = !isXML( doc );
|
||
|
||
/* Attributes
|
||
---------------------------------------------------------------------- */
|
||
|
||
// Support: IE<8
|
||
// Verify that getAttribute really returns attributes and not properties
|
||
// (excepting IE8 booleans)
|
||
support.attributes = assert(function( div ) {
|
||
div.className = "i";
|
||
return !div.getAttribute("className");
|
||
});
|
||
|
||
/* getElement(s)By*
|
||
---------------------------------------------------------------------- */
|
||
|
||
// Check if getElementsByTagName("*") returns only elements
|
||
support.getElementsByTagName = assert(function( div ) {
|
||
div.appendChild( doc.createComment("") );
|
||
return !div.getElementsByTagName("*").length;
|
||
});
|
||
|
||
// Support: IE<9
|
||
support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
|
||
|
||
// Support: IE<10
|
||
// Check if getElementById returns elements by name
|
||
// The broken getElementById methods don't pick up programatically-set names,
|
||
// so use a roundabout getElementsByName test
|
||
support.getById = assert(function( div ) {
|
||
docElem.appendChild( div ).id = expando;
|
||
return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
|
||
});
|
||
|
||
// ID find and filter
|
||
if ( support.getById ) {
|
||
Expr.find["ID"] = function( id, context ) {
|
||
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
||
var m = context.getElementById( id );
|
||
// Check parentNode to catch when Blackberry 4.6 returns
|
||
// nodes that are no longer in the document #6963
|
||
return m && m.parentNode ? [ m ] : [];
|
||
}
|
||
};
|
||
Expr.filter["ID"] = function( id ) {
|
||
var attrId = id.replace( runescape, funescape );
|
||
return function( elem ) {
|
||
return elem.getAttribute("id") === attrId;
|
||
};
|
||
};
|
||
} else {
|
||
// Support: IE6/7
|
||
// getElementById is not reliable as a find shortcut
|
||
delete Expr.find["ID"];
|
||
|
||
Expr.filter["ID"] = function( id ) {
|
||
var attrId = id.replace( runescape, funescape );
|
||
return function( elem ) {
|
||
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
|
||
return node && node.value === attrId;
|
||
};
|
||
};
|
||
}
|
||
|
||
// Tag
|
||
Expr.find["TAG"] = support.getElementsByTagName ?
|
||
function( tag, context ) {
|
||
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
||
return context.getElementsByTagName( tag );
|
||
|
||
// DocumentFragment nodes don't have gEBTN
|
||
} else if ( support.qsa ) {
|
||
return context.querySelectorAll( tag );
|
||
}
|
||
} :
|
||
|
||
function( tag, context ) {
|
||
var elem,
|
||
tmp = [],
|
||
i = 0,
|
||
// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
|
||
results = context.getElementsByTagName( tag );
|
||
|
||
// Filter out possible comments
|
||
if ( tag === "*" ) {
|
||
while ( (elem = results[i++]) ) {
|
||
if ( elem.nodeType === 1 ) {
|
||
tmp.push( elem );
|
||
}
|
||
}
|
||
|
||
return tmp;
|
||
}
|
||
return results;
|
||
};
|
||
|
||
// Class
|
||
Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
|
||
if ( documentIsHTML ) {
|
||
return context.getElementsByClassName( className );
|
||
}
|
||
};
|
||
|
||
/* QSA/matchesSelector
|
||
---------------------------------------------------------------------- */
|
||
|
||
// QSA and matchesSelector support
|
||
|
||
// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
|
||
rbuggyMatches = [];
|
||
|
||
// qSa(:focus) reports false when true (Chrome 21)
|
||
// We allow this because of a bug in IE8/9 that throws an error
|
||
// whenever `document.activeElement` is accessed on an iframe
|
||
// So, we allow :focus to pass through QSA all the time to avoid the IE error
|
||
// See http://bugs.jquery.com/ticket/13378
|
||
rbuggyQSA = [];
|
||
|
||
if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
|
||
// Build QSA regex
|
||
// Regex strategy adopted from Diego Perini
|
||
assert(function( div ) {
|
||
// Select is set to empty string on purpose
|
||
// This is to test IE's treatment of not explicitly
|
||
// setting a boolean content attribute,
|
||
// since its presence should be enough
|
||
// http://bugs.jquery.com/ticket/12359
|
||
docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
|
||
"<select id='" + expando + "-\f]' msallowcapture=''>" +
|
||
"<option selected=''></option></select>";
|
||
|
||
// Support: IE8, Opera 11-12.16
|
||
// Nothing should be selected when empty strings follow ^= or $= or *=
|
||
// The test attribute must be unknown in Opera but "safe" for WinRT
|
||
// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
||
if ( div.querySelectorAll("[msallowcapture^='']").length ) {
|
||
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
|
||
}
|
||
|
||
// Support: IE8
|
||
// Boolean attributes and "value" are not treated correctly
|
||
if ( !div.querySelectorAll("[selected]").length ) {
|
||
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
|
||
}
|
||
|
||
// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
|
||
if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
|
||
rbuggyQSA.push("~=");
|
||
}
|
||
|
||
// Webkit/Opera - :checked should return selected option elements
|
||
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
||
// IE8 throws error here and will not see later tests
|
||
if ( !div.querySelectorAll(":checked").length ) {
|
||
rbuggyQSA.push(":checked");
|
||
}
|
||
|
||
// Support: Safari 8+, iOS 8+
|
||
// https://bugs.webkit.org/show_bug.cgi?id=136851
|
||
// In-page `selector#id sibing-combinator selector` fails
|
||
if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
|
||
rbuggyQSA.push(".#.+[+~]");
|
||
}
|
||
});
|
||
|
||
assert(function( div ) {
|
||
// Support: Windows 8 Native Apps
|
||
// The type and name attributes are restricted during .innerHTML assignment
|
||
var input = doc.createElement("input");
|
||
input.setAttribute( "type", "hidden" );
|
||
div.appendChild( input ).setAttribute( "name", "D" );
|
||
|
||
// Support: IE8
|
||
// Enforce case-sensitivity of name attribute
|
||
if ( div.querySelectorAll("[name=d]").length ) {
|
||
rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
|
||
}
|
||
|
||
// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
|
||
// IE8 throws error here and will not see later tests
|
||
if ( !div.querySelectorAll(":enabled").length ) {
|
||
rbuggyQSA.push( ":enabled", ":disabled" );
|
||
}
|
||
|
||
// Opera 10-11 does not throw on post-comma invalid pseudos
|
||
div.querySelectorAll("*,:x");
|
||
rbuggyQSA.push(",.*:");
|
||
});
|
||
}
|
||
|
||
if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
|
||
docElem.webkitMatchesSelector ||
|
||
docElem.mozMatchesSelector ||
|
||
docElem.oMatchesSelector ||
|
||
docElem.msMatchesSelector) )) ) {
|
||
|
||
assert(function( div ) {
|
||
// Check to see if it's possible to do matchesSelector
|
||
// on a disconnected node (IE 9)
|
||
support.disconnectedMatch = matches.call( div, "div" );
|
||
|
||
// This should fail with an exception
|
||
// Gecko does not error, returns false instead
|
||
matches.call( div, "[s!='']:x" );
|
||
rbuggyMatches.push( "!=", pseudos );
|
||
});
|
||
}
|
||
|
||
rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
|
||
rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
|
||
|
||
/* Contains
|
||
---------------------------------------------------------------------- */
|
||
hasCompare = rnative.test( docElem.compareDocumentPosition );
|
||
|
||
// Element contains another
|
||
// Purposefully does not implement inclusive descendent
|
||
// As in, an element does not contain itself
|
||
contains = hasCompare || rnative.test( docElem.contains ) ?
|
||
function( a, b ) {
|
||
var adown = a.nodeType === 9 ? a.documentElement : a,
|
||
bup = b && b.parentNode;
|
||
return a === bup || !!( bup && bup.nodeType === 1 && (
|
||
adown.contains ?
|
||
adown.contains( bup ) :
|
||
a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
|
||
));
|
||
} :
|
||
function( a, b ) {
|
||
if ( b ) {
|
||
while ( (b = b.parentNode) ) {
|
||
if ( b === a ) {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
return false;
|
||
};
|
||
|
||
/* Sorting
|
||
---------------------------------------------------------------------- */
|
||
|
||
// Document order sorting
|
||
sortOrder = hasCompare ?
|
||
function( a, b ) {
|
||
|
||
// Flag for duplicate removal
|
||
if ( a === b ) {
|
||
hasDuplicate = true;
|
||
return 0;
|
||
}
|
||
|
||
// Sort on method existence if only one input has compareDocumentPosition
|
||
var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
|
||
if ( compare ) {
|
||
return compare;
|
||
}
|
||
|
||
// Calculate position if both inputs belong to the same document
|
||
compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
|
||
a.compareDocumentPosition( b ) :
|
||
|
||
// Otherwise we know they are disconnected
|
||
1;
|
||
|
||
// Disconnected nodes
|
||
if ( compare & 1 ||
|
||
(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
|
||
|
||
// Choose the first element that is related to our preferred document
|
||
if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
|
||
return -1;
|
||
}
|
||
if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
|
||
return 1;
|
||
}
|
||
|
||
// Maintain original order
|
||
return sortInput ?
|
||
( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
|
||
0;
|
||
}
|
||
|
||
return compare & 4 ? -1 : 1;
|
||
} :
|
||
function( a, b ) {
|
||
// Exit early if the nodes are identical
|
||
if ( a === b ) {
|
||
hasDuplicate = true;
|
||
return 0;
|
||
}
|
||
|
||
var cur,
|
||
i = 0,
|
||
aup = a.parentNode,
|
||
bup = b.parentNode,
|
||
ap = [ a ],
|
||
bp = [ b ];
|
||
|
||
// Parentless nodes are either documents or disconnected
|
||
if ( !aup || !bup ) {
|
||
return a === doc ? -1 :
|
||
b === doc ? 1 :
|
||
aup ? -1 :
|
||
bup ? 1 :
|
||
sortInput ?
|
||
( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
|
||
0;
|
||
|
||
// If the nodes are siblings, we can do a quick check
|
||
} else if ( aup === bup ) {
|
||
return siblingCheck( a, b );
|
||
}
|
||
|
||
// Otherwise we need full lists of their ancestors for comparison
|
||
cur = a;
|
||
while ( (cur = cur.parentNode) ) {
|
||
ap.unshift( cur );
|
||
}
|
||
cur = b;
|
||
while ( (cur = cur.parentNode) ) {
|
||
bp.unshift( cur );
|
||
}
|
||
|
||
// Walk down the tree looking for a discrepancy
|
||
while ( ap[i] === bp[i] ) {
|
||
i++;
|
||
}
|
||
|
||
return i ?
|
||
// Do a sibling check if the nodes have a common ancestor
|
||
siblingCheck( ap[i], bp[i] ) :
|
||
|
||
// Otherwise nodes in our document sort first
|
||
ap[i] === preferredDoc ? -1 :
|
||
bp[i] === preferredDoc ? 1 :
|
||
0;
|
||
};
|
||
|
||
return doc;
|
||
};
|
||
|
||
Sizzle.matches = function( expr, elements ) {
|
||
return Sizzle( expr, null, null, elements );
|
||
};
|
||
|
||
Sizzle.matchesSelector = function( elem, expr ) {
|
||
// Set document vars if needed
|
||
if ( ( elem.ownerDocument || elem ) !== document ) {
|
||
setDocument( elem );
|
||
}
|
||
|
||
// Make sure that attribute selectors are quoted
|
||
expr = expr.replace( rattributeQuotes, "='$1']" );
|
||
|
||
if ( support.matchesSelector && documentIsHTML &&
|
||
( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
|
||
( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
|
||
|
||
try {
|
||
var ret = matches.call( elem, expr );
|
||
|
||
// IE 9's matchesSelector returns false on disconnected nodes
|
||
if ( ret || support.disconnectedMatch ||
|
||
// As well, disconnected nodes are said to be in a document
|
||
// fragment in IE 9
|
||
elem.document && elem.document.nodeType !== 11 ) {
|
||
return ret;
|
||
}
|
||
} catch (e) {}
|
||
}
|
||
|
||
return Sizzle( expr, document, null, [ elem ] ).length > 0;
|
||
};
|
||
|
||
Sizzle.contains = function( context, elem ) {
|
||
// Set document vars if needed
|
||
if ( ( context.ownerDocument || context ) !== document ) {
|
||
setDocument( context );
|
||
}
|
||
return contains( context, elem );
|
||
};
|
||
|
||
Sizzle.attr = function( elem, name ) {
|
||
// Set document vars if needed
|
||
if ( ( elem.ownerDocument || elem ) !== document ) {
|
||
setDocument( elem );
|
||
}
|
||
|
||
var fn = Expr.attrHandle[ name.toLowerCase() ],
|
||
// Don't get fooled by Object.prototype properties (jQuery #13807)
|
||
val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
|
||
fn( elem, name, !documentIsHTML ) :
|
||
undefined;
|
||
|
||
return val !== undefined ?
|
||
val :
|
||
support.attributes || !documentIsHTML ?
|
||
elem.getAttribute( name ) :
|
||
(val = elem.getAttributeNode(name)) && val.specified ?
|
||
val.value :
|
||
null;
|
||
};
|
||
|
||
Sizzle.error = function( msg ) {
|
||
throw new Error( "Syntax error, unrecognized expression: " + msg );
|
||
};
|
||
|
||
/**
|
||
* Document sorting and removing duplicates
|
||
* @param {ArrayLike} results
|
||
*/
|
||
Sizzle.uniqueSort = function( results ) {
|
||
var elem,
|
||
duplicates = [],
|
||
j = 0,
|
||
i = 0;
|
||
|
||
// Unless we *know* we can detect duplicates, assume their presence
|
||
hasDuplicate = !support.detectDuplicates;
|
||
sortInput = !support.sortStable && results.slice( 0 );
|
||
results.sort( sortOrder );
|
||
|
||
if ( hasDuplicate ) {
|
||
while ( (elem = results[i++]) ) {
|
||
if ( elem === results[ i ] ) {
|
||
j = duplicates.push( i );
|
||
}
|
||
}
|
||
while ( j-- ) {
|
||
results.splice( duplicates[ j ], 1 );
|
||
}
|
||
}
|
||
|
||
// Clear input after sorting to release objects
|
||
// See https://github.com/jquery/sizzle/pull/225
|
||
sortInput = null;
|
||
|
||
return results;
|
||
};
|
||
|
||
/**
|
||
* Utility function for retrieving the text value of an array of DOM nodes
|
||
* @param {Array|Element} elem
|
||
*/
|
||
getText = Sizzle.getText = function( elem ) {
|
||
var node,
|
||
ret = "",
|
||
i = 0,
|
||
nodeType = elem.nodeType;
|
||
|
||
if ( !nodeType ) {
|
||
// If no nodeType, this is expected to be an array
|
||
while ( (node = elem[i++]) ) {
|
||
// Do not traverse comment nodes
|
||
ret += getText( node );
|
||
}
|
||
} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
|
||
// Use textContent for elements
|
||
// innerText usage removed for consistency of new lines (jQuery #11153)
|
||
if ( typeof elem.textContent === "string" ) {
|
||
return elem.textContent;
|
||
} else {
|
||
// Traverse its children
|
||
for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
|
||
ret += getText( elem );
|
||
}
|
||
}
|
||
} else if ( nodeType === 3 || nodeType === 4 ) {
|
||
return elem.nodeValue;
|
||
}
|
||
// Do not include comment or processing instruction nodes
|
||
|
||
return ret;
|
||
};
|
||
|
||
Expr = Sizzle.selectors = {
|
||
|
||
// Can be adjusted by the user
|
||
cacheLength: 50,
|
||
|
||
createPseudo: markFunction,
|
||
|
||
match: matchExpr,
|
||
|
||
attrHandle: {},
|
||
|
||
find: {},
|
||
|
||
relative: {
|
||
">": { dir: "parentNode", first: true },
|
||
" ": { dir: "parentNode" },
|
||
"+": { dir: "previousSibling", first: true },
|
||
"~": { dir: "previousSibling" }
|
||
},
|
||
|
||
preFilter: {
|
||
"ATTR": function( match ) {
|
||
match[1] = match[1].replace( runescape, funescape );
|
||
|
||
// Move the given value to match[3] whether quoted or unquoted
|
||
match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
|
||
|
||
if ( match[2] === "~=" ) {
|
||
match[3] = " " + match[3] + " ";
|
||
}
|
||
|
||
return match.slice( 0, 4 );
|
||
},
|
||
|
||
"CHILD": function( match ) {
|
||
/* matches from matchExpr["CHILD"]
|
||
1 type (only|nth|...)
|
||
2 what (child|of-type)
|
||
3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
|
||
4 xn-component of xn+y argument ([+-]?\d*n|)
|
||
5 sign of xn-component
|
||
6 x of xn-component
|
||
7 sign of y-component
|
||
8 y of y-component
|
||
*/
|
||
match[1] = match[1].toLowerCase();
|
||
|
||
if ( match[1].slice( 0, 3 ) === "nth" ) {
|
||
// nth-* requires argument
|
||
if ( !match[3] ) {
|
||
Sizzle.error( match[0] );
|
||
}
|
||
|
||
// numeric x and y parameters for Expr.filter.CHILD
|
||
// remember that false/true cast respectively to 0/1
|
||
match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
|
||
match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
|
||
|
||
// other types prohibit arguments
|
||
} else if ( match[3] ) {
|
||
Sizzle.error( match[0] );
|
||
}
|
||
|
||
return match;
|
||
},
|
||
|
||
"PSEUDO": function( match ) {
|
||
var excess,
|
||
unquoted = !match[6] && match[2];
|
||
|
||
if ( matchExpr["CHILD"].test( match[0] ) ) {
|
||
return null;
|
||
}
|
||
|
||
// Accept quoted arguments as-is
|
||
if ( match[3] ) {
|
||
match[2] = match[4] || match[5] || "";
|
||
|
||
// Strip excess characters from unquoted arguments
|
||
} else if ( unquoted && rpseudo.test( unquoted ) &&
|
||
// Get excess from tokenize (recursively)
|
||
(excess = tokenize( unquoted, true )) &&
|
||
// advance to the next closing parenthesis
|
||
(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
|
||
|
||
// excess is a negative index
|
||
match[0] = match[0].slice( 0, excess );
|
||
match[2] = unquoted.slice( 0, excess );
|
||
}
|
||
|
||
// Return only captures needed by the pseudo filter method (type and argument)
|
||
return match.slice( 0, 3 );
|
||
}
|
||
},
|
||
|
||
filter: {
|
||
|
||
"TAG": function( nodeNameSelector ) {
|
||
var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
|
||
return nodeNameSelector === "*" ?
|
||
function() { return true; } :
|
||
function( elem ) {
|
||
return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
|
||
};
|
||
},
|
||
|
||
"CLASS": function( className ) {
|
||
var pattern = classCache[ className + " " ];
|
||
|
||
return pattern ||
|
||
(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
|
||
classCache( className, function( elem ) {
|
||
return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
|
||
});
|
||
},
|
||
|
||
"ATTR": function( name, operator, check ) {
|
||
return function( elem ) {
|
||
var result = Sizzle.attr( elem, name );
|
||
|
||
if ( result == null ) {
|
||
return operator === "!=";
|
||
}
|
||
if ( !operator ) {
|
||
return true;
|
||
}
|
||
|
||
result += "";
|
||
|
||
return operator === "=" ? result === check :
|
||
operator === "!=" ? result !== check :
|
||
operator === "^=" ? check && result.indexOf( check ) === 0 :
|
||
operator === "*=" ? check && result.indexOf( check ) > -1 :
|
||
operator === "$=" ? check && result.slice( -check.length ) === check :
|
||
operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
|
||
operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
|
||
false;
|
||
};
|
||
},
|
||
|
||
"CHILD": function( type, what, argument, first, last ) {
|
||
var simple = type.slice( 0, 3 ) !== "nth",
|
||
forward = type.slice( -4 ) !== "last",
|
||
ofType = what === "of-type";
|
||
|
||
return first === 1 && last === 0 ?
|
||
|
||
// Shortcut for :nth-*(n)
|
||
function( elem ) {
|
||
return !!elem.parentNode;
|
||
} :
|
||
|
||
function( elem, context, xml ) {
|
||
var cache, outerCache, node, diff, nodeIndex, start,
|
||
dir = simple !== forward ? "nextSibling" : "previousSibling",
|
||
parent = elem.parentNode,
|
||
name = ofType && elem.nodeName.toLowerCase(),
|
||
useCache = !xml && !ofType;
|
||
|
||
if ( parent ) {
|
||
|
||
// :(first|last|only)-(child|of-type)
|
||
if ( simple ) {
|
||
while ( dir ) {
|
||
node = elem;
|
||
while ( (node = node[ dir ]) ) {
|
||
if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
|
||
return false;
|
||
}
|
||
}
|
||
// Reverse direction for :only-* (if we haven't yet done so)
|
||
start = dir = type === "only" && !start && "nextSibling";
|
||
}
|
||
return true;
|
||
}
|
||
|
||
start = [ forward ? parent.firstChild : parent.lastChild ];
|
||
|
||
// non-xml :nth-child(...) stores cache data on `parent`
|
||
if ( forward && useCache ) {
|
||
// Seek `elem` from a previously-cached index
|
||
outerCache = parent[ expando ] || (parent[ expando ] = {});
|
||
cache = outerCache[ type ] || [];
|
||
nodeIndex = cache[0] === dirruns && cache[1];
|
||
diff = cache[0] === dirruns && cache[2];
|
||
node = nodeIndex && parent.childNodes[ nodeIndex ];
|
||
|
||
while ( (node = ++nodeIndex && node && node[ dir ] ||
|
||
|
||
// Fallback to seeking `elem` from the start
|
||
(diff = nodeIndex = 0) || start.pop()) ) {
|
||
|
||
// When found, cache indexes on `parent` and break
|
||
if ( node.nodeType === 1 && ++diff && node === elem ) {
|
||
outerCache[ type ] = [ dirruns, nodeIndex, diff ];
|
||
break;
|
||
}
|
||
}
|
||
|
||
// Use previously-cached element index if available
|
||
} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
|
||
diff = cache[1];
|
||
|
||
// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
|
||
} else {
|
||
// Use the same loop as above to seek `elem` from the start
|
||
while ( (node = ++nodeIndex && node && node[ dir ] ||
|
||
(diff = nodeIndex = 0) || start.pop()) ) {
|
||
|
||
if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
|
||
// Cache the index of each encountered element
|
||
if ( useCache ) {
|
||
(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
|
||
}
|
||
|
||
if ( node === elem ) {
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Incorporate the offset, then check against cycle size
|
||
diff -= last;
|
||
return diff === first || ( diff % first === 0 && diff / first >= 0 );
|
||
}
|
||
};
|
||
},
|
||
|
||
"PSEUDO": function( pseudo, argument ) {
|
||
// pseudo-class names are case-insensitive
|
||
// http://www.w3.org/TR/selectors/#pseudo-classes
|
||
// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
|
||
// Remember that setFilters inherits from pseudos
|
||
var args,
|
||
fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
|
||
Sizzle.error( "unsupported pseudo: " + pseudo );
|
||
|
||
// The user may use createPseudo to indicate that
|
||
// arguments are needed to create the filter function
|
||
// just as Sizzle does
|
||
if ( fn[ expando ] ) {
|
||
return fn( argument );
|
||
}
|
||
|
||
// But maintain support for old signatures
|
||
if ( fn.length > 1 ) {
|
||
args = [ pseudo, pseudo, "", argument ];
|
||
return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
|
||
markFunction(function( seed, matches ) {
|
||
var idx,
|
||
matched = fn( seed, argument ),
|
||
i = matched.length;
|
||
while ( i-- ) {
|
||
idx = indexOf( seed, matched[i] );
|
||
seed[ idx ] = !( matches[ idx ] = matched[i] );
|
||
}
|
||
}) :
|
||
function( elem ) {
|
||
return fn( elem, 0, args );
|
||
};
|
||
}
|
||
|
||
return fn;
|
||
}
|
||
},
|
||
|
||
pseudos: {
|
||
// Potentially complex pseudos
|
||
"not": markFunction(function( selector ) {
|
||
// Trim the selector passed to compile
|
||
// to avoid treating leading and trailing
|
||
// spaces as combinators
|
||
var input = [],
|
||
results = [],
|
||
matcher = compile( selector.replace( rtrim, "$1" ) );
|
||
|
||
return matcher[ expando ] ?
|
||
markFunction(function( seed, matches, context, xml ) {
|
||
var elem,
|
||
unmatched = matcher( seed, null, xml, [] ),
|
||
i = seed.length;
|
||
|
||
// Match elements unmatched by `matcher`
|
||
while ( i-- ) {
|
||
if ( (elem = unmatched[i]) ) {
|
||
seed[i] = !(matches[i] = elem);
|
||
}
|
||
}
|
||
}) :
|
||
function( elem, context, xml ) {
|
||
input[0] = elem;
|
||
matcher( input, null, xml, results );
|
||
// Don't keep the element (issue #299)
|
||
input[0] = null;
|
||
return !results.pop();
|
||
};
|
||
}),
|
||
|
||
"has": markFunction(function( selector ) {
|
||
return function( elem ) {
|
||
return Sizzle( selector, elem ).length > 0;
|
||
};
|
||
}),
|
||
|
||
"contains": markFunction(function( text ) {
|
||
text = text.replace( runescape, funescape );
|
||
return function( elem ) {
|
||
return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
|
||
};
|
||
}),
|
||
|
||
// "Whether an element is represented by a :lang() selector
|
||
// is based solely on the element's language value
|
||
// being equal to the identifier C,
|
||
// or beginning with the identifier C immediately followed by "-".
|
||
// The matching of C against the element's language value is performed case-insensitively.
|
||
// The identifier C does not have to be a valid language name."
|
||
// http://www.w3.org/TR/selectors/#lang-pseudo
|
||
"lang": markFunction( function( lang ) {
|
||
// lang value must be a valid identifier
|
||
if ( !ridentifier.test(lang || "") ) {
|
||
Sizzle.error( "unsupported lang: " + lang );
|
||
}
|
||
lang = lang.replace( runescape, funescape ).toLowerCase();
|
||
return function( elem ) {
|
||
var elemLang;
|
||
do {
|
||
if ( (elemLang = documentIsHTML ?
|
||
elem.lang :
|
||
elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
|
||
|
||
elemLang = elemLang.toLowerCase();
|
||
return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
|
||
}
|
||
} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
|
||
return false;
|
||
};
|
||
}),
|
||
|
||
// Miscellaneous
|
||
"target": function( elem ) {
|
||
var hash = window.location && window.location.hash;
|
||
return hash && hash.slice( 1 ) === elem.id;
|
||
},
|
||
|
||
"root": function( elem ) {
|
||
return elem === docElem;
|
||
},
|
||
|
||
"focus": function( elem ) {
|
||
return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
|
||
},
|
||
|
||
// Boolean properties
|
||
"enabled": function( elem ) {
|
||
return elem.disabled === false;
|
||
},
|
||
|
||
"disabled": function( elem ) {
|
||
return elem.disabled === true;
|
||
},
|
||
|
||
"checked": function( elem ) {
|
||
// In CSS3, :checked should return both checked and selected elements
|
||
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
||
var nodeName = elem.nodeName.toLowerCase();
|
||
return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
|
||
},
|
||
|
||
"selected": function( elem ) {
|
||
// Accessing this property makes selected-by-default
|
||
// options in Safari work properly
|
||
if ( elem.parentNode ) {
|
||
elem.parentNode.selectedIndex;
|
||
}
|
||
|
||
return elem.selected === true;
|
||
},
|
||
|
||
// Contents
|
||
"empty": function( elem ) {
|
||
// http://www.w3.org/TR/selectors/#empty-pseudo
|
||
// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
|
||
// but not by others (comment: 8; processing instruction: 7; etc.)
|
||
// nodeType < 6 works because attributes (2) do not appear as children
|
||
for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
|
||
if ( elem.nodeType < 6 ) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
},
|
||
|
||
"parent": function( elem ) {
|
||
return !Expr.pseudos["empty"]( elem );
|
||
},
|
||
|
||
// Element/input types
|
||
"header": function( elem ) {
|
||
return rheader.test( elem.nodeName );
|
||
},
|
||
|
||
"input": function( elem ) {
|
||
return rinputs.test( elem.nodeName );
|
||
},
|
||
|
||
"button": function( elem ) {
|
||
var name = elem.nodeName.toLowerCase();
|
||
return name === "input" && elem.type === "button" || name === "button";
|
||
},
|
||
|
||
"text": function( elem ) {
|
||
var attr;
|
||
return elem.nodeName.toLowerCase() === "input" &&
|
||
elem.type === "text" &&
|
||
|
||
// Support: IE<8
|
||
// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
|
||
( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
|
||
},
|
||
|
||
// Position-in-collection
|
||
"first": createPositionalPseudo(function() {
|
||
return [ 0 ];
|
||
}),
|
||
|
||
"last": createPositionalPseudo(function( matchIndexes, length ) {
|
||
return [ length - 1 ];
|
||
}),
|
||
|
||
"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
|
||
return [ argument < 0 ? argument + length : argument ];
|
||
}),
|
||
|
||
"even": createPositionalPseudo(function( matchIndexes, length ) {
|
||
var i = 0;
|
||
for ( ; i < length; i += 2 ) {
|
||
matchIndexes.push( i );
|
||
}
|
||
return matchIndexes;
|
||
}),
|
||
|
||
"odd": createPositionalPseudo(function( matchIndexes, length ) {
|
||
var i = 1;
|
||
for ( ; i < length; i += 2 ) {
|
||
matchIndexes.push( i );
|
||
}
|
||
return matchIndexes;
|
||
}),
|
||
|
||
"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
|
||
var i = argument < 0 ? argument + length : argument;
|
||
for ( ; --i >= 0; ) {
|
||
matchIndexes.push( i );
|
||
}
|
||
return matchIndexes;
|
||
}),
|
||
|
||
"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
|
||
var i = argument < 0 ? argument + length : argument;
|
||
for ( ; ++i < length; ) {
|
||
matchIndexes.push( i );
|
||
}
|
||
return matchIndexes;
|
||
})
|
||
}
|
||
};
|
||
|
||
Expr.pseudos["nth"] = Expr.pseudos["eq"];
|
||
|
||
// Add button/input type pseudos
|
||
for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
|
||
Expr.pseudos[ i ] = createInputPseudo( i );
|
||
}
|
||
for ( i in { submit: true, reset: true } ) {
|
||
Expr.pseudos[ i ] = createButtonPseudo( i );
|
||
}
|
||
|
||
// Easy API for creating new setFilters
|
||
function setFilters() {}
|
||
setFilters.prototype = Expr.filters = Expr.pseudos;
|
||
Expr.setFilters = new setFilters();
|
||
|
||
tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
|
||
var matched, match, tokens, type,
|
||
soFar, groups, preFilters,
|
||
cached = tokenCache[ selector + " " ];
|
||
|
||
if ( cached ) {
|
||
return parseOnly ? 0 : cached.slice( 0 );
|
||
}
|
||
|
||
soFar = selector;
|
||
groups = [];
|
||
preFilters = Expr.preFilter;
|
||
|
||
while ( soFar ) {
|
||
|
||
// Comma and first run
|
||
if ( !matched || (match = rcomma.exec( soFar )) ) {
|
||
if ( match ) {
|
||
// Don't consume trailing commas as valid
|
||
soFar = soFar.slice( match[0].length ) || soFar;
|
||
}
|
||
groups.push( (tokens = []) );
|
||
}
|
||
|
||
matched = false;
|
||
|
||
// Combinators
|
||
if ( (match = rcombinators.exec( soFar )) ) {
|
||
matched = match.shift();
|
||
tokens.push({
|
||
value: matched,
|
||
// Cast descendant combinators to space
|
||
type: match[0].replace( rtrim, " " )
|
||
});
|
||
soFar = soFar.slice( matched.length );
|
||
}
|
||
|
||
// Filters
|
||
for ( type in Expr.filter ) {
|
||
if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
|
||
(match = preFilters[ type ]( match ))) ) {
|
||
matched = match.shift();
|
||
tokens.push({
|
||
value: matched,
|
||
type: type,
|
||
matches: match
|
||
});
|
||
soFar = soFar.slice( matched.length );
|
||
}
|
||
}
|
||
|
||
if ( !matched ) {
|
||
break;
|
||
}
|
||
}
|
||
|
||
// Return the length of the invalid excess
|
||
// if we're just parsing
|
||
// Otherwise, throw an error or return tokens
|
||
return parseOnly ?
|
||
soFar.length :
|
||
soFar ?
|
||
Sizzle.error( selector ) :
|
||
// Cache the tokens
|
||
tokenCache( selector, groups ).slice( 0 );
|
||
};
|
||
|
||
function toSelector( tokens ) {
|
||
var i = 0,
|
||
len = tokens.length,
|
||
selector = "";
|
||
for ( ; i < len; i++ ) {
|
||
selector += tokens[i].value;
|
||
}
|
||
return selector;
|
||
}
|
||
|
||
function addCombinator( matcher, combinator, base ) {
|
||
var dir = combinator.dir,
|
||
checkNonElements = base && dir === "parentNode",
|
||
doneName = done++;
|
||
|
||
return combinator.first ?
|
||
// Check against closest ancestor/preceding element
|
||
function( elem, context, xml ) {
|
||
while ( (elem = elem[ dir ]) ) {
|
||
if ( elem.nodeType === 1 || checkNonElements ) {
|
||
return matcher( elem, context, xml );
|
||
}
|
||
}
|
||
} :
|
||
|
||
// Check against all ancestor/preceding elements
|
||
function( elem, context, xml ) {
|
||
var oldCache, outerCache,
|
||
newCache = [ dirruns, doneName ];
|
||
|
||
// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
|
||
if ( xml ) {
|
||
while ( (elem = elem[ dir ]) ) {
|
||
if ( elem.nodeType === 1 || checkNonElements ) {
|
||
if ( matcher( elem, context, xml ) ) {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
while ( (elem = elem[ dir ]) ) {
|
||
if ( elem.nodeType === 1 || checkNonElements ) {
|
||
outerCache = elem[ expando ] || (elem[ expando ] = {});
|
||
if ( (oldCache = outerCache[ dir ]) &&
|
||
oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
|
||
|
||
// Assign to newCache so results back-propagate to previous elements
|
||
return (newCache[ 2 ] = oldCache[ 2 ]);
|
||
} else {
|
||
// Reuse newcache so results back-propagate to previous elements
|
||
outerCache[ dir ] = newCache;
|
||
|
||
// A match means we're done; a fail means we have to keep checking
|
||
if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
}
|
||
|
||
function elementMatcher( matchers ) {
|
||
return matchers.length > 1 ?
|
||
function( elem, context, xml ) {
|
||
var i = matchers.length;
|
||
while ( i-- ) {
|
||
if ( !matchers[i]( elem, context, xml ) ) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
} :
|
||
matchers[0];
|
||
}
|
||
|
||
function multipleContexts( selector, contexts, results ) {
|
||
var i = 0,
|
||
len = contexts.length;
|
||
for ( ; i < len; i++ ) {
|
||
Sizzle( selector, contexts[i], results );
|
||
}
|
||
return results;
|
||
}
|
||
|
||
function condense( unmatched, map, filter, context, xml ) {
|
||
var elem,
|
||
newUnmatched = [],
|
||
i = 0,
|
||
len = unmatched.length,
|
||
mapped = map != null;
|
||
|
||
for ( ; i < len; i++ ) {
|
||
if ( (elem = unmatched[i]) ) {
|
||
if ( !filter || filter( elem, context, xml ) ) {
|
||
newUnmatched.push( elem );
|
||
if ( mapped ) {
|
||
map.push( i );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return newUnmatched;
|
||
}
|
||
|
||
function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
|
||
if ( postFilter && !postFilter[ expando ] ) {
|
||
postFilter = setMatcher( postFilter );
|
||
}
|
||
if ( postFinder && !postFinder[ expando ] ) {
|
||
postFinder = setMatcher( postFinder, postSelector );
|
||
}
|
||
return markFunction(function( seed, results, context, xml ) {
|
||
var temp, i, elem,
|
||
preMap = [],
|
||
postMap = [],
|
||
preexisting = results.length,
|
||
|
||
// Get initial elements from seed or context
|
||
elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
|
||
|
||
// Prefilter to get matcher input, preserving a map for seed-results synchronization
|
||
matcherIn = preFilter && ( seed || !selector ) ?
|
||
condense( elems, preMap, preFilter, context, xml ) :
|
||
elems,
|
||
|
||
matcherOut = matcher ?
|
||
// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
|
||
postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
|
||
|
||
// ...intermediate processing is necessary
|
||
[] :
|
||
|
||
// ...otherwise use results directly
|
||
results :
|
||
matcherIn;
|
||
|
||
// Find primary matches
|
||
if ( matcher ) {
|
||
matcher( matcherIn, matcherOut, context, xml );
|
||
}
|
||
|
||
// Apply postFilter
|
||
if ( postFilter ) {
|
||
temp = condense( matcherOut, postMap );
|
||
postFilter( temp, [], context, xml );
|
||
|
||
// Un-match failing elements by moving them back to matcherIn
|
||
i = temp.length;
|
||
while ( i-- ) {
|
||
if ( (elem = temp[i]) ) {
|
||
matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
|
||
}
|
||
}
|
||
}
|
||
|
||
if ( seed ) {
|
||
if ( postFinder || preFilter ) {
|
||
if ( postFinder ) {
|
||
// Get the final matcherOut by condensing this intermediate into postFinder contexts
|
||
temp = [];
|
||
i = matcherOut.length;
|
||
while ( i-- ) {
|
||
if ( (elem = matcherOut[i]) ) {
|
||
// Restore matcherIn since elem is not yet a final match
|
||
temp.push( (matcherIn[i] = elem) );
|
||
}
|
||
}
|
||
postFinder( null, (matcherOut = []), temp, xml );
|
||
}
|
||
|
||
// Move matched elements from seed to results to keep them synchronized
|
||
i = matcherOut.length;
|
||
while ( i-- ) {
|
||
if ( (elem = matcherOut[i]) &&
|
||
(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
|
||
|
||
seed[temp] = !(results[temp] = elem);
|
||
}
|
||
}
|
||
}
|
||
|
||
// Add elements to results, through postFinder if defined
|
||
} else {
|
||
matcherOut = condense(
|
||
matcherOut === results ?
|
||
matcherOut.splice( preexisting, matcherOut.length ) :
|
||
matcherOut
|
||
);
|
||
if ( postFinder ) {
|
||
postFinder( null, results, matcherOut, xml );
|
||
} else {
|
||
push.apply( results, matcherOut );
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
function matcherFromTokens( tokens ) {
|
||
var checkContext, matcher, j,
|
||
len = tokens.length,
|
||
leadingRelative = Expr.relative[ tokens[0].type ],
|
||
implicitRelative = leadingRelative || Expr.relative[" "],
|
||
i = leadingRelative ? 1 : 0,
|
||
|
||
// The foundational matcher ensures that elements are reachable from top-level context(s)
|
||
matchContext = addCombinator( function( elem ) {
|
||
return elem === checkContext;
|
||
}, implicitRelative, true ),
|
||
matchAnyContext = addCombinator( function( elem ) {
|
||
return indexOf( checkContext, elem ) > -1;
|
||
}, implicitRelative, true ),
|
||
matchers = [ function( elem, context, xml ) {
|
||
var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
|
||
(checkContext = context).nodeType ?
|
||
matchContext( elem, context, xml ) :
|
||
matchAnyContext( elem, context, xml ) );
|
||
// Avoid hanging onto element (issue #299)
|
||
checkContext = null;
|
||
return ret;
|
||
} ];
|
||
|
||
for ( ; i < len; i++ ) {
|
||
if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
|
||
matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
|
||
} else {
|
||
matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
|
||
|
||
// Return special upon seeing a positional matcher
|
||
if ( matcher[ expando ] ) {
|
||
// Find the next relative operator (if any) for proper handling
|
||
j = ++i;
|
||
for ( ; j < len; j++ ) {
|
||
if ( Expr.relative[ tokens[j].type ] ) {
|
||
break;
|
||
}
|
||
}
|
||
return setMatcher(
|
||
i > 1 && elementMatcher( matchers ),
|
||
i > 1 && toSelector(
|
||
// If the preceding token was a descendant combinator, insert an implicit any-element `*`
|
||
tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
|
||
).replace( rtrim, "$1" ),
|
||
matcher,
|
||
i < j && matcherFromTokens( tokens.slice( i, j ) ),
|
||
j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
|
||
j < len && toSelector( tokens )
|
||
);
|
||
}
|
||
matchers.push( matcher );
|
||
}
|
||
}
|
||
|
||
return elementMatcher( matchers );
|
||
}
|
||
|
||
function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
||
var bySet = setMatchers.length > 0,
|
||
byElement = elementMatchers.length > 0,
|
||
superMatcher = function( seed, context, xml, results, outermost ) {
|
||
var elem, j, matcher,
|
||
matchedCount = 0,
|
||
i = "0",
|
||
unmatched = seed && [],
|
||
setMatched = [],
|
||
contextBackup = outermostContext,
|
||
// We must always have either seed elements or outermost context
|
||
elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
|
||
// Use integer dirruns iff this is the outermost matcher
|
||
dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
|
||
len = elems.length;
|
||
|
||
if ( outermost ) {
|
||
outermostContext = context !== document && context;
|
||
}
|
||
|
||
// Add elements passing elementMatchers directly to results
|
||
// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
|
||
// Support: IE<9, Safari
|
||
// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
|
||
for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
|
||
if ( byElement && elem ) {
|
||
j = 0;
|
||
while ( (matcher = elementMatchers[j++]) ) {
|
||
if ( matcher( elem, context, xml ) ) {
|
||
results.push( elem );
|
||
break;
|
||
}
|
||
}
|
||
if ( outermost ) {
|
||
dirruns = dirrunsUnique;
|
||
}
|
||
}
|
||
|
||
// Track unmatched elements for set filters
|
||
if ( bySet ) {
|
||
// They will have gone through all possible matchers
|
||
if ( (elem = !matcher && elem) ) {
|
||
matchedCount--;
|
||
}
|
||
|
||
// Lengthen the array for every element, matched or not
|
||
if ( seed ) {
|
||
unmatched.push( elem );
|
||
}
|
||
}
|
||
}
|
||
|
||
// Apply set filters to unmatched elements
|
||
matchedCount += i;
|
||
if ( bySet && i !== matchedCount ) {
|
||
j = 0;
|
||
while ( (matcher = setMatchers[j++]) ) {
|
||
matcher( unmatched, setMatched, context, xml );
|
||
}
|
||
|
||
if ( seed ) {
|
||
// Reintegrate element matches to eliminate the need for sorting
|
||
if ( matchedCount > 0 ) {
|
||
while ( i-- ) {
|
||
if ( !(unmatched[i] || setMatched[i]) ) {
|
||
setMatched[i] = pop.call( results );
|
||
}
|
||
}
|
||
}
|
||
|
||
// Discard index placeholder values to get only actual matches
|
||
setMatched = condense( setMatched );
|
||
}
|
||
|
||
// Add matches to results
|
||
push.apply( results, setMatched );
|
||
|
||
// Seedless set matches succeeding multiple successful matchers stipulate sorting
|
||
if ( outermost && !seed && setMatched.length > 0 &&
|
||
( matchedCount + setMatchers.length ) > 1 ) {
|
||
|
||
Sizzle.uniqueSort( results );
|
||
}
|
||
}
|
||
|
||
// Override manipulation of globals by nested matchers
|
||
if ( outermost ) {
|
||
dirruns = dirrunsUnique;
|
||
outermostContext = contextBackup;
|
||
}
|
||
|
||
return unmatched;
|
||
};
|
||
|
||
return bySet ?
|
||
markFunction( superMatcher ) :
|
||
superMatcher;
|
||
}
|
||
|
||
compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
|
||
var i,
|
||
setMatchers = [],
|
||
elementMatchers = [],
|
||
cached = compilerCache[ selector + " " ];
|
||
|
||
if ( !cached ) {
|
||
// Generate a function of recursive functions that can be used to check each element
|
||
if ( !match ) {
|
||
match = tokenize( selector );
|
||
}
|
||
i = match.length;
|
||
while ( i-- ) {
|
||
cached = matcherFromTokens( match[i] );
|
||
if ( cached[ expando ] ) {
|
||
setMatchers.push( cached );
|
||
} else {
|
||
elementMatchers.push( cached );
|
||
}
|
||
}
|
||
|
||
// Cache the compiled function
|
||
cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
|
||
|
||
// Save selector and tokenization
|
||
cached.selector = selector;
|
||
}
|
||
return cached;
|
||
};
|
||
|
||
/**
|
||
* A low-level selection function that works with Sizzle's compiled
|
||
* selector functions
|
||
* @param {String|Function} selector A selector or a pre-compiled
|
||
* selector function built with Sizzle.compile
|
||
* @param {Element} context
|
||
* @param {Array} [results]
|
||
* @param {Array} [seed] A set of elements to match against
|
||
*/
|
||
select = Sizzle.select = function( selector, context, results, seed ) {
|
||
var i, tokens, token, type, find,
|
||
compiled = typeof selector === "function" && selector,
|
||
match = !seed && tokenize( (selector = compiled.selector || selector) );
|
||
|
||
results = results || [];
|
||
|
||
// Try to minimize operations if there is no seed and only one group
|
||
if ( match.length === 1 ) {
|
||
|
||
// Take a shortcut and set the context if the root selector is an ID
|
||
tokens = match[0] = match[0].slice( 0 );
|
||
if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
|
||
support.getById && context.nodeType === 9 && documentIsHTML &&
|
||
Expr.relative[ tokens[1].type ] ) {
|
||
|
||
context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
|
||
if ( !context ) {
|
||
return results;
|
||
|
||
// Precompiled matchers will still verify ancestry, so step up a level
|
||
} else if ( compiled ) {
|
||
context = context.parentNode;
|
||
}
|
||
|
||
selector = selector.slice( tokens.shift().value.length );
|
||
}
|
||
|
||
// Fetch a seed set for right-to-left matching
|
||
i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
|
||
while ( i-- ) {
|
||
token = tokens[i];
|
||
|
||
// Abort if we hit a combinator
|
||
if ( Expr.relative[ (type = token.type) ] ) {
|
||
break;
|
||
}
|
||
if ( (find = Expr.find[ type ]) ) {
|
||
// Search, expanding context for leading sibling combinators
|
||
if ( (seed = find(
|
||
token.matches[0].replace( runescape, funescape ),
|
||
rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
|
||
)) ) {
|
||
|
||
// If seed is empty or no tokens remain, we can return early
|
||
tokens.splice( i, 1 );
|
||
selector = seed.length && toSelector( tokens );
|
||
if ( !selector ) {
|
||
push.apply( results, seed );
|
||
return results;
|
||
}
|
||
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Compile and execute a filtering function if one is not provided
|
||
// Provide `match` to avoid retokenization if we modified the selector above
|
||
( compiled || compile( selector, match ) )(
|
||
seed,
|
||
context,
|
||
!documentIsHTML,
|
||
results,
|
||
rsibling.test( selector ) && testContext( context.parentNode ) || context
|
||
);
|
||
return results;
|
||
};
|
||
|
||
// One-time assignments
|
||
|
||
// Sort stability
|
||
support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
|
||
|
||
// Support: Chrome 14-35+
|
||
// Always assume duplicates if they aren't passed to the comparison function
|
||
support.detectDuplicates = !!hasDuplicate;
|
||
|
||
// Initialize against the default document
|
||
setDocument();
|
||
|
||
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
|
||
// Detached nodes confoundingly follow *each other*
|
||
support.sortDetached = assert(function( div1 ) {
|
||
// Should return 1, but returns 4 (following)
|
||
return div1.compareDocumentPosition( document.createElement("div") ) & 1;
|
||
});
|
||
|
||
// Support: IE<8
|
||
// Prevent attribute/property "interpolation"
|
||
// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
||
if ( !assert(function( div ) {
|
||
div.innerHTML = "<a href='http://arongranberg.com/astar/docs/#'></a>";
|
||
return div.firstChild.getAttribute("href") === "#" ;
|
||
}) ) {
|
||
addHandle( "type|href|height|width", function( elem, name, isXML ) {
|
||
if ( !isXML ) {
|
||
return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
|
||
}
|
||
});
|
||
}
|
||
|
||
// Support: IE<9
|
||
// Use defaultValue in place of getAttribute("value")
|
||
if ( !support.attributes || !assert(function( div ) {
|
||
div.innerHTML = "<input/>";
|
||
div.firstChild.setAttribute( "value", "" );
|
||
return div.firstChild.getAttribute( "value" ) === "";
|
||
}) ) {
|
||
addHandle( "value", function( elem, name, isXML ) {
|
||
if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
|
||
return elem.defaultValue;
|
||
}
|
||
});
|
||
}
|
||
|
||
// Support: IE<9
|
||
// Use getAttributeNode to fetch booleans when getAttribute lies
|
||
if ( !assert(function( div ) {
|
||
return div.getAttribute("disabled") == null;
|
||
}) ) {
|
||
addHandle( booleans, function( elem, name, isXML ) {
|
||
var val;
|
||
if ( !isXML ) {
|
||
return elem[ name ] === true ? name.toLowerCase() :
|
||
(val = elem.getAttributeNode( name )) && val.specified ?
|
||
val.value :
|
||
null;
|
||
}
|
||
});
|
||
}
|
||
|
||
return Sizzle;
|
||
|
||
})( window );
|
||
|
||
|
||
|
||
jQuery.find = Sizzle;
|
||
jQuery.expr = Sizzle.selectors;
|
||
jQuery.expr[":"] = jQuery.expr.pseudos;
|
||
jQuery.unique = Sizzle.uniqueSort;
|
||
jQuery.text = Sizzle.getText;
|
||
jQuery.isXMLDoc = Sizzle.isXML;
|
||
jQuery.contains = Sizzle.contains;
|
||
|
||
|
||
|
||
var rneedsContext = jQuery.expr.match.needsContext;
|
||
|
||
var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
|
||
|
||
|
||
|
||
var risSimple = /^.[^:#\[\.,]*$/;
|
||
|
||
// Implement the identical functionality for filter and not
|
||
function winnow( elements, qualifier, not ) {
|
||
if ( jQuery.isFunction( qualifier ) ) {
|
||
return jQuery.grep( elements, function( elem, i ) {
|
||
/* jshint -W018 */
|
||
return !!qualifier.call( elem, i, elem ) !== not;
|
||
});
|
||
|
||
}
|
||
|
||
if ( qualifier.nodeType ) {
|
||
return jQuery.grep( elements, function( elem ) {
|
||
return ( elem === qualifier ) !== not;
|
||
});
|
||
|
||
}
|
||
|
||
if ( typeof qualifier === "string" ) {
|
||
if ( risSimple.test( qualifier ) ) {
|
||
return jQuery.filter( qualifier, elements, not );
|
||
}
|
||
|
||
qualifier = jQuery.filter( qualifier, elements );
|
||
}
|
||
|
||
return jQuery.grep( elements, function( elem ) {
|
||
return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
|
||
});
|
||
}
|
||
|
||
jQuery.filter = function( expr, elems, not ) {
|
||
var elem = elems[ 0 ];
|
||
|
||
if ( not ) {
|
||
expr = ":not(" + expr + ")";
|
||
}
|
||
|
||
return elems.length === 1 && elem.nodeType === 1 ?
|
||
jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
|
||
jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
|
||
return elem.nodeType === 1;
|
||
}));
|
||
};
|
||
|
||
jQuery.fn.extend({
|
||
find: function( selector ) {
|
||
var i,
|
||
len = this.length,
|
||
ret = [],
|
||
self = this;
|
||
|
||
if ( typeof selector !== "string" ) {
|
||
return this.pushStack( jQuery( selector ).filter(function() {
|
||
for ( i = 0; i < len; i++ ) {
|
||
if ( jQuery.contains( self[ i ], this ) ) {
|
||
return true;
|
||
}
|
||
}
|
||
}) );
|
||
}
|
||
|
||
for ( i = 0; i < len; i++ ) {
|
||
jQuery.find( selector, self[ i ], ret );
|
||
}
|
||
|
||
// Needed because $( selector, context ) becomes $( context ).find( selector )
|
||
ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
|
||
ret.selector = this.selector ? this.selector + " " + selector : selector;
|
||
return ret;
|
||
},
|
||
filter: function( selector ) {
|
||
return this.pushStack( winnow(this, selector || [], false) );
|
||
},
|
||
not: function( selector ) {
|
||
return this.pushStack( winnow(this, selector || [], true) );
|
||
},
|
||
is: function( selector ) {
|
||
return !!winnow(
|
||
this,
|
||
|
||
// If this is a positional/relative selector, check membership in the returned set
|
||
// so $("p:first").is("p:last") won't return true for a doc with two "p".
|
||
typeof selector === "string" && rneedsContext.test( selector ) ?
|
||
jQuery( selector ) :
|
||
selector || [],
|
||
false
|
||
).length;
|
||
}
|
||
});
|
||
|
||
|
||
// Initialize a jQuery object
|
||
|
||
|
||
// A central reference to the root jQuery(document)
|
||
var rootjQuery,
|
||
|
||
// A simple way to check for HTML strings
|
||
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
|
||
// Strict HTML recognition (#11290: must start with <)
|
||
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
|
||
|
||
init = jQuery.fn.init = function( selector, context ) {
|
||
var match, elem;
|
||
|
||
// HANDLE: $(""), $(null), $(undefined), $(false)
|
||
if ( !selector ) {
|
||
return this;
|
||
}
|
||
|
||
// Handle HTML strings
|
||
if ( typeof selector === "string" ) {
|
||
if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
|
||
// Assume that strings that start and end with <> are HTML and skip the regex check
|
||
match = [ null, selector, null ];
|
||
|
||
} else {
|
||
match = rquickExpr.exec( selector );
|
||
}
|
||
|
||
// Match html or make sure no context is specified for #id
|
||
if ( match && (match[1] || !context) ) {
|
||
|
||
// HANDLE: $(html) -> $(array)
|
||
if ( match[1] ) {
|
||
context = context instanceof jQuery ? context[0] : context;
|
||
|
||
// Option to run scripts is true for back-compat
|
||
// Intentionally let the error be thrown if parseHTML is not present
|
||
jQuery.merge( this, jQuery.parseHTML(
|
||
match[1],
|
||
context && context.nodeType ? context.ownerDocument || context : document,
|
||
true
|
||
) );
|
||
|
||
// HANDLE: $(html, props)
|
||
if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
|
||
for ( match in context ) {
|
||
// Properties of context are called as methods if possible
|
||
if ( jQuery.isFunction( this[ match ] ) ) {
|
||
this[ match ]( context[ match ] );
|
||
|
||
// ...and otherwise set as attributes
|
||
} else {
|
||
this.attr( match, context[ match ] );
|
||
}
|
||
}
|
||
}
|
||
|
||
return this;
|
||
|
||
// HANDLE: $(#id)
|
||
} else {
|
||
elem = document.getElementById( match[2] );
|
||
|
||
// Support: Blackberry 4.6
|
||
// gEBID returns nodes no longer in the document (#6963)
|
||
if ( elem && elem.parentNode ) {
|
||
// Inject the element directly into the jQuery object
|
||
this.length = 1;
|
||
this[0] = elem;
|
||
}
|
||
|
||
this.context = document;
|
||
this.selector = selector;
|
||
return this;
|
||
}
|
||
|
||
// HANDLE: $(expr, $(...))
|
||
} else if ( !context || context.jquery ) {
|
||
return ( context || rootjQuery ).find( selector );
|
||
|
||
// HANDLE: $(expr, context)
|
||
// (which is just equivalent to: $(context).find(expr)
|
||
} else {
|
||
return this.constructor( context ).find( selector );
|
||
}
|
||
|
||
// HANDLE: $(DOMElement)
|
||
} else if ( selector.nodeType ) {
|
||
this.context = this[0] = selector;
|
||
this.length = 1;
|
||
return this;
|
||
|
||
// HANDLE: $(function)
|
||
// Shortcut for document ready
|
||
} else if ( jQuery.isFunction( selector ) ) {
|
||
return typeof rootjQuery.ready !== "undefined" ?
|
||
rootjQuery.ready( selector ) :
|
||
// Execute immediately if ready is not present
|
||
selector( jQuery );
|
||
}
|
||
|
||
if ( selector.selector !== undefined ) {
|
||
this.selector = selector.selector;
|
||
this.context = selector.context;
|
||
}
|
||
|
||
return jQuery.makeArray( selector, this );
|
||
};
|
||
|
||
// Give the init function the jQuery prototype for later instantiation
|
||
init.prototype = jQuery.fn;
|
||
|
||
// Initialize central reference
|
||
rootjQuery = jQuery( document );
|
||
|
||
|
||
var rparentsprev = /^(?:parents|prev(?:Until|All))/,
|
||
// Methods guaranteed to produce a unique set when starting from a unique set
|
||
guaranteedUnique = {
|
||
children: true,
|
||
contents: true,
|
||
next: true,
|
||
prev: true
|
||
};
|
||
|
||
jQuery.extend({
|
||
dir: function( elem, dir, until ) {
|
||
var matched = [],
|
||
truncate = until !== undefined;
|
||
|
||
while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
|
||
if ( elem.nodeType === 1 ) {
|
||
if ( truncate && jQuery( elem ).is( until ) ) {
|
||
break;
|
||
}
|
||
matched.push( elem );
|
||
}
|
||
}
|
||
return matched;
|
||
},
|
||
|
||
sibling: function( n, elem ) {
|
||
var matched = [];
|
||
|
||
for ( ; n; n = n.nextSibling ) {
|
||
if ( n.nodeType === 1 && n !== elem ) {
|
||
matched.push( n );
|
||
}
|
||
}
|
||
|
||
return matched;
|
||
}
|
||
});
|
||
|
||
jQuery.fn.extend({
|
||
has: function( target ) {
|
||
var targets = jQuery( target, this ),
|
||
l = targets.length;
|
||
|
||
return this.filter(function() {
|
||
var i = 0;
|
||
for ( ; i < l; i++ ) {
|
||
if ( jQuery.contains( this, targets[i] ) ) {
|
||
return true;
|
||
}
|
||
}
|
||
});
|
||
},
|
||
|
||
closest: function( selectors, context ) {
|
||
var cur,
|
||
i = 0,
|
||
l = this.length,
|
||
matched = [],
|
||
pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
|
||
jQuery( selectors, context || this.context ) :
|
||
0;
|
||
|
||
for ( ; i < l; i++ ) {
|
||
for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
|
||
// Always skip document fragments
|
||
if ( cur.nodeType < 11 && (pos ?
|
||
pos.index(cur) > -1 :
|
||
|
||
// Don't pass non-elements to Sizzle
|
||
cur.nodeType === 1 &&
|
||
jQuery.find.matchesSelector(cur, selectors)) ) {
|
||
|
||
matched.push( cur );
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
|
||
},
|
||
|
||
// Determine the position of an element within the set
|
||
index: function( elem ) {
|
||
|
||
// No argument, return index in parent
|
||
if ( !elem ) {
|
||
return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
|
||
}
|
||
|
||
// Index in selector
|
||
if ( typeof elem === "string" ) {
|
||
return indexOf.call( jQuery( elem ), this[ 0 ] );
|
||
}
|
||
|
||
// Locate the position of the desired element
|
||
return indexOf.call( this,
|
||
|
||
// If it receives a jQuery object, the first element is used
|
||
elem.jquery ? elem[ 0 ] : elem
|
||
);
|
||
},
|
||
|
||
add: function( selector, context ) {
|
||
return this.pushStack(
|
||
jQuery.unique(
|
||
jQuery.merge( this.get(), jQuery( selector, context ) )
|
||
)
|
||
);
|
||
},
|
||
|
||
addBack: function( selector ) {
|
||
return this.add( selector == null ?
|
||
this.prevObject : this.prevObject.filter(selector)
|
||
);
|
||
}
|
||
});
|
||
|
||
function sibling( cur, dir ) {
|
||
while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
|
||
return cur;
|
||
}
|
||
|
||
jQuery.each({
|
||
parent: function( elem ) {
|
||
var parent = elem.parentNode;
|
||
return parent && parent.nodeType !== 11 ? parent : null;
|
||
},
|
||
parents: function( elem ) {
|
||
return jQuery.dir( elem, "parentNode" );
|
||
},
|
||
parentsUntil: function( elem, i, until ) {
|
||
return jQuery.dir( elem, "parentNode", until );
|
||
},
|
||
next: function( elem ) {
|
||
return sibling( elem, "nextSibling" );
|
||
},
|
||
prev: function( elem ) {
|
||
return sibling( elem, "previousSibling" );
|
||
},
|
||
nextAll: function( elem ) {
|
||
return jQuery.dir( elem, "nextSibling" );
|
||
},
|
||
prevAll: function( elem ) {
|
||
return jQuery.dir( elem, "previousSibling" );
|
||
},
|
||
nextUntil: function( elem, i, until ) {
|
||
return jQuery.dir( elem, "nextSibling", until );
|
||
},
|
||
prevUntil: function( elem, i, until ) {
|
||
return jQuery.dir( elem, "previousSibling", until );
|
||
},
|
||
siblings: function( elem ) {
|
||
return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
|
||
},
|
||
children: function( elem ) {
|
||
return jQuery.sibling( elem.firstChild );
|
||
},
|
||
contents: function( elem ) {
|
||
return elem.contentDocument || jQuery.merge( [], elem.childNodes );
|
||
}
|
||
}, function( name, fn ) {
|
||
jQuery.fn[ name ] = function( until, selector ) {
|
||
var matched = jQuery.map( this, fn, until );
|
||
|
||
if ( name.slice( -5 ) !== "Until" ) {
|
||
selector = until;
|
||
}
|
||
|
||
if ( selector && typeof selector === "string" ) {
|
||
matched = jQuery.filter( selector, matched );
|
||
}
|
||
|
||
if ( this.length > 1 ) {
|
||
// Remove duplicates
|
||
if ( !guaranteedUnique[ name ] ) {
|
||
jQuery.unique( matched );
|
||
}
|
||
|
||
// Reverse order for parents* and prev-derivatives
|
||
if ( rparentsprev.test( name ) ) {
|
||
matched.reverse();
|
||
}
|
||
}
|
||
|
||
return this.pushStack( matched );
|
||
};
|
||
});
|
||
var rnotwhite = (/\S+/g);
|
||
|
||
|
||
|
||
// String to Object options format cache
|
||
var optionsCache = {};
|
||
|
||
// Convert String-formatted options into Object-formatted ones and store in cache
|
||
function createOptions( options ) {
|
||
var object = optionsCache[ options ] = {};
|
||
jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
|
||
object[ flag ] = true;
|
||
});
|
||
return object;
|
||
}
|
||
|
||
/*
|
||
* Create a callback list using the following parameters:
|
||
*
|
||
* options: an optional list of space-separated options that will change how
|
||
* the callback list behaves or a more traditional option object
|
||
*
|
||
* By default a callback list will act like an event callback list and can be
|
||
* "fired" multiple times.
|
||
*
|
||
* Possible options:
|
||
*
|
||
* once: will ensure the callback list can only be fired once (like a Deferred)
|
||
*
|
||
* memory: will keep track of previous values and will call any callback added
|
||
* after the list has been fired right away with the latest "memorized"
|
||
* values (like a Deferred)
|
||
*
|
||
* unique: will ensure a callback can only be added once (no duplicate in the list)
|
||
*
|
||
* stopOnFalse: interrupt callings when a callback returns false
|
||
*
|
||
*/
|
||
jQuery.Callbacks = function( options ) {
|
||
|
||
// Convert options from String-formatted to Object-formatted if needed
|
||
// (we check in cache first)
|
||
options = typeof options === "string" ?
|
||
( optionsCache[ options ] || createOptions( options ) ) :
|
||
jQuery.extend( {}, options );
|
||
|
||
var // Last fire value (for non-forgettable lists)
|
||
memory,
|
||
// Flag to know if list was already fired
|
||
fired,
|
||
// Flag to know if list is currently firing
|
||
firing,
|
||
// First callback to fire (used internally by add and fireWith)
|
||
firingStart,
|
||
// End of the loop when firing
|
||
firingLength,
|
||
// Index of currently firing callback (modified by remove if needed)
|
||
firingIndex,
|
||
// Actual callback list
|
||
list = [],
|
||
// Stack of fire calls for repeatable lists
|
||
stack = !options.once && [],
|
||
// Fire callbacks
|
||
fire = function( data ) {
|
||
memory = options.memory && data;
|
||
fired = true;
|
||
firingIndex = firingStart || 0;
|
||
firingStart = 0;
|
||
firingLength = list.length;
|
||
firing = true;
|
||
for ( ; list && firingIndex < firingLength; firingIndex++ ) {
|
||
if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
|
||
memory = false; // To prevent further calls using add
|
||
break;
|
||
}
|
||
}
|
||
firing = false;
|
||
if ( list ) {
|
||
if ( stack ) {
|
||
if ( stack.length ) {
|
||
fire( stack.shift() );
|
||
}
|
||
} else if ( memory ) {
|
||
list = [];
|
||
} else {
|
||
self.disable();
|
||
}
|
||
}
|
||
},
|
||
// Actual Callbacks object
|
||
self = {
|
||
// Add a callback or a collection of callbacks to the list
|
||
add: function() {
|
||
if ( list ) {
|
||
// First, we save the current length
|
||
var start = list.length;
|
||
(function add( args ) {
|
||
jQuery.each( args, function( _, arg ) {
|
||
var type = jQuery.type( arg );
|
||
if ( type === "function" ) {
|
||
if ( !options.unique || !self.has( arg ) ) {
|
||
list.push( arg );
|
||
}
|
||
} else if ( arg && arg.length && type !== "string" ) {
|
||
// Inspect recursively
|
||
add( arg );
|
||
}
|
||
});
|
||
})( arguments );
|
||
// Do we need to add the callbacks to the
|
||
// current firing batch?
|
||
if ( firing ) {
|
||
firingLength = list.length;
|
||
// With memory, if we're not firing then
|
||
// we should call right away
|
||
} else if ( memory ) {
|
||
firingStart = start;
|
||
fire( memory );
|
||
}
|
||
}
|
||
return this;
|
||
},
|
||
// Remove a callback from the list
|
||
remove: function() {
|
||
if ( list ) {
|
||
jQuery.each( arguments, function( _, arg ) {
|
||
var index;
|
||
while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
|
||
list.splice( index, 1 );
|
||
// Handle firing indexes
|
||
if ( firing ) {
|
||
if ( index <= firingLength ) {
|
||
firingLength--;
|
||
}
|
||
if ( index <= firingIndex ) {
|
||
firingIndex--;
|
||
}
|
||
}
|
||
}
|
||
});
|
||
}
|
||
return this;
|
||
},
|
||
// Check if a given callback is in the list.
|
||
// If no argument is given, return whether or not list has callbacks attached.
|
||
has: function( fn ) {
|
||
return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
|
||
},
|
||
// Remove all callbacks from the list
|
||
empty: function() {
|
||
list = [];
|
||
firingLength = 0;
|
||
return this;
|
||
},
|
||
// Have the list do nothing anymore
|
||
disable: function() {
|
||
list = stack = memory = undefined;
|
||
return this;
|
||
},
|
||
// Is it disabled?
|
||
disabled: function() {
|
||
return !list;
|
||
},
|
||
// Lock the list in its current state
|
||
lock: function() {
|
||
stack = undefined;
|
||
if ( !memory ) {
|
||
self.disable();
|
||
}
|
||
return this;
|
||
},
|
||
// Is it locked?
|
||
locked: function() {
|
||
return !stack;
|
||
},
|
||
// Call all callbacks with the given context and arguments
|
||
fireWith: function( context, args ) {
|
||
if ( list && ( !fired || stack ) ) {
|
||
args = args || [];
|
||
args = [ context, args.slice ? args.slice() : args ];
|
||
if ( firing ) {
|
||
stack.push( args );
|
||
} else {
|
||
fire( args );
|
||
}
|
||
}
|
||
return this;
|
||
},
|
||
// Call all the callbacks with the given arguments
|
||
fire: function() {
|
||
self.fireWith( this, arguments );
|
||
return this;
|
||
},
|
||
// To know if the callbacks have already been called at least once
|
||
fired: function() {
|
||
return !!fired;
|
||
}
|
||
};
|
||
|
||
return self;
|
||
};
|
||
|
||
|
||
jQuery.extend({
|
||
|
||
Deferred: function( func ) {
|
||
var tuples = [
|
||
// action, add listener, listener list, final state
|
||
[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
|
||
[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
|
||
[ "notify", "progress", jQuery.Callbacks("memory") ]
|
||
],
|
||
state = "pending",
|
||
promise = {
|
||
state: function() {
|
||
return state;
|
||
},
|
||
always: function() {
|
||
deferred.done( arguments ).fail( arguments );
|
||
return this;
|
||
},
|
||
then: function( /* fnDone, fnFail, fnProgress */ ) {
|
||
var fns = arguments;
|
||
return jQuery.Deferred(function( newDefer ) {
|
||
jQuery.each( tuples, function( i, tuple ) {
|
||
var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
|
||
// deferred[ done | fail | progress ] for forwarding actions to newDefer
|
||
deferred[ tuple[1] ](function() {
|
||
var returned = fn && fn.apply( this, arguments );
|
||
if ( returned && jQuery.isFunction( returned.promise ) ) {
|
||
returned.promise()
|
||
.done( newDefer.resolve )
|
||
.fail( newDefer.reject )
|
||
.progress( newDefer.notify );
|
||
} else {
|
||
newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
|
||
}
|
||
});
|
||
});
|
||
fns = null;
|
||
}).promise();
|
||
},
|
||
// Get a promise for this deferred
|
||
// If obj is provided, the promise aspect is added to the object
|
||
promise: function( obj ) {
|
||
return obj != null ? jQuery.extend( obj, promise ) : promise;
|
||
}
|
||
},
|
||
deferred = {};
|
||
|
||
// Keep pipe for back-compat
|
||
promise.pipe = promise.then;
|
||
|
||
// Add list-specific methods
|
||
jQuery.each( tuples, function( i, tuple ) {
|
||
var list = tuple[ 2 ],
|
||
stateString = tuple[ 3 ];
|
||
|
||
// promise[ done | fail | progress ] = list.add
|
||
promise[ tuple[1] ] = list.add;
|
||
|
||
// Handle state
|
||
if ( stateString ) {
|
||
list.add(function() {
|
||
// state = [ resolved | rejected ]
|
||
state = stateString;
|
||
|
||
// [ reject_list | resolve_list ].disable; progress_list.lock
|
||
}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
|
||
}
|
||
|
||
// deferred[ resolve | reject | notify ]
|
||
deferred[ tuple[0] ] = function() {
|
||
deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
|
||
return this;
|
||
};
|
||
deferred[ tuple[0] + "With" ] = list.fireWith;
|
||
});
|
||
|
||
// Make the deferred a promise
|
||
promise.promise( deferred );
|
||
|
||
// Call given func if any
|
||
if ( func ) {
|
||
func.call( deferred, deferred );
|
||
}
|
||
|
||
// All done!
|
||
return deferred;
|
||
},
|
||
|
||
// Deferred helper
|
||
when: function( subordinate /* , ..., subordinateN */ ) {
|
||
var i = 0,
|
||
resolveValues = slice.call( arguments ),
|
||
length = resolveValues.length,
|
||
|
||
// the count of uncompleted subordinates
|
||
remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
|
||
|
||
// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
|
||
deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
|
||
|
||
// Update function for both resolve and progress values
|
||
updateFunc = function( i, contexts, values ) {
|
||
return function( value ) {
|
||
contexts[ i ] = this;
|
||
values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
||
if ( values === progressValues ) {
|
||
deferred.notifyWith( contexts, values );
|
||
} else if ( !( --remaining ) ) {
|
||
deferred.resolveWith( contexts, values );
|
||
}
|
||
};
|
||
},
|
||
|
||
progressValues, progressContexts, resolveContexts;
|
||
|
||
// Add listeners to Deferred subordinates; treat others as resolved
|
||
if ( length > 1 ) {
|
||
progressValues = new Array( length );
|
||
progressContexts = new Array( length );
|
||
resolveContexts = new Array( length );
|
||
for ( ; i < length; i++ ) {
|
||
if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
|
||
resolveValues[ i ].promise()
|
||
.done( updateFunc( i, resolveContexts, resolveValues ) )
|
||
.fail( deferred.reject )
|
||
.progress( updateFunc( i, progressContexts, progressValues ) );
|
||
} else {
|
||
--remaining;
|
||
}
|
||
}
|
||
}
|
||
|
||
// If we're not waiting on anything, resolve the master
|
||
if ( !remaining ) {
|
||
deferred.resolveWith( resolveContexts, resolveValues );
|
||
}
|
||
|
||
return deferred.promise();
|
||
}
|
||
});
|
||
|
||
|
||
// The deferred used on DOM ready
|
||
var readyList;
|
||
|
||
jQuery.fn.ready = function( fn ) {
|
||
// Add the callback
|
||
jQuery.ready.promise().done( fn );
|
||
|
||
return this;
|
||
};
|
||
|
||
jQuery.extend({
|
||
// Is the DOM ready to be used? Set to true once it occurs.
|
||
isReady: false,
|
||
|
||
// A counter to track how many items to wait for before
|
||
// the ready event fires. See #6781
|
||
readyWait: 1,
|
||
|
||
// Hold (or release) the ready event
|
||
holdReady: function( hold ) {
|
||
if ( hold ) {
|
||
jQuery.readyWait++;
|
||
} else {
|
||
jQuery.ready( true );
|
||
}
|
||
},
|
||
|
||
// Handle when the DOM is ready
|
||
ready: function( wait ) {
|
||
|
||
// Abort if there are pending holds or we're already ready
|
||
if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
|
||
return;
|
||
}
|
||
|
||
// Remember that the DOM is ready
|
||
jQuery.isReady = true;
|
||
|
||
// If a normal DOM Ready event fired, decrement, and wait if need be
|
||
if ( wait !== true && --jQuery.readyWait > 0 ) {
|
||
return;
|
||
}
|
||
|
||
// If there are functions bound, to execute
|
||
readyList.resolveWith( document, [ jQuery ] );
|
||
|
||
// Trigger any bound ready events
|
||
if ( jQuery.fn.triggerHandler ) {
|
||
jQuery( document ).triggerHandler( "ready" );
|
||
jQuery( document ).off( "ready" );
|
||
}
|
||
}
|
||
});
|
||
|
||
/**
|
||
* The ready event handler and self cleanup method
|
||
*/
|
||
function completed() {
|
||
document.removeEventListener( "DOMContentLoaded", completed, false );
|
||
window.removeEventListener( "load", completed, false );
|
||
jQuery.ready();
|
||
}
|
||
|
||
jQuery.ready.promise = function( obj ) {
|
||
if ( !readyList ) {
|
||
|
||
readyList = jQuery.Deferred();
|
||
|
||
// Catch cases where $(document).ready() is called after the browser event has already occurred.
|
||
// We once tried to use readyState "interactive" here, but it caused issues like the one
|
||
// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
|
||
if ( document.readyState === "complete" ) {
|
||
// Handle it asynchronously to allow scripts the opportunity to delay ready
|
||
setTimeout( jQuery.ready );
|
||
|
||
} else {
|
||
|
||
// Use the handy event callback
|
||
document.addEventListener( "DOMContentLoaded", completed, false );
|
||
|
||
// A fallback to window.onload, that will always work
|
||
window.addEventListener( "load", completed, false );
|
||
}
|
||
}
|
||
return readyList.promise( obj );
|
||
};
|
||
|
||
// Kick off the DOM ready check even if the user does not
|
||
jQuery.ready.promise();
|
||
|
||
|
||
|
||
|
||
// Multifunctional method to get and set values of a collection
|
||
// The value/s can optionally be executed if it's a function
|
||
var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
||
var i = 0,
|
||
len = elems.length,
|
||
bulk = key == null;
|
||
|
||
// Sets many values
|
||
if ( jQuery.type( key ) === "object" ) {
|
||
chainable = true;
|
||
for ( i in key ) {
|
||
jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
|
||
}
|
||
|
||
// Sets one value
|
||
} else if ( value !== undefined ) {
|
||
chainable = true;
|
||
|
||
if ( !jQuery.isFunction( value ) ) {
|
||
raw = true;
|
||
}
|
||
|
||
if ( bulk ) {
|
||
// Bulk operations run against the entire set
|
||
if ( raw ) {
|
||
fn.call( elems, value );
|
||
fn = null;
|
||
|
||
// ...except when executing function values
|
||
} else {
|
||
bulk = fn;
|
||
fn = function( elem, key, value ) {
|
||
return bulk.call( jQuery( elem ), value );
|
||
};
|
||
}
|
||
}
|
||
|
||
if ( fn ) {
|
||
for ( ; i < len; i++ ) {
|
||
fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
|
||
}
|
||
}
|
||
}
|
||
|
||
return chainable ?
|
||
elems :
|
||
|
||
// Gets
|
||
bulk ?
|
||
fn.call( elems ) :
|
||
len ? fn( elems[0], key ) : emptyGet;
|
||
};
|
||
|
||
|
||
/**
|
||
* Determines whether an object can have data
|
||
*/
|
||
jQuery.acceptData = function( owner ) {
|
||
// Accepts only:
|
||
// - Node
|
||
// - Node.ELEMENT_NODE
|
||
// - Node.DOCUMENT_NODE
|
||
// - Object
|
||
// - Any
|
||
/* jshint -W018 */
|
||
return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
|
||
};
|
||
|
||
|
||
function Data() {
|
||
// Support: Android<4,
|
||
// Old WebKit does not have Object.preventExtensions/freeze method,
|
||
// return new empty object instead with no [[set]] accessor
|
||
Object.defineProperty( this.cache = {}, 0, {
|
||
get: function() {
|
||
return {};
|
||
}
|
||
});
|
||
|
||
this.expando = jQuery.expando + Data.uid++;
|
||
}
|
||
|
||
Data.uid = 1;
|
||
Data.accepts = jQuery.acceptData;
|
||
|
||
Data.prototype = {
|
||
key: function( owner ) {
|
||
// We can accept data for non-element nodes in modern browsers,
|
||
// but we should not, see #8335.
|
||
// Always return the key for a frozen object.
|
||
if ( !Data.accepts( owner ) ) {
|
||
return 0;
|
||
}
|
||
|
||
var descriptor = {},
|
||
// Check if the owner object already has a cache key
|
||
unlock = owner[ this.expando ];
|
||
|
||
// If not, create one
|
||
if ( !unlock ) {
|
||
unlock = Data.uid++;
|
||
|
||
// Secure it in a non-enumerable, non-writable property
|
||
try {
|
||
descriptor[ this.expando ] = { value: unlock };
|
||
Object.defineProperties( owner, descriptor );
|
||
|
||
// Support: Android<4
|
||
// Fallback to a less secure definition
|
||
} catch ( e ) {
|
||
descriptor[ this.expando ] = unlock;
|
||
jQuery.extend( owner, descriptor );
|
||
}
|
||
}
|
||
|
||
// Ensure the cache object
|
||
if ( !this.cache[ unlock ] ) {
|
||
this.cache[ unlock ] = {};
|
||
}
|
||
|
||
return unlock;
|
||
},
|
||
set: function( owner, data, value ) {
|
||
var prop,
|
||
// There may be an unlock assigned to this node,
|
||
// if there is no entry for this "owner", create one inline
|
||
// and set the unlock as though an owner entry had always existed
|
||
unlock = this.key( owner ),
|
||
cache = this.cache[ unlock ];
|
||
|
||
// Handle: [ owner, key, value ] args
|
||
if ( typeof data === "string" ) {
|
||
cache[ data ] = value;
|
||
|
||
// Handle: [ owner, { properties } ] args
|
||
} else {
|
||
// Fresh assignments by object are shallow copied
|
||
if ( jQuery.isEmptyObject( cache ) ) {
|
||
jQuery.extend( this.cache[ unlock ], data );
|
||
// Otherwise, copy the properties one-by-one to the cache object
|
||
} else {
|
||
for ( prop in data ) {
|
||
cache[ prop ] = data[ prop ];
|
||
}
|
||
}
|
||
}
|
||
return cache;
|
||
},
|
||
get: function( owner, key ) {
|
||
// Either a valid cache is found, or will be created.
|
||
// New caches will be created and the unlock returned,
|
||
// allowing direct access to the newly created
|
||
// empty data object. A valid owner object must be provided.
|
||
var cache = this.cache[ this.key( owner ) ];
|
||
|
||
return key === undefined ?
|
||
cache : cache[ key ];
|
||
},
|
||
access: function( owner, key, value ) {
|
||
var stored;
|
||
// In cases where either:
|
||
//
|
||
// 1. No key was specified
|
||
// 2. A string key was specified, but no value provided
|
||
//
|
||
// Take the "read" path and allow the get method to determine
|
||
// which value to return, respectively either:
|
||
//
|
||
// 1. The entire cache object
|
||
// 2. The data stored at the key
|
||
//
|
||
if ( key === undefined ||
|
||
((key && typeof key === "string") && value === undefined) ) {
|
||
|
||
stored = this.get( owner, key );
|
||
|
||
return stored !== undefined ?
|
||
stored : this.get( owner, jQuery.camelCase(key) );
|
||
}
|
||
|
||
// [*]When the key is not a string, or both a key and value
|
||
// are specified, set or extend (existing objects) with either:
|
||
//
|
||
// 1. An object of properties
|
||
// 2. A key and value
|
||
//
|
||
this.set( owner, key, value );
|
||
|
||
// Since the "set" path can have two possible entry points
|
||
// return the expected data based on which path was taken[*]
|
||
return value !== undefined ? value : key;
|
||
},
|
||
remove: function( owner, key ) {
|
||
var i, name, camel,
|
||
unlock = this.key( owner ),
|
||
cache = this.cache[ unlock ];
|
||
|
||
if ( key === undefined ) {
|
||
this.cache[ unlock ] = {};
|
||
|
||
} else {
|
||
// Support array or space separated string of keys
|
||
if ( jQuery.isArray( key ) ) {
|
||
// If "name" is an array of keys...
|
||
// When data is initially created, via ("key", "val") signature,
|
||
// keys will be converted to camelCase.
|
||
// Since there is no way to tell _how_ a key was added, remove
|
||
// both plain key and camelCase key. #12786
|
||
// This will only penalize the array argument path.
|
||
name = key.concat( key.map( jQuery.camelCase ) );
|
||
} else {
|
||
camel = jQuery.camelCase( key );
|
||
// Try the string as a key before any manipulation
|
||
if ( key in cache ) {
|
||
name = [ key, camel ];
|
||
} else {
|
||
// If a key with the spaces exists, use it.
|
||
// Otherwise, create an array by matching non-whitespace
|
||
name = camel;
|
||
name = name in cache ?
|
||
[ name ] : ( name.match( rnotwhite ) || [] );
|
||
}
|
||
}
|
||
|
||
i = name.length;
|
||
while ( i-- ) {
|
||
delete cache[ name[ i ] ];
|
||
}
|
||
}
|
||
},
|
||
hasData: function( owner ) {
|
||
return !jQuery.isEmptyObject(
|
||
this.cache[ owner[ this.expando ] ] || {}
|
||
);
|
||
},
|
||
discard: function( owner ) {
|
||
if ( owner[ this.expando ] ) {
|
||
delete this.cache[ owner[ this.expando ] ];
|
||
}
|
||
}
|
||
};
|
||
var data_priv = new Data();
|
||
|
||
var data_user = new Data();
|
||
|
||
|
||
|
||
// Implementation Summary
|
||
//
|
||
// 1. Enforce API surface and semantic compatibility with 1.9.x branch
|
||
// 2. Improve the module's maintainability by reducing the storage
|
||
// paths to a single mechanism.
|
||
// 3. Use the same single mechanism to support "private" and "user" data.
|
||
// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
|
||
// 5. Avoid exposing implementation details on user objects (eg. expando properties)
|
||
// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
|
||
|
||
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
|
||
rmultiDash = /([A-Z])/g;
|
||
|
||
function dataAttr( elem, key, data ) {
|
||
var name;
|
||
|
||
// If nothing was found internally, try to fetch any
|
||
// data from the HTML5 data-* attribute
|
||
if ( data === undefined && elem.nodeType === 1 ) {
|
||
name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
|
||
data = elem.getAttribute( name );
|
||
|
||
if ( typeof data === "string" ) {
|
||
try {
|
||
data = data === "true" ? true :
|
||
data === "false" ? false :
|
||
data === "null" ? null :
|
||
// Only convert to a number if it doesn't change the string
|
||
+data + "" === data ? +data :
|
||
rbrace.test( data ) ? jQuery.parseJSON( data ) :
|
||
data;
|
||
} catch( e ) {}
|
||
|
||
// Make sure we set the data so it isn't changed later
|
||
data_user.set( elem, key, data );
|
||
} else {
|
||
data = undefined;
|
||
}
|
||
}
|
||
return data;
|
||
}
|
||
|
||
jQuery.extend({
|
||
hasData: function( elem ) {
|
||
return data_user.hasData( elem ) || data_priv.hasData( elem );
|
||
},
|
||
|
||
data: function( elem, name, data ) {
|
||
return data_user.access( elem, name, data );
|
||
},
|
||
|
||
removeData: function( elem, name ) {
|
||
data_user.remove( elem, name );
|
||
},
|
||
|
||
// TODO: Now that all calls to _data and _removeData have been replaced
|
||
// with direct calls to data_priv methods, these can be deprecated.
|
||
_data: function( elem, name, data ) {
|
||
return data_priv.access( elem, name, data );
|
||
},
|
||
|
||
_removeData: function( elem, name ) {
|
||
data_priv.remove( elem, name );
|
||
}
|
||
});
|
||
|
||
jQuery.fn.extend({
|
||
data: function( key, value ) {
|
||
var i, name, data,
|
||
elem = this[ 0 ],
|
||
attrs = elem && elem.attributes;
|
||
|
||
// Gets all values
|
||
if ( key === undefined ) {
|
||
if ( this.length ) {
|
||
data = data_user.get( elem );
|
||
|
||
if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
|
||
i = attrs.length;
|
||
while ( i-- ) {
|
||
|
||
// Support: IE11+
|
||
// The attrs elements can be null (#14894)
|
||
if ( attrs[ i ] ) {
|
||
name = attrs[ i ].name;
|
||
if ( name.indexOf( "data-" ) === 0 ) {
|
||
name = jQuery.camelCase( name.slice(5) );
|
||
dataAttr( elem, name, data[ name ] );
|
||
}
|
||
}
|
||
}
|
||
data_priv.set( elem, "hasDataAttrs", true );
|
||
}
|
||
}
|
||
|
||
return data;
|
||
}
|
||
|
||
// Sets multiple values
|
||
if ( typeof key === "object" ) {
|
||
return this.each(function() {
|
||
data_user.set( this, key );
|
||
});
|
||
}
|
||
|
||
return access( this, function( value ) {
|
||
var data,
|
||
camelKey = jQuery.camelCase( key );
|
||
|
||
// The calling jQuery object (element matches) is not empty
|
||
// (and therefore has an element appears at this[ 0 ]) and the
|
||
// `value` parameter was not undefined. An empty jQuery object
|
||
// will result in `undefined` for elem = this[ 0 ] which will
|
||
// throw an exception if an attempt to read a data cache is made.
|
||
if ( elem && value === undefined ) {
|
||
// Attempt to get data from the cache
|
||
// with the key as-is
|
||
data = data_user.get( elem, key );
|
||
if ( data !== undefined ) {
|
||
return data;
|
||
}
|
||
|
||
// Attempt to get data from the cache
|
||
// with the key camelized
|
||
data = data_user.get( elem, camelKey );
|
||
if ( data !== undefined ) {
|
||
return data;
|
||
}
|
||
|
||
// Attempt to "discover" the data in
|
||
// HTML5 custom data-* attrs
|
||
data = dataAttr( elem, camelKey, undefined );
|
||
if ( data !== undefined ) {
|
||
return data;
|
||
}
|
||
|
||
// We tried really hard, but the data doesn't exist.
|
||
return;
|
||
}
|
||
|
||
// Set the data...
|
||
this.each(function() {
|
||
// First, attempt to store a copy or reference of any
|
||
// data that might've been store with a camelCased key.
|
||
var data = data_user.get( this, camelKey );
|
||
|
||
// For HTML5 data-* attribute interop, we have to
|
||
// store property names with dashes in a camelCase form.
|
||
// This might not apply to all properties...*
|
||
data_user.set( this, camelKey, value );
|
||
|
||
// *... In the case of properties that might _actually_
|
||
// have dashes, we need to also store a copy of that
|
||
// unchanged property.
|
||
if ( key.indexOf("-") !== -1 && data !== undefined ) {
|
||
data_user.set( this, key, value );
|
||
}
|
||
});
|
||
}, null, value, arguments.length > 1, null, true );
|
||
},
|
||
|
||
removeData: function( key ) {
|
||
return this.each(function() {
|
||
data_user.remove( this, key );
|
||
});
|
||
}
|
||
});
|
||
|
||
|
||
jQuery.extend({
|
||
queue: function( elem, type, data ) {
|
||
var queue;
|
||
|
||
if ( elem ) {
|
||
type = ( type || "fx" ) + "queue";
|
||
queue = data_priv.get( elem, type );
|
||
|
||
// Speed up dequeue by getting out quickly if this is just a lookup
|
||
if ( data ) {
|
||
if ( !queue || jQuery.isArray( data ) ) {
|
||
queue = data_priv.access( elem, type, jQuery.makeArray(data) );
|
||
} else {
|
||
queue.push( data );
|
||
}
|
||
}
|
||
return queue || [];
|
||
}
|
||
},
|
||
|
||
dequeue: function( elem, type ) {
|
||
type = type || "fx";
|
||
|
||
var queue = jQuery.queue( elem, type ),
|
||
startLength = queue.length,
|
||
fn = queue.shift(),
|
||
hooks = jQuery._queueHooks( elem, type ),
|
||
next = function() {
|
||
jQuery.dequeue( elem, type );
|
||
};
|
||
|
||
// If the fx queue is dequeued, always remove the progress sentinel
|
||
if ( fn === "inprogress" ) {
|
||
fn = queue.shift();
|
||
startLength--;
|
||
}
|
||
|
||
if ( fn ) {
|
||
|
||
// Add a progress sentinel to prevent the fx queue from being
|
||
// automatically dequeued
|
||
if ( type === "fx" ) {
|
||
queue.unshift( "inprogress" );
|
||
}
|
||
|
||
// Clear up the last queue stop function
|
||
delete hooks.stop;
|
||
fn.call( elem, next, hooks );
|
||
}
|
||
|
||
if ( !startLength && hooks ) {
|
||
hooks.empty.fire();
|
||
}
|
||
},
|
||
|
||
// Not public - generate a queueHooks object, or return the current one
|
||
_queueHooks: function( elem, type ) {
|
||
var key = type + "queueHooks";
|
||
return data_priv.get( elem, key ) || data_priv.access( elem, key, {
|
||
empty: jQuery.Callbacks("once memory").add(function() {
|
||
data_priv.remove( elem, [ type + "queue", key ] );
|
||
})
|
||
});
|
||
}
|
||
});
|
||
|
||
jQuery.fn.extend({
|
||
queue: function( type, data ) {
|
||
var setter = 2;
|
||
|
||
if ( typeof type !== "string" ) {
|
||
data = type;
|
||
type = "fx";
|
||
setter--;
|
||
}
|
||
|
||
if ( arguments.length < setter ) {
|
||
return jQuery.queue( this[0], type );
|
||
}
|
||
|
||
return data === undefined ?
|
||
this :
|
||
this.each(function() {
|
||
var queue = jQuery.queue( this, type, data );
|
||
|
||
// Ensure a hooks for this queue
|
||
jQuery._queueHooks( this, type );
|
||
|
||
if ( type === "fx" && queue[0] !== "inprogress" ) {
|
||
jQuery.dequeue( this, type );
|
||
}
|
||
});
|
||
},
|
||
dequeue: function( type ) {
|
||
return this.each(function() {
|
||
jQuery.dequeue( this, type );
|
||
});
|
||
},
|
||
clearQueue: function( type ) {
|
||
return this.queue( type || "fx", [] );
|
||
},
|
||
// Get a promise resolved when queues of a certain type
|
||
// are emptied (fx is the type by default)
|
||
promise: function( type, obj ) {
|
||
var tmp,
|
||
count = 1,
|
||
defer = jQuery.Deferred(),
|
||
elements = this,
|
||
i = this.length,
|
||
resolve = function() {
|
||
if ( !( --count ) ) {
|
||
defer.resolveWith( elements, [ elements ] );
|
||
}
|
||
};
|
||
|
||
if ( typeof type !== "string" ) {
|
||
obj = type;
|
||
type = undefined;
|
||
}
|
||
type = type || "fx";
|
||
|
||
while ( i-- ) {
|
||
tmp = data_priv.get( elements[ i ], type + "queueHooks" );
|
||
if ( tmp && tmp.empty ) {
|
||
count++;
|
||
tmp.empty.add( resolve );
|
||
}
|
||
}
|
||
resolve();
|
||
return defer.promise( obj );
|
||
}
|
||
});
|
||
var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
|
||
|
||
var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
|
||
|
||
var isHidden = function( elem, el ) {
|
||
// isHidden might be called from jQuery#filter function;
|
||
// in that case, element will be second argument
|
||
elem = el || elem;
|
||
return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
|
||
};
|
||
|
||
var rcheckableType = (/^(?:checkbox|radio)$/i);
|
||
|
||
|
||
|
||
(function() {
|
||
var fragment = document.createDocumentFragment(),
|
||
div = fragment.appendChild( document.createElement( "div" ) ),
|
||
input = document.createElement( "input" );
|
||
|
||
// Support: Safari<=5.1
|
||
// Check state lost if the name is set (#11217)
|
||
// Support: Windows Web Apps (WWA)
|
||
// `name` and `type` must use .setAttribute for WWA (#14901)
|
||
input.setAttribute( "type", "radio" );
|
||
input.setAttribute( "checked", "checked" );
|
||
input.setAttribute( "name", "t" );
|
||
|
||
div.appendChild( input );
|
||
|
||
// Support: Safari<=5.1, Android<4.2
|
||
// Older WebKit doesn't clone checked state correctly in fragments
|
||
support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
|
||
|
||
// Support: IE<=11+
|
||
// Make sure textarea (and checkbox) defaultValue is properly cloned
|
||
div.innerHTML = "<textarea>x</textarea>";
|
||
support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
|
||
})();
|
||
var strundefined = typeof undefined;
|
||
|
||
|
||
|
||
support.focusinBubbles = "onfocusin" in window;
|
||
|
||
|
||
var
|
||
rkeyEvent = /^key/,
|
||
rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
|
||
rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
|
||
rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
|
||
|
||
function returnTrue() {
|
||
return true;
|
||
}
|
||
|
||
function returnFalse() {
|
||
return false;
|
||
}
|
||
|
||
function safeActiveElement() {
|
||
try {
|
||
return document.activeElement;
|
||
} catch ( err ) { }
|
||
}
|
||
|
||
/*
|
||
* Helper functions for managing events -- not part of the public interface.
|
||
* Props to Dean Edwards' addEvent library for many of the ideas.
|
||
*/
|
||
jQuery.event = {
|
||
|
||
global: {},
|
||
|
||
add: function( elem, types, handler, data, selector ) {
|
||
|
||
var handleObjIn, eventHandle, tmp,
|
||
events, t, handleObj,
|
||
special, handlers, type, namespaces, origType,
|
||
elemData = data_priv.get( elem );
|
||
|
||
// Don't attach events to noData or text/comment nodes (but allow plain objects)
|
||
if ( !elemData ) {
|
||
return;
|
||
}
|
||
|
||
// Caller can pass in an object of custom data in lieu of the handler
|
||
if ( handler.handler ) {
|
||
handleObjIn = handler;
|
||
handler = handleObjIn.handler;
|
||
selector = handleObjIn.selector;
|
||
}
|
||
|
||
// Make sure that the handler has a unique ID, used to find/remove it later
|
||
if ( !handler.guid ) {
|
||
handler.guid = jQuery.guid++;
|
||
}
|
||
|
||
// Init the element's event structure and main handler, if this is the first
|
||
if ( !(events = elemData.events) ) {
|
||
events = elemData.events = {};
|
||
}
|
||
if ( !(eventHandle = elemData.handle) ) {
|
||
eventHandle = elemData.handle = function( e ) {
|
||
// Discard the second event of a jQuery.event.trigger() and
|
||
// when an event is called after a page has unloaded
|
||
return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
|
||
jQuery.event.dispatch.apply( elem, arguments ) : undefined;
|
||
};
|
||
}
|
||
|
||
// Handle multiple events separated by a space
|
||
types = ( types || "" ).match( rnotwhite ) || [ "" ];
|
||
t = types.length;
|
||
while ( t-- ) {
|
||
tmp = rtypenamespace.exec( types[t] ) || [];
|
||
type = origType = tmp[1];
|
||
namespaces = ( tmp[2] || "" ).split( "." ).sort();
|
||
|
||
// There *must* be a type, no attaching namespace-only handlers
|
||
if ( !type ) {
|
||
continue;
|
||
}
|
||
|
||
// If event changes its type, use the special event handlers for the changed type
|
||
special = jQuery.event.special[ type ] || {};
|
||
|
||
// If selector defined, determine special event api type, otherwise given type
|
||
type = ( selector ? special.delegateType : special.bindType ) || type;
|
||
|
||
// Update special based on newly reset type
|
||
special = jQuery.event.special[ type ] || {};
|
||
|
||
// handleObj is passed to all event handlers
|
||
handleObj = jQuery.extend({
|
||
type: type,
|
||
origType: origType,
|
||
data: data,
|
||
handler: handler,
|
||
guid: handler.guid,
|
||
selector: selector,
|
||
needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
|
||
namespace: namespaces.join(".")
|
||
}, handleObjIn );
|
||
|
||
// Init the event handler queue if we're the first
|
||
if ( !(handlers = events[ type ]) ) {
|
||
handlers = events[ type ] = [];
|
||
handlers.delegateCount = 0;
|
||
|
||
// Only use addEventListener if the special events handler returns false
|
||
if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
|
||
if ( elem.addEventListener ) {
|
||
elem.addEventListener( type, eventHandle, false );
|
||
}
|
||
}
|
||
}
|
||
|
||
if ( special.add ) {
|
||
special.add.call( elem, handleObj );
|
||
|
||
if ( !handleObj.handler.guid ) {
|
||
handleObj.handler.guid = handler.guid;
|
||
}
|
||
}
|
||
|
||
// Add to the element's handler list, delegates in front
|
||
if ( selector ) {
|
||
handlers.splice( handlers.delegateCount++, 0, handleObj );
|
||
} else {
|
||
handlers.push( handleObj );
|
||
}
|
||
|
||
// Keep track of which events have ever been used, for event optimization
|
||
jQuery.event.global[ type ] = true;
|
||
}
|
||
|
||
},
|
||
|
||
// Detach an event or set of events from an element
|
||
remove: function( elem, types, handler, selector, mappedTypes ) {
|
||
|
||
var j, origCount, tmp,
|
||
events, t, handleObj,
|
||
special, handlers, type, namespaces, origType,
|
||
elemData = data_priv.hasData( elem ) && data_priv.get( elem );
|
||
|
||
if ( !elemData || !(events = elemData.events) ) {
|
||
return;
|
||
}
|
||
|
||
// Once for each type.namespace in types; type may be omitted
|
||
types = ( types || "" ).match( rnotwhite ) || [ "" ];
|
||
t = types.length;
|
||
while ( t-- ) {
|
||
tmp = rtypenamespace.exec( types[t] ) || [];
|
||
type = origType = tmp[1];
|
||
namespaces = ( tmp[2] || "" ).split( "." ).sort();
|
||
|
||
// Unbind all events (on this namespace, if provided) for the element
|
||
if ( !type ) {
|
||
for ( type in events ) {
|
||
jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
|
||
}
|
||
continue;
|
||
}
|
||
|
||
special = jQuery.event.special[ type ] || {};
|
||
type = ( selector ? special.delegateType : special.bindType ) || type;
|
||
handlers = events[ type ] || [];
|
||
tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
|
||
|
||
// Remove matching events
|
||
origCount = j = handlers.length;
|
||
while ( j-- ) {
|
||
handleObj = handlers[ j ];
|
||
|
||
if ( ( mappedTypes || origType === handleObj.origType ) &&
|
||
( !handler || handler.guid === handleObj.guid ) &&
|
||
( !tmp || tmp.test( handleObj.namespace ) ) &&
|
||
( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
|
||
handlers.splice( j, 1 );
|
||
|
||
if ( handleObj.selector ) {
|
||
handlers.delegateCount--;
|
||
}
|
||
if ( special.remove ) {
|
||
special.remove.call( elem, handleObj );
|
||
}
|
||
}
|
||
}
|
||
|
||
// Remove generic event handler if we removed something and no more handlers exist
|
||
// (avoids potential for endless recursion during removal of special event handlers)
|
||
if ( origCount && !handlers.length ) {
|
||
if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
|
||
jQuery.removeEvent( elem, type, elemData.handle );
|
||
}
|
||
|
||
delete events[ type ];
|
||
}
|
||
}
|
||
|
||
// Remove the expando if it's no longer used
|
||
if ( jQuery.isEmptyObject( events ) ) {
|
||
delete elemData.handle;
|
||
data_priv.remove( elem, "events" );
|
||
}
|
||
},
|
||
|
||
trigger: function( event, data, elem, onlyHandlers ) {
|
||
|
||
var i, cur, tmp, bubbleType, ontype, handle, special,
|
||
eventPath = [ elem || document ],
|
||
type = hasOwn.call( event, "type" ) ? event.type : event,
|
||
namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
|
||
|
||
cur = tmp = elem = elem || document;
|
||
|
||
// Don't do events on text and comment nodes
|
||
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
|
||
return;
|
||
}
|
||
|
||
// focus/blur morphs to focusin/out; ensure we're not firing them right now
|
||
if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
|
||
return;
|
||
}
|
||
|
||
if ( type.indexOf(".") >= 0 ) {
|
||
// Namespaced trigger; create a regexp to match event type in handle()
|
||
namespaces = type.split(".");
|
||
type = namespaces.shift();
|
||
namespaces.sort();
|
||
}
|
||
ontype = type.indexOf(":") < 0 && "on" + type;
|
||
|
||
// Caller can pass in a jQuery.Event object, Object, or just an event type string
|
||
event = event[ jQuery.expando ] ?
|
||
event :
|
||
new jQuery.Event( type, typeof event === "object" && event );
|
||
|
||
// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
|
||
event.isTrigger = onlyHandlers ? 2 : 3;
|
||
event.namespace = namespaces.join(".");
|
||
event.namespace_re = event.namespace ?
|
||
new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
|
||
null;
|
||
|
||
// Clean up the event in case it is being reused
|
||
event.result = undefined;
|
||
if ( !event.target ) {
|
||
event.target = elem;
|
||
}
|
||
|
||
// Clone any incoming data and prepend the event, creating the handler arg list
|
||
data = data == null ?
|
||
[ event ] :
|
||
jQuery.makeArray( data, [ event ] );
|
||
|
||
// Allow special events to draw outside the lines
|
||
special = jQuery.event.special[ type ] || {};
|
||
if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
|
||
return;
|
||
}
|
||
|
||
// Determine event propagation path in advance, per W3C events spec (#9951)
|
||
// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
|
||
if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
|
||
|
||
bubbleType = special.delegateType || type;
|
||
if ( !rfocusMorph.test( bubbleType + type ) ) {
|
||
cur = cur.parentNode;
|
||
}
|
||
for ( ; cur; cur = cur.parentNode ) {
|
||
eventPath.push( cur );
|
||
tmp = cur;
|
||
}
|
||
|
||
// Only add window if we got to document (e.g., not plain obj or detached DOM)
|
||
if ( tmp === (elem.ownerDocument || document) ) {
|
||
eventPath.push( tmp.defaultView || tmp.parentWindow || window );
|
||
}
|
||
}
|
||
|
||
// Fire handlers on the event path
|
||
i = 0;
|
||
while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
|
||
|
||
event.type = i > 1 ?
|
||
bubbleType :
|
||
special.bindType || type;
|
||
|
||
// jQuery handler
|
||
handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
|
||
if ( handle ) {
|
||
handle.apply( cur, data );
|
||
}
|
||
|
||
// Native handler
|
||
handle = ontype && cur[ ontype ];
|
||
if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
|
||
event.result = handle.apply( cur, data );
|
||
if ( event.result === false ) {
|
||
event.preventDefault();
|
||
}
|
||
}
|
||
}
|
||
event.type = type;
|
||
|
||
// If nobody prevented the default action, do it now
|
||
if ( !onlyHandlers && !event.isDefaultPrevented() ) {
|
||
|
||
if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
|
||
jQuery.acceptData( elem ) ) {
|
||
|
||
// Call a native DOM method on the target with the same name name as the event.
|
||
// Don't do default actions on window, that's where global variables be (#6170)
|
||
if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
|
||
|
||
// Don't re-trigger an onFOO event when we call its FOO() method
|
||
tmp = elem[ ontype ];
|
||
|
||
if ( tmp ) {
|
||
elem[ ontype ] = null;
|
||
}
|
||
|
||
// Prevent re-triggering of the same event, since we already bubbled it above
|
||
jQuery.event.triggered = type;
|
||
elem[ type ]();
|
||
jQuery.event.triggered = undefined;
|
||
|
||
if ( tmp ) {
|
||
elem[ ontype ] = tmp;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return event.result;
|
||
},
|
||
|
||
dispatch: function( event ) {
|
||
|
||
// Make a writable jQuery.Event from the native event object
|
||
event = jQuery.event.fix( event );
|
||
|
||
var i, j, ret, matched, handleObj,
|
||
handlerQueue = [],
|
||
args = slice.call( arguments ),
|
||
handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
|
||
special = jQuery.event.special[ event.type ] || {};
|
||
|
||
// Use the fix-ed jQuery.Event rather than the (read-only) native event
|
||
args[0] = event;
|
||
event.delegateTarget = this;
|
||
|
||
// Call the preDispatch hook for the mapped type, and let it bail if desired
|
||
if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
|
||
return;
|
||
}
|
||
|
||
// Determine handlers
|
||
handlerQueue = jQuery.event.handlers.call( this, event, handlers );
|
||
|
||
// Run delegates first; they may want to stop propagation beneath us
|
||
i = 0;
|
||
while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
|
||
event.currentTarget = matched.elem;
|
||
|
||
j = 0;
|
||
while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
|
||
|
||
// Triggered event must either 1) have no namespace, or 2) have namespace(s)
|
||
// a subset or equal to those in the bound event (both can have no namespace).
|
||
if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
|
||
|
||
event.handleObj = handleObj;
|
||
event.data = handleObj.data;
|
||
|
||
ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
|
||
.apply( matched.elem, args );
|
||
|
||
if ( ret !== undefined ) {
|
||
if ( (event.result = ret) === false ) {
|
||
event.preventDefault();
|
||
event.stopPropagation();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Call the postDispatch hook for the mapped type
|
||
if ( special.postDispatch ) {
|
||
special.postDispatch.call( this, event );
|
||
}
|
||
|
||
return event.result;
|
||
},
|
||
|
||
handlers: function( event, handlers ) {
|
||
var i, matches, sel, handleObj,
|
||
handlerQueue = [],
|
||
delegateCount = handlers.delegateCount,
|
||
cur = event.target;
|
||
|
||
// Find delegate handlers
|
||
// Black-hole SVG <use> instance trees (#13180)
|
||
// Avoid non-left-click bubbling in Firefox (#3861)
|
||
if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
|
||
|
||
for ( ; cur !== this; cur = cur.parentNode || this ) {
|
||
|
||
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
|
||
if ( cur.disabled !== true || event.type !== "click" ) {
|
||
matches = [];
|
||
for ( i = 0; i < delegateCount; i++ ) {
|
||
handleObj = handlers[ i ];
|
||
|
||
// Don't conflict with Object.prototype properties (#13203)
|
||
sel = handleObj.selector + " ";
|
||
|
||
if ( matches[ sel ] === undefined ) {
|
||
matches[ sel ] = handleObj.needsContext ?
|
||
jQuery( sel, this ).index( cur ) >= 0 :
|
||
jQuery.find( sel, this, null, [ cur ] ).length;
|
||
}
|
||
if ( matches[ sel ] ) {
|
||
matches.push( handleObj );
|
||
}
|
||
}
|
||
if ( matches.length ) {
|
||
handlerQueue.push({ elem: cur, handlers: matches });
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Add the remaining (directly-bound) handlers
|
||
if ( delegateCount < handlers.length ) {
|
||
handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
|
||
}
|
||
|
||
return handlerQueue;
|
||
},
|
||
|
||
// Includes some event props shared by KeyEvent and MouseEvent
|
||
props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
|
||
|
||
fixHooks: {},
|
||
|
||
keyHooks: {
|
||
props: "char charCode key keyCode".split(" "),
|
||
filter: function( event, original ) {
|
||
|
||
// Add which for key events
|
||
if ( event.which == null ) {
|
||
event.which = original.charCode != null ? original.charCode : original.keyCode;
|
||
}
|
||
|
||
return event;
|
||
}
|
||
},
|
||
|
||
mouseHooks: {
|
||
props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
|
||
filter: function( event, original ) {
|
||
var eventDoc, doc, body,
|
||
button = original.button;
|
||
|
||
// Calculate pageX/Y if missing and clientX/Y available
|
||
if ( event.pageX == null && original.clientX != null ) {
|
||
eventDoc = event.target.ownerDocument || document;
|
||
doc = eventDoc.documentElement;
|
||
body = eventDoc.body;
|
||
|
||
event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
|
||
event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
|
||
}
|
||
|
||
// Add which for click: 1 === left; 2 === middle; 3 === right
|
||
// Note: button is not normalized, so don't use it
|
||
if ( !event.which && button !== undefined ) {
|
||
event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
|
||
}
|
||
|
||
return event;
|
||
}
|
||
},
|
||
|
||
fix: function( event ) {
|
||
if ( event[ jQuery.expando ] ) {
|
||
return event;
|
||
}
|
||
|
||
// Create a writable copy of the event object and normalize some properties
|
||
var i, prop, copy,
|
||
type = event.type,
|
||
originalEvent = event,
|
||
fixHook = this.fixHooks[ type ];
|
||
|
||
if ( !fixHook ) {
|
||
this.fixHooks[ type ] = fixHook =
|
||
rmouseEvent.test( type ) ? this.mouseHooks :
|
||
rkeyEvent.test( type ) ? this.keyHooks :
|
||
{};
|
||
}
|
||
copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
|
||
|
||
event = new jQuery.Event( originalEvent );
|
||
|
||
i = copy.length;
|
||
while ( i-- ) {
|
||
prop = copy[ i ];
|
||
event[ prop ] = originalEvent[ prop ];
|
||
}
|
||
|
||
// Support: Cordova 2.5 (WebKit) (#13255)
|
||
// All events should have a target; Cordova deviceready doesn't
|
||
if ( !event.target ) {
|
||
event.target = document;
|
||
}
|
||
|
||
// Support: Safari 6.0+, Chrome<28
|
||
// Target should not be a text node (#504, #13143)
|
||
if ( event.target.nodeType === 3 ) {
|
||
event.target = event.target.parentNode;
|
||
}
|
||
|
||
return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
|
||
},
|
||
|
||
special: {
|
||
load: {
|
||
// Prevent triggered image.load events from bubbling to window.load
|
||
noBubble: true
|
||
},
|
||
focus: {
|
||
// Fire native event if possible so blur/focus sequence is correct
|
||
trigger: function() {
|
||
if ( this !== safeActiveElement() && this.focus ) {
|
||
this.focus();
|
||
return false;
|
||
}
|
||
},
|
||
delegateType: "focusin"
|
||
},
|
||
blur: {
|
||
trigger: function() {
|
||
if ( this === safeActiveElement() && this.blur ) {
|
||
this.blur();
|
||
return false;
|
||
}
|
||
},
|
||
delegateType: "focusout"
|
||
},
|
||
click: {
|
||
// For checkbox, fire native event so checked state will be right
|
||
trigger: function() {
|
||
if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
|
||
this.click();
|
||
return false;
|
||
}
|
||
},
|
||
|
||
// For cross-browser consistency, don't fire native .click() on links
|
||
_default: function( event ) {
|
||
return jQuery.nodeName( event.target, "a" );
|
||
}
|
||
},
|
||
|
||
beforeunload: {
|
||
postDispatch: function( event ) {
|
||
|
||
// Support: Firefox 20+
|
||
// Firefox doesn't alert if the returnValue field is not set.
|
||
if ( event.result !== undefined && event.originalEvent ) {
|
||
event.originalEvent.returnValue = event.result;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
|
||
simulate: function( type, elem, event, bubble ) {
|
||
// Piggyback on a donor event to simulate a different one.
|
||
// Fake originalEvent to avoid donor's stopPropagation, but if the
|
||
// simulated event prevents default then we do the same on the donor.
|
||
var e = jQuery.extend(
|
||
new jQuery.Event(),
|
||
event,
|
||
{
|
||
type: type,
|
||
isSimulated: true,
|
||
originalEvent: {}
|
||
}
|
||
);
|
||
if ( bubble ) {
|
||
jQuery.event.trigger( e, null, elem );
|
||
} else {
|
||
jQuery.event.dispatch.call( elem, e );
|
||
}
|
||
if ( e.isDefaultPrevented() ) {
|
||
event.preventDefault();
|
||
}
|
||
}
|
||
};
|
||
|
||
jQuery.removeEvent = function( elem, type, handle ) {
|
||
if ( elem.removeEventListener ) {
|
||
elem.removeEventListener( type, handle, false );
|
||
}
|
||
};
|
||
|
||
jQuery.Event = function( src, props ) {
|
||
// Allow instantiation without the 'new' keyword
|
||
if ( !(this instanceof jQuery.Event) ) {
|
||
return new jQuery.Event( src, props );
|
||
}
|
||
|
||
// Event object
|
||
if ( src && src.type ) {
|
||
this.originalEvent = src;
|
||
this.type = src.type;
|
||
|
||
// Events bubbling up the document may have been marked as prevented
|
||
// by a handler lower down the tree; reflect the correct value.
|
||
this.isDefaultPrevented = src.defaultPrevented ||
|
||
src.defaultPrevented === undefined &&
|
||
// Support: Android<4.0
|
||
src.returnValue === false ?
|
||
returnTrue :
|
||
returnFalse;
|
||
|
||
// Event type
|
||
} else {
|
||
this.type = src;
|
||
}
|
||
|
||
// Put explicitly provided properties onto the event object
|
||
if ( props ) {
|
||
jQuery.extend( this, props );
|
||
}
|
||
|
||
// Create a timestamp if incoming event doesn't have one
|
||
this.timeStamp = src && src.timeStamp || jQuery.now();
|
||
|
||
// Mark it as fixed
|
||
this[ jQuery.expando ] = true;
|
||
};
|
||
|
||
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
|
||
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
|
||
jQuery.Event.prototype = {
|
||
isDefaultPrevented: returnFalse,
|
||
isPropagationStopped: returnFalse,
|
||
isImmediatePropagationStopped: returnFalse,
|
||
|
||
preventDefault: function() {
|
||
var e = this.originalEvent;
|
||
|
||
this.isDefaultPrevented = returnTrue;
|
||
|
||
if ( e && e.preventDefault ) {
|
||
e.preventDefault();
|
||
}
|
||
},
|
||
stopPropagation: function() {
|
||
var e = this.originalEvent;
|
||
|
||
this.isPropagationStopped = returnTrue;
|
||
|
||
if ( e && e.stopPropagation ) {
|
||
e.stopPropagation();
|
||
}
|
||
},
|
||
stopImmediatePropagation: function() {
|
||
var e = this.originalEvent;
|
||
|
||
this.isImmediatePropagationStopped = returnTrue;
|
||
|
||
if ( e && e.stopImmediatePropagation ) {
|
||
e.stopImmediatePropagation();
|
||
}
|
||
|
||
this.stopPropagation();
|
||
}
|
||
};
|
||
|
||
// Create mouseenter/leave events using mouseover/out and event-time checks
|
||
// Support: Chrome 15+
|
||
jQuery.each({
|
||
mouseenter: "mouseover",
|
||
mouseleave: "mouseout",
|
||
pointerenter: "pointerover",
|
||
pointerleave: "pointerout"
|
||
}, function( orig, fix ) {
|
||
jQuery.event.special[ orig ] = {
|
||
delegateType: fix,
|
||
bindType: fix,
|
||
|
||
handle: function( event ) {
|
||
var ret,
|
||
target = this,
|
||
related = event.relatedTarget,
|
||
handleObj = event.handleObj;
|
||
|
||
// For mousenter/leave call the handler if related is outside the target.
|
||
// NB: No relatedTarget if the mouse left/entered the browser window
|
||
if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
|
||
event.type = handleObj.origType;
|
||
ret = handleObj.handler.apply( this, arguments );
|
||
event.type = fix;
|
||
}
|
||
return ret;
|
||
}
|
||
};
|
||
});
|
||
|
||
// Support: Firefox, Chrome, Safari
|
||
// Create "bubbling" focus and blur events
|
||
if ( !support.focusinBubbles ) {
|
||
jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
|
||
|
||
// Attach a single capturing handler on the document while someone wants focusin/focusout
|
||
var handler = function( event ) {
|
||
jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
|
||
};
|
||
|
||
jQuery.event.special[ fix ] = {
|
||
setup: function() {
|
||
var doc = this.ownerDocument || this,
|
||
attaches = data_priv.access( doc, fix );
|
||
|
||
if ( !attaches ) {
|
||
doc.addEventListener( orig, handler, true );
|
||
}
|
||
data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
|
||
},
|
||
teardown: function() {
|
||
var doc = this.ownerDocument || this,
|
||
attaches = data_priv.access( doc, fix ) - 1;
|
||
|
||
if ( !attaches ) {
|
||
doc.removeEventListener( orig, handler, true );
|
||
data_priv.remove( doc, fix );
|
||
|
||
} else {
|
||
data_priv.access( doc, fix, attaches );
|
||
}
|
||
}
|
||
};
|
||
});
|
||
}
|
||
|
||
jQuery.fn.extend({
|
||
|
||
on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
|
||
var origFn, type;
|
||
|
||
// Types can be a map of types/handlers
|
||
if ( typeof types === "object" ) {
|
||
// ( types-Object, selector, data )
|
||
if ( typeof selector !== "string" ) {
|
||
// ( types-Object, data )
|
||
data = data || selector;
|
||
selector = undefined;
|
||
}
|
||
for ( type in types ) {
|
||
this.on( type, selector, data, types[ type ], one );
|
||
}
|
||
return this;
|
||
}
|
||
|
||
if ( data == null && fn == null ) {
|
||
// ( types, fn )
|
||
fn = selector;
|
||
data = selector = undefined;
|
||
} else if ( fn == null ) {
|
||
if ( typeof selector === "string" ) {
|
||
// ( types, selector, fn )
|
||
fn = data;
|
||
data = undefined;
|
||
} else {
|
||
// ( types, data, fn )
|
||
fn = data;
|
||
data = selector;
|
||
selector = undefined;
|
||
}
|
||
}
|
||
if ( fn === false ) {
|
||
fn = returnFalse;
|
||
} else if ( !fn ) {
|
||
return this;
|
||
}
|
||
|
||
if ( one === 1 ) {
|
||
origFn = fn;
|
||
fn = function( event ) {
|
||
// Can use an empty set, since event contains the info
|
||
jQuery().off( event );
|
||
return origFn.apply( this, arguments );
|
||
};
|
||
// Use same guid so caller can remove using origFn
|
||
fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
|
||
}
|
||
return this.each( function() {
|
||
jQuery.event.add( this, types, fn, data, selector );
|
||
});
|
||
},
|
||
one: function( types, selector, data, fn ) {
|
||
return this.on( types, selector, data, fn, 1 );
|
||
},
|
||
off: function( types, selector, fn ) {
|
||
var handleObj, type;
|
||
if ( types && types.preventDefault && types.handleObj ) {
|
||
// ( event ) dispatched jQuery.Event
|
||
handleObj = types.handleObj;
|
||
jQuery( types.delegateTarget ).off(
|
||
handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
|
||
handleObj.selector,
|
||
handleObj.handler
|
||
);
|
||
return this;
|
||
}
|
||
if ( typeof types === "object" ) {
|
||
// ( types-object [, selector] )
|
||
for ( type in types ) {
|
||
this.off( type, selector, types[ type ] );
|
||
}
|
||
return this;
|
||
}
|
||
if ( selector === false || typeof selector === "function" ) {
|
||
// ( types [, fn] )
|
||
fn = selector;
|
||
selector = undefined;
|
||
}
|
||
if ( fn === false ) {
|
||
fn = returnFalse;
|
||
}
|
||
return this.each(function() {
|
||
jQuery.event.remove( this, types, fn, selector );
|
||
});
|
||
},
|
||
|
||
trigger: function( type, data ) {
|
||
return this.each(function() {
|
||
jQuery.event.trigger( type, data, this );
|
||
});
|
||
},
|
||
triggerHandler: function( type, data ) {
|
||
var elem = this[0];
|
||
if ( elem ) {
|
||
return jQuery.event.trigger( type, data, elem, true );
|
||
}
|
||
}
|
||
});
|
||
|
||
|
||
var
|
||
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
|
||
rtagName = /<([\w:]+)/,
|
||
rhtml = /<|&#?\w+;/,
|
||
rnoInnerhtml = /<(?:script|style|link)/i,
|
||
// checked="checked" or checked
|
||
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
|
||
rscriptType = /^$|\/(?:java|ecma)script/i,
|
||
rscriptTypeMasked = /^true\/(.*)/,
|
||
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
|
||
|
||
// We have to close these tags to support XHTML (#13200)
|
||
wrapMap = {
|
||
|
||
// Support: IE9
|
||
option: [ 1, "<select multiple='multiple'>", "</select>" ],
|
||
|
||
thead: [ 1, "<table>", "</table>" ],
|
||
col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
|
||
tr: [ 2, "<table><tbody>", "</tbody></table>" ],
|
||
td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
|
||
|
||
_default: [ 0, "", "" ]
|
||
};
|
||
|
||
// Support: IE9
|
||
wrapMap.optgroup = wrapMap.option;
|
||
|
||
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
|
||
wrapMap.th = wrapMap.td;
|
||
|
||
// Support: 1.x compatibility
|
||
// Manipulating tables requires a tbody
|
||
function manipulationTarget( elem, content ) {
|
||
return jQuery.nodeName( elem, "table" ) &&
|
||
jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
|
||
|
||
elem.getElementsByTagName("tbody")[0] ||
|
||
elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
|
||
elem;
|
||
}
|
||
|
||
// Replace/restore the type attribute of script elements for safe DOM manipulation
|
||
function disableScript( elem ) {
|
||
elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
|
||
return elem;
|
||
}
|
||
function restoreScript( elem ) {
|
||
var match = rscriptTypeMasked.exec( elem.type );
|
||
|
||
if ( match ) {
|
||
elem.type = match[ 1 ];
|
||
} else {
|
||
elem.removeAttribute("type");
|
||
}
|
||
|
||
return elem;
|
||
}
|
||
|
||
// Mark scripts as having already been evaluated
|
||
function setGlobalEval( elems, refElements ) {
|
||
var i = 0,
|
||
l = elems.length;
|
||
|
||
for ( ; i < l; i++ ) {
|
||
data_priv.set(
|
||
elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
|
||
);
|
||
}
|
||
}
|
||
|
||
function cloneCopyEvent( src, dest ) {
|
||
var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
|
||
|
||
if ( dest.nodeType !== 1 ) {
|
||
return;
|
||
}
|
||
|
||
// 1. Copy private data: events, handlers, etc.
|
||
if ( data_priv.hasData( src ) ) {
|
||
pdataOld = data_priv.access( src );
|
||
pdataCur = data_priv.set( dest, pdataOld );
|
||
events = pdataOld.events;
|
||
|
||
if ( events ) {
|
||
delete pdataCur.handle;
|
||
pdataCur.events = {};
|
||
|
||
for ( type in events ) {
|
||
for ( i = 0, l = events[ type ].length; i < l; i++ ) {
|
||
jQuery.event.add( dest, type, events[ type ][ i ] );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 2. Copy user data
|
||
if ( data_user.hasData( src ) ) {
|
||
udataOld = data_user.access( src );
|
||
udataCur = jQuery.extend( {}, udataOld );
|
||
|
||
data_user.set( dest, udataCur );
|
||
}
|
||
}
|
||
|
||
function getAll( context, tag ) {
|
||
var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
|
||
context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
|
||
[];
|
||
|
||
return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
|
||
jQuery.merge( [ context ], ret ) :
|
||
ret;
|
||
}
|
||
|
||
// Fix IE bugs, see support tests
|
||
function fixInput( src, dest ) {
|
||
var nodeName = dest.nodeName.toLowerCase();
|
||
|
||
// Fails to persist the checked state of a cloned checkbox or radio button.
|
||
if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
|
||
dest.checked = src.checked;
|
||
|
||
// Fails to return the selected option to the default selected state when cloning options
|
||
} else if ( nodeName === "input" || nodeName === "textarea" ) {
|
||
dest.defaultValue = src.defaultValue;
|
||
}
|
||
}
|
||
|
||
jQuery.extend({
|
||
clone: function( elem, dataAndEvents, deepDataAndEvents ) {
|
||
var i, l, srcElements, destElements,
|
||
clone = elem.cloneNode( true ),
|
||
inPage = jQuery.contains( elem.ownerDocument, elem );
|
||
|
||
// Fix IE cloning issues
|
||
if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
|
||
!jQuery.isXMLDoc( elem ) ) {
|
||
|
||
// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
|
||
destElements = getAll( clone );
|
||
srcElements = getAll( elem );
|
||
|
||
for ( i = 0, l = srcElements.length; i < l; i++ ) {
|
||
fixInput( srcElements[ i ], destElements[ i ] );
|
||
}
|
||
}
|
||
|
||
// Copy the events from the original to the clone
|
||
if ( dataAndEvents ) {
|
||
if ( deepDataAndEvents ) {
|
||
srcElements = srcElements || getAll( elem );
|
||
destElements = destElements || getAll( clone );
|
||
|
||
for ( i = 0, l = srcElements.length; i < l; i++ ) {
|
||
cloneCopyEvent( srcElements[ i ], destElements[ i ] );
|
||
}
|
||
} else {
|
||
cloneCopyEvent( elem, clone );
|
||
}
|
||
}
|
||
|
||
// Preserve script evaluation history
|
||
destElements = getAll( clone, "script" );
|
||
if ( destElements.length > 0 ) {
|
||
setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
|
||
}
|
||
|
||
// Return the cloned set
|
||
return clone;
|
||
},
|
||
|
||
buildFragment: function( elems, context, scripts, selection ) {
|
||
var elem, tmp, tag, wrap, contains, j,
|
||
fragment = context.createDocumentFragment(),
|
||
nodes = [],
|
||
i = 0,
|
||
l = elems.length;
|
||
|
||
for ( ; i < l; i++ ) {
|
||
elem = elems[ i ];
|
||
|
||
if ( elem || elem === 0 ) {
|
||
|
||
// Add nodes directly
|
||
if ( jQuery.type( elem ) === "object" ) {
|
||
// Support: QtWebKit, PhantomJS
|
||
// push.apply(_, arraylike) throws on ancient WebKit
|
||
jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
|
||
|
||
// Convert non-html into a text node
|
||
} else if ( !rhtml.test( elem ) ) {
|
||
nodes.push( context.createTextNode( elem ) );
|
||
|
||
// Convert html into DOM nodes
|
||
} else {
|
||
tmp = tmp || fragment.appendChild( context.createElement("div") );
|
||
|
||
// Deserialize a standard representation
|
||
tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
|
||
wrap = wrapMap[ tag ] || wrapMap._default;
|
||
tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
|
||
|
||
// Descend through wrappers to the right content
|
||
j = wrap[ 0 ];
|
||
while ( j-- ) {
|
||
tmp = tmp.lastChild;
|
||
}
|
||
|
||
// Support: QtWebKit, PhantomJS
|
||
// push.apply(_, arraylike) throws on ancient WebKit
|
||
jQuery.merge( nodes, tmp.childNodes );
|
||
|
||
// Remember the top-level container
|
||
tmp = fragment.firstChild;
|
||
|
||
// Ensure the created nodes are orphaned (#12392)
|
||
tmp.textContent = "";
|
||
}
|
||
}
|
||
}
|
||
|
||
// Remove wrapper from fragment
|
||
fragment.textContent = "";
|
||
|
||
i = 0;
|
||
while ( (elem = nodes[ i++ ]) ) {
|
||
|
||
// #4087 - If origin and destination elements are the same, and this is
|
||
// that element, do not do anything
|
||
if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
|
||
continue;
|
||
}
|
||
|
||
contains = jQuery.contains( elem.ownerDocument, elem );
|
||
|
||
// Append to fragment
|
||
tmp = getAll( fragment.appendChild( elem ), "script" );
|
||
|
||
// Preserve script evaluation history
|
||
if ( contains ) {
|
||
setGlobalEval( tmp );
|
||
}
|
||
|
||
// Capture executables
|
||
if ( scripts ) {
|
||
j = 0;
|
||
while ( (elem = tmp[ j++ ]) ) {
|
||
if ( rscriptType.test( elem.type || "" ) ) {
|
||
scripts.push( elem );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return fragment;
|
||
},
|
||
|
||
cleanData: function( elems ) {
|
||
var data, elem, type, key,
|
||
special = jQuery.event.special,
|
||
i = 0;
|
||
|
||
for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
|
||
if ( jQuery.acceptData( elem ) ) {
|
||
key = elem[ data_priv.expando ];
|
||
|
||
if ( key && (data = data_priv.cache[ key ]) ) {
|
||
if ( data.events ) {
|
||
for ( type in data.events ) {
|
||
if ( special[ type ] ) {
|
||
jQuery.event.remove( elem, type );
|
||
|
||
// This is a shortcut to avoid jQuery.event.remove's overhead
|
||
} else {
|
||
jQuery.removeEvent( elem, type, data.handle );
|
||
}
|
||
}
|
||
}
|
||
if ( data_priv.cache[ key ] ) {
|
||
// Discard any remaining `private` data
|
||
delete data_priv.cache[ key ];
|
||
}
|
||
}
|
||
}
|
||
// Discard any remaining `user` data
|
||
delete data_user.cache[ elem[ data_user.expando ] ];
|
||
}
|
||
}
|
||
});
|
||
|
||
jQuery.fn.extend({
|
||
text: function( value ) {
|
||
return access( this, function( value ) {
|
||
return value === undefined ?
|
||
jQuery.text( this ) :
|
||
this.empty().each(function() {
|
||
if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
|
||
this.textContent = value;
|
||
}
|
||
});
|
||
}, null, value, arguments.length );
|
||
},
|
||
|
||
append: function() {
|
||
return this.domManip( arguments, function( elem ) {
|
||
if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
|
||
var target = manipulationTarget( this, elem );
|
||
target.appendChild( elem );
|
||
}
|
||
});
|
||
},
|
||
|
||
prepend: function() {
|
||
return this.domManip( arguments, function( elem ) {
|
||
if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
|
||
var target = manipulationTarget( this, elem );
|
||
target.insertBefore( elem, target.firstChild );
|
||
}
|
||
});
|
||
},
|
||
|
||
before: function() {
|
||
return this.domManip( arguments, function( elem ) {
|
||
if ( this.parentNode ) {
|
||
this.parentNode.insertBefore( elem, this );
|
||
}
|
||
});
|
||
},
|
||
|
||
after: function() {
|
||
return this.domManip( arguments, function( elem ) {
|
||
if ( this.parentNode ) {
|
||
this.parentNode.insertBefore( elem, this.nextSibling );
|
||
}
|
||
});
|
||
},
|
||
|
||
remove: function( selector, keepData /* Internal Use Only */ ) {
|
||
var elem,
|
||
elems = selector ? jQuery.filter( selector, this ) : this,
|
||
i = 0;
|
||
|
||
for ( ; (elem = elems[i]) != null; i++ ) {
|
||
if ( !keepData && elem.nodeType === 1 ) {
|
||
jQuery.cleanData( getAll( elem ) );
|
||
}
|
||
|
||
if ( elem.parentNode ) {
|
||
if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
|
||
setGlobalEval( getAll( elem, "script" ) );
|
||
}
|
||
elem.parentNode.removeChild( elem );
|
||
}
|
||
}
|
||
|
||
return this;
|
||
},
|
||
|
||
empty: function() {
|
||
var elem,
|
||
i = 0;
|
||
|
||
for ( ; (elem = this[i]) != null; i++ ) {
|
||
if ( elem.nodeType === 1 ) {
|
||
|
||
// Prevent memory leaks
|
||
jQuery.cleanData( getAll( elem, false ) );
|
||
|
||
// Remove any remaining nodes
|
||
elem.textContent = "";
|
||
}
|
||
}
|
||
|
||
return this;
|
||
},
|
||
|
||
clone: function( dataAndEvents, deepDataAndEvents ) {
|
||
dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
|
||
deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
|
||
|
||
return this.map(function() {
|
||
return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
|
||
});
|
||
},
|
||
|
||
html: function( value ) {
|
||
return access( this, function( value ) {
|
||
var elem = this[ 0 ] || {},
|
||
i = 0,
|
||
l = this.length;
|
||
|
||
if ( value === undefined && elem.nodeType === 1 ) {
|
||
return elem.innerHTML;
|
||
}
|
||
|
||
// See if we can take a shortcut and just use innerHTML
|
||
if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
|
||
!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
|
||
|
||
value = value.replace( rxhtmlTag, "<$1></$2>" );
|
||
|
||
try {
|
||
for ( ; i < l; i++ ) {
|
||
elem = this[ i ] || {};
|
||
|
||
// Remove element nodes and prevent memory leaks
|
||
if ( elem.nodeType === 1 ) {
|
||
jQuery.cleanData( getAll( elem, false ) );
|
||
elem.innerHTML = value;
|
||
}
|
||
}
|
||
|
||
elem = 0;
|
||
|
||
// If using innerHTML throws an exception, use the fallback method
|
||
} catch( e ) {}
|
||
}
|
||
|
||
if ( elem ) {
|
||
this.empty().append( value );
|
||
}
|
||
}, null, value, arguments.length );
|
||
},
|
||
|
||
replaceWith: function() {
|
||
var arg = arguments[ 0 ];
|
||
|
||
// Make the changes, replacing each context element with the new content
|
||
this.domManip( arguments, function( elem ) {
|
||
arg = this.parentNode;
|
||
|
||
jQuery.cleanData( getAll( this ) );
|
||
|
||
if ( arg ) {
|
||
arg.replaceChild( elem, this );
|
||
}
|
||
});
|
||
|
||
// Force removal if there was no new content (e.g., from empty arguments)
|
||
return arg && (arg.length || arg.nodeType) ? this : this.remove();
|
||
},
|
||
|
||
detach: function( selector ) {
|
||
return this.remove( selector, true );
|
||
},
|
||
|
||
domManip: function( args, callback ) {
|
||
|
||
// Flatten any nested arrays
|
||
args = concat.apply( [], args );
|
||
|
||
var fragment, first, scripts, hasScripts, node, doc,
|
||
i = 0,
|
||
l = this.length,
|
||
set = this,
|
||
iNoClone = l - 1,
|
||
value = args[ 0 ],
|
||
isFunction = jQuery.isFunction( value );
|
||
|
||
// We can't cloneNode fragments that contain checked, in WebKit
|
||
if ( isFunction ||
|
||
( l > 1 && typeof value === "string" &&
|
||
!support.checkClone && rchecked.test( value ) ) ) {
|
||
return this.each(function( index ) {
|
||
var self = set.eq( index );
|
||
if ( isFunction ) {
|
||
args[ 0 ] = value.call( this, index, self.html() );
|
||
}
|
||
self.domManip( args, callback );
|
||
});
|
||
}
|
||
|
||
if ( l ) {
|
||
fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
|
||
first = fragment.firstChild;
|
||
|
||
if ( fragment.childNodes.length === 1 ) {
|
||
fragment = first;
|
||
}
|
||
|
||
if ( first ) {
|
||
scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
|
||
hasScripts = scripts.length;
|
||
|
||
// Use the original fragment for the last item instead of the first because it can end up
|
||
// being emptied incorrectly in certain situations (#8070).
|
||
for ( ; i < l; i++ ) {
|
||
node = fragment;
|
||
|
||
if ( i !== iNoClone ) {
|
||
node = jQuery.clone( node, true, true );
|
||
|
||
// Keep references to cloned scripts for later restoration
|
||
if ( hasScripts ) {
|
||
// Support: QtWebKit
|
||
// jQuery.merge because push.apply(_, arraylike) throws
|
||
jQuery.merge( scripts, getAll( node, "script" ) );
|
||
}
|
||
}
|
||
|
||
callback.call( this[ i ], node, i );
|
||
}
|
||
|
||
if ( hasScripts ) {
|
||
doc = scripts[ scripts.length - 1 ].ownerDocument;
|
||
|
||
// Reenable scripts
|
||
jQuery.map( scripts, restoreScript );
|
||
|
||
// Evaluate executable scripts on first document insertion
|
||
for ( i = 0; i < hasScripts; i++ ) {
|
||
node = scripts[ i ];
|
||
if ( rscriptType.test( node.type || "" ) &&
|
||
!data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
|
||
|
||
if ( node.src ) {
|
||
// Optional AJAX dependency, but won't run scripts if not present
|
||
if ( jQuery._evalUrl ) {
|
||
jQuery._evalUrl( node.src );
|
||
}
|
||
} else {
|
||
jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return this;
|
||
}
|
||
});
|
||
|
||
jQuery.each({
|
||
appendTo: "append",
|
||
prependTo: "prepend",
|
||
insertBefore: "before",
|
||
insertAfter: "after",
|
||
replaceAll: "replaceWith"
|
||
}, function( name, original ) {
|
||
jQuery.fn[ name ] = function( selector ) {
|
||
var elems,
|
||
ret = [],
|
||
insert = jQuery( selector ),
|
||
last = insert.length - 1,
|
||
i = 0;
|
||
|
||
for ( ; i <= last; i++ ) {
|
||
elems = i === last ? this : this.clone( true );
|
||
jQuery( insert[ i ] )[ original ]( elems );
|
||
|
||
// Support: QtWebKit
|
||
// .get() because push.apply(_, arraylike) throws
|
||
push.apply( ret, elems.get() );
|
||
}
|
||
|
||
return this.pushStack( ret );
|
||
};
|
||
});
|
||
|
||
|
||
var iframe,
|
||
elemdisplay = {};
|
||
|
||
/**
|
||
* Retrieve the actual display of a element
|
||
* @param {String} name nodeName of the element
|
||
* @param {Object} doc Document object
|
||
*/
|
||
// Called only from within defaultDisplay
|
||
function actualDisplay( name, doc ) {
|
||
var style,
|
||
elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
|
||
|
||
// getDefaultComputedStyle might be reliably used only on attached element
|
||
display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
|
||
|
||
// Use of this method is a temporary fix (more like optimization) until something better comes along,
|
||
// since it was removed from specification and supported only in FF
|
||
style.display : jQuery.css( elem[ 0 ], "display" );
|
||
|
||
// We don't have any data stored on the element,
|
||
// so use "detach" method as fast way to get rid of the element
|
||
elem.detach();
|
||
|
||
return display;
|
||
}
|
||
|
||
/**
|
||
* Try to determine the default display value of an element
|
||
* @param {String} nodeName
|
||
*/
|
||
function defaultDisplay( nodeName ) {
|
||
var doc = document,
|
||
display = elemdisplay[ nodeName ];
|
||
|
||
if ( !display ) {
|
||
display = actualDisplay( nodeName, doc );
|
||
|
||
// If the simple way fails, read from inside an iframe
|
||
if ( display === "none" || !display ) {
|
||
|
||
// Use the already-created iframe if possible
|
||
iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
|
||
|
||
// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
|
||
doc = iframe[ 0 ].contentDocument;
|
||
|
||
// Support: IE
|
||
doc.write();
|
||
doc.close();
|
||
|
||
display = actualDisplay( nodeName, doc );
|
||
iframe.detach();
|
||
}
|
||
|
||
// Store the correct default display
|
||
elemdisplay[ nodeName ] = display;
|
||
}
|
||
|
||
return display;
|
||
}
|
||
var rmargin = (/^margin/);
|
||
|
||
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
|
||
|
||
var getStyles = function( elem ) {
|
||
// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
|
||
// IE throws on elements created in popups
|
||
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
|
||
if ( elem.ownerDocument.defaultView.opener ) {
|
||
return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
|
||
}
|
||
|
||
return window.getComputedStyle( elem, null );
|
||
};
|
||
|
||
|
||
|
||
function curCSS( elem, name, computed ) {
|
||
var width, minWidth, maxWidth, ret,
|
||
style = elem.style;
|
||
|
||
computed = computed || getStyles( elem );
|
||
|
||
// Support: IE9
|
||
// getPropertyValue is only needed for .css('filter') (#12537)
|
||
if ( computed ) {
|
||
ret = computed.getPropertyValue( name ) || computed[ name ];
|
||
}
|
||
|
||
if ( computed ) {
|
||
|
||
if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
|
||
ret = jQuery.style( elem, name );
|
||
}
|
||
|
||
// Support: iOS < 6
|
||
// A tribute to the "awesome hack by Dean Edwards"
|
||
// iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
|
||
// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
|
||
if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
|
||
|
||
// Remember the original values
|
||
width = style.width;
|
||
minWidth = style.minWidth;
|
||
maxWidth = style.maxWidth;
|
||
|
||
// Put in the new values to get a computed value out
|
||
style.minWidth = style.maxWidth = style.width = ret;
|
||
ret = computed.width;
|
||
|
||
// Revert the changed values
|
||
style.width = width;
|
||
style.minWidth = minWidth;
|
||
style.maxWidth = maxWidth;
|
||
}
|
||
}
|
||
|
||
return ret !== undefined ?
|
||
// Support: IE
|
||
// IE returns zIndex value as an integer.
|
||
ret + "" :
|
||
ret;
|
||
}
|
||
|
||
|
||
function addGetHookIf( conditionFn, hookFn ) {
|
||
// Define the hook, we'll check on the first run if it's really needed.
|
||
return {
|
||
get: function() {
|
||
if ( conditionFn() ) {
|
||
// Hook not needed (or it's not possible to use it due
|
||
// to missing dependency), remove it.
|
||
delete this.get;
|
||
return;
|
||
}
|
||
|
||
// Hook needed; redefine it so that the support test is not executed again.
|
||
return (this.get = hookFn).apply( this, arguments );
|
||
}
|
||
};
|
||
}
|
||
|
||
|
||
(function() {
|
||
var pixelPositionVal, boxSizingReliableVal,
|
||
docElem = document.documentElement,
|
||
container = document.createElement( "div" ),
|
||
div = document.createElement( "div" );
|
||
|
||
if ( !div.style ) {
|
||
return;
|
||
}
|
||
|
||
// Support: IE9-11+
|
||
// Style of cloned element affects source element cloned (#8908)
|
||
div.style.backgroundClip = "content-box";
|
||
div.cloneNode( true ).style.backgroundClip = "";
|
||
support.clearCloneStyle = div.style.backgroundClip === "content-box";
|
||
|
||
container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
|
||
"position:absolute";
|
||
container.appendChild( div );
|
||
|
||
// Executing both pixelPosition & boxSizingReliable tests require only one layout
|
||
// so they're executed at the same time to save the second computation.
|
||
function computePixelPositionAndBoxSizingReliable() {
|
||
div.style.cssText =
|
||
// Support: Firefox<29, Android 2.3
|
||
// Vendor-prefix box-sizing
|
||
"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
|
||
"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
|
||
"border:1px;padding:1px;width:4px;position:absolute";
|
||
div.innerHTML = "";
|
||
docElem.appendChild( container );
|
||
|
||
var divStyle = window.getComputedStyle( div, null );
|
||
pixelPositionVal = divStyle.top !== "1%";
|
||
boxSizingReliableVal = divStyle.width === "4px";
|
||
|
||
docElem.removeChild( container );
|
||
}
|
||
|
||
// Support: node.js jsdom
|
||
// Don't assume that getComputedStyle is a property of the global object
|
||
if ( window.getComputedStyle ) {
|
||
jQuery.extend( support, {
|
||
pixelPosition: function() {
|
||
|
||
// This test is executed only once but we still do memoizing
|
||
// since we can use the boxSizingReliable pre-computing.
|
||
// No need to check if the test was already performed, though.
|
||
computePixelPositionAndBoxSizingReliable();
|
||
return pixelPositionVal;
|
||
},
|
||
boxSizingReliable: function() {
|
||
if ( boxSizingReliableVal == null ) {
|
||
computePixelPositionAndBoxSizingReliable();
|
||
}
|
||
return boxSizingReliableVal;
|
||
},
|
||
reliableMarginRight: function() {
|
||
|
||
// Support: Android 2.3
|
||
// Check if div with explicit width and no margin-right incorrectly
|
||
// gets computed margin-right based on width of container. (#3333)
|
||
// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
|
||
// This support function is only executed once so no memoizing is needed.
|
||
var ret,
|
||
marginDiv = div.appendChild( document.createElement( "div" ) );
|
||
|
||
// Reset CSS: box-sizing; display; margin; border; padding
|
||
marginDiv.style.cssText = div.style.cssText =
|
||
// Support: Firefox<29, Android 2.3
|
||
// Vendor-prefix box-sizing
|
||
"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
|
||
"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
|
||
marginDiv.style.marginRight = marginDiv.style.width = "0";
|
||
div.style.width = "1px";
|
||
docElem.appendChild( container );
|
||
|
||
ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
|
||
|
||
docElem.removeChild( container );
|
||
div.removeChild( marginDiv );
|
||
|
||
return ret;
|
||
}
|
||
});
|
||
}
|
||
})();
|
||
|
||
|
||
// A method for quickly swapping in/out CSS properties to get correct calculations.
|
||
jQuery.swap = function( elem, options, callback, args ) {
|
||
var ret, name,
|
||
old = {};
|
||
|
||
// Remember the old values, and insert the new ones
|
||
for ( name in options ) {
|
||
old[ name ] = elem.style[ name ];
|
||
elem.style[ name ] = options[ name ];
|
||
}
|
||
|
||
ret = callback.apply( elem, args || [] );
|
||
|
||
// Revert the old values
|
||
for ( name in options ) {
|
||
elem.style[ name ] = old[ name ];
|
||
}
|
||
|
||
return ret;
|
||
};
|
||
|
||
|
||
var
|
||
// Swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
|
||
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
||
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
||
rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
|
||
rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
|
||
|
||
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
||
cssNormalTransform = {
|
||
letterSpacing: "0",
|
||
fontWeight: "400"
|
||
},
|
||
|
||
cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
|
||
|
||
// Return a css property mapped to a potentially vendor prefixed property
|
||
function vendorPropName( style, name ) {
|
||
|
||
// Shortcut for names that are not vendor prefixed
|
||
if ( name in style ) {
|
||
return name;
|
||
}
|
||
|
||
// Check for vendor prefixed names
|
||
var capName = name[0].toUpperCase() + name.slice(1),
|
||
origName = name,
|
||
i = cssPrefixes.length;
|
||
|
||
while ( i-- ) {
|
||
name = cssPrefixes[ i ] + capName;
|
||
if ( name in style ) {
|
||
return name;
|
||
}
|
||
}
|
||
|
||
return origName;
|
||
}
|
||
|
||
function setPositiveNumber( elem, value, subtract ) {
|
||
var matches = rnumsplit.exec( value );
|
||
return matches ?
|
||
// Guard against undefined "subtract", e.g., when used as in cssHooks
|
||
Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
|
||
value;
|
||
}
|
||
|
||
function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
|
||
var i = extra === ( isBorderBox ? "border" : "content" ) ?
|
||
// If we already have the right measurement, avoid augmentation
|
||
4 :
|
||
// Otherwise initialize for horizontal or vertical properties
|
||
name === "width" ? 1 : 0,
|
||
|
||
val = 0;
|
||
|
||
for ( ; i < 4; i += 2 ) {
|
||
// Both box models exclude margin, so add it if we want it
|
||
if ( extra === "margin" ) {
|
||
val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
|
||
}
|
||
|
||
if ( isBorderBox ) {
|
||
// border-box includes padding, so remove it if we want content
|
||
if ( extra === "content" ) {
|
||
val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
|
||
}
|
||
|
||
// At this point, extra isn't border nor margin, so remove border
|
||
if ( extra !== "margin" ) {
|
||
val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
|
||
}
|
||
} else {
|
||
// At this point, extra isn't content, so add padding
|
||
val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
|
||
|
||
// At this point, extra isn't content nor padding, so add border
|
||
if ( extra !== "padding" ) {
|
||
val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
|
||
}
|
||
}
|
||
}
|
||
|
||
return val;
|
||
}
|
||
|
||
function getWidthOrHeight( elem, name, extra ) {
|
||
|
||
// Start with offset property, which is equivalent to the border-box value
|
||
var valueIsBorderBox = true,
|
||
val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
|
||
styles = getStyles( elem ),
|
||
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
|
||
|
||
// Some non-html elements return undefined for offsetWidth, so check for null/undefined
|
||
// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
|
||
// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
|
||
if ( val <= 0 || val == null ) {
|
||
// Fall back to computed then uncomputed css if necessary
|
||
val = curCSS( elem, name, styles );
|
||
if ( val < 0 || val == null ) {
|
||
val = elem.style[ name ];
|
||
}
|
||
|
||
// Computed unit is not pixels. Stop here and return.
|
||
if ( rnumnonpx.test(val) ) {
|
||
return val;
|
||
}
|
||
|
||
// Check for style in case a browser which returns unreliable values
|
||
// for getComputedStyle silently falls back to the reliable elem.style
|
||
valueIsBorderBox = isBorderBox &&
|
||
( support.boxSizingReliable() || val === elem.style[ name ] );
|
||
|
||
// Normalize "", auto, and prepare for extra
|
||
val = parseFloat( val ) || 0;
|
||
}
|
||
|
||
// Use the active box-sizing model to add/subtract irrelevant styles
|
||
return ( val +
|
||
augmentWidthOrHeight(
|
||
elem,
|
||
name,
|
||
extra || ( isBorderBox ? "border" : "content" ),
|
||
valueIsBorderBox,
|
||
styles
|
||
)
|
||
) + "px";
|
||
}
|
||
|
||
function showHide( elements, show ) {
|
||
var display, elem, hidden,
|
||
values = [],
|
||
index = 0,
|
||
length = elements.length;
|
||
|
||
for ( ; index < length; index++ ) {
|
||
elem = elements[ index ];
|
||
if ( !elem.style ) {
|
||
continue;
|
||
}
|
||
|
||
values[ index ] = data_priv.get( elem, "olddisplay" );
|
||
display = elem.style.display;
|
||
if ( show ) {
|
||
// Reset the inline display of this element to learn if it is
|
||
// being hidden by cascaded rules or not
|
||
if ( !values[ index ] && display === "none" ) {
|
||
elem.style.display = "";
|
||
}
|
||
|
||
// Set elements which have been overridden with display: none
|
||
// in a stylesheet to whatever the default browser style is
|
||
// for such an element
|
||
if ( elem.style.display === "" && isHidden( elem ) ) {
|
||
values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
|
||
}
|
||
} else {
|
||
hidden = isHidden( elem );
|
||
|
||
if ( display !== "none" || !hidden ) {
|
||
data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
|
||
}
|
||
}
|
||
}
|
||
|
||
// Set the display of most of the elements in a second loop
|
||
// to avoid the constant reflow
|
||
for ( index = 0; index < length; index++ ) {
|
||
elem = elements[ index ];
|
||
if ( !elem.style ) {
|
||
continue;
|
||
}
|
||
if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
|
||
elem.style.display = show ? values[ index ] || "" : "none";
|
||
}
|
||
}
|
||
|
||
return elements;
|
||
}
|
||
|
||
jQuery.extend({
|
||
|
||
// Add in style property hooks for overriding the default
|
||
// behavior of getting and setting a style property
|
||
cssHooks: {
|
||
opacity: {
|
||
get: function( elem, computed ) {
|
||
if ( computed ) {
|
||
|
||
// We should always get a number back from opacity
|
||
var ret = curCSS( elem, "opacity" );
|
||
return ret === "" ? "1" : ret;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
|
||
// Don't automatically add "px" to these possibly-unitless properties
|
||
cssNumber: {
|
||
"columnCount": true,
|
||
"fillOpacity": true,
|
||
"flexGrow": true,
|
||
"flexShrink": true,
|
||
"fontWeight": true,
|
||
"lineHeight": true,
|
||
"opacity": true,
|
||
"order": true,
|
||
"orphans": true,
|
||
"widows": true,
|
||
"zIndex": true,
|
||
"zoom": true
|
||
},
|
||
|
||
// Add in properties whose names you wish to fix before
|
||
// setting or getting the value
|
||
cssProps: {
|
||
"float": "cssFloat"
|
||
},
|
||
|
||
// Get and set the style property on a DOM Node
|
||
style: function( elem, name, value, extra ) {
|
||
|
||
// Don't set styles on text and comment nodes
|
||
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
|
||
return;
|
||
}
|
||
|
||
// Make sure that we're working with the right name
|
||
var ret, type, hooks,
|
||
origName = jQuery.camelCase( name ),
|
||
style = elem.style;
|
||
|
||
name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
|
||
|
||
// Gets hook for the prefixed version, then unprefixed version
|
||
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
|
||
|
||
// Check if we're setting a value
|
||
if ( value !== undefined ) {
|
||
type = typeof value;
|
||
|
||
// Convert "+=" or "-=" to relative numbers (#7345)
|
||
if ( type === "string" && (ret = rrelNum.exec( value )) ) {
|
||
value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
|
||
// Fixes bug #9237
|
||
type = "number";
|
||
}
|
||
|
||
// Make sure that null and NaN values aren't set (#7116)
|
||
if ( value == null || value !== value ) {
|
||
return;
|
||
}
|
||
|
||
// If a number, add 'px' to the (except for certain CSS properties)
|
||
if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
|
||
value += "px";
|
||
}
|
||
|
||
// Support: IE9-11+
|
||
// background-* props affect original clone's values
|
||
if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
|
||
style[ name ] = "inherit";
|
||
}
|
||
|
||
// If a hook was provided, use that value, otherwise just set the specified value
|
||
if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
|
||
style[ name ] = value;
|
||
}
|
||
|
||
} else {
|
||
// If a hook was provided get the non-computed value from there
|
||
if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
|
||
return ret;
|
||
}
|
||
|
||
// Otherwise just get the value from the style object
|
||
return style[ name ];
|
||
}
|
||
},
|
||
|
||
css: function( elem, name, extra, styles ) {
|
||
var val, num, hooks,
|
||
origName = jQuery.camelCase( name );
|
||
|
||
// Make sure that we're working with the right name
|
||
name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
|
||
|
||
// Try prefixed name followed by the unprefixed name
|
||
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
|
||
|
||
// If a hook was provided get the computed value from there
|
||
if ( hooks && "get" in hooks ) {
|
||
val = hooks.get( elem, true, extra );
|
||
}
|
||
|
||
// Otherwise, if a way to get the computed value exists, use that
|
||
if ( val === undefined ) {
|
||
val = curCSS( elem, name, styles );
|
||
}
|
||
|
||
// Convert "normal" to computed value
|
||
if ( val === "normal" && name in cssNormalTransform ) {
|
||
val = cssNormalTransform[ name ];
|
||
}
|
||
|
||
// Make numeric if forced or a qualifier was provided and val looks numeric
|
||
if ( extra === "" || extra ) {
|
||
num = parseFloat( val );
|
||
return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
|
||
}
|
||
return val;
|
||
}
|
||
});
|
||
|
||
jQuery.each([ "height", "width" ], function( i, name ) {
|
||
jQuery.cssHooks[ name ] = {
|
||
get: function( elem, computed, extra ) {
|
||
if ( computed ) {
|
||
|
||
// Certain elements can have dimension info if we invisibly show them
|
||
// but it must have a current display style that would benefit
|
||
return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
|
||
jQuery.swap( elem, cssShow, function() {
|
||
return getWidthOrHeight( elem, name, extra );
|
||
}) :
|
||
getWidthOrHeight( elem, name, extra );
|
||
}
|
||
},
|
||
|
||
set: function( elem, value, extra ) {
|
||
var styles = extra && getStyles( elem );
|
||
return setPositiveNumber( elem, value, extra ?
|
||
augmentWidthOrHeight(
|
||
elem,
|
||
name,
|
||
extra,
|
||
jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
|
||
styles
|
||
) : 0
|
||
);
|
||
}
|
||
};
|
||
});
|
||
|
||
// Support: Android 2.3
|
||
jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
|
||
function( elem, computed ) {
|
||
if ( computed ) {
|
||
return jQuery.swap( elem, { "display": "inline-block" },
|
||
curCSS, [ elem, "marginRight" ] );
|
||
}
|
||
}
|
||
);
|
||
|
||
// These hooks are used by animate to expand properties
|
||
jQuery.each({
|
||
margin: "",
|
||
padding: "",
|
||
border: "Width"
|
||
}, function( prefix, suffix ) {
|
||
jQuery.cssHooks[ prefix + suffix ] = {
|
||
expand: function( value ) {
|
||
var i = 0,
|
||
expanded = {},
|
||
|
||
// Assumes a single number if not a string
|
||
parts = typeof value === "string" ? value.split(" ") : [ value ];
|
||
|
||
for ( ; i < 4; i++ ) {
|
||
expanded[ prefix + cssExpand[ i ] + suffix ] =
|
||
parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
|
||
}
|
||
|
||
return expanded;
|
||
}
|
||
};
|
||
|
||
if ( !rmargin.test( prefix ) ) {
|
||
jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
|
||
}
|
||
});
|
||
|
||
jQuery.fn.extend({
|
||
css: function( name, value ) {
|
||
return access( this, function( elem, name, value ) {
|
||
var styles, len,
|
||
map = {},
|
||
i = 0;
|
||
|
||
if ( jQuery.isArray( name ) ) {
|
||
styles = getStyles( elem );
|
||
len = name.length;
|
||
|
||
for ( ; i < len; i++ ) {
|
||
map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
|
||
}
|
||
|
||
return map;
|
||
}
|
||
|
||
return value !== undefined ?
|
||
jQuery.style( elem, name, value ) :
|
||
jQuery.css( elem, name );
|
||
}, name, value, arguments.length > 1 );
|
||
},
|
||
show: function() {
|
||
return showHide( this, true );
|
||
},
|
||
hide: function() {
|
||
return showHide( this );
|
||
},
|
||
toggle: function( state ) {
|
||
if ( typeof state === "boolean" ) {
|
||
return state ? this.show() : this.hide();
|
||
}
|
||
|
||
return this.each(function() {
|
||
if ( isHidden( this ) ) {
|
||
jQuery( this ).show();
|
||
} else {
|
||
jQuery( this ).hide();
|
||
}
|
||
});
|
||
}
|
||
});
|
||
|
||
|
||
function Tween( elem, options, prop, end, easing ) {
|
||
return new Tween.prototype.init( elem, options, prop, end, easing );
|
||
}
|
||
jQuery.Tween = Tween;
|
||
|
||
Tween.prototype = {
|
||
constructor: Tween,
|
||
init: function( elem, options, prop, end, easing, unit ) {
|
||
this.elem = elem;
|
||
this.prop = prop;
|
||
this.easing = easing || "swing";
|
||
this.options = options;
|
||
this.start = this.now = this.cur();
|
||
this.end = end;
|
||
this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
|
||
},
|
||
cur: function() {
|
||
var hooks = Tween.propHooks[ this.prop ];
|
||
|
||
return hooks && hooks.get ?
|
||
hooks.get( this ) :
|
||
Tween.propHooks._default.get( this );
|
||
},
|
||
run: function( percent ) {
|
||
var eased,
|
||
hooks = Tween.propHooks[ this.prop ];
|
||
|
||
if ( this.options.duration ) {
|
||
this.pos = eased = jQuery.easing[ this.easing ](
|
||
percent, this.options.duration * percent, 0, 1, this.options.duration
|
||
);
|
||
} else {
|
||
this.pos = eased = percent;
|
||
}
|
||
this.now = ( this.end - this.start ) * eased + this.start;
|
||
|
||
if ( this.options.step ) {
|
||
this.options.step.call( this.elem, this.now, this );
|
||
}
|
||
|
||
if ( hooks && hooks.set ) {
|
||
hooks.set( this );
|
||
} else {
|
||
Tween.propHooks._default.set( this );
|
||
}
|
||
return this;
|
||
}
|
||
};
|
||
|
||
Tween.prototype.init.prototype = Tween.prototype;
|
||
|
||
Tween.propHooks = {
|
||
_default: {
|
||
get: function( tween ) {
|
||
var result;
|
||
|
||
if ( tween.elem[ tween.prop ] != null &&
|
||
(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
|
||
return tween.elem[ tween.prop ];
|
||
}
|
||
|
||
// Passing an empty string as a 3rd parameter to .css will automatically
|
||
// attempt a parseFloat and fallback to a string if the parse fails.
|
||
// Simple values such as "10px" are parsed to Float;
|
||
// complex values such as "rotate(1rad)" are returned as-is.
|
||
result = jQuery.css( tween.elem, tween.prop, "" );
|
||
// Empty strings, null, undefined and "auto" are converted to 0.
|
||
return !result || result === "auto" ? 0 : result;
|
||
},
|
||
set: function( tween ) {
|
||
// Use step hook for back compat.
|
||
// Use cssHook if its there.
|
||
// Use .style if available and use plain properties where available.
|
||
if ( jQuery.fx.step[ tween.prop ] ) {
|
||
jQuery.fx.step[ tween.prop ]( tween );
|
||
} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
|
||
jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
|
||
} else {
|
||
tween.elem[ tween.prop ] = tween.now;
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
// Support: IE9
|
||
// Panic based approach to setting things on disconnected nodes
|
||
Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
|
||
set: function( tween ) {
|
||
if ( tween.elem.nodeType && tween.elem.parentNode ) {
|
||
tween.elem[ tween.prop ] = tween.now;
|
||
}
|
||
}
|
||
};
|
||
|
||
jQuery.easing = {
|
||
linear: function( p ) {
|
||
return p;
|
||
},
|
||
swing: function( p ) {
|
||
return 0.5 - Math.cos( p * Math.PI ) / 2;
|
||
}
|
||
};
|
||
|
||
jQuery.fx = Tween.prototype.init;
|
||
|
||
// Back Compat <1.8 extension point
|
||
jQuery.fx.step = {};
|
||
|
||
|
||
|
||
|
||
var
|
||
fxNow, timerId,
|
||
rfxtypes = /^(?:toggle|show|hide)$/,
|
||
rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
|
||
rrun = /queueHooks$/,
|
||
animationPrefilters = [ defaultPrefilter ],
|
||
tweeners = {
|
||
"*": [ function( prop, value ) {
|
||
var tween = this.createTween( prop, value ),
|
||
target = tween.cur(),
|
||
parts = rfxnum.exec( value ),
|
||
unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
|
||
|
||
// Starting value computation is required for potential unit mismatches
|
||
start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
|
||
rfxnum.exec( jQuery.css( tween.elem, prop ) ),
|
||
scale = 1,
|
||
maxIterations = 20;
|
||
|
||
if ( start && start[ 3 ] !== unit ) {
|
||
// Trust units reported by jQuery.css
|
||
unit = unit || start[ 3 ];
|
||
|
||
// Make sure we update the tween properties later on
|
||
parts = parts || [];
|
||
|
||
// Iteratively approximate from a nonzero starting point
|
||
start = +target || 1;
|
||
|
||
do {
|
||
// If previous iteration zeroed out, double until we get *something*.
|
||
// Use string for doubling so we don't accidentally see scale as unchanged below
|
||
scale = scale || ".5";
|
||
|
||
// Adjust and apply
|
||
start = start / scale;
|
||
jQuery.style( tween.elem, prop, start + unit );
|
||
|
||
// Update scale, tolerating zero or NaN from tween.cur(),
|
||
// break the loop if scale is unchanged or perfect, or if we've just had enough
|
||
} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
|
||
}
|
||
|
||
// Update tween properties
|
||
if ( parts ) {
|
||
start = tween.start = +start || +target || 0;
|
||
tween.unit = unit;
|
||
// If a +=/-= token was provided, we're doing a relative animation
|
||
tween.end = parts[ 1 ] ?
|
||
start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
|
||
+parts[ 2 ];
|
||
}
|
||
|
||
return tween;
|
||
} ]
|
||
};
|
||
|
||
// Animations created synchronously will run synchronously
|
||
function createFxNow() {
|
||
setTimeout(function() {
|
||
fxNow = undefined;
|
||
});
|
||
return ( fxNow = jQuery.now() );
|
||
}
|
||
|
||
// Generate parameters to create a standard animation
|
||
function genFx( type, includeWidth ) {
|
||
var which,
|
||
i = 0,
|
||
attrs = { height: type };
|
||
|
||
// If we include width, step value is 1 to do all cssExpand values,
|
||
// otherwise step value is 2 to skip over Left and Right
|
||
includeWidth = includeWidth ? 1 : 0;
|
||
for ( ; i < 4 ; i += 2 - includeWidth ) {
|
||
which = cssExpand[ i ];
|
||
attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
|
||
}
|
||
|
||
if ( includeWidth ) {
|
||
attrs.opacity = attrs.width = type;
|
||
}
|
||
|
||
return attrs;
|
||
}
|
||
|
||
function createTween( value, prop, animation ) {
|
||
var tween,
|
||
collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
|
||
index = 0,
|
||
length = collection.length;
|
||
for ( ; index < length; index++ ) {
|
||
if ( (tween = collection[ index ].call( animation, prop, value )) ) {
|
||
|
||
// We're done with this property
|
||
return tween;
|
||
}
|
||
}
|
||
}
|
||
|
||
function defaultPrefilter( elem, props, opts ) {
|
||
/* jshint validthis: true */
|
||
var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
|
||
anim = this,
|
||
orig = {},
|
||
style = elem.style,
|
||
hidden = elem.nodeType && isHidden( elem ),
|
||
dataShow = data_priv.get( elem, "fxshow" );
|
||
|
||
// Handle queue: false promises
|
||
if ( !opts.queue ) {
|
||
hooks = jQuery._queueHooks( elem, "fx" );
|
||
if ( hooks.unqueued == null ) {
|
||
hooks.unqueued = 0;
|
||
oldfire = hooks.empty.fire;
|
||
hooks.empty.fire = function() {
|
||
if ( !hooks.unqueued ) {
|
||
oldfire();
|
||
}
|
||
};
|
||
}
|
||
hooks.unqueued++;
|
||
|
||
anim.always(function() {
|
||
// Ensure the complete handler is called before this completes
|
||
anim.always(function() {
|
||
hooks.unqueued--;
|
||
if ( !jQuery.queue( elem, "fx" ).length ) {
|
||
hooks.empty.fire();
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
// Height/width overflow pass
|
||
if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
|
||
// Make sure that nothing sneaks out
|
||
// Record all 3 overflow attributes because IE9-10 do not
|
||
// change the overflow attribute when overflowX and
|
||
// overflowY are set to the same value
|
||
opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
|
||
|
||
// Set display property to inline-block for height/width
|
||
// animations on inline elements that are having width/height animated
|
||
display = jQuery.css( elem, "display" );
|
||
|
||
// Test default display if display is currently "none"
|
||
checkDisplay = display === "none" ?
|
||
data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
|
||
|
||
if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
|
||
style.display = "inline-block";
|
||
}
|
||
}
|
||
|
||
if ( opts.overflow ) {
|
||
style.overflow = "hidden";
|
||
anim.always(function() {
|
||
style.overflow = opts.overflow[ 0 ];
|
||
style.overflowX = opts.overflow[ 1 ];
|
||
style.overflowY = opts.overflow[ 2 ];
|
||
});
|
||
}
|
||
|
||
// show/hide pass
|
||
for ( prop in props ) {
|
||
value = props[ prop ];
|
||
if ( rfxtypes.exec( value ) ) {
|
||
delete props[ prop ];
|
||
toggle = toggle || value === "toggle";
|
||
if ( value === ( hidden ? "hide" : "show" ) ) {
|
||
|
||
// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
|
||
if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
|
||
hidden = true;
|
||
} else {
|
||
continue;
|
||
}
|
||
}
|
||
orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
|
||
|
||
// Any non-fx value stops us from restoring the original display value
|
||
} else {
|
||
display = undefined;
|
||
}
|
||
}
|
||
|
||
if ( !jQuery.isEmptyObject( orig ) ) {
|
||
if ( dataShow ) {
|
||
if ( "hidden" in dataShow ) {
|
||
hidden = dataShow.hidden;
|
||
}
|
||
} else {
|
||
dataShow = data_priv.access( elem, "fxshow", {} );
|
||
}
|
||
|
||
// Store state if its toggle - enables .stop().toggle() to "reverse"
|
||
if ( toggle ) {
|
||
dataShow.hidden = !hidden;
|
||
}
|
||
if ( hidden ) {
|
||
jQuery( elem ).show();
|
||
} else {
|
||
anim.done(function() {
|
||
jQuery( elem ).hide();
|
||
});
|
||
}
|
||
anim.done(function() {
|
||
var prop;
|
||
|
||
data_priv.remove( elem, "fxshow" );
|
||
for ( prop in orig ) {
|
||
jQuery.style( elem, prop, orig[ prop ] );
|
||
}
|
||
});
|
||
for ( prop in orig ) {
|
||
tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
|
||
|
||
if ( !( prop in dataShow ) ) {
|
||
dataShow[ prop ] = tween.start;
|
||
if ( hidden ) {
|
||
tween.end = tween.start;
|
||
tween.start = prop === "width" || prop === "height" ? 1 : 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
// If this is a noop like .hide().hide(), restore an overwritten display value
|
||
} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
|
||
style.display = display;
|
||
}
|
||
}
|
||
|
||
function propFilter( props, specialEasing ) {
|
||
var index, name, easing, value, hooks;
|
||
|
||
// camelCase, specialEasing and expand cssHook pass
|
||
for ( index in props ) {
|
||
name = jQuery.camelCase( index );
|
||
easing = specialEasing[ name ];
|
||
value = props[ index ];
|
||
if ( jQuery.isArray( value ) ) {
|
||
easing = value[ 1 ];
|
||
value = props[ index ] = value[ 0 ];
|
||
}
|
||
|
||
if ( index !== name ) {
|
||
props[ name ] = value;
|
||
delete props[ index ];
|
||
}
|
||
|
||
hooks = jQuery.cssHooks[ name ];
|
||
if ( hooks && "expand" in hooks ) {
|
||
value = hooks.expand( value );
|
||
delete props[ name ];
|
||
|
||
// Not quite $.extend, this won't overwrite existing keys.
|
||
// Reusing 'index' because we have the correct "name"
|
||
for ( index in value ) {
|
||
if ( !( index in props ) ) {
|
||
props[ index ] = value[ index ];
|
||
specialEasing[ index ] = easing;
|
||
}
|
||
}
|
||
} else {
|
||
specialEasing[ name ] = easing;
|
||
}
|
||
}
|
||
}
|
||
|
||
function Animation( elem, properties, options ) {
|
||
var result,
|
||
stopped,
|
||
index = 0,
|
||
length = animationPrefilters.length,
|
||
deferred = jQuery.Deferred().always( function() {
|
||
// Don't match elem in the :animated selector
|
||
delete tick.elem;
|
||
}),
|
||
tick = function() {
|
||
if ( stopped ) {
|
||
return false;
|
||
}
|
||
var currentTime = fxNow || createFxNow(),
|
||
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
|
||
// Support: Android 2.3
|
||
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
|
||
temp = remaining / animation.duration || 0,
|
||
percent = 1 - temp,
|
||
index = 0,
|
||
length = animation.tweens.length;
|
||
|
||
for ( ; index < length ; index++ ) {
|
||
animation.tweens[ index ].run( percent );
|
||
}
|
||
|
||
deferred.notifyWith( elem, [ animation, percent, remaining ]);
|
||
|
||
if ( percent < 1 && length ) {
|
||
return remaining;
|
||
} else {
|
||
deferred.resolveWith( elem, [ animation ] );
|
||
return false;
|
||
}
|
||
},
|
||
animation = deferred.promise({
|
||
elem: elem,
|
||
props: jQuery.extend( {}, properties ),
|
||
opts: jQuery.extend( true, { specialEasing: {} }, options ),
|
||
originalProperties: properties,
|
||
originalOptions: options,
|
||
startTime: fxNow || createFxNow(),
|
||
duration: options.duration,
|
||
tweens: [],
|
||
createTween: function( prop, end ) {
|
||
var tween = jQuery.Tween( elem, animation.opts, prop, end,
|
||
animation.opts.specialEasing[ prop ] || animation.opts.easing );
|
||
animation.tweens.push( tween );
|
||
return tween;
|
||
},
|
||
stop: function( gotoEnd ) {
|
||
var index = 0,
|
||
// If we are going to the end, we want to run all the tweens
|
||
// otherwise we skip this part
|
||
length = gotoEnd ? animation.tweens.length : 0;
|
||
if ( stopped ) {
|
||
return this;
|
||
}
|
||
stopped = true;
|
||
for ( ; index < length ; index++ ) {
|
||
animation.tweens[ index ].run( 1 );
|
||
}
|
||
|
||
// Resolve when we played the last frame; otherwise, reject
|
||
if ( gotoEnd ) {
|
||
deferred.resolveWith( elem, [ animation, gotoEnd ] );
|
||
} else {
|
||
deferred.rejectWith( elem, [ animation, gotoEnd ] );
|
||
}
|
||
return this;
|
||
}
|
||
}),
|
||
props = animation.props;
|
||
|
||
propFilter( props, animation.opts.specialEasing );
|
||
|
||
for ( ; index < length ; index++ ) {
|
||
result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
|
||
if ( result ) {
|
||
return result;
|
||
}
|
||
}
|
||
|
||
jQuery.map( props, createTween, animation );
|
||
|
||
if ( jQuery.isFunction( animation.opts.start ) ) {
|
||
animation.opts.start.call( elem, animation );
|
||
}
|
||
|
||
jQuery.fx.timer(
|
||
jQuery.extend( tick, {
|
||
elem: elem,
|
||
anim: animation,
|
||
queue: animation.opts.queue
|
||
})
|
||
);
|
||
|
||
// attach callbacks from options
|
||
return animation.progress( animation.opts.progress )
|
||
.done( animation.opts.done, animation.opts.complete )
|
||
.fail( animation.opts.fail )
|
||
.always( animation.opts.always );
|
||
}
|
||
|
||
jQuery.Animation = jQuery.extend( Animation, {
|
||
|
||
tweener: function( props, callback ) {
|
||
if ( jQuery.isFunction( props ) ) {
|
||
callback = props;
|
||
props = [ "*" ];
|
||
} else {
|
||
props = props.split(" ");
|
||
}
|
||
|
||
var prop,
|
||
index = 0,
|
||
length = props.length;
|
||
|
||
for ( ; index < length ; index++ ) {
|
||
prop = props[ index ];
|
||
tweeners[ prop ] = tweeners[ prop ] || [];
|
||
tweeners[ prop ].unshift( callback );
|
||
}
|
||
},
|
||
|
||
prefilter: function( callback, prepend ) {
|
||
if ( prepend ) {
|
||
animationPrefilters.unshift( callback );
|
||
} else {
|
||
animationPrefilters.push( callback );
|
||
}
|
||
}
|
||
});
|
||
|
||
jQuery.speed = function( speed, easing, fn ) {
|
||
var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
|
||
complete: fn || !fn && easing ||
|
||
jQuery.isFunction( speed ) && speed,
|
||
duration: speed,
|
||
easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
|
||
};
|
||
|
||
opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
|
||
opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
|
||
|
||
// Normalize opt.queue - true/undefined/null -> "fx"
|
||
if ( opt.queue == null || opt.queue === true ) {
|
||
opt.queue = "fx";
|
||
}
|
||
|
||
// Queueing
|
||
opt.old = opt.complete;
|
||
|
||
opt.complete = function() {
|
||
if ( jQuery.isFunction( opt.old ) ) {
|
||
opt.old.call( this );
|
||
}
|
||
|
||
if ( opt.queue ) {
|
||
jQuery.dequeue( this, opt.queue );
|
||
}
|
||
};
|
||
|
||
return opt;
|
||
};
|
||
|
||
jQuery.fn.extend({
|
||
fadeTo: function( speed, to, easing, callback ) {
|
||
|
||
// Show any hidden elements after setting opacity to 0
|
||
return this.filter( isHidden ).css( "opacity", 0 ).show()
|
||
|
||
// Animate to the value specified
|
||
.end().animate({ opacity: to }, speed, easing, callback );
|
||
},
|
||
animate: function( prop, speed, easing, callback ) {
|
||
var empty = jQuery.isEmptyObject( prop ),
|
||
optall = jQuery.speed( speed, easing, callback ),
|
||
doAnimation = function() {
|
||
// Operate on a copy of prop so per-property easing won't be lost
|
||
var anim = Animation( this, jQuery.extend( {}, prop ), optall );
|
||
|
||
// Empty animations, or finishing resolves immediately
|
||
if ( empty || data_priv.get( this, "finish" ) ) {
|
||
anim.stop( true );
|
||
}
|
||
};
|
||
doAnimation.finish = doAnimation;
|
||
|
||
return empty || optall.queue === false ?
|
||
this.each( doAnimation ) :
|
||
this.queue( optall.queue, doAnimation );
|
||
},
|
||
stop: function( type, clearQueue, gotoEnd ) {
|
||
var stopQueue = function( hooks ) {
|
||
var stop = hooks.stop;
|
||
delete hooks.stop;
|
||
stop( gotoEnd );
|
||
};
|
||
|
||
if ( typeof type !== "string" ) {
|
||
gotoEnd = clearQueue;
|
||
clearQueue = type;
|
||
type = undefined;
|
||
}
|
||
if ( clearQueue && type !== false ) {
|
||
this.queue( type || "fx", [] );
|
||
}
|
||
|
||
return this.each(function() {
|
||
var dequeue = true,
|
||
index = type != null && type + "queueHooks",
|
||
timers = jQuery.timers,
|
||
data = data_priv.get( this );
|
||
|
||
if ( index ) {
|
||
if ( data[ index ] && data[ index ].stop ) {
|
||
stopQueue( data[ index ] );
|
||
}
|
||
} else {
|
||
for ( index in data ) {
|
||
if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
|
||
stopQueue( data[ index ] );
|
||
}
|
||
}
|
||
}
|
||
|
||
for ( index = timers.length; index--; ) {
|
||
if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
|
||
timers[ index ].anim.stop( gotoEnd );
|
||
dequeue = false;
|
||
timers.splice( index, 1 );
|
||
}
|
||
}
|
||
|
||
// Start the next in the queue if the last step wasn't forced.
|
||
// Timers currently will call their complete callbacks, which
|
||
// will dequeue but only if they were gotoEnd.
|
||
if ( dequeue || !gotoEnd ) {
|
||
jQuery.dequeue( this, type );
|
||
}
|
||
});
|
||
},
|
||
finish: function( type ) {
|
||
if ( type !== false ) {
|
||
type = type || "fx";
|
||
}
|
||
return this.each(function() {
|
||
var index,
|
||
data = data_priv.get( this ),
|
||
queue = data[ type + "queue" ],
|
||
hooks = data[ type + "queueHooks" ],
|
||
timers = jQuery.timers,
|
||
length = queue ? queue.length : 0;
|
||
|
||
// Enable finishing flag on private data
|
||
data.finish = true;
|
||
|
||
// Empty the queue first
|
||
jQuery.queue( this, type, [] );
|
||
|
||
if ( hooks && hooks.stop ) {
|
||
hooks.stop.call( this, true );
|
||
}
|
||
|
||
// Look for any active animations, and finish them
|
||
for ( index = timers.length; index--; ) {
|
||
if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
|
||
timers[ index ].anim.stop( true );
|
||
timers.splice( index, 1 );
|
||
}
|
||
}
|
||
|
||
// Look for any animations in the old queue and finish them
|
||
for ( index = 0; index < length; index++ ) {
|
||
if ( queue[ index ] && queue[ index ].finish ) {
|
||
queue[ index ].finish.call( this );
|
||
}
|
||
}
|
||
|
||
// Turn off finishing flag
|
||
delete data.finish;
|
||
});
|
||
}
|
||
});
|
||
|
||
jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
|
||
var cssFn = jQuery.fn[ name ];
|
||
jQuery.fn[ name ] = function( speed, easing, callback ) {
|
||
return speed == null || typeof speed === "boolean" ?
|
||
cssFn.apply( this, arguments ) :
|
||
this.animate( genFx( name, true ), speed, easing, callback );
|
||
};
|
||
});
|
||
|
||
// Generate shortcuts for custom animations
|
||
jQuery.each({
|
||
slideDown: genFx("show"),
|
||
slideUp: genFx("hide"),
|
||
slideToggle: genFx("toggle"),
|
||
fadeIn: { opacity: "show" },
|
||
fadeOut: { opacity: "hide" },
|
||
fadeToggle: { opacity: "toggle" }
|
||
}, function( name, props ) {
|
||
jQuery.fn[ name ] = function( speed, easing, callback ) {
|
||
return this.animate( props, speed, easing, callback );
|
||
};
|
||
});
|
||
|
||
jQuery.timers = [];
|
||
jQuery.fx.tick = function() {
|
||
var timer,
|
||
i = 0,
|
||
timers = jQuery.timers;
|
||
|
||
fxNow = jQuery.now();
|
||
|
||
for ( ; i < timers.length; i++ ) {
|
||
timer = timers[ i ];
|
||
// Checks the timer has not already been removed
|
||
if ( !timer() && timers[ i ] === timer ) {
|
||
timers.splice( i--, 1 );
|
||
}
|
||
}
|
||
|
||
if ( !timers.length ) {
|
||
jQuery.fx.stop();
|
||
}
|
||
fxNow = undefined;
|
||
};
|
||
|
||
jQuery.fx.timer = function( timer ) {
|
||
jQuery.timers.push( timer );
|
||
if ( timer() ) {
|
||
jQuery.fx.start();
|
||
} else {
|
||
jQuery.timers.pop();
|
||
}
|
||
};
|
||
|
||
jQuery.fx.interval = 13;
|
||
|
||
jQuery.fx.start = function() {
|
||
if ( !timerId ) {
|
||
timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
|
||
}
|
||
};
|
||
|
||
jQuery.fx.stop = function() {
|
||
clearInterval( timerId );
|
||
timerId = null;
|
||
};
|
||
|
||
jQuery.fx.speeds = {
|
||
slow: 600,
|
||
fast: 200,
|
||
// Default speed
|
||
_default: 400
|
||
};
|
||
|
||
|
||
// Based off of the plugin by Clint Helfers, with permission.
|
||
// http://blindsignals.com/index.php/2009/07/jquery-delay/
|
||
jQuery.fn.delay = function( time, type ) {
|
||
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
|
||
type = type || "fx";
|
||
|
||
return this.queue( type, function( next, hooks ) {
|
||
var timeout = setTimeout( next, time );
|
||
hooks.stop = function() {
|
||
clearTimeout( timeout );
|
||
};
|
||
});
|
||
};
|
||
|
||
|
||
(function() {
|
||
var input = document.createElement( "input" ),
|
||
select = document.createElement( "select" ),
|
||
opt = select.appendChild( document.createElement( "option" ) );
|
||
|
||
input.type = "checkbox";
|
||
|
||
// Support: iOS<=5.1, Android<=4.2+
|
||
// Default value for a checkbox should be "on"
|
||
support.checkOn = input.value !== "";
|
||
|
||
// Support: IE<=11+
|
||
// Must access selectedIndex to make default options select
|
||
support.optSelected = opt.selected;
|
||
|
||
// Support: Android<=2.3
|
||
// Options inside disabled selects are incorrectly marked as disabled
|
||
select.disabled = true;
|
||
support.optDisabled = !opt.disabled;
|
||
|
||
// Support: IE<=11+
|
||
// An input loses its value after becoming a radio
|
||
input = document.createElement( "input" );
|
||
input.value = "t";
|
||
input.type = "radio";
|
||
support.radioValue = input.value === "t";
|
||
})();
|
||
|
||
|
||
var nodeHook, boolHook,
|
||
attrHandle = jQuery.expr.attrHandle;
|
||
|
||
jQuery.fn.extend({
|
||
attr: function( name, value ) {
|
||
return access( this, jQuery.attr, name, value, arguments.length > 1 );
|
||
},
|
||
|
||
removeAttr: function( name ) {
|
||
return this.each(function() {
|
||
jQuery.removeAttr( this, name );
|
||
});
|
||
}
|
||
});
|
||
|
||
jQuery.extend({
|
||
attr: function( elem, name, value ) {
|
||
var hooks, ret,
|
||
nType = elem.nodeType;
|
||
|
||
// don't get/set attributes on text, comment and attribute nodes
|
||
if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
|
||
return;
|
||
}
|
||
|
||
// Fallback to prop when attributes are not supported
|
||
if ( typeof elem.getAttribute === strundefined ) {
|
||
return jQuery.prop( elem, name, value );
|
||
}
|
||
|
||
// All attributes are lowercase
|
||
// Grab necessary hook if one is defined
|
||
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
|
||
name = name.toLowerCase();
|
||
hooks = jQuery.attrHooks[ name ] ||
|
||
( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
|
||
}
|
||
|
||
if ( value !== undefined ) {
|
||
|
||
if ( value === null ) {
|
||
jQuery.removeAttr( elem, name );
|
||
|
||
} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
|
||
return ret;
|
||
|
||
} else {
|
||
elem.setAttribute( name, value + "" );
|
||
return value;
|
||
}
|
||
|
||
} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
|
||
return ret;
|
||
|
||
} else {
|
||
ret = jQuery.find.attr( elem, name );
|
||
|
||
// Non-existent attributes return null, we normalize to undefined
|
||
return ret == null ?
|
||
undefined :
|
||
ret;
|
||
}
|
||
},
|
||
|
||
removeAttr: function( elem, value ) {
|
||
var name, propName,
|
||
i = 0,
|
||
attrNames = value && value.match( rnotwhite );
|
||
|
||
if ( attrNames && elem.nodeType === 1 ) {
|
||
while ( (name = attrNames[i++]) ) {
|
||
propName = jQuery.propFix[ name ] || name;
|
||
|
||
// Boolean attributes get special treatment (#10870)
|
||
if ( jQuery.expr.match.bool.test( name ) ) {
|
||
// Set corresponding property to false
|
||
elem[ propName ] = false;
|
||
}
|
||
|
||
elem.removeAttribute( name );
|
||
}
|
||
}
|
||
},
|
||
|
||
attrHooks: {
|
||
type: {
|
||
set: function( elem, value ) {
|
||
if ( !support.radioValue && value === "radio" &&
|
||
jQuery.nodeName( elem, "input" ) ) {
|
||
var val = elem.value;
|
||
elem.setAttribute( "type", value );
|
||
if ( val ) {
|
||
elem.value = val;
|
||
}
|
||
return value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
// Hooks for boolean attributes
|
||
boolHook = {
|
||
set: function( elem, value, name ) {
|
||
if ( value === false ) {
|
||
// Remove boolean attributes when set to false
|
||
jQuery.removeAttr( elem, name );
|
||
} else {
|
||
elem.setAttribute( name, name );
|
||
}
|
||
return name;
|
||
}
|
||
};
|
||
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
|
||
var getter = attrHandle[ name ] || jQuery.find.attr;
|
||
|
||
attrHandle[ name ] = function( elem, name, isXML ) {
|
||
var ret, handle;
|
||
if ( !isXML ) {
|
||
// Avoid an infinite loop by temporarily removing this function from the getter
|
||
handle = attrHandle[ name ];
|
||
attrHandle[ name ] = ret;
|
||
ret = getter( elem, name, isXML ) != null ?
|
||
name.toLowerCase() :
|
||
null;
|
||
attrHandle[ name ] = handle;
|
||
}
|
||
return ret;
|
||
};
|
||
});
|
||
|
||
|
||
|
||
|
||
var rfocusable = /^(?:input|select|textarea|button)$/i;
|
||
|
||
jQuery.fn.extend({
|
||
prop: function( name, value ) {
|
||
return access( this, jQuery.prop, name, value, arguments.length > 1 );
|
||
},
|
||
|
||
removeProp: function( name ) {
|
||
return this.each(function() {
|
||
delete this[ jQuery.propFix[ name ] || name ];
|
||
});
|
||
}
|
||
});
|
||
|
||
jQuery.extend({
|
||
propFix: {
|
||
"for": "htmlFor",
|
||
"class": "className"
|
||
},
|
||
|
||
prop: function( elem, name, value ) {
|
||
var ret, hooks, notxml,
|
||
nType = elem.nodeType;
|
||
|
||
// Don't get/set properties on text, comment and attribute nodes
|
||
if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
|
||
return;
|
||
}
|
||
|
||
notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
|
||
|
||
if ( notxml ) {
|
||
// Fix name and attach hooks
|
||
name = jQuery.propFix[ name ] || name;
|
||
hooks = jQuery.propHooks[ name ];
|
||
}
|
||
|
||
if ( value !== undefined ) {
|
||
return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
|
||
ret :
|
||
( elem[ name ] = value );
|
||
|
||
} else {
|
||
return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
|
||
ret :
|
||
elem[ name ];
|
||
}
|
||
},
|
||
|
||
propHooks: {
|
||
tabIndex: {
|
||
get: function( elem ) {
|
||
return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
|
||
elem.tabIndex :
|
||
-1;
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
if ( !support.optSelected ) {
|
||
jQuery.propHooks.selected = {
|
||
get: function( elem ) {
|
||
var parent = elem.parentNode;
|
||
if ( parent && parent.parentNode ) {
|
||
parent.parentNode.selectedIndex;
|
||
}
|
||
return null;
|
||
}
|
||
};
|
||
}
|
||
|
||
jQuery.each([
|
||
"tabIndex",
|
||
"readOnly",
|
||
"maxLength",
|
||
"cellSpacing",
|
||
"cellPadding",
|
||
"rowSpan",
|
||
"colSpan",
|
||
"useMap",
|
||
"frameBorder",
|
||
"contentEditable"
|
||
], function() {
|
||
jQuery.propFix[ this.toLowerCase() ] = this;
|
||
});
|
||
|
||
|
||
|
||
|
||
var rclass = /[\t\r\n\f]/g;
|
||
|
||
jQuery.fn.extend({
|
||
addClass: function( value ) {
|
||
var classes, elem, cur, clazz, j, finalValue,
|
||
proceed = typeof value === "string" && value,
|
||
i = 0,
|
||
len = this.length;
|
||
|
||
if ( jQuery.isFunction( value ) ) {
|
||
return this.each(function( j ) {
|
||
jQuery( this ).addClass( value.call( this, j, this.className ) );
|
||
});
|
||
}
|
||
|
||
if ( proceed ) {
|
||
// The disjunction here is for better compressibility (see removeClass)
|
||
classes = ( value || "" ).match( rnotwhite ) || [];
|
||
|
||
for ( ; i < len; i++ ) {
|
||
elem = this[ i ];
|
||
cur = elem.nodeType === 1 && ( elem.className ?
|
||
( " " + elem.className + " " ).replace( rclass, " " ) :
|
||
" "
|
||
);
|
||
|
||
if ( cur ) {
|
||
j = 0;
|
||
while ( (clazz = classes[j++]) ) {
|
||
if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
|
||
cur += clazz + " ";
|
||
}
|
||
}
|
||
|
||
// only assign if different to avoid unneeded rendering.
|
||
finalValue = jQuery.trim( cur );
|
||
if ( elem.className !== finalValue ) {
|
||
elem.className = finalValue;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return this;
|
||
},
|
||
|
||
removeClass: function( value ) {
|
||
var classes, elem, cur, clazz, j, finalValue,
|
||
proceed = arguments.length === 0 || typeof value === "string" && value,
|
||
i = 0,
|
||
len = this.length;
|
||
|
||
if ( jQuery.isFunction( value ) ) {
|
||
return this.each(function( j ) {
|
||
jQuery( this ).removeClass( value.call( this, j, this.className ) );
|
||
});
|
||
}
|
||
if ( proceed ) {
|
||
classes = ( value || "" ).match( rnotwhite ) || [];
|
||
|
||
for ( ; i < len; i++ ) {
|
||
elem = this[ i ];
|
||
// This expression is here for better compressibility (see addClass)
|
||
cur = elem.nodeType === 1 && ( elem.className ?
|
||
( " " + elem.className + " " ).replace( rclass, " " ) :
|
||
""
|
||
);
|
||
|
||
if ( cur ) {
|
||
j = 0;
|
||
while ( (clazz = classes[j++]) ) {
|
||
// Remove *all* instances
|
||
while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
|
||
cur = cur.replace( " " + clazz + " ", " " );
|
||
}
|
||
}
|
||
|
||
// Only assign if different to avoid unneeded rendering.
|
||
finalValue = value ? jQuery.trim( cur ) : "";
|
||
if ( elem.className !== finalValue ) {
|
||
elem.className = finalValue;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return this;
|
||
},
|
||
|
||
toggleClass: function( value, stateVal ) {
|
||
var type = typeof value;
|
||
|
||
if ( typeof stateVal === "boolean" && type === "string" ) {
|
||
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
||
}
|
||
|
||
if ( jQuery.isFunction( value ) ) {
|
||
return this.each(function( i ) {
|
||
jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
|
||
});
|
||
}
|
||
|
||
return this.each(function() {
|
||
if ( type === "string" ) {
|
||
// Toggle individual class names
|
||
var className,
|
||
i = 0,
|
||
self = jQuery( this ),
|
||
classNames = value.match( rnotwhite ) || [];
|
||
|
||
while ( (className = classNames[ i++ ]) ) {
|
||
// Check each className given, space separated list
|
||
if ( self.hasClass( className ) ) {
|
||
self.removeClass( className );
|
||
} else {
|
||
self.addClass( className );
|
||
}
|
||
}
|
||
|
||
// Toggle whole class name
|
||
} else if ( type === strundefined || type === "boolean" ) {
|
||
if ( this.className ) {
|
||
// store className if set
|
||
data_priv.set( this, "__className__", this.className );
|
||
}
|
||
|
||
// If the element has a class name or if we're passed `false`,
|
||
// then remove the whole classname (if there was one, the above saved it).
|
||
// Otherwise bring back whatever was previously saved (if anything),
|
||
// falling back to the empty string if nothing was stored.
|
||
this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
|
||
}
|
||
});
|
||
},
|
||
|
||
hasClass: function( selector ) {
|
||
var className = " " + selector + " ",
|
||
i = 0,
|
||
l = this.length;
|
||
for ( ; i < l; i++ ) {
|
||
if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
|
||
return true;
|
||
}
|
||
}
|
||
|
||
return false;
|
||
}
|
||
});
|
||
|
||
|
||
|
||
|
||
var rreturn = /\r/g;
|
||
|
||
jQuery.fn.extend({
|
||
val: function( value ) {
|
||
var hooks, ret, isFunction,
|
||
elem = this[0];
|
||
|
||
if ( !arguments.length ) {
|
||
if ( elem ) {
|
||
hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
|
||
|
||
if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
|
||
return ret;
|
||
}
|
||
|
||
ret = elem.value;
|
||
|
||
return typeof ret === "string" ?
|
||
// Handle most common string cases
|
||
ret.replace(rreturn, "") :
|
||
// Handle cases where value is null/undef or number
|
||
ret == null ? "" : ret;
|
||
}
|
||
|
||
return;
|
||
}
|
||
|
||
isFunction = jQuery.isFunction( value );
|
||
|
||
return this.each(function( i ) {
|
||
var val;
|
||
|
||
if ( this.nodeType !== 1 ) {
|
||
return;
|
||
}
|
||
|
||
if ( isFunction ) {
|
||
val = value.call( this, i, jQuery( this ).val() );
|
||
} else {
|
||
val = value;
|
||
}
|
||
|
||
// Treat null/undefined as ""; convert numbers to string
|
||
if ( val == null ) {
|
||
val = "";
|
||
|
||
} else if ( typeof val === "number" ) {
|
||
val += "";
|
||
|
||
} else if ( jQuery.isArray( val ) ) {
|
||
val = jQuery.map( val, function( value ) {
|
||
return value == null ? "" : value + "";
|
||
});
|
||
}
|
||
|
||
hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
|
||
|
||
// If set returns undefined, fall back to normal setting
|
||
if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
|
||
this.value = val;
|
||
}
|
||
});
|
||
}
|
||
});
|
||
|
||
jQuery.extend({
|
||
valHooks: {
|
||
option: {
|
||
get: function( elem ) {
|
||
var val = jQuery.find.attr( elem, "value" );
|
||
return val != null ?
|
||
val :
|
||
// Support: IE10-11+
|
||
// option.text throws exceptions (#14686, #14858)
|
||
jQuery.trim( jQuery.text( elem ) );
|
||
}
|
||
},
|
||
select: {
|
||
get: function( elem ) {
|
||
var value, option,
|
||
options = elem.options,
|
||
index = elem.selectedIndex,
|
||
one = elem.type === "select-one" || index < 0,
|
||
values = one ? null : [],
|
||
max = one ? index + 1 : options.length,
|
||
i = index < 0 ?
|
||
max :
|
||
one ? index : 0;
|
||
|
||
// Loop through all the selected options
|
||
for ( ; i < max; i++ ) {
|
||
option = options[ i ];
|
||
|
||
// IE6-9 doesn't update selected after form reset (#2551)
|
||
if ( ( option.selected || i === index ) &&
|
||
// Don't return options that are disabled or in a disabled optgroup
|
||
( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
|
||
( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
|
||
|
||
// Get the specific value for the option
|
||
value = jQuery( option ).val();
|
||
|
||
// We don't need an array for one selects
|
||
if ( one ) {
|
||
return value;
|
||
}
|
||
|
||
// Multi-Selects return an array
|
||
values.push( value );
|
||
}
|
||
}
|
||
|
||
return values;
|
||
},
|
||
|
||
set: function( elem, value ) {
|
||
var optionSet, option,
|
||
options = elem.options,
|
||
values = jQuery.makeArray( value ),
|
||
i = options.length;
|
||
|
||
while ( i-- ) {
|
||
option = options[ i ];
|
||
if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
|
||
optionSet = true;
|
||
}
|
||
}
|
||
|
||
// Force browsers to behave consistently when non-matching value is set
|
||
if ( !optionSet ) {
|
||
elem.selectedIndex = -1;
|
||
}
|
||
return values;
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
// Radios and checkboxes getter/setter
|
||
jQuery.each([ "radio", "checkbox" ], function() {
|
||
jQuery.valHooks[ this ] = {
|
||
set: function( elem, value ) {
|
||
if ( jQuery.isArray( value ) ) {
|
||
return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
|
||
}
|
||
}
|
||
};
|
||
if ( !support.checkOn ) {
|
||
jQuery.valHooks[ this ].get = function( elem ) {
|
||
return elem.getAttribute("value") === null ? "on" : elem.value;
|
||
};
|
||
}
|
||
});
|
||
|
||
|
||
|
||
|
||
// Return jQuery for attributes-only inclusion
|
||
|
||
|
||
jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
|
||
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
||
"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
|
||
|
||
// Handle event binding
|
||
jQuery.fn[ name ] = function( data, fn ) {
|
||
return arguments.length > 0 ?
|
||
this.on( name, null, data, fn ) :
|
||
this.trigger( name );
|
||
};
|
||
});
|
||
|
||
jQuery.fn.extend({
|
||
hover: function( fnOver, fnOut ) {
|
||
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
|
||
},
|
||
|
||
bind: function( types, data, fn ) {
|
||
return this.on( types, null, data, fn );
|
||
},
|
||
unbind: function( types, fn ) {
|
||
return this.off( types, null, fn );
|
||
},
|
||
|
||
delegate: function( selector, types, data, fn ) {
|
||
return this.on( types, selector, data, fn );
|
||
},
|
||
undelegate: function( selector, types, fn ) {
|
||
// ( namespace ) or ( selector, types [, fn] )
|
||
return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
|
||
}
|
||
});
|
||
|
||
|
||
var nonce = jQuery.now();
|
||
|
||
var rquery = (/\?/);
|
||
|
||
|
||
|
||
// Support: Android 2.3
|
||
// Workaround failure to string-cast null input
|
||
jQuery.parseJSON = function( data ) {
|
||
return JSON.parse( data + "" );
|
||
};
|
||
|
||
|
||
// Cross-browser xml parsing
|
||
jQuery.parseXML = function( data ) {
|
||
var xml, tmp;
|
||
if ( !data || typeof data !== "string" ) {
|
||
return null;
|
||
}
|
||
|
||
// Support: IE9
|
||
try {
|
||
tmp = new DOMParser();
|
||
xml = tmp.parseFromString( data, "text/xml" );
|
||
} catch ( e ) {
|
||
xml = undefined;
|
||
}
|
||
|
||
if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
|
||
jQuery.error( "Invalid XML: " + data );
|
||
}
|
||
return xml;
|
||
};
|
||
|
||
|
||
var
|
||
rhash = /#.*$/,
|
||
rts = /([?&])_=[^&]*/,
|
||
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
|
||
// #7653, #8125, #8152: local protocol detection
|
||
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
|
||
rnoContent = /^(?:GET|HEAD)$/,
|
||
rprotocol = /^\/\//,
|
||
rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
|
||
|
||
/* Prefilters
|
||
* 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
|
||
* 2) These are called:
|
||
* - BEFORE asking for a transport
|
||
* - AFTER param serialization (s.data is a string if s.processData is true)
|
||
* 3) key is the dataType
|
||
* 4) the catchall symbol "*" can be used
|
||
* 5) execution will start with transport dataType and THEN continue down to "*" if needed
|
||
*/
|
||
prefilters = {},
|
||
|
||
/* Transports bindings
|
||
* 1) key is the dataType
|
||
* 2) the catchall symbol "*" can be used
|
||
* 3) selection will start with transport dataType and THEN go to "*" if needed
|
||
*/
|
||
transports = {},
|
||
|
||
// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
|
||
allTypes = "*/".concat( "*" ),
|
||
|
||
// Document location
|
||
ajaxLocation = window.location.href,
|
||
|
||
// Segment location into parts
|
||
ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
|
||
|
||
// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
|
||
function addToPrefiltersOrTransports( structure ) {
|
||
|
||
// dataTypeExpression is optional and defaults to "*"
|
||
return function( dataTypeExpression, func ) {
|
||
|
||
if ( typeof dataTypeExpression !== "string" ) {
|
||
func = dataTypeExpression;
|
||
dataTypeExpression = "*";
|
||
}
|
||
|
||
var dataType,
|
||
i = 0,
|
||
dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
|
||
|
||
if ( jQuery.isFunction( func ) ) {
|
||
// For each dataType in the dataTypeExpression
|
||
while ( (dataType = dataTypes[i++]) ) {
|
||
// Prepend if requested
|
||
if ( dataType[0] === "+" ) {
|
||
dataType = dataType.slice( 1 ) || "*";
|
||
(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
|
||
|
||
// Otherwise append
|
||
} else {
|
||
(structure[ dataType ] = structure[ dataType ] || []).push( func );
|
||
}
|
||
}
|
||
}
|
||
};
|
||
}
|
||
|
||
// Base inspection function for prefilters and transports
|
||
function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
|
||
|
||
var inspected = {},
|
||
seekingTransport = ( structure === transports );
|
||
|
||
function inspect( dataType ) {
|
||
var selected;
|
||
inspected[ dataType ] = true;
|
||
jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
|
||
var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
|
||
if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
|
||
options.dataTypes.unshift( dataTypeOrTransport );
|
||
inspect( dataTypeOrTransport );
|
||
return false;
|
||
} else if ( seekingTransport ) {
|
||
return !( selected = dataTypeOrTransport );
|
||
}
|
||
});
|
||
return selected;
|
||
}
|
||
|
||
return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
|
||
}
|
||
|
||
// A special extend for ajax options
|
||
// that takes "flat" options (not to be deep extended)
|
||
// Fixes #9887
|
||
function ajaxExtend( target, src ) {
|
||
var key, deep,
|
||
flatOptions = jQuery.ajaxSettings.flatOptions || {};
|
||
|
||
for ( key in src ) {
|
||
if ( src[ key ] !== undefined ) {
|
||
( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
|
||
}
|
||
}
|
||
if ( deep ) {
|
||
jQuery.extend( true, target, deep );
|
||
}
|
||
|
||
return target;
|
||
}
|
||
|
||
/* Handles responses to an ajax request:
|
||
* - finds the right dataType (mediates between content-type and expected dataType)
|
||
* - returns the corresponding response
|
||
*/
|
||
function ajaxHandleResponses( s, jqXHR, responses ) {
|
||
|
||
var ct, type, finalDataType, firstDataType,
|
||
contents = s.contents,
|
||
dataTypes = s.dataTypes;
|
||
|
||
// Remove auto dataType and get content-type in the process
|
||
while ( dataTypes[ 0 ] === "*" ) {
|
||
dataTypes.shift();
|
||
if ( ct === undefined ) {
|
||
ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
|
||
}
|
||
}
|
||
|
||
// Check if we're dealing with a known content-type
|
||
if ( ct ) {
|
||
for ( type in contents ) {
|
||
if ( contents[ type ] && contents[ type ].test( ct ) ) {
|
||
dataTypes.unshift( type );
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
// Check to see if we have a response for the expected dataType
|
||
if ( dataTypes[ 0 ] in responses ) {
|
||
finalDataType = dataTypes[ 0 ];
|
||
} else {
|
||
// Try convertible dataTypes
|
||
for ( type in responses ) {
|
||
if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
|
||
finalDataType = type;
|
||
break;
|
||
}
|
||
if ( !firstDataType ) {
|
||
firstDataType = type;
|
||
}
|
||
}
|
||
// Or just use first one
|
||
finalDataType = finalDataType || firstDataType;
|
||
}
|
||
|
||
// If we found a dataType
|
||
// We add the dataType to the list if needed
|
||
// and return the corresponding response
|
||
if ( finalDataType ) {
|
||
if ( finalDataType !== dataTypes[ 0 ] ) {
|
||
dataTypes.unshift( finalDataType );
|
||
}
|
||
return responses[ finalDataType ];
|
||
}
|
||
}
|
||
|
||
/* Chain conversions given the request and the original response
|
||
* Also sets the responseXXX fields on the jqXHR instance
|
||
*/
|
||
function ajaxConvert( s, response, jqXHR, isSuccess ) {
|
||
var conv2, current, conv, tmp, prev,
|
||
converters = {},
|
||
// Work with a copy of dataTypes in case we need to modify it for conversion
|
||
dataTypes = s.dataTypes.slice();
|
||
|
||
// Create converters map with lowercased keys
|
||
if ( dataTypes[ 1 ] ) {
|
||
for ( conv in s.converters ) {
|
||
converters[ conv.toLowerCase() ] = s.converters[ conv ];
|
||
}
|
||
}
|
||
|
||
current = dataTypes.shift();
|
||
|
||
// Convert to each sequential dataType
|
||
while ( current ) {
|
||
|
||
if ( s.responseFields[ current ] ) {
|
||
jqXHR[ s.responseFields[ current ] ] = response;
|
||
}
|
||
|
||
// Apply the dataFilter if provided
|
||
if ( !prev && isSuccess && s.dataFilter ) {
|
||
response = s.dataFilter( response, s.dataType );
|
||
}
|
||
|
||
prev = current;
|
||
current = dataTypes.shift();
|
||
|
||
if ( current ) {
|
||
|
||
// There's only work to do if current dataType is non-auto
|
||
if ( current === "*" ) {
|
||
|
||
current = prev;
|
||
|
||
// Convert response if prev dataType is non-auto and differs from current
|
||
} else if ( prev !== "*" && prev !== current ) {
|
||
|
||
// Seek a direct converter
|
||
conv = converters[ prev + " " + current ] || converters[ "* " + current ];
|
||
|
||
// If none found, seek a pair
|
||
if ( !conv ) {
|
||
for ( conv2 in converters ) {
|
||
|
||
// If conv2 outputs current
|
||
tmp = conv2.split( " " );
|
||
if ( tmp[ 1 ] === current ) {
|
||
|
||
// If prev can be converted to accepted input
|
||
conv = converters[ prev + " " + tmp[ 0 ] ] ||
|
||
converters[ "* " + tmp[ 0 ] ];
|
||
if ( conv ) {
|
||
// Condense equivalence converters
|
||
if ( conv === true ) {
|
||
conv = converters[ conv2 ];
|
||
|
||
// Otherwise, insert the intermediate dataType
|
||
} else if ( converters[ conv2 ] !== true ) {
|
||
current = tmp[ 0 ];
|
||
dataTypes.unshift( tmp[ 1 ] );
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Apply converter (if not an equivalence)
|
||
if ( conv !== true ) {
|
||
|
||
// Unless errors are allowed to bubble, catch and return them
|
||
if ( conv && s[ "throws" ] ) {
|
||
response = conv( response );
|
||
} else {
|
||
try {
|
||
response = conv( response );
|
||
} catch ( e ) {
|
||
return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return { state: "success", data: response };
|
||
}
|
||
|
||
jQuery.extend({
|
||
|
||
// Counter for holding the number of active queries
|
||
active: 0,
|
||
|
||
// Last-Modified header cache for next request
|
||
lastModified: {},
|
||
etag: {},
|
||
|
||
ajaxSettings: {
|
||
url: ajaxLocation,
|
||
type: "GET",
|
||
isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
|
||
global: true,
|
||
processData: true,
|
||
async: true,
|
||
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
|
||
/*
|
||
timeout: 0,
|
||
data: null,
|
||
dataType: null,
|
||
username: null,
|
||
password: null,
|
||
cache: null,
|
||
throws: false,
|
||
traditional: false,
|
||
headers: {},
|
||
*/
|
||
|
||
accepts: {
|
||
"*": allTypes,
|
||
text: "text/plain",
|
||
html: "text/html",
|
||
xml: "application/xml, text/xml",
|
||
json: "application/json, text/javascript"
|
||
},
|
||
|
||
contents: {
|
||
xml: /xml/,
|
||
html: /html/,
|
||
json: /json/
|
||
},
|
||
|
||
responseFields: {
|
||
xml: "responseXML",
|
||
text: "responseText",
|
||
json: "responseJSON"
|
||
},
|
||
|
||
// Data converters
|
||
// Keys separate source (or catchall "*") and destination types with a single space
|
||
converters: {
|
||
|
||
// Convert anything to text
|
||
"* text": String,
|
||
|
||
// Text to html (true = no transformation)
|
||
"text html": true,
|
||
|
||
// Evaluate text as a json expression
|
||
"text json": jQuery.parseJSON,
|
||
|
||
// Parse text as xml
|
||
"text xml": jQuery.parseXML
|
||
},
|
||
|
||
// For options that shouldn't be deep extended:
|
||
// you can add your own custom options here if
|
||
// and when you create one that shouldn't be
|
||
// deep extended (see ajaxExtend)
|
||
flatOptions: {
|
||
url: true,
|
||
context: true
|
||
}
|
||
},
|
||
|
||
// Creates a full fledged settings object into target
|
||
// with both ajaxSettings and settings fields.
|
||
// If target is omitted, writes into ajaxSettings.
|
||
ajaxSetup: function( target, settings ) {
|
||
return settings ?
|
||
|
||
// Building a settings object
|
||
ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
|
||
|
||
// Extending ajaxSettings
|
||
ajaxExtend( jQuery.ajaxSettings, target );
|
||
},
|
||
|
||
ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
|
||
ajaxTransport: addToPrefiltersOrTransports( transports ),
|
||
|
||
// Main method
|
||
ajax: function( url, options ) {
|
||
|
||
// If url is an object, simulate pre-1.5 signature
|
||
if ( typeof url === "object" ) {
|
||
options = url;
|
||
url = undefined;
|
||
}
|
||
|
||
// Force options to be an object
|
||
options = options || {};
|
||
|
||
var transport,
|
||
// URL without anti-cache param
|
||
cacheURL,
|
||
// Response headers
|
||
responseHeadersString,
|
||
responseHeaders,
|
||
// timeout handle
|
||
timeoutTimer,
|
||
// Cross-domain detection vars
|
||
parts,
|
||
// To know if global events are to be dispatched
|
||
fireGlobals,
|
||
// Loop variable
|
||
i,
|
||
// Create the final options object
|
||
s = jQuery.ajaxSetup( {}, options ),
|
||
// Callbacks context
|
||
callbackContext = s.context || s,
|
||
// Context for global events is callbackContext if it is a DOM node or jQuery collection
|
||
globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
|
||
jQuery( callbackContext ) :
|
||
jQuery.event,
|
||
// Deferreds
|
||
deferred = jQuery.Deferred(),
|
||
completeDeferred = jQuery.Callbacks("once memory"),
|
||
// Status-dependent callbacks
|
||
statusCode = s.statusCode || {},
|
||
// Headers (they are sent all at once)
|
||
requestHeaders = {},
|
||
requestHeadersNames = {},
|
||
// The jqXHR state
|
||
state = 0,
|
||
// Default abort message
|
||
strAbort = "canceled",
|
||
// Fake xhr
|
||
jqXHR = {
|
||
readyState: 0,
|
||
|
||
// Builds headers hashtable if needed
|
||
getResponseHeader: function( key ) {
|
||
var match;
|
||
if ( state === 2 ) {
|
||
if ( !responseHeaders ) {
|
||
responseHeaders = {};
|
||
while ( (match = rheaders.exec( responseHeadersString )) ) {
|
||
responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
|
||
}
|
||
}
|
||
match = responseHeaders[ key.toLowerCase() ];
|
||
}
|
||
return match == null ? null : match;
|
||
},
|
||
|
||
// Raw string
|
||
getAllResponseHeaders: function() {
|
||
return state === 2 ? responseHeadersString : null;
|
||
},
|
||
|
||
// Caches the header
|
||
setRequestHeader: function( name, value ) {
|
||
var lname = name.toLowerCase();
|
||
if ( !state ) {
|
||
name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
|
||
requestHeaders[ name ] = value;
|
||
}
|
||
return this;
|
||
},
|
||
|
||
// Overrides response content-type header
|
||
overrideMimeType: function( type ) {
|
||
if ( !state ) {
|
||
s.mimeType = type;
|
||
}
|
||
return this;
|
||
},
|
||
|
||
// Status-dependent callbacks
|
||
statusCode: function( map ) {
|
||
var code;
|
||
if ( map ) {
|
||
if ( state < 2 ) {
|
||
for ( code in map ) {
|
||
// Lazy-add the new callback in a way that preserves old ones
|
||
statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
|
||
}
|
||
} else {
|
||
// Execute the appropriate callbacks
|
||
jqXHR.always( map[ jqXHR.status ] );
|
||
}
|
||
}
|
||
return this;
|
||
},
|
||
|
||
// Cancel the request
|
||
abort: function( statusText ) {
|
||
var finalText = statusText || strAbort;
|
||
if ( transport ) {
|
||
transport.abort( finalText );
|
||
}
|
||
done( 0, finalText );
|
||
return this;
|
||
}
|
||
};
|
||
|
||
// Attach deferreds
|
||
deferred.promise( jqXHR ).complete = completeDeferred.add;
|
||
jqXHR.success = jqXHR.done;
|
||
jqXHR.error = jqXHR.fail;
|
||
|
||
// Remove hash character (#7531: and string promotion)
|
||
// Add protocol if not provided (prefilters might expect it)
|
||
// Handle falsy url in the settings object (#10093: consistency with old signature)
|
||
// We also use the url parameter if available
|
||
s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
|
||
.replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
|
||
|
||
// Alias method option to type as per ticket #12004
|
||
s.type = options.method || options.type || s.method || s.type;
|
||
|
||
// Extract dataTypes list
|
||
s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
|
||
|
||
// A cross-domain request is in order when we have a protocol:host:port mismatch
|
||
if ( s.crossDomain == null ) {
|
||
parts = rurl.exec( s.url.toLowerCase() );
|
||
s.crossDomain = !!( parts &&
|
||
( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
|
||
( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
|
||
( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
|
||
);
|
||
}
|
||
|
||
// Convert data if not already a string
|
||
if ( s.data && s.processData && typeof s.data !== "string" ) {
|
||
s.data = jQuery.param( s.data, s.traditional );
|
||
}
|
||
|
||
// Apply prefilters
|
||
inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
|
||
|
||
// If request was aborted inside a prefilter, stop there
|
||
if ( state === 2 ) {
|
||
return jqXHR;
|
||
}
|
||
|
||
// We can fire global events as of now if asked to
|
||
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
|
||
fireGlobals = jQuery.event && s.global;
|
||
|
||
// Watch for a new set of requests
|
||
if ( fireGlobals && jQuery.active++ === 0 ) {
|
||
jQuery.event.trigger("ajaxStart");
|
||
}
|
||
|
||
// Uppercase the type
|
||
s.type = s.type.toUpperCase();
|
||
|
||
// Determine if request has content
|
||
s.hasContent = !rnoContent.test( s.type );
|
||
|
||
// Save the URL in case we're toying with the If-Modified-Since
|
||
// and/or If-None-Match header later on
|
||
cacheURL = s.url;
|
||
|
||
// More options handling for requests with no content
|
||
if ( !s.hasContent ) {
|
||
|
||
// If data is available, append data to url
|
||
if ( s.data ) {
|
||
cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
|
||
// #9682: remove data so that it's not used in an eventual retry
|
||
delete s.data;
|
||
}
|
||
|
||
// Add anti-cache in url if needed
|
||
if ( s.cache === false ) {
|
||
s.url = rts.test( cacheURL ) ?
|
||
|
||
// If there is already a '_' parameter, set its value
|
||
cacheURL.replace( rts, "$1_=" + nonce++ ) :
|
||
|
||
// Otherwise add one to the end
|
||
cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
|
||
}
|
||
}
|
||
|
||
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
||
if ( s.ifModified ) {
|
||
if ( jQuery.lastModified[ cacheURL ] ) {
|
||
jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
|
||
}
|
||
if ( jQuery.etag[ cacheURL ] ) {
|
||
jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
|
||
}
|
||
}
|
||
|
||
// Set the correct header, if data is being sent
|
||
if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
|
||
jqXHR.setRequestHeader( "Content-Type", s.contentType );
|
||
}
|
||
|
||
// Set the Accepts header for the server, depending on the dataType
|
||
jqXHR.setRequestHeader(
|
||
"Accept",
|
||
s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
|
||
s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
|
||
s.accepts[ "*" ]
|
||
);
|
||
|
||
// Check for headers option
|
||
for ( i in s.headers ) {
|
||
jqXHR.setRequestHeader( i, s.headers[ i ] );
|
||
}
|
||
|
||
// Allow custom headers/mimetypes and early abort
|
||
if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
|
||
// Abort if not done already and return
|
||
return jqXHR.abort();
|
||
}
|
||
|
||
// Aborting is no longer a cancellation
|
||
strAbort = "abort";
|
||
|
||
// Install callbacks on deferreds
|
||
for ( i in { success: 1, error: 1, complete: 1 } ) {
|
||
jqXHR[ i ]( s[ i ] );
|
||
}
|
||
|
||
// Get transport
|
||
transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
|
||
|
||
// If no transport, we auto-abort
|
||
if ( !transport ) {
|
||
done( -1, "No Transport" );
|
||
} else {
|
||
jqXHR.readyState = 1;
|
||
|
||
// Send global event
|
||
if ( fireGlobals ) {
|
||
globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
|
||
}
|
||
// Timeout
|
||
if ( s.async && s.timeout > 0 ) {
|
||
timeoutTimer = setTimeout(function() {
|
||
jqXHR.abort("timeout");
|
||
}, s.timeout );
|
||
}
|
||
|
||
try {
|
||
state = 1;
|
||
transport.send( requestHeaders, done );
|
||
} catch ( e ) {
|
||
// Propagate exception as error if not done
|
||
if ( state < 2 ) {
|
||
done( -1, e );
|
||
// Simply rethrow otherwise
|
||
} else {
|
||
throw e;
|
||
}
|
||
}
|
||
}
|
||
|
||
// Callback for when everything is done
|
||
function done( status, nativeStatusText, responses, headers ) {
|
||
var isSuccess, success, error, response, modified,
|
||
statusText = nativeStatusText;
|
||
|
||
// Called once
|
||
if ( state === 2 ) {
|
||
return;
|
||
}
|
||
|
||
// State is "done" now
|
||
state = 2;
|
||
|
||
// Clear timeout if it exists
|
||
if ( timeoutTimer ) {
|
||
clearTimeout( timeoutTimer );
|
||
}
|
||
|
||
// Dereference transport for early garbage collection
|
||
// (no matter how long the jqXHR object will be used)
|
||
transport = undefined;
|
||
|
||
// Cache response headers
|
||
responseHeadersString = headers || "";
|
||
|
||
// Set readyState
|
||
jqXHR.readyState = status > 0 ? 4 : 0;
|
||
|
||
// Determine if successful
|
||
isSuccess = status >= 200 && status < 300 || status === 304;
|
||
|
||
// Get response data
|
||
if ( responses ) {
|
||
response = ajaxHandleResponses( s, jqXHR, responses );
|
||
}
|
||
|
||
// Convert no matter what (that way responseXXX fields are always set)
|
||
response = ajaxConvert( s, response, jqXHR, isSuccess );
|
||
|
||
// If successful, handle type chaining
|
||
if ( isSuccess ) {
|
||
|
||
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
||
if ( s.ifModified ) {
|
||
modified = jqXHR.getResponseHeader("Last-Modified");
|
||
if ( modified ) {
|
||
jQuery.lastModified[ cacheURL ] = modified;
|
||
}
|
||
modified = jqXHR.getResponseHeader("etag");
|
||
if ( modified ) {
|
||
jQuery.etag[ cacheURL ] = modified;
|
||
}
|
||
}
|
||
|
||
// if no content
|
||
if ( status === 204 || s.type === "HEAD" ) {
|
||
statusText = "nocontent";
|
||
|
||
// if not modified
|
||
} else if ( status === 304 ) {
|
||
statusText = "notmodified";
|
||
|
||
// If we have data, let's convert it
|
||
} else {
|
||
statusText = response.state;
|
||
success = response.data;
|
||
error = response.error;
|
||
isSuccess = !error;
|
||
}
|
||
} else {
|
||
// Extract error from statusText and normalize for non-aborts
|
||
error = statusText;
|
||
if ( status || !statusText ) {
|
||
statusText = "error";
|
||
if ( status < 0 ) {
|
||
status = 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
// Set data for the fake xhr object
|
||
jqXHR.status = status;
|
||
jqXHR.statusText = ( nativeStatusText || statusText ) + "";
|
||
|
||
// Success/Error
|
||
if ( isSuccess ) {
|
||
deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
|
||
} else {
|
||
deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
|
||
}
|
||
|
||
// Status-dependent callbacks
|
||
jqXHR.statusCode( statusCode );
|
||
statusCode = undefined;
|
||
|
||
if ( fireGlobals ) {
|
||
globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
|
||
[ jqXHR, s, isSuccess ? success : error ] );
|
||
}
|
||
|
||
// Complete
|
||
completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
|
||
|
||
if ( fireGlobals ) {
|
||
globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
|
||
// Handle the global AJAX counter
|
||
if ( !( --jQuery.active ) ) {
|
||
jQuery.event.trigger("ajaxStop");
|
||
}
|
||
}
|
||
}
|
||
|
||
return jqXHR;
|
||
},
|
||
|
||
getJSON: function( url, data, callback ) {
|
||
return jQuery.get( url, data, callback, "json" );
|
||
},
|
||
|
||
getScript: function( url, callback ) {
|
||
return jQuery.get( url, undefined, callback, "script" );
|
||
}
|
||
});
|
||
|
||
jQuery.each( [ "get", "post" ], function( i, method ) {
|
||
jQuery[ method ] = function( url, data, callback, type ) {
|
||
// Shift arguments if data argument was omitted
|
||
if ( jQuery.isFunction( data ) ) {
|
||
type = type || callback;
|
||
callback = data;
|
||
data = undefined;
|
||
}
|
||
|
||
return jQuery.ajax({
|
||
url: url,
|
||
type: method,
|
||
dataType: type,
|
||
data: data,
|
||
success: callback
|
||
});
|
||
};
|
||
});
|
||
|
||
|
||
jQuery._evalUrl = function( url ) {
|
||
return jQuery.ajax({
|
||
url: url,
|
||
type: "GET",
|
||
dataType: "script",
|
||
async: false,
|
||
global: false,
|
||
"throws": true
|
||
});
|
||
};
|
||
|
||
|
||
jQuery.fn.extend({
|
||
wrapAll: function( html ) {
|
||
var wrap;
|
||
|
||
if ( jQuery.isFunction( html ) ) {
|
||
return this.each(function( i ) {
|
||
jQuery( this ).wrapAll( html.call(this, i) );
|
||
});
|
||
}
|
||
|
||
if ( this[ 0 ] ) {
|
||
|
||
// The elements to wrap the target around
|
||
wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
|
||
|
||
if ( this[ 0 ].parentNode ) {
|
||
wrap.insertBefore( this[ 0 ] );
|
||
}
|
||
|
||
wrap.map(function() {
|
||
var elem = this;
|
||
|
||
while ( elem.firstElementChild ) {
|
||
elem = elem.firstElementChild;
|
||
}
|
||
|
||
return elem;
|
||
}).append( this );
|
||
}
|
||
|
||
return this;
|
||
},
|
||
|
||
wrapInner: function( html ) {
|
||
if ( jQuery.isFunction( html ) ) {
|
||
return this.each(function( i ) {
|
||
jQuery( this ).wrapInner( html.call(this, i) );
|
||
});
|
||
}
|
||
|
||
return this.each(function() {
|
||
var self = jQuery( this ),
|
||
contents = self.contents();
|
||
|
||
if ( contents.length ) {
|
||
contents.wrapAll( html );
|
||
|
||
} else {
|
||
self.append( html );
|
||
}
|
||
});
|
||
},
|
||
|
||
wrap: function( html ) {
|
||
var isFunction = jQuery.isFunction( html );
|
||
|
||
return this.each(function( i ) {
|
||
jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
|
||
});
|
||
},
|
||
|
||
unwrap: function() {
|
||
return this.parent().each(function() {
|
||
if ( !jQuery.nodeName( this, "body" ) ) {
|
||
jQuery( this ).replaceWith( this.childNodes );
|
||
}
|
||
}).end();
|
||
}
|
||
});
|
||
|
||
|
||
jQuery.expr.filters.hidden = function( elem ) {
|
||
// Support: Opera <= 12.12
|
||
// Opera reports offsetWidths and offsetHeights less than zero on some elements
|
||
return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
|
||
};
|
||
jQuery.expr.filters.visible = function( elem ) {
|
||
return !jQuery.expr.filters.hidden( elem );
|
||
};
|
||
|
||
|
||
|
||
|
||
var r20 = /%20/g,
|
||
rbracket = /\[\]$/,
|
||
rCRLF = /\r?\n/g,
|
||
rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
|
||
rsubmittable = /^(?:input|select|textarea|keygen)/i;
|
||
|
||
function buildParams( prefix, obj, traditional, add ) {
|
||
var name;
|
||
|
||
if ( jQuery.isArray( obj ) ) {
|
||
// Serialize array item.
|
||
jQuery.each( obj, function( i, v ) {
|
||
if ( traditional || rbracket.test( prefix ) ) {
|
||
// Treat each array item as a scalar.
|
||
add( prefix, v );
|
||
|
||
} else {
|
||
// Item is non-scalar (array or object), encode its numeric index.
|
||
buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
|
||
}
|
||
});
|
||
|
||
} else if ( !traditional && jQuery.type( obj ) === "object" ) {
|
||
// Serialize object item.
|
||
for ( name in obj ) {
|
||
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
|
||
}
|
||
|
||
} else {
|
||
// Serialize scalar item.
|
||
add( prefix, obj );
|
||
}
|
||
}
|
||
|
||
// Serialize an array of form elements or a set of
|
||
// key/values into a query string
|
||
jQuery.param = function( a, traditional ) {
|
||
var prefix,
|
||
s = [],
|
||
add = function( key, value ) {
|
||
// If value is a function, invoke it and return its value
|
||
value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
|
||
s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
|
||
};
|
||
|
||
// Set traditional to true for jQuery <= 1.3.2 behavior.
|
||
if ( traditional === undefined ) {
|
||
traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
|
||
}
|
||
|
||
// If an array was passed in, assume that it is an array of form elements.
|
||
if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
|
||
// Serialize the form elements
|
||
jQuery.each( a, function() {
|
||
add( this.name, this.value );
|
||
});
|
||
|
||
} else {
|
||
// If traditional, encode the "old" way (the way 1.3.2 or older
|
||
// did it), otherwise encode params recursively.
|
||
for ( prefix in a ) {
|
||
buildParams( prefix, a[ prefix ], traditional, add );
|
||
}
|
||
}
|
||
|
||
// Return the resulting serialization
|
||
return s.join( "&" ).replace( r20, "+" );
|
||
};
|
||
|
||
jQuery.fn.extend({
|
||
serialize: function() {
|
||
return jQuery.param( this.serializeArray() );
|
||
},
|
||
serializeArray: function() {
|
||
return this.map(function() {
|
||
// Can add propHook for "elements" to filter or add form elements
|
||
var elements = jQuery.prop( this, "elements" );
|
||
return elements ? jQuery.makeArray( elements ) : this;
|
||
})
|
||
.filter(function() {
|
||
var type = this.type;
|
||
|
||
// Use .is( ":disabled" ) so that fieldset[disabled] works
|
||
return this.name && !jQuery( this ).is( ":disabled" ) &&
|
||
rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
|
||
( this.checked || !rcheckableType.test( type ) );
|
||
})
|
||
.map(function( i, elem ) {
|
||
var val = jQuery( this ).val();
|
||
|
||
return val == null ?
|
||
null :
|
||
jQuery.isArray( val ) ?
|
||
jQuery.map( val, function( val ) {
|
||
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
||
}) :
|
||
{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
||
}).get();
|
||
}
|
||
});
|
||
|
||
|
||
jQuery.ajaxSettings.xhr = function() {
|
||
try {
|
||
return new XMLHttpRequest();
|
||
} catch( e ) {}
|
||
};
|
||
|
||
var xhrId = 0,
|
||
xhrCallbacks = {},
|
||
xhrSuccessStatus = {
|
||
// file protocol always yields status code 0, assume 200
|
||
0: 200,
|
||
// Support: IE9
|
||
// #1450: sometimes IE returns 1223 when it should be 204
|
||
1223: 204
|
||
},
|
||
xhrSupported = jQuery.ajaxSettings.xhr();
|
||
|
||
// Support: IE9
|
||
// Open requests must be manually aborted on unload (#5280)
|
||
// See https://support.microsoft.com/kb/2856746 for more info
|
||
if ( window.attachEvent ) {
|
||
window.attachEvent( "onunload", function() {
|
||
for ( var key in xhrCallbacks ) {
|
||
xhrCallbacks[ key ]();
|
||
}
|
||
});
|
||
}
|
||
|
||
support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
|
||
support.ajax = xhrSupported = !!xhrSupported;
|
||
|
||
jQuery.ajaxTransport(function( options ) {
|
||
var callback;
|
||
|
||
// Cross domain only allowed if supported through XMLHttpRequest
|
||
if ( support.cors || xhrSupported && !options.crossDomain ) {
|
||
return {
|
||
send: function( headers, complete ) {
|
||
var i,
|
||
xhr = options.xhr(),
|
||
id = ++xhrId;
|
||
|
||
xhr.open( options.type, options.url, options.async, options.username, options.password );
|
||
|
||
// Apply custom fields if provided
|
||
if ( options.xhrFields ) {
|
||
for ( i in options.xhrFields ) {
|
||
xhr[ i ] = options.xhrFields[ i ];
|
||
}
|
||
}
|
||
|
||
// Override mime type if needed
|
||
if ( options.mimeType && xhr.overrideMimeType ) {
|
||
xhr.overrideMimeType( options.mimeType );
|
||
}
|
||
|
||
// X-Requested-With header
|
||
// For cross-domain requests, seeing as conditions for a preflight are
|
||
// akin to a jigsaw puzzle, we simply never set it to be sure.
|
||
// (it can always be set on a per-request basis or even using ajaxSetup)
|
||
// For same-domain requests, won't change header if already provided.
|
||
if ( !options.crossDomain && !headers["X-Requested-With"] ) {
|
||
headers["X-Requested-With"] = "XMLHttpRequest";
|
||
}
|
||
|
||
// Set headers
|
||
for ( i in headers ) {
|
||
xhr.setRequestHeader( i, headers[ i ] );
|
||
}
|
||
|
||
// Callback
|
||
callback = function( type ) {
|
||
return function() {
|
||
if ( callback ) {
|
||
delete xhrCallbacks[ id ];
|
||
callback = xhr.onload = xhr.onerror = null;
|
||
|
||
if ( type === "abort" ) {
|
||
xhr.abort();
|
||
} else if ( type === "error" ) {
|
||
complete(
|
||
// file: protocol always yields status 0; see #8605, #14207
|
||
xhr.status,
|
||
xhr.statusText
|
||
);
|
||
} else {
|
||
complete(
|
||
xhrSuccessStatus[ xhr.status ] || xhr.status,
|
||
xhr.statusText,
|
||
// Support: IE9
|
||
// Accessing binary-data responseText throws an exception
|
||
// (#11426)
|
||
typeof xhr.responseText === "string" ? {
|
||
text: xhr.responseText
|
||
} : undefined,
|
||
xhr.getAllResponseHeaders()
|
||
);
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
// Listen to events
|
||
xhr.onload = callback();
|
||
xhr.onerror = callback("error");
|
||
|
||
// Create the abort callback
|
||
callback = xhrCallbacks[ id ] = callback("abort");
|
||
|
||
try {
|
||
// Do send the request (this may raise an exception)
|
||
xhr.send( options.hasContent && options.data || null );
|
||
} catch ( e ) {
|
||
// #14683: Only rethrow if this hasn't been notified as an error yet
|
||
if ( callback ) {
|
||
throw e;
|
||
}
|
||
}
|
||
},
|
||
|
||
abort: function() {
|
||
if ( callback ) {
|
||
callback();
|
||
}
|
||
}
|
||
};
|
||
}
|
||
});
|
||
|
||
|
||
|
||
|
||
// Install script dataType
|
||
jQuery.ajaxSetup({
|
||
accepts: {
|
||
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
|
||
},
|
||
contents: {
|
||
script: /(?:java|ecma)script/
|
||
},
|
||
converters: {
|
||
"text script": function( text ) {
|
||
jQuery.globalEval( text );
|
||
return text;
|
||
}
|
||
}
|
||
});
|
||
|
||
// Handle cache's special case and crossDomain
|
||
jQuery.ajaxPrefilter( "script", function( s ) {
|
||
if ( s.cache === undefined ) {
|
||
s.cache = false;
|
||
}
|
||
if ( s.crossDomain ) {
|
||
s.type = "GET";
|
||
}
|
||
});
|
||
|
||
// Bind script tag hack transport
|
||
jQuery.ajaxTransport( "script", function( s ) {
|
||
// This transport only deals with cross domain requests
|
||
if ( s.crossDomain ) {
|
||
var script, callback;
|
||
return {
|
||
send: function( _, complete ) {
|
||
script = jQuery("<script>").prop({
|
||
async: true,
|
||
charset: s.scriptCharset,
|
||
src: s.url
|
||
}).on(
|
||
"load error",
|
||
callback = function( evt ) {
|
||
script.remove();
|
||
callback = null;
|
||
if ( evt ) {
|
||
complete( evt.type === "error" ? 404 : 200, evt.type );
|
||
}
|
||
}
|
||
);
|
||
document.head.appendChild( script[ 0 ] );
|
||
},
|
||
abort: function() {
|
||
if ( callback ) {
|
||
callback();
|
||
}
|
||
}
|
||
};
|
||
}
|
||
});
|
||
|
||
|
||
|
||
|
||
var oldCallbacks = [],
|
||
rjsonp = /(=)\?(?=&|$)|\?\?/;
|
||
|
||
// Default jsonp settings
|
||
jQuery.ajaxSetup({
|
||
jsonp: "callback",
|
||
jsonpCallback: function() {
|
||
var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
|
||
this[ callback ] = true;
|
||
return callback;
|
||
}
|
||
});
|
||
|
||
// Detect, normalize options and install callbacks for jsonp requests
|
||
jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
|
||
|
||
var callbackName, overwritten, responseContainer,
|
||
jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
|
||
"url" :
|
||
typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
|
||
);
|
||
|
||
// Handle iff the expected data type is "jsonp" or we have a parameter to set
|
||
if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
|
||
|
||
// Get callback name, remembering preexisting value associated with it
|
||
callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
|
||
s.jsonpCallback() :
|
||
s.jsonpCallback;
|
||
|
||
// Insert callback into url or form data
|
||
if ( jsonProp ) {
|
||
s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
|
||
} else if ( s.jsonp !== false ) {
|
||
s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
|
||
}
|
||
|
||
// Use data converter to retrieve json after script execution
|
||
s.converters["script json"] = function() {
|
||
if ( !responseContainer ) {
|
||
jQuery.error( callbackName + " was not called" );
|
||
}
|
||
return responseContainer[ 0 ];
|
||
};
|
||
|
||
// force json dataType
|
||
s.dataTypes[ 0 ] = "json";
|
||
|
||
// Install callback
|
||
overwritten = window[ callbackName ];
|
||
window[ callbackName ] = function() {
|
||
responseContainer = arguments;
|
||
};
|
||
|
||
// Clean-up function (fires after converters)
|
||
jqXHR.always(function() {
|
||
// Restore preexisting value
|
||
window[ callbackName ] = overwritten;
|
||
|
||
// Save back as free
|
||
if ( s[ callbackName ] ) {
|
||
// make sure that re-using the options doesn't screw things around
|
||
s.jsonpCallback = originalSettings.jsonpCallback;
|
||
|
||
// save the callback name for future use
|
||
oldCallbacks.push( callbackName );
|
||
}
|
||
|
||
// Call if it was a function and we have a response
|
||
if ( responseContainer && jQuery.isFunction( overwritten ) ) {
|
||
overwritten( responseContainer[ 0 ] );
|
||
}
|
||
|
||
responseContainer = overwritten = undefined;
|
||
});
|
||
|
||
// Delegate to script
|
||
return "script";
|
||
}
|
||
});
|
||
|
||
|
||
|
||
|
||
// data: string of html
|
||
// context (optional): If specified, the fragment will be created in this context, defaults to document
|
||
// keepScripts (optional): If true, will include scripts passed in the html string
|
||
jQuery.parseHTML = function( data, context, keepScripts ) {
|
||
if ( !data || typeof data !== "string" ) {
|
||
return null;
|
||
}
|
||
if ( typeof context === "boolean" ) {
|
||
keepScripts = context;
|
||
context = false;
|
||
}
|
||
context = context || document;
|
||
|
||
var parsed = rsingleTag.exec( data ),
|
||
scripts = !keepScripts && [];
|
||
|
||
// Single tag
|
||
if ( parsed ) {
|
||
return [ context.createElement( parsed[1] ) ];
|
||
}
|
||
|
||
parsed = jQuery.buildFragment( [ data ], context, scripts );
|
||
|
||
if ( scripts && scripts.length ) {
|
||
jQuery( scripts ).remove();
|
||
}
|
||
|
||
return jQuery.merge( [], parsed.childNodes );
|
||
};
|
||
|
||
|
||
// Keep a copy of the old load method
|
||
var _load = jQuery.fn.load;
|
||
|
||
/**
|
||
* Load a url into a page
|
||
*/
|
||
jQuery.fn.load = function( url, params, callback ) {
|
||
if ( typeof url !== "string" && _load ) {
|
||
return _load.apply( this, arguments );
|
||
}
|
||
|
||
var selector, type, response,
|
||
self = this,
|
||
off = url.indexOf(" ");
|
||
|
||
if ( off >= 0 ) {
|
||
selector = jQuery.trim( url.slice( off ) );
|
||
url = url.slice( 0, off );
|
||
}
|
||
|
||
// If it's a function
|
||
if ( jQuery.isFunction( params ) ) {
|
||
|
||
// We assume that it's the callback
|
||
callback = params;
|
||
params = undefined;
|
||
|
||
// Otherwise, build a param string
|
||
} else if ( params && typeof params === "object" ) {
|
||
type = "POST";
|
||
}
|
||
|
||
// If we have elements to modify, make the request
|
||
if ( self.length > 0 ) {
|
||
jQuery.ajax({
|
||
url: url,
|
||
|
||
// if "type" variable is undefined, then "GET" method will be used
|
||
type: type,
|
||
dataType: "html",
|
||
data: params
|
||
}).done(function( responseText ) {
|
||
|
||
// Save response for use in complete callback
|
||
response = arguments;
|
||
|
||
self.html( selector ?
|
||
|
||
// If a selector was specified, locate the right elements in a dummy div
|
||
// Exclude scripts to avoid IE 'Permission Denied' errors
|
||
jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
|
||
|
||
// Otherwise use the full result
|
||
responseText );
|
||
|
||
}).complete( callback && function( jqXHR, status ) {
|
||
self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
|
||
});
|
||
}
|
||
|
||
return this;
|
||
};
|
||
|
||
|
||
|
||
|
||
// Attach a bunch of functions for handling common AJAX events
|
||
jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
|
||
jQuery.fn[ type ] = function( fn ) {
|
||
return this.on( type, fn );
|
||
};
|
||
});
|
||
|
||
|
||
|
||
|
||
jQuery.expr.filters.animated = function( elem ) {
|
||
return jQuery.grep(jQuery.timers, function( fn ) {
|
||
return elem === fn.elem;
|
||
}).length;
|
||
};
|
||
|
||
|
||
|
||
|
||
var docElem = window.document.documentElement;
|
||
|
||
/**
|
||
* Gets a window from an element
|
||
*/
|
||
function getWindow( elem ) {
|
||
return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
|
||
}
|
||
|
||
jQuery.offset = {
|
||
setOffset: function( elem, options, i ) {
|
||
var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
|
||
position = jQuery.css( elem, "position" ),
|
||
curElem = jQuery( elem ),
|
||
props = {};
|
||
|
||
// Set position first, in-case top/left are set even on static elem
|
||
if ( position === "static" ) {
|
||
elem.style.position = "relative";
|
||
}
|
||
|
||
curOffset = curElem.offset();
|
||
curCSSTop = jQuery.css( elem, "top" );
|
||
curCSSLeft = jQuery.css( elem, "left" );
|
||
calculatePosition = ( position === "absolute" || position === "fixed" ) &&
|
||
( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
|
||
|
||
// Need to be able to calculate position if either
|
||
// top or left is auto and position is either absolute or fixed
|
||
if ( calculatePosition ) {
|
||
curPosition = curElem.position();
|
||
curTop = curPosition.top;
|
||
curLeft = curPosition.left;
|
||
|
||
} else {
|
||
curTop = parseFloat( curCSSTop ) || 0;
|
||
curLeft = parseFloat( curCSSLeft ) || 0;
|
||
}
|
||
|
||
if ( jQuery.isFunction( options ) ) {
|
||
options = options.call( elem, i, curOffset );
|
||
}
|
||
|
||
if ( options.top != null ) {
|
||
props.top = ( options.top - curOffset.top ) + curTop;
|
||
}
|
||
if ( options.left != null ) {
|
||
props.left = ( options.left - curOffset.left ) + curLeft;
|
||
}
|
||
|
||
if ( "using" in options ) {
|
||
options.using.call( elem, props );
|
||
|
||
} else {
|
||
curElem.css( props );
|
||
}
|
||
}
|
||
};
|
||
|
||
jQuery.fn.extend({
|
||
offset: function( options ) {
|
||
if ( arguments.length ) {
|
||
return options === undefined ?
|
||
this :
|
||
this.each(function( i ) {
|
||
jQuery.offset.setOffset( this, options, i );
|
||
});
|
||
}
|
||
|
||
var docElem, win,
|
||
elem = this[ 0 ],
|
||
box = { top: 0, left: 0 },
|
||
doc = elem && elem.ownerDocument;
|
||
|
||
if ( !doc ) {
|
||
return;
|
||
}
|
||
|
||
docElem = doc.documentElement;
|
||
|
||
// Make sure it's not a disconnected DOM node
|
||
if ( !jQuery.contains( docElem, elem ) ) {
|
||
return box;
|
||
}
|
||
|
||
// Support: BlackBerry 5, iOS 3 (original iPhone)
|
||
// If we don't have gBCR, just use 0,0 rather than error
|
||
if ( typeof elem.getBoundingClientRect !== strundefined ) {
|
||
box = elem.getBoundingClientRect();
|
||
}
|
||
win = getWindow( doc );
|
||
return {
|
||
top: box.top + win.pageYOffset - docElem.clientTop,
|
||
left: box.left + win.pageXOffset - docElem.clientLeft
|
||
};
|
||
},
|
||
|
||
position: function() {
|
||
if ( !this[ 0 ] ) {
|
||
return;
|
||
}
|
||
|
||
var offsetParent, offset,
|
||
elem = this[ 0 ],
|
||
parentOffset = { top: 0, left: 0 };
|
||
|
||
// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
|
||
if ( jQuery.css( elem, "position" ) === "fixed" ) {
|
||
// Assume getBoundingClientRect is there when computed position is fixed
|
||
offset = elem.getBoundingClientRect();
|
||
|
||
} else {
|
||
// Get *real* offsetParent
|
||
offsetParent = this.offsetParent();
|
||
|
||
// Get correct offsets
|
||
offset = this.offset();
|
||
if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
|
||
parentOffset = offsetParent.offset();
|
||
}
|
||
|
||
// Add offsetParent borders
|
||
parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
|
||
parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
|
||
}
|
||
|
||
// Subtract parent offsets and element margins
|
||
return {
|
||
top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
|
||
left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
|
||
};
|
||
},
|
||
|
||
offsetParent: function() {
|
||
return this.map(function() {
|
||
var offsetParent = this.offsetParent || docElem;
|
||
|
||
while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
|
||
offsetParent = offsetParent.offsetParent;
|
||
}
|
||
|
||
return offsetParent || docElem;
|
||
});
|
||
}
|
||
});
|
||
|
||
// Create scrollLeft and scrollTop methods
|
||
jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
|
||
var top = "pageYOffset" === prop;
|
||
|
||
jQuery.fn[ method ] = function( val ) {
|
||
return access( this, function( elem, method, val ) {
|
||
var win = getWindow( elem );
|
||
|
||
if ( val === undefined ) {
|
||
return win ? win[ prop ] : elem[ method ];
|
||
}
|
||
|
||
if ( win ) {
|
||
win.scrollTo(
|
||
!top ? val : window.pageXOffset,
|
||
top ? val : window.pageYOffset
|
||
);
|
||
|
||
} else {
|
||
elem[ method ] = val;
|
||
}
|
||
}, method, val, arguments.length, null );
|
||
};
|
||
});
|
||
|
||
// Support: Safari<7+, Chrome<37+
|
||
// Add the top/left cssHooks using jQuery.fn.position
|
||
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
|
||
// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
|
||
// getComputedStyle returns percent when specified for top/left/bottom/right;
|
||
// rather than make the css module depend on the offset module, just check for it here
|
||
jQuery.each( [ "top", "left" ], function( i, prop ) {
|
||
jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
|
||
function( elem, computed ) {
|
||
if ( computed ) {
|
||
computed = curCSS( elem, prop );
|
||
// If curCSS returns percentage, fallback to offset
|
||
return rnumnonpx.test( computed ) ?
|
||
jQuery( elem ).position()[ prop ] + "px" :
|
||
computed;
|
||
}
|
||
}
|
||
);
|
||
});
|
||
|
||
|
||
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
||
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
||
jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
|
||
// Margin is only for outerHeight, outerWidth
|
||
jQuery.fn[ funcName ] = function( margin, value ) {
|
||
var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
|
||
extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
|
||
|
||
return access( this, function( elem, type, value ) {
|
||
var doc;
|
||
|
||
if ( jQuery.isWindow( elem ) ) {
|
||
// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
|
||
// isn't a whole lot we can do. See pull request at this URL for discussion:
|
||
// https://github.com/jquery/jquery/pull/764
|
||
return elem.document.documentElement[ "client" + name ];
|
||
}
|
||
|
||
// Get document width or height
|
||
if ( elem.nodeType === 9 ) {
|
||
doc = elem.documentElement;
|
||
|
||
// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
|
||
// whichever is greatest
|
||
return Math.max(
|
||
elem.body[ "scroll" + name ], doc[ "scroll" + name ],
|
||
elem.body[ "offset" + name ], doc[ "offset" + name ],
|
||
doc[ "client" + name ]
|
||
);
|
||
}
|
||
|
||
return value === undefined ?
|
||
// Get width or height on the element, requesting but not forcing parseFloat
|
||
jQuery.css( elem, type, extra ) :
|
||
|
||
// Set width or height on the element
|
||
jQuery.style( elem, type, value, extra );
|
||
}, type, chainable ? margin : undefined, chainable, null );
|
||
};
|
||
});
|
||
});
|
||
|
||
|
||
// The number of elements contained in the matched element set
|
||
jQuery.fn.size = function() {
|
||
return this.length;
|
||
};
|
||
|
||
jQuery.fn.andSelf = jQuery.fn.addBack;
|
||
|
||
|
||
|
||
|
||
// Register as a named AMD module, since jQuery can be concatenated with other
|
||
// files that may use define, but not via a proper concatenation script that
|
||
// understands anonymous AMD modules. A named AMD is safest and most robust
|
||
// way to register. Lowercase jquery is used because AMD module names are
|
||
// derived from file names, and jQuery is normally delivered in a lowercase
|
||
// file name. Do this after creating the global so that if an AMD module wants
|
||
// to call noConflict to hide this version of jQuery, it will work.
|
||
|
||
// Note that for maximum portability, libraries that are not jQuery should
|
||
// declare themselves as anonymous modules, and avoid setting a global if an
|
||
// AMD loader is present. jQuery is a special case. For more information, see
|
||
// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
|
||
|
||
if ( typeof define === "function" && define.amd ) {
|
||
define( "jquery", [], function() {
|
||
return jQuery;
|
||
});
|
||
}
|
||
|
||
|
||
|
||
|
||
var
|
||
// Map over jQuery in case of overwrite
|
||
_jQuery = window.jQuery,
|
||
|
||
// Map over the $ in case of overwrite
|
||
_$ = window.$;
|
||
|
||
jQuery.noConflict = function( deep ) {
|
||
if ( window.$ === jQuery ) {
|
||
window.$ = _$;
|
||
}
|
||
|
||
if ( deep && window.jQuery === jQuery ) {
|
||
window.jQuery = _jQuery;
|
||
}
|
||
|
||
return jQuery;
|
||
};
|
||
|
||
// Expose jQuery and $ identifiers, even in AMD
|
||
// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
|
||
// and CommonJS for browser emulators (#13566)
|
||
if ( typeof noGlobal === strundefined ) {
|
||
window.jQuery = window.$ = jQuery;
|
||
}
|
||
|
||
|
||
|
||
|
||
return jQuery;
|
||
|
||
}));
|
||
</script>
|
||
<script>/*!
|
||
* Bootstrap v3.3.5 (http://getbootstrap.com)
|
||
* Copyright 2011-2015 Twitter, Inc.
|
||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||
*/
|
||
|
||
/*!
|
||
* Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=ca1d29b8c16a782c676c)
|
||
* Config saved to config.json and https://gist.github.com/ca1d29b8c16a782c676c
|
||
*/
|
||
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),n=i.data("bs.alert");n||i.data("bs.alert",n=new o(this)),"string"==typeof e&&n[e].call(i)})}var i='[data-dismiss="alert"]',o=function(e){t(e).on("click",i,this.close)};o.VERSION="3.3.5",o.TRANSITION_DURATION=150,o.prototype.close=function(e){function i(){a.detach().trigger("closed.bs.alert").remove()}var n=t(this),s=n.attr("data-target");s||(s=n.attr("href"),s=s&&s.replace(/.*(?=#[^\s]*$)/,""));var a=t(s);e&&e.preventDefault(),a.length||(a=n.closest(".alert")),a.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(a.removeClass("in"),t.support.transition&&a.hasClass("fade")?a.one("bsTransitionEnd",i).emulateTransitionEnd(o.TRANSITION_DURATION):i())};var n=t.fn.alert;t.fn.alert=e,t.fn.alert.Constructor=o,t.fn.alert.noConflict=function(){return t.fn.alert=n,this},t(document).on("click.bs.alert.data-api",i,o.prototype.close)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.button"),s="object"==typeof e&&e;n||o.data("bs.button",n=new i(this,s)),"toggle"==e?n.toggle():e&&n.setState(e)})}var i=function(e,o){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,o),this.isLoading=!1};i.VERSION="3.3.5",i.DEFAULTS={loadingText:"loading..."},i.prototype.setState=function(e){var i="disabled",o=this.$element,n=o.is("input")?"val":"html",s=o.data();e+="Text",null==s.resetText&&o.data("resetText",o[n]()),setTimeout(t.proxy(function(){o[n](null==s[e]?this.options[e]:s[e]),"loadingText"==e?(this.isLoading=!0,o.addClass(i).attr(i,i)):this.isLoading&&(this.isLoading=!1,o.removeClass(i).removeAttr(i))},this),0)},i.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var i=this.$element.find("input");"radio"==i.prop("type")?(i.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==i.prop("type")&&(i.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),i.prop("checked",this.$element.hasClass("active")),t&&i.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var o=t.fn.button;t.fn.button=e,t.fn.button.Constructor=i,t.fn.button.noConflict=function(){return t.fn.button=o,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(i){var o=t(i.target);o.hasClass("btn")||(o=o.closest(".btn")),e.call(o,"toggle"),t(i.target).is('input[type="radio"]')||t(i.target).is('input[type="checkbox"]')||i.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(e){t(e.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(e.type))})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.carousel"),s=t.extend({},i.DEFAULTS,o.data(),"object"==typeof e&&e),a="string"==typeof e?e:s.slide;n||o.data("bs.carousel",n=new i(this,s)),"number"==typeof e?n.to(e):a?n[a]():s.interval&&n.pause().cycle()})}var i=function(e,i){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=i,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",t.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",t.proxy(this.pause,this)).on("mouseleave.bs.carousel",t.proxy(this.cycle,this))};i.VERSION="3.3.5",i.TRANSITION_DURATION=600,i.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},i.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},i.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},i.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},i.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e),o="prev"==t&&0===i||"next"==t&&i==this.$items.length-1;if(o&&!this.options.wrap)return e;var n="prev"==t?-1:1,s=(i+n)%this.$items.length;return this.$items.eq(s)},i.prototype.to=function(t){var e=this,i=this.getItemIndex(this.$active=this.$element.find(".item.active"));return t>this.$items.length-1||0>t?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(t>i?"next":"prev",this.$items.eq(t))},i.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},i.prototype.next=function(){return this.sliding?void 0:this.slide("next")},i.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},i.prototype.slide=function(e,o){var n=this.$element.find(".item.active"),s=o||this.getItemForDirection(e,n),a=this.interval,r="next"==e?"left":"right",l=this;if(s.hasClass("active"))return this.sliding=!1;var h=s[0],d=t.Event("slide.bs.carousel",{relatedTarget:h,direction:r});if(this.$element.trigger(d),!d.isDefaultPrevented()){if(this.sliding=!0,a&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var p=t(this.$indicators.children()[this.getItemIndex(s)]);p&&p.addClass("active")}var c=t.Event("slid.bs.carousel",{relatedTarget:h,direction:r});return t.support.transition&&this.$element.hasClass("slide")?(s.addClass(e),s[0].offsetWidth,n.addClass(r),s.addClass(r),n.one("bsTransitionEnd",function(){s.removeClass([e,r].join(" ")).addClass("active"),n.removeClass(["active",r].join(" ")),l.sliding=!1,setTimeout(function(){l.$element.trigger(c)},0)}).emulateTransitionEnd(i.TRANSITION_DURATION)):(n.removeClass("active"),s.addClass("active"),this.sliding=!1,this.$element.trigger(c)),a&&this.cycle(),this}};var o=t.fn.carousel;t.fn.carousel=e,t.fn.carousel.Constructor=i,t.fn.carousel.noConflict=function(){return t.fn.carousel=o,this};var n=function(i){var o,n=t(this),s=t(n.attr("data-target")||(o=n.attr("href"))&&o.replace(/.*(?=#[^\s]+$)/,""));if(s.hasClass("carousel")){var a=t.extend({},s.data(),n.data()),r=n.attr("data-slide-to");r&&(a.interval=!1),e.call(s,a),r&&s.data("bs.carousel").to(r),i.preventDefault()}};t(document).on("click.bs.carousel.data-api","[data-slide]",n).on("click.bs.carousel.data-api","[data-slide-to]",n),t(window).on("load",function(){t('[data-ride="carousel"]').each(function(){var i=t(this);e.call(i,i.data())})})}(jQuery),+function(t){"use strict";function e(e){var i=e.attr("data-target");i||(i=e.attr("href"),i=i&&/#[A-Za-z]/.test(i)&&i.replace(/.*(?=#[^\s]*$)/,""));var o=i&&t(i);return o&&o.length?o:e.parent()}function i(i){i&&3===i.which||(t(n).remove(),t(s).each(function(){var o=t(this),n=e(o),s={relatedTarget:this};n.hasClass("open")&&(i&&"click"==i.type&&/input|textarea/i.test(i.target.tagName)&&t.contains(n[0],i.target)||(n.trigger(i=t.Event("hide.bs.dropdown",s)),i.isDefaultPrevented()||(o.attr("aria-expanded","false"),n.removeClass("open").trigger("hidden.bs.dropdown",s))))}))}function o(e){return this.each(function(){var i=t(this),o=i.data("bs.dropdown");o||i.data("bs.dropdown",o=new a(this)),"string"==typeof e&&o[e].call(i)})}var n=".dropdown-backdrop",s='[data-toggle="dropdown"]',a=function(e){t(e).on("click.bs.dropdown",this.toggle)};a.VERSION="3.3.5",a.prototype.toggle=function(o){var n=t(this);if(!n.is(".disabled, :disabled")){var s=e(n),a=s.hasClass("open");if(i(),!a){"ontouchstart"in document.documentElement&&!s.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",i);var r={relatedTarget:this};if(s.trigger(o=t.Event("show.bs.dropdown",r)),o.isDefaultPrevented())return;n.trigger("focus").attr("aria-expanded","true"),s.toggleClass("open").trigger("shown.bs.dropdown",r)}return!1}},a.prototype.keydown=function(i){if(/(38|40|27|32)/.test(i.which)&&!/input|textarea/i.test(i.target.tagName)){var o=t(this);if(i.preventDefault(),i.stopPropagation(),!o.is(".disabled, :disabled")){var n=e(o),a=n.hasClass("open");if(!a&&27!=i.which||a&&27==i.which)return 27==i.which&&n.find(s).trigger("focus"),o.trigger("click");var r=" li:not(.disabled):visible a",l=n.find(".dropdown-menu"+r);if(l.length){var h=l.index(i.target);38==i.which&&h>0&&h--,40==i.which&&h<l.length-1&&h++,~h||(h=0),l.eq(h).trigger("focus")}}}};var r=t.fn.dropdown;t.fn.dropdown=o,t.fn.dropdown.Constructor=a,t.fn.dropdown.noConflict=function(){return t.fn.dropdown=r,this},t(document).on("click.bs.dropdown.data-api",i).on("click.bs.dropdown.data-api",".dropdown form",function(t){t.stopPropagation()}).on("click.bs.dropdown.data-api",s,a.prototype.toggle).on("keydown.bs.dropdown.data-api",s,a.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",a.prototype.keydown)}(jQuery),+function(t){"use strict";function e(e,o){return this.each(function(){var n=t(this),s=n.data("bs.modal"),a=t.extend({},i.DEFAULTS,n.data(),"object"==typeof e&&e);s||n.data("bs.modal",s=new i(this,a)),"string"==typeof e?s[e](o):a.show&&s.show(o)})}var i=function(e,i){this.options=i,this.$body=t(document.body),this.$element=t(e),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,t.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};i.VERSION="3.3.5",i.TRANSITION_DURATION=300,i.BACKDROP_TRANSITION_DURATION=150,i.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},i.prototype.toggle=function(t){return this.isShown?this.hide():this.show(t)},i.prototype.show=function(e){var o=this,n=t.Event("show.bs.modal",{relatedTarget:e});this.$element.trigger(n),this.isShown||n.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',t.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){o.$element.one("mouseup.dismiss.bs.modal",function(e){t(e.target).is(o.$element)&&(o.ignoreBackdropClick=!0)})}),this.backdrop(function(){var n=t.support.transition&&o.$element.hasClass("fade");o.$element.parent().length||o.$element.appendTo(o.$body),o.$element.show().scrollTop(0),o.adjustDialog(),n&&o.$element[0].offsetWidth,o.$element.addClass("in"),o.enforceFocus();var s=t.Event("shown.bs.modal",{relatedTarget:e});n?o.$dialog.one("bsTransitionEnd",function(){o.$element.trigger("focus").trigger(s)}).emulateTransitionEnd(i.TRANSITION_DURATION):o.$element.trigger("focus").trigger(s)}))},i.prototype.hide=function(e){e&&e.preventDefault(),e=t.Event("hide.bs.modal"),this.$element.trigger(e),this.isShown&&!e.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),t(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),t.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",t.proxy(this.hideModal,this)).emulateTransitionEnd(i.TRANSITION_DURATION):this.hideModal())},i.prototype.enforceFocus=function(){t(document).off("focusin.bs.modal").on("focusin.bs.modal",t.proxy(function(t){this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")},this))},i.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",t.proxy(function(t){27==t.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},i.prototype.resize=function(){this.isShown?t(window).on("resize.bs.modal",t.proxy(this.handleUpdate,this)):t(window).off("resize.bs.modal")},i.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$body.removeClass("modal-open"),t.resetAdjustments(),t.resetScrollbar(),t.$element.trigger("hidden.bs.modal")})},i.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},i.prototype.backdrop=function(e){var o=this,n=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var s=t.support.transition&&n;if(this.$backdrop=t(document.createElement("div")).addClass("modal-backdrop "+n).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",t.proxy(function(t){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(t.target===t.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),s&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!e)return;s?this.$backdrop.one("bsTransitionEnd",e).emulateTransitionEnd(i.BACKDROP_TRANSITION_DURATION):e()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var a=function(){o.removeBackdrop(),e&&e()};t.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",a).emulateTransitionEnd(i.BACKDROP_TRANSITION_DURATION):a()}else e&&e()},i.prototype.handleUpdate=function(){this.adjustDialog()},i.prototype.adjustDialog=function(){var t=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},i.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},i.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth<t,this.scrollbarWidth=this.measureScrollbar()},i.prototype.setScrollbar=function(){var t=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",t+this.scrollbarWidth)},i.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},i.prototype.measureScrollbar=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",this.$body.append(t);var e=t.offsetWidth-t.clientWidth;return this.$body[0].removeChild(t),e};var o=t.fn.modal;t.fn.modal=e,t.fn.modal.Constructor=i,t.fn.modal.noConflict=function(){return t.fn.modal=o,this},t(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(i){var o=t(this),n=o.attr("href"),s=t(o.attr("data-target")||n&&n.replace(/.*(?=#[^\s]+$)/,"")),a=s.data("bs.modal")?"toggle":t.extend({remote:!/#/.test(n)&&n},s.data(),o.data());o.is("a")&&i.preventDefault(),s.one("show.bs.modal",function(t){t.isDefaultPrevented()||s.one("hidden.bs.modal",function(){o.is(":visible")&&o.trigger("focus")})}),e.call(s,a,this)})}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.tooltip"),s="object"==typeof e&&e;(n||!/destroy|hide/.test(e))&&(n||o.data("bs.tooltip",n=new i(this,s)),"string"==typeof e&&n[e]())})}var i=function(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)};i.VERSION="3.3.5",i.TRANSITION_DURATION=150,i.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},i.prototype.init=function(e,i,o){if(this.enabled=!0,this.type=e,this.$element=t(i),this.options=this.getOptions(o),this.$viewport=this.options.viewport&&t(t.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var n=this.options.trigger.split(" "),s=n.length;s--;){var a=n[s];if("click"==a)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=a){var r="hover"==a?"mouseenter":"focusin",l="hover"==a?"mouseleave":"focusout";this.$element.on(r+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},i.prototype.getDefaults=function(){return i.DEFAULTS},i.prototype.getOptions=function(e){return e=t.extend({},this.getDefaults(),this.$element.data(),e),e.delay&&"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),e},i.prototype.getDelegateOptions=function(){var e={},i=this.getDefaults();return this._options&&t.each(this._options,function(t,o){i[t]!=o&&(e[t]=o)}),e},i.prototype.enter=function(e){var i=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);return i||(i=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,i)),e instanceof t.Event&&(i.inState["focusin"==e.type?"focus":"hover"]=!0),i.tip().hasClass("in")||"in"==i.hoverState?void(i.hoverState="in"):(clearTimeout(i.timeout),i.hoverState="in",i.options.delay&&i.options.delay.show?void(i.timeout=setTimeout(function(){"in"==i.hoverState&&i.show()},i.options.delay.show)):i.show())},i.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},i.prototype.leave=function(e){var i=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);return i||(i=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,i)),e instanceof t.Event&&(i.inState["focusout"==e.type?"focus":"hover"]=!1),i.isInStateTrue()?void 0:(clearTimeout(i.timeout),i.hoverState="out",i.options.delay&&i.options.delay.hide?void(i.timeout=setTimeout(function(){"out"==i.hoverState&&i.hide()},i.options.delay.hide)):i.hide())},i.prototype.show=function(){var e=t.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(e);var o=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(e.isDefaultPrevented()||!o)return;var n=this,s=this.tip(),a=this.getUID(this.type);this.setContent(),s.attr("id",a),this.$element.attr("aria-describedby",a),this.options.animation&&s.addClass("fade");var r="function"==typeof this.options.placement?this.options.placement.call(this,s[0],this.$element[0]):this.options.placement,l=/\s?auto?\s?/i,h=l.test(r);h&&(r=r.replace(l,"")||"top"),s.detach().css({top:0,left:0,display:"block"}).addClass(r).data("bs."+this.type,this),this.options.container?s.appendTo(this.options.container):s.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var d=this.getPosition(),p=s[0].offsetWidth,c=s[0].offsetHeight;if(h){var f=r,u=this.getPosition(this.$viewport);r="bottom"==r&&d.bottom+c>u.bottom?"top":"top"==r&&d.top-c<u.top?"bottom":"right"==r&&d.right+p>u.width?"left":"left"==r&&d.left-p<u.left?"right":r,s.removeClass(f).addClass(r)}var g=this.getCalculatedOffset(r,d,p,c);this.applyPlacement(g,r);var m=function(){var t=n.hoverState;n.$element.trigger("shown.bs."+n.type),n.hoverState=null,"out"==t&&n.leave(n)};t.support.transition&&this.$tip.hasClass("fade")?s.one("bsTransitionEnd",m).emulateTransitionEnd(i.TRANSITION_DURATION):m()}},i.prototype.applyPlacement=function(e,i){var o=this.tip(),n=o[0].offsetWidth,s=o[0].offsetHeight,a=parseInt(o.css("margin-top"),10),r=parseInt(o.css("margin-left"),10);isNaN(a)&&(a=0),isNaN(r)&&(r=0),e.top+=a,e.left+=r,t.offset.setOffset(o[0],t.extend({using:function(t){o.css({top:Math.round(t.top),left:Math.round(t.left)})}},e),0),o.addClass("in");var l=o[0].offsetWidth,h=o[0].offsetHeight;"top"==i&&h!=s&&(e.top=e.top+s-h);var d=this.getViewportAdjustedDelta(i,e,l,h);d.left?e.left+=d.left:e.top+=d.top;var p=/top|bottom/.test(i),c=p?2*d.left-n+l:2*d.top-s+h,f=p?"offsetWidth":"offsetHeight";o.offset(e),this.replaceArrow(c,o[0][f],p)},i.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?"left":"top",50*(1-t/e)+"%").css(i?"top":"left","")},i.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();t.find(".tooltip-inner")[this.options.html?"html":"text"](e),t.removeClass("fade in top bottom left right")},i.prototype.hide=function(e){function o(){"in"!=n.hoverState&&s.detach(),n.$element.removeAttr("aria-describedby").trigger("hidden.bs."+n.type),e&&e()}var n=this,s=t(this.$tip),a=t.Event("hide.bs."+this.type);return this.$element.trigger(a),a.isDefaultPrevented()?void 0:(s.removeClass("in"),t.support.transition&&s.hasClass("fade")?s.one("bsTransitionEnd",o).emulateTransitionEnd(i.TRANSITION_DURATION):o(),this.hoverState=null,this)},i.prototype.fixTitle=function(){var t=this.$element;(t.attr("title")||"string"!=typeof t.attr("data-original-title"))&&t.attr("data-original-title",t.attr("title")||"").attr("title","")},i.prototype.hasContent=function(){return this.getTitle()},i.prototype.getPosition=function(e){e=e||this.$element;var i=e[0],o="BODY"==i.tagName,n=i.getBoundingClientRect();null==n.width&&(n=t.extend({},n,{width:n.right-n.left,height:n.bottom-n.top}));var s=o?{top:0,left:0}:e.offset(),a={scroll:o?document.documentElement.scrollTop||document.body.scrollTop:e.scrollTop()},r=o?{width:t(window).width(),height:t(window).height()}:null;return t.extend({},n,a,r,s)},i.prototype.getCalculatedOffset=function(t,e,i,o){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-i/2}:"top"==t?{top:e.top-o,left:e.left+e.width/2-i/2}:"left"==t?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}},i.prototype.getViewportAdjustedDelta=function(t,e,i,o){var n={top:0,left:0};if(!this.$viewport)return n;var s=this.options.viewport&&this.options.viewport.padding||0,a=this.getPosition(this.$viewport);if(/right|left/.test(t)){var r=e.top-s-a.scroll,l=e.top+s-a.scroll+o;r<a.top?n.top=a.top-r:l>a.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;h<a.left?n.left=a.left-h:d>a.right&&(n.left=a.left+a.width-d)}return n},i.prototype.getTitle=function(){var t,e=this.$element,i=this.options;return t=e.attr("data-original-title")||("function"==typeof i.title?i.title.call(e[0]):i.title)},i.prototype.getUID=function(t){do t+=~~(1e6*Math.random());while(document.getElementById(t));return t},i.prototype.tip=function(){if(!this.$tip&&(this.$tip=t(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},i.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},i.prototype.enable=function(){this.enabled=!0},i.prototype.disable=function(){this.enabled=!1},i.prototype.toggleEnabled=function(){this.enabled=!this.enabled},i.prototype.toggle=function(e){var i=this;e&&(i=t(e.currentTarget).data("bs."+this.type),i||(i=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,i))),e?(i.inState.click=!i.inState.click,i.isInStateTrue()?i.enter(i):i.leave(i)):i.tip().hasClass("in")?i.leave(i):i.enter(i)},i.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null})};var o=t.fn.tooltip;t.fn.tooltip=e,t.fn.tooltip.Constructor=i,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=o,this}}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.popover"),s="object"==typeof e&&e;(n||!/destroy|hide/.test(e))&&(n||o.data("bs.popover",n=new i(this,s)),"string"==typeof e&&n[e]())})}var i=function(t,e){this.init("popover",t,e)};if(!t.fn.tooltip)throw new Error("Popover requires tooltip.js");i.VERSION="3.3.5",i.DEFAULTS=t.extend({},t.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),i.prototype=t.extend({},t.fn.tooltip.Constructor.prototype),i.prototype.constructor=i,i.prototype.getDefaults=function(){return i.DEFAULTS},i.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();t.find(".popover-title")[this.options.html?"html":"text"](e),t.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof i?"html":"append":"text"](i),t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},i.prototype.hasContent=function(){return this.getTitle()||this.getContent()},i.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},i.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var o=t.fn.popover;t.fn.popover=e,t.fn.popover.Constructor=i,t.fn.popover.noConflict=function(){return t.fn.popover=o,this}}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.tab");n||o.data("bs.tab",n=new i(this)),"string"==typeof e&&n[e]()})}var i=function(e){this.element=t(e)};i.VERSION="3.3.5",i.TRANSITION_DURATION=150,i.prototype.show=function(){var e=this.element,i=e.closest("ul:not(.dropdown-menu)"),o=e.data("target");if(o||(o=e.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,"")),!e.parent("li").hasClass("active")){var n=i.find(".active:last a"),s=t.Event("hide.bs.tab",{relatedTarget:e[0]}),a=t.Event("show.bs.tab",{relatedTarget:n[0]});if(n.trigger(s),e.trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){var r=t(o);this.activate(e.closest("li"),i),this.activate(r,r.parent(),function(){n.trigger({type:"hidden.bs.tab",relatedTarget:e[0]}),e.trigger({type:"shown.bs.tab",relatedTarget:n[0]})})}}},i.prototype.activate=function(e,o,n){function s(){a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),e.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),r?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu").length&&e.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),n&&n()}var a=o.find("> .active"),r=n&&t.support.transition&&(a.length&&a.hasClass("fade")||!!o.find("> .fade").length);a.length&&r?a.one("bsTransitionEnd",s).emulateTransitionEnd(i.TRANSITION_DURATION):s(),a.removeClass("in")};var o=t.fn.tab;t.fn.tab=e,t.fn.tab.Constructor=i,t.fn.tab.noConflict=function(){return t.fn.tab=o,this};var n=function(i){i.preventDefault(),e.call(t(this),"show")};t(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',n).on("click.bs.tab.data-api",'[data-toggle="pill"]',n)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var o=t(this),n=o.data("bs.affix"),s="object"==typeof e&&e;n||o.data("bs.affix",n=new i(this,s)),"string"==typeof e&&n[e]()})}var i=function(e,o){this.options=t.extend({},i.DEFAULTS,o),this.$target=t(this.options.target).on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(e),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};i.VERSION="3.3.5",i.RESET="affix affix-top affix-bottom",i.DEFAULTS={offset:0,target:window},i.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&"top"==this.affixed)return i>n?"top":!1;if("bottom"==this.affixed)return null!=i?n+this.unpin<=s.top?!1:"bottom":t-o>=n+a?!1:"bottom";var r=null==this.affixed,l=r?n:s.top,h=r?a:e;return null!=i&&i>=n?"top":null!=o&&l+h>=t-o?"bottom":!1},i.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(i.RESET).addClass("affix");var t=this.$target.scrollTop(),e=this.$element.offset();return this.pinnedOffset=e.top-t},i.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},i.prototype.checkPosition=function(){if(this.$element.is(":visible")){var e=this.$element.height(),o=this.options.offset,n=o.top,s=o.bottom,a=Math.max(t(document).height(),t(document.body).height());"object"!=typeof o&&(s=n=o),"function"==typeof n&&(n=o.top(this.$element)),"function"==typeof s&&(s=o.bottom(this.$element));var r=this.getState(a,e,n,s);if(this.affixed!=r){null!=this.unpin&&this.$element.css("top","");var l="affix"+(r?"-"+r:""),h=t.Event(l+".bs.affix");if(this.$element.trigger(h),h.isDefaultPrevented())return;this.affixed=r,this.unpin="bottom"==r?this.getPinnedOffset():null,this.$element.removeClass(i.RESET).addClass(l).trigger(l.replace("affix","affixed")+".bs.affix")}"bottom"==r&&this.$element.offset({top:a-e-s})}};var o=t.fn.affix;t.fn.affix=e,t.fn.affix.Constructor=i,t.fn.affix.noConflict=function(){return t.fn.affix=o,this},t(window).on("load",function(){t('[data-spy="affix"]').each(function(){var i=t(this),o=i.data();o.offset=o.offset||{},null!=o.offsetBottom&&(o.offset.bottom=o.offsetBottom),null!=o.offsetTop&&(o.offset.top=o.offsetTop),e.call(i,o)})})}(jQuery),+function(t){"use strict";function e(e){var i,o=e.attr("data-target")||(i=e.attr("href"))&&i.replace(/.*(?=#[^\s]+$)/,"");return t(o)}function i(e){return this.each(function(){var i=t(this),n=i.data("bs.collapse"),s=t.extend({},o.DEFAULTS,i.data(),"object"==typeof e&&e);!n&&s.toggle&&/show|hide/.test(e)&&(s.toggle=!1),n||i.data("bs.collapse",n=new o(this,s)),"string"==typeof e&&n[e]()})}var o=function(e,i){this.$element=t(e),this.options=t.extend({},o.DEFAULTS,i),this.$trigger=t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};o.VERSION="3.3.5",o.TRANSITION_DURATION=350,o.DEFAULTS={toggle:!0},o.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},o.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var e,n=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(n&&n.length&&(e=n.data("bs.collapse"),e&&e.transitioning))){var s=t.Event("show.bs.collapse");if(this.$element.trigger(s),!s.isDefaultPrevented()){n&&n.length&&(i.call(n,"hide"),e||n.data("bs.collapse",null));var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var r=function(){this.$element.removeClass("collapsing").addClass("collapse in")[a](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return r.call(this);var l=t.camelCase(["scroll",a].join("-"));this.$element.one("bsTransitionEnd",t.proxy(r,this)).emulateTransitionEnd(o.TRANSITION_DURATION)[a](this.$element[0][l]);
|
||
}}}},o.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var e=t.Event("hide.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var i=this.dimension();this.$element[i](this.$element[i]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var n=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return t.support.transition?void this.$element[i](0).one("bsTransitionEnd",t.proxy(n,this)).emulateTransitionEnd(o.TRANSITION_DURATION):n.call(this)}}},o.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},o.prototype.getParent=function(){return t(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(t.proxy(function(i,o){var n=t(o);this.addAriaAndCollapsedClass(e(n),n)},this)).end()},o.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass("in");t.attr("aria-expanded",i),e.toggleClass("collapsed",!i).attr("aria-expanded",i)};var n=t.fn.collapse;t.fn.collapse=i,t.fn.collapse.Constructor=o,t.fn.collapse.noConflict=function(){return t.fn.collapse=n,this},t(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(o){var n=t(this);n.attr("data-target")||o.preventDefault();var s=e(n),a=s.data("bs.collapse"),r=a?"toggle":n.data();i.call(s,r)})}(jQuery),+function(t){"use strict";function e(i,o){this.$body=t(document.body),this.$scrollElement=t(t(i).is(document.body)?window:i),this.options=t.extend({},e.DEFAULTS,o),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",t.proxy(this.process,this)),this.refresh(),this.process()}function i(i){return this.each(function(){var o=t(this),n=o.data("bs.scrollspy"),s="object"==typeof i&&i;n||o.data("bs.scrollspy",n=new e(this,s)),"string"==typeof i&&n[i]()})}e.VERSION="3.3.5",e.DEFAULTS={offset:10},e.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},e.prototype.refresh=function(){var e=this,i="offset",o=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),t.isWindow(this.$scrollElement[0])||(i="position",o=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var e=t(this),n=e.data("target")||e.attr("href"),s=/^#./.test(n)&&t(n);return s&&s.length&&s.is(":visible")&&[[s[i]().top+o,n]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){e.offsets.push(this[0]),e.targets.push(this[1])})},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,i=this.getScrollHeight(),o=this.options.offset+i-this.$scrollElement.height(),n=this.offsets,s=this.targets,a=this.activeTarget;if(this.scrollHeight!=i&&this.refresh(),e>=o)return a!=(t=s[s.length-1])&&this.activate(t);if(a&&e<n[0])return this.activeTarget=null,this.clear();for(t=n.length;t--;)a!=s[t]&&e>=n[t]&&(void 0===n[t+1]||e<n[t+1])&&this.activate(s[t])},e.prototype.activate=function(e){this.activeTarget=e,this.clear();var i=this.selector+'[data-target="'+e+'"],'+this.selector+'[href="'+e+'"]',o=t(i).parents("li").addClass("active");o.parent(".dropdown-menu").length&&(o=o.closest("li.dropdown").addClass("active")),o.trigger("activate.bs.scrollspy")},e.prototype.clear=function(){t(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var o=t.fn.scrollspy;t.fn.scrollspy=i,t.fn.scrollspy.Constructor=e,t.fn.scrollspy.noConflict=function(){return t.fn.scrollspy=o,this},t(window).on("load.bs.scrollspy.data-api",function(){t('[data-spy="scroll"]').each(function(){var e=t(this);i.call(e,e.data())})})}(jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(void 0!==t.style[i])return{end:e[i]};return!1}t.fn.emulateTransitionEnd=function(e){var i=!1,o=this;t(this).one("bsTransitionEnd",function(){i=!0});var n=function(){i||t(o).trigger(t.support.transition.end)};return setTimeout(n,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){return t(e.target).is(this)?e.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery);</script>
|
||
<script>var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
|
||
(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
|
||
[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
|
||
f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
|
||
(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
|
||
{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
|
||
t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
|
||
"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
|
||
l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
|
||
q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
|
||
q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
|
||
"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
|
||
a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
|
||
for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
|
||
m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
|
||
a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
|
||
j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
|
||
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
|
||
H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
|
||
J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
|
||
I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
|
||
["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
|
||
/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
|
||
["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
|
||
hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
|
||
!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
|
||
250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
|
||
PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();</script>
|
||
<script>events.js:377
|
||
throw er; // Unhandled 'error' event
|
||
^
|
||
|
||
Error: ENOENT: no such file or directory, open '/home/arong/Unity/PackageBuild/docs/html_standalone/https:/cdn.jsdelivr.net/fuse/2.5.0/fuse.min.js'
|
||
Emitted 'error' event on ReadStream instance at:
|
||
at internal/fs/streams.js:126:14
|
||
at FSReqCallback.oncomplete (fs.js:179:23) {
|
||
errno: -2,
|
||
code: 'ENOENT',
|
||
syscall: 'open',
|
||
path: '/home/arong/Unity/PackageBuild/docs/html_standalone/https:/cdn.jsdelivr.net/fuse/2.5.0/fuse.min.js'
|
||
}
|