aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJinwei Zhao <[email protected]>2016-04-04 14:00:39 +0800
committerJinwei Zhao <[email protected]>2017-01-13 15:07:45 +0800
commite002d09d2b6b2317fec6caa8836b20e6709c5da3 (patch)
tree1e1623524986fc63abcab7b10912dffe55dc1da9 /deprecated/jinweiclarkchao.github.io/assets
parentdbcebe1def5c355120c61b575390d1d9ac355f67 (diff)
downloadjinwei.me-e002d09d2b6b2317fec6caa8836b20e6709c5da3.tar.gz
jinwei.me
Diffstat (limited to 'deprecated/jinweiclarkchao.github.io/assets')
-rw-r--r--deprecated/jinweiclarkchao.github.io/assets/jquery.js3376
-rw-r--r--deprecated/jinweiclarkchao.github.io/assets/pjax.js838
-rw-r--r--deprecated/jinweiclarkchao.github.io/assets/stuff.js34
-rw-r--r--deprecated/jinweiclarkchao.github.io/assets/style.css360
4 files changed, 4608 insertions, 0 deletions
diff --git a/deprecated/jinweiclarkchao.github.io/assets/jquery.js b/deprecated/jinweiclarkchao.github.io/assets/jquery.js
new file mode 100644
index 0000000..88ce3dd
--- /dev/null
+++ b/deprecated/jinweiclarkchao.github.io/assets/jquery.js
@@ -0,0 +1,3376 @@
1/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
2 */
3(function(e, t) {
4 var n, r, i = typeof t,
5 o = e.document,
6 a = e.location,
7 s = e.jQuery,
8 u = e.$,
9 l = {},
10 c = [],
11 p = "1.9.1",
12 f = c.concat,
13 d = c.push,
14 h = c.slice,
15 g = c.indexOf,
16 m = l.toString,
17 y = l.hasOwnProperty,
18 v = p.trim,
19 b = function(e, t) {
20 return new b.fn.init(e, t, r)
21 },
22 x = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
23 w = /\S+/g,
24 T = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
25 N = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,
26 C = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
27 k = /^[\],:{}\s]*$/,
28 E = /(?:^|:|,)(?:\s*\[)+/g,
29 S = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
30 A = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
31 j = /^-ms-/,
32 D = /-([\da-z])/gi,
33 L = function(e, t) {
34 return t.toUpperCase()
35 },
36 H = function(e) {
37 (o.addEventListener || "load" === e.type || "complete" === o.readyState) && (q(), b.ready())
38 },
39 q = function() {
40 o.addEventListener ? (o.removeEventListener("DOMContentLoaded", H, !1), e.removeEventListener("load", H, !1)) : (o.detachEvent("onreadystatechange", H), e.detachEvent("onload", H))
41 };
42 b.fn = b.prototype = {
43 jquery: p,
44 constructor: b,
45 init: function(e, n, r) {
46 var i, a;
47 if (!e) return this;
48 if ("string" == typeof e) {
49 if (i = "<" === e.charAt(0) && ">" === e.charAt(e.length - 1) && e.length >= 3 ? [null, e, null] : N.exec(e), !i || !i[1] && n) return !n || n.jquery ? (n || r).find(e) : this.constructor(n).find(e);
50 if (i[1]) {
51 if (n = n instanceof b ? n[0] : n, b.merge(this, b.parseHTML(i[1], n && n.nodeType ? n.ownerDocument || n : o, !0)), C.test(i[1]) && b.isPlainObject(n))
52 for (i in n) b.isFunction(this[i]) ? this[i](n[i]) : this.attr(i, n[i]);
53 return this
54 }
55 if (a = o.getElementById(i[2]), a && a.parentNode) {
56 if (a.id !== i[2]) return r.find(e);
57 this.length = 1, this[0] = a
58 }
59 return this.context = o, this.selector = e, this
60 }
61 return e.nodeType ? (this.context = this[0] = e, this.length = 1, this) : b.isFunction(e) ? r.ready(e) : (e.selector !== t && (this.selector = e.selector, this.context = e.context), b.makeArray(e, this))
62 },
63 selector: "",
64 length: 0,
65 size: function() {
66 return this.length
67 },
68 toArray: function() {
69 return h.call(this)
70 },
71 get: function(e) {
72 return null == e ? this.toArray() : 0 > e ? this[this.length + e] : this[e]
73 },
74 pushStack: function(e) {
75 var t = b.merge(this.constructor(), e);
76 return t.prevObject = this, t.context = this.context, t
77 },
78 each: function(e, t) {
79 return b.each(this, e, t)
80 },
81 ready: function(e) {
82 return b.ready.promise().done(e), this
83 },
84 slice: function() {
85 return this.pushStack(h.apply(this, arguments))
86 },
87 first: function() {
88 return this.eq(0)
89 },
90 last: function() {
91 return this.eq(-1)
92 },
93 eq: function(e) {
94 var t = this.length,
95 n = +e + (0 > e ? t : 0);
96 return this.pushStack(n >= 0 && t > n ? [this[n]] : [])
97 },
98 map: function(e) {
99 return this.pushStack(b.map(this, function(t, n) {
100 return e.call(t, n, t)
101 }))
102 },
103 end: function() {
104 return this.prevObject || this.constructor(null)
105 },
106 push: d,
107 sort: [].sort,
108 splice: [].splice
109 }, b.fn.init.prototype = b.fn, b.extend = b.fn.extend = function() {
110 var e, n, r, i, o, a, s = arguments[0] || {},
111 u = 1,
112 l = arguments.length,
113 c = !1;
114 for ("boolean" == typeof s && (c = s, s = arguments[1] || {}, u = 2), "object" == typeof s || b.isFunction(s) || (s = {}), l === u && (s = this, --u); l > u; u++)
115 if (null != (o = arguments[u]))
116 for (i in o) e = s[i], r = o[i], s !== r && (c && r && (b.isPlainObject(r) || (n = b.isArray(r))) ? (n ? (n = !1, a = e && b.isArray(e) ? e : []) : a = e && b.isPlainObject(e) ? e : {}, s[i] = b.extend(c, a, r)) : r !== t && (s[i] = r));
117 return s
118 }, b.extend({
119 noConflict: function(t) {
120 return e.$ === b && (e.$ = u), t && e.jQuery === b && (e.jQuery = s), b
121 },
122 isReady: !1,
123 readyWait: 1,
124 holdReady: function(e) {
125 e ? b.readyWait++ : b.ready(!0)
126 },
127 ready: function(e) {
128 if (e === !0 ? !--b.readyWait : !b.isReady) {
129 if (!o.body) return setTimeout(b.ready);
130 b.isReady = !0, e !== !0 && --b.readyWait > 0 || (n.resolveWith(o, [b]), b.fn.trigger && b(o).trigger("ready").off("ready"))
131 }
132 },
133 isFunction: function(e) {
134 return "function" === b.type(e)
135 },
136 isArray: Array.isArray || function(e) {
137 return "array" === b.type(e)
138 },
139 isWindow: function(e) {
140 return null != e && e == e.window
141 },
142 isNumeric: function(e) {
143 return !isNaN(parseFloat(e)) && isFinite(e)
144 },
145 type: function(e) {
146 return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? l[m.call(e)] || "object" : typeof e
147 },
148 isPlainObject: function(e) {
149 if (!e || "object" !== b.type(e) || e.nodeType || b.isWindow(e)) return !1;
150 try {
151 if (e.constructor && !y.call(e, "constructor") && !y.call(e.constructor.prototype, "isPrototypeOf")) return !1
152 } catch (n) {
153 return !1
154 }
155 var r;
156 for (r in e);
157 return r === t || y.call(e, r)
158 },
159 isEmptyObject: function(e) {
160 var t;
161 for (t in e) return !1;
162 return !0
163 },
164 error: function(e) {
165 throw Error(e)
166 },
167 parseHTML: function(e, t, n) {
168 if (!e || "string" != typeof e) return null;
169 "boolean" == typeof t && (n = t, t = !1), t = t || o;
170 var r = C.exec(e),
171 i = !n && [];
172 return r ? [t.createElement(r[1])] : (r = b.buildFragment([e], t, i), i && b(i).remove(), b.merge([], r.childNodes))
173 },
174 parseJSON: function(n) {
175 return e.JSON && e.JSON.parse ? e.JSON.parse(n) : null === n ? n : "string" == typeof n && (n = b.trim(n), n && k.test(n.replace(S, "@").replace(A, "]").replace(E, ""))) ? Function("return " + n)() : (b.error("Invalid JSON: " + n), t)
176 },
177 parseXML: function(n) {
178 var r, i;
179 if (!n || "string" != typeof n) return null;
180 try {
181 e.DOMParser ? (i = new DOMParser, r = i.parseFromString(n, "text/xml")) : (r = new ActiveXObject("Microsoft.XMLDOM"), r.async = "false", r.loadXML(n))
182 } catch (o) {
183 r = t
184 }
185 return r && r.documentElement && !r.getElementsByTagName("parsererror").length || b.error("Invalid XML: " + n), r
186 },
187 noop: function() {},
188 globalEval: function(t) {
189 t && b.trim(t) && (e.execScript || function(t) {
190 e.eval.call(e, t)
191 })(t)
192 },
193 camelCase: function(e) {
194 return e.replace(j, "ms-").replace(D, L)
195 },
196 nodeName: function(e, t) {
197 return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
198 },
199 each: function(e, t, n) {
200 var r, i = 0,
201 o = e.length,
202 a = M(e);
203 if (n) {
204 if (a) {
205 for (; o > i; i++)
206 if (r = t.apply(e[i], n), r === !1) break
207 } else
208 for (i in e)
209 if (r = t.apply(e[i], n), r === !1) break
210 } else if (a) {
211 for (; o > i; i++)
212 if (r = t.call(e[i], i, e[i]), r === !1) break
213 } else
214 for (i in e)
215 if (r = t.call(e[i], i, e[i]), r === !1) break; return e
216 },
217 trim: v && !v.call("\ufeff\u00a0") ? function(e) {
218 return null == e ? "" : v.call(e)
219 } : function(e) {
220 return null == e ? "" : (e + "").replace(T, "")
221 },
222 makeArray: function(e, t) {
223 var n = t || [];
224 return null != e && (M(Object(e)) ? b.merge(n, "string" == typeof e ? [e] : e) : d.call(n, e)), n
225 },
226 inArray: function(e, t, n) {
227 var r;
228 if (t) {
229 if (g) return g.call(t, e, n);
230 for (r = t.length, n = n ? 0 > n ? Math.max(0, r + n) : n : 0; r > n; n++)
231 if (n in t && t[n] === e) return n
232 }
233 return -1
234 },
235 merge: function(e, n) {
236 var r = n.length,
237 i = e.length,
238 o = 0;
239 if ("number" == typeof r)
240 for (; r > o; o++) e[i++] = n[o];
241 else
242 while (n[o] !== t) e[i++] = n[o++];
243 return e.length = i, e
244 },
245 grep: function(e, t, n) {
246 var r, i = [],
247 o = 0,
248 a = e.length;
249 for (n = !!n; a > o; o++) r = !!t(e[o], o), n !== r && i.push(e[o]);
250 return i
251 },
252 map: function(e, t, n) {
253 var r, i = 0,
254 o = e.length,
255 a = M(e),
256 s = [];
257 if (a)
258 for (; o > i; i++) r = t(e[i], i, n), null != r && (s[s.length] = r);
259 else
260 for (i in e) r = t(e[i], i, n), null != r && (s[s.length] = r);
261 return f.apply([], s)
262 },
263 guid: 1,
264 proxy: function(e, n) {
265 var r, i, o;
266 return "string" == typeof n && (o = e[n], n = e, e = o), b.isFunction(e) ? (r = h.call(arguments, 2), i = function() {
267 return e.apply(n || this, r.concat(h.call(arguments)))
268 }, i.guid = e.guid = e.guid || b.guid++, i) : t
269 },
270 access: function(e, n, r, i, o, a, s) {
271 var u = 0,
272 l = e.length,
273 c = null == r;
274 if ("object" === b.type(r)) {
275 o = !0;
276 for (u in r) b.access(e, n, u, r[u], !0, a, s)
277 } else if (i !== t && (o = !0, b.isFunction(i) || (s = !0), c && (s ? (n.call(e, i), n = null) : (c = n, n = function(e, t, n) {
278 return c.call(b(e), n)
279 })), n))
280 for (; l > u; u++) n(e[u], r, s ? i : i.call(e[u], u, n(e[u], r)));
281 return o ? e : c ? n.call(e) : l ? n(e[0], r) : a
282 },
283 now: function() {
284 return (new Date).getTime()
285 }
286 }), b.ready.promise = function(t) {
287 if (!n)
288 if (n = b.Deferred(), "complete" === o.readyState) setTimeout(b.ready);
289 else if (o.addEventListener) o.addEventListener("DOMContentLoaded", H, !1), e.addEventListener("load", H, !1);
290 else {
291 o.attachEvent("onreadystatechange", H), e.attachEvent("onload", H);
292 var r = !1;
293 try {
294 r = null == e.frameElement && o.documentElement
295 } catch (i) {}
296 r && r.doScroll && function a() {
297 if (!b.isReady) {
298 try {
299 r.doScroll("left")
300 } catch (e) {
301 return setTimeout(a, 50)
302 }
303 q(), b.ready()
304 }
305 }()
306 }
307 return n.promise(t)
308 }, b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(e, t) {
309 l["[object " + t + "]"] = t.toLowerCase()
310 });
311
312 function M(e) {
313 var t = e.length,
314 n = b.type(e);
315 return b.isWindow(e) ? !1 : 1 === e.nodeType && t ? !0 : "array" === n || "function" !== n && (0 === t || "number" == typeof t && t > 0 && t - 1 in e)
316 }
317 r = b(o);
318 var _ = {};
319
320 function F(e) {
321 var t = _[e] = {};
322 return b.each(e.match(w) || [], function(e, n) {
323 t[n] = !0
324 }), t
325 }
326 b.Callbacks = function(e) {
327 e = "string" == typeof e ? _[e] || F(e) : b.extend({}, e);
328 var n, r, i, o, a, s, u = [],
329 l = !e.once && [],
330 c = function(t) {
331 for (r = e.memory && t, i = !0, a = s || 0, s = 0, o = u.length, n = !0; u && o > a; a++)
332 if (u[a].apply(t[0], t[1]) === !1 && e.stopOnFalse) {
333 r = !1;
334 break
335 }
336 n = !1, u && (l ? l.length && c(l.shift()) : r ? u = [] : p.disable())
337 },
338 p = {
339 add: function() {
340 if (u) {
341 var t = u.length;
342 (function i(t) {
343 b.each(t, function(t, n) {
344 var r = b.type(n);
345 "function" === r ? e.unique && p.has(n) || u.push(n) : n && n.length && "string" !== r && i(n)
346 })
347 })(arguments), n ? o = u.length : r && (s = t, c(r))
348 }
349 return this
350 },
351 remove: function() {
352 return u && b.each(arguments, function(e, t) {
353 var r;
354 while ((r = b.inArray(t, u, r)) > -1) u.splice(r, 1), n && (o >= r && o--, a >= r && a--)
355 }), this
356 },
357 has: function(e) {
358 return e ? b.inArray(e, u) > -1 : !(!u || !u.length)
359 },
360 empty: function() {
361 return u = [], this
362 },
363 disable: function() {
364 return u = l = r = t, this
365 },
366 disabled: function() {
367 return !u
368 },
369 lock: function() {
370 return l = t, r || p.disable(), this
371 },
372 locked: function() {
373 return !l
374 },
375 fireWith: function(e, t) {
376 return t = t || [], t = [e, t.slice ? t.slice() : t], !u || i && !l || (n ? l.push(t) : c(t)), this
377 },
378 fire: function() {
379 return p.fireWith(this, arguments), this
380 },
381 fired: function() {
382 return !!i
383 }
384 };
385 return p
386 }, b.extend({
387 Deferred: function(e) {
388 var t = [
389 ["resolve", "done", b.Callbacks("once memory"), "resolved"],
390 ["reject", "fail", b.Callbacks("once memory"), "rejected"],
391 ["notify", "progress", b.Callbacks("memory")]
392 ],
393 n = "pending",
394 r = {
395 state: function() {
396 return n
397 },
398 always: function() {
399 return i.done(arguments).fail(arguments), this
400 },
401 then: function() {
402 var e = arguments;
403 return b.Deferred(function(n) {
404 b.each(t, function(t, o) {
405 var a = o[0],
406 s = b.isFunction(e[t]) && e[t];
407 i[o[1]](function() {
408 var e = s && s.apply(this, arguments);
409 e && b.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[a + "With"](this === r ? n.promise() : this, s ? [e] : arguments)
410 })
411 }), e = null
412 }).promise()
413 },
414 promise: function(e) {
415 return null != e ? b.extend(e, r) : r
416 }
417 },
418 i = {};
419 return r.pipe = r.then, b.each(t, function(e, o) {
420 var a = o[2],
421 s = o[3];
422 r[o[1]] = a.add, s && a.add(function() {
423 n = s
424 }, t[1 ^ e][2].disable, t[2][2].lock), i[o[0]] = function() {
425 return i[o[0] + "With"](this === i ? r : this, arguments), this
426 }, i[o[0] + "With"] = a.fireWith
427 }), r.promise(i), e && e.call(i, i), i
428 },
429 when: function(e) {
430 var t = 0,
431 n = h.call(arguments),
432 r = n.length,
433 i = 1 !== r || e && b.isFunction(e.promise) ? r : 0,
434 o = 1 === i ? e : b.Deferred(),
435 a = function(e, t, n) {
436 return function(r) {
437 t[e] = this, n[e] = arguments.length > 1 ? h.call(arguments) : r, n === s ? o.notifyWith(t, n) : --i || o.resolveWith(t, n)
438 }
439 },
440 s, u, l;
441 if (r > 1)
442 for (s = Array(r), u = Array(r), l = Array(r); r > t; t++) n[t] && b.isFunction(n[t].promise) ? n[t].promise().done(a(t, l, n)).fail(o.reject).progress(a(t, u, s)) : --i;
443 return i || o.resolveWith(l, n), o.promise()
444 }
445 }), b.support = function() {
446 var t, n, r, a, s, u, l, c, p, f, d = o.createElement("div");
447 if (d.setAttribute("className", "t"), d.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", n = d.getElementsByTagName("*"), r = d.getElementsByTagName("a")[0], !n || !r || !n.length) return {};
448 s = o.createElement("select"), l = s.appendChild(o.createElement("option")), a = d.getElementsByTagName("input")[0], r.style.cssText = "top:1px;float:left;opacity:.5", t = {
449 getSetAttribute: "t" !== d.className,
450 leadingWhitespace: 3 === d.firstChild.nodeType,
451 tbody: !d.getElementsByTagName("tbody").length,
452 htmlSerialize: !!d.getElementsByTagName("link").length,
453 style: /top/.test(r.getAttribute("style")),
454 hrefNormalized: "/a" === r.getAttribute("href"),
455 opacity: /^0.5/.test(r.style.opacity),
456 cssFloat: !!r.style.cssFloat,
457 checkOn: !!a.value,
458 optSelected: l.selected,
459 enctype: !!o.createElement("form").enctype,
460 html5Clone: "<:nav></:nav>" !== o.createElement("nav").cloneNode(!0).outerHTML,
461 boxModel: "CSS1Compat" === o.compatMode,
462 deleteExpando: !0,
463 noCloneEvent: !0,
464 inlineBlockNeedsLayout: !1,
465 shrinkWrapBlocks: !1,
466 reliableMarginRight: !0,
467 boxSizingReliable: !0,
468 pixelPosition: !1
469 }, a.checked = !0, t.noCloneChecked = a.cloneNode(!0).checked, s.disabled = !0, t.optDisabled = !l.disabled;
470 try {
471 delete d.test
472 } catch (h) {
473 t.deleteExpando = !1
474 }
475 a = o.createElement("input"), a.setAttribute("value", ""), t.input = "" === a.getAttribute("value"), a.value = "t", a.setAttribute("type", "radio"), t.radioValue = "t" === a.value, a.setAttribute("checked", "t"), a.setAttribute("name", "t"), u = o.createDocumentFragment(), u.appendChild(a), t.appendChecked = a.checked, t.checkClone = u.cloneNode(!0).cloneNode(!0).lastChild.checked, d.attachEvent && (d.attachEvent("onclick", function() {
476 t.noCloneEvent = !1
477 }), d.cloneNode(!0).click());
478 for (f in {
479 submit: !0,
480 change: !0,
481 focusin: !0
482 }) d.setAttribute(c = "on" + f, "t"), t[f + "Bubbles"] = c in e || d.attributes[c].expando === !1;
483 return d.style.backgroundClip = "content-box", d.cloneNode(!0).style.backgroundClip = "", t.clearCloneStyle = "content-box" === d.style.backgroundClip, b(function() {
484 var n, r, a, s = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
485 u = o.getElementsByTagName("body")[0];
486 u && (n = o.createElement("div"), n.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px", u.appendChild(n).appendChild(d), d.innerHTML = "<table><tr><td></td><td>t</td></tr></table>", a = d.getElementsByTagName("td"), a[0].style.cssText = "padding:0;margin:0;border:0;display:none", p = 0 === a[0].offsetHeight, a[0].style.display = "", a[1].style.display = "none", t.reliableHiddenOffsets = p && 0 === a[0].offsetHeight, d.innerHTML = "", d.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", t.boxSizing = 4 === d.offsetWidth, t.doesNotIncludeMarginInBodyOffset = 1 !== u.offsetTop, e.getComputedStyle && (t.pixelPosition = "1%" !== (e.getComputedStyle(d, null) || {}).top, t.boxSizingReliable = "4px" === (e.getComputedStyle(d, null) || {
487 width: "4px"
488 }).width, r = d.appendChild(o.createElement("div")), r.style.cssText = d.style.cssText = s, r.style.marginRight = r.style.width = "0", d.style.width = "1px", t.reliableMarginRight = !parseFloat((e.getComputedStyle(r, null) || {}).marginRight)), typeof d.style.zoom !== i && (d.innerHTML = "", d.style.cssText = s + "width:1px;padding:1px;display:inline;zoom:1", t.inlineBlockNeedsLayout = 3 === d.offsetWidth, d.style.display = "block", d.innerHTML = "<div></div>", d.firstChild.style.width = "5px", t.shrinkWrapBlocks = 3 !== d.offsetWidth, t.inlineBlockNeedsLayout && (u.style.zoom = 1)), u.removeChild(n), n = d = a = r = null)
489 }), n = s = u = l = r = a = null, t
490 }();
491 var O = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
492 B = /([A-Z])/g;
493
494 function P(e, n, r, i) {
495 if (b.acceptData(e)) {
496 var o, a, s = b.expando,
497 u = "string" == typeof n,
498 l = e.nodeType,
499 p = l ? b.cache : e,
500 f = l ? e[s] : e[s] && s;
501 if (f && p[f] && (i || p[f].data) || !u || r !== t) return f || (l ? e[s] = f = c.pop() || b.guid++ : f = s), p[f] || (p[f] = {}, l || (p[f].toJSON = b.noop)), ("object" == typeof n || "function" == typeof n) && (i ? p[f] = b.extend(p[f], n) : p[f].data = b.extend(p[f].data, n)), o = p[f], i || (o.data || (o.data = {}), o = o.data), r !== t && (o[b.camelCase(n)] = r), u ? (a = o[n], null == a && (a = o[b.camelCase(n)])) : a = o, a
502 }
503 }
504
505 function R(e, t, n) {
506 if (b.acceptData(e)) {
507 var r, i, o, a = e.nodeType,
508 s = a ? b.cache : e,
509 u = a ? e[b.expando] : b.expando;
510 if (s[u]) {
511 if (t && (o = n ? s[u] : s[u].data)) {
512 b.isArray(t) ? t = t.concat(b.map(t, b.camelCase)) : t in o ? t = [t] : (t = b.camelCase(t), t = t in o ? [t] : t.split(" "));
513 for (r = 0, i = t.length; i > r; r++) delete o[t[r]];
514 if (!(n ? $ : b.isEmptyObject)(o)) return
515 }(n || (delete s[u].data, $(s[u]))) && (a ? b.cleanData([e], !0) : b.support.deleteExpando || s != s.window ? delete s[u] : s[u] = null)
516 }
517 }
518 }
519 b.extend({
520 cache: {},
521 expando: "jQuery" + (p + Math.random()).replace(/\D/g, ""),
522 noData: {
523 embed: !0,
524 object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
525 applet: !0
526 },
527 hasData: function(e) {
528 return e = e.nodeType ? b.cache[e[b.expando]] : e[b.expando], !!e && !$(e)
529 },
530 data: function(e, t, n) {
531 return P(e, t, n)
532 },
533 removeData: function(e, t) {
534 return R(e, t)
535 },
536 _data: function(e, t, n) {
537 return P(e, t, n, !0)
538 },
539 _removeData: function(e, t) {
540 return R(e, t, !0)
541 },
542 acceptData: function(e) {
543 if (e.nodeType && 1 !== e.nodeType && 9 !== e.nodeType) return !1;
544 var t = e.nodeName && b.noData[e.nodeName.toLowerCase()];
545 return !t || t !== !0 && e.getAttribute("classid") === t
546 }
547 }), b.fn.extend({
548 data: function(e, n) {
549 var r, i, o = this[0],
550 a = 0,
551 s = null;
552 if (e === t) {
553 if (this.length && (s = b.data(o), 1 === o.nodeType && !b._data(o, "parsedAttrs"))) {
554 for (r = o.attributes; r.length > a; a++) i = r[a].name, i.indexOf("data-") || (i = b.camelCase(i.slice(5)), W(o, i, s[i]));
555 b._data(o, "parsedAttrs", !0)
556 }
557 return s
558 }
559 return "object" == typeof e ? this.each(function() {
560 b.data(this, e)
561 }) : b.access(this, function(n) {
562 return n === t ? o ? W(o, e, b.data(o, e)) : null : (this.each(function() {
563 b.data(this, e, n)
564 }), t)
565 }, null, n, arguments.length > 1, null, !0)
566 },
567 removeData: function(e) {
568 return this.each(function() {
569 b.removeData(this, e)
570 })
571 }
572 });
573
574 function W(e, n, r) {
575 if (r === t && 1 === e.nodeType) {
576 var i = "data-" + n.replace(B, "-$1").toLowerCase();
577 if (r = e.getAttribute(i), "string" == typeof r) {
578 try {
579 r = "true" === r ? !0 : "false" === r ? !1 : "null" === r ? null : +r + "" === r ? +r : O.test(r) ? b.parseJSON(r) : r
580 } catch (o) {}
581 b.data(e, n, r)
582 } else r = t
583 }
584 return r
585 }
586
587 function $(e) {
588 var t;
589 for (t in e)
590 if (("data" !== t || !b.isEmptyObject(e[t])) && "toJSON" !== t) return !1;
591 return !0
592 }
593 b.extend({
594 queue: function(e, n, r) {
595 var i;
596 return e ? (n = (n || "fx") + "queue", i = b._data(e, n), r && (!i || b.isArray(r) ? i = b._data(e, n, b.makeArray(r)) : i.push(r)), i || []) : t
597 },
598 dequeue: function(e, t) {
599 t = t || "fx";
600 var n = b.queue(e, t),
601 r = n.length,
602 i = n.shift(),
603 o = b._queueHooks(e, t),
604 a = function() {
605 b.dequeue(e, t)
606 };
607 "inprogress" === i && (i = n.shift(), r--), o.cur = i, i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, a, o)), !r && o && o.empty.fire()
608 },
609 _queueHooks: function(e, t) {
610 var n = t + "queueHooks";
611 return b._data(e, n) || b._data(e, n, {
612 empty: b.Callbacks("once memory").add(function() {
613 b._removeData(e, t + "queue"), b._removeData(e, n)
614 })
615 })
616 }
617 }), b.fn.extend({
618 queue: function(e, n) {
619 var r = 2;
620 return "string" != typeof e && (n = e, e = "fx", r--), r > arguments.length ? b.queue(this[0], e) : n === t ? this : this.each(function() {
621 var t = b.queue(this, e, n);
622 b._queueHooks(this, e), "fx" === e && "inprogress" !== t[0] && b.dequeue(this, e)
623 })
624 },
625 dequeue: function(e) {
626 return this.each(function() {
627 b.dequeue(this, e)
628 })
629 },
630 delay: function(e, t) {
631 return e = b.fx ? b.fx.speeds[e] || e : e, t = t || "fx", this.queue(t, function(t, n) {
632 var r = setTimeout(t, e);
633 n.stop = function() {
634 clearTimeout(r)
635 }
636 })
637 },
638 clearQueue: function(e) {
639 return this.queue(e || "fx", [])
640 },
641 promise: function(e, n) {
642 var r, i = 1,
643 o = b.Deferred(),
644 a = this,
645 s = this.length,
646 u = function() {
647 --i || o.resolveWith(a, [a])
648 };
649 "string" != typeof e && (n = e, e = t), e = e || "fx";
650 while (s--) r = b._data(a[s], e + "queueHooks"), r && r.empty && (i++, r.empty.add(u));
651 return u(), o.promise(n)
652 }
653 });
654 var I, z, X = /[\t\r\n]/g,
655 U = /\r/g,
656 V = /^(?:input|select|textarea|button|object)$/i,
657 Y = /^(?:a|area)$/i,
658 J = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,
659 G = /^(?:checked|selected)$/i,
660 Q = b.support.getSetAttribute,
661 K = b.support.input;
662 b.fn.extend({
663 attr: function(e, t) {
664 return b.access(this, b.attr, e, t, arguments.length > 1)
665 },
666 removeAttr: function(e) {
667 return this.each(function() {
668 b.removeAttr(this, e)
669 })
670 },
671 prop: function(e, t) {
672 return b.access(this, b.prop, e, t, arguments.length > 1)
673 },
674 removeProp: function(e) {
675 return e = b.propFix[e] || e, this.each(function() {
676 try {
677 this[e] = t, delete this[e]
678 } catch (n) {}
679 })
680 },
681 addClass: function(e) {
682 var t, n, r, i, o, a = 0,
683 s = this.length,
684 u = "string" == typeof e && e;
685 if (b.isFunction(e)) return this.each(function(t) {
686 b(this).addClass(e.call(this, t, this.className))
687 });
688 if (u)
689 for (t = (e || "").match(w) || []; s > a; a++)
690 if (n = this[a], r = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(X, " ") : " ")) {
691 o = 0;
692 while (i = t[o++]) 0 > r.indexOf(" " + i + " ") && (r += i + " ");
693 n.className = b.trim(r)
694 }
695 return this
696 },
697 removeClass: function(e) {
698 var t, n, r, i, o, a = 0,
699 s = this.length,
700 u = 0 === arguments.length || "string" == typeof e && e;
701 if (b.isFunction(e)) return this.each(function(t) {
702 b(this).removeClass(e.call(this, t, this.className))
703 });
704 if (u)
705 for (t = (e || "").match(w) || []; s > a; a++)
706 if (n = this[a], r = 1 === n.nodeType && (n.className ? (" " + n.className + " ").replace(X, " ") : "")) {
707 o = 0;
708 while (i = t[o++])
709 while (r.indexOf(" " + i + " ") >= 0) r = r.replace(" " + i + " ", " ");
710 n.className = e ? b.trim(r) : ""
711 }
712 return this
713 },
714 toggleClass: function(e, t) {
715 var n = typeof e,
716 r = "boolean" == typeof t;
717 return b.isFunction(e) ? this.each(function(n) {
718 b(this).toggleClass(e.call(this, n, this.className, t), t)
719 }) : this.each(function() {
720 if ("string" === n) {
721 var o, a = 0,
722 s = b(this),
723 u = t,
724 l = e.match(w) || [];
725 while (o = l[a++]) u = r ? u : !s.hasClass(o), s[u ? "addClass" : "removeClass"](o)
726 } else(n === i || "boolean" === n) && (this.className && b._data(this, "__className__", this.className), this.className = this.className || e === !1 ? "" : b._data(this, "__className__") || "")
727 })
728 },
729 hasClass: function(e) {
730 var t = " " + e + " ",
731 n = 0,
732 r = this.length;
733 for (; r > n; n++)
734 if (1 === this[n].nodeType && (" " + this[n].className + " ").replace(X, " ").indexOf(t) >= 0) return !0;
735 return !1
736 },
737 val: function(e) {
738 var n, r, i, o = this[0]; {
739 if (arguments.length) return i = b.isFunction(e), this.each(function(n) {
740 var o, a = b(this);
741 1 === this.nodeType && (o = i ? e.call(this, n, a.val()) : e, null == o ? o = "" : "number" == typeof o ? o += "" : b.isArray(o) && (o = b.map(o, function(e) {
742 return null == e ? "" : e + ""
743 })), r = b.valHooks[this.type] || b.valHooks[this.nodeName.toLowerCase()], r && "set" in r && r.set(this, o, "value") !== t || (this.value = o))
744 });
745 if (o) return r = b.valHooks[o.type] || b.valHooks[o.nodeName.toLowerCase()], r && "get" in r && (n = r.get(o, "value")) !== t ? n : (n = o.value, "string" == typeof n ? n.replace(U, "") : null == n ? "" : n)
746 }
747 }
748 }), b.extend({
749 valHooks: {
750 option: {
751 get: function(e) {
752 var t = e.attributes.value;
753 return !t || t.specified ? e.value : e.text
754 }
755 },
756 select: {
757 get: function(e) {
758 var t, n, r = e.options,
759 i = e.selectedIndex,
760 o = "select-one" === e.type || 0 > i,
761 a = o ? null : [],
762 s = o ? i + 1 : r.length,
763 u = 0 > i ? s : o ? i : 0;
764 for (; s > u; u++)
765 if (n = r[u], !(!n.selected && u !== i || (b.support.optDisabled ? n.disabled : null !== n.getAttribute("disabled")) || n.parentNode.disabled && b.nodeName(n.parentNode, "optgroup"))) {
766 if (t = b(n).val(), o) return t;
767 a.push(t)
768 }
769 return a
770 },
771 set: function(e, t) {
772 var n = b.makeArray(t);
773 return b(e).find("option").each(function() {
774 this.selected = b.inArray(b(this).val(), n) >= 0
775 }), n.length || (e.selectedIndex = -1), n
776 }
777 }
778 },
779 attr: function(e, n, r) {
780 var o, a, s, u = e.nodeType;
781 if (e && 3 !== u && 8 !== u && 2 !== u) return typeof e.getAttribute === i ? b.prop(e, n, r) : (a = 1 !== u || !b.isXMLDoc(e), a && (n = n.toLowerCase(), o = b.attrHooks[n] || (J.test(n) ? z : I)), r === t ? o && a && "get" in o && null !== (s = o.get(e, n)) ? s : (typeof e.getAttribute !== i && (s = e.getAttribute(n)), null == s ? t : s) : null !== r ? o && a && "set" in o && (s = o.set(e, r, n)) !== t ? s : (e.setAttribute(n, r + ""), r) : (b.removeAttr(e, n), t))
782 },
783 removeAttr: function(e, t) {
784 var n, r, i = 0,
785 o = t && t.match(w);
786 if (o && 1 === e.nodeType)
787 while (n = o[i++]) r = b.propFix[n] || n, J.test(n) ? !Q && G.test(n) ? e[b.camelCase("default-" + n)] = e[r] = !1 : e[r] = !1 : b.attr(e, n, ""), e.removeAttribute(Q ? n : r)
788 },
789 attrHooks: {
790 type: {
791 set: function(e, t) {
792 if (!b.support.radioValue && "radio" === t && b.nodeName(e, "input")) {
793 var n = e.value;
794 return e.setAttribute("type", t), n && (e.value = n), t
795 }
796 }
797 }
798 },
799 propFix: {
800 tabindex: "tabIndex",
801 readonly: "readOnly",
802 "for": "htmlFor",
803 "class": "className",
804 maxlength: "maxLength",
805 cellspacing: "cellSpacing",
806 cellpadding: "cellPadding",
807 rowspan: "rowSpan",
808 colspan: "colSpan",
809 usemap: "useMap",
810 frameborder: "frameBorder",
811 contenteditable: "contentEditable"
812 },
813 prop: function(e, n, r) {
814 var i, o, a, s = e.nodeType;
815 if (e && 3 !== s && 8 !== s && 2 !== s) return a = 1 !== s || !b.isXMLDoc(e), a && (n = b.propFix[n] || n, o = b.propHooks[n]), r !== t ? o && "set" in o && (i = o.set(e, r, n)) !== t ? i : e[n] = r : o && "get" in o && null !== (i = o.get(e, n)) ? i : e[n]
816 },
817 propHooks: {
818 tabIndex: {
819 get: function(e) {
820 var n = e.getAttributeNode("tabindex");
821 return n && n.specified ? parseInt(n.value, 10) : V.test(e.nodeName) || Y.test(e.nodeName) && e.href ? 0 : t
822 }
823 }
824 }
825 }), z = {
826 get: function(e, n) {
827 var r = b.prop(e, n),
828 i = "boolean" == typeof r && e.getAttribute(n),
829 o = "boolean" == typeof r ? K && Q ? null != i : G.test(n) ? e[b.camelCase("default-" + n)] : !!i : e.getAttributeNode(n);
830 return o && o.value !== !1 ? n.toLowerCase() : t
831 },
832 set: function(e, t, n) {
833 return t === !1 ? b.removeAttr(e, n) : K && Q || !G.test(n) ? e.setAttribute(!Q && b.propFix[n] || n, n) : e[b.camelCase("default-" + n)] = e[n] = !0, n
834 }
835 }, K && Q || (b.attrHooks.value = {
836 get: function(e, n) {
837 var r = e.getAttributeNode(n);
838 return b.nodeName(e, "input") ? e.defaultValue : r && r.specified ? r.value : t
839 },
840 set: function(e, n, r) {
841 return b.nodeName(e, "input") ? (e.defaultValue = n, t) : I && I.set(e, n, r)
842 }
843 }), Q || (I = b.valHooks.button = {
844 get: function(e, n) {
845 var r = e.getAttributeNode(n);
846 return r && ("id" === n || "name" === n || "coords" === n ? "" !== r.value : r.specified) ? r.value : t
847 },
848 set: function(e, n, r) {
849 var i = e.getAttributeNode(r);
850 return i || e.setAttributeNode(i = e.ownerDocument.createAttribute(r)), i.value = n += "", "value" === r || n === e.getAttribute(r) ? n : t
851 }
852 }, b.attrHooks.contenteditable = {
853 get: I.get,
854 set: function(e, t, n) {
855 I.set(e, "" === t ? !1 : t, n)
856 }
857 }, b.each(["width", "height"], function(e, n) {
858 b.attrHooks[n] = b.extend(b.attrHooks[n], {
859 set: function(e, r) {
860 return "" === r ? (e.setAttribute(n, "auto"), r) : t
861 }
862 })
863 })), b.support.hrefNormalized || (b.each(["href", "src", "width", "height"], function(e, n) {
864 b.attrHooks[n] = b.extend(b.attrHooks[n], {
865 get: function(e) {
866 var r = e.getAttribute(n, 2);
867 return null == r ? t : r
868 }
869 })
870 }), b.each(["href", "src"], function(e, t) {
871 b.propHooks[t] = {
872 get: function(e) {
873 return e.getAttribute(t, 4)
874 }
875 }
876 })), b.support.style || (b.attrHooks.style = {
877 get: function(e) {
878 return e.style.cssText || t
879 },
880 set: function(e, t) {
881 return e.style.cssText = t + ""
882 }
883 }), b.support.optSelected || (b.propHooks.selected = b.extend(b.propHooks.selected, {
884 get: function(e) {
885 var t = e.parentNode;
886 return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
887 }
888 })), b.support.enctype || (b.propFix.enctype = "encoding"), b.support.checkOn || b.each(["radio", "checkbox"], function() {
889 b.valHooks[this] = {
890 get: function(e) {
891 return null === e.getAttribute("value") ? "on" : e.value
892 }
893 }
894 }), b.each(["radio", "checkbox"], function() {
895 b.valHooks[this] = b.extend(b.valHooks[this], {
896 set: function(e, n) {
897 return b.isArray(n) ? e.checked = b.inArray(b(e).val(), n) >= 0 : t
898 }
899 })
900 });
901 var Z = /^(?:input|select|textarea)$/i,
902 et = /^key/,
903 tt = /^(?:mouse|contextmenu)|click/,
904 nt = /^(?:focusinfocus|focusoutblur)$/,
905 rt = /^([^.]*)(?:\.(.+)|)$/;
906
907 function it() {
908 return !0
909 }
910
911 function ot() {
912 return !1
913 }
914 b.event = {
915 global: {},
916 add: function(e, n, r, o, a) {
917 var s, u, l, c, p, f, d, h, g, m, y, v = b._data(e);
918 if (v) {
919 r.handler && (c = r, r = c.handler, a = c.selector), r.guid || (r.guid = b.guid++), (u = v.events) || (u = v.events = {}), (f = v.handle) || (f = v.handle = function(e) {
920 return typeof b === i || e && b.event.triggered === e.type ? t : b.event.dispatch.apply(f.elem, arguments)
921 }, f.elem = e), n = (n || "").match(w) || [""], l = n.length;
922 while (l--) s = rt.exec(n[l]) || [], g = y = s[1], m = (s[2] || "").split(".").sort(), p = b.event.special[g] || {}, g = (a ? p.delegateType : p.bindType) || g, p = b.event.special[g] || {}, d = b.extend({
923 type: g,
924 origType: y,
925 data: o,
926 handler: r,
927 guid: r.guid,
928 selector: a,
929 needsContext: a && b.expr.match.needsContext.test(a),
930 namespace: m.join(".")
931 }, c), (h = u[g]) || (h = u[g] = [], h.delegateCount = 0, p.setup && p.setup.call(e, o, m, f) !== !1 || (e.addEventListener ? e.addEventListener(g, f, !1) : e.attachEvent && e.attachEvent("on" + g, f))), p.add && (p.add.call(e, d), d.handler.guid || (d.handler.guid = r.guid)), a ? h.splice(h.delegateCount++, 0, d) : h.push(d), b.event.global[g] = !0;
932 e = null
933 }
934 },
935 remove: function(e, t, n, r, i) {
936 var o, a, s, u, l, c, p, f, d, h, g, m = b.hasData(e) && b._data(e);
937 if (m && (c = m.events)) {
938 t = (t || "").match(w) || [""], l = t.length;
939 while (l--)
940 if (s = rt.exec(t[l]) || [], d = g = s[1], h = (s[2] || "").split(".").sort(), d) {
941 p = b.event.special[d] || {}, d = (r ? p.delegateType : p.bindType) || d, f = c[d] || [], s = s[2] && RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), u = o = f.length;
942 while (o--) a = f[o], !i && g !== a.origType || n && n.guid !== a.guid || s && !s.test(a.namespace) || r && r !== a.selector && ("**" !== r || !a.selector) || (f.splice(o, 1), a.selector && f.delegateCount--, p.remove && p.remove.call(e, a));
943 u && !f.length && (p.teardown && p.teardown.call(e, h, m.handle) !== !1 || b.removeEvent(e, d, m.handle), delete c[d])
944 } else
945 for (d in c) b.event.remove(e, d + t[l], n, r, !0);
946 b.isEmptyObject(c) && (delete m.handle, b._removeData(e, "events"))
947 }
948 },
949 trigger: function(n, r, i, a) {
950 var s, u, l, c, p, f, d, h = [i || o],
951 g = y.call(n, "type") ? n.type : n,
952 m = y.call(n, "namespace") ? n.namespace.split(".") : [];
953 if (l = f = i = i || o, 3 !== i.nodeType && 8 !== i.nodeType && !nt.test(g + b.event.triggered) && (g.indexOf(".") >= 0 && (m = g.split("."), g = m.shift(), m.sort()), u = 0 > g.indexOf(":") && "on" + g, n = n[b.expando] ? n : new b.Event(g, "object" == typeof n && n), n.isTrigger = !0, n.namespace = m.join("."), n.namespace_re = n.namespace ? RegExp("(^|\\.)" + m.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, n.result = t, n.target || (n.target = i), r = null == r ? [n] : b.makeArray(r, [n]), p = b.event.special[g] || {}, a || !p.trigger || p.trigger.apply(i, r) !== !1)) {
954 if (!a && !p.noBubble && !b.isWindow(i)) {
955 for (c = p.delegateType || g, nt.test(c + g) || (l = l.parentNode); l; l = l.parentNode) h.push(l), f = l;
956 f === (i.ownerDocument || o) && h.push(f.defaultView || f.parentWindow || e)
957 }
958 d = 0;
959 while ((l = h[d++]) && !n.isPropagationStopped()) n.type = d > 1 ? c : p.bindType || g, s = (b._data(l, "events") || {})[n.type] && b._data(l, "handle"), s && s.apply(l, r), s = u && l[u], s && b.acceptData(l) && s.apply && s.apply(l, r) === !1 && n.preventDefault();
960 if (n.type = g, !(a || n.isDefaultPrevented() || p._default && p._default.apply(i.ownerDocument, r) !== !1 || "click" === g && b.nodeName(i, "a") || !b.acceptData(i) || !u || !i[g] || b.isWindow(i))) {
961 f = i[u], f && (i[u] = null), b.event.triggered = g;
962 try {
963 i[g]()
964 } catch (v) {}
965 b.event.triggered = t, f && (i[u] = f)
966 }
967 return n.result
968 }
969 },
970 dispatch: function(e) {
971 e = b.event.fix(e);
972 var n, r, i, o, a, s = [],
973 u = h.call(arguments),
974 l = (b._data(this, "events") || {})[e.type] || [],
975 c = b.event.special[e.type] || {};
976 if (u[0] = e, e.delegateTarget = this, !c.preDispatch || c.preDispatch.call(this, e) !== !1) {
977 s = b.event.handlers.call(this, e, l), n = 0;
978 while ((o = s[n++]) && !e.isPropagationStopped()) {
979 e.currentTarget = o.elem, a = 0;
980 while ((i = o.handlers[a++]) && !e.isImmediatePropagationStopped())(!e.namespace_re || e.namespace_re.test(i.namespace)) && (e.handleObj = i, e.data = i.data, r = ((b.event.special[i.origType] || {}).handle || i.handler).apply(o.elem, u), r !== t && (e.result = r) === !1 && (e.preventDefault(), e.stopPropagation()))
981 }
982 return c.postDispatch && c.postDispatch.call(this, e), e.result
983 }
984 },
985 handlers: function(e, n) {
986 var r, i, o, a, s = [],
987 u = n.delegateCount,
988 l = e.target;
989 if (u && l.nodeType && (!e.button || "click" !== e.type))
990 for (; l != this; l = l.parentNode || this)
991 if (1 === l.nodeType && (l.disabled !== !0 || "click" !== e.type)) {
992 for (o = [], a = 0; u > a; a++) i = n[a], r = i.selector + " ", o[r] === t && (o[r] = i.needsContext ? b(r, this).index(l) >= 0 : b.find(r, this, null, [l]).length), o[r] && o.push(i);
993 o.length && s.push({
994 elem: l,
995 handlers: o
996 })
997 }
998 return n.length > u && s.push({
999 elem: this,
1000 handlers: n.slice(u)
1001 }), s
1002 },
1003 fix: function(e) {
1004 if (e[b.expando]) return e;
1005 var t, n, r, i = e.type,
1006 a = e,
1007 s = this.fixHooks[i];
1008 s || (this.fixHooks[i] = s = tt.test(i) ? this.mouseHooks : et.test(i) ? this.keyHooks : {}), r = s.props ? this.props.concat(s.props) : this.props, e = new b.Event(a), t = r.length;
1009 while (t--) n = r[t], e[n] = a[n];
1010 return e.target || (e.target = a.srcElement || o), 3 === e.target.nodeType && (e.target = e.target.parentNode), e.metaKey = !!e.metaKey, s.filter ? s.filter(e, a) : e
1011 },
1012 props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
1013 fixHooks: {},
1014 keyHooks: {
1015 props: "char charCode key keyCode".split(" "),
1016 filter: function(e, t) {
1017 return null == e.which && (e.which = null != t.charCode ? t.charCode : t.keyCode), e
1018 }
1019 },
1020 mouseHooks: {
1021 props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
1022 filter: function(e, n) {
1023 var r, i, a, s = n.button,
1024 u = n.fromElement;
1025 return null == e.pageX && null != n.clientX && (i = e.target.ownerDocument || o, a = i.documentElement, r = i.body, e.pageX = n.clientX + (a && a.scrollLeft || r && r.scrollLeft || 0) - (a && a.clientLeft || r && r.clientLeft || 0), e.pageY = n.clientY + (a && a.scrollTop || r && r.scrollTop || 0) - (a && a.clientTop || r && r.clientTop || 0)), !e.relatedTarget && u && (e.relatedTarget = u === e.target ? n.toElement : u), e.which || s === t || (e.which = 1 & s ? 1 : 2 & s ? 3 : 4 & s ? 2 : 0), e
1026 }
1027 },
1028 special: {
1029 load: {
1030 noBubble: !0
1031 },
1032 click: {
1033 trigger: function() {
1034 return b.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : t
1035 }
1036 },
1037 focus: {
1038 trigger: function() {
1039 if (this !== o.activeElement && this.focus) try {
1040 return this.focus(), !1
1041 } catch (e) {}
1042 },
1043 delegateType: "focusin"
1044 },
1045 blur: {
1046 trigger: function() {
1047 return this === o.activeElement && this.blur ? (this.blur(), !1) : t
1048 },
1049 delegateType: "focusout"
1050 },
1051 beforeunload: {
1052 postDispatch: function(e) {
1053 e.result !== t && (e.originalEvent.returnValue = e.result)
1054 }
1055 }
1056 },
1057 simulate: function(e, t, n, r) {
1058 var i = b.extend(new b.Event, n, {
1059 type: e,
1060 isSimulated: !0,
1061 originalEvent: {}
1062 });
1063 r ? b.event.trigger(i, null, t) : b.event.dispatch.call(t, i), i.isDefaultPrevented() && n.preventDefault()
1064 }
1065 }, b.removeEvent = o.removeEventListener ? function(e, t, n) {
1066 e.removeEventListener && e.removeEventListener(t, n, !1)
1067 } : function(e, t, n) {
1068 var r = "on" + t;
1069 e.detachEvent && (typeof e[r] === i && (e[r] = null), e.detachEvent(r, n))
1070 }, b.Event = function(e, n) {
1071 return this instanceof b.Event ? (e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? it : ot) : this.type = e, n && b.extend(this, n), this.timeStamp = e && e.timeStamp || b.now(), this[b.expando] = !0, t) : new b.Event(e, n)
1072 }, b.Event.prototype = {
1073 isDefaultPrevented: ot,
1074 isPropagationStopped: ot,
1075 isImmediatePropagationStopped: ot,
1076 preventDefault: function() {
1077 var e = this.originalEvent;
1078 this.isDefaultPrevented = it, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1)
1079 },
1080 stopPropagation: function() {
1081 var e = this.originalEvent;
1082 this.isPropagationStopped = it, e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0)
1083 },
1084 stopImmediatePropagation: function() {
1085 this.isImmediatePropagationStopped = it, this.stopPropagation()
1086 }
1087 }, b.each({
1088 mouseenter: "mouseover",
1089 mouseleave: "mouseout"
1090 }, function(e, t) {
1091 b.event.special[e] = {
1092 delegateType: t,
1093 bindType: t,
1094 handle: function(e) {
1095 var n, r = this,
1096 i = e.relatedTarget,
1097 o = e.handleObj;
1098 return (!i || i !== r && !b.contains(r, i)) && (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n
1099 }
1100 }
1101 }), b.support.submitBubbles || (b.event.special.submit = {
1102 setup: function() {
1103 return b.nodeName(this, "form") ? !1 : (b.event.add(this, "click._submit keypress._submit", function(e) {
1104 var n = e.target,
1105 r = b.nodeName(n, "input") || b.nodeName(n, "button") ? n.form : t;
1106 r && !b._data(r, "submitBubbles") && (b.event.add(r, "submit._submit", function(e) {
1107 e._submit_bubble = !0
1108 }), b._data(r, "submitBubbles", !0))
1109 }), t)
1110 },
1111 postDispatch: function(e) {
1112 e._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && b.event.simulate("submit", this.parentNode, e, !0))
1113 },
1114 teardown: function() {
1115 return b.nodeName(this, "form") ? !1 : (b.event.remove(this, "._submit"), t)
1116 }
1117 }), b.support.changeBubbles || (b.event.special.change = {
1118 setup: function() {
1119 return Z.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (b.event.add(this, "propertychange._change", function(e) {
1120 "checked" === e.originalEvent.propertyName && (this._just_changed = !0)
1121 }), b.event.add(this, "click._change", function(e) {
1122 this._just_changed && !e.isTrigger && (this._just_changed = !1), b.event.simulate("change", this, e, !0)
1123 })), !1) : (b.event.add(this, "beforeactivate._change", function(e) {
1124 var t = e.target;
1125 Z.test(t.nodeName) && !b._data(t, "changeBubbles") && (b.event.add(t, "change._change", function(e) {
1126 !this.parentNode || e.isSimulated || e.isTrigger || b.event.simulate("change", this.parentNode, e, !0)
1127 }), b._data(t, "changeBubbles", !0))
1128 }), t)
1129 },
1130 handle: function(e) {
1131 var n = e.target;
1132 return this !== n || e.isSimulated || e.isTrigger || "radio" !== n.type && "checkbox" !== n.type ? e.handleObj.handler.apply(this, arguments) : t
1133 },
1134 teardown: function() {
1135 return b.event.remove(this, "._change"), !Z.test(this.nodeName)
1136 }
1137 }), b.support.focusinBubbles || b.each({
1138 focus: "focusin",
1139 blur: "focusout"
1140 }, function(e, t) {
1141 var n = 0,
1142 r = function(e) {
1143 b.event.simulate(t, e.target, b.event.fix(e), !0)
1144 };
1145 b.event.special[t] = {
1146 setup: function() {
1147 0 === n++ && o.addEventListener(e, r, !0)
1148 },
1149 teardown: function() {
1150 0 === --n && o.removeEventListener(e, r, !0)
1151 }
1152 }
1153 }), b.fn.extend({
1154 on: function(e, n, r, i, o) {
1155 var a, s;
1156 if ("object" == typeof e) {
1157 "string" != typeof n && (r = r || n, n = t);
1158 for (a in e) this.on(a, n, r, e[a], o);
1159 return this
1160 }
1161 if (null == r && null == i ? (i = n, r = n = t) : null == i && ("string" == typeof n ? (i = r, r = t) : (i = r, r = n, n = t)), i === !1) i = ot;
1162 else if (!i) return this;
1163 return 1 === o && (s = i, i = function(e) {
1164 return b().off(e), s.apply(this, arguments)
1165 }, i.guid = s.guid || (s.guid = b.guid++)), this.each(function() {
1166 b.event.add(this, e, i, r, n)
1167 })
1168 },
1169 one: function(e, t, n, r) {
1170 return this.on(e, t, n, r, 1)
1171 },
1172 off: function(e, n, r) {
1173 var i, o;
1174 if (e && e.preventDefault && e.handleObj) return i = e.handleObj, b(e.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace : i.origType, i.selector, i.handler), this;
1175 if ("object" == typeof e) {
1176 for (o in e) this.off(o, n, e[o]);
1177 return this
1178 }
1179 return (n === !1 || "function" == typeof n) && (r = n, n = t), r === !1 && (r = ot), this.each(function() {
1180 b.event.remove(this, e, r, n)
1181 })
1182 },
1183 bind: function(e, t, n) {
1184 return this.on(e, null, t, n)
1185 },
1186 unbind: function(e, t) {
1187 return this.off(e, null, t)
1188 },
1189 delegate: function(e, t, n, r) {
1190 return this.on(t, e, n, r)
1191 },
1192 undelegate: function(e, t, n) {
1193 return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
1194 },
1195 trigger: function(e, t) {
1196 return this.each(function() {
1197 b.event.trigger(e, t, this)
1198 })
1199 },
1200 triggerHandler: function(e, n) {
1201 var r = this[0];
1202 return r ? b.event.trigger(e, n, r, !0) : t
1203 }
1204 }),
1205 function(e, t) {
1206 var n, r, i, o, a, s, u, l, c, p, f, d, h, g, m, y, v, x = "sizzle" + -new Date,
1207 w = e.document,
1208 T = {},
1209 N = 0,
1210 C = 0,
1211 k = it(),
1212 E = it(),
1213 S = it(),
1214 A = typeof t,
1215 j = 1 << 31,
1216 D = [],
1217 L = D.pop,
1218 H = D.push,
1219 q = D.slice,
1220 M = D.indexOf || function(e) {
1221 var t = 0,
1222 n = this.length;
1223 for (; n > t; t++)
1224 if (this[t] === e) return t;
1225 return -1
1226 },
1227 _ = "[\\x20\\t\\r\\n\\f]",
1228 F = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
1229 O = F.replace("w", "w#"),
1230 B = "([*^$|!~]?=)",
1231 P = "\\[" + _ + "*(" + F + ")" + _ + "*(?:" + B + _ + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + O + ")|)|)" + _ + "*\\]",
1232 R = ":(" + F + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + P.replace(3, 8) + ")*)|.*)\\)|)",
1233 W = RegExp("^" + _ + "+|((?:^|[^\\\\])(?:\\\\.)*)" + _ + "+$", "g"),
1234 $ = RegExp("^" + _ + "*," + _ + "*"),
1235 I = RegExp("^" + _ + "*([\\x20\\t\\r\\n\\f>+~])" + _ + "*"),
1236 z = RegExp(R),
1237 X = RegExp("^" + O + "$"),
1238 U = {
1239 ID: RegExp("^#(" + F + ")"),
1240 CLASS: RegExp("^\\.(" + F + ")"),
1241 NAME: RegExp("^\\[name=['\"]?(" + F + ")['\"]?\\]"),
1242 TAG: RegExp("^(" + F.replace("w", "w*") + ")"),
1243 ATTR: RegExp("^" + P),
1244 PSEUDO: RegExp("^" + R),
1245 CHILD: RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + _ + "*(even|odd|(([+-]|)(\\d*)n|)" + _ + "*(?:([+-]|)" + _ + "*(\\d+)|))" + _ + "*\\)|)", "i"),
1246 needsContext: RegExp("^" + _ + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + _ + "*((?:-\\d)?\\d*)" + _ + "*\\)|)(?=[^-]|$)", "i")
1247 },
1248 V = /[\x20\t\r\n\f]*[+~]/,
1249 Y = /^[^{]+\{\s*\[native code/,
1250 J = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
1251 G = /^(?:input|select|textarea|button)$/i,
1252 Q = /^h\d$/i,
1253 K = /'|\\/g,
1254 Z = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
1255 et = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
1256 tt = function(e, t) {
1257 var n = "0x" + t - 65536;
1258 return n !== n ? t : 0 > n ? String.fromCharCode(n + 65536) : String.fromCharCode(55296 | n >> 10, 56320 | 1023 & n)
1259 };
1260 try {
1261 q.call(w.documentElement.childNodes, 0)[0].nodeType
1262 } catch (nt) {
1263 q = function(e) {
1264 var t, n = [];
1265 while (t = this[e++]) n.push(t);
1266 return n
1267 }
1268 }
1269
1270 function rt(e) {
1271 return Y.test(e + "")
1272 }
1273
1274 function it() {
1275 var e, t = [];
1276 return e = function(n, r) {
1277 return t.push(n += " ") > i.cacheLength && delete e[t.shift()], e[n] = r
1278 }
1279 }
1280
1281 function ot(e) {
1282 return e[x] = !0, e
1283 }
1284
1285 function at(e) {
1286 var t = p.createElement("div");
1287 try {
1288 return e(t)
1289 } catch (n) {
1290 return !1
1291 } finally {
1292 t = null
1293 }
1294 }
1295
1296 function st(e, t, n, r) {
1297 var i, o, a, s, u, l, f, g, m, v;
1298 if ((t ? t.ownerDocument || t : w) !== p && c(t), t = t || p, n = n || [], !e || "string" != typeof e) return n;
1299 if (1 !== (s = t.nodeType) && 9 !== s) return [];
1300 if (!d && !r) {
1301 if (i = J.exec(e))
1302 if (a = i[1]) {
1303 if (9 === s) {
1304 if (o = t.getElementById(a), !o || !o.parentNode) return n;
1305 if (o.id === a) return n.push(o), n
1306 } else if (t.ownerDocument && (o = t.ownerDocument.getElementById(a)) && y(t, o) && o.id === a) return n.push(o), n
1307 } else {
1308 if (i[2]) return H.apply(n, q.call(t.getElementsByTagName(e), 0)), n;
1309 if ((a = i[3]) && T.getByClassName && t.getElementsByClassName) return H.apply(n, q.call(t.getElementsByClassName(a), 0)), n
1310 }
1311 if (T.qsa && !h.test(e)) {
1312 if (f = !0, g = x, m = t, v = 9 === s && e, 1 === s && "object" !== t.nodeName.toLowerCase()) {
1313 l = ft(e), (f = t.getAttribute("id")) ? g = f.replace(K, "\\$&") : t.setAttribute("id", g), g = "[id='" + g + "'] ", u = l.length;
1314 while (u--) l[u] = g + dt(l[u]);
1315 m = V.test(e) && t.parentNode || t, v = l.join(",")
1316 }
1317 if (v) try {
1318 return H.apply(n, q.call(m.querySelectorAll(v), 0)), n
1319 } catch (b) {} finally {
1320 f || t.removeAttribute("id")
1321 }
1322 }
1323 }
1324 return wt(e.replace(W, "$1"), t, n, r)
1325 }
1326 a = st.isXML = function(e) {
1327 var t = e && (e.ownerDocument || e).documentElement;
1328 return t ? "HTML" !== t.nodeName : !1
1329 }, c = st.setDocument = function(e) {
1330 var n = e ? e.ownerDocument || e : w;
1331 return n !== p && 9 === n.nodeType && n.documentElement ? (p = n, f = n.documentElement, d = a(n), T.tagNameNoComments = at(function(e) {
1332 return e.appendChild(n.createComment("")), !e.getElementsByTagName("*").length
1333 }), T.attributes = at(function(e) {
1334 e.innerHTML = "<select></select>";
1335 var t = typeof e.lastChild.getAttribute("multiple");
1336 return "boolean" !== t && "string" !== t
1337 }), T.getByClassName = at(function(e) {
1338 return e.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>", e.getElementsByClassName && e.getElementsByClassName("e").length ? (e.lastChild.className = "e", 2 === e.getElementsByClassName("e").length) : !1
1339 }), T.getByName = at(function(e) {
1340 e.id = x + 0, e.innerHTML = "<a name='" + x + "'></a><div name='" + x + "'></div>", f.insertBefore(e, f.firstChild);
1341 var t = n.getElementsByName && n.getElementsByName(x).length === 2 + n.getElementsByName(x + 0).length;
1342 return T.getIdNotName = !n.getElementById(x), f.removeChild(e), t
1343 }), i.attrHandle = at(function(e) {
1344 return e.innerHTML = "<a href='#'></a>", e.firstChild && typeof e.firstChild.getAttribute !== A && "#" === e.firstChild.getAttribute("href")
1345 }) ? {} : {
1346 href: function(e) {
1347 return e.getAttribute("href", 2)
1348 },
1349 type: function(e) {
1350 return e.getAttribute("type")
1351 }
1352 }, T.getIdNotName ? (i.find.ID = function(e, t) {
1353 if (typeof t.getElementById !== A && !d) {
1354 var n = t.getElementById(e);
1355 return n && n.parentNode ? [n] : []
1356 }
1357 }, i.filter.ID = function(e) {
1358 var t = e.replace(et, tt);
1359 return function(e) {
1360 return e.getAttribute("id") === t
1361 }
1362 }) : (i.find.ID = function(e, n) {
1363 if (typeof n.getElementById !== A && !d) {
1364 var r = n.getElementById(e);
1365 return r ? r.id === e || typeof r.getAttributeNode !== A && r.getAttributeNode("id").value === e ? [r] : t : []
1366 }
1367 }, i.filter.ID = function(e) {
1368 var t = e.replace(et, tt);
1369 return function(e) {
1370 var n = typeof e.getAttributeNode !== A && e.getAttributeNode("id");
1371 return n && n.value === t
1372 }
1373 }), i.find.TAG = T.tagNameNoComments ? function(e, n) {
1374 return typeof n.getElementsByTagName !== A ? n.getElementsByTagName(e) : t
1375 } : function(e, t) {
1376 var n, r = [],
1377 i = 0,
1378 o = t.getElementsByTagName(e);
1379 if ("*" === e) {
1380 while (n = o[i++]) 1 === n.nodeType && r.push(n);
1381 return r
1382 }
1383 return o
1384 }, i.find.NAME = T.getByName && function(e, n) {
1385 return typeof n.getElementsByName !== A ? n.getElementsByName(name) : t
1386 }, i.find.CLASS = T.getByClassName && function(e, n) {
1387 return typeof n.getElementsByClassName === A || d ? t : n.getElementsByClassName(e)
1388 }, g = [], h = [":focus"], (T.qsa = rt(n.querySelectorAll)) && (at(function(e) {
1389 e.innerHTML = "<select><option selected=''></option></select>", e.querySelectorAll("[selected]").length || h.push("\\[" + _ + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"), e.querySelectorAll(":checked").length || h.push(":checked")
1390 }), at(function(e) {
1391 e.innerHTML = "<input type='hidden' i=''/>", e.querySelectorAll("[i^='']").length && h.push("[*^$]=" + _ + "*(?:\"\"|'')"), e.querySelectorAll(":enabled").length || h.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), h.push(",.*:")
1392 })), (T.matchesSelector = rt(m = f.matchesSelector || f.mozMatchesSelector || f.webkitMatchesSelector || f.oMatchesSelector || f.msMatchesSelector)) && at(function(e) {
1393 T.disconnectedMatch = m.call(e, "div"), m.call(e, "[s!='']:x"), g.push("!=", R)
1394 }), h = RegExp(h.join("|")), g = RegExp(g.join("|")), y = rt(f.contains) || f.compareDocumentPosition ? function(e, t) {
1395 var n = 9 === e.nodeType ? e.documentElement : e,
1396 r = t && t.parentNode;
1397 return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
1398 } : function(e, t) {
1399 if (t)
1400 while (t = t.parentNode)
1401 if (t === e) return !0;
1402 return !1
1403 }, v = f.compareDocumentPosition ? function(e, t) {
1404 var r;
1405 return e === t ? (u = !0, 0) : (r = t.compareDocumentPosition && e.compareDocumentPosition && e.compareDocumentPosition(t)) ? 1 & r || e.parentNode && 11 === e.parentNode.nodeType ? e === n || y(w, e) ? -1 : t === n || y(w, t) ? 1 : 0 : 4 & r ? -1 : 1 : e.compareDocumentPosition ? -1 : 1
1406 } : function(e, t) {
1407 var r, i = 0,
1408 o = e.parentNode,
1409 a = t.parentNode,
1410 s = [e],
1411 l = [t];
1412 if (e === t) return u = !0, 0;
1413 if (!o || !a) return e === n ? -1 : t === n ? 1 : o ? -1 : a ? 1 : 0;
1414 if (o === a) return ut(e, t);
1415 r = e;
1416 while (r = r.parentNode) s.unshift(r);
1417 r = t;
1418 while (r = r.parentNode) l.unshift(r);
1419 while (s[i] === l[i]) i++;
1420 return i ? ut(s[i], l[i]) : s[i] === w ? -1 : l[i] === w ? 1 : 0
1421 }, u = !1, [0, 0].sort(v), T.detectDuplicates = u, p) : p
1422 }, st.matches = function(e, t) {
1423 return st(e, null, null, t)
1424 }, st.matchesSelector = function(e, t) {
1425 if ((e.ownerDocument || e) !== p && c(e), t = t.replace(Z, "='$1']"), !(!T.matchesSelector || d || g && g.test(t) || h.test(t))) try {
1426 var n = m.call(e, t);
1427 if (n || T.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n
1428 } catch (r) {}
1429 return st(t, p, null, [e]).length > 0
1430 }, st.contains = function(e, t) {
1431 return (e.ownerDocument || e) !== p && c(e), y(e, t)
1432 }, st.attr = function(e, t) {
1433 var n;
1434 return (e.ownerDocument || e) !== p && c(e), d || (t = t.toLowerCase()), (n = i.attrHandle[t]) ? n(e) : d || T.attributes ? e.getAttribute(t) : ((n = e.getAttributeNode(t)) || e.getAttribute(t)) && e[t] === !0 ? t : n && n.specified ? n.value : null
1435 }, st.error = function(e) {
1436 throw Error("Syntax error, unrecognized expression: " + e)
1437 }, st.uniqueSort = function(e) {
1438 var t, n = [],
1439 r = 1,
1440 i = 0;
1441 if (u = !T.detectDuplicates, e.sort(v), u) {
1442 for (; t = e[r]; r++) t === e[r - 1] && (i = n.push(r));
1443 while (i--) e.splice(n[i], 1)
1444 }
1445 return e
1446 };
1447
1448 function ut(e, t) {
1449 var n = t && e,
1450 r = n && (~t.sourceIndex || j) - (~e.sourceIndex || j);
1451 if (r) return r;
1452 if (n)
1453 while (n = n.nextSibling)
1454 if (n === t) return -1;
1455 return e ? 1 : -1
1456 }
1457
1458 function lt(e) {
1459 return function(t) {
1460 var n = t.nodeName.toLowerCase();
1461 return "input" === n && t.type === e
1462 }
1463 }
1464
1465 function ct(e) {
1466 return function(t) {
1467 var n = t.nodeName.toLowerCase();
1468 return ("input" === n || "button" === n) && t.type === e
1469 }
1470 }
1471
1472 function pt(e) {
1473 return ot(function(t) {
1474 return t = +t, ot(function(n, r) {
1475 var i, o = e([], n.length, t),
1476 a = o.length;
1477 while (a--) n[i = o[a]] && (n[i] = !(r[i] = n[i]))
1478 })
1479 })
1480 }
1481 o = st.getText = function(e) {
1482 var t, n = "",
1483 r = 0,
1484 i = e.nodeType;
1485 if (i) {
1486 if (1 === i || 9 === i || 11 === i) {
1487 if ("string" == typeof e.textContent) return e.textContent;
1488 for (e = e.firstChild; e; e = e.nextSibling) n += o(e)
1489 } else if (3 === i || 4 === i) return e.nodeValue
1490 } else
1491 for (; t = e[r]; r++) n += o(t);
1492 return n
1493 }, i = st.selectors = {
1494 cacheLength: 50,
1495 createPseudo: ot,
1496 match: U,
1497 find: {},
1498 relative: {
1499 ">": {
1500 dir: "parentNode",
1501 first: !0
1502 },
1503 " ": {
1504 dir: "parentNode"
1505 },
1506 "+": {
1507 dir: "previousSibling",
1508 first: !0
1509 },
1510 "~": {
1511 dir: "previousSibling"
1512 }
1513 },
1514 preFilter: {
1515 ATTR: function(e) {
1516 return e[1] = e[1].replace(et, tt), e[3] = (e[4] || e[5] || "").replace(et, tt), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
1517 },
1518 CHILD: function(e) {
1519 return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || st.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && st.error(e[0]), e
1520 },
1521 PSEUDO: function(e) {
1522 var t, n = !e[5] && e[2];
1523 return U.CHILD.test(e[0]) ? null : (e[4] ? e[2] = e[4] : n && z.test(n) && (t = ft(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
1524 }
1525 },
1526 filter: {
1527 TAG: function(e) {
1528 return "*" === e ? function() {
1529 return !0
1530 } : (e = e.replace(et, tt).toLowerCase(), function(t) {
1531 return t.nodeName && t.nodeName.toLowerCase() === e
1532 })
1533 },
1534 CLASS: function(e) {
1535 var t = k[e + " "];
1536 return t || (t = RegExp("(^|" + _ + ")" + e + "(" + _ + "|$)")) && k(e, function(e) {
1537 return t.test(e.className || typeof e.getAttribute !== A && e.getAttribute("class") || "")
1538 })
1539 },
1540 ATTR: function(e, t, n) {
1541 return function(r) {
1542 var i = st.attr(r, e);
1543 return null == i ? "!=" === t : t ? (i += "", "=" === t ? i === n : "!=" === t ? i !== n : "^=" === t ? n && 0 === i.indexOf(n) : "*=" === t ? n && i.indexOf(n) > -1 : "$=" === t ? n && i.slice(-n.length) === n : "~=" === t ? (" " + i + " ").indexOf(n) > -1 : "|=" === t ? i === n || i.slice(0, n.length + 1) === n + "-" : !1) : !0
1544 }
1545 },
1546 CHILD: function(e, t, n, r, i) {
1547 var o = "nth" !== e.slice(0, 3),
1548 a = "last" !== e.slice(-4),
1549 s = "of-type" === t;
1550 return 1 === r && 0 === i ? function(e) {
1551 return !!e.parentNode
1552 } : function(t, n, u) {
1553 var l, c, p, f, d, h, g = o !== a ? "nextSibling" : "previousSibling",
1554 m = t.parentNode,
1555 y = s && t.nodeName.toLowerCase(),
1556 v = !u && !s;
1557 if (m) {
1558 if (o) {
1559 while (g) {
1560 p = t;
1561 while (p = p[g])
1562 if (s ? p.nodeName.toLowerCase() === y : 1 === p.nodeType) return !1;
1563 h = g = "only" === e && !h && "nextSibling"
1564 }
1565 return !0
1566 }
1567 if (h = [a ? m.firstChild : m.lastChild], a && v) {
1568 c = m[x] || (m[x] = {}), l = c[e] || [], d = l[0] === N && l[1], f = l[0] === N && l[2], p = d && m.childNodes[d];
1569 while (p = ++d && p && p[g] || (f = d = 0) || h.pop())
1570 if (1 === p.nodeType && ++f && p === t) {
1571 c[e] = [N, d, f];
1572 break
1573 }
1574 } else if (v && (l = (t[x] || (t[x] = {}))[e]) && l[0] === N) f = l[1];
1575 else
1576 while (p = ++d && p && p[g] || (f = d = 0) || h.pop())
1577 if ((s ? p.nodeName.toLowerCase() === y : 1 === p.nodeType) && ++f && (v && ((p[x] || (p[x] = {}))[e] = [N, f]), p === t)) break; return f -= i, f === r || 0 === f % r && f / r >= 0
1578 }
1579 }
1580 },
1581 PSEUDO: function(e, t) {
1582 var n, r = i.pseudos[e] || i.setFilters[e.toLowerCase()] || st.error("unsupported pseudo: " + e);
1583 return r[x] ? r(t) : r.length > 1 ? (n = [e, e, "", t], i.setFilters.hasOwnProperty(e.toLowerCase()) ? ot(function(e, n) {
1584 var i, o = r(e, t),
1585 a = o.length;
1586 while (a--) i = M.call(e, o[a]), e[i] = !(n[i] = o[a])
1587 }) : function(e) {
1588 return r(e, 0, n)
1589 }) : r
1590 }
1591 },
1592 pseudos: {
1593 not: ot(function(e) {
1594 var t = [],
1595 n = [],
1596 r = s(e.replace(W, "$1"));
1597 return r[x] ? ot(function(e, t, n, i) {
1598 var o, a = r(e, null, i, []),
1599 s = e.length;
1600 while (s--)(o = a[s]) && (e[s] = !(t[s] = o))
1601 }) : function(e, i, o) {
1602 return t[0] = e, r(t, null, o, n), !n.pop()
1603 }
1604 }),
1605 has: ot(function(e) {
1606 return function(t) {
1607 return st(e, t).length > 0
1608 }
1609 }),
1610 contains: ot(function(e) {
1611 return function(t) {
1612 return (t.textContent || t.innerText || o(t)).indexOf(e) > -1
1613 }
1614 }),
1615 lang: ot(function(e) {
1616 return X.test(e || "") || st.error("unsupported lang: " + e), e = e.replace(et, tt).toLowerCase(),
1617 function(t) {
1618 var n;
1619 do
1620 if (n = d ? t.getAttribute("xml:lang") || t.getAttribute("lang") : t.lang) return n = n.toLowerCase(), n === e || 0 === n.indexOf(e + "-");
1621 while ((t = t.parentNode) && 1 === t.nodeType);
1622 return !1
1623 }
1624 }),
1625 target: function(t) {
1626 var n = e.location && e.location.hash;
1627 return n && n.slice(1) === t.id
1628 },
1629 root: function(e) {
1630 return e === f
1631 },
1632 focus: function(e) {
1633 return e === p.activeElement && (!p.hasFocus || p.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
1634 },
1635 enabled: function(e) {
1636 return e.disabled === !1
1637 },
1638 disabled: function(e) {
1639 return e.disabled === !0
1640 },
1641 checked: function(e) {
1642 var t = e.nodeName.toLowerCase();
1643 return "input" === t && !!e.checked || "option" === t && !!e.selected
1644 },
1645 selected: function(e) {
1646 return e.parentNode && e.parentNode.selectedIndex, e.selected === !0
1647 },
1648 empty: function(e) {
1649 for (e = e.firstChild; e; e = e.nextSibling)
1650 if (e.nodeName > "@" || 3 === e.nodeType || 4 === e.nodeType) return !1;
1651 return !0
1652 },
1653 parent: function(e) {
1654 return !i.pseudos.empty(e)
1655 },
1656 header: function(e) {
1657 return Q.test(e.nodeName)
1658 },
1659 input: function(e) {
1660 return G.test(e.nodeName)
1661 },
1662 button: function(e) {
1663 var t = e.nodeName.toLowerCase();
1664 return "input" === t && "button" === e.type || "button" === t
1665 },
1666 text: function(e) {
1667 var t;
1668 return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || t.toLowerCase() === e.type)
1669 },
1670 first: pt(function() {
1671 return [0]
1672 }),
1673 last: pt(function(e, t) {
1674 return [t - 1]
1675 }),
1676 eq: pt(function(e, t, n) {
1677 return [0 > n ? n + t : n]
1678 }),
1679 even: pt(function(e, t) {
1680 var n = 0;
1681 for (; t > n; n += 2) e.push(n);
1682 return e
1683 }),
1684 odd: pt(function(e, t) {
1685 var n = 1;
1686 for (; t > n; n += 2) e.push(n);
1687 return e
1688 }),
1689 lt: pt(function(e, t, n) {
1690 var r = 0 > n ? n + t : n;
1691 for (; --r >= 0;) e.push(r);
1692 return e
1693 }),
1694 gt: pt(function(e, t, n) {
1695 var r = 0 > n ? n + t : n;
1696 for (; t > ++r;) e.push(r);
1697 return e
1698 })
1699 }
1700 };
1701 for (n in {
1702 radio: !0,
1703 checkbox: !0,
1704 file: !0,
1705 password: !0,
1706 image: !0
1707 }) i.pseudos[n] = lt(n);
1708 for (n in {
1709 submit: !0,
1710 reset: !0
1711 }) i.pseudos[n] = ct(n);
1712
1713 function ft(e, t) {
1714 var n, r, o, a, s, u, l, c = E[e + " "];
1715 if (c) return t ? 0 : c.slice(0);
1716 s = e, u = [], l = i.preFilter;
1717 while (s) {
1718 (!n || (r = $.exec(s))) && (r && (s = s.slice(r[0].length) || s), u.push(o = [])), n = !1, (r = I.exec(s)) && (n = r.shift(), o.push({
1719 value: n,
1720 type: r[0].replace(W, " ")
1721 }), s = s.slice(n.length));
1722 for (a in i.filter) !(r = U[a].exec(s)) || l[a] && !(r = l[a](r)) || (n = r.shift(), o.push({
1723 value: n,
1724 type: a,
1725 matches: r
1726 }), s = s.slice(n.length));
1727 if (!n) break
1728 }
1729 return t ? s.length : s ? st.error(e) : E(e, u).slice(0)
1730 }
1731
1732 function dt(e) {
1733 var t = 0,
1734 n = e.length,
1735 r = "";
1736 for (; n > t; t++) r += e[t].value;
1737 return r
1738 }
1739
1740 function ht(e, t, n) {
1741 var i = t.dir,
1742 o = n && "parentNode" === i,
1743 a = C++;
1744 return t.first ? function(t, n, r) {
1745 while (t = t[i])
1746 if (1 === t.nodeType || o) return e(t, n, r)
1747 } : function(t, n, s) {
1748 var u, l, c, p = N + " " + a;
1749 if (s) {
1750 while (t = t[i])
1751 if ((1 === t.nodeType || o) && e(t, n, s)) return !0
1752 } else
1753 while (t = t[i])
1754 if (1 === t.nodeType || o)
1755 if (c = t[x] || (t[x] = {}), (l = c[i]) && l[0] === p) {
1756 if ((u = l[1]) === !0 || u === r) return u === !0
1757 } else if (l = c[i] = [p], l[1] = e(t, n, s) || r, l[1] === !0) return !0
1758 }
1759 }
1760
1761 function gt(e) {
1762 return e.length > 1 ? function(t, n, r) {
1763 var i = e.length;
1764 while (i--)
1765 if (!e[i](t, n, r)) return !1;
1766 return !0
1767 } : e[0]
1768 }
1769
1770 function mt(e, t, n, r, i) {
1771 var o, a = [],
1772 s = 0,
1773 u = e.length,
1774 l = null != t;
1775 for (; u > s; s++)(o = e[s]) && (!n || n(o, r, i)) && (a.push(o), l && t.push(s));
1776 return a
1777 }
1778
1779 function yt(e, t, n, r, i, o) {
1780 return r && !r[x] && (r = yt(r)), i && !i[x] && (i = yt(i, o)), ot(function(o, a, s, u) {
1781 var l, c, p, f = [],
1782 d = [],
1783 h = a.length,
1784 g = o || xt(t || "*", s.nodeType ? [s] : s, []),
1785 m = !e || !o && t ? g : mt(g, f, e, s, u),
1786 y = n ? i || (o ? e : h || r) ? [] : a : m;
1787 if (n && n(m, y, s, u), r) {
1788 l = mt(y, d), r(l, [], s, u), c = l.length;
1789 while (c--)(p = l[c]) && (y[d[c]] = !(m[d[c]] = p))
1790 }
1791 if (o) {
1792 if (i || e) {
1793 if (i) {
1794 l = [], c = y.length;
1795 while (c--)(p = y[c]) && l.push(m[c] = p);
1796 i(null, y = [], l, u)
1797 }
1798 c = y.length;
1799 while (c--)(p = y[c]) && (l = i ? M.call(o, p) : f[c]) > -1 && (o[l] = !(a[l] = p))
1800 }
1801 } else y = mt(y === a ? y.splice(h, y.length) : y), i ? i(null, a, y, u) : H.apply(a, y)
1802 })
1803 }
1804
1805 function vt(e) {
1806 var t, n, r, o = e.length,
1807 a = i.relative[e[0].type],
1808 s = a || i.relative[" "],
1809 u = a ? 1 : 0,
1810 c = ht(function(e) {
1811 return e === t
1812 }, s, !0),
1813 p = ht(function(e) {
1814 return M.call(t, e) > -1
1815 }, s, !0),
1816 f = [function(e, n, r) {
1817 return !a && (r || n !== l) || ((t = n).nodeType ? c(e, n, r) : p(e, n, r))
1818 }];
1819 for (; o > u; u++)
1820 if (n = i.relative[e[u].type]) f = [ht(gt(f), n)];
1821 else {
1822 if (n = i.filter[e[u].type].apply(null, e[u].matches), n[x]) {
1823 for (r = ++u; o > r; r++)
1824 if (i.relative[e[r].type]) break;
1825 return yt(u > 1 && gt(f), u > 1 && dt(e.slice(0, u - 1)).replace(W, "$1"), n, r > u && vt(e.slice(u, r)), o > r && vt(e = e.slice(r)), o > r && dt(e))
1826 }
1827 f.push(n)
1828 }
1829 return gt(f)
1830 }
1831
1832 function bt(e, t) {
1833 var n = 0,
1834 o = t.length > 0,
1835 a = e.length > 0,
1836 s = function(s, u, c, f, d) {
1837 var h, g, m, y = [],
1838 v = 0,
1839 b = "0",
1840 x = s && [],
1841 w = null != d,
1842 T = l,
1843 C = s || a && i.find.TAG("*", d && u.parentNode || u),
1844 k = N += null == T ? 1 : Math.random() || .1;
1845 for (w && (l = u !== p && u, r = n); null != (h = C[b]); b++) {
1846 if (a && h) {
1847 g = 0;
1848 while (m = e[g++])
1849 if (m(h, u, c)) {
1850 f.push(h);
1851 break
1852 }
1853 w && (N = k, r = ++n)
1854 }
1855 o && ((h = !m && h) && v--, s && x.push(h))
1856 }
1857 if (v += b, o && b !== v) {
1858 g = 0;
1859 while (m = t[g++]) m(x, y, u, c);
1860 if (s) {
1861 if (v > 0)
1862 while (b--) x[b] || y[b] || (y[b] = L.call(f));
1863 y = mt(y)
1864 }
1865 H.apply(f, y), w && !s && y.length > 0 && v + t.length > 1 && st.uniqueSort(f)
1866 }
1867 return w && (N = k, l = T), x
1868 };
1869 return o ? ot(s) : s
1870 }
1871 s = st.compile = function(e, t) {
1872 var n, r = [],
1873 i = [],
1874 o = S[e + " "];
1875 if (!o) {
1876 t || (t = ft(e)), n = t.length;
1877 while (n--) o = vt(t[n]), o[x] ? r.push(o) : i.push(o);
1878 o = S(e, bt(i, r))
1879 }
1880 return o
1881 };
1882
1883 function xt(e, t, n) {
1884 var r = 0,
1885 i = t.length;
1886 for (; i > r; r++) st(e, t[r], n);
1887 return n
1888 }
1889
1890 function wt(e, t, n, r) {
1891 var o, a, u, l, c, p = ft(e);
1892 if (!r && 1 === p.length) {
1893 if (a = p[0] = p[0].slice(0), a.length > 2 && "ID" === (u = a[0]).type && 9 === t.nodeType && !d && i.relative[a[1].type]) {
1894 if (t = i.find.ID(u.matches[0].replace(et, tt), t)[0], !t) return n;
1895 e = e.slice(a.shift().value.length)
1896 }
1897 o = U.needsContext.test(e) ? 0 : a.length;
1898 while (o--) {
1899 if (u = a[o], i.relative[l = u.type]) break;
1900 if ((c = i.find[l]) && (r = c(u.matches[0].replace(et, tt), V.test(a[0].type) && t.parentNode || t))) {
1901 if (a.splice(o, 1), e = r.length && dt(a), !e) return H.apply(n, q.call(r, 0)), n;
1902 break
1903 }
1904 }
1905 }
1906 return s(e, p)(r, t, d, n, V.test(e)), n
1907 }
1908 i.pseudos.nth = i.pseudos.eq;
1909
1910 function Tt() {}
1911 i.filters = Tt.prototype = i.pseudos, i.setFilters = new Tt, c(), st.attr = b.attr, b.find = st, b.expr = st.selectors, b.expr[":"] = b.expr.pseudos, b.unique = st.uniqueSort, b.text = st.getText, b.isXMLDoc = st.isXML, b.contains = st.contains
1912 }(e);
1913 var at = /Until$/,
1914 st = /^(?:parents|prev(?:Until|All))/,
1915 ut = /^.[^:#\[\.,]*$/,
1916 lt = b.expr.match.needsContext,
1917 ct = {
1918 children: !0,
1919 contents: !0,
1920 next: !0,
1921 prev: !0
1922 };
1923 b.fn.extend({
1924 find: function(e) {
1925 var t, n, r, i = this.length;
1926 if ("string" != typeof e) return r = this, this.pushStack(b(e).filter(function() {
1927 for (t = 0; i > t; t++)
1928 if (b.contains(r[t], this)) return !0
1929 }));
1930 for (n = [], t = 0; i > t; t++) b.find(e, this[t], n);
1931 return n = this.pushStack(i > 1 ? b.unique(n) : n), n.selector = (this.selector ? this.selector + " " : "") + e, n
1932 },
1933 has: function(e) {
1934 var t, n = b(e, this),
1935 r = n.length;
1936 return this.filter(function() {
1937 for (t = 0; r > t; t++)
1938 if (b.contains(this, n[t])) return !0
1939 })
1940 },
1941 not: function(e) {
1942 return this.pushStack(ft(this, e, !1))
1943 },
1944 filter: function(e) {
1945 return this.pushStack(ft(this, e, !0))
1946 },
1947 is: function(e) {
1948 return !!e && ("string" == typeof e ? lt.test(e) ? b(e, this.context).index(this[0]) >= 0 : b.filter(e, this).length > 0 : this.filter(e).length > 0)
1949 },
1950 closest: function(e, t) {
1951 var n, r = 0,
1952 i = this.length,
1953 o = [],
1954 a = lt.test(e) || "string" != typeof e ? b(e, t || this.context) : 0;
1955 for (; i > r; r++) {
1956 n = this[r];
1957 while (n && n.ownerDocument && n !== t && 11 !== n.nodeType) {
1958 if (a ? a.index(n) > -1 : b.find.matchesSelector(n, e)) {
1959 o.push(n);
1960 break
1961 }
1962 n = n.parentNode
1963 }
1964 }
1965 return this.pushStack(o.length > 1 ? b.unique(o) : o)
1966 },
1967 index: function(e) {
1968 return e ? "string" == typeof e ? b.inArray(this[0], b(e)) : b.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
1969 },
1970 add: function(e, t) {
1971 var n = "string" == typeof e ? b(e, t) : b.makeArray(e && e.nodeType ? [e] : e),
1972 r = b.merge(this.get(), n);
1973 return this.pushStack(b.unique(r))
1974 },
1975 addBack: function(e) {
1976 return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
1977 }
1978 }), b.fn.andSelf = b.fn.addBack;
1979
1980 function pt(e, t) {
1981 do e = e[t]; while (e && 1 !== e.nodeType);
1982 return e
1983 }
1984 b.each({
1985 parent: function(e) {
1986 var t = e.parentNode;
1987 return t && 11 !== t.nodeType ? t : null
1988 },
1989 parents: function(e) {
1990 return b.dir(e, "parentNode")
1991 },
1992 parentsUntil: function(e, t, n) {
1993 return b.dir(e, "parentNode", n)
1994 },
1995 next: function(e) {
1996 return pt(e, "nextSibling")
1997 },
1998 prev: function(e) {
1999 return pt(e, "previousSibling")
2000 },
2001 nextAll: function(e) {
2002 return b.dir(e, "nextSibling")
2003 },
2004 prevAll: function(e) {
2005 return b.dir(e, "previousSibling")
2006 },
2007 nextUntil: function(e, t, n) {
2008 return b.dir(e, "nextSibling", n)
2009 },
2010 prevUntil: function(e, t, n) {
2011 return b.dir(e, "previousSibling", n)
2012 },
2013 siblings: function(e) {
2014 return b.sibling((e.parentNode || {}).firstChild, e)
2015 },
2016 children: function(e) {
2017 return b.sibling(e.firstChild)
2018 },
2019 contents: function(e) {
2020 return b.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : b.merge([], e.childNodes)
2021 }
2022 }, function(e, t) {
2023 b.fn[e] = function(n, r) {
2024 var i = b.map(this, t, n);
2025 return at.test(e) || (r = n), r && "string" == typeof r && (i = b.filter(r, i)), i = this.length > 1 && !ct[e] ? b.unique(i) : i, this.length > 1 && st.test(e) && (i = i.reverse()), this.pushStack(i)
2026 }
2027 }), b.extend({
2028 filter: function(e, t, n) {
2029 return n && (e = ":not(" + e + ")"), 1 === t.length ? b.find.matchesSelector(t[0], e) ? [t[0]] : [] : b.find.matches(e, t)
2030 },
2031 dir: function(e, n, r) {
2032 var i = [],
2033 o = e[n];
2034 while (o && 9 !== o.nodeType && (r === t || 1 !== o.nodeType || !b(o).is(r))) 1 === o.nodeType && i.push(o), o = o[n];
2035 return i
2036 },
2037 sibling: function(e, t) {
2038 var n = [];
2039 for (; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
2040 return n
2041 }
2042 });
2043
2044 function ft(e, t, n) {
2045 if (t = t || 0, b.isFunction(t)) return b.grep(e, function(e, r) {
2046 var i = !!t.call(e, r, e);
2047 return i === n
2048 });
2049 if (t.nodeType) return b.grep(e, function(e) {
2050 return e === t === n
2051 });
2052 if ("string" == typeof t) {
2053 var r = b.grep(e, function(e) {
2054 return 1 === e.nodeType
2055 });
2056 if (ut.test(t)) return b.filter(t, r, !n);
2057 t = b.filter(t, r)
2058 }
2059 return b.grep(e, function(e) {
2060 return b.inArray(e, t) >= 0 === n
2061 })
2062 }
2063
2064 function dt(e) {
2065 var t = ht.split("|"),
2066 n = e.createDocumentFragment();
2067 if (n.createElement)
2068 while (t.length) n.createElement(t.pop());
2069 return n
2070 }
2071 var ht = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
2072 gt = / jQuery\d+="(?:null|\d+)"/g,
2073 mt = RegExp("<(?:" + ht + ")[\\s/>]", "i"),
2074 yt = /^\s+/,
2075 vt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
2076 bt = /<([\w:]+)/,
2077 xt = /<tbody/i,
2078 wt = /<|&#?\w+;/,
2079 Tt = /<(?:script|style|link)/i,
2080 Nt = /^(?:checkbox|radio)$/i,
2081 Ct = /checked\s*(?:[^=]|=\s*.checked.)/i,
2082 kt = /^$|\/(?:java|ecma)script/i,
2083 Et = /^true\/(.*)/,
2084 St = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
2085 At = {
2086 option: [1, "<select multiple='multiple'>", "</select>"],
2087 legend: [1, "<fieldset>", "</fieldset>"],
2088 area: [1, "<map>", "</map>"],
2089 param: [1, "<object>", "</object>"],
2090 thead: [1, "<table>", "</table>"],
2091 tr: [2, "<table><tbody>", "</tbody></table>"],
2092 col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
2093 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
2094 _default: b.support.htmlSerialize ? [0, "", ""] : [1, "X<div>", "</div>"]
2095 },
2096 jt = dt(o),
2097 Dt = jt.appendChild(o.createElement("div"));
2098 At.optgroup = At.option, At.tbody = At.tfoot = At.colgroup = At.caption = At.thead, At.th = At.td, b.fn.extend({
2099 text: function(e) {
2100 return b.access(this, function(e) {
2101 return e === t ? b.text(this) : this.empty().append((this[0] && this[0].ownerDocument || o).createTextNode(e))
2102 }, null, e, arguments.length)
2103 },
2104 wrapAll: function(e) {
2105 if (b.isFunction(e)) return this.each(function(t) {
2106 b(this).wrapAll(e.call(this, t))
2107 });
2108 if (this[0]) {
2109 var t = b(e, this[0].ownerDocument).eq(0).clone(!0);
2110 this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
2111 var e = this;
2112 while (e.firstChild && 1 === e.firstChild.nodeType) e = e.firstChild;
2113 return e
2114 }).append(this)
2115 }
2116 return this
2117 },
2118 wrapInner: function(e) {
2119 return b.isFunction(e) ? this.each(function(t) {
2120 b(this).wrapInner(e.call(this, t))
2121 }) : this.each(function() {
2122 var t = b(this),
2123 n = t.contents();
2124 n.length ? n.wrapAll(e) : t.append(e)
2125 })
2126 },
2127 wrap: function(e) {
2128 var t = b.isFunction(e);
2129 return this.each(function(n) {
2130 b(this).wrapAll(t ? e.call(this, n) : e)
2131 })
2132 },
2133 unwrap: function() {
2134 return this.parent().each(function() {
2135 b.nodeName(this, "body") || b(this).replaceWith(this.childNodes)
2136 }).end()
2137 },
2138 append: function() {
2139 return this.domManip(arguments, !0, function(e) {
2140 (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && this.appendChild(e)
2141 })
2142 },
2143 prepend: function() {
2144 return this.domManip(arguments, !0, function(e) {
2145 (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && this.insertBefore(e, this.firstChild)
2146 })
2147 },
2148 before: function() {
2149 return this.domManip(arguments, !1, function(e) {
2150 this.parentNode && this.parentNode.insertBefore(e, this)
2151 })
2152 },
2153 after: function() {
2154 return this.domManip(arguments, !1, function(e) {
2155 this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
2156 })
2157 },
2158 remove: function(e, t) {
2159 var n, r = 0;
2160 for (; null != (n = this[r]); r++)(!e || b.filter(e, [n]).length > 0) && (t || 1 !== n.nodeType || b.cleanData(Ot(n)), n.parentNode && (t && b.contains(n.ownerDocument, n) && Mt(Ot(n, "script")), n.parentNode.removeChild(n)));
2161 return this
2162 },
2163 empty: function() {
2164 var e, t = 0;
2165 for (; null != (e = this[t]); t++) {
2166 1 === e.nodeType && b.cleanData(Ot(e, !1));
2167 while (e.firstChild) e.removeChild(e.firstChild);
2168 e.options && b.nodeName(e, "select") && (e.options.length = 0)
2169 }
2170 return this
2171 },
2172 clone: function(e, t) {
2173 return e = null == e ? !1 : e, t = null == t ? e : t, this.map(function() {
2174 return b.clone(this, e, t)
2175 })
2176 },
2177 html: function(e) {
2178 return b.access(this, function(e) {
2179 var n = this[0] || {},
2180 r = 0,
2181 i = this.length;
2182 if (e === t) return 1 === n.nodeType ? n.innerHTML.replace(gt, "") : t;
2183 if (!("string" != typeof e || Tt.test(e) || !b.support.htmlSerialize && mt.test(e) || !b.support.leadingWhitespace && yt.test(e) || At[(bt.exec(e) || ["", ""])[1].toLowerCase()])) {
2184 e = e.replace(vt, "<$1></$2>");
2185 try {
2186 for (; i > r; r++) n = this[r] || {}, 1 === n.nodeType && (b.cleanData(Ot(n, !1)), n.innerHTML = e);
2187 n = 0
2188 } catch (o) {}
2189 }
2190 n && this.empty().append(e)
2191 }, null, e, arguments.length)
2192 },
2193 replaceWith: function(e) {
2194 var t = b.isFunction(e);
2195 return t || "string" == typeof e || (e = b(e).not(this).detach()), this.domManip([e], !0, function(e) {
2196 var t = this.nextSibling,
2197 n = this.parentNode;
2198 n && (b(this).remove(), n.insertBefore(e, t))
2199 })
2200 },
2201 detach: function(e) {
2202 return this.remove(e, !0)
2203 },
2204 domManip: function(e, n, r) {
2205 e = f.apply([], e);
2206 var i, o, a, s, u, l, c = 0,
2207 p = this.length,
2208 d = this,
2209 h = p - 1,
2210 g = e[0],
2211 m = b.isFunction(g);
2212 if (m || !(1 >= p || "string" != typeof g || b.support.checkClone) && Ct.test(g)) return this.each(function(i) {
2213 var o = d.eq(i);
2214 m && (e[0] = g.call(this, i, n ? o.html() : t)), o.domManip(e, n, r)
2215 });
2216 if (p && (l = b.buildFragment(e, this[0].ownerDocument, !1, this), i = l.firstChild, 1 === l.childNodes.length && (l = i), i)) {
2217 for (n = n && b.nodeName(i, "tr"), s = b.map(Ot(l, "script"), Ht), a = s.length; p > c; c++) o = l, c !== h && (o = b.clone(o, !0, !0), a && b.merge(s, Ot(o, "script"))), r.call(n && b.nodeName(this[c], "table") ? Lt(this[c], "tbody") : this[c], o, c);
2218 if (a)
2219 for (u = s[s.length - 1].ownerDocument, b.map(s, qt), c = 0; a > c; c++) o = s[c], kt.test(o.type || "") && !b._data(o, "globalEval") && b.contains(u, o) && (o.src ? b.ajax({
2220 url: o.src,
2221 type: "GET",
2222 dataType: "script",
2223 async: !1,
2224 global: !1,
2225 "throws": !0
2226 }) : b.globalEval((o.text || o.textContent || o.innerHTML || "").replace(St, "")));
2227 l = i = null
2228 }
2229 return this
2230 }
2231 });
2232
2233 function Lt(e, t) {
2234 return e.getElementsByTagName(t)[0] || e.appendChild(e.ownerDocument.createElement(t))
2235 }
2236
2237 function Ht(e) {
2238 var t = e.getAttributeNode("type");
2239 return e.type = (t && t.specified) + "/" + e.type, e
2240 }
2241
2242 function qt(e) {
2243 var t = Et.exec(e.type);
2244 return t ? e.type = t[1] : e.removeAttribute("type"), e
2245 }
2246
2247 function Mt(e, t) {
2248 var n, r = 0;
2249 for (; null != (n = e[r]); r++) b._data(n, "globalEval", !t || b._data(t[r], "globalEval"))
2250 }
2251
2252 function _t(e, t) {
2253 if (1 === t.nodeType && b.hasData(e)) {
2254 var n, r, i, o = b._data(e),
2255 a = b._data(t, o),
2256 s = o.events;
2257 if (s) {
2258 delete a.handle, a.events = {};
2259 for (n in s)
2260 for (r = 0, i = s[n].length; i > r; r++) b.event.add(t, n, s[n][r])
2261 }
2262 a.data && (a.data = b.extend({}, a.data))
2263 }
2264 }
2265
2266 function Ft(e, t) {
2267 var n, r, i;
2268 if (1 === t.nodeType) {
2269 if (n = t.nodeName.toLowerCase(), !b.support.noCloneEvent && t[b.expando]) {
2270 i = b._data(t);
2271 for (r in i.events) b.removeEvent(t, r, i.handle);
2272 t.removeAttribute(b.expando)
2273 }
2274 "script" === n && t.text !== e.text ? (Ht(t).text = e.text, qt(t)) : "object" === n ? (t.parentNode && (t.outerHTML = e.outerHTML), b.support.html5Clone && e.innerHTML && !b.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : "input" === n && Nt.test(e.type) ? (t.defaultChecked = t.checked = e.checked, t.value !== e.value && (t.value = e.value)) : "option" === n ? t.defaultSelected = t.selected = e.defaultSelected : ("input" === n || "textarea" === n) && (t.defaultValue = e.defaultValue)
2275 }
2276 }
2277 b.each({
2278 appendTo: "append",
2279 prependTo: "prepend",
2280 insertBefore: "before",
2281 insertAfter: "after",
2282 replaceAll: "replaceWith"
2283 }, function(e, t) {
2284 b.fn[e] = function(e) {
2285 var n, r = 0,
2286 i = [],
2287 o = b(e),
2288 a = o.length - 1;
2289 for (; a >= r; r++) n = r === a ? this : this.clone(!0), b(o[r])[t](n), d.apply(i, n.get());
2290 return this.pushStack(i)
2291 }
2292 });
2293
2294 function Ot(e, n) {
2295 var r, o, a = 0,
2296 s = typeof e.getElementsByTagName !== i ? e.getElementsByTagName(n || "*") : typeof e.querySelectorAll !== i ? e.querySelectorAll(n || "*") : t;
2297 if (!s)
2298 for (s = [], r = e.childNodes || e; null != (o = r[a]); a++) !n || b.nodeName(o, n) ? s.push(o) : b.merge(s, Ot(o, n));
2299 return n === t || n && b.nodeName(e, n) ? b.merge([e], s) : s
2300 }
2301
2302 function Bt(e) {
2303 Nt.test(e.type) && (e.defaultChecked = e.checked)
2304 }
2305 b.extend({
2306 clone: function(e, t, n) {
2307 var r, i, o, a, s, u = b.contains(e.ownerDocument, e);
2308 if (b.support.html5Clone || b.isXMLDoc(e) || !mt.test("<" + e.nodeName + ">") ? o = e.cloneNode(!0) : (Dt.innerHTML = e.outerHTML, Dt.removeChild(o = Dt.firstChild)), !(b.support.noCloneEvent && b.support.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || b.isXMLDoc(e)))
2309 for (r = Ot(o), s = Ot(e), a = 0; null != (i = s[a]); ++a) r[a] && Ft(i, r[a]);
2310 if (t)
2311 if (n)
2312 for (s = s || Ot(e), r = r || Ot(o), a = 0; null != (i = s[a]); a++) _t(i, r[a]);
2313 else _t(e, o);
2314 return r = Ot(o, "script"), r.length > 0 && Mt(r, !u && Ot(e, "script")), r = s = i = null, o
2315 },
2316 buildFragment: function(e, t, n, r) {
2317 var i, o, a, s, u, l, c, p = e.length,
2318 f = dt(t),
2319 d = [],
2320 h = 0;
2321 for (; p > h; h++)
2322 if (o = e[h], o || 0 === o)
2323 if ("object" === b.type(o)) b.merge(d, o.nodeType ? [o] : o);
2324 else if (wt.test(o)) {
2325 s = s || f.appendChild(t.createElement("div")), u = (bt.exec(o) || ["", ""])[1].toLowerCase(), c = At[u] || At._default, s.innerHTML = c[1] + o.replace(vt, "<$1></$2>") + c[2], i = c[0];
2326 while (i--) s = s.lastChild;
2327 if (!b.support.leadingWhitespace && yt.test(o) && d.push(t.createTextNode(yt.exec(o)[0])), !b.support.tbody) {
2328 o = "table" !== u || xt.test(o) ? "<table>" !== c[1] || xt.test(o) ? 0 : s : s.firstChild, i = o && o.childNodes.length;
2329 while (i--) b.nodeName(l = o.childNodes[i], "tbody") && !l.childNodes.length && o.removeChild(l)
2330 }
2331 b.merge(d, s.childNodes), s.textContent = "";
2332 while (s.firstChild) s.removeChild(s.firstChild);
2333 s = f.lastChild
2334 } else d.push(t.createTextNode(o));
2335 s && f.removeChild(s), b.support.appendChecked || b.grep(Ot(d, "input"), Bt), h = 0;
2336 while (o = d[h++])
2337 if ((!r || -1 === b.inArray(o, r)) && (a = b.contains(o.ownerDocument, o), s = Ot(f.appendChild(o), "script"), a && Mt(s), n)) {
2338 i = 0;
2339 while (o = s[i++]) kt.test(o.type || "") && n.push(o)
2340 }
2341 return s = null, f
2342 },
2343 cleanData: function(e, t) {
2344 var n, r, o, a, s = 0,
2345 u = b.expando,
2346 l = b.cache,
2347 p = b.support.deleteExpando,
2348 f = b.event.special;
2349 for (; null != (n = e[s]); s++)
2350 if ((t || b.acceptData(n)) && (o = n[u], a = o && l[o])) {
2351 if (a.events)
2352 for (r in a.events) f[r] ? b.event.remove(n, r) : b.removeEvent(n, r, a.handle);
2353 l[o] && (delete l[o], p ? delete n[u] : typeof n.removeAttribute !== i ? n.removeAttribute(u) : n[u] = null, c.push(o))
2354 }
2355 }
2356 });
2357 var Pt, Rt, Wt, $t = /alpha\([^)]*\)/i,
2358 It = /opacity\s*=\s*([^)]*)/,
2359 zt = /^(top|right|bottom|left)$/,
2360 Xt = /^(none|table(?!-c[ea]).+)/,
2361 Ut = /^margin/,
2362 Vt = RegExp("^(" + x + ")(.*)$", "i"),
2363 Yt = RegExp("^(" + x + ")(?!px)[a-z%]+$", "i"),
2364 Jt = RegExp("^([+-])=(" + x + ")", "i"),
2365 Gt = {
2366 BODY: "block"
2367 },
2368 Qt = {
2369 position: "absolute",
2370 visibility: "hidden",
2371 display: "block"
2372 },
2373 Kt = {
2374 letterSpacing: 0,
2375 fontWeight: 400
2376 },
2377 Zt = ["Top", "Right", "Bottom", "Left"],
2378 en = ["Webkit", "O", "Moz", "ms"];
2379
2380 function tn(e, t) {
2381 if (t in e) return t;
2382 var n = t.charAt(0).toUpperCase() + t.slice(1),
2383 r = t,
2384 i = en.length;
2385 while (i--)
2386 if (t = en[i] + n, t in e) return t;
2387 return r
2388 }
2389
2390 function nn(e, t) {
2391 return e = t || e, "none" === b.css(e, "display") || !b.contains(e.ownerDocument, e)
2392 }
2393
2394 function rn(e, t) {
2395 var n, r, i, o = [],
2396 a = 0,
2397 s = e.length;
2398 for (; s > a; a++) r = e[a], r.style && (o[a] = b._data(r, "olddisplay"), n = r.style.display, t ? (o[a] || "none" !== n || (r.style.display = ""), "" === r.style.display && nn(r) && (o[a] = b._data(r, "olddisplay", un(r.nodeName)))) : o[a] || (i = nn(r), (n && "none" !== n || !i) && b._data(r, "olddisplay", i ? n : b.css(r, "display"))));
2399 for (a = 0; s > a; a++) r = e[a], r.style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? o[a] || "" : "none"));
2400 return e
2401 }
2402 b.fn.extend({
2403 css: function(e, n) {
2404 return b.access(this, function(e, n, r) {
2405 var i, o, a = {},
2406 s = 0;
2407 if (b.isArray(n)) {
2408 for (o = Rt(e), i = n.length; i > s; s++) a[n[s]] = b.css(e, n[s], !1, o);
2409 return a
2410 }
2411 return r !== t ? b.style(e, n, r) : b.css(e, n)
2412 }, e, n, arguments.length > 1)
2413 },
2414 show: function() {
2415 return rn(this, !0)
2416 },
2417 hide: function() {
2418 return rn(this)
2419 },
2420 toggle: function(e) {
2421 var t = "boolean" == typeof e;
2422 return this.each(function() {
2423 (t ? e : nn(this)) ? b(this).show(): b(this).hide()
2424 })
2425 }
2426 }), b.extend({
2427 cssHooks: {
2428 opacity: {
2429 get: function(e, t) {
2430 if (t) {
2431 var n = Wt(e, "opacity");
2432 return "" === n ? "1" : n
2433 }
2434 }
2435 }
2436 },
2437 cssNumber: {
2438 columnCount: !0,
2439 fillOpacity: !0,
2440 fontWeight: !0,
2441 lineHeight: !0,
2442 opacity: !0,
2443 orphans: !0,
2444 widows: !0,
2445 zIndex: !0,
2446 zoom: !0
2447 },
2448 cssProps: {
2449 "float": b.support.cssFloat ? "cssFloat" : "styleFloat"
2450 },
2451 style: function(e, n, r, i) {
2452 if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
2453 var o, a, s, u = b.camelCase(n),
2454 l = e.style;
2455 if (n = b.cssProps[u] || (b.cssProps[u] = tn(l, u)), s = b.cssHooks[n] || b.cssHooks[u], r === t) return s && "get" in s && (o = s.get(e, !1, i)) !== t ? o : l[n];
2456 if (a = typeof r, "string" === a && (o = Jt.exec(r)) && (r = (o[1] + 1) * o[2] + parseFloat(b.css(e, n)), a = "number"), !(null == r || "number" === a && isNaN(r) || ("number" !== a || b.cssNumber[u] || (r += "px"), b.support.clearCloneStyle || "" !== r || 0 !== n.indexOf("background") || (l[n] = "inherit"), s && "set" in s && (r = s.set(e, r, i)) === t))) try {
2457 l[n] = r
2458 } catch (c) {}
2459 }
2460 },
2461 css: function(e, n, r, i) {
2462 var o, a, s, u = b.camelCase(n);
2463 return n = b.cssProps[u] || (b.cssProps[u] = tn(e.style, u)), s = b.cssHooks[n] || b.cssHooks[u], s && "get" in s && (a = s.get(e, !0, r)), a === t && (a = Wt(e, n, i)), "normal" === a && n in Kt && (a = Kt[n]), "" === r || r ? (o = parseFloat(a), r === !0 || b.isNumeric(o) ? o || 0 : a) : a
2464 },
2465 swap: function(e, t, n, r) {
2466 var i, o, a = {};
2467 for (o in t) a[o] = e.style[o], e.style[o] = t[o];
2468 i = n.apply(e, r || []);
2469 for (o in t) e.style[o] = a[o];
2470 return i
2471 }
2472 }), e.getComputedStyle ? (Rt = function(t) {
2473 return e.getComputedStyle(t, null)
2474 }, Wt = function(e, n, r) {
2475 var i, o, a, s = r || Rt(e),
2476 u = s ? s.getPropertyValue(n) || s[n] : t,
2477 l = e.style;
2478 return s && ("" !== u || b.contains(e.ownerDocument, e) || (u = b.style(e, n)), Yt.test(u) && Ut.test(n) && (i = l.width, o = l.minWidth, a = l.maxWidth, l.minWidth = l.maxWidth = l.width = u, u = s.width, l.width = i, l.minWidth = o, l.maxWidth = a)), u
2479 }) : o.documentElement.currentStyle && (Rt = function(e) {
2480 return e.currentStyle
2481 }, Wt = function(e, n, r) {
2482 var i, o, a, s = r || Rt(e),
2483 u = s ? s[n] : t,
2484 l = e.style;
2485 return null == u && l && l[n] && (u = l[n]), Yt.test(u) && !zt.test(n) && (i = l.left, o = e.runtimeStyle, a = o && o.left, a && (o.left = e.currentStyle.left), l.left = "fontSize" === n ? "1em" : u, u = l.pixelLeft + "px", l.left = i, a && (o.left = a)), "" === u ? "auto" : u
2486 });
2487
2488 function on(e, t, n) {
2489 var r = Vt.exec(t);
2490 return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t
2491 }
2492
2493 function an(e, t, n, r, i) {
2494 var o = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0,
2495 a = 0;
2496 for (; 4 > o; o += 2) "margin" === n && (a += b.css(e, n + Zt[o], !0, i)), r ? ("content" === n && (a -= b.css(e, "padding" + Zt[o], !0, i)), "margin" !== n && (a -= b.css(e, "border" + Zt[o] + "Width", !0, i))) : (a += b.css(e, "padding" + Zt[o], !0, i), "padding" !== n && (a += b.css(e, "border" + Zt[o] + "Width", !0, i)));
2497 return a
2498 }
2499
2500 function sn(e, t, n) {
2501 var r = !0,
2502 i = "width" === t ? e.offsetWidth : e.offsetHeight,
2503 o = Rt(e),
2504 a = b.support.boxSizing && "border-box" === b.css(e, "boxSizing", !1, o);
2505 if (0 >= i || null == i) {
2506 if (i = Wt(e, t, o), (0 > i || null == i) && (i = e.style[t]), Yt.test(i)) return i;
2507 r = a && (b.support.boxSizingReliable || i === e.style[t]), i = parseFloat(i) || 0
2508 }
2509 return i + an(e, t, n || (a ? "border" : "content"), r, o) + "px"
2510 }
2511
2512 function un(e) {
2513 var t = o,
2514 n = Gt[e];
2515 return n || (n = ln(e, t), "none" !== n && n || (Pt = (Pt || b("<iframe frameborder='0' width='0' height='0'/>").css("cssText", "display:block !important")).appendTo(t.documentElement), t = (Pt[0].contentWindow || Pt[0].contentDocument).document, t.write("<!doctype html><html><body>"), t.close(), n = ln(e, t), Pt.detach()), Gt[e] = n), n
2516 }
2517
2518 function ln(e, t) {
2519 var n = b(t.createElement(e)).appendTo(t.body),
2520 r = b.css(n[0], "display");
2521 return n.remove(), r
2522 }
2523 b.each(["height", "width"], function(e, n) {
2524 b.cssHooks[n] = {
2525 get: function(e, r, i) {
2526 return r ? 0 === e.offsetWidth && Xt.test(b.css(e, "display")) ? b.swap(e, Qt, function() {
2527 return sn(e, n, i)
2528 }) : sn(e, n, i) : t
2529 },
2530 set: function(e, t, r) {
2531 var i = r && Rt(e);
2532 return on(e, t, r ? an(e, n, r, b.support.boxSizing && "border-box" === b.css(e, "boxSizing", !1, i), i) : 0)
2533 }
2534 }
2535 }), b.support.opacity || (b.cssHooks.opacity = {
2536 get: function(e, t) {
2537 return It.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : ""
2538 },
2539 set: function(e, t) {
2540 var n = e.style,
2541 r = e.currentStyle,
2542 i = b.isNumeric(t) ? "alpha(opacity=" + 100 * t + ")" : "",
2543 o = r && r.filter || n.filter || "";
2544 n.zoom = 1, (t >= 1 || "" === t) && "" === b.trim(o.replace($t, "")) && n.removeAttribute && (n.removeAttribute("filter"), "" === t || r && !r.filter) || (n.filter = $t.test(o) ? o.replace($t, i) : o + " " + i)
2545 }
2546 }), b(function() {
2547 b.support.reliableMarginRight || (b.cssHooks.marginRight = {
2548 get: function(e, n) {
2549 return n ? b.swap(e, {
2550 display: "inline-block"
2551 }, Wt, [e, "marginRight"]) : t
2552 }
2553 }), !b.support.pixelPosition && b.fn.position && b.each(["top", "left"], function(e, n) {
2554 b.cssHooks[n] = {
2555 get: function(e, r) {
2556 return r ? (r = Wt(e, n), Yt.test(r) ? b(e).position()[n] + "px" : r) : t
2557 }
2558 }
2559 })
2560 }), b.expr && b.expr.filters && (b.expr.filters.hidden = function(e) {
2561 return 0 >= e.offsetWidth && 0 >= e.offsetHeight || !b.support.reliableHiddenOffsets && "none" === (e.style && e.style.display || b.css(e, "display"))
2562 }, b.expr.filters.visible = function(e) {
2563 return !b.expr.filters.hidden(e)
2564 }), b.each({
2565 margin: "",
2566 padding: "",
2567 border: "Width"
2568 }, function(e, t) {
2569 b.cssHooks[e + t] = {
2570 expand: function(n) {
2571 var r = 0,
2572 i = {},
2573 o = "string" == typeof n ? n.split(" ") : [n];
2574 for (; 4 > r; r++) i[e + Zt[r] + t] = o[r] || o[r - 2] || o[0];
2575 return i
2576 }
2577 }, Ut.test(e) || (b.cssHooks[e + t].set = on)
2578 });
2579 var cn = /%20/g,
2580 pn = /\[\]$/,
2581 fn = /\r?\n/g,
2582 dn = /^(?:submit|button|image|reset|file)$/i,
2583 hn = /^(?:input|select|textarea|keygen)/i;
2584 b.fn.extend({
2585 serialize: function() {
2586 return b.param(this.serializeArray())
2587 },
2588 serializeArray: function() {
2589 return this.map(function() {
2590 var e = b.prop(this, "elements");
2591 return e ? b.makeArray(e) : this
2592 }).filter(function() {
2593 var e = this.type;
2594 return this.name && !b(this).is(":disabled") && hn.test(this.nodeName) && !dn.test(e) && (this.checked || !Nt.test(e))
2595 }).map(function(e, t) {
2596 var n = b(this).val();
2597 return null == n ? null : b.isArray(n) ? b.map(n, function(e) {
2598 return {
2599 name: t.name,
2600 value: e.replace(fn, "\r\n")
2601 }
2602 }) : {
2603 name: t.name,
2604 value: n.replace(fn, "\r\n")
2605 }
2606 }).get()
2607 }
2608 }), b.param = function(e, n) {
2609 var r, i = [],
2610 o = function(e, t) {
2611 t = b.isFunction(t) ? t() : null == t ? "" : t, i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
2612 };
2613 if (n === t && (n = b.ajaxSettings && b.ajaxSettings.traditional), b.isArray(e) || e.jquery && !b.isPlainObject(e)) b.each(e, function() {
2614 o(this.name, this.value)
2615 });
2616 else
2617 for (r in e) gn(r, e[r], n, o);
2618 return i.join("&").replace(cn, "+")
2619 };
2620
2621 function gn(e, t, n, r) {
2622 var i;
2623 if (b.isArray(t)) b.each(t, function(t, i) {
2624 n || pn.test(e) ? r(e, i) : gn(e + "[" + ("object" == typeof i ? t : "") + "]", i, n, r)
2625 });
2626 else if (n || "object" !== b.type(t)) r(e, t);
2627 else
2628 for (i in t) gn(e + "[" + i + "]", t[i], n, r)
2629 }
2630 b.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(e, t) {
2631 b.fn[t] = function(e, n) {
2632 return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
2633 }
2634 }), b.fn.hover = function(e, t) {
2635 return this.mouseenter(e).mouseleave(t || e)
2636 };
2637 var mn, yn, vn = b.now(),
2638 bn = /\?/,
2639 xn = /#.*$/,
2640 wn = /([?&])_=[^&]*/,
2641 Tn = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
2642 Nn = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
2643 Cn = /^(?:GET|HEAD)$/,
2644 kn = /^\/\//,
2645 En = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
2646 Sn = b.fn.load,
2647 An = {},
2648 jn = {},
2649 Dn = "*/".concat("*");
2650 try {
2651 yn = a.href
2652 } catch (Ln) {
2653 yn = o.createElement("a"), yn.href = "", yn = yn.href
2654 }
2655 mn = En.exec(yn.toLowerCase()) || [];
2656
2657 function Hn(e) {
2658 return function(t, n) {
2659 "string" != typeof t && (n = t, t = "*");
2660 var r, i = 0,
2661 o = t.toLowerCase().match(w) || [];
2662 if (b.isFunction(n))
2663 while (r = o[i++]) "+" === r[0] ? (r = r.slice(1) || "*", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
2664 }
2665 }
2666
2667 function qn(e, n, r, i) {
2668 var o = {},
2669 a = e === jn;
2670
2671 function s(u) {
2672 var l;
2673 return o[u] = !0, b.each(e[u] || [], function(e, u) {
2674 var c = u(n, r, i);
2675 return "string" != typeof c || a || o[c] ? a ? !(l = c) : t : (n.dataTypes.unshift(c), s(c), !1)
2676 }), l
2677 }
2678 return s(n.dataTypes[0]) || !o["*"] && s("*")
2679 }
2680
2681 function Mn(e, n) {
2682 var r, i, o = b.ajaxSettings.flatOptions || {};
2683 for (i in n) n[i] !== t && ((o[i] ? e : r || (r = {}))[i] = n[i]);
2684 return r && b.extend(!0, e, r), e
2685 }
2686 b.fn.load = function(e, n, r) {
2687 if ("string" != typeof e && Sn) return Sn.apply(this, arguments);
2688 var i, o, a, s = this,
2689 u = e.indexOf(" ");
2690 return u >= 0 && (i = e.slice(u, e.length), e = e.slice(0, u)), b.isFunction(n) ? (r = n, n = t) : n && "object" == typeof n && (a = "POST"), s.length > 0 && b.ajax({
2691 url: e,
2692 type: a,
2693 dataType: "html",
2694 data: n
2695 }).done(function(e) {
2696 o = arguments, s.html(i ? b("<div>").append(b.parseHTML(e)).find(i) : e)
2697 }).complete(r && function(e, t) {
2698 s.each(r, o || [e.responseText, t, e])
2699 }), this
2700 }, b.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
2701 b.fn[t] = function(e) {
2702 return this.on(t, e)
2703 }
2704 }), b.each(["get", "post"], function(e, n) {
2705 b[n] = function(e, r, i, o) {
2706 return b.isFunction(r) && (o = o || i, i = r, r = t), b.ajax({
2707 url: e,
2708 type: n,
2709 dataType: o,
2710 data: r,
2711 success: i
2712 })
2713 }
2714 }), b.extend({
2715 active: 0,
2716 lastModified: {},
2717 etag: {},
2718 ajaxSettings: {
2719 url: yn,
2720 type: "GET",
2721 isLocal: Nn.test(mn[1]),
2722 global: !0,
2723 processData: !0,
2724 async: !0,
2725 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
2726 accepts: {
2727 "*": Dn,
2728 text: "text/plain",
2729 html: "text/html",
2730 xml: "application/xml, text/xml",
2731 json: "application/json, text/javascript"
2732 },
2733 contents: {
2734 xml: /xml/,
2735 html: /html/,
2736 json: /json/
2737 },
2738 responseFields: {
2739 xml: "responseXML",
2740 text: "responseText"
2741 },
2742 converters: {
2743 "* text": e.String,
2744 "text html": !0,
2745 "text json": b.parseJSON,
2746 "text xml": b.parseXML
2747 },
2748 flatOptions: {
2749 url: !0,
2750 context: !0
2751 }
2752 },
2753 ajaxSetup: function(e, t) {
2754 return t ? Mn(Mn(e, b.ajaxSettings), t) : Mn(b.ajaxSettings, e)
2755 },
2756 ajaxPrefilter: Hn(An),
2757 ajaxTransport: Hn(jn),
2758 ajax: function(e, n) {
2759 "object" == typeof e && (n = e, e = t), n = n || {};
2760 var r, i, o, a, s, u, l, c, p = b.ajaxSetup({}, n),
2761 f = p.context || p,
2762 d = p.context && (f.nodeType || f.jquery) ? b(f) : b.event,
2763 h = b.Deferred(),
2764 g = b.Callbacks("once memory"),
2765 m = p.statusCode || {},
2766 y = {},
2767 v = {},
2768 x = 0,
2769 T = "canceled",
2770 N = {
2771 readyState: 0,
2772 getResponseHeader: function(e) {
2773 var t;
2774 if (2 === x) {
2775 if (!c) {
2776 c = {};
2777 while (t = Tn.exec(a)) c[t[1].toLowerCase()] = t[2]
2778 }
2779 t = c[e.toLowerCase()]
2780 }
2781 return null == t ? null : t
2782 },
2783 getAllResponseHeaders: function() {
2784 return 2 === x ? a : null
2785 },
2786 setRequestHeader: function(e, t) {
2787 var n = e.toLowerCase();
2788 return x || (e = v[n] = v[n] || e, y[e] = t), this
2789 },
2790 overrideMimeType: function(e) {
2791 return x || (p.mimeType = e), this
2792 },
2793 statusCode: function(e) {
2794 var t;
2795 if (e)
2796 if (2 > x)
2797 for (t in e) m[t] = [m[t], e[t]];
2798 else N.always(e[N.status]);
2799 return this
2800 },
2801 abort: function(e) {
2802 var t = e || T;
2803 return l && l.abort(t), k(0, t), this
2804 }
2805 };
2806 if (h.promise(N).complete = g.add, N.success = N.done, N.error = N.fail, p.url = ((e || p.url || yn) + "").replace(xn, "").replace(kn, mn[1] + "//"), p.type = n.method || n.type || p.method || p.type, p.dataTypes = b.trim(p.dataType || "*").toLowerCase().match(w) || [""], null == p.crossDomain && (r = En.exec(p.url.toLowerCase()), p.crossDomain = !(!r || r[1] === mn[1] && r[2] === mn[2] && (r[3] || ("http:" === r[1] ? 80 : 443)) == (mn[3] || ("http:" === mn[1] ? 80 : 443)))), p.data && p.processData && "string" != typeof p.data && (p.data = b.param(p.data, p.traditional)), qn(An, p, n, N), 2 === x) return N;
2807 u = p.global, u && 0 === b.active++ && b.event.trigger("ajaxStart"), p.type = p.type.toUpperCase(), p.hasContent = !Cn.test(p.type), o = p.url, p.hasContent || (p.data && (o = p.url += (bn.test(o) ? "&" : "?") + p.data, delete p.data), p.cache === !1 && (p.url = wn.test(o) ? o.replace(wn, "$1_=" + vn++) : o + (bn.test(o) ? "&" : "?") + "_=" + vn++)), p.ifModified && (b.lastModified[o] && N.setRequestHeader("If-Modified-Since", b.lastModified[o]), b.etag[o] && N.setRequestHeader("If-None-Match", b.etag[o])), (p.data && p.hasContent && p.contentType !== !1 || n.contentType) && N.setRequestHeader("Content-Type", p.contentType), N.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + Dn + "; q=0.01" : "") : p.accepts["*"]);
2808 for (i in p.headers) N.setRequestHeader(i, p.headers[i]);
2809 if (p.beforeSend && (p.beforeSend.call(f, N, p) === !1 || 2 === x)) return N.abort();
2810 T = "abort";
2811 for (i in {
2812 success: 1,
2813 error: 1,
2814 complete: 1
2815 }) N[i](p[i]);
2816 if (l = qn(jn, p, n, N)) {
2817 N.readyState = 1, u && d.trigger("ajaxSend", [N, p]), p.async && p.timeout > 0 && (s = setTimeout(function() {
2818 N.abort("timeout")
2819 }, p.timeout));
2820 try {
2821 x = 1, l.send(y, k)
2822 } catch (C) {
2823 if (!(2 > x)) throw C;
2824 k(-1, C)
2825 }
2826 } else k(-1, "No Transport");
2827
2828 function k(e, n, r, i) {
2829 var c, y, v, w, T, C = n;
2830 2 !== x && (x = 2, s && clearTimeout(s), l = t, a = i || "", N.readyState = e > 0 ? 4 : 0, r && (w = _n(p, N, r)), e >= 200 && 300 > e || 304 === e ? (p.ifModified && (T = N.getResponseHeader("Last-Modified"), T && (b.lastModified[o] = T), T = N.getResponseHeader("etag"), T && (b.etag[o] = T)), 204 === e ? (c = !0, C = "nocontent") : 304 === e ? (c = !0, C = "notmodified") : (c = Fn(p, w), C = c.state, y = c.data, v = c.error, c = !v)) : (v = C, (e || !C) && (C = "error", 0 > e && (e = 0))), N.status = e, N.statusText = (n || C) + "", c ? h.resolveWith(f, [y, C, N]) : h.rejectWith(f, [N, C, v]), N.statusCode(m), m = t, u && d.trigger(c ? "ajaxSuccess" : "ajaxError", [N, p, c ? y : v]), g.fireWith(f, [N, C]), u && (d.trigger("ajaxComplete", [N, p]), --b.active || b.event.trigger("ajaxStop")))
2831 }
2832 return N
2833 },
2834 getScript: function(e, n) {
2835 return b.get(e, t, n, "script")
2836 },
2837 getJSON: function(e, t, n) {
2838 return b.get(e, t, n, "json")
2839 }
2840 });
2841
2842 function _n(e, n, r) {
2843 var i, o, a, s, u = e.contents,
2844 l = e.dataTypes,
2845 c = e.responseFields;
2846 for (s in c) s in r && (n[c[s]] = r[s]);
2847 while ("*" === l[0]) l.shift(), o === t && (o = e.mimeType || n.getResponseHeader("Content-Type"));
2848 if (o)
2849 for (s in u)
2850 if (u[s] && u[s].test(o)) {
2851 l.unshift(s);
2852 break
2853 }
2854 if (l[0] in r) a = l[0];
2855 else {
2856 for (s in r) {
2857 if (!l[0] || e.converters[s + " " + l[0]]) {
2858 a = s;
2859 break
2860 }
2861 i || (i = s)
2862 }
2863 a = a || i
2864 }
2865 return a ? (a !== l[0] && l.unshift(a), r[a]) : t
2866 }
2867
2868 function Fn(e, t) {
2869 var n, r, i, o, a = {},
2870 s = 0,
2871 u = e.dataTypes.slice(),
2872 l = u[0];
2873 if (e.dataFilter && (t = e.dataFilter(t, e.dataType)), u[1])
2874 for (i in e.converters) a[i.toLowerCase()] = e.converters[i];
2875 for (; r = u[++s];)
2876 if ("*" !== r) {
2877 if ("*" !== l && l !== r) {
2878 if (i = a[l + " " + r] || a["* " + r], !i)
2879 for (n in a)
2880 if (o = n.split(" "), o[1] === r && (i = a[l + " " + o[0]] || a["* " + o[0]])) {
2881 i === !0 ? i = a[n] : a[n] !== !0 && (r = o[0], u.splice(s--, 0, r));
2882 break
2883 }
2884 if (i !== !0)
2885 if (i && e["throws"]) t = i(t);
2886 else try {
2887 t = i(t)
2888 } catch (c) {
2889 return {
2890 state: "parsererror",
2891 error: i ? c : "No conversion from " + l + " to " + r
2892 }
2893 }
2894 }
2895 l = r
2896 }
2897 return {
2898 state: "success",
2899 data: t
2900 }
2901 }
2902 b.ajaxSetup({
2903 accepts: {
2904 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
2905 },
2906 contents: {
2907 script: /(?:java|ecma)script/
2908 },
2909 converters: {
2910 "text script": function(e) {
2911 return b.globalEval(e), e
2912 }
2913 }
2914 }), b.ajaxPrefilter("script", function(e) {
2915 e.cache === t && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1)
2916 }), b.ajaxTransport("script", function(e) {
2917 if (e.crossDomain) {
2918 var n, r = o.head || b("head")[0] || o.documentElement;
2919 return {
2920 send: function(t, i) {
2921 n = o.createElement("script"), n.async = !0, e.scriptCharset && (n.charset = e.scriptCharset), n.src = e.url, n.onload = n.onreadystatechange = function(e, t) {
2922 (t || !n.readyState || /loaded|complete/.test(n.readyState)) && (n.onload = n.onreadystatechange = null, n.parentNode && n.parentNode.removeChild(n), n = null, t || i(200, "success"))
2923 }, r.insertBefore(n, r.firstChild)
2924 },
2925 abort: function() {
2926 n && n.onload(t, !0)
2927 }
2928 }
2929 }
2930 });
2931 var On = [],
2932 Bn = /(=)\?(?=&|$)|\?\?/;
2933 b.ajaxSetup({
2934 jsonp: "callback",
2935 jsonpCallback: function() {
2936 var e = On.pop() || b.expando + "_" + vn++;
2937 return this[e] = !0, e
2938 }
2939 }), b.ajaxPrefilter("json jsonp", function(n, r, i) {
2940 var o, a, s, u = n.jsonp !== !1 && (Bn.test(n.url) ? "url" : "string" == typeof n.data && !(n.contentType || "").indexOf("application/x-www-form-urlencoded") && Bn.test(n.data) && "data");
2941 return u || "jsonp" === n.dataTypes[0] ? (o = n.jsonpCallback = b.isFunction(n.jsonpCallback) ? n.jsonpCallback() : n.jsonpCallback, u ? n[u] = n[u].replace(Bn, "$1" + o) : n.jsonp !== !1 && (n.url += (bn.test(n.url) ? "&" : "?") + n.jsonp + "=" + o), n.converters["script json"] = function() {
2942 return s || b.error(o + " was not called"), s[0]
2943 }, n.dataTypes[0] = "json", a = e[o], e[o] = function() {
2944 s = arguments
2945 }, i.always(function() {
2946 e[o] = a, n[o] && (n.jsonpCallback = r.jsonpCallback, On.push(o)), s && b.isFunction(a) && a(s[0]), s = a = t
2947 }), "script") : t
2948 });
2949 var Pn, Rn, Wn = 0,
2950 $n = e.ActiveXObject && function() {
2951 var e;
2952 for (e in Pn) Pn[e](t, !0)
2953 };
2954
2955 function In() {
2956 try {
2957 return new e.XMLHttpRequest
2958 } catch (t) {}
2959 }
2960
2961 function zn() {
2962 try {
2963 return new e.ActiveXObject("Microsoft.XMLHTTP")
2964 } catch (t) {}
2965 }
2966 b.ajaxSettings.xhr = e.ActiveXObject ? function() {
2967 return !this.isLocal && In() || zn()
2968 } : In, Rn = b.ajaxSettings.xhr(), b.support.cors = !!Rn && "withCredentials" in Rn, Rn = b.support.ajax = !!Rn, Rn && b.ajaxTransport(function(n) {
2969 if (!n.crossDomain || b.support.cors) {
2970 var r;
2971 return {
2972 send: function(i, o) {
2973 var a, s, u = n.xhr();
2974 if (n.username ? u.open(n.type, n.url, n.async, n.username, n.password) : u.open(n.type, n.url, n.async), n.xhrFields)
2975 for (s in n.xhrFields) u[s] = n.xhrFields[s];
2976 n.mimeType && u.overrideMimeType && u.overrideMimeType(n.mimeType), n.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
2977 try {
2978 for (s in i) u.setRequestHeader(s, i[s])
2979 } catch (l) {}
2980 u.send(n.hasContent && n.data || null), r = function(e, i) {
2981 var s, l, c, p;
2982 try {
2983 if (r && (i || 4 === u.readyState))
2984 if (r = t, a && (u.onreadystatechange = b.noop, $n && delete Pn[a]), i) 4 !== u.readyState && u.abort();
2985 else {
2986 p = {}, s = u.status, l = u.getAllResponseHeaders(), "string" == typeof u.responseText && (p.text = u.responseText);
2987 try {
2988 c = u.statusText
2989 } catch (f) {
2990 c = ""
2991 }
2992 s || !n.isLocal || n.crossDomain ? 1223 === s && (s = 204) : s = p.text ? 200 : 404
2993 }
2994 } catch (d) {
2995 i || o(-1, d)
2996 }
2997 p && o(s, c, p, l)
2998 }, n.async ? 4 === u.readyState ? setTimeout(r) : (a = ++Wn, $n && (Pn || (Pn = {}, b(e).unload($n)), Pn[a] = r), u.onreadystatechange = r) : r()
2999 },
3000 abort: function() {
3001 r && r(t, !0)
3002 }
3003 }
3004 }
3005 });
3006 var Xn, Un, Vn = /^(?:toggle|show|hide)$/,
3007 Yn = RegExp("^(?:([+-])=|)(" + x + ")([a-z%]*)$", "i"),
3008 Jn = /queueHooks$/,
3009 Gn = [nr],
3010 Qn = {
3011 "*": [function(e, t) {
3012 var n, r, i = this.createTween(e, t),
3013 o = Yn.exec(t),
3014 a = i.cur(),
3015 s = +a || 0,
3016 u = 1,
3017 l = 20;
3018 if (o) {
3019 if (n = +o[2], r = o[3] || (b.cssNumber[e] ? "" : "px"), "px" !== r && s) {
3020 s = b.css(i.elem, e, !0) || n || 1;
3021 do u = u || ".5", s /= u, b.style(i.elem, e, s + r); while (u !== (u = i.cur() / a) && 1 !== u && --l)
3022 }
3023 i.unit = r, i.start = s, i.end = o[1] ? s + (o[1] + 1) * n : n
3024 }
3025 return i
3026 }]
3027 };
3028
3029 function Kn() {
3030 return setTimeout(function() {
3031 Xn = t
3032 }), Xn = b.now()
3033 }
3034
3035 function Zn(e, t) {
3036 b.each(t, function(t, n) {
3037 var r = (Qn[t] || []).concat(Qn["*"]),
3038 i = 0,
3039 o = r.length;
3040 for (; o > i; i++)
3041 if (r[i].call(e, t, n)) return
3042 })
3043 }
3044
3045 function er(e, t, n) {
3046 var r, i, o = 0,
3047 a = Gn.length,
3048 s = b.Deferred().always(function() {
3049 delete u.elem
3050 }),
3051 u = function() {
3052 if (i) return !1;
3053 var t = Xn || Kn(),
3054 n = Math.max(0, l.startTime + l.duration - t),
3055 r = n / l.duration || 0,
3056 o = 1 - r,
3057 a = 0,
3058 u = l.tweens.length;
3059 for (; u > a; a++) l.tweens[a].run(o);
3060 return s.notifyWith(e, [l, o, n]), 1 > o && u ? n : (s.resolveWith(e, [l]), !1)
3061 },
3062 l = s.promise({
3063 elem: e,
3064 props: b.extend({}, t),
3065 opts: b.extend(!0, {
3066 specialEasing: {}
3067 }, n),
3068 originalProperties: t,
3069 originalOptions: n,
3070 startTime: Xn || Kn(),
3071 duration: n.duration,
3072 tweens: [],
3073 createTween: function(t, n) {
3074 var r = b.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);
3075 return l.tweens.push(r), r
3076 },
3077 stop: function(t) {
3078 var n = 0,
3079 r = t ? l.tweens.length : 0;
3080 if (i) return this;
3081 for (i = !0; r > n; n++) l.tweens[n].run(1);
3082 return t ? s.resolveWith(e, [l, t]) : s.rejectWith(e, [l, t]), this
3083 }
3084 }),
3085 c = l.props;
3086 for (tr(c, l.opts.specialEasing); a > o; o++)
3087 if (r = Gn[o].call(l, e, c, l.opts)) return r;
3088 return Zn(l, c), b.isFunction(l.opts.start) && l.opts.start.call(e, l), b.fx.timer(b.extend(u, {
3089 elem: e,
3090 anim: l,
3091 queue: l.opts.queue
3092 })), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always)
3093 }
3094
3095 function tr(e, t) {
3096 var n, r, i, o, a;
3097 for (i in e)
3098 if (r = b.camelCase(i), o = t[r], n = e[i], b.isArray(n) && (o = n[1], n = e[i] = n[0]), i !== r && (e[r] = n, delete e[i]), a = b.cssHooks[r], a && "expand" in a) {
3099 n = a.expand(n), delete e[r];
3100 for (i in n) i in e || (e[i] = n[i], t[i] = o)
3101 } else t[r] = o
3102 }
3103 b.Animation = b.extend(er, {
3104 tweener: function(e, t) {
3105 b.isFunction(e) ? (t = e, e = ["*"]) : e = e.split(" ");
3106 var n, r = 0,
3107 i = e.length;
3108 for (; i > r; r++) n = e[r], Qn[n] = Qn[n] || [], Qn[n].unshift(t)
3109 },
3110 prefilter: function(e, t) {
3111 t ? Gn.unshift(e) : Gn.push(e)
3112 }
3113 });
3114
3115 function nr(e, t, n) {
3116 var r, i, o, a, s, u, l, c, p, f = this,
3117 d = e.style,
3118 h = {},
3119 g = [],
3120 m = e.nodeType && nn(e);
3121 n.queue || (c = b._queueHooks(e, "fx"), null == c.unqueued && (c.unqueued = 0, p = c.empty.fire, c.empty.fire = function() {
3122 c.unqueued || p()
3123 }), c.unqueued++, f.always(function() {
3124 f.always(function() {
3125 c.unqueued--, b.queue(e, "fx").length || c.empty.fire()
3126 })
3127 })), 1 === e.nodeType && ("height" in t || "width" in t) && (n.overflow = [d.overflow, d.overflowX, d.overflowY], "inline" === b.css(e, "display") && "none" === b.css(e, "float") && (b.support.inlineBlockNeedsLayout && "inline" !== un(e.nodeName) ? d.zoom = 1 : d.display = "inline-block")), n.overflow && (d.overflow = "hidden", b.support.shrinkWrapBlocks || f.always(function() {
3128 d.overflow = n.overflow[0], d.overflowX = n.overflow[1], d.overflowY = n.overflow[2]
3129 }));
3130 for (i in t)
3131 if (a = t[i], Vn.exec(a)) {
3132 if (delete t[i], u = u || "toggle" === a, a === (m ? "hide" : "show")) continue;
3133 g.push(i)
3134 }
3135 if (o = g.length) {
3136 s = b._data(e, "fxshow") || b._data(e, "fxshow", {}), "hidden" in s && (m = s.hidden), u && (s.hidden = !m), m ? b(e).show() : f.done(function() {
3137 b(e).hide()
3138 }), f.done(function() {
3139 var t;
3140 b._removeData(e, "fxshow");
3141 for (t in h) b.style(e, t, h[t])
3142 });
3143 for (i = 0; o > i; i++) r = g[i], l = f.createTween(r, m ? s[r] : 0), h[r] = s[r] || b.style(e, r), r in s || (s[r] = l.start, m && (l.end = l.start, l.start = "width" === r || "height" === r ? 1 : 0))
3144 }
3145 }
3146
3147 function rr(e, t, n, r, i) {
3148 return new rr.prototype.init(e, t, n, r, i)
3149 }
3150 b.Tween = rr, rr.prototype = {
3151 constructor: rr,
3152 init: function(e, t, n, r, i, o) {
3153 this.elem = e, this.prop = n, this.easing = i || "swing", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (b.cssNumber[n] ? "" : "px")
3154 },
3155 cur: function() {
3156 var e = rr.propHooks[this.prop];
3157 return e && e.get ? e.get(this) : rr.propHooks._default.get(this)
3158 },
3159 run: function(e) {
3160 var t, n = rr.propHooks[this.prop];
3161 return this.pos = t = this.options.duration ? b.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : rr.propHooks._default.set(this), this
3162 }
3163 }, rr.prototype.init.prototype = rr.prototype, rr.propHooks = {
3164 _default: {
3165 get: function(e) {
3166 var t;
3167 return null == e.elem[e.prop] || e.elem.style && null != e.elem.style[e.prop] ? (t = b.css(e.elem, e.prop, ""), t && "auto" !== t ? t : 0) : e.elem[e.prop]
3168 },
3169 set: function(e) {
3170 b.fx.step[e.prop] ? b.fx.step[e.prop](e) : e.elem.style && (null != e.elem.style[b.cssProps[e.prop]] || b.cssHooks[e.prop]) ? b.style(e.elem, e.prop, e.now + e.unit) : e.elem[e.prop] = e.now
3171 }
3172 }
3173 }, rr.propHooks.scrollTop = rr.propHooks.scrollLeft = {
3174 set: function(e) {
3175 e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
3176 }
3177 }, b.each(["toggle", "show", "hide"], function(e, t) {
3178 var n = b.fn[t];
3179 b.fn[t] = function(e, r, i) {
3180 return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(ir(t, !0), e, r, i)
3181 }
3182 }), b.fn.extend({
3183 fadeTo: function(e, t, n, r) {
3184 return this.filter(nn).css("opacity", 0).show().end().animate({
3185 opacity: t
3186 }, e, n, r)
3187 },
3188 animate: function(e, t, n, r) {
3189 var i = b.isEmptyObject(e),
3190 o = b.speed(t, n, r),
3191 a = function() {
3192 var t = er(this, b.extend({}, e), o);
3193 a.finish = function() {
3194 t.stop(!0)
3195 }, (i || b._data(this, "finish")) && t.stop(!0)
3196 };
3197 return a.finish = a, i || o.queue === !1 ? this.each(a) : this.queue(o.queue, a)
3198 },
3199 stop: function(e, n, r) {
3200 var i = function(e) {
3201 var t = e.stop;
3202 delete e.stop, t(r)
3203 };
3204 return "string" != typeof e && (r = n, n = e, e = t), n && e !== !1 && this.queue(e || "fx", []), this.each(function() {
3205 var t = !0,
3206 n = null != e && e + "queueHooks",
3207 o = b.timers,
3208 a = b._data(this);
3209 if (n) a[n] && a[n].stop && i(a[n]);
3210 else
3211 for (n in a) a[n] && a[n].stop && Jn.test(n) && i(a[n]);
3212 for (n = o.length; n--;) o[n].elem !== this || null != e && o[n].queue !== e || (o[n].anim.stop(r), t = !1, o.splice(n, 1));
3213 (t || !r) && b.dequeue(this, e)
3214 })
3215 },
3216 finish: function(e) {
3217 return e !== !1 && (e = e || "fx"), this.each(function() {
3218 var t, n = b._data(this),
3219 r = n[e + "queue"],
3220 i = n[e + "queueHooks"],
3221 o = b.timers,
3222 a = r ? r.length : 0;
3223 for (n.finish = !0, b.queue(this, e, []), i && i.cur && i.cur.finish && i.cur.finish.call(this), t = o.length; t--;) o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));
3224 for (t = 0; a > t; t++) r[t] && r[t].finish && r[t].finish.call(this);
3225 delete n.finish
3226 })
3227 }
3228 });
3229
3230 function ir(e, t) {
3231 var n, r = {
3232 height: e
3233 },
3234 i = 0;
3235 for (t = t ? 1 : 0; 4 > i; i += 2 - t) n = Zt[i], r["margin" + n] = r["padding" + n] = e;
3236 return t && (r.opacity = r.width = e), r
3237 }
3238 b.each({
3239 slideDown: ir("show"),
3240 slideUp: ir("hide"),
3241 slideToggle: ir("toggle"),
3242 fadeIn: {
3243 opacity: "show"
3244 },
3245 fadeOut: {
3246 opacity: "hide"
3247 },
3248 fadeToggle: {
3249 opacity: "toggle"
3250 }
3251 }, function(e, t) {
3252 b.fn[e] = function(e, n, r) {
3253 return this.animate(t, e, n, r)
3254 }
3255 }), b.speed = function(e, t, n) {
3256 var r = e && "object" == typeof e ? b.extend({}, e) : {
3257 complete: n || !n && t || b.isFunction(e) && e,
3258 duration: e,
3259 easing: n && t || t && !b.isFunction(t) && t
3260 };
3261 return r.duration = b.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in b.fx.speeds ? b.fx.speeds[r.duration] : b.fx.speeds._default, (null == r.queue || r.queue === !0) && (r.queue = "fx"), r.old = r.complete, r.complete = function() {
3262 b.isFunction(r.old) && r.old.call(this), r.queue && b.dequeue(this, r.queue)
3263 }, r
3264 }, b.easing = {
3265 linear: function(e) {
3266 return e
3267 },
3268 swing: function(e) {
3269 return .5 - Math.cos(e * Math.PI) / 2
3270 }
3271 }, b.timers = [], b.fx = rr.prototype.init, b.fx.tick = function() {
3272 var e, n = b.timers,
3273 r = 0;
3274 for (Xn = b.now(); n.length > r; r++) e = n[r], e() || n[r] !== e || n.splice(r--, 1);
3275 n.length || b.fx.stop(), Xn = t
3276 }, b.fx.timer = function(e) {
3277 e() && b.timers.push(e) && b.fx.start()
3278 }, b.fx.interval = 13, b.fx.start = function() {
3279 Un || (Un = setInterval(b.fx.tick, b.fx.interval))
3280 }, b.fx.stop = function() {
3281 clearInterval(Un), Un = null
3282 }, b.fx.speeds = {
3283 slow: 600,
3284 fast: 200,
3285 _default: 400
3286 }, b.fx.step = {}, b.expr && b.expr.filters && (b.expr.filters.animated = function(e) {
3287 return b.grep(b.timers, function(t) {
3288 return e === t.elem
3289 }).length
3290 }), b.fn.offset = function(e) {
3291 if (arguments.length) return e === t ? this : this.each(function(t) {
3292 b.offset.setOffset(this, e, t)
3293 });
3294 var n, r, o = {
3295 top: 0,
3296 left: 0
3297 },
3298 a = this[0],
3299 s = a && a.ownerDocument;
3300 if (s) return n = s.documentElement, b.contains(n, a) ? (typeof a.getBoundingClientRect !== i && (o = a.getBoundingClientRect()), r = or(s), {
3301 top: o.top + (r.pageYOffset || n.scrollTop) - (n.clientTop || 0),
3302 left: o.left + (r.pageXOffset || n.scrollLeft) - (n.clientLeft || 0)
3303 }) : o
3304 }, b.offset = {
3305 setOffset: function(e, t, n) {
3306 var r = b.css(e, "position");
3307 "static" === r && (e.style.position = "relative");
3308 var i = b(e),
3309 o = i.offset(),
3310 a = b.css(e, "top"),
3311 s = b.css(e, "left"),
3312 u = ("absolute" === r || "fixed" === r) && b.inArray("auto", [a, s]) > -1,
3313 l = {},
3314 c = {},
3315 p, f;
3316 u ? (c = i.position(), p = c.top, f = c.left) : (p = parseFloat(a) || 0, f = parseFloat(s) || 0), b.isFunction(t) && (t = t.call(e, n, o)), null != t.top && (l.top = t.top - o.top + p), null != t.left && (l.left = t.left - o.left + f), "using" in t ? t.using.call(e, l) : i.css(l)
3317 }
3318 }, b.fn.extend({
3319 position: function() {
3320 if (this[0]) {
3321 var e, t, n = {
3322 top: 0,
3323 left: 0
3324 },
3325 r = this[0];
3326 return "fixed" === b.css(r, "position") ? t = r.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), b.nodeName(e[0], "html") || (n = e.offset()), n.top += b.css(e[0], "borderTopWidth", !0), n.left += b.css(e[0], "borderLeftWidth", !0)), {
3327 top: t.top - n.top - b.css(r, "marginTop", !0),
3328 left: t.left - n.left - b.css(r, "marginLeft", !0)
3329 }
3330 }
3331 },
3332 offsetParent: function() {
3333 return this.map(function() {
3334 var e = this.offsetParent || o.documentElement;
3335 while (e && !b.nodeName(e, "html") && "static" === b.css(e, "position")) e = e.offsetParent;
3336 return e || o.documentElement
3337 })
3338 }
3339 }), b.each({
3340 scrollLeft: "pageXOffset",
3341 scrollTop: "pageYOffset"
3342 }, function(e, n) {
3343 var r = /Y/.test(n);
3344 b.fn[e] = function(i) {
3345 return b.access(this, function(e, i, o) {
3346 var a = or(e);
3347 return o === t ? a ? n in a ? a[n] : a.document.documentElement[i] : e[i] : (a ? a.scrollTo(r ? b(a).scrollLeft() : o, r ? o : b(a).scrollTop()) : e[i] = o, t)
3348 }, e, i, arguments.length, null)
3349 }
3350 });
3351
3352 function or(e) {
3353 return b.isWindow(e) ? e : 9 === e.nodeType ? e.defaultView || e.parentWindow : !1
3354 }
3355 b.each({
3356 Height: "height",
3357 Width: "width"
3358 }, function(e, n) {
3359 b.each({
3360 padding: "inner" + e,
3361 content: n,
3362 "": "outer" + e
3363 }, function(r, i) {
3364 b.fn[i] = function(i, o) {
3365 var a = arguments.length && (r || "boolean" != typeof i),
3366 s = r || (i === !0 || o === !0 ? "margin" : "border");
3367 return b.access(this, function(n, r, i) {
3368 var o;
3369 return b.isWindow(n) ? n.document.documentElement["client" + e] : 9 === n.nodeType ? (o = n.documentElement, Math.max(n.body["scroll" + e], o["scroll" + e], n.body["offset" + e], o["offset" + e], o["client" + e])) : i === t ? b.css(n, r, s) : b.style(n, r, i, s)
3370 }, n, a ? i : t, a, null)
3371 }
3372 })
3373 }), e.jQuery = e.$ = b, "function" == typeof define && define.amd && define.amd.jQuery && define("jquery", [], function() {
3374 return b
3375 })
3376})(window);
diff --git a/deprecated/jinweiclarkchao.github.io/assets/pjax.js b/deprecated/jinweiclarkchao.github.io/assets/pjax.js
new file mode 100644
index 0000000..a51124f
--- /dev/null
+++ b/deprecated/jinweiclarkchao.github.io/assets/pjax.js
@@ -0,0 +1,838 @@
1// jquery.pjax.js
2// copyright chris wanstrath
3// https://github.com/defunkt/jquery-pjax
4
5(function($){
6
7// When called on a container with a selector, fetches the href with
8// ajax into the container or with the data-pjax attribute on the link
9// itself.
10//
11// Tries to make sure the back button and ctrl+click work the way
12// you'd expect.
13//
14// Exported as $.fn.pjax
15//
16// Accepts a jQuery ajax options object that may include these
17// pjax specific options:
18//
19//
20// container - Where to stick the response body. Usually a String selector.
21// $(container).html(xhr.responseBody)
22// (default: current jquery context)
23// push - Whether to pushState the URL. Defaults to true (of course).
24// replace - Want to use replaceState instead? That's cool.
25//
26// For convenience the second parameter can be either the container or
27// the options object.
28//
29// Returns the jQuery object
30function fnPjax(selector, container, options) {
31 var context = this
32 return this.on('click.pjax', selector, function(event) {
33 var opts = $.extend({}, optionsFor(container, options))
34 if (!opts.container)
35 opts.container = $(this).attr('data-pjax') || context
36 handleClick(event, opts)
37 })
38}
39
40// Public: pjax on click handler
41//
42// Exported as $.pjax.click.
43//
44// event - "click" jQuery.Event
45// options - pjax options
46//
47// Examples
48//
49// $(document).on('click', 'a', $.pjax.click)
50// // is the same as
51// $(document).pjax('a')
52//
53// $(document).on('click', 'a', function(event) {
54// var container = $(this).closest('[data-pjax-container]')
55// $.pjax.click(event, container)
56// })
57//
58// Returns nothing.
59function handleClick(event, container, options) {
60 options = optionsFor(container, options)
61
62 var link = event.currentTarget
63
64 if (link.tagName.toUpperCase() !== 'A')
65 throw "$.fn.pjax or $.pjax.click requires an anchor element"
66
67 // Middle click, cmd click, and ctrl click should open
68 // links in a new tab as normal.
69 if ( event.which > 1 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey )
70 return
71
72 // Ignore cross origin links
73 if ( location.protocol !== link.protocol || location.hostname !== link.hostname )
74 return
75
76 // Ignore anchors on the same page
77 if (link.hash && link.href.replace(link.hash, '') ===
78 location.href.replace(location.hash, ''))
79 return
80
81 // Ignore empty anchor "foo.html#"
82 if (link.href === location.href + '#')
83 return
84
85 var defaults = {
86 url: link.href,
87 container: $(link).attr('data-pjax'),
88 target: link
89 }
90
91 var opts = $.extend({}, defaults, options)
92 var clickEvent = $.Event('pjax:click')
93 $(link).trigger(clickEvent, [opts])
94
95 if (!clickEvent.isDefaultPrevented()) {
96 pjax(opts)
97 event.preventDefault()
98 }
99}
100
101// Public: pjax on form submit handler
102//
103// Exported as $.pjax.submit
104//
105// event - "click" jQuery.Event
106// options - pjax options
107//
108// Examples
109//
110// $(document).on('submit', 'form', function(event) {
111// var container = $(this).closest('[data-pjax-container]')
112// $.pjax.submit(event, container)
113// })
114//
115// Returns nothing.
116function handleSubmit(event, container, options) {
117 options = optionsFor(container, options)
118
119 var form = event.currentTarget
120
121 if (form.tagName.toUpperCase() !== 'FORM')
122 throw "$.pjax.submit requires a form element"
123
124 var defaults = {
125 type: form.method.toUpperCase(),
126 url: form.action,
127 data: $(form).serializeArray(),
128 container: $(form).attr('data-pjax'),
129 target: form
130 }
131
132 pjax($.extend({}, defaults, options))
133
134 event.preventDefault()
135}
136
137// Loads a URL with ajax, puts the response body inside a container,
138// then pushState()'s the loaded URL.
139//
140// Works just like $.ajax in that it accepts a jQuery ajax
141// settings object (with keys like url, type, data, etc).
142//
143// Accepts these extra keys:
144//
145// container - Where to stick the response body.
146// $(container).html(xhr.responseBody)
147// push - Whether to pushState the URL. Defaults to true (of course).
148// replace - Want to use replaceState instead? That's cool.
149//
150// Use it just like $.ajax:
151//
152// var xhr = $.pjax({ url: this.href, container: '#main' })
153// console.log( xhr.readyState )
154//
155// Returns whatever $.ajax returns.
156function pjax(options) {
157 options = $.extend(true, {}, $.ajaxSettings, pjax.defaults, options)
158
159 if ($.isFunction(options.url)) {
160 options.url = options.url()
161 }
162
163 var target = options.target
164
165 var hash = parseURL(options.url).hash
166
167 var context = options.context = findContainerFor(options.container)
168
169 // We want the browser to maintain two separate internal caches: one
170 // for pjax'd partial page loads and one for normal page loads.
171 // Without adding this secret parameter, some browsers will often
172 // confuse the two.
173 if (!options.data) options.data = {}
174 options.data._pjax = context.selector
175
176 function fire(type, args) {
177 var event = $.Event(type, { relatedTarget: target })
178 context.trigger(event, args)
179 return !event.isDefaultPrevented()
180 }
181
182 var timeoutTimer
183
184 options.beforeSend = function(xhr, settings) {
185 // No timeout for non-GET requests
186 // Its not safe to request the resource again with a fallback method.
187 if (settings.type !== 'GET') {
188 settings.timeout = 0
189 }
190
191 xhr.setRequestHeader('X-PJAX', 'true')
192 xhr.setRequestHeader('X-PJAX-Container', context.selector)
193
194 if (!fire('pjax:beforeSend', [xhr, settings]))
195 return false
196
197 if (settings.timeout > 0) {
198 timeoutTimer = setTimeout(function() {
199 if (fire('pjax:timeout', [xhr, options]))
200 xhr.abort('timeout')
201 }, settings.timeout)
202
203 // Clear timeout setting so jquerys internal timeout isn't invoked
204 settings.timeout = 0
205 }
206
207 options.requestUrl = parseURL(settings.url).href
208 }
209
210 options.complete = function(xhr, textStatus) {
211 if (timeoutTimer)
212 clearTimeout(timeoutTimer)
213
214 fire('pjax:complete', [xhr, textStatus, options])
215
216 fire('pjax:end', [xhr, options])
217 }
218
219 options.error = function(xhr, textStatus, errorThrown) {
220 var container = extractContainer("", xhr, options)
221
222 var allowed = fire('pjax:error', [xhr, textStatus, errorThrown, options])
223 if (options.type == 'GET' && textStatus !== 'abort' && allowed) {
224 locationReplace(container.url)
225 }
226 }
227
228 options.success = function(data, status, xhr) {
229 // If $.pjax.defaults.version is a function, invoke it first.
230 // Otherwise it can be a static string.
231 var currentVersion = (typeof $.pjax.defaults.version === 'function') ?
232 $.pjax.defaults.version() :
233 $.pjax.defaults.version
234
235 var latestVersion = xhr.getResponseHeader('X-PJAX-Version')
236
237 var container = extractContainer(data, xhr, options)
238
239 // If there is a layout version mismatch, hard load the new url
240 if (currentVersion && latestVersion && currentVersion !== latestVersion) {
241 locationReplace(container.url)
242 return
243 }
244
245 // If the new response is missing a body, hard load the page
246 if (!container.contents) {
247 locationReplace(container.url)
248 return
249 }
250
251 pjax.state = {
252 id: options.id || uniqueId(),
253 url: container.url,
254 title: container.title,
255 container: context.selector,
256 fragment: options.fragment,
257 timeout: options.timeout
258 }
259
260 if (options.push || options.replace) {
261 window.history.replaceState(pjax.state, container.title, container.url)
262 }
263
264 // Clear out any focused controls before inserting new page contents.
265 document.activeElement.blur()
266
267 if (container.title) document.title = container.title
268 context.html(container.contents)
269
270 // FF bug: Won't autofocus fields that are inserted via JS.
271 // This behavior is incorrect. So if theres no current focus, autofocus
272 // the last field.
273 //
274 // http://www.w3.org/html/wg/drafts/html/master/forms.html
275 var autofocusEl = context.find('input[autofocus], textarea[autofocus]').last()[0]
276 if (autofocusEl && document.activeElement !== autofocusEl) {
277 autofocusEl.focus();
278 }
279
280 executeScriptTags(container.scripts)
281
282 // Scroll to top by default
283 if (typeof options.scrollTo === 'number')
284 $(window).scrollTop(options.scrollTo)
285
286 // If the URL has a hash in it, make sure the browser
287 // knows to navigate to the hash.
288 if ( hash !== '' ) {
289 // Avoid using simple hash set here. Will add another history
290 // entry. Replace the url with replaceState and scroll to target
291 // by hand.
292 //
293 // window.location.hash = hash
294 var url = parseURL(container.url)
295 url.hash = hash
296
297 pjax.state.url = url.href
298 window.history.replaceState(pjax.state, container.title, url.href)
299
300 var target = $(url.hash)
301 if (target.length) $(window).scrollTop(target.offset().top)
302 }
303
304 fire('pjax:success', [data, status, xhr, options])
305 }
306
307
308 // Initialize pjax.state for the initial page load. Assume we're
309 // using the container and options of the link we're loading for the
310 // back button to the initial page. This ensures good back button
311 // behavior.
312 if (!pjax.state) {
313 pjax.state = {
314 id: uniqueId(),
315 url: window.location.href,
316 title: document.title,
317 container: context.selector,
318 fragment: options.fragment,
319 timeout: options.timeout
320 }
321 window.history.replaceState(pjax.state, document.title)
322 }
323
324 // Cancel the current request if we're already pjaxing
325 var xhr = pjax.xhr
326 if ( xhr && xhr.readyState < 4) {
327 xhr.onreadystatechange = $.noop
328 xhr.abort()
329 }
330
331 pjax.options = options
332 var xhr = pjax.xhr = $.ajax(options)
333
334 if (xhr.readyState > 0) {
335 if (options.push && !options.replace) {
336 // Cache current container element before replacing it
337 cachePush(pjax.state.id, context.clone().contents())
338
339 window.history.pushState(null, "", stripPjaxParam(options.requestUrl))
340 }
341
342 fire('pjax:start', [xhr, options])
343 fire('pjax:send', [xhr, options])
344 }
345
346 return pjax.xhr
347}
348
349// Public: Reload current page with pjax.
350//
351// Returns whatever $.pjax returns.
352function pjaxReload(container, options) {
353 var defaults = {
354 url: window.location.href,
355 push: false,
356 replace: true,
357 scrollTo: false
358 }
359
360 return pjax($.extend(defaults, optionsFor(container, options)))
361}
362
363// Internal: Hard replace current state with url.
364//
365// Work for around WebKit
366// https://bugs.webkit.org/show_bug.cgi?id=93506
367//
368// Returns nothing.
369function locationReplace(url) {
370 window.history.replaceState(null, "", "#")
371 window.location.replace(url)
372}
373
374
375var initialPop = true
376var initialURL = window.location.href
377var initialState = window.history.state
378
379// Initialize $.pjax.state if possible
380// Happens when reloading a page and coming forward from a different
381// session history.
382if (initialState && initialState.container) {
383 pjax.state = initialState
384}
385
386// Non-webkit browsers don't fire an initial popstate event
387if ('state' in window.history) {
388 initialPop = false
389}
390
391// popstate handler takes care of the back and forward buttons
392//
393// You probably shouldn't use pjax on pages with other pushState
394// stuff yet.
395function onPjaxPopstate(event) {
396 var state = event.state
397
398 if (state && state.container) {
399 // When coming forward from a separate history session, will get an
400 // initial pop with a state we are already at. Skip reloading the current
401 // page.
402 if (initialPop && initialURL == state.url) return
403
404 // If popping back to the same state, just skip.
405 // Could be clicking back from hashchange rather than a pushState.
406 if (pjax.state.id === state.id) return
407
408 var container = $(state.container)
409 if (container.length) {
410 var direction, contents = cacheMapping[state.id]
411
412 if (pjax.state) {
413 // Since state ids always increase, we can deduce the history
414 // direction from the previous state.
415 direction = pjax.state.id < state.id ? 'forward' : 'back'
416
417 // Cache current container before replacement and inform the
418 // cache which direction the history shifted.
419 cachePop(direction, pjax.state.id, container.clone().contents())
420 }
421
422 var popstateEvent = $.Event('pjax:popstate', {
423 state: state,
424 direction: direction
425 })
426 container.trigger(popstateEvent)
427
428 var options = {
429 id: state.id,
430 url: state.url,
431 container: container,
432 push: false,
433 fragment: state.fragment,
434 timeout: state.timeout,
435 scrollTo: false
436 }
437
438 if (contents) {
439 container.trigger('pjax:start', [null, options])
440
441 if (state.title) document.title = state.title
442 container.html(contents)
443 pjax.state = state
444
445 container.trigger('pjax:end', [null, options])
446 } else {
447 pjax(options)
448 }
449
450 // Force reflow/relayout before the browser tries to restore the
451 // scroll position.
452 container[0].offsetHeight
453 } else {
454 locationReplace(location.href)
455 }
456 }
457 initialPop = false
458}
459
460// Fallback version of main pjax function for browsers that don't
461// support pushState.
462//
463// Returns nothing since it retriggers a hard form submission.
464function fallbackPjax(options) {
465 var url = $.isFunction(options.url) ? options.url() : options.url,
466 method = options.type ? options.type.toUpperCase() : 'GET'
467
468 var form = $('<form>', {
469 method: method === 'GET' ? 'GET' : 'POST',
470 action: url,
471 style: 'display:none'
472 })
473
474 if (method !== 'GET' && method !== 'POST') {
475 form.append($('<input>', {
476 type: 'hidden',
477 name: '_method',
478 value: method.toLowerCase()
479 }))
480 }
481
482 var data = options.data
483 if (typeof data === 'string') {
484 $.each(data.split('&'), function(index, value) {
485 var pair = value.split('=')
486 form.append($('<input>', {type: 'hidden', name: pair[0], value: pair[1]}))
487 })
488 } else if (typeof data === 'object') {
489 for (key in data)
490 form.append($('<input>', {type: 'hidden', name: key, value: data[key]}))
491 }
492
493 $(document.body).append(form)
494 form.submit()
495}
496
497// Internal: Generate unique id for state object.
498//
499// Use a timestamp instead of a counter since ids should still be
500// unique across page loads.
501//
502// Returns Number.
503function uniqueId() {
504 return (new Date).getTime()
505}
506
507// Internal: Strips _pjax param from url
508//
509// url - String
510//
511// Returns String.
512function stripPjaxParam(url) {
513 return url
514 .replace(/\?_pjax=[^&]+&?/, '?')
515 .replace(/_pjax=[^&]+&?/, '')
516 .replace(/[\?&]$/, '')
517}
518
519// Internal: Parse URL components and returns a Locationish object.
520//
521// url - String URL
522//
523// Returns HTMLAnchorElement that acts like Location.
524function parseURL(url) {
525 var a = document.createElement('a')
526 a.href = url
527 return a
528}
529
530// Internal: Build options Object for arguments.
531//
532// For convenience the first parameter can be either the container or
533// the options object.
534//
535// Examples
536//
537// optionsFor('#container')
538// // => {container: '#container'}
539//
540// optionsFor('#container', {push: true})
541// // => {container: '#container', push: true}
542//
543// optionsFor({container: '#container', push: true})
544// // => {container: '#container', push: true}
545//
546// Returns options Object.
547function optionsFor(container, options) {
548 // Both container and options
549 if ( container && options )
550 options.container = container
551
552 // First argument is options Object
553 else if ( $.isPlainObject(container) )
554 options = container
555
556 // Only container
557 else
558 options = {container: container}
559
560 // Find and validate container
561 if (options.container)
562 options.container = findContainerFor(options.container)
563
564 return options
565}
566
567// Internal: Find container element for a variety of inputs.
568//
569// Because we can't persist elements using the history API, we must be
570// able to find a String selector that will consistently find the Element.
571//
572// container - A selector String, jQuery object, or DOM Element.
573//
574// Returns a jQuery object whose context is `document` and has a selector.
575function findContainerFor(container) {
576 container = $(container)
577
578 if ( !container.length ) {
579 throw "no pjax container for " + container.selector
580 } else if ( container.selector !== '' && container.context === document ) {
581 return container
582 } else if ( container.attr('id') ) {
583 return $('#' + container.attr('id'))
584 } else {
585 throw "cant get selector for pjax container!"
586 }
587}
588
589// Internal: Filter and find all elements matching the selector.
590//
591// Where $.fn.find only matches descendants, findAll will test all the
592// top level elements in the jQuery object as well.
593//
594// elems - jQuery object of Elements
595// selector - String selector to match
596//
597// Returns a jQuery object.
598function findAll(elems, selector) {
599 return elems.filter(selector).add(elems.find(selector));
600}
601
602function parseHTML(html) {
603 return $.parseHTML(html, document, true)
604}
605
606// Internal: Extracts container and metadata from response.
607//
608// 1. Extracts X-PJAX-URL header if set
609// 2. Extracts inline <title> tags
610// 3. Builds response Element and extracts fragment if set
611//
612// data - String response data
613// xhr - XHR response
614// options - pjax options Object
615//
616// Returns an Object with url, title, and contents keys.
617function extractContainer(data, xhr, options) {
618 var obj = {}
619
620 // Prefer X-PJAX-URL header if it was set, otherwise fallback to
621 // using the original requested url.
622 obj.url = stripPjaxParam(xhr.getResponseHeader('X-PJAX-URL') || options.requestUrl)
623
624 // Attempt to parse response html into elements
625 if (/<html/i.test(data)) {
626 var $head = $(parseHTML(data.match(/<head[^>]*>([\s\S.]*)<\/head>/i)[0]))
627 var $body = $(parseHTML(data.match(/<body[^>]*>([\s\S.]*)<\/body>/i)[0]))
628 } else {
629 var $head = $body = $(parseHTML(data))
630 }
631
632 // If response data is empty, return fast
633 if ($body.length === 0)
634 return obj
635
636 // If there's a <title> tag in the header, use it as
637 // the page's title.
638 obj.title = findAll($head, 'title').last().text()
639
640 if (options.fragment) {
641 // If they specified a fragment, look for it in the response
642 // and pull it out.
643 if (options.fragment === 'body') {
644 var $fragment = $body
645 } else {
646 var $fragment = findAll($body, options.fragment).first()
647 }
648
649 if ($fragment.length) {
650 obj.contents = $fragment.contents()
651
652 // If there's no title, look for data-title and title attributes
653 // on the fragment
654 if (!obj.title)
655 obj.title = $fragment.attr('title') || $fragment.data('title')
656 }
657
658 } else if (!/<html/i.test(data)) {
659 obj.contents = $body
660 }
661
662 // Clean up any <title> tags
663 if (obj.contents) {
664 // Remove any parent title elements
665 obj.contents = obj.contents.not(function() { return $(this).is('title') })
666
667 // Then scrub any titles from their descendants
668 obj.contents.find('title').remove()
669
670 // Gather all script[src] elements
671 obj.scripts = findAll(obj.contents, 'script[src]').remove()
672 obj.contents = obj.contents.not(obj.scripts)
673 }
674
675 // Trim any whitespace off the title
676 if (obj.title) obj.title = $.trim(obj.title)
677
678 return obj
679}
680
681// Load an execute scripts using standard script request.
682//
683// Avoids jQuery's traditional $.getScript which does a XHR request and
684// globalEval.
685//
686// scripts - jQuery object of script Elements
687//
688// Returns nothing.
689function executeScriptTags(scripts) {
690 if (!scripts) return
691
692 var existingScripts = $('script[src]')
693
694 scripts.each(function() {
695 var src = this.src
696 var matchedScripts = existingScripts.filter(function() {
697 return this.src === src
698 })
699 if (matchedScripts.length) return
700
701 var script = document.createElement('script')
702 script.type = $(this).attr('type')
703 script.src = $(this).attr('src')
704 document.head.appendChild(script)
705 })
706}
707
708// Internal: History DOM caching class.
709var cacheMapping = {}
710var cacheForwardStack = []
711var cacheBackStack = []
712
713// Push previous state id and container contents into the history
714// cache. Should be called in conjunction with `pushState` to save the
715// previous container contents.
716//
717// id - State ID Number
718// value - DOM Element to cache
719//
720// Returns nothing.
721function cachePush(id, value) {
722 cacheMapping[id] = value
723 cacheBackStack.push(id)
724
725 // Remove all entires in forward history stack after pushing
726 // a new page.
727 while (cacheForwardStack.length)
728 delete cacheMapping[cacheForwardStack.shift()]
729
730 // Trim back history stack to max cache length.
731 while (cacheBackStack.length > pjax.defaults.maxCacheLength)
732 delete cacheMapping[cacheBackStack.shift()]
733}
734
735// Shifts cache from directional history cache. Should be
736// called on `popstate` with the previous state id and container
737// contents.
738//
739// direction - "forward" or "back" String
740// id - State ID Number
741// value - DOM Element to cache
742//
743// Returns nothing.
744function cachePop(direction, id, value) {
745 var pushStack, popStack
746 cacheMapping[id] = value
747
748 if (direction === 'forward') {
749 pushStack = cacheBackStack
750 popStack = cacheForwardStack
751 } else {
752 pushStack = cacheForwardStack
753 popStack = cacheBackStack
754 }
755
756 pushStack.push(id)
757 if (id = popStack.pop())
758 delete cacheMapping[id]
759}
760
761// Public: Find version identifier for the initial page load.
762//
763// Returns String version or undefined.
764function findVersion() {
765 return $('meta').filter(function() {
766 var name = $(this).attr('http-equiv')
767 return name && name.toUpperCase() === 'X-PJAX-VERSION'
768 }).attr('content')
769}
770
771// Install pjax functions on $.pjax to enable pushState behavior.
772//
773// Does nothing if already enabled.
774//
775// Examples
776//
777// $.pjax.enable()
778//
779// Returns nothing.
780function enable() {
781 $.fn.pjax = fnPjax
782 $.pjax = pjax
783 $.pjax.enable = $.noop
784 $.pjax.disable = disable
785 $.pjax.click = handleClick
786 $.pjax.submit = handleSubmit
787 $.pjax.reload = pjaxReload
788 $.pjax.defaults = {
789 timeout: 650,
790 push: true,
791 replace: false,
792 type: 'GET',
793 dataType: 'html',
794 scrollTo: 0,
795 maxCacheLength: 20,
796 version: findVersion
797 }
798 $(window).on('popstate.pjax', onPjaxPopstate)
799}
800
801// Disable pushState behavior.
802//
803// This is the case when a browser doesn't support pushState. It is
804// sometimes useful to disable pushState for debugging on a modern
805// browser.
806//
807// Examples
808//
809// $.pjax.disable()
810//
811// Returns nothing.
812function disable() {
813 $.fn.pjax = function() { return this }
814 $.pjax = fallbackPjax
815 $.pjax.enable = enable
816 $.pjax.disable = $.noop
817 $.pjax.click = $.noop
818 $.pjax.submit = $.noop
819 $.pjax.reload = function() { window.location.reload() }
820
821 $(window).off('popstate.pjax', onPjaxPopstate)
822}
823
824
825// Add the state property to jQuery's event object so we can use it in
826// $(window).bind('popstate')
827if ( $.inArray('state', $.event.props) < 0 )
828 $.event.props.push('state')
829
830// Is pjax supported by this browser?
831$.support.pjax =
832 window.history && window.history.pushState && window.history.replaceState &&
833 // pushState isn't reliable on iOS until 5.
834 !navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]|WebApps\/.+CFNetwork)/)
835
836$.support.pjax ? enable() : disable()
837
838})(jQuery); \ No newline at end of file
diff --git a/deprecated/jinweiclarkchao.github.io/assets/stuff.js b/deprecated/jinweiclarkchao.github.io/assets/stuff.js
new file mode 100644
index 0000000..a1c8ebc
--- /dev/null
+++ b/deprecated/jinweiclarkchao.github.io/assets/stuff.js
@@ -0,0 +1,34 @@
1// Generated by CoffeeScript 1.8.0
2var load, putImages;
3
4$(document).on("keydown", function(e) {
5 if (e.keyCode === 39 && $("#js-next-post").length) {
6 $("#js-next-post").click();
7 }
8 if (e.keyCode === 37 && $("#js-previous-post").length) {
9 return $("#js-previous-post").click();
10 }
11});
12
13$(document).on("click", "a[id]", function(e) {
14 return _gaq.push(["_trackEvent", "Clicks", "clicked on " + e.target.id]);
15});
16
17$(document).on("click", "a:not([id])", function(e) {
18 return _gaq.push(["_trackEvent", "Clicks", "clicked on " + $(this).text()]);
19});
20
21load = function() {
22 return $(".img img").on("load", function() {
23 return $(this).closest(".img").addClass("show");
24 });
25};
26
27putImages = function(pics) {
28 var box, pic;
29 pic = pics[Math.floor(Math.random() * pics.length)];
30 box = $(".instagram");
31 box.html("");
32 box.append("<a target='_blank' href='" + pic.link + "' class=img><img src='" + pic.images.low_resolution.url + "'></div>");
33 return load();
34};
diff --git a/deprecated/jinweiclarkchao.github.io/assets/style.css b/deprecated/jinweiclarkchao.github.io/assets/style.css
new file mode 100644
index 0000000..d893c23
--- /dev/null
+++ b/deprecated/jinweiclarkchao.github.io/assets/style.css
@@ -0,0 +1,360 @@
1@charset "UTF-8";
2body {
3 line-height: 1.65em;
4 font-family: Merriweather, serif;
5 font-weight: 400;
6 font-size: 16px;
7 background-color: #fff; }
8
9a {
10 color: #8f65ca;
11 text-decoration: none; }
12
13.site-header {
14 text-align: center;
15 font-size: 10px;
16 padding: 30px 0; }
17 .site-header a {
18 padding-bottom: 4px;
19 color: #555;
20 letter-spacing: 2px;
21 margin-right: 30px;
22 white-space: nowrap;
23 font-family: helvetica, sans-serif; }
24 .site-header a.active {
25 opacity: .2;
26 border-bottom: 1px solid #333; }
27 .site-header a:last-child {
28 margin-right: 0; }
29
30.instagram {
31 text-align: center;
32 margin-bottom: 20px;
33 height: 140px; }
34 .instagram .img {
35 padding: 0;
36 transition: all 1s;
37 opacity: 0;
38 display: inline-block;
39 background: #eee;
40 margin-right: 20px; }
41 .instagram .img:hover {
42 box-shadow: inset 0 0 5px #000; }
43 .instagram .img, .instagram img {
44 border-radius: 200px;
45 width: 140px;
46 height: 140px; }
47
48.wrapper {
49 max-width: 700px;
50 width: 100%;
51 margin: auto; }
52
53.posts {
54 list-style: none;
55 padding-left: 0;
56 margin-top: 0; }
57 .posts a {
58 color: #333; }
59 .posts .post {
60 margin-bottom: 30px; }
61
62.content {
63 padding: 35px; }
64
65.meta {
66 font-size: 9px; }
67 .meta, .meta * {
68 color: #a0a0a0; }
69
70.post-title {
71 font-size: 20px; }
72
73.post-header {
74 text-align: center;
75 border-bottom: 1px solid #eee;
76 padding-bottom: 30px;
77 margin-bottom: 30px;
78 position: relative; }
79 .post-header:after {
80 content: "";
81 display: block;
82 width: 6px;
83 height: 6px;
84 background: #eee;
85 position: absolute;
86 border: 6px solid #fff;
87 left: 50%;
88 border-radius: 15px;
89 margin-left: -9px;
90 bottom: -9px; }
91
92article img {
93 max-width: 100%; }
94article h3 {
95 border-bottom: 1px solid #777;
96 line-height: 0.9em;
97 display: inline-block;
98 text-shadow: 0 0 1px #fff, 0 0 1px #fff, 0 0 1px #fff,0 0 1px #fff,0 0 1px #fff,0 0 1px #fff,0 0 1px #fff; }
99
100.a-cat, .a-house, .a-person, .a-page {
101 display: inline-block;
102 background: #333;
103 vertical-align: middle;
104 margin-bottom: 2px;
105 position: relative; }
106
107.a-cat {
108 background: #333;
109 height: 13px;
110 width: 10px;
111 border-bottom-left-radius: 10px;
112 border-bottom-right-radius: 10px;
113 box-shadow: 0 -2px #333; }
114 .a-cat:before, .a-cat:after {
115 content: '';
116 display: block; }
117 .a-cat:before {
118 width: 10px;
119 height: 10px;
120 background: #fff;
121 -webkit-transform: rotate(45deg) skew(-20deg, -20deg);
122 -moz-transform: rotate(45deg) skew(-20deg, -20deg);
123 transform: rotate(45deg) skew(-20deg, -20deg);
124 margin-top: -6px; }
125 .a-cat:after {
126 height: 1px;
127 width: 16px;
128 margin-left: -3px;
129 margin-top: 2px;
130 box-shadow: 0 2px 0 #333;
131 background: #333; }
132
133.a-house {
134 width: 10px;
135 height: 8px;
136 border-radius: 2px; }
137 .a-house:before {
138 top: -13px;
139 left: -3px;
140 position: absolute;
141 content: '';
142 display: block;
143 border: 8px solid transparent;
144 border-bottom: 6px solid #333; }
145
146.a-page {
147 width: 11px;
148 height: 13px;
149 border-radius: 2px; }
150 .a-page:before, .a-page:after {
151 content: '';
152 display: block; }
153 .a-page:before {
154 position: absolute;
155 border: 2px solid transparent;
156 border-top-color: #fff;
157 border-right-color: #fff;
158 width: 0;
159 right: 0; }
160 .a-page:after {
161 height: 1px;
162 width: 7px;
163 margin: auto;
164 margin-top: 4px;
165 box-shadow: 0 2px 0 #fff, 0 4px 0 #fff, 0 6px 0 #fff;
166 background: #fff; }
167
168.a-person {
169 width: 13px;
170 height: 13px;
171 border-radius: 15px;
172 overflow: hidden; }
173 .a-person:before, .a-person:after {
174 content: '';
175 display: block;
176 position: absolute;
177 background: #fff; }
178 .a-person:before {
179 width: 5px;
180 height: 5px;
181 border-radius: 10px;
182 left: 4px;
183 top: 3px; }
184 .a-person:after {
185 top: 8px;
186 left: 3px;
187 height: 4px;
188 width: 7px;
189 border-radius: 10px; }
190
191.site-footer {
192 font-size: 11px;
193 padding: 30px 30px 50px;
194 text-align: center; }
195
196.pagination {
197 position: relative;
198 margin: auto;
199 text-align: center;
200 opacity: .4;
201 transition: opacity .4s; }
202 .pagination:hover {
203 opacity: 1; }
204
205.page-nav {
206 display: inline-block;
207 height: 9px;
208 width: 10px;
209 background: #333;
210 font-size: 0;
211 border-radius: 3px;
212 top: -30px;
213 position: absolute; }
214 .page-nav:before, .page-nav:after {
215 content: '';
216 display: block;
217 position: absolute; }
218 .page-nav:before {
219 width: 6px;
220 left: -3px;
221 height: 2px;
222 border-radius: 4px;
223 background: #333; }
224 .page-nav:after {
225 height: 1px;
226 top: 2px;
227 width: 3px;
228 margin: auto;
229 box-shadow: 0 2px 0 #fff, 0 4px 0 #fff;
230 background: #fff; }
231
232.previous {
233 left: -60px; }
234
235.next {
236 right: -60px;
237 -webkit-transform: scale(-1, 1);
238 -moz-transform: scale(-1, 1);
239 transform: scale(-1, 1); }
240
241blockquote {
242 margin: 0;
243 padding: 30px;
244 position: relative;
245 color: #555; }
246 blockquote:before, blockquote:after {
247 font-family: georgia, serif;
248 font-size: 50px;
249 color: #e0e0e0;
250 position: absolute; }
251 blockquote:before {
252 line-height: 1em;
253 left: 0;
254 top: 0;
255 content: '“'; }
256 blockquote:after {
257 right: 0;
258 bottom: 0;
259 content: '”'; }
260 blockquote p:first-child {
261 margin-top: 0; }
262 blockquote p:last-child {
263 margin-bottom: 0; }
264
265hr {
266 border: 0;
267 border-top: 1px solid #eee;
268 margin: 30px 0;
269 text-align: center; }
270 hr:before {
271 content: '///';
272 line-height: 1em;
273 margin-top: -6px;
274 font-size: 10px;
275 color: #ddd;
276 padding: 1px 3px;
277 background: #fff;
278 display: inline-block; }
279
280.fork-me {
281 padding: 5px 35px 3px 10px;
282 color: #fff;
283 text-align: center;
284 background: #333;
285 position: absolute;
286 right: 0;
287 top: 30px;
288 font-size: 12px;
289 overflow: hidden;
290 transition: all .3s; }
291 .fork-me:before, .fork-me:after {
292 transition: all .3s;
293 content: '';
294 display: block;
295 position: absolute; }
296 .fork-me:hover:before, .fork-me:hover:after {
297 right: 15px; }
298 .fork-me:before {
299 width: 10px;
300 height: 7px;
301 border: 1px solid #eee;
302 border-left: 0;
303 border-top-right-radius: 4px;
304 border-bottom-right-radius: 4px;
305 top: 12px;
306 right: 10px; }
307 .fork-me:after {
308 height: 1px;
309 width: 47px;
310 background: #eee;
311 top: 12px;
312 right: 10px;
313 margin-top: 4px;
314 margin-right: -36px; }
315
316.about {
317 text-align: center; }
318
319.links {
320 font-size: 0; }
321 .links a {
322 text-transform: uppercase;
323 font-size: 12px;
324 text-align: center;
325 padding: 3px 0;
326 display: inline-block;
327 color: #333;
328 width: 20%;
329 position: relative; }
330 .links a:before {
331 content: '';
332 position: absolute;
333 left: 50%;
334 margin-left: -3px;
335 margin-top: -25px;
336 transition: .4s;
337 height: 3px;
338 width: 3px;
339 border: 3px solid transparent;
340 -webkit-transform: rotate(-45deg) skew(-10deg, -10deg);
341 -moz-transform: rotate(-45deg) skew(-10deg, -10deg);
342 transform: rotate(-45deg) skew(-10deg, -10deg); }
343 .links a:hover:before {
344 margin-top: -15px;
345 border-bottom-color: #d8badc;
346 border-left-color: #d8badc; }
347
348@media (max-width: 480px) {
349 .links a {
350 width: auto;
351 height: 50px;
352 margin-right: 70%; }
353 .links a:before {
354 -webkit-transform: rotate(-135deg) skew(-10deg, -10deg);
355 -moz-transform: rotate(-135deg) skew(-10deg, -10deg);
356 transform: rotate(-135deg) skew(-10deg, -10deg);
357 left: -15px;
358 margin-top: 6px !important; } }
359
360/*# sourceMappingURL=style.css.map */
Powered by cgit v1.2.3 (git 2.41.0)