/*! jQuery v1.7.1 jquery.com | jquery.org/license */
(function(a, b) {
function cy(a) {
return f.isWindow(a) ? a : a.nodeType === 9 ? a.defaultView || a.parentWindow : !1
}
function cv(a) {
if (!ck[a]) {
var b = c.body,
d = f("<" + a + ">").appendTo(b),
e = d.css("display");
d.remove();
if (e === "none" || e === "") {
cl || (cl = c.createElement("iframe"), cl.frameBorder = cl.width = cl.height = 0), b.appendChild(cl);
if (!cm || !cl.createElement) cm = (cl.contentWindow || cl.contentDocument).document, cm.write((c.compatMode === "CSS1Compat" ? "" : "") + "
"), cm.close();
d = cm.createElement(a), cm.body.appendChild(d), e = f.css(d, "display"), b.removeChild(cl)
}
ck[a] = e
}
return ck[a]
}
function cu(a, b) {
var c = {};
f.each(cq.concat.apply([], cq.slice(0, b)), function() {
c[this] = a
});
return c
}
function ct() {
cr = b
}
function cs() {
setTimeout(ct, 0);
return cr = f.now()
}
function cj() {
try {
return new a.ActiveXObject("Microsoft.XMLHTTP")
} catch (b) {}
}
function ci() {
try {
return new a.XMLHttpRequest
} catch (b) {}
}
function cc(a, c) {
a.dataFilter && (c = a.dataFilter(c, a.dataType));
var d = a.dataTypes,
e = {},
g, h, i = d.length,
j, k = d[0],
l, m, n, o, p;
for (g = 1; g < i; g++) {
if (g === 1)
for (h in a.converters) typeof h == "string" && (e[h.toLowerCase()] = a.converters[h]);
l = k, k = d[g];
if (k === "*") k = l;
else if (l !== "*" && l !== k) {
m = l + " " + k, n = e[m] || e["* " + k];
if (!n) {
p = b;
for (o in e) {
j = o.split(" ");
if (j[0] === l || j[0] === "*") {
p = e[j[1] + " " + k];
if (p) {
o = e[o], o === !0 ? n = p : p === !0 && (n = o);
break
}
}
}
}!n && !p && f.error("No conversion from " + m.replace(" ", " to ")), n !== !0 && (c = n ? n(c) : p(o(c)))
}
}
return c
}
function cb(a, c, d) {
var e = a.contents,
f = a.dataTypes,
g = a.responseFields,
h, i, j, k;
for (i in g) i in d && (c[g[i]] = d[i]);
while (f[0] === "*") f.shift(), h === b && (h = a.mimeType || c.getResponseHeader("content-type"));
if (h)
for (i in e)
if (e[i] && e[i].test(h)) {
f.unshift(i);
break
}
if (f[0] in d) j = f[0];
else {
for (i in d) {
if (!f[0] || a.converters[i + " " + f[0]]) {
j = i;
break
}
k || (k = i)
}
j = j || k
}
if (j) {
j !== f[0] && f.unshift(j);
return d[j]
}
}
function ca(a, b, c, d) {
if (f.isArray(b)) f.each(b, function(b, e) {
c || bE.test(a) ? d(a, e) : ca(a + "[" + (typeof e == "object" || f.isArray(e) ? b : "") + "]", e, c, d)
});
else if (!c && b != null && typeof b == "object")
for (var e in b) ca(a + "[" + e + "]", b[e], c, d);
else d(a, b)
}
function b_(a, c) {
var d, e, g = f.ajaxSettings.flatOptions || {};
for (d in c) c[d] !== b && ((g[d] ? a : e || (e = {}))[d] = c[d]);
e && f.extend(!0, a, e)
}
function b$(a, c, d, e, f, g) {
f = f || c.dataTypes[0], g = g || {}, g[f] = !0;
var h = a[f],
i = 0,
j = h ? h.length : 0,
k = a === bT,
l;
for (; i < j && (k || !l); i++) l = h[i](c, d, e), typeof l == "string" && (!k || g[l] ? l = b : (c.dataTypes.unshift(l), l = b$(a, c, d, e, l, g)));
(k || !l) && !g["*"] && (l = b$(a, c, d, e, "*", g));
return l
}
function bZ(a) {
return function(b, c) {
typeof b != "string" && (c = b, b = "*");
if (f.isFunction(c)) {
var d = b.toLowerCase().split(bP),
e = 0,
g = d.length,
h, i, j;
for (; e < g; e++) h = d[e], j = /^\+/.test(h), j && (h = h.substr(1) || "*"), i = a[h] = a[h] || [], i[j ? "unshift" : "push"](c)
}
}
}
function bC(a, b, c) {
var d = b === "width" ? a.offsetWidth : a.offsetHeight,
e = b === "width" ? bx : by,
g = 0,
h = e.length;
if (d > 0) {
if (c !== "border")
for (; g < h; g++) c || (d -= parseFloat(f.css(a, "padding" + e[g])) || 0), c === "margin" ? d += parseFloat(f.css(a, c + e[g])) || 0 : d -= parseFloat(f.css(a, "border" + e[g] + "Width")) || 0;
return d + "px"
}
d = bz(a, b, b);
if (d < 0 || d == null) d = a.style[b] || 0;
d = parseFloat(d) || 0;
if (c)
for (; g < h; g++) d += parseFloat(f.css(a, "padding" + e[g])) || 0, c !== "padding" && (d += parseFloat(f.css(a, "border" + e[g] + "Width")) || 0), c === "margin" && (d += parseFloat(f.css(a, c + e[g])) || 0);
return d + "px"
}
function bp(a, b) {
b.src ? f.ajax({
url: b.src,
async: !1,
dataType: "script"
}) : f.globalEval((b.text || b.textContent || b.innerHTML || "").replace(bf, "/*$0*/")), b.parentNode && b.parentNode.removeChild(b)
}
function bo(a) {
var b = c.createElement("div");
bh.appendChild(b), b.innerHTML = a.outerHTML;
return b.firstChild
}
function bn(a) {
var b = (a.nodeName || "").toLowerCase();
b === "input" ? bm(a) : b !== "script" && typeof a.getElementsByTagName != "undefined" && f.grep(a.getElementsByTagName("input"), bm)
}
function bm(a) {
if (a.type === "checkbox" || a.type === "radio") a.defaultChecked = a.checked
}
function bl(a) {
return typeof a.getElementsByTagName != "undefined" ? a.getElementsByTagName("*") : typeof a.querySelectorAll != "undefined" ? a.querySelectorAll("*") : []
}
function bk(a, b) {
var c;
if (b.nodeType === 1) {
b.clearAttributes && b.clearAttributes(), b.mergeAttributes && b.mergeAttributes(a), c = b.nodeName.toLowerCase();
if (c === "object") b.outerHTML = a.outerHTML;
else if (c !== "input" || a.type !== "checkbox" && a.type !== "radio") {
if (c === "option") b.selected = a.defaultSelected;
else if (c === "input" || c === "textarea") b.defaultValue = a.defaultValue
} else a.checked && (b.defaultChecked = b.checked = a.checked), b.value !== a.value && (b.value = a.value);
b.removeAttribute(f.expando)
}
}
function bj(a, b) {
if (b.nodeType === 1 && !!f.hasData(a)) {
var c, d, e, g = f._data(a),
h = f._data(b, g),
i = g.events;
if (i) {
delete h.handle, h.events = {};
for (c in i)
for (d = 0, e = i[c].length; d < e; d++) f.event.add(b, c + (i[c][d].namespace ? "." : "") + i[c][d].namespace, i[c][d], i[c][d].data)
}
h.data && (h.data = f.extend({}, h.data))
}
}
function bi(a, b) {
return f.nodeName(a, "table") ? a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a
}
function U(a) {
var b = V.split("|"),
c = a.createDocumentFragment();
if (c.createElement)
while (b.length) c.createElement(b.pop());
return c
}
function T(a, b, c) {
b = b || 0;
if (f.isFunction(b)) return f.grep(a, function(a, d) {
var e = !!b.call(a, d, a);
return e === c
});
if (b.nodeType) return f.grep(a, function(a, d) {
return a === b === c
});
if (typeof b == "string") {
var d = f.grep(a, function(a) {
return a.nodeType === 1
});
if (O.test(b)) return f.filter(b, d, !c);
b = f.filter(b, d)
}
return f.grep(a, function(a, d) {
return f.inArray(a, b) >= 0 === c
})
}
function S(a) {
return !a || !a.parentNode || a.parentNode.nodeType === 11
}
function K() {
return !0
}
function J() {
return !1
}
function n(a, b, c) {
var d = b + "defer",
e = b + "queue",
g = b + "mark",
h = f._data(a, d);
h && (c === "queue" || !f._data(a, e)) && (c === "mark" || !f._data(a, g)) && setTimeout(function() {
!f._data(a, e) && !f._data(a, g) && (f.removeData(a, d, !0), h.fire())
}, 0)
}
function m(a) {
for (var b in a) {
if (b === "data" && f.isEmptyObject(a[b])) continue;
if (b !== "toJSON") return !1
}
return !0
}
function l(a, c, d) {
if (d === b && a.nodeType === 1) {
var e = "data-" + c.replace(k, "-$1").toLowerCase();
d = a.getAttribute(e);
if (typeof d == "string") {
try {
d = d === "true" ? !0 : d === "false" ? !1 : d === "null" ? null : f.isNumeric(d) ? parseFloat(d) : j.test(d) ? f.parseJSON(d) : d
} catch (g) {}
f.data(a, c, d)
} else d = b
}
return d
}
function h(a) {
var b = g[a] = {},
c, d;
a = a.split(/\s+/);
for (c = 0, d = a.length; c < d; c++) b[a[c]] = !0;
return b
}
var c = a.document,
d = a.navigator,
e = a.location,
f = function() {
function J() {
if (!e.isReady) {
try {
c.documentElement.doScroll("left")
} catch (a) {
setTimeout(J, 1);
return
}
e.ready()
}
}
var e = function(a, b) {
return new e.fn.init(a, b, h)
},
f = a.jQuery,
g = a.$,
h, i = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
j = /\S/,
k = /^\s+/,
l = /\s+$/,
m = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
n = /^[\],:{}\s]*$/,
o = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
p = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
q = /(?:^|:|,)(?:\s*\[)+/g,
r = /(webkit)[ \/]([\w.]+)/,
s = /(opera)(?:.*version)?[ \/]([\w.]+)/,
t = /(msie) ([\w.]+)/,
u = /(mozilla)(?:.*? rv:([\w.]+))?/,
v = /-([a-z]|[0-9])/ig,
w = /^-ms-/,
x = function(a, b) {
return (b + "").toUpperCase()
},
y = d.userAgent,
z, A, B, C = Object.prototype.toString,
D = Object.prototype.hasOwnProperty,
E = Array.prototype.push,
F = Array.prototype.slice,
G = String.prototype.trim,
H = Array.prototype.indexOf,
I = {};
e.fn = e.prototype = {
constructor: e,
init: function(a, d, f) {
var g, h, j, k;
if (!a) return this;
if (a.nodeType) {
this.context = this[0] = a, this.length = 1;
return this
}
if (a === "body" && !d && c.body) {
this.context = c, this[0] = c.body, this.selector = a, this.length = 1;
return this
}
if (typeof a == "string") {
a.charAt(0) !== "<" || a.charAt(a.length - 1) !== ">" || a.length < 3 ? g = i.exec(a) : g = [null, a, null];
if (g && (g[1] || !d)) {
if (g[1]) {
d = d instanceof e ? d[0] : d, k = d ? d.ownerDocument || d : c, j = m.exec(a), j ? e.isPlainObject(d) ? (a = [c.createElement(j[1])], e.fn.attr.call(a, d, !0)) : a = [k.createElement(j[1])] : (j = e.buildFragment([g[1]], [k]), a = (j.cacheable ? e.clone(j.fragment) : j.fragment).childNodes);
return e.merge(this, a)
}
h = c.getElementById(g[2]);
if (h && h.parentNode) {
if (h.id !== g[2]) return f.find(a);
this.length = 1, this[0] = h
}
this.context = c, this.selector = a;
return this
}
return !d || d.jquery ? (d || f).find(a) : this.constructor(d).find(a)
}
if (e.isFunction(a)) return f.ready(a);
a.selector !== b && (this.selector = a.selector, this.context = a.context);
return e.makeArray(a, this)
},
selector: "",
jquery: "1.7.1",
length: 0,
size: function() {
return this.length
},
toArray: function() {
return F.call(this, 0)
},
get: function(a) {
return a == null ? this.toArray() : a < 0 ? this[this.length + a] : this[a]
},
pushStack: function(a, b, c) {
var d = this.constructor();
e.isArray(a) ? E.apply(d, a) : e.merge(d, a), d.prevObject = this, d.context = this.context, b === "find" ? d.selector = this.selector + (this.selector ? " " : "") + c : b && (d.selector = this.selector + "." + b + "(" + c + ")");
return d
},
each: function(a, b) {
return e.each(this, a, b)
},
ready: function(a) {
e.bindReady(), A.add(a);
return this
},
eq: function(a) {
a = +a;
return a === -1 ? this.slice(a) : this.slice(a, a + 1)
},
first: function() {
return this.eq(0)
},
last: function() {
return this.eq(-1)
},
slice: function() {
return this.pushStack(F.apply(this, arguments), "slice", F.call(arguments).join(","))
},
map: function(a) {
return this.pushStack(e.map(this, function(b, c) {
return a.call(b, c, b)
}))
},
end: function() {
return this.prevObject || this.constructor(null)
},
push: E,
sort: [].sort,
splice: [].splice
}, e.fn.init.prototype = e.fn, e.extend = e.fn.extend = function() {
var a, c, d, f, g, h, i = arguments[0] || {},
j = 1,
k = arguments.length,
l = !1;
typeof i == "boolean" && (l = i, i = arguments[1] || {}, j = 2), typeof i != "object" && !e.isFunction(i) && (i = {}), k === j && (i = this, --j);
for (; j < k; j++)
if ((a = arguments[j]) != null)
for (c in a) {
d = i[c], f = a[c];
if (i === f) continue;
l && f && (e.isPlainObject(f) || (g = e.isArray(f))) ? (g ? (g = !1, h = d && e.isArray(d) ? d : []) : h = d && e.isPlainObject(d) ? d : {}, i[c] = e.extend(l, h, f)) : f !== b && (i[c] = f)
}
return i
}, e.extend({
noConflict: function(b) {
a.$ === e && (a.$ = g), b && a.jQuery === e && (a.jQuery = f);
return e
},
isReady: !1,
readyWait: 1,
holdReady: function(a) {
a ? e.readyWait++ : e.ready(!0)
},
ready: function(a) {
if (a === !0 && !--e.readyWait || a !== !0 && !e.isReady) {
if (!c.body) return setTimeout(e.ready, 1);
e.isReady = !0;
if (a !== !0 && --e.readyWait > 0) return;
A.fireWith(c, [e]), e.fn.trigger && e(c).trigger("ready").off("ready")
}
},
bindReady: function() {
if (!A) {
A = e.Callbacks("once memory");
if (c.readyState === "complete") return setTimeout(e.ready, 1);
if (c.addEventListener) c.addEventListener("DOMContentLoaded", B, !1), a.addEventListener("load", e.ready, !1);
else if (c.attachEvent) {
c.attachEvent("onreadystatechange", B), a.attachEvent("onload", e.ready);
var b = !1;
try {
b = a.frameElement == null
} catch (d) {}
c.documentElement.doScroll && b && J()
}
}
},
isFunction: function(a) {
return e.type(a) === "function"
},
isArray: Array.isArray || function(a) {
return e.type(a) === "array"
},
isWindow: function(a) {
return a && typeof a == "object" && "setInterval" in a
},
isNumeric: function(a) {
return !isNaN(parseFloat(a)) && isFinite(a)
},
type: function(a) {
return a == null ? String(a) : I[C.call(a)] || "object"
},
isPlainObject: function(a) {
if (!a || e.type(a) !== "object" || a.nodeType || e.isWindow(a)) return !1;
try {
if (a.constructor && !D.call(a, "constructor") && !D.call(a.constructor.prototype, "isPrototypeOf")) return !1
} catch (c) {
return !1
}
var d;
for (d in a);
return d === b || D.call(a, d)
},
isEmptyObject: function(a) {
for (var b in a) return !1;
return !0
},
error: function(a) {
throw new Error(a)
},
parseJSON: function(b) {
if (typeof b != "string" || !b) return null;
b = e.trim(b);
if (a.JSON && a.JSON.parse) return a.JSON.parse(b);
if (n.test(b.replace(o, "@").replace(p, "]").replace(q, ""))) return (new Function("return " + b))();
e.error("Invalid JSON: " + b)
},
parseXML: function(c) {
var d, f;
try {
a.DOMParser ? (f = new DOMParser, d = f.parseFromString(c, "text/xml")) : (d = new ActiveXObject("Microsoft.XMLDOM"), d.async = "false", d.loadXML(c))
} catch (g) {
d = b
}(!d || !d.documentElement || d.getElementsByTagName("parsererror").length) && e.error("Invalid XML: " + c);
return d
},
noop: function() {},
globalEval: function(b) {
b && j.test(b) && (a.execScript || function(b) {
a.eval.call(a, b)
})(b)
},
camelCase: function(a) {
return a.replace(w, "ms-").replace(v, x)
},
nodeName: function(a, b) {
return a.nodeName && a.nodeName.toUpperCase() === b.toUpperCase()
},
each: function(a, c, d) {
var f, g = 0,
h = a.length,
i = h === b || e.isFunction(a);
if (d) {
if (i) {
for (f in a)
if (c.apply(a[f], d) === !1) break
} else
for (; g < h;)
if (c.apply(a[g++], d) === !1) break
} else if (i) {
for (f in a)
if (c.call(a[f], f, a[f]) === !1) break
} else
for (; g < h;)
if (c.call(a[g], g, a[g++]) === !1) break; return a
},
trim: G ? function(a) {
return a == null ? "" : G.call(a)
} : function(a) {
return a == null ? "" : (a + "").replace(k, "").replace(l, "")
},
makeArray: function(a, b) {
var c = b || [];
if (a != null) {
var d = e.type(a);
a.length == null || d === "string" || d === "function" || d === "regexp" || e.isWindow(a) ? E.call(c, a) : e.merge(c, a)
}
return c
},
inArray: function(a, b, c) {
var d;
if (b) {
if (H) return H.call(b, a, c);
d = b.length, c = c ? c < 0 ? Math.max(0, d + c) : c : 0;
for (; c < d; c++)
if (c in b && b[c] === a) return c
}
return -1
},
merge: function(a, c) {
var d = a.length,
e = 0;
if (typeof c.length == "number")
for (var f = c.length; e < f; e++) a[d++] = c[e];
else
while (c[e] !== b) a[d++] = c[e++];
a.length = d;
return a
},
grep: function(a, b, c) {
var d = [],
e;
c = !!c;
for (var f = 0, g = a.length; f < g; f++) e = !!b(a[f], f), c !== e && d.push(a[f]);
return d
},
map: function(a, c, d) {
var f, g, h = [],
i = 0,
j = a.length,
k = a instanceof e || j !== b && typeof j == "number" && (j > 0 && a[0] && a[j - 1] || j === 0 || e.isArray(a));
if (k)
for (; i < j; i++) f = c(a[i], i, d), f != null && (h[h.length] = f);
else
for (g in a) f = c(a[g], g, d), f != null && (h[h.length] = f);
return h.concat.apply([], h)
},
guid: 1,
proxy: function(a, c) {
if (typeof c == "string") {
var d = a[c];
c = a, a = d
}
if (!e.isFunction(a)) return b;
var f = F.call(arguments, 2),
g = function() {
return a.apply(c, f.concat(F.call(arguments)))
};
g.guid = a.guid = a.guid || g.guid || e.guid++;
return g
},
access: function(a, c, d, f, g, h) {
var i = a.length;
if (typeof c == "object") {
for (var j in c) e.access(a, j, c[j], f, g, d);
return a
}
if (d !== b) {
f = !h && f && e.isFunction(d);
for (var k = 0; k < i; k++) g(a[k], c, f ? d.call(a[k], k, g(a[k], c)) : d, h);
return a
}
return i ? g(a[0], c) : b
},
now: function() {
return (new Date).getTime()
},
uaMatch: function(a) {
a = a.toLowerCase();
var b = r.exec(a) || s.exec(a) || t.exec(a) || a.indexOf("compatible") < 0 && u.exec(a) || [];
return {
browser: b[1] || "",
version: b[2] || "0"
}
},
sub: function() {
function a(b, c) {
return new a.fn.init(b, c)
}
e.extend(!0, a, this), a.superclass = this, a.fn = a.prototype = this(), a.fn.constructor = a, a.sub = this.sub, a.fn.init = function(d, f) {
f && f instanceof e && !(f instanceof a) && (f = a(f));
return e.fn.init.call(this, d, f, b)
}, a.fn.init.prototype = a.fn;
var b = a(c);
return a
},
browser: {}
}), e.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(a, b) {
I["[object " + b + "]"] = b.toLowerCase()
}), z = e.uaMatch(y), z.browser && (e.browser[z.browser] = !0, e.browser.version = z.version), e.browser.webkit && (e.browser.safari = !0), j.test(" ") && (k = /^[\s\xA0]+/, l = /[\s\xA0]+$/), h = e(c), c.addEventListener ? B = function() {
c.removeEventListener("DOMContentLoaded", B, !1), e.ready()
} : c.attachEvent && (B = function() {
c.readyState === "complete" && (c.detachEvent("onreadystatechange", B), e.ready())
});
return e
}(),
g = {};
f.Callbacks = function(a) {
a = a ? g[a] || h(a) : {};
var c = [],
d = [],
e, i, j, k, l, m = function(b) {
var d, e, g, h, i;
for (d = 0, e = b.length; d < e; d++) g = b[d], h = f.type(g), h === "array" ? m(g) : h === "function" && (!a.unique || !o.has(g)) && c.push(g)
},
n = function(b, f) {
f = f || [], e = !a.memory || [b, f], i = !0, l = j || 0, j = 0, k = c.length;
for (; c && l < k; l++)
if (c[l].apply(b, f) === !1 && a.stopOnFalse) {
e = !0;
break
}
i = !1, c && (a.once ? e === !0 ? o.disable() : c = [] : d && d.length && (e = d.shift(), o.fireWith(e[0], e[1])))
},
o = {
add: function() {
if (c) {
var a = c.length;
m(arguments), i ? k = c.length : e && e !== !0 && (j = a, n(e[0], e[1]))
}
return this
},
remove: function() {
if (c) {
var b = arguments,
d = 0,
e = b.length;
for (; d < e; d++)
for (var f = 0; f < c.length; f++)
if (b[d] === c[f]) {
i && f <= k && (k--, f <= l && l--), c.splice(f--, 1);
if (a.unique) break
}
}
return this
},
has: function(a) {
if (c) {
var b = 0,
d = c.length;
for (; b < d; b++)
if (a === c[b]) return !0
}
return !1
},
empty: function() {
c = [];
return this
},
disable: function() {
c = d = e = b;
return this
},
disabled: function() {
return !c
},
lock: function() {
d = b, (!e || e === !0) && o.disable();
return this
},
locked: function() {
return !d
},
fireWith: function(b, c) {
d && (i ? a.once || d.push([b, c]) : (!a.once || !e) && n(b, c));
return this
},
fire: function() {
o.fireWith(this, arguments);
return this
},
fired: function() {
return !!e
}
};
return o
};
var i = [].slice;
f.extend({
Deferred: function(a) {
var b = f.Callbacks("once memory"),
c = f.Callbacks("once memory"),
d = f.Callbacks("memory"),
e = "pending",
g = {
resolve: b,
reject: c,
notify: d
},
h = {
done: b.add,
fail: c.add,
progress: d.add,
state: function() {
return e
},
isResolved: b.fired,
isRejected: c.fired,
then: function(a, b, c) {
i.done(a).fail(b).progress(c);
return this
},
always: function() {
i.done.apply(i, arguments).fail.apply(i, arguments);
return this
},
pipe: function(a, b, c) {
return f.Deferred(function(d) {
f.each({
done: [a, "resolve"],
fail: [b, "reject"],
progress: [c, "notify"]
}, function(a, b) {
var c = b[0],
e = b[1],
g;
f.isFunction(c) ? i[a](function() {
g = c.apply(this, arguments), g && f.isFunction(g.promise) ? g.promise().then(d.resolve, d.reject, d.notify) : d[e + "With"](this === i ? d : this, [g])
}) : i[a](d[e])
})
}).promise()
},
promise: function(a) {
if (a == null) a = h;
else
for (var b in h) a[b] = h[b];
return a
}
},
i = h.promise({}),
j;
for (j in g) i[j] = g[j].fire, i[j + "With"] = g[j].fireWith;
i.done(function() {
e = "resolved"
}, c.disable, d.lock).fail(function() {
e = "rejected"
}, b.disable, d.lock), a && a.call(i, i);
return i
},
when: function(a) {
function m(a) {
return function(b) {
e[a] = arguments.length > 1 ? i.call(arguments, 0) : b, j.notifyWith(k, e)
}
}
function l(a) {
return function(c) {
b[a] = arguments.length > 1 ? i.call(arguments, 0) : c, --g || j.resolveWith(j, b)
}
}
var b = i.call(arguments, 0),
c = 0,
d = b.length,
e = Array(d),
g = d,
h = d,
j = d <= 1 && a && f.isFunction(a.promise) ? a : f.Deferred(),
k = j.promise();
if (d > 1) {
for (; c < d; c++) b[c] && b[c].promise && f.isFunction(b[c].promise) ? b[c].promise().then(l(c), j.reject, m(c)) : --g;
g || j.resolveWith(j, b)
} else j !== a && j.resolveWith(j, d ? [a] : []);
return k
}
}), f.support = function() {
var b, d, e, g, h, i, j, k, l, m, n, o, p, q = c.createElement("div"),
r = c.documentElement;
q.setAttribute("className", "t"), q.innerHTML = "
a", d = q.getElementsByTagName("*"), e = q.getElementsByTagName("a")[0];
if (!d || !d.length || !e) return {};
g = c.createElement("select"), h = g.appendChild(c.createElement("option")), i = q.getElementsByTagName("input")[0], b = {
leadingWhitespace: q.firstChild.nodeType === 3,
tbody: !q.getElementsByTagName("tbody").length,
htmlSerialize: !!q.getElementsByTagName("link").length,
style: /top/.test(e.getAttribute("style")),
hrefNormalized: e.getAttribute("href") === "/a",
opacity: /^0.55/.test(e.style.opacity),
cssFloat: !!e.style.cssFloat,
checkOn: i.value === "on",
optSelected: h.selected,
getSetAttribute: q.className !== "t",
enctype: !!c.createElement("form").enctype,
html5Clone: c.createElement("nav").cloneNode(!0).outerHTML !== "<:nav>",
submitBubbles: !0,
changeBubbles: !0,
focusinBubbles: !1,
deleteExpando: !0,
noCloneEvent: !0,
inlineBlockNeedsLayout: !1,
shrinkWrapBlocks: !1,
reliableMarginRight: !0
}, i.checked = !0, b.noCloneChecked = i.cloneNode(!0).checked, g.disabled = !0, b.optDisabled = !h.disabled;
try {
delete q.test
} catch (s) {
b.deleteExpando = !1
}!q.addEventListener && q.attachEvent && q.fireEvent && (q.attachEvent("onclick", function() {
b.noCloneEvent = !1
}), q.cloneNode(!0).fireEvent("onclick")), i = c.createElement("input"), i.value = "t", i.setAttribute("type", "radio"), b.radioValue = i.value === "t", i.setAttribute("checked", "checked"), q.appendChild(i), k = c.createDocumentFragment(), k.appendChild(q.lastChild), b.checkClone = k.cloneNode(!0).cloneNode(!0).lastChild.checked, b.appendChecked = i.checked, k.removeChild(i), k.appendChild(q), q.innerHTML = "", a.getComputedStyle && (j = c.createElement("div"), j.style.width = "0", j.style.marginRight = "0", q.style.width = "2px", q.appendChild(j), b.reliableMarginRight = (parseInt((a.getComputedStyle(j, null) || {
marginRight: 0
}).marginRight, 10) || 0) === 0);
if (q.attachEvent)
for (o in {
submit: 1,
change: 1,
focusin: 1
}) n = "on" + o, p = n in q, p || (q.setAttribute(n, "return;"), p = typeof q[n] == "function"), b[o + "Bubbles"] = p;
k.removeChild(q), k = g = h = j = q = i = null, f(function() {
var a, d, e, g, h, i, j, k, m, n, o, r = c.getElementsByTagName("body")[0];
!r || (j = 1, k = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;", m = "visibility:hidden;border:0;", n = "style='" + k + "border:5px solid #000;padding:0;'", o = "