Heeyeon

Making files to show various foreign foods videos and Modifying intro page

Showing 139 changed files with 13157 additions and 45 deletions
...@@ -6,7 +6,7 @@ const fs=require('fs'); ...@@ -6,7 +6,7 @@ const fs=require('fs');
6 const router = express.Router() 6 const router = express.Router()
7 const fileStore = require('session-file-store')(session); 7 const fileStore = require('session-file-store')(session);
8 const app = express(); 8 const app = express();
9 -var flash = require('connect-flash'); 9 +var flash = require('connect-flash');
10 var NaverStrategy = require('passport-naver').Strategy; 10 var NaverStrategy = require('passport-naver').Strategy;
11 var KakaoStrategy = require('passport-kakao').Strategy; 11 var KakaoStrategy = require('passport-kakao').Strategy;
12 12
...@@ -38,7 +38,7 @@ passport.deserializeUser(function(id, done) { //읽기 ...@@ -38,7 +38,7 @@ passport.deserializeUser(function(id, done) { //읽기
38 38
39 //첫 페이지 39 //첫 페이지
40 app.get('/',(req,res)=>{ 40 app.get('/',(req,res)=>{
41 - let page = getFirstPage('Passport','This is Passport Example Page',authInfo(req)); 41 + let page = getFirstPage(' 오늘뭐먹지','아직도 먹는게<br>고민된다면..?',authInfo(req));
42 res.send(page); 42 res.send(page);
43 }); 43 });
44 44
...@@ -51,13 +51,18 @@ app.get('/main',(req,res)=>{ ...@@ -51,13 +51,18 @@ app.get('/main',(req,res)=>{
51 res.sendFile(__dirname+'/main/main.html') 51 res.sendFile(__dirname+'/main/main.html')
52 }) 52 })
53 53
54 +//youtube html
55 +app.use(express.static(__dirname + '/youtube'));
56 +
57 +
58 +
54 59
55 /*--------------------로그인 처리---------------------- */ 60 /*--------------------로그인 처리---------------------- */
56 61
57 //로그인 페이지 62 //로그인 페이지
58 app.get('/login',(req,res)=>{ 63 app.get('/login',(req,res)=>{
59 let page = getLoginButton(`<a href="/">뒤로가기</a>`); 64 let page = getLoginButton(`<a href="/">뒤로가기</a>`);
60 - res.send(page); 65 + res.send(page);
61 }); 66 });
62 67
63 68
...@@ -75,7 +80,7 @@ passport.use(new LocalStrategy({ ...@@ -75,7 +80,7 @@ passport.use(new LocalStrategy({
75 console.log(user); 80 console.log(user);
76 81
77 //아이디가 다를때 82 //아이디가 다를때
78 - if (id !== user.email){ 83 + if (id !== user.email){
79 //alert("존재하는 아이디가 없습니다.") 84 //alert("존재하는 아이디가 없습니다.")
80 return done(null, false, { message: '아이디가 다르다' });} 85 return done(null, false, { message: '아이디가 다르다' });}
81 //비밀번호가 다를때 86 //비밀번호가 다를때
...@@ -89,18 +94,18 @@ passport.use(new LocalStrategy({ ...@@ -89,18 +94,18 @@ passport.use(new LocalStrategy({
89 94
90 //로그인 처리 (Passport) 95 //로그인 처리 (Passport)
91 app.post('/login', 96 app.post('/login',
92 -passport.authenticate('local', { 97 +passport.authenticate('local', {
93 //성공시, 메인페이지 이동 98 //성공시, 메인페이지 이동
94 //실패시 로그인 페이지 이동 99 //실패시 로그인 페이지 이동
95 successRedirect: '/', 100 successRedirect: '/',
96 failureRedirect: '/login', 101 failureRedirect: '/login',
97 badRequestMessage : 'Missing username or password.', 102 badRequestMessage : 'Missing username or password.',
98 - failureFlash: true 103 + failureFlash: true
99 })); 104 }));
100 105
101 //로그 아웃 처리 106 //로그 아웃 처리
102 app.get('/logout',(req,res)=>{ 107 app.get('/logout',(req,res)=>{
103 - 108 +
104 //passport 정보 삭제 109 //passport 정보 삭제
105 req.logout(); 110 req.logout();
106 //서버측 세션 삭제 111 //서버측 세션 삭제
...@@ -124,20 +129,20 @@ const authInfo = (req)=>{ ...@@ -124,20 +129,20 @@ const authInfo = (req)=>{
124 // naver 로그인 129 // naver 로그인
125 app.get('/naverlogin', passport.authenticate('naver')); 130 app.get('/naverlogin', passport.authenticate('naver'));
126 passport.use('naver',new NaverStrategy({ 131 passport.use('naver',new NaverStrategy({
127 - clientID: 'CGVVomc0bhMhzfzbytK2', 132 + clientID: 'CGVVomc0bhMhzfzbytK2',
128 - clientSecret: 'XHylcjnZxG', 133 + clientSecret: 'XHylcjnZxG',
129 callbackURL: "http://localhost:3000/", 134 callbackURL: "http://localhost:3000/",
130 svcType: 0, 135 svcType: 0,
131 authType: 'reauthenticate' // enable re-authentication 136 authType: 'reauthenticate' // enable re-authentication
132 - }, 137 + },
133 - 138 +
134 - function(accessToken, refreshToken, profile, done) { 139 + function(accessToken, refreshToken, profile, done) {
135 var _profile = profile._json; 140 var _profile = profile._json;
136 console.log(_profile.id); 141 console.log(_profile.id);
137 console.log(_profile.properties.nickname); 142 console.log(_profile.properties.nickname);
138 - } 143 + }
139 )); 144 ));
140 - 145 +
141 146
142 // kakao 로그인 147 // kakao 로그인
143 app.get('/kakaologin', passport.authenticate('kakao-login')); 148 app.get('/kakaologin', passport.authenticate('kakao-login'));
...@@ -230,7 +235,7 @@ app.get('/join',(req,res)=>{ ...@@ -230,7 +235,7 @@ app.get('/join',(req,res)=>{
230 </style><link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> 235 </style><link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
231 <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> 236 <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
232 <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> 237 <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
233 - 238 +
234 </head> 239 </head>
235 240
236 <body> 241 <body>
...@@ -254,7 +259,7 @@ app.get('/join',(req,res)=>{ ...@@ -254,7 +259,7 @@ app.get('/join',(req,res)=>{
254 </button> 259 </button>
255 </form> 260 </form>
256 </html> 261 </html>
257 - 262 +
258 `,'<a href="/login">뒤로가기</a>'); 263 `,'<a href="/login">뒤로가기</a>');
259 res.send(page); 264 res.send(page);
260 }); 265 });
...@@ -371,7 +376,7 @@ const getLoginButton = (auth) =>{ ...@@ -371,7 +376,7 @@ const getLoginButton = (auth) =>{
371 <button type="submit" class="btn btn btn-primary"> 376 <button type="submit" class="btn btn btn-primary">
372 <a href="/join" style="color:white;text-decoration-line:none;"> 회원가입</a> 377 <a href="/join" style="color:white;text-decoration-line:none;"> 회원가입</a>
373 </form> 378 </form>
374 - 379 +
375 </div> 380 </div>
376 </div> 381 </div>
377 </div> 382 </div>
...@@ -380,8 +385,8 @@ const getLoginButton = (auth) =>{ ...@@ -380,8 +385,8 @@ const getLoginButton = (auth) =>{
380 <a href="/naverlogin" class="btn btn-block btn-lg btn-success btn_login">Naver</a> 385 <a href="/naverlogin" class="btn btn-block btn-lg btn-success btn_login">Naver</a>
381 <a href="/kakaologin" class="btn btn-block btn-lg btn-warning btn_login">KaKao</a> 386 <a href="/kakaologin" class="btn btn-block btn-lg btn-warning btn_login">KaKao</a>
382 </div> 387 </div>
383 - 388 +
384 - 389 +
385 </body> 390 </body>
386 </html> 391 </html>
387 `; 392 `;
...@@ -390,29 +395,148 @@ const getLoginButton = (auth) =>{ ...@@ -390,29 +395,148 @@ const getLoginButton = (auth) =>{
390 395
391 //첫 페이지 화면 396 //첫 페이지 화면
392 const getFirstPage =(title, content, auth) =>{ 397 const getFirstPage =(title, content, auth) =>{
393 - return ` 398 + return `
394 - <!DOCTYPE html> 399 + <!DOCTYPE html>
395 - <html lang="en"> 400 + <html lang="en">
396 - <head> 401 + <head>
397 - <meta charset="UTF-8"> 402 + <meta charset="UTF-8">
398 - <meta http-equiv="X-UA-Compatible" content="IE=edge"> 403 + <meta http-equiv="X-UA-Compatible" content="IE=edge">
399 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 404 + <meta name="viewport" content="width=device-width, initial-scale=1.0">
400 - <title>Passport Example</title> 405 + <title>Food_recipe_Info</title>
401 - </head> 406 + <style>
402 - <body> 407 + @import url(//fonts.googleapis.com/earlyaccess/nanumpenscript.css);
403 - ${auth} 408 + body{
404 - <h1>${title}</h1> 409 + height: 100vh;
405 - <p>${content}</p> 410 + background-image: url('https://images.unsplash.com/photo-1614548539924-5c1f205b3747?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170&q=80');
406 - <div> 411 + background-position: center;
407 - <input type="button" value="page move" onClick="movepage()"/> 412 + background-repeat: no-repeat;
408 - </div> 413 + background-size: cover;
409 - <script type="text/javascript"> 414 + background-attachment: scroll;
410 - function movepage(){ 415 + }
411 - location.href="main"; 416 +
412 - }</script> 417 + .hey {
413 - </body> 418 + position: relative;
414 - </html> 419 + left: 50%;
415 - `; 420 + top: 33%;
416 - 421 + transform: translate(-50%, -47%);
417 -} 422 + text-align: center;
418 - 423 + font-size: 8em;
424 + font-family: 'Nanum Pen Script', cursive;
425 + }
426 + p {
427 + position: relative;
428 + left: 50%;
429 + top: 31%;
430 + transform: translate(-50%, -47%);
431 + font-size: 4em;
432 + text-align: center;
433 + font-family: 'Nanum Pen Script', cursive;
434 + }
435 + div {
436 + position: relative;
437 + font-size: 1.3em;
438 + text-align: center;
439 + }
440 + .box1{
441 + position: relative;
442 + left: 50%;
443 + top: 40%;
444 + transform: translate(-50%, -50%);
445 + }
446 + .box2{
447 + position: absolute;
448 + left: 50%;
449 + top: 77%;
450 + transform: translate(-50%, -54%);
451 + }
452 + </style>
453 + <!-- Bootstrap cdn 설정 -->
454 +<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
455 +<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap-theme.min.css">
456 +<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
457 +<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
458 +<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
459 +
460 + </head>
461 + <body>
462 + <!-- 네비게이션(nav) 컨트롤에 사요하는 드롭다운. -->
463 + <div style="margin:20px;">
464 + <nav id="navbar-example" class="navbar navbar-default navbar-static">
465 + <div class="container-fluid">
466 + <!-- 네비게이션(nav)의 기본 설정으로 모바일일 때, 메뉴 버튼이 나온다. -->
467 + <div class="navbar-header">
468 + <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target=".navbar-collapse">
469 + <span class="sr-only">Toggle navigation</span>
470 + <span class="icon-bar"></span>
471 + <span class="icon-bar"></span>
472 + <span class="icon-bar"></span>
473 + </button>
474 + <!-- 타이틀임. -->
475 + <a class="navbar-brand" href="#">카테고리</a>
476 + </div>
477 + <!-- 메뉴 설정 -->
478 + <div class="collapse navbar-collapse">
479 + <!-- 메뉴는 왼쪽으로 두개 설정 -->
480 + <ul class="nav navbar-nav">
481 +
482 + <li>
483 + <a href="#" class="dropdown-toggle" data-toggle="dropdown">
484 + Asian Food
485 + <!-- 아래 화살표 -->
486 + <span class="caret"></span>
487 + </a>
488 + <ul class="dropdown-menu">
489 + <li><a href="Japan.html">Japanese Food</a></li>
490 + <li><a href="China.html">Chinese Food</a></li>
491 + <li><a href="Korea.html">Korean Food</a></li>
492 + </ul>
493 + </li>
494 +
495 + <li>
496 + <a href="#" class="dropdown-toggle" data-toggle="dropdown">
497 + American Food
498 + <!-- 아래 화살표 -->
499 + <span class="caret"></span>
500 + </a>
501 + <ul class="dropdown-menu">
502 + <li><a href="America.html">US Food</a></li>
503 + <li><a href="Mexico.html">Mexican Food</a></li>
504 + </ul>
505 + </li>
506 + </ul>
507 + <!-- 메뉴를 오른쪽 정렬로 설정 가능 -->
508 + <ul class="nav navbar-nav navbar-right">
509 + <!-- 메뉴 이름은 Right!로 서브 옵션은 Test5와 Test6가 있다. -->
510 + <li>
511 + <a href="#" class="dropdown-toggle" data-toggle="dropdown">
512 + European Food
513 + <!-- 아래 화살표 -->
514 + <span class="caret"></span>
515 + </a>
516 + <ul class="dropdown-menu">
517 + <li><a href="Italy.html">Italian Food</a></li>
518 + <li><a href="France.html">French Food</a></li>
519 +
520 + </ul>
521 + </li>
522 + </ul>
523 + </div>
524 + </div>
525 + </nav>
526 + </div>
527 + <div class="hey">${title}</div>
528 + <p>${content}</p>
529 + <div class="box1">
530 + ${auth}
531 + </div>
532 + <div class="box2">
533 + <input type="button" value="레시피 보러가기" onClick="movepage()"/>
534 + </div>
535 + <script type="text/javascript">
536 + function movepage(){
537 + location.href="main";
538 + }</script>
539 + </body>
540 + </html>
541 + `;
542 +}
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -69,4 +69,8 @@ section{ ...@@ -69,4 +69,8 @@ section{
69 font-size:4rem; 69 font-size:4rem;
70 color:black; 70 color:black;
71 margin-bottom:30px; 71 margin-bottom:30px;
72 +<<<<<<< HEAD
72 } 73 }
74 +=======
75 +}
76 +>>>>>>> feature/youtube
......
...@@ -30,4 +30,8 @@ ...@@ -30,4 +30,8 @@
30 <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script> 30 <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
31 <script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script> 31 <script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
32 </body> 32 </body>
33 +<<<<<<< HEAD
33 </html> 34 </html>
35 +=======
36 +</html>
37 +>>>>>>> feature/youtube
......
...@@ -1312,6 +1312,11 @@ ...@@ -1312,6 +1312,11 @@
1312 "node": "*" 1312 "node": "*"
1313 } 1313 }
1314 }, 1314 },
1315 + "node_modules/jquery": {
1316 + "version": "3.6.0",
1317 + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
1318 + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
1319 + },
1315 "node_modules/jsbn": { 1320 "node_modules/jsbn": {
1316 "version": "0.1.1", 1321 "version": "0.1.1",
1317 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 1322 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
......
1 +John Resig <jeresig@gmail.com>
2 +Gilles van den Hoven <gilles0181@gmail.com>
3 +Michael Geary <mike@geary.com>
4 +Stefan Petre <stefan.petre@gmail.com>
5 +Yehuda Katz <wycats@gmail.com>
6 +Corey Jewett <cj@syntheticplayground.com>
7 +Klaus Hartl <klaus.hartl@gmail.com>
8 +Franck Marcia <franck.marcia@gmail.com>
9 +Jörn Zaefferer <joern.zaefferer@gmail.com>
10 +Paul Bakaus <paul.bakaus@gmail.com>
11 +Brandon Aaron <brandon.aaron@gmail.com>
12 +Mike Alsup <malsup@gmail.com>
13 +Dave Methvin <dave.methvin@gmail.com>
14 +Ed Engelhardt <edengelhardt@gmail.com>
15 +Sean Catchpole <littlecooldude@gmail.com>
16 +Paul Mclanahan <pmclanahan@gmail.com>
17 +David Serduke <davidserduke@gmail.com>
18 +Richard D. Worth <rdworth@gmail.com>
19 +Scott González <scott.gonzalez@gmail.com>
20 +Ariel Flesler <aflesler@gmail.com>
21 +Jon Evans <jon@springyweb.com>
22 +TJ Holowaychuk <tj@vision-media.ca>
23 +Michael Bensoussan <mickey@seesmic.com>
24 +Robert Katić <robert.katic@gmail.com>
25 +Louis-Rémi Babé <lrbabe@gmail.com>
26 +Earle Castledine <mrspeaker@gmail.com>
27 +Damian Janowski <damian.janowski@gmail.com>
28 +Rich Dougherty <rich@rd.gen.nz>
29 +Kim Dalsgaard <kim@kimdalsgaard.com>
30 +Andrea Giammarchi <andrea.giammarchi@gmail.com>
31 +Mark Gibson <jollytoad@gmail.com>
32 +Karl Swedberg <kswedberg@gmail.com>
33 +Justin Meyer <justinbmeyer@gmail.com>
34 +Ben Alman <cowboy@rj3.net>
35 +James Padolsey <cla@padolsey.net>
36 +David Petersen <public@petersendidit.com>
37 +Batiste Bieler <batiste.bieler@gmail.com>
38 +Alexander Farkas <info@corrupt-system.de>
39 +Rick Waldron <waldron.rick@gmail.com>
40 +Filipe Fortes <filipe@fortes.com>
41 +Neeraj Singh <neerajdotname@gmail.com>
42 +Paul Irish <paul.irish@gmail.com>
43 +Iraê Carvalho <irae@irae.pro.br>
44 +Matt Curry <matt@pseudocoder.com>
45 +Michael Monteleone <michael@michaelmonteleone.net>
46 +Noah Sloan <noah.sloan@gmail.com>
47 +Tom Viner <github@viner.tv>
48 +Douglas Neiner <doug@dougneiner.com>
49 +Adam J. Sontag <ajpiano@ajpiano.com>
50 +Dave Reed <dareed@microsoft.com>
51 +Ralph Whitbeck <ralph.whitbeck@gmail.com>
52 +Carl Fürstenberg <azatoth@gmail.com>
53 +Jacob Wright <jacwright@gmail.com>
54 +J. Ryan Stinnett <jryans@gmail.com>
55 +unknown <Igen005@.upcorp.ad.uprr.com>
56 +temp01 <temp01irc@gmail.com>
57 +Heungsub Lee <h@subl.ee>
58 +Colin Snover <github.com@zetafleet.com>
59 +Ryan W Tenney <ryan@10e.us>
60 +Pinhook <contact@pinhooklabs.com>
61 +Ron Otten <r.j.g.otten@gmail.com>
62 +Jephte Clain <Jephte.Clain@univ-reunion.fr>
63 +Anton Matzneller <obhvsbypqghgc@gmail.com>
64 +Alex Sexton <AlexSexton@gmail.com>
65 +Dan Heberden <danheberden@gmail.com>
66 +Henri Wiechers <hwiechers@gmail.com>
67 +Russell Holbrook <russell.holbrook@patch.com>
68 +Julian Aubourg <aubourg.julian@gmail.com>
69 +Gianni Alessandro Chiappetta <gianni@runlevel6.org>
70 +Scott Jehl <scottjehl@gmail.com>
71 +James Burke <jrburke@gmail.com>
72 +Jonas Pfenniger <jonas@pfenniger.name>
73 +Xavi Ramirez <xavi.rmz@gmail.com>
74 +Jared Grippe <jared@deadlyicon.com>
75 +Sylvester Keil <sylvester@keil.or.at>
76 +Brandon Sterne <bsterne@mozilla.com>
77 +Mathias Bynens <mathias@qiwi.be>
78 +Timmy Willison <4timmywil@gmail.com>
79 +Corey Frang <gnarf37@gmail.com>
80 +Digitalxero <digitalxero>
81 +Anton Kovalyov <anton@kovalyov.net>
82 +David Murdoch <david@davidmurdoch.com>
83 +Josh Varner <josh.varner@gmail.com>
84 +Charles McNulty <cmcnulty@kznf.com>
85 +Jordan Boesch <jboesch26@gmail.com>
86 +Jess Thrysoee <jess@thrysoee.dk>
87 +Michael Murray <m@murz.net>
88 +Lee Carpenter <elcarpie@gmail.com>
89 +Alexis Abril <me@alexisabril.com>
90 +Rob Morgan <robbym@gmail.com>
91 +John Firebaugh <john_firebaugh@bigfix.com>
92 +Sam Bisbee <sam@sbisbee.com>
93 +Gilmore Davidson <gilmoreorless@gmail.com>
94 +Brian Brennan <me@brianlovesthings.com>
95 +Xavier Montillet <xavierm02.net@gmail.com>
96 +Daniel Pihlstrom <sciolist.se@gmail.com>
97 +Sahab Yazdani <sahab.yazdani+github@gmail.com>
98 +avaly <github-com@agachi.name>
99 +Scott Hughes <hi@scott-hughes.me>
100 +Mike Sherov <mike.sherov@gmail.com>
101 +Greg Hazel <ghazel@gmail.com>
102 +Schalk Neethling <schalk@ossreleasefeed.com>
103 +Denis Knauf <Denis.Knauf@gmail.com>
104 +Timo Tijhof <krinklemail@gmail.com>
105 +Steen Nielsen <swinedk@gmail.com>
106 +Anton Ryzhov <anton@ryzhov.me>
107 +Shi Chuan <shichuanr@gmail.com>
108 +Berker Peksag <berker.peksag@gmail.com>
109 +Toby Brain <tobyb@freshview.com>
110 +Matt Mueller <mattmuelle@gmail.com>
111 +Justin <drakefjustin@gmail.com>
112 +Daniel Herman <daniel.c.herman@gmail.com>
113 +Oleg Gaidarenko <markelog@gmail.com>
114 +Richard Gibson <richard.gibson@gmail.com>
115 +Rafaël Blais Masson <rafbmasson@gmail.com>
116 +cmc3cn <59194618@qq.com>
117 +Joe Presbrey <presbrey@gmail.com>
118 +Sindre Sorhus <sindresorhus@gmail.com>
119 +Arne de Bree <arne@bukkie.nl>
120 +Vladislav Zarakovsky <vlad.zar@gmail.com>
121 +Andrew E Monat <amonat@gmail.com>
122 +Oskari <admin@o-programs.com>
123 +Joao Henrique de Andrade Bruni <joaohbruni@yahoo.com.br>
124 +tsinha <tsinha@Anthonys-MacBook-Pro.local>
125 +Matt Farmer <matt@frmr.me>
126 +Trey Hunner <treyhunner@gmail.com>
127 +Jason Moon <jmoon@socialcast.com>
128 +Jeffery To <jeffery.to@gmail.com>
129 +Kris Borchers <kris.borchers@gmail.com>
130 +Vladimir Zhuravlev <private.face@gmail.com>
131 +Jacob Thornton <jacobthornton@gmail.com>
132 +Chad Killingsworth <chadkillingsworth@missouristate.edu>
133 +Nowres Rafid <nowres.rafed@gmail.com>
134 +David Benjamin <davidben@mit.edu>
135 +Uri Gilad <antishok@gmail.com>
136 +Chris Faulkner <thefaulkner@gmail.com>
137 +Elijah Manor <elijah.manor@gmail.com>
138 +Daniel Chatfield <chatfielddaniel@gmail.com>
139 +Nikita Govorov <nikita.govorov@gmail.com>
140 +Wesley Walser <waw325@gmail.com>
141 +Mike Pennisi <mike@mikepennisi.com>
142 +Markus Staab <markus.staab@redaxo.de>
143 +Dave Riddle <david@joyvuu.com>
144 +Callum Macrae <callum@lynxphp.com>
145 +Benjamin Truyman <bentruyman@gmail.com>
146 +James Huston <james@jameshuston.net>
147 +Erick Ruiz de Chávez <erickrdch@gmail.com>
148 +David Bonner <dbonner@cogolabs.com>
149 +Akintayo Akinwunmi <aakinwunmi@judge.com>
150 +MORGAN <morgan@morgangraphics.com>
151 +Ismail Khair <ismail.khair@gmail.com>
152 +Carl Danley <carldanley@gmail.com>
153 +Mike Petrovich <michael.c.petrovich@gmail.com>
154 +Greg Lavallee <greglavallee@wapolabs.com>
155 +Daniel Gálvez <dgalvez@editablething.com>
156 +Sai Lung Wong <sai.wong@huffingtonpost.com>
157 +Tom H Fuertes <TomFuertes@gmail.com>
158 +Roland Eckl <eckl.roland@googlemail.com>
159 +Jay Merrifield <fracmak@gmail.com>
160 +Allen J Schmidt Jr <cobrasoft@gmail.com>
161 +Jonathan Sampson <jjdsampson@gmail.com>
162 +Marcel Greter <marcel.greter@ocbnet.ch>
163 +Matthias Jäggli <matthias.jaeggli@gmail.com>
164 +David Fox <dfoxinator@gmail.com>
165 +Yiming He <yiminghe@gmail.com>
166 +Devin Cooper <cooper.semantics@gmail.com>
167 +Paul Ramos <paul.b.ramos@gmail.com>
168 +Rod Vagg <rod@vagg.org>
169 +Bennett Sorbo <bsorbo@gmail.com>
170 +Sebastian Burkhard <sebi.burkhard@gmail.com>
171 +Zachary Adam Kaplan <razic@viralkitty.com>
172 +nanto_vi <nanto@moon.email.ne.jp>
173 +nanto <nanto@moon.email.ne.jp>
174 +Danil Somsikov <danilasomsikov@gmail.com>
175 +Ryunosuke SATO <tricknotes.rs@gmail.com>
176 +Jean Boussier <jean.boussier@gmail.com>
177 +Adam Coulombe <me@adam.co>
178 +Andrew Plummer <plummer.andrew@gmail.com>
179 +Mark Raddatz <mraddatz@gmail.com>
180 +Isaac Z. Schlueter <i@izs.me>
181 +Karl Sieburg <ksieburg@yahoo.com>
182 +Pascal Borreli <pascal@borreli.com>
183 +Nguyen Phuc Lam <ruado1987@gmail.com>
184 +Dmitry Gusev <dmitry.gusev@gmail.com>
185 +Michał Gołębiowski-Owczarek <m.goleb@gmail.com>
186 +Li Xudong <istonelee@gmail.com>
187 +Steven Benner <admin@stevenbenner.com>
188 +Tom H Fuertes <tomfuertes@gmail.com>
189 +Renato Oliveira dos Santos <ros3@cin.ufpe.br>
190 +ros3cin <ros3@cin.ufpe.br>
191 +Jason Bedard <jason+jquery@jbedard.ca>
192 +Kyle Robinson Young <kyle@dontkry.com>
193 +Chris Talkington <chris@talkingtontech.com>
194 +Eddie Monge <eddie@eddiemonge.com>
195 +Terry Jones <terry@jon.es>
196 +Jason Merino <jasonmerino@gmail.com>
197 +Jeremy Dunck <jdunck@gmail.com>
198 +Chris Price <price.c@gmail.com>
199 +Guy Bedford <guybedford@gmail.com>
200 +Amey Sakhadeo <me@ameyms.com>
201 +Mike Sidorov <mikes.ekb@gmail.com>
202 +Anthony Ryan <anthonyryan1@gmail.com>
203 +Dominik D. Geyer <dominik.geyer@gmail.com>
204 +George Kats <katsgeorgeek@gmail.com>
205 +Lihan Li <frankieteardrop@gmail.com>
206 +Ronny Springer <springer.ronny@gmail.com>
207 +Chris Antaki <ChrisAntaki@gmail.com>
208 +Marian Sollmann <marian.sollmann@cargomedia.ch>
209 +njhamann <njhamann@gmail.com>
210 +Ilya Kantor <iliakan@gmail.com>
211 +David Hong <d.hong@me.com>
212 +John Paul <john@johnkpaul.com>
213 +Jakob Stoeck <jakob@pokermania.de>
214 +Christopher Jones <chris@cjqed.com>
215 +Forbes Lindesay <forbes@lindesay.co.uk>
216 +S. Andrew Sheppard <andrew@wq.io>
217 +Leonardo Balter <leonardo.balter@gmail.com>
218 +Roman Reiß <me@silverwind.io>
219 +Benjy Cui <benjytrys@gmail.com>
220 +Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>
221 +John Hoven <hovenj@gmail.com>
222 +Philip Jägenstedt <philip@foolip.org>
223 +Christian Kosmowski <ksmwsk@gmail.com>
224 +Liang Peng <poppinlp@gmail.com>
225 +TJ VanToll <tj.vantoll@gmail.com>
226 +Senya Pugach <upisfree@outlook.com>
227 +Aurelio De Rosa <aurelioderosa@gmail.com>
228 +Nazar Mokrynskyi <nazar@mokrynskyi.com>
229 +Amit Merchant <bullredeyes@gmail.com>
230 +Jason Bedard <jason+github@jbedard.ca>
231 +Arthur Verschaeve <contact@arthurverschaeve.be>
232 +Dan Hart <danhart@notonthehighstreet.com>
233 +Bin Xin <rhyzix@gmail.com>
234 +David Corbacho <davidcorbacho@gmail.com>
235 +Veaceslav Grimalschi <grimalschi@yandex.ru>
236 +Daniel Husar <dano.husar@gmail.com>
237 +Frederic Hemberger <mail@frederic-hemberger.de>
238 +Ben Toews <mastahyeti@gmail.com>
239 +Aditya Raghavan <araghavan3@gmail.com>
240 +Victor Homyakov <vkhomyackov@gmail.com>
241 +Shivaji Varma <contact@shivajivarma.com>
242 +Nicolas HENRY <icewil@gmail.com>
243 +Anne-Gaelle Colom <coloma@westminster.ac.uk>
244 +George Mauer <gmauer@gmail.com>
245 +Leonardo Braga <leonardo.braga@gmail.com>
246 +Stephen Edgar <stephen@netweb.com.au>
247 +Thomas Tortorini <thomastortorini@gmail.com>
248 +Winston Howes <winstonhowes@gmail.com>
249 +Jon Hester <jon.d.hester@gmail.com>
250 +Alexander O'Mara <me@alexomara.com>
251 +Bastian Buchholz <buchholz.bastian@googlemail.com>
252 +Arthur Stolyar <nekr.fabula@gmail.com>
253 +Calvin Metcalf <calvin.metcalf@gmail.com>
254 +Mu Haibao <mhbseal@163.com>
255 +Richard McDaniel <rm0026@uah.edu>
256 +Chris Rebert <github@rebertia.com>
257 +Gabriel Schulhof <gabriel.schulhof@intel.com>
258 +Gilad Peleg <giladp007@gmail.com>
259 +Martin Naumann <martin@geekonaut.de>
260 +Marek Lewandowski <m.lewandowski@cksource.com>
261 +Bruno Pérel <brunoperel@gmail.com>
262 +Reed Loden <reed@reedloden.com>
263 +Daniel Nill <daniellnill@gmail.com>
264 +Yongwoo Jeon <yongwoo.jeon@navercorp.com>
265 +Sean Henderson <seanh.za@gmail.com>
266 +Richard Kraaijenhagen <stdin+git@riichard.com>
267 +Connor Atherton <c.liam.atherton@gmail.com>
268 +Gary Ye <garysye@gmail.com>
269 +Christian Grete <webmaster@christiangrete.com>
270 +Liza Ramo <liza.h.ramo@gmail.com>
271 +Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
272 +Joelle Fleurantin <joasqueeniebee@gmail.com>
273 +Jae Sung Park <alberto.park@gmail.com>
274 +Jun Sun <klsforever@gmail.com>
275 +Josh Soref <apache@soref.com>
276 +Henry Wong <henryw4k@gmail.com>
277 +Jon Dufresne <jon.dufresne@gmail.com>
278 +Martijn W. van der Lee <martijn@vanderlee.com>
279 +Devin Wilson <dwilson6.github@gmail.com>
280 +Steve Mao <maochenyan@gmail.com>
281 +Zack Hall <zackhall@outlook.com>
282 +Bernhard M. Wiedemann <jquerybmw@lsmod.de>
283 +Todor Prikumov <tono_pr@abv.bg>
284 +Jha Naman <createnaman@gmail.com>
285 +William Robinet <william.robinet@conostix.com>
286 +Alexander Lisianoi <all3fox@gmail.com>
287 +Vitaliy Terziev <vitaliyterziev@gmail.com>
288 +Joe Trumbull <trumbull.j@gmail.com>
289 +Alexander K <xpyro@ya.ru>
290 +Damian Senn <jquery@topaxi.codes>
291 +Ralin Chimev <ralin.chimev@gmail.com>
292 +Felipe Sateler <fsateler@gmail.com>
293 +Christophe Tafani-Dereeper <christophetd@hotmail.fr>
294 +Manoj Kumar <nithmanoj@gmail.com>
295 +David Broder-Rodgers <broder93@gmail.com>
296 +Alex Louden <alex@louden.com>
297 +Alex Padilla <alexonezero@outlook.com>
298 +南漂一卒 <shiy007@qq.com>
299 +karan-96 <karanbatra96@gmail.com>
300 +Boom Lee <teabyii@gmail.com>
301 +Andreas Solleder <asol@num42.de>
302 +CDAGaming <cstack2011@yahoo.com>
303 +Pierre Spring <pierre@nelm.io>
304 +Shashanka Nataraj <shashankan.10@gmail.com>
305 +Erik Lax <erik@datahack.se>
306 +Matan Kotler-Berkowitz <205matan@gmail.com>
307 +Jordan Beland <jordan.beland@gmail.com>
308 +Henry Zhu <hi@henryzoo.com>
309 +Saptak Sengupta <saptak013@gmail.com>
310 +Nilton Cesar <niltoncms@gmail.com>
311 +basil.belokon <basil.belokon@gmail.com>
312 +tmybr11 <tomas.perone@gmail.com>
313 +Luis Emilio Velasco Sanchez <emibloque@gmail.com>
314 +Ed S <ejsanders@gmail.com>
315 +Bert Zhang <enbo@users.noreply.github.com>
316 +Andrei Fangli <andrei_fangli@outlook.com>
317 +Marja Hölttä <marja.holtta@gmail.com>
318 +abnud1 <ahmad13932013@hotmail.com>
319 +buddh4 <mail@jharrer.de>
320 +Pat O'Callaghan <patocallaghan@gmail.com>
321 +Ahmed.S.ElAfifi <ahmed.s.elafifi@gmail.com>
322 +Wonseop Kim <wonseop.kim@samsung.com>
323 +Christian Oliff <christianoliff@pm.me>
324 +Christian Wenz <christian@wenz.org>
325 +Sean Robinson <sean.robinson@scottsdalecc.edu>
326 +Jonathan <vanillajonathan@users.noreply.github.com>
327 +Pierre Grimaud <grimaud.pierre@gmail.com>
328 +Beatriz Rezener <beatrizrezener@users.noreply.github.com>
329 +Natalia Sroka <37873210+natipo@users.noreply.github.com>
330 +Wonhyoung Park <wh05.park@samsung.com>
331 +Dallas Fraser <dallas.fraser.waterloo@gmail.com>
1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/
2 +
3 +Permission is hereby granted, free of charge, to any person obtaining
4 +a copy of this software and associated documentation files (the
5 +"Software"), to deal in the Software without restriction, including
6 +without limitation the rights to use, copy, modify, merge, publish,
7 +distribute, sublicense, and/or sell copies of the Software, and to
8 +permit persons to whom the Software is furnished to do so, subject to
9 +the following conditions:
10 +
11 +The above copyright notice and this permission notice shall be
12 +included in all copies or substantial portions of the Software.
13 +
14 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1 +# jQuery
2 +
3 +> jQuery is a fast, small, and feature-rich JavaScript library.
4 +
5 +For information on how to get started and how to use jQuery, please see [jQuery's documentation](https://api.jquery.com/).
6 +For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).
7 +
8 +If upgrading, please see the [blog post for 3.6.0](https://blog.jquery.com/2021/03/02/jquery-3-6-0-released/). This includes notable differences from the previous version and a more readable changelog.
9 +
10 +## Including jQuery
11 +
12 +Below are some of the most common ways to include jQuery.
13 +
14 +### Browser
15 +
16 +#### Script tag
17 +
18 +```html
19 +<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
20 +```
21 +
22 +#### Babel
23 +
24 +[Babel](https://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.
25 +
26 +```js
27 +import $ from "jquery";
28 +```
29 +
30 +#### Browserify/Webpack
31 +
32 +There are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documentation. In the script, including jQuery will usually look like this...
33 +
34 +```js
35 +var $ = require( "jquery" );
36 +```
37 +
38 +#### AMD (Asynchronous Module Definition)
39 +
40 +AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](https://requirejs.org/docs/whyamd.html).
41 +
42 +```js
43 +define( [ "jquery" ], function( $ ) {
44 +
45 +} );
46 +```
47 +
48 +### Node
49 +
50 +To include jQuery in [Node](https://nodejs.org/), first install with npm.
51 +
52 +```sh
53 +npm install jquery
54 +```
55 +
56 +For jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/jsdom/jsdom). This can be useful for testing purposes.
57 +
58 +```js
59 +const { JSDOM } = require( "jsdom" );
60 +const { window } = new JSDOM( "" );
61 +const $ = require( "jquery" )( window );
62 +```
1 +{
2 + "name": "jquery",
3 + "main": "dist/jquery.js",
4 + "license": "MIT",
5 + "ignore": [
6 + "package.json"
7 + ],
8 + "keywords": [
9 + "jquery",
10 + "javascript",
11 + "browser",
12 + "library"
13 + ]
14 +}
...\ No newline at end of file ...\ No newline at end of file
This diff could not be displayed because it is too large.
1 +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
2 +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.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]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(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))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=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):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
1 +/*! jQuery v3.6.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector | (c) OpenJS Foundation and other contributors | jquery.org/license */
2 +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(g,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,v=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),m={},b=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},w=g.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function C(e,t,n){var r,i,o=(n=n||w).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function T(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector",E=function(e,t){return new E.fn.init(e,t)};function d(e){var t=!!e&&"length"in e&&e.length,n=T(e);return!b(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:f,constructor:E,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(E.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(E.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||b(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(E.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||E.isPlainObject(n)?n:{},i=!1,a[t]=E.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},E.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=y.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){C(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?E.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return v(a)},guid:1,support:m}),"function"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var p=function(n){var e,p,x,o,i,h,f,g,w,u,l,C,T,a,E,v,s,c,y,A="sizzle"+1*new Date,d=n.document,N=0,r=0,m=ue(),b=ue(),S=ue(),k=ue(),D=function(e,t){return e===t&&(l=!0),0},L={}.hasOwnProperty,t=[],j=t.pop,q=t.push,O=t.push,P=t.slice,H=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},I="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",R="[\\x20\\t\\r\\n\\f]",B="(?:\\\\[\\da-fA-F]{1,6}"+R+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",M="\\["+R+"*("+B+")(?:"+R+"*([*^$|!~]?=)"+R+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+B+"))|)"+R+"*\\]",W=":("+B+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",F=new RegExp(R+"+","g"),$=new RegExp("^"+R+"+|((?:^|[^\\\\])(?:\\\\.)*)"+R+"+$","g"),z=new RegExp("^"+R+"*,"+R+"*"),_=new RegExp("^"+R+"*([>+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+R+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(d.childNodes),d.childNodes),t[d.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!k[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&(U.test(t)||_.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&p.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=A)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+be(l[o]);c=l.join(",")}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){k(t,!0)}finally{s===A&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[A]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:d;return r!=T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),d!=T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=A,!T.getElementsByName||!T.getElementsByName(A).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+A+"'></a><select id='"+A+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+A+"-]").length||v.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+R+"*name"+R+"*="+R+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+A+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==d&&y(d,e)?-1:t==T||t.ownerDocument==d&&y(d,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==T?-1:t==T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]==d?-1:s[r]==d?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(C(e),p.matchesSelector&&E&&!k[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){k(t,!0)}return 0<se(t,T,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=T&&C(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=T&&C(e);var n=x.attrHandle[t.toLowerCase()],r=n&&L.call(x.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:p.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!p.detectDuplicates,u=!p.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(x=se.selectors={cacheLength:50,createPseudo:le,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.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]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(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))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),b="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=b&&e.nodeName.toLowerCase(),d=!n&&!b,p=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(b?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&d){p=(s=(r=(i=(o=(a=c)[A]||(a[A]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===N&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(p=s=0)||u.pop())if(1===a.nodeType&&++p&&a===e){i[h]=[N,s,p];break}}else if(d&&(p=s=(r=(i=(o=(a=e)[A]||(a[A]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===N&&r[1]),!1===p)while(a=++s&&a&&a[l]||(p=s=0)||u.pop())if((b?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++p&&(d&&((i=(o=a[A]||(a[A]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[N,p]),a===e))break;return(p-=v)===g||p%g==0&&0<=p/g}}},PSEUDO:function(e,o){var t,a=x.pseudos[e]||x.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[A]?a(o):1<a.length?(t=[e,e,"",o],x.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=H(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[A]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return X.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===T.activeElement&&(!T.hasFocus||T.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!x.pseudos.empty(e)},header:function(e){return K.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=x.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})x.pseudos[e]=pe(e);for(e in{submit:!0,reset:!0})x.pseudos[e]=he(e);function me(){}function be(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function xe(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,d=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[N,d];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[A]||(e[A]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===N&&r[1]===d)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Ce(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(p,h,g,v,y,e){return v&&!v[A]&&(v=Te(v)),y&&!y[A]&&(y=Te(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!p||!e&&h?c:Ce(c,s,p,n,r),d=g?y||(e?p:l||v)?[]:t:f;if(g&&g(f,d,n,r),v){i=Ce(d,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(d[u[o]]=!(f[u[o]]=a))}if(e){if(y||p){if(y){i=[],o=d.length;while(o--)(a=d[o])&&i.push(f[o]=a);y(null,d=[],i,r)}o=d.length;while(o--)(a=d[o])&&-1<(i=y?H(e,a):s[o])&&(e[i]=!(t[i]=a))}}else d=Ce(d===t?d.splice(l,d.length):d),y?y(null,t,d,r):O.apply(t,d)})}function Ee(e){for(var i,t,n,r=e.length,o=x.relative[e[0].type],a=o||x.relative[" "],s=o?1:0,u=xe(function(e){return e===i},a,!0),l=xe(function(e){return-1<H(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=x.relative[e[s].type])c=[xe(we(c),t)];else{if((t=x.filter[e[s].type].apply(null,e[s].matches))[A]){for(n=++s;n<r;n++)if(x.relative[e[n].type])break;return Te(1<s&&we(c),1<s&&be(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&be(e))}c.push(t)}return we(c)}return me.prototype=x.filters=x.pseudos,x.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=b[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=x.preFilter;while(a){for(o in n&&!(r=z.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=_.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),x.filter)!(r=Q[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):b(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,b,r,i=[],o=[],a=S[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[A]?i.push(a):o.push(a);(a=S(e,(v=o,m=0<(y=i).length,b=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],d=w,p=e||b&&x.find.TAG("*",i),h=N+=null==d?1:Math.random()||.1,g=p.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=p[l]);l++){if(b&&o){a=0,t||o.ownerDocument==T||(C(o),n=!E);while(s=v[a++])if(s(o,t||T,n)){r.push(o);break}i&&(N=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=j.call(r));f=Ce(f)}O.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(N=h,w=d),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&x.relative[o[1].type]){if(!(t=(x.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=Q.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],x.relative[s=a.type])break;if((u=x.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&be(o)))return O.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},p.sortStable=A.split("").sort(D).join("")===A,p.detectDuplicates=!!l,C(),p.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),p.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(I,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(g);E.find=p,E.expr=p.selectors,E.expr[":"]=E.expr.pseudos,E.uniqueSort=E.unique=p.uniqueSort,E.text=p.getText,E.isXMLDoc=p.isXML,E.contains=p.contains,E.escapeSelector=p.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&E(e).is(n))break;r.push(e)}return r},A=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=E.expr.match.needsContext;function S(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var k=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return b(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1<i.call(n,e)!==r}):E.filter(n,e,r)}E.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?E.find.matchesSelector(r,e)?[r]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<r;t++)if(E.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)E.find(e,i[t],n);return 1<r?E.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&N.test(e)?E(e):e||[],!1).length}});var L,j=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:w,!0)),k.test(r[1])&&E.isPlainObject(t))for(r in t)b(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=w.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):b(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,L=E(w);var q=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&E(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?E.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(E(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return A((e.parentNode||{}).firstChild,e)},children:function(e){return A(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(S(e,"template")&&(e=e.content||e),E.merge([],e.childNodes))}},function(r,i){E.fn[r]=function(e,t){var n=E.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=E.filter(t,n)),1<this.length&&(O[r]||E.uniqueSort(n),q.test(r)&&n.reverse()),this.pushStack(n)}});var H=/[^\x20\t\r\n\f]+/g;function I(e){return e}function R(e){throw e}function B(e,t,n,r){var i;try{e&&b(i=e.promise)?i.call(e).done(t).fail(n):e&&b(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},E.each(e.match(H)||[],function(e,t){n[t]=!0}),n):E.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){E.each(e,function(e,t){b(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==T(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return E.each(arguments,function(e,t){var n;while(-1<(n=E.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<E.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},E.extend({Deferred:function(e){var o=[["notify","progress",E.Callbacks("memory"),E.Callbacks("memory"),2],["resolve","done",E.Callbacks("once memory"),E.Callbacks("once memory"),0,"resolved"],["reject","fail",E.Callbacks("once memory"),E.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return E.Deferred(function(r){E.each(o,function(e,t){var n=b(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&b(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,b(t)?s?t.call(e,l(u,o,I,s),l(u,o,R,s)):(u++,t.call(e,l(u,o,I,s),l(u,o,R,s),l(u,o,I,o.notifyWith))):(a!==I&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==R&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(E.Deferred.getStackHook&&(t.stackTrace=E.Deferred.getStackHook()),g.setTimeout(t))}}return E.Deferred(function(e){o[0][3].add(l(0,e,b(r)?r:I,e.notifyWith)),o[1][3].add(l(0,e,b(t)?t:I)),o[2][3].add(l(0,e,b(n)?n:R))}).promise()},promise:function(e){return null!=e?E.extend(e,a):a}},s={};return E.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=E.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(B(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||b(i[t]&&i[t].then)))return o.then();while(t--)B(i[t],a(t),o.reject);return o.promise()}});var M=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){g.console&&g.console.warn&&e&&M.test(e.name)&&g.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},E.readyException=function(e){g.setTimeout(function(){throw e})};var W=E.Deferred();function F(){w.removeEventListener("DOMContentLoaded",F),g.removeEventListener("load",F),E.ready()}E.fn.ready=function(e){return W.then(e)["catch"](function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||W.resolveWith(w,[E])}}),E.ready.then=W.then,"complete"===w.readyState||"loading"!==w.readyState&&!w.documentElement.doScroll?g.setTimeout(E.ready):(w.addEventListener("DOMContentLoaded",F),g.addEventListener("load",F));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===T(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,b(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(E(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,_=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(_,U)}var X=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=E.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},X(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(H)||[]).length;while(n--)delete r[t[n]]}(void 0===t||E.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var Y=new Q,G=new Q,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,J=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(J,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}G.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return G.hasData(e)||Y.hasData(e)},data:function(e,t,n){return G.access(e,t,n)},removeData:function(e,t){G.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),E.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=G.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){G.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=G.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){G.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){G.remove(this,e)})}}),E.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,E.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=E.queue(e,t),r=n.length,i=n.shift(),o=E._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){E.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:E.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=E.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=w.documentElement,ie=function(e){return E.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return E.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===E.css(e,"display")};var se={};function ue(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=se[s])||(o=a.body.appendChild(a.createElement(s)),u=E.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),se[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}E.fn.extend({show:function(){return ue(this,!0)},hide:function(){return ue(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?E(this).show():E(this).hide()})}});var le,ce,fe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i;le=w.createDocumentFragment().appendChild(w.createElement("div")),(ce=w.createElement("input")).setAttribute("type","radio"),ce.setAttribute("checked","checked"),ce.setAttribute("name","t"),le.appendChild(ce),m.checkClone=le.cloneNode(!0).cloneNode(!0).lastChild.checked,le.innerHTML="<textarea>x</textarea>",m.noCloneChecked=!!le.cloneNode(!0).lastChild.defaultValue,le.innerHTML="<option></option>",m.option=!!le.lastChild;var he={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}he.tbody=he.tfoot=he.colgroup=he.caption=he.thead,he.th=he.td,m.option||(he.optgroup=he.option=[1,"<select multiple='multiple'>","</select>"]);var ye=/<|&#?\w+;/;function me(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p<h;p++)if((o=e[p])||0===o)if("object"===T(o))E.merge(d,o.nodeType?[o]:o);else if(ye.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=he[s]||he._default,a.innerHTML=u[1]+E.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;E.merge(d,a.childNodes),(a=f.firstChild).textContent=""}else d.push(t.createTextNode(o));f.textContent="",p=0;while(o=d[p++])if(r&&-1<E.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ge(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])pe.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function xe(){return!0}function we(){return!1}function Ce(e,t){return e===function(){try{return w.activeElement}catch(e){}}()==("focus"===t)}function Te(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Te(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=we;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return E().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}function Ee(e,i,o){o?(Y.set(e,i,!1),E.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(E.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:E.event.trigger(E.extend(r[0],E.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&E.event.add(e,i,xe)}E.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=Y.get(t);if(X(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&E.find.matchesSelector(re,i),n.guid||(n.guid=E.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(H)||[""]).length;while(l--)p=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=E.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=E.event.special[p]||{},c=E.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=u[p])||((d=u[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),E.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(H)||[""]).length;while(l--)if(p=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){f=E.event.special[p]||{},d=u[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||E.removeEvent(e,p,v.handle),delete u[p])}else for(p in u)E.event.remove(e,p+t[l],n,r,!0);E.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=E.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=E.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=E.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((E.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<E(i,this).index(l):E.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(E.Event.prototype,t,{enumerable:!0,configurable:!0,get:b(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return fe.test(t.type)&&t.click&&S(t,"input")&&Ee(t,"click",xe),!1},trigger:function(e){var t=this||e;return fe.test(t.type)&&t.click&&S(t,"input")&&Ee(t,"click"),!0},_default:function(e){var t=e.target;return fe.test(t.type)&&t.click&&S(t,"input")&&Y.get(t,"click")||S(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?xe:we,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:we,isPropagationStopped:we,isImmediatePropagationStopped:we,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=xe,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=xe,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=xe,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},E.event.addProp),E.each({focus:"focusin",blur:"focusout"},function(e,t){E.event.special[e]={setup:function(){return Ee(this,e,Ce),!1},trigger:function(){return Ee(this,e),!0},_default:function(){return!0},delegateType:t}}),E.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){E.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),E.fn.extend({on:function(e,t,n,r){return Te(this,e,t,n,r)},one:function(e,t,n,r){return Te(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,E(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=we),this.each(function(){E.event.remove(this,e,n,t)})}});var Ae=/<script|<style|<link/i,Ne=/checked\s*(?:[^=]|=\s*.checked.)/i,Se=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function ke(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Le(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function je(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)E.event.add(t,i,s[i][n]);G.hasData(e)&&(o=G.access(e),a=E.extend({},o),G.set(t,a))}}function qe(n,r,i,o){r=v(r);var e,t,a,s,u,l,c=0,f=n.length,d=f-1,p=r[0],h=b(p);if(h||1<f&&"string"==typeof p&&!m.checkClone&&Ne.test(p))return n.each(function(e){var t=n.eq(e);h&&(r[0]=p.call(this,e,t.html())),qe(t,r,i,o)});if(f&&(t=(e=me(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=E.map(ge(e,"script"),De)).length;c<f;c++)u=e,c!==d&&(u=E.clone(u,!0,!0),s&&E.merge(a,ge(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,E.map(a,Le),c=0;c<s;c++)u=a[c],pe.test(u.type||"")&&!Y.access(u,"globalEval")&&E.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?E._evalUrl&&!u.noModule&&E._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):C(u.textContent.replace(Se,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?E.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||E.cleanData(ge(r)),r.parentNode&&(n&&ie(r)&&ve(ge(r,"script")),r.parentNode.removeChild(r));return e}E.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(m.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(a=ge(c),r=0,i=(o=ge(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&fe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ge(e),a=a||ge(c),r=0,i=o.length;r<i;r++)je(o[r],a[r]);else je(e,c);return 0<(a=ge(c,"script")).length&&ve(a,!f&&ge(e,"script")),c},cleanData:function(e){for(var t,n,r,i=E.event.special,o=0;void 0!==(n=e[o]);o++)if(X(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?E.event.remove(n,r):E.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[G.expando]&&(n[G.expando]=void 0)}}}),E.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return qe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||ke(this,e).appendChild(e)})},prepend:function(){return qe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=ke(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return qe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return qe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ge(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!he[(de.exec(e)||["",""])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ge(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return qe(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(ge(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){E.fn[e]=function(e){for(var t,n=[],r=E(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),E(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),He=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=g),t.getComputedStyle(e)},Ie=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Re=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||He(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=E.style(e,t)),!m.pixelBoxStyles()&&Pe.test(a)&&Re.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Me(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=g.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=w.createElement("div"),l=w.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",m.clearCloneStyle="content-box"===l.style.backgroundClip,E.extend(m,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=w.createElement("table"),t=w.createElement("tr"),n=w.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=g.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var We=["Webkit","Moz","ms"],Fe=w.createElement("div").style,$e={};function ze(e){var t=E.cssProps[e]||$e[e];return t||(e in Fe?e:$e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=We.length;while(n--)if((e=We[n]+t)in Fe)return e}(e)||e)}var _e,Ue,Ve=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Qe={position:"absolute",visibility:"hidden",display:"block"},Ye={letterSpacing:"0",fontWeight:"400"};function Ge(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=E.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=E.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=E.css(e,"border"+ne[a]+"Width",!0,i))):(u+=E.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=E.css(e,"border"+ne[a]+"Width",!0,i):s+=E.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=He(e),i=(!m.boxSizingReliable()||n)&&"border-box"===E.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!m.boxSizingReliable()&&i||!m.reliableTrDimensions()&&S(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===E.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===E.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=E.cssHooks[t]||E.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=function(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return E.css(e,t,"")},u=s(),l=n&&n[3]||(E.cssNumber[t]?"":"px"),c=e.nodeType&&(E.cssNumber[t]||"px"!==l&&+u)&&te.exec(E.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)E.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,E.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(E.cssNumber[s]?"":"px")),m.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Xe.test(t)||(t=ze(s)),(a=E.cssHooks[t]||E.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Ye&&(i=Ye[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),E.each(["height","width"],function(e,u){E.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(E.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Ie(e,Qe,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=He(e),o=!m.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===E.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=E.css(e,u)),Ge(0,t,s)}}}),E.cssHooks.marginLeft=Me(m.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-Ie(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),E.each({margin:"",padding:"",border:"Width"},function(i,o){E.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(E.cssHooks[i+o].set=Ge)}),E.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=He(e),i=t.length;a<i;a++)o[t[a]]=E.css(e,t[a],!1,r);return o}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)}}),E.fn.delay=function(r,e){return r=E.fx&&E.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=g.setTimeout(e,r);t.stop=function(){g.clearTimeout(n)}})},_e=w.createElement("input"),Ue=w.createElement("select").appendChild(w.createElement("option")),_e.type="checkbox",m.checkOn=""!==_e.value,m.optSelected=Ue.selected,(_e=w.createElement("input")).value="t",_e.type="radio",m.radioValue="t"===_e.value;var Ze,et=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return $(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?E.prop(e,t,n):(1===o&&E.isXMLDoc(e)||(i=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?Ze:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=E.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!m.radioValue&&"radio"===t&&S(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(H);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),Ze={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\w+/g),function(e,t){var a=et[t]||E.find.attr;et[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=et[o],et[o]=r,r=null!=a(e,t,n)?o:null,et[o]=i),r}});var tt=/^(?:input|select|textarea|button)$/i,nt=/^(?:a|area)$/i;function rt(e){return(e.match(H)||[]).join(" ")}function it(e){return e.getAttribute&&e.getAttribute("class")||""}function ot(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(H)||[]}E.fn.extend({prop:function(e,t){return $(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&E.isXMLDoc(e)||(t=E.propFix[t]||t,i=E.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,"tabindex");return t?parseInt(t,10):tt.test(e.nodeName)||nt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),m.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(b(t))return this.each(function(e){E(this).addClass(t.call(this,e,it(this)))});if((e=ot(t)).length)while(n=this[u++])if(i=it(n),r=1===n.nodeType&&" "+rt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=rt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(b(t))return this.each(function(e){E(this).removeClass(t.call(this,e,it(this)))});if(!arguments.length)return this.attr("class","");if((e=ot(t)).length)while(n=this[u++])if(i=it(n),r=1===n.nodeType&&" "+rt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=rt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):b(i)?this.each(function(e){E(this).toggleClass(i.call(this,e,it(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=E(this),r=ot(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=it(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+rt(it(n))+" ").indexOf(t))return!0;return!1}});var at=/\r/g;E.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=b(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,E(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=E.map(t,function(e){return null==e?"":e+""})),(r=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(at,""):null==e?"":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,"value");return null!=t?t:rt(E.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!S(n.parentNode,"optgroup"))){if(t=E(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=E.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<E.inArray(E.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),E.each(["radio","checkbox"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},m.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),m.focusin="onfocusin"in g;var st=/^(?:focusinfocus|focusoutblur)$/,ut=function(e){e.stopPropagation()};E.extend(E.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,d=[n||w],p=y.call(e,"type")?e.type:e,h=y.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||w,3!==n.nodeType&&8!==n.nodeType&&!st.test(p+E.event.triggered)&&(-1<p.indexOf(".")&&(p=(h=p.split(".")).shift(),h.sort()),u=p.indexOf(":")<0&&"on"+p,(e=e[E.expando]?e:new E.Event(p,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),c=E.event.special[p]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||p,st.test(s+p)||(o=o.parentNode);o;o=o.parentNode)d.push(o),a=o;a===(n.ownerDocument||w)&&d.push(a.defaultView||a.parentWindow||g)}i=0;while((o=d[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||p,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&X(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=p,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(d.pop(),t)||!X(n)||u&&b(n[p])&&!x(n)&&((a=n[u])&&(n[u]=null),E.event.triggered=p,e.isPropagationStopped()&&f.addEventListener(p,ut),n[p](),e.isPropagationStopped()&&f.removeEventListener(p,ut),E.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(r,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),m.focusin||E.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){E.event.simulate(r,e.target,E.event.fix(e))};E.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}}),E.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new g.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||E.error("Invalid XML: "+(n?E.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var lt,ct=/\[\]$/,ft=/\r?\n/g,dt=/^(?:submit|button|image|reset|file)$/i,pt=/^(?:input|select|textarea|keygen)/i;function ht(n,e,r,i){var t;if(Array.isArray(e))E.each(e,function(e,t){r||ct.test(n)?i(n,t):ht(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==T(e))i(n,e);else for(t in e)ht(n+"["+t+"]",e[t],r,i)}E.param=function(e,t){var n,r=[],i=function(e,t){var n=b(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){i(this.name,this.value)});else for(n in e)ht(n,e[n],t,i);return r.join("&")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,"elements");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(":disabled")&&pt.test(this.nodeName)&&!dt.test(e)&&(this.checked||!fe.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(ft,"\r\n")}}):{name:t.name,value:n.replace(ft,"\r\n")}}).get()}}),E.fn.extend({wrapAll:function(e){var t;return this[0]&&(b(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return b(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=b(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},m.createHTMLDocument=((lt=w.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===lt.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((r=(t=w.implementation.createHTMLDocument("")).createElement("base")).href=w.location.href,t.head.appendChild(r)):t=w),o=!n&&[],(i=k.exec(e))?[t.createElement(i[1])]:(i=me([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),b(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=Me(m.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;E.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),b(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||E.guid++,i},E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=S,E.isFunction=b,E.isWindow=x,E.camelCase=V,E.type=T,E.now=Date.now,E.isNumeric=function(e){var t=E.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},E.trim=function(e){return null==e?"":(e+"").replace(gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return E});var vt=g.jQuery,yt=g.$;return E.noConflict=function(e){return g.$===E&&(g.$=yt),e&&g.jQuery===E&&(g.jQuery=vt),E},"undefined"==typeof e&&(g.jQuery=g.$=E),E});
This diff could not be displayed because it is too large.
1 +Copyright JS Foundation and other contributors, https://js.foundation/
2 +
3 +This software consists of voluntary contributions made by many
4 +individuals. For exact contribution history, see the revision history
5 +available at https://github.com/jquery/sizzle
6 +
7 +The following license applies to all parts of this software except as
8 +documented below:
9 +
10 +====
11 +
12 +Permission is hereby granted, free of charge, to any person obtaining
13 +a copy of this software and associated documentation files (the
14 +"Software"), to deal in the Software without restriction, including
15 +without limitation the rights to use, copy, modify, merge, publish,
16 +distribute, sublicense, and/or sell copies of the Software, and to
17 +permit persons to whom the Software is furnished to do so, subject to
18 +the following conditions:
19 +
20 +The above copyright notice and this permission notice shall be
21 +included in all copies or substantial portions of the Software.
22 +
23 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 +
31 +====
32 +
33 +All files located in the node_modules and external directories are
34 +externally maintained libraries used by this software which have their
35 +own licenses; we recommend you read them, as their terms may differ from
36 +the terms above.
1 +/*!
2 + * Sizzle CSS Selector Engine v2.3.6
3 + * https://sizzlejs.com/
4 + *
5 + * Copyright JS Foundation and other contributors
6 + * Released under the MIT license
7 + * https://js.foundation/
8 + *
9 + * Date: 2021-02-16
10 + */
11 +( function( window ) {
12 +var i,
13 + support,
14 + Expr,
15 + getText,
16 + isXML,
17 + tokenize,
18 + compile,
19 + select,
20 + outermostContext,
21 + sortInput,
22 + hasDuplicate,
23 +
24 + // Local document vars
25 + setDocument,
26 + document,
27 + docElem,
28 + documentIsHTML,
29 + rbuggyQSA,
30 + rbuggyMatches,
31 + matches,
32 + contains,
33 +
34 + // Instance-specific data
35 + expando = "sizzle" + 1 * new Date(),
36 + preferredDoc = window.document,
37 + dirruns = 0,
38 + done = 0,
39 + classCache = createCache(),
40 + tokenCache = createCache(),
41 + compilerCache = createCache(),
42 + nonnativeSelectorCache = createCache(),
43 + sortOrder = function( a, b ) {
44 + if ( a === b ) {
45 + hasDuplicate = true;
46 + }
47 + return 0;
48 + },
49 +
50 + // Instance methods
51 + hasOwn = ( {} ).hasOwnProperty,
52 + arr = [],
53 + pop = arr.pop,
54 + pushNative = arr.push,
55 + push = arr.push,
56 + slice = arr.slice,
57 +
58 + // Use a stripped-down indexOf as it's faster than native
59 + // https://jsperf.com/thor-indexof-vs-for/5
60 + indexOf = function( list, elem ) {
61 + var i = 0,
62 + len = list.length;
63 + for ( ; i < len; i++ ) {
64 + if ( list[ i ] === elem ) {
65 + return i;
66 + }
67 + }
68 + return -1;
69 + },
70 +
71 + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
72 + "ismap|loop|multiple|open|readonly|required|scoped",
73 +
74 + // Regular expressions
75 +
76 + // http://www.w3.org/TR/css3-selectors/#whitespace
77 + whitespace = "[\\x20\\t\\r\\n\\f]",
78 +
79 + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
80 + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
81 + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
82 +
83 + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
84 + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
85 +
86 + // Operator (capture 2)
87 + "*([*^$|!~]?=)" + whitespace +
88 +
89 + // "Attribute values must be CSS identifiers [capture 5]
90 + // or strings [capture 3 or capture 4]"
91 + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
92 + whitespace + "*\\]",
93 +
94 + pseudos = ":(" + identifier + ")(?:\\((" +
95 +
96 + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
97 + // 1. quoted (capture 3; capture 4 or capture 5)
98 + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
99 +
100 + // 2. simple (capture 6)
101 + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
102 +
103 + // 3. anything else (capture 2)
104 + ".*" +
105 + ")\\)|)",
106 +
107 + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
108 + rwhitespace = new RegExp( whitespace + "+", "g" ),
109 + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
110 + whitespace + "+$", "g" ),
111 +
112 + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
113 + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
114 + "*" ),
115 + rdescend = new RegExp( whitespace + "|>" ),
116 +
117 + rpseudo = new RegExp( pseudos ),
118 + ridentifier = new RegExp( "^" + identifier + "$" ),
119 +
120 + matchExpr = {
121 + "ID": new RegExp( "^#(" + identifier + ")" ),
122 + "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
123 + "TAG": new RegExp( "^(" + identifier + "|[*])" ),
124 + "ATTR": new RegExp( "^" + attributes ),
125 + "PSEUDO": new RegExp( "^" + pseudos ),
126 + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
127 + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
128 + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
129 + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
130 +
131 + // For use in libraries implementing .is()
132 + // We use this for POS matching in `select`
133 + "needsContext": new RegExp( "^" + whitespace +
134 + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
135 + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
136 + },
137 +
138 + rhtml = /HTML$/i,
139 + rinputs = /^(?:input|select|textarea|button)$/i,
140 + rheader = /^h\d$/i,
141 +
142 + rnative = /^[^{]+\{\s*\[native \w/,
143 +
144 + // Easily-parseable/retrievable ID or TAG or CLASS selectors
145 + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
146 +
147 + rsibling = /[+~]/,
148 +
149 + // CSS escapes
150 + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
151 + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
152 + funescape = function( escape, nonHex ) {
153 + var high = "0x" + escape.slice( 1 ) - 0x10000;
154 +
155 + return nonHex ?
156 +
157 + // Strip the backslash prefix from a non-hex escape sequence
158 + nonHex :
159 +
160 + // Replace a hexadecimal escape sequence with the encoded Unicode code point
161 + // Support: IE <=11+
162 + // For values outside the Basic Multilingual Plane (BMP), manually construct a
163 + // surrogate pair
164 + high < 0 ?
165 + String.fromCharCode( high + 0x10000 ) :
166 + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
167 + },
168 +
169 + // CSS string/identifier serialization
170 + // https://drafts.csswg.org/cssom/#common-serializing-idioms
171 + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
172 + fcssescape = function( ch, asCodePoint ) {
173 + if ( asCodePoint ) {
174 +
175 + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
176 + if ( ch === "\0" ) {
177 + return "\uFFFD";
178 + }
179 +
180 + // Control characters and (dependent upon position) numbers get escaped as code points
181 + return ch.slice( 0, -1 ) + "\\" +
182 + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
183 + }
184 +
185 + // Other potentially-special ASCII characters get backslash-escaped
186 + return "\\" + ch;
187 + },
188 +
189 + // Used for iframes
190 + // See setDocument()
191 + // Removing the function wrapper causes a "Permission Denied"
192 + // error in IE
193 + unloadHandler = function() {
194 + setDocument();
195 + },
196 +
197 + inDisabledFieldset = addCombinator(
198 + function( elem ) {
199 + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
200 + },
201 + { dir: "parentNode", next: "legend" }
202 + );
203 +
204 +// Optimize for push.apply( _, NodeList )
205 +try {
206 + push.apply(
207 + ( arr = slice.call( preferredDoc.childNodes ) ),
208 + preferredDoc.childNodes
209 + );
210 +
211 + // Support: Android<4.0
212 + // Detect silently failing push.apply
213 + // eslint-disable-next-line no-unused-expressions
214 + arr[ preferredDoc.childNodes.length ].nodeType;
215 +} catch ( e ) {
216 + push = { apply: arr.length ?
217 +
218 + // Leverage slice if possible
219 + function( target, els ) {
220 + pushNative.apply( target, slice.call( els ) );
221 + } :
222 +
223 + // Support: IE<9
224 + // Otherwise append directly
225 + function( target, els ) {
226 + var j = target.length,
227 + i = 0;
228 +
229 + // Can't trust NodeList.length
230 + while ( ( target[ j++ ] = els[ i++ ] ) ) {}
231 + target.length = j - 1;
232 + }
233 + };
234 +}
235 +
236 +function Sizzle( selector, context, results, seed ) {
237 + var m, i, elem, nid, match, groups, newSelector,
238 + newContext = context && context.ownerDocument,
239 +
240 + // nodeType defaults to 9, since context defaults to document
241 + nodeType = context ? context.nodeType : 9;
242 +
243 + results = results || [];
244 +
245 + // Return early from calls with invalid selector or context
246 + if ( typeof selector !== "string" || !selector ||
247 + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
248 +
249 + return results;
250 + }
251 +
252 + // Try to shortcut find operations (as opposed to filters) in HTML documents
253 + if ( !seed ) {
254 + setDocument( context );
255 + context = context || document;
256 +
257 + if ( documentIsHTML ) {
258 +
259 + // If the selector is sufficiently simple, try using a "get*By*" DOM method
260 + // (excepting DocumentFragment context, where the methods don't exist)
261 + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
262 +
263 + // ID selector
264 + if ( ( m = match[ 1 ] ) ) {
265 +
266 + // Document context
267 + if ( nodeType === 9 ) {
268 + if ( ( elem = context.getElementById( m ) ) ) {
269 +
270 + // Support: IE, Opera, Webkit
271 + // TODO: identify versions
272 + // getElementById can match elements by name instead of ID
273 + if ( elem.id === m ) {
274 + results.push( elem );
275 + return results;
276 + }
277 + } else {
278 + return results;
279 + }
280 +
281 + // Element context
282 + } else {
283 +
284 + // Support: IE, Opera, Webkit
285 + // TODO: identify versions
286 + // getElementById can match elements by name instead of ID
287 + if ( newContext && ( elem = newContext.getElementById( m ) ) &&
288 + contains( context, elem ) &&
289 + elem.id === m ) {
290 +
291 + results.push( elem );
292 + return results;
293 + }
294 + }
295 +
296 + // Type selector
297 + } else if ( match[ 2 ] ) {
298 + push.apply( results, context.getElementsByTagName( selector ) );
299 + return results;
300 +
301 + // Class selector
302 + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
303 + context.getElementsByClassName ) {
304 +
305 + push.apply( results, context.getElementsByClassName( m ) );
306 + return results;
307 + }
308 + }
309 +
310 + // Take advantage of querySelectorAll
311 + if ( support.qsa &&
312 + !nonnativeSelectorCache[ selector + " " ] &&
313 + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
314 +
315 + // Support: IE 8 only
316 + // Exclude object elements
317 + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
318 +
319 + newSelector = selector;
320 + newContext = context;
321 +
322 + // qSA considers elements outside a scoping root when evaluating child or
323 + // descendant combinators, which is not what we want.
324 + // In such cases, we work around the behavior by prefixing every selector in the
325 + // list with an ID selector referencing the scope context.
326 + // The technique has to be used as well when a leading combinator is used
327 + // as such selectors are not recognized by querySelectorAll.
328 + // Thanks to Andrew Dupont for this technique.
329 + if ( nodeType === 1 &&
330 + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
331 +
332 + // Expand context for sibling selectors
333 + newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
334 + context;
335 +
336 + // We can use :scope instead of the ID hack if the browser
337 + // supports it & if we're not changing the context.
338 + if ( newContext !== context || !support.scope ) {
339 +
340 + // Capture the context ID, setting it first if necessary
341 + if ( ( nid = context.getAttribute( "id" ) ) ) {
342 + nid = nid.replace( rcssescape, fcssescape );
343 + } else {
344 + context.setAttribute( "id", ( nid = expando ) );
345 + }
346 + }
347 +
348 + // Prefix every selector in the list
349 + groups = tokenize( selector );
350 + i = groups.length;
351 + while ( i-- ) {
352 + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
353 + toSelector( groups[ i ] );
354 + }
355 + newSelector = groups.join( "," );
356 + }
357 +
358 + try {
359 + push.apply( results,
360 + newContext.querySelectorAll( newSelector )
361 + );
362 + return results;
363 + } catch ( qsaError ) {
364 + nonnativeSelectorCache( selector, true );
365 + } finally {
366 + if ( nid === expando ) {
367 + context.removeAttribute( "id" );
368 + }
369 + }
370 + }
371 + }
372 + }
373 +
374 + // All others
375 + return select( selector.replace( rtrim, "$1" ), context, results, seed );
376 +}
377 +
378 +/**
379 + * Create key-value caches of limited size
380 + * @returns {function(string, object)} Returns the Object data after storing it on itself with
381 + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
382 + * deleting the oldest entry
383 + */
384 +function createCache() {
385 + var keys = [];
386 +
387 + function cache( key, value ) {
388 +
389 + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
390 + if ( keys.push( key + " " ) > Expr.cacheLength ) {
391 +
392 + // Only keep the most recent entries
393 + delete cache[ keys.shift() ];
394 + }
395 + return ( cache[ key + " " ] = value );
396 + }
397 + return cache;
398 +}
399 +
400 +/**
401 + * Mark a function for special use by Sizzle
402 + * @param {Function} fn The function to mark
403 + */
404 +function markFunction( fn ) {
405 + fn[ expando ] = true;
406 + return fn;
407 +}
408 +
409 +/**
410 + * Support testing using an element
411 + * @param {Function} fn Passed the created element and returns a boolean result
412 + */
413 +function assert( fn ) {
414 + var el = document.createElement( "fieldset" );
415 +
416 + try {
417 + return !!fn( el );
418 + } catch ( e ) {
419 + return false;
420 + } finally {
421 +
422 + // Remove from its parent by default
423 + if ( el.parentNode ) {
424 + el.parentNode.removeChild( el );
425 + }
426 +
427 + // release memory in IE
428 + el = null;
429 + }
430 +}
431 +
432 +/**
433 + * Adds the same handler for all of the specified attrs
434 + * @param {String} attrs Pipe-separated list of attributes
435 + * @param {Function} handler The method that will be applied
436 + */
437 +function addHandle( attrs, handler ) {
438 + var arr = attrs.split( "|" ),
439 + i = arr.length;
440 +
441 + while ( i-- ) {
442 + Expr.attrHandle[ arr[ i ] ] = handler;
443 + }
444 +}
445 +
446 +/**
447 + * Checks document order of two siblings
448 + * @param {Element} a
449 + * @param {Element} b
450 + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
451 + */
452 +function siblingCheck( a, b ) {
453 + var cur = b && a,
454 + diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
455 + a.sourceIndex - b.sourceIndex;
456 +
457 + // Use IE sourceIndex if available on both nodes
458 + if ( diff ) {
459 + return diff;
460 + }
461 +
462 + // Check if b follows a
463 + if ( cur ) {
464 + while ( ( cur = cur.nextSibling ) ) {
465 + if ( cur === b ) {
466 + return -1;
467 + }
468 + }
469 + }
470 +
471 + return a ? 1 : -1;
472 +}
473 +
474 +/**
475 + * Returns a function to use in pseudos for input types
476 + * @param {String} type
477 + */
478 +function createInputPseudo( type ) {
479 + return function( elem ) {
480 + var name = elem.nodeName.toLowerCase();
481 + return name === "input" && elem.type === type;
482 + };
483 +}
484 +
485 +/**
486 + * Returns a function to use in pseudos for buttons
487 + * @param {String} type
488 + */
489 +function createButtonPseudo( type ) {
490 + return function( elem ) {
491 + var name = elem.nodeName.toLowerCase();
492 + return ( name === "input" || name === "button" ) && elem.type === type;
493 + };
494 +}
495 +
496 +/**
497 + * Returns a function to use in pseudos for :enabled/:disabled
498 + * @param {Boolean} disabled true for :disabled; false for :enabled
499 + */
500 +function createDisabledPseudo( disabled ) {
501 +
502 + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
503 + return function( elem ) {
504 +
505 + // Only certain elements can match :enabled or :disabled
506 + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
507 + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
508 + if ( "form" in elem ) {
509 +
510 + // Check for inherited disabledness on relevant non-disabled elements:
511 + // * listed form-associated elements in a disabled fieldset
512 + // https://html.spec.whatwg.org/multipage/forms.html#category-listed
513 + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
514 + // * option elements in a disabled optgroup
515 + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
516 + // All such elements have a "form" property.
517 + if ( elem.parentNode && elem.disabled === false ) {
518 +
519 + // Option elements defer to a parent optgroup if present
520 + if ( "label" in elem ) {
521 + if ( "label" in elem.parentNode ) {
522 + return elem.parentNode.disabled === disabled;
523 + } else {
524 + return elem.disabled === disabled;
525 + }
526 + }
527 +
528 + // Support: IE 6 - 11
529 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors
530 + return elem.isDisabled === disabled ||
531 +
532 + // Where there is no isDisabled, check manually
533 + /* jshint -W018 */
534 + elem.isDisabled !== !disabled &&
535 + inDisabledFieldset( elem ) === disabled;
536 + }
537 +
538 + return elem.disabled === disabled;
539 +
540 + // Try to winnow out elements that can't be disabled before trusting the disabled property.
541 + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
542 + // even exist on them, let alone have a boolean value.
543 + } else if ( "label" in elem ) {
544 + return elem.disabled === disabled;
545 + }
546 +
547 + // Remaining elements are neither :enabled nor :disabled
548 + return false;
549 + };
550 +}
551 +
552 +/**
553 + * Returns a function to use in pseudos for positionals
554 + * @param {Function} fn
555 + */
556 +function createPositionalPseudo( fn ) {
557 + return markFunction( function( argument ) {
558 + argument = +argument;
559 + return markFunction( function( seed, matches ) {
560 + var j,
561 + matchIndexes = fn( [], seed.length, argument ),
562 + i = matchIndexes.length;
563 +
564 + // Match elements found at the specified indexes
565 + while ( i-- ) {
566 + if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
567 + seed[ j ] = !( matches[ j ] = seed[ j ] );
568 + }
569 + }
570 + } );
571 + } );
572 +}
573 +
574 +/**
575 + * Checks a node for validity as a Sizzle context
576 + * @param {Element|Object=} context
577 + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
578 + */
579 +function testContext( context ) {
580 + return context && typeof context.getElementsByTagName !== "undefined" && context;
581 +}
582 +
583 +// Expose support vars for convenience
584 +support = Sizzle.support = {};
585 +
586 +/**
587 + * Detects XML nodes
588 + * @param {Element|Object} elem An element or a document
589 + * @returns {Boolean} True iff elem is a non-HTML XML node
590 + */
591 +isXML = Sizzle.isXML = function( elem ) {
592 + var namespace = elem && elem.namespaceURI,
593 + docElem = elem && ( elem.ownerDocument || elem ).documentElement;
594 +
595 + // Support: IE <=8
596 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
597 + // https://bugs.jquery.com/ticket/4833
598 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
599 +};
600 +
601 +/**
602 + * Sets document-related variables once based on the current document
603 + * @param {Element|Object} [doc] An element or document object to use to set the document
604 + * @returns {Object} Returns the current document
605 + */
606 +setDocument = Sizzle.setDocument = function( node ) {
607 + var hasCompare, subWindow,
608 + doc = node ? node.ownerDocument || node : preferredDoc;
609 +
610 + // Return early if doc is invalid or already selected
611 + // Support: IE 11+, Edge 17 - 18+
612 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
613 + // two documents; shallow comparisons work.
614 + // eslint-disable-next-line eqeqeq
615 + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
616 + return document;
617 + }
618 +
619 + // Update global variables
620 + document = doc;
621 + docElem = document.documentElement;
622 + documentIsHTML = !isXML( document );
623 +
624 + // Support: IE 9 - 11+, Edge 12 - 18+
625 + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
626 + // Support: IE 11+, Edge 17 - 18+
627 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
628 + // two documents; shallow comparisons work.
629 + // eslint-disable-next-line eqeqeq
630 + if ( preferredDoc != document &&
631 + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
632 +
633 + // Support: IE 11, Edge
634 + if ( subWindow.addEventListener ) {
635 + subWindow.addEventListener( "unload", unloadHandler, false );
636 +
637 + // Support: IE 9 - 10 only
638 + } else if ( subWindow.attachEvent ) {
639 + subWindow.attachEvent( "onunload", unloadHandler );
640 + }
641 + }
642 +
643 + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
644 + // Safari 4 - 5 only, Opera <=11.6 - 12.x only
645 + // IE/Edge & older browsers don't support the :scope pseudo-class.
646 + // Support: Safari 6.0 only
647 + // Safari 6.0 supports :scope but it's an alias of :root there.
648 + support.scope = assert( function( el ) {
649 + docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
650 + return typeof el.querySelectorAll !== "undefined" &&
651 + !el.querySelectorAll( ":scope fieldset div" ).length;
652 + } );
653 +
654 + /* Attributes
655 + ---------------------------------------------------------------------- */
656 +
657 + // Support: IE<8
658 + // Verify that getAttribute really returns attributes and not properties
659 + // (excepting IE8 booleans)
660 + support.attributes = assert( function( el ) {
661 + el.className = "i";
662 + return !el.getAttribute( "className" );
663 + } );
664 +
665 + /* getElement(s)By*
666 + ---------------------------------------------------------------------- */
667 +
668 + // Check if getElementsByTagName("*") returns only elements
669 + support.getElementsByTagName = assert( function( el ) {
670 + el.appendChild( document.createComment( "" ) );
671 + return !el.getElementsByTagName( "*" ).length;
672 + } );
673 +
674 + // Support: IE<9
675 + support.getElementsByClassName = rnative.test( document.getElementsByClassName );
676 +
677 + // Support: IE<10
678 + // Check if getElementById returns elements by name
679 + // The broken getElementById methods don't pick up programmatically-set names,
680 + // so use a roundabout getElementsByName test
681 + support.getById = assert( function( el ) {
682 + docElem.appendChild( el ).id = expando;
683 + return !document.getElementsByName || !document.getElementsByName( expando ).length;
684 + } );
685 +
686 + // ID filter and find
687 + if ( support.getById ) {
688 + Expr.filter[ "ID" ] = function( id ) {
689 + var attrId = id.replace( runescape, funescape );
690 + return function( elem ) {
691 + return elem.getAttribute( "id" ) === attrId;
692 + };
693 + };
694 + Expr.find[ "ID" ] = function( id, context ) {
695 + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
696 + var elem = context.getElementById( id );
697 + return elem ? [ elem ] : [];
698 + }
699 + };
700 + } else {
701 + Expr.filter[ "ID" ] = function( id ) {
702 + var attrId = id.replace( runescape, funescape );
703 + return function( elem ) {
704 + var node = typeof elem.getAttributeNode !== "undefined" &&
705 + elem.getAttributeNode( "id" );
706 + return node && node.value === attrId;
707 + };
708 + };
709 +
710 + // Support: IE 6 - 7 only
711 + // getElementById is not reliable as a find shortcut
712 + Expr.find[ "ID" ] = function( id, context ) {
713 + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
714 + var node, i, elems,
715 + elem = context.getElementById( id );
716 +
717 + if ( elem ) {
718 +
719 + // Verify the id attribute
720 + node = elem.getAttributeNode( "id" );
721 + if ( node && node.value === id ) {
722 + return [ elem ];
723 + }
724 +
725 + // Fall back on getElementsByName
726 + elems = context.getElementsByName( id );
727 + i = 0;
728 + while ( ( elem = elems[ i++ ] ) ) {
729 + node = elem.getAttributeNode( "id" );
730 + if ( node && node.value === id ) {
731 + return [ elem ];
732 + }
733 + }
734 + }
735 +
736 + return [];
737 + }
738 + };
739 + }
740 +
741 + // Tag
742 + Expr.find[ "TAG" ] = support.getElementsByTagName ?
743 + function( tag, context ) {
744 + if ( typeof context.getElementsByTagName !== "undefined" ) {
745 + return context.getElementsByTagName( tag );
746 +
747 + // DocumentFragment nodes don't have gEBTN
748 + } else if ( support.qsa ) {
749 + return context.querySelectorAll( tag );
750 + }
751 + } :
752 +
753 + function( tag, context ) {
754 + var elem,
755 + tmp = [],
756 + i = 0,
757 +
758 + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
759 + results = context.getElementsByTagName( tag );
760 +
761 + // Filter out possible comments
762 + if ( tag === "*" ) {
763 + while ( ( elem = results[ i++ ] ) ) {
764 + if ( elem.nodeType === 1 ) {
765 + tmp.push( elem );
766 + }
767 + }
768 +
769 + return tmp;
770 + }
771 + return results;
772 + };
773 +
774 + // Class
775 + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
776 + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
777 + return context.getElementsByClassName( className );
778 + }
779 + };
780 +
781 + /* QSA/matchesSelector
782 + ---------------------------------------------------------------------- */
783 +
784 + // QSA and matchesSelector support
785 +
786 + // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
787 + rbuggyMatches = [];
788 +
789 + // qSa(:focus) reports false when true (Chrome 21)
790 + // We allow this because of a bug in IE8/9 that throws an error
791 + // whenever `document.activeElement` is accessed on an iframe
792 + // So, we allow :focus to pass through QSA all the time to avoid the IE error
793 + // See https://bugs.jquery.com/ticket/13378
794 + rbuggyQSA = [];
795 +
796 + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
797 +
798 + // Build QSA regex
799 + // Regex strategy adopted from Diego Perini
800 + assert( function( el ) {
801 +
802 + var input;
803 +
804 + // Select is set to empty string on purpose
805 + // This is to test IE's treatment of not explicitly
806 + // setting a boolean content attribute,
807 + // since its presence should be enough
808 + // https://bugs.jquery.com/ticket/12359
809 + docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
810 + "<select id='" + expando + "-\r\\' msallowcapture=''>" +
811 + "<option selected=''></option></select>";
812 +
813 + // Support: IE8, Opera 11-12.16
814 + // Nothing should be selected when empty strings follow ^= or $= or *=
815 + // The test attribute must be unknown in Opera but "safe" for WinRT
816 + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
817 + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
818 + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
819 + }
820 +
821 + // Support: IE8
822 + // Boolean attributes and "value" are not treated correctly
823 + if ( !el.querySelectorAll( "[selected]" ).length ) {
824 + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
825 + }
826 +
827 + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
828 + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
829 + rbuggyQSA.push( "~=" );
830 + }
831 +
832 + // Support: IE 11+, Edge 15 - 18+
833 + // IE 11/Edge don't find elements on a `[name='']` query in some cases.
834 + // Adding a temporary attribute to the document before the selection works
835 + // around the issue.
836 + // Interestingly, IE 10 & older don't seem to have the issue.
837 + input = document.createElement( "input" );
838 + input.setAttribute( "name", "" );
839 + el.appendChild( input );
840 + if ( !el.querySelectorAll( "[name='']" ).length ) {
841 + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
842 + whitespace + "*(?:''|\"\")" );
843 + }
844 +
845 + // Webkit/Opera - :checked should return selected option elements
846 + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
847 + // IE8 throws error here and will not see later tests
848 + if ( !el.querySelectorAll( ":checked" ).length ) {
849 + rbuggyQSA.push( ":checked" );
850 + }
851 +
852 + // Support: Safari 8+, iOS 8+
853 + // https://bugs.webkit.org/show_bug.cgi?id=136851
854 + // In-page `selector#id sibling-combinator selector` fails
855 + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
856 + rbuggyQSA.push( ".#.+[+~]" );
857 + }
858 +
859 + // Support: Firefox <=3.6 - 5 only
860 + // Old Firefox doesn't throw on a badly-escaped identifier.
861 + el.querySelectorAll( "\\\f" );
862 + rbuggyQSA.push( "[\\r\\n\\f]" );
863 + } );
864 +
865 + assert( function( el ) {
866 + el.innerHTML = "<a href='' disabled='disabled'></a>" +
867 + "<select disabled='disabled'><option/></select>";
868 +
869 + // Support: Windows 8 Native Apps
870 + // The type and name attributes are restricted during .innerHTML assignment
871 + var input = document.createElement( "input" );
872 + input.setAttribute( "type", "hidden" );
873 + el.appendChild( input ).setAttribute( "name", "D" );
874 +
875 + // Support: IE8
876 + // Enforce case-sensitivity of name attribute
877 + if ( el.querySelectorAll( "[name=d]" ).length ) {
878 + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
879 + }
880 +
881 + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
882 + // IE8 throws error here and will not see later tests
883 + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
884 + rbuggyQSA.push( ":enabled", ":disabled" );
885 + }
886 +
887 + // Support: IE9-11+
888 + // IE's :disabled selector does not pick up the children of disabled fieldsets
889 + docElem.appendChild( el ).disabled = true;
890 + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
891 + rbuggyQSA.push( ":enabled", ":disabled" );
892 + }
893 +
894 + // Support: Opera 10 - 11 only
895 + // Opera 10-11 does not throw on post-comma invalid pseudos
896 + el.querySelectorAll( "*,:x" );
897 + rbuggyQSA.push( ",.*:" );
898 + } );
899 + }
900 +
901 + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
902 + docElem.webkitMatchesSelector ||
903 + docElem.mozMatchesSelector ||
904 + docElem.oMatchesSelector ||
905 + docElem.msMatchesSelector ) ) ) ) {
906 +
907 + assert( function( el ) {
908 +
909 + // Check to see if it's possible to do matchesSelector
910 + // on a disconnected node (IE 9)
911 + support.disconnectedMatch = matches.call( el, "*" );
912 +
913 + // This should fail with an exception
914 + // Gecko does not error, returns false instead
915 + matches.call( el, "[s!='']:x" );
916 + rbuggyMatches.push( "!=", pseudos );
917 + } );
918 + }
919 +
920 + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
921 + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
922 +
923 + /* Contains
924 + ---------------------------------------------------------------------- */
925 + hasCompare = rnative.test( docElem.compareDocumentPosition );
926 +
927 + // Element contains another
928 + // Purposefully self-exclusive
929 + // As in, an element does not contain itself
930 + contains = hasCompare || rnative.test( docElem.contains ) ?
931 + function( a, b ) {
932 + var adown = a.nodeType === 9 ? a.documentElement : a,
933 + bup = b && b.parentNode;
934 + return a === bup || !!( bup && bup.nodeType === 1 && (
935 + adown.contains ?
936 + adown.contains( bup ) :
937 + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
938 + ) );
939 + } :
940 + function( a, b ) {
941 + if ( b ) {
942 + while ( ( b = b.parentNode ) ) {
943 + if ( b === a ) {
944 + return true;
945 + }
946 + }
947 + }
948 + return false;
949 + };
950 +
951 + /* Sorting
952 + ---------------------------------------------------------------------- */
953 +
954 + // Document order sorting
955 + sortOrder = hasCompare ?
956 + function( a, b ) {
957 +
958 + // Flag for duplicate removal
959 + if ( a === b ) {
960 + hasDuplicate = true;
961 + return 0;
962 + }
963 +
964 + // Sort on method existence if only one input has compareDocumentPosition
965 + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
966 + if ( compare ) {
967 + return compare;
968 + }
969 +
970 + // Calculate position if both inputs belong to the same document
971 + // Support: IE 11+, Edge 17 - 18+
972 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
973 + // two documents; shallow comparisons work.
974 + // eslint-disable-next-line eqeqeq
975 + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
976 + a.compareDocumentPosition( b ) :
977 +
978 + // Otherwise we know they are disconnected
979 + 1;
980 +
981 + // Disconnected nodes
982 + if ( compare & 1 ||
983 + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
984 +
985 + // Choose the first element that is related to our preferred document
986 + // Support: IE 11+, Edge 17 - 18+
987 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
988 + // two documents; shallow comparisons work.
989 + // eslint-disable-next-line eqeqeq
990 + if ( a == document || a.ownerDocument == preferredDoc &&
991 + contains( preferredDoc, a ) ) {
992 + return -1;
993 + }
994 +
995 + // Support: IE 11+, Edge 17 - 18+
996 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
997 + // two documents; shallow comparisons work.
998 + // eslint-disable-next-line eqeqeq
999 + if ( b == document || b.ownerDocument == preferredDoc &&
1000 + contains( preferredDoc, b ) ) {
1001 + return 1;
1002 + }
1003 +
1004 + // Maintain original order
1005 + return sortInput ?
1006 + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1007 + 0;
1008 + }
1009 +
1010 + return compare & 4 ? -1 : 1;
1011 + } :
1012 + function( a, b ) {
1013 +
1014 + // Exit early if the nodes are identical
1015 + if ( a === b ) {
1016 + hasDuplicate = true;
1017 + return 0;
1018 + }
1019 +
1020 + var cur,
1021 + i = 0,
1022 + aup = a.parentNode,
1023 + bup = b.parentNode,
1024 + ap = [ a ],
1025 + bp = [ b ];
1026 +
1027 + // Parentless nodes are either documents or disconnected
1028 + if ( !aup || !bup ) {
1029 +
1030 + // Support: IE 11+, Edge 17 - 18+
1031 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1032 + // two documents; shallow comparisons work.
1033 + /* eslint-disable eqeqeq */
1034 + return a == document ? -1 :
1035 + b == document ? 1 :
1036 + /* eslint-enable eqeqeq */
1037 + aup ? -1 :
1038 + bup ? 1 :
1039 + sortInput ?
1040 + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1041 + 0;
1042 +
1043 + // If the nodes are siblings, we can do a quick check
1044 + } else if ( aup === bup ) {
1045 + return siblingCheck( a, b );
1046 + }
1047 +
1048 + // Otherwise we need full lists of their ancestors for comparison
1049 + cur = a;
1050 + while ( ( cur = cur.parentNode ) ) {
1051 + ap.unshift( cur );
1052 + }
1053 + cur = b;
1054 + while ( ( cur = cur.parentNode ) ) {
1055 + bp.unshift( cur );
1056 + }
1057 +
1058 + // Walk down the tree looking for a discrepancy
1059 + while ( ap[ i ] === bp[ i ] ) {
1060 + i++;
1061 + }
1062 +
1063 + return i ?
1064 +
1065 + // Do a sibling check if the nodes have a common ancestor
1066 + siblingCheck( ap[ i ], bp[ i ] ) :
1067 +
1068 + // Otherwise nodes in our document sort first
1069 + // Support: IE 11+, Edge 17 - 18+
1070 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1071 + // two documents; shallow comparisons work.
1072 + /* eslint-disable eqeqeq */
1073 + ap[ i ] == preferredDoc ? -1 :
1074 + bp[ i ] == preferredDoc ? 1 :
1075 + /* eslint-enable eqeqeq */
1076 + 0;
1077 + };
1078 +
1079 + return document;
1080 +};
1081 +
1082 +Sizzle.matches = function( expr, elements ) {
1083 + return Sizzle( expr, null, null, elements );
1084 +};
1085 +
1086 +Sizzle.matchesSelector = function( elem, expr ) {
1087 + setDocument( elem );
1088 +
1089 + if ( support.matchesSelector && documentIsHTML &&
1090 + !nonnativeSelectorCache[ expr + " " ] &&
1091 + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1092 + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
1093 +
1094 + try {
1095 + var ret = matches.call( elem, expr );
1096 +
1097 + // IE 9's matchesSelector returns false on disconnected nodes
1098 + if ( ret || support.disconnectedMatch ||
1099 +
1100 + // As well, disconnected nodes are said to be in a document
1101 + // fragment in IE 9
1102 + elem.document && elem.document.nodeType !== 11 ) {
1103 + return ret;
1104 + }
1105 + } catch ( e ) {
1106 + nonnativeSelectorCache( expr, true );
1107 + }
1108 + }
1109 +
1110 + return Sizzle( expr, document, null, [ elem ] ).length > 0;
1111 +};
1112 +
1113 +Sizzle.contains = function( context, elem ) {
1114 +
1115 + // Set document vars if needed
1116 + // Support: IE 11+, Edge 17 - 18+
1117 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1118 + // two documents; shallow comparisons work.
1119 + // eslint-disable-next-line eqeqeq
1120 + if ( ( context.ownerDocument || context ) != document ) {
1121 + setDocument( context );
1122 + }
1123 + return contains( context, elem );
1124 +};
1125 +
1126 +Sizzle.attr = function( elem, name ) {
1127 +
1128 + // Set document vars if needed
1129 + // Support: IE 11+, Edge 17 - 18+
1130 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1131 + // two documents; shallow comparisons work.
1132 + // eslint-disable-next-line eqeqeq
1133 + if ( ( elem.ownerDocument || elem ) != document ) {
1134 + setDocument( elem );
1135 + }
1136 +
1137 + var fn = Expr.attrHandle[ name.toLowerCase() ],
1138 +
1139 + // Don't get fooled by Object.prototype properties (jQuery #13807)
1140 + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1141 + fn( elem, name, !documentIsHTML ) :
1142 + undefined;
1143 +
1144 + return val !== undefined ?
1145 + val :
1146 + support.attributes || !documentIsHTML ?
1147 + elem.getAttribute( name ) :
1148 + ( val = elem.getAttributeNode( name ) ) && val.specified ?
1149 + val.value :
1150 + null;
1151 +};
1152 +
1153 +Sizzle.escape = function( sel ) {
1154 + return ( sel + "" ).replace( rcssescape, fcssescape );
1155 +};
1156 +
1157 +Sizzle.error = function( msg ) {
1158 + throw new Error( "Syntax error, unrecognized expression: " + msg );
1159 +};
1160 +
1161 +/**
1162 + * Document sorting and removing duplicates
1163 + * @param {ArrayLike} results
1164 + */
1165 +Sizzle.uniqueSort = function( results ) {
1166 + var elem,
1167 + duplicates = [],
1168 + j = 0,
1169 + i = 0;
1170 +
1171 + // Unless we *know* we can detect duplicates, assume their presence
1172 + hasDuplicate = !support.detectDuplicates;
1173 + sortInput = !support.sortStable && results.slice( 0 );
1174 + results.sort( sortOrder );
1175 +
1176 + if ( hasDuplicate ) {
1177 + while ( ( elem = results[ i++ ] ) ) {
1178 + if ( elem === results[ i ] ) {
1179 + j = duplicates.push( i );
1180 + }
1181 + }
1182 + while ( j-- ) {
1183 + results.splice( duplicates[ j ], 1 );
1184 + }
1185 + }
1186 +
1187 + // Clear input after sorting to release objects
1188 + // See https://github.com/jquery/sizzle/pull/225
1189 + sortInput = null;
1190 +
1191 + return results;
1192 +};
1193 +
1194 +/**
1195 + * Utility function for retrieving the text value of an array of DOM nodes
1196 + * @param {Array|Element} elem
1197 + */
1198 +getText = Sizzle.getText = function( elem ) {
1199 + var node,
1200 + ret = "",
1201 + i = 0,
1202 + nodeType = elem.nodeType;
1203 +
1204 + if ( !nodeType ) {
1205 +
1206 + // If no nodeType, this is expected to be an array
1207 + while ( ( node = elem[ i++ ] ) ) {
1208 +
1209 + // Do not traverse comment nodes
1210 + ret += getText( node );
1211 + }
1212 + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1213 +
1214 + // Use textContent for elements
1215 + // innerText usage removed for consistency of new lines (jQuery #11153)
1216 + if ( typeof elem.textContent === "string" ) {
1217 + return elem.textContent;
1218 + } else {
1219 +
1220 + // Traverse its children
1221 + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1222 + ret += getText( elem );
1223 + }
1224 + }
1225 + } else if ( nodeType === 3 || nodeType === 4 ) {
1226 + return elem.nodeValue;
1227 + }
1228 +
1229 + // Do not include comment or processing instruction nodes
1230 +
1231 + return ret;
1232 +};
1233 +
1234 +Expr = Sizzle.selectors = {
1235 +
1236 + // Can be adjusted by the user
1237 + cacheLength: 50,
1238 +
1239 + createPseudo: markFunction,
1240 +
1241 + match: matchExpr,
1242 +
1243 + attrHandle: {},
1244 +
1245 + find: {},
1246 +
1247 + relative: {
1248 + ">": { dir: "parentNode", first: true },
1249 + " ": { dir: "parentNode" },
1250 + "+": { dir: "previousSibling", first: true },
1251 + "~": { dir: "previousSibling" }
1252 + },
1253 +
1254 + preFilter: {
1255 + "ATTR": function( match ) {
1256 + match[ 1 ] = match[ 1 ].replace( runescape, funescape );
1257 +
1258 + // Move the given value to match[3] whether quoted or unquoted
1259 + match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
1260 + match[ 5 ] || "" ).replace( runescape, funescape );
1261 +
1262 + if ( match[ 2 ] === "~=" ) {
1263 + match[ 3 ] = " " + match[ 3 ] + " ";
1264 + }
1265 +
1266 + return match.slice( 0, 4 );
1267 + },
1268 +
1269 + "CHILD": function( match ) {
1270 +
1271 + /* matches from matchExpr["CHILD"]
1272 + 1 type (only|nth|...)
1273 + 2 what (child|of-type)
1274 + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1275 + 4 xn-component of xn+y argument ([+-]?\d*n|)
1276 + 5 sign of xn-component
1277 + 6 x of xn-component
1278 + 7 sign of y-component
1279 + 8 y of y-component
1280 + */
1281 + match[ 1 ] = match[ 1 ].toLowerCase();
1282 +
1283 + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
1284 +
1285 + // nth-* requires argument
1286 + if ( !match[ 3 ] ) {
1287 + Sizzle.error( match[ 0 ] );
1288 + }
1289 +
1290 + // numeric x and y parameters for Expr.filter.CHILD
1291 + // remember that false/true cast respectively to 0/1
1292 + match[ 4 ] = +( match[ 4 ] ?
1293 + match[ 5 ] + ( match[ 6 ] || 1 ) :
1294 + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
1295 + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
1296 +
1297 + // other types prohibit arguments
1298 + } else if ( match[ 3 ] ) {
1299 + Sizzle.error( match[ 0 ] );
1300 + }
1301 +
1302 + return match;
1303 + },
1304 +
1305 + "PSEUDO": function( match ) {
1306 + var excess,
1307 + unquoted = !match[ 6 ] && match[ 2 ];
1308 +
1309 + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
1310 + return null;
1311 + }
1312 +
1313 + // Accept quoted arguments as-is
1314 + if ( match[ 3 ] ) {
1315 + match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
1316 +
1317 + // Strip excess characters from unquoted arguments
1318 + } else if ( unquoted && rpseudo.test( unquoted ) &&
1319 +
1320 + // Get excess from tokenize (recursively)
1321 + ( excess = tokenize( unquoted, true ) ) &&
1322 +
1323 + // advance to the next closing parenthesis
1324 + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
1325 +
1326 + // excess is a negative index
1327 + match[ 0 ] = match[ 0 ].slice( 0, excess );
1328 + match[ 2 ] = unquoted.slice( 0, excess );
1329 + }
1330 +
1331 + // Return only captures needed by the pseudo filter method (type and argument)
1332 + return match.slice( 0, 3 );
1333 + }
1334 + },
1335 +
1336 + filter: {
1337 +
1338 + "TAG": function( nodeNameSelector ) {
1339 + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1340 + return nodeNameSelector === "*" ?
1341 + function() {
1342 + return true;
1343 + } :
1344 + function( elem ) {
1345 + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1346 + };
1347 + },
1348 +
1349 + "CLASS": function( className ) {
1350 + var pattern = classCache[ className + " " ];
1351 +
1352 + return pattern ||
1353 + ( pattern = new RegExp( "(^|" + whitespace +
1354 + ")" + className + "(" + whitespace + "|$)" ) ) && classCache(
1355 + className, function( elem ) {
1356 + return pattern.test(
1357 + typeof elem.className === "string" && elem.className ||
1358 + typeof elem.getAttribute !== "undefined" &&
1359 + elem.getAttribute( "class" ) ||
1360 + ""
1361 + );
1362 + } );
1363 + },
1364 +
1365 + "ATTR": function( name, operator, check ) {
1366 + return function( elem ) {
1367 + var result = Sizzle.attr( elem, name );
1368 +
1369 + if ( result == null ) {
1370 + return operator === "!=";
1371 + }
1372 + if ( !operator ) {
1373 + return true;
1374 + }
1375 +
1376 + result += "";
1377 +
1378 + /* eslint-disable max-len */
1379 +
1380 + return operator === "=" ? result === check :
1381 + operator === "!=" ? result !== check :
1382 + operator === "^=" ? check && result.indexOf( check ) === 0 :
1383 + operator === "*=" ? check && result.indexOf( check ) > -1 :
1384 + operator === "$=" ? check && result.slice( -check.length ) === check :
1385 + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1386 + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1387 + false;
1388 + /* eslint-enable max-len */
1389 +
1390 + };
1391 + },
1392 +
1393 + "CHILD": function( type, what, _argument, first, last ) {
1394 + var simple = type.slice( 0, 3 ) !== "nth",
1395 + forward = type.slice( -4 ) !== "last",
1396 + ofType = what === "of-type";
1397 +
1398 + return first === 1 && last === 0 ?
1399 +
1400 + // Shortcut for :nth-*(n)
1401 + function( elem ) {
1402 + return !!elem.parentNode;
1403 + } :
1404 +
1405 + function( elem, _context, xml ) {
1406 + var cache, uniqueCache, outerCache, node, nodeIndex, start,
1407 + dir = simple !== forward ? "nextSibling" : "previousSibling",
1408 + parent = elem.parentNode,
1409 + name = ofType && elem.nodeName.toLowerCase(),
1410 + useCache = !xml && !ofType,
1411 + diff = false;
1412 +
1413 + if ( parent ) {
1414 +
1415 + // :(first|last|only)-(child|of-type)
1416 + if ( simple ) {
1417 + while ( dir ) {
1418 + node = elem;
1419 + while ( ( node = node[ dir ] ) ) {
1420 + if ( ofType ?
1421 + node.nodeName.toLowerCase() === name :
1422 + node.nodeType === 1 ) {
1423 +
1424 + return false;
1425 + }
1426 + }
1427 +
1428 + // Reverse direction for :only-* (if we haven't yet done so)
1429 + start = dir = type === "only" && !start && "nextSibling";
1430 + }
1431 + return true;
1432 + }
1433 +
1434 + start = [ forward ? parent.firstChild : parent.lastChild ];
1435 +
1436 + // non-xml :nth-child(...) stores cache data on `parent`
1437 + if ( forward && useCache ) {
1438 +
1439 + // Seek `elem` from a previously-cached index
1440 +
1441 + // ...in a gzip-friendly way
1442 + node = parent;
1443 + outerCache = node[ expando ] || ( node[ expando ] = {} );
1444 +
1445 + // Support: IE <9 only
1446 + // Defend against cloned attroperties (jQuery gh-1709)
1447 + uniqueCache = outerCache[ node.uniqueID ] ||
1448 + ( outerCache[ node.uniqueID ] = {} );
1449 +
1450 + cache = uniqueCache[ type ] || [];
1451 + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1452 + diff = nodeIndex && cache[ 2 ];
1453 + node = nodeIndex && parent.childNodes[ nodeIndex ];
1454 +
1455 + while ( ( node = ++nodeIndex && node && node[ dir ] ||
1456 +
1457 + // Fallback to seeking `elem` from the start
1458 + ( diff = nodeIndex = 0 ) || start.pop() ) ) {
1459 +
1460 + // When found, cache indexes on `parent` and break
1461 + if ( node.nodeType === 1 && ++diff && node === elem ) {
1462 + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1463 + break;
1464 + }
1465 + }
1466 +
1467 + } else {
1468 +
1469 + // Use previously-cached element index if available
1470 + if ( useCache ) {
1471 +
1472 + // ...in a gzip-friendly way
1473 + node = elem;
1474 + outerCache = node[ expando ] || ( node[ expando ] = {} );
1475 +
1476 + // Support: IE <9 only
1477 + // Defend against cloned attroperties (jQuery gh-1709)
1478 + uniqueCache = outerCache[ node.uniqueID ] ||
1479 + ( outerCache[ node.uniqueID ] = {} );
1480 +
1481 + cache = uniqueCache[ type ] || [];
1482 + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1483 + diff = nodeIndex;
1484 + }
1485 +
1486 + // xml :nth-child(...)
1487 + // or :nth-last-child(...) or :nth(-last)?-of-type(...)
1488 + if ( diff === false ) {
1489 +
1490 + // Use the same loop as above to seek `elem` from the start
1491 + while ( ( node = ++nodeIndex && node && node[ dir ] ||
1492 + ( diff = nodeIndex = 0 ) || start.pop() ) ) {
1493 +
1494 + if ( ( ofType ?
1495 + node.nodeName.toLowerCase() === name :
1496 + node.nodeType === 1 ) &&
1497 + ++diff ) {
1498 +
1499 + // Cache the index of each encountered element
1500 + if ( useCache ) {
1501 + outerCache = node[ expando ] ||
1502 + ( node[ expando ] = {} );
1503 +
1504 + // Support: IE <9 only
1505 + // Defend against cloned attroperties (jQuery gh-1709)
1506 + uniqueCache = outerCache[ node.uniqueID ] ||
1507 + ( outerCache[ node.uniqueID ] = {} );
1508 +
1509 + uniqueCache[ type ] = [ dirruns, diff ];
1510 + }
1511 +
1512 + if ( node === elem ) {
1513 + break;
1514 + }
1515 + }
1516 + }
1517 + }
1518 + }
1519 +
1520 + // Incorporate the offset, then check against cycle size
1521 + diff -= last;
1522 + return diff === first || ( diff % first === 0 && diff / first >= 0 );
1523 + }
1524 + };
1525 + },
1526 +
1527 + "PSEUDO": function( pseudo, argument ) {
1528 +
1529 + // pseudo-class names are case-insensitive
1530 + // http://www.w3.org/TR/selectors/#pseudo-classes
1531 + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1532 + // Remember that setFilters inherits from pseudos
1533 + var args,
1534 + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
1535 + Sizzle.error( "unsupported pseudo: " + pseudo );
1536 +
1537 + // The user may use createPseudo to indicate that
1538 + // arguments are needed to create the filter function
1539 + // just as Sizzle does
1540 + if ( fn[ expando ] ) {
1541 + return fn( argument );
1542 + }
1543 +
1544 + // But maintain support for old signatures
1545 + if ( fn.length > 1 ) {
1546 + args = [ pseudo, pseudo, "", argument ];
1547 + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
1548 + markFunction( function( seed, matches ) {
1549 + var idx,
1550 + matched = fn( seed, argument ),
1551 + i = matched.length;
1552 + while ( i-- ) {
1553 + idx = indexOf( seed, matched[ i ] );
1554 + seed[ idx ] = !( matches[ idx ] = matched[ i ] );
1555 + }
1556 + } ) :
1557 + function( elem ) {
1558 + return fn( elem, 0, args );
1559 + };
1560 + }
1561 +
1562 + return fn;
1563 + }
1564 + },
1565 +
1566 + pseudos: {
1567 +
1568 + // Potentially complex pseudos
1569 + "not": markFunction( function( selector ) {
1570 +
1571 + // Trim the selector passed to compile
1572 + // to avoid treating leading and trailing
1573 + // spaces as combinators
1574 + var input = [],
1575 + results = [],
1576 + matcher = compile( selector.replace( rtrim, "$1" ) );
1577 +
1578 + return matcher[ expando ] ?
1579 + markFunction( function( seed, matches, _context, xml ) {
1580 + var elem,
1581 + unmatched = matcher( seed, null, xml, [] ),
1582 + i = seed.length;
1583 +
1584 + // Match elements unmatched by `matcher`
1585 + while ( i-- ) {
1586 + if ( ( elem = unmatched[ i ] ) ) {
1587 + seed[ i ] = !( matches[ i ] = elem );
1588 + }
1589 + }
1590 + } ) :
1591 + function( elem, _context, xml ) {
1592 + input[ 0 ] = elem;
1593 + matcher( input, null, xml, results );
1594 +
1595 + // Don't keep the element (issue #299)
1596 + input[ 0 ] = null;
1597 + return !results.pop();
1598 + };
1599 + } ),
1600 +
1601 + "has": markFunction( function( selector ) {
1602 + return function( elem ) {
1603 + return Sizzle( selector, elem ).length > 0;
1604 + };
1605 + } ),
1606 +
1607 + "contains": markFunction( function( text ) {
1608 + text = text.replace( runescape, funescape );
1609 + return function( elem ) {
1610 + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
1611 + };
1612 + } ),
1613 +
1614 + // "Whether an element is represented by a :lang() selector
1615 + // is based solely on the element's language value
1616 + // being equal to the identifier C,
1617 + // or beginning with the identifier C immediately followed by "-".
1618 + // The matching of C against the element's language value is performed case-insensitively.
1619 + // The identifier C does not have to be a valid language name."
1620 + // http://www.w3.org/TR/selectors/#lang-pseudo
1621 + "lang": markFunction( function( lang ) {
1622 +
1623 + // lang value must be a valid identifier
1624 + if ( !ridentifier.test( lang || "" ) ) {
1625 + Sizzle.error( "unsupported lang: " + lang );
1626 + }
1627 + lang = lang.replace( runescape, funescape ).toLowerCase();
1628 + return function( elem ) {
1629 + var elemLang;
1630 + do {
1631 + if ( ( elemLang = documentIsHTML ?
1632 + elem.lang :
1633 + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
1634 +
1635 + elemLang = elemLang.toLowerCase();
1636 + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
1637 + }
1638 + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
1639 + return false;
1640 + };
1641 + } ),
1642 +
1643 + // Miscellaneous
1644 + "target": function( elem ) {
1645 + var hash = window.location && window.location.hash;
1646 + return hash && hash.slice( 1 ) === elem.id;
1647 + },
1648 +
1649 + "root": function( elem ) {
1650 + return elem === docElem;
1651 + },
1652 +
1653 + "focus": function( elem ) {
1654 + return elem === document.activeElement &&
1655 + ( !document.hasFocus || document.hasFocus() ) &&
1656 + !!( elem.type || elem.href || ~elem.tabIndex );
1657 + },
1658 +
1659 + // Boolean properties
1660 + "enabled": createDisabledPseudo( false ),
1661 + "disabled": createDisabledPseudo( true ),
1662 +
1663 + "checked": function( elem ) {
1664 +
1665 + // In CSS3, :checked should return both checked and selected elements
1666 + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1667 + var nodeName = elem.nodeName.toLowerCase();
1668 + return ( nodeName === "input" && !!elem.checked ) ||
1669 + ( nodeName === "option" && !!elem.selected );
1670 + },
1671 +
1672 + "selected": function( elem ) {
1673 +
1674 + // Accessing this property makes selected-by-default
1675 + // options in Safari work properly
1676 + if ( elem.parentNode ) {
1677 + // eslint-disable-next-line no-unused-expressions
1678 + elem.parentNode.selectedIndex;
1679 + }
1680 +
1681 + return elem.selected === true;
1682 + },
1683 +
1684 + // Contents
1685 + "empty": function( elem ) {
1686 +
1687 + // http://www.w3.org/TR/selectors/#empty-pseudo
1688 + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
1689 + // but not by others (comment: 8; processing instruction: 7; etc.)
1690 + // nodeType < 6 works because attributes (2) do not appear as children
1691 + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1692 + if ( elem.nodeType < 6 ) {
1693 + return false;
1694 + }
1695 + }
1696 + return true;
1697 + },
1698 +
1699 + "parent": function( elem ) {
1700 + return !Expr.pseudos[ "empty" ]( elem );
1701 + },
1702 +
1703 + // Element/input types
1704 + "header": function( elem ) {
1705 + return rheader.test( elem.nodeName );
1706 + },
1707 +
1708 + "input": function( elem ) {
1709 + return rinputs.test( elem.nodeName );
1710 + },
1711 +
1712 + "button": function( elem ) {
1713 + var name = elem.nodeName.toLowerCase();
1714 + return name === "input" && elem.type === "button" || name === "button";
1715 + },
1716 +
1717 + "text": function( elem ) {
1718 + var attr;
1719 + return elem.nodeName.toLowerCase() === "input" &&
1720 + elem.type === "text" &&
1721 +
1722 + // Support: IE<8
1723 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
1724 + ( ( attr = elem.getAttribute( "type" ) ) == null ||
1725 + attr.toLowerCase() === "text" );
1726 + },
1727 +
1728 + // Position-in-collection
1729 + "first": createPositionalPseudo( function() {
1730 + return [ 0 ];
1731 + } ),
1732 +
1733 + "last": createPositionalPseudo( function( _matchIndexes, length ) {
1734 + return [ length - 1 ];
1735 + } ),
1736 +
1737 + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
1738 + return [ argument < 0 ? argument + length : argument ];
1739 + } ),
1740 +
1741 + "even": createPositionalPseudo( function( matchIndexes, length ) {
1742 + var i = 0;
1743 + for ( ; i < length; i += 2 ) {
1744 + matchIndexes.push( i );
1745 + }
1746 + return matchIndexes;
1747 + } ),
1748 +
1749 + "odd": createPositionalPseudo( function( matchIndexes, length ) {
1750 + var i = 1;
1751 + for ( ; i < length; i += 2 ) {
1752 + matchIndexes.push( i );
1753 + }
1754 + return matchIndexes;
1755 + } ),
1756 +
1757 + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
1758 + var i = argument < 0 ?
1759 + argument + length :
1760 + argument > length ?
1761 + length :
1762 + argument;
1763 + for ( ; --i >= 0; ) {
1764 + matchIndexes.push( i );
1765 + }
1766 + return matchIndexes;
1767 + } ),
1768 +
1769 + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
1770 + var i = argument < 0 ? argument + length : argument;
1771 + for ( ; ++i < length; ) {
1772 + matchIndexes.push( i );
1773 + }
1774 + return matchIndexes;
1775 + } )
1776 + }
1777 +};
1778 +
1779 +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
1780 +
1781 +// Add button/input type pseudos
1782 +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
1783 + Expr.pseudos[ i ] = createInputPseudo( i );
1784 +}
1785 +for ( i in { submit: true, reset: true } ) {
1786 + Expr.pseudos[ i ] = createButtonPseudo( i );
1787 +}
1788 +
1789 +// Easy API for creating new setFilters
1790 +function setFilters() {}
1791 +setFilters.prototype = Expr.filters = Expr.pseudos;
1792 +Expr.setFilters = new setFilters();
1793 +
1794 +tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
1795 + var matched, match, tokens, type,
1796 + soFar, groups, preFilters,
1797 + cached = tokenCache[ selector + " " ];
1798 +
1799 + if ( cached ) {
1800 + return parseOnly ? 0 : cached.slice( 0 );
1801 + }
1802 +
1803 + soFar = selector;
1804 + groups = [];
1805 + preFilters = Expr.preFilter;
1806 +
1807 + while ( soFar ) {
1808 +
1809 + // Comma and first run
1810 + if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
1811 + if ( match ) {
1812 +
1813 + // Don't consume trailing commas as valid
1814 + soFar = soFar.slice( match[ 0 ].length ) || soFar;
1815 + }
1816 + groups.push( ( tokens = [] ) );
1817 + }
1818 +
1819 + matched = false;
1820 +
1821 + // Combinators
1822 + if ( ( match = rcombinators.exec( soFar ) ) ) {
1823 + matched = match.shift();
1824 + tokens.push( {
1825 + value: matched,
1826 +
1827 + // Cast descendant combinators to space
1828 + type: match[ 0 ].replace( rtrim, " " )
1829 + } );
1830 + soFar = soFar.slice( matched.length );
1831 + }
1832 +
1833 + // Filters
1834 + for ( type in Expr.filter ) {
1835 + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
1836 + ( match = preFilters[ type ]( match ) ) ) ) {
1837 + matched = match.shift();
1838 + tokens.push( {
1839 + value: matched,
1840 + type: type,
1841 + matches: match
1842 + } );
1843 + soFar = soFar.slice( matched.length );
1844 + }
1845 + }
1846 +
1847 + if ( !matched ) {
1848 + break;
1849 + }
1850 + }
1851 +
1852 + // Return the length of the invalid excess
1853 + // if we're just parsing
1854 + // Otherwise, throw an error or return tokens
1855 + return parseOnly ?
1856 + soFar.length :
1857 + soFar ?
1858 + Sizzle.error( selector ) :
1859 +
1860 + // Cache the tokens
1861 + tokenCache( selector, groups ).slice( 0 );
1862 +};
1863 +
1864 +function toSelector( tokens ) {
1865 + var i = 0,
1866 + len = tokens.length,
1867 + selector = "";
1868 + for ( ; i < len; i++ ) {
1869 + selector += tokens[ i ].value;
1870 + }
1871 + return selector;
1872 +}
1873 +
1874 +function addCombinator( matcher, combinator, base ) {
1875 + var dir = combinator.dir,
1876 + skip = combinator.next,
1877 + key = skip || dir,
1878 + checkNonElements = base && key === "parentNode",
1879 + doneName = done++;
1880 +
1881 + return combinator.first ?
1882 +
1883 + // Check against closest ancestor/preceding element
1884 + function( elem, context, xml ) {
1885 + while ( ( elem = elem[ dir ] ) ) {
1886 + if ( elem.nodeType === 1 || checkNonElements ) {
1887 + return matcher( elem, context, xml );
1888 + }
1889 + }
1890 + return false;
1891 + } :
1892 +
1893 + // Check against all ancestor/preceding elements
1894 + function( elem, context, xml ) {
1895 + var oldCache, uniqueCache, outerCache,
1896 + newCache = [ dirruns, doneName ];
1897 +
1898 + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
1899 + if ( xml ) {
1900 + while ( ( elem = elem[ dir ] ) ) {
1901 + if ( elem.nodeType === 1 || checkNonElements ) {
1902 + if ( matcher( elem, context, xml ) ) {
1903 + return true;
1904 + }
1905 + }
1906 + }
1907 + } else {
1908 + while ( ( elem = elem[ dir ] ) ) {
1909 + if ( elem.nodeType === 1 || checkNonElements ) {
1910 + outerCache = elem[ expando ] || ( elem[ expando ] = {} );
1911 +
1912 + // Support: IE <9 only
1913 + // Defend against cloned attroperties (jQuery gh-1709)
1914 + uniqueCache = outerCache[ elem.uniqueID ] ||
1915 + ( outerCache[ elem.uniqueID ] = {} );
1916 +
1917 + if ( skip && skip === elem.nodeName.toLowerCase() ) {
1918 + elem = elem[ dir ] || elem;
1919 + } else if ( ( oldCache = uniqueCache[ key ] ) &&
1920 + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
1921 +
1922 + // Assign to newCache so results back-propagate to previous elements
1923 + return ( newCache[ 2 ] = oldCache[ 2 ] );
1924 + } else {
1925 +
1926 + // Reuse newcache so results back-propagate to previous elements
1927 + uniqueCache[ key ] = newCache;
1928 +
1929 + // A match means we're done; a fail means we have to keep checking
1930 + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
1931 + return true;
1932 + }
1933 + }
1934 + }
1935 + }
1936 + }
1937 + return false;
1938 + };
1939 +}
1940 +
1941 +function elementMatcher( matchers ) {
1942 + return matchers.length > 1 ?
1943 + function( elem, context, xml ) {
1944 + var i = matchers.length;
1945 + while ( i-- ) {
1946 + if ( !matchers[ i ]( elem, context, xml ) ) {
1947 + return false;
1948 + }
1949 + }
1950 + return true;
1951 + } :
1952 + matchers[ 0 ];
1953 +}
1954 +
1955 +function multipleContexts( selector, contexts, results ) {
1956 + var i = 0,
1957 + len = contexts.length;
1958 + for ( ; i < len; i++ ) {
1959 + Sizzle( selector, contexts[ i ], results );
1960 + }
1961 + return results;
1962 +}
1963 +
1964 +function condense( unmatched, map, filter, context, xml ) {
1965 + var elem,
1966 + newUnmatched = [],
1967 + i = 0,
1968 + len = unmatched.length,
1969 + mapped = map != null;
1970 +
1971 + for ( ; i < len; i++ ) {
1972 + if ( ( elem = unmatched[ i ] ) ) {
1973 + if ( !filter || filter( elem, context, xml ) ) {
1974 + newUnmatched.push( elem );
1975 + if ( mapped ) {
1976 + map.push( i );
1977 + }
1978 + }
1979 + }
1980 + }
1981 +
1982 + return newUnmatched;
1983 +}
1984 +
1985 +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
1986 + if ( postFilter && !postFilter[ expando ] ) {
1987 + postFilter = setMatcher( postFilter );
1988 + }
1989 + if ( postFinder && !postFinder[ expando ] ) {
1990 + postFinder = setMatcher( postFinder, postSelector );
1991 + }
1992 + return markFunction( function( seed, results, context, xml ) {
1993 + var temp, i, elem,
1994 + preMap = [],
1995 + postMap = [],
1996 + preexisting = results.length,
1997 +
1998 + // Get initial elements from seed or context
1999 + elems = seed || multipleContexts(
2000 + selector || "*",
2001 + context.nodeType ? [ context ] : context,
2002 + []
2003 + ),
2004 +
2005 + // Prefilter to get matcher input, preserving a map for seed-results synchronization
2006 + matcherIn = preFilter && ( seed || !selector ) ?
2007 + condense( elems, preMap, preFilter, context, xml ) :
2008 + elems,
2009 +
2010 + matcherOut = matcher ?
2011 +
2012 + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2013 + postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2014 +
2015 + // ...intermediate processing is necessary
2016 + [] :
2017 +
2018 + // ...otherwise use results directly
2019 + results :
2020 + matcherIn;
2021 +
2022 + // Find primary matches
2023 + if ( matcher ) {
2024 + matcher( matcherIn, matcherOut, context, xml );
2025 + }
2026 +
2027 + // Apply postFilter
2028 + if ( postFilter ) {
2029 + temp = condense( matcherOut, postMap );
2030 + postFilter( temp, [], context, xml );
2031 +
2032 + // Un-match failing elements by moving them back to matcherIn
2033 + i = temp.length;
2034 + while ( i-- ) {
2035 + if ( ( elem = temp[ i ] ) ) {
2036 + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
2037 + }
2038 + }
2039 + }
2040 +
2041 + if ( seed ) {
2042 + if ( postFinder || preFilter ) {
2043 + if ( postFinder ) {
2044 +
2045 + // Get the final matcherOut by condensing this intermediate into postFinder contexts
2046 + temp = [];
2047 + i = matcherOut.length;
2048 + while ( i-- ) {
2049 + if ( ( elem = matcherOut[ i ] ) ) {
2050 +
2051 + // Restore matcherIn since elem is not yet a final match
2052 + temp.push( ( matcherIn[ i ] = elem ) );
2053 + }
2054 + }
2055 + postFinder( null, ( matcherOut = [] ), temp, xml );
2056 + }
2057 +
2058 + // Move matched elements from seed to results to keep them synchronized
2059 + i = matcherOut.length;
2060 + while ( i-- ) {
2061 + if ( ( elem = matcherOut[ i ] ) &&
2062 + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
2063 +
2064 + seed[ temp ] = !( results[ temp ] = elem );
2065 + }
2066 + }
2067 + }
2068 +
2069 + // Add elements to results, through postFinder if defined
2070 + } else {
2071 + matcherOut = condense(
2072 + matcherOut === results ?
2073 + matcherOut.splice( preexisting, matcherOut.length ) :
2074 + matcherOut
2075 + );
2076 + if ( postFinder ) {
2077 + postFinder( null, results, matcherOut, xml );
2078 + } else {
2079 + push.apply( results, matcherOut );
2080 + }
2081 + }
2082 + } );
2083 +}
2084 +
2085 +function matcherFromTokens( tokens ) {
2086 + var checkContext, matcher, j,
2087 + len = tokens.length,
2088 + leadingRelative = Expr.relative[ tokens[ 0 ].type ],
2089 + implicitRelative = leadingRelative || Expr.relative[ " " ],
2090 + i = leadingRelative ? 1 : 0,
2091 +
2092 + // The foundational matcher ensures that elements are reachable from top-level context(s)
2093 + matchContext = addCombinator( function( elem ) {
2094 + return elem === checkContext;
2095 + }, implicitRelative, true ),
2096 + matchAnyContext = addCombinator( function( elem ) {
2097 + return indexOf( checkContext, elem ) > -1;
2098 + }, implicitRelative, true ),
2099 + matchers = [ function( elem, context, xml ) {
2100 + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2101 + ( checkContext = context ).nodeType ?
2102 + matchContext( elem, context, xml ) :
2103 + matchAnyContext( elem, context, xml ) );
2104 +
2105 + // Avoid hanging onto element (issue #299)
2106 + checkContext = null;
2107 + return ret;
2108 + } ];
2109 +
2110 + for ( ; i < len; i++ ) {
2111 + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
2112 + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
2113 + } else {
2114 + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
2115 +
2116 + // Return special upon seeing a positional matcher
2117 + if ( matcher[ expando ] ) {
2118 +
2119 + // Find the next relative operator (if any) for proper handling
2120 + j = ++i;
2121 + for ( ; j < len; j++ ) {
2122 + if ( Expr.relative[ tokens[ j ].type ] ) {
2123 + break;
2124 + }
2125 + }
2126 + return setMatcher(
2127 + i > 1 && elementMatcher( matchers ),
2128 + i > 1 && toSelector(
2129 +
2130 + // If the preceding token was a descendant combinator, insert an implicit any-element `*`
2131 + tokens
2132 + .slice( 0, i - 1 )
2133 + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
2134 + ).replace( rtrim, "$1" ),
2135 + matcher,
2136 + i < j && matcherFromTokens( tokens.slice( i, j ) ),
2137 + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
2138 + j < len && toSelector( tokens )
2139 + );
2140 + }
2141 + matchers.push( matcher );
2142 + }
2143 + }
2144 +
2145 + return elementMatcher( matchers );
2146 +}
2147 +
2148 +function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2149 + var bySet = setMatchers.length > 0,
2150 + byElement = elementMatchers.length > 0,
2151 + superMatcher = function( seed, context, xml, results, outermost ) {
2152 + var elem, j, matcher,
2153 + matchedCount = 0,
2154 + i = "0",
2155 + unmatched = seed && [],
2156 + setMatched = [],
2157 + contextBackup = outermostContext,
2158 +
2159 + // We must always have either seed elements or outermost context
2160 + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
2161 +
2162 + // Use integer dirruns iff this is the outermost matcher
2163 + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
2164 + len = elems.length;
2165 +
2166 + if ( outermost ) {
2167 +
2168 + // Support: IE 11+, Edge 17 - 18+
2169 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2170 + // two documents; shallow comparisons work.
2171 + // eslint-disable-next-line eqeqeq
2172 + outermostContext = context == document || context || outermost;
2173 + }
2174 +
2175 + // Add elements passing elementMatchers directly to results
2176 + // Support: IE<9, Safari
2177 + // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2178 + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
2179 + if ( byElement && elem ) {
2180 + j = 0;
2181 +
2182 + // Support: IE 11+, Edge 17 - 18+
2183 + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2184 + // two documents; shallow comparisons work.
2185 + // eslint-disable-next-line eqeqeq
2186 + if ( !context && elem.ownerDocument != document ) {
2187 + setDocument( elem );
2188 + xml = !documentIsHTML;
2189 + }
2190 + while ( ( matcher = elementMatchers[ j++ ] ) ) {
2191 + if ( matcher( elem, context || document, xml ) ) {
2192 + results.push( elem );
2193 + break;
2194 + }
2195 + }
2196 + if ( outermost ) {
2197 + dirruns = dirrunsUnique;
2198 + }
2199 + }
2200 +
2201 + // Track unmatched elements for set filters
2202 + if ( bySet ) {
2203 +
2204 + // They will have gone through all possible matchers
2205 + if ( ( elem = !matcher && elem ) ) {
2206 + matchedCount--;
2207 + }
2208 +
2209 + // Lengthen the array for every element, matched or not
2210 + if ( seed ) {
2211 + unmatched.push( elem );
2212 + }
2213 + }
2214 + }
2215 +
2216 + // `i` is now the count of elements visited above, and adding it to `matchedCount`
2217 + // makes the latter nonnegative.
2218 + matchedCount += i;
2219 +
2220 + // Apply set filters to unmatched elements
2221 + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2222 + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2223 + // no element matchers and no seed.
2224 + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2225 + // case, which will result in a "00" `matchedCount` that differs from `i` but is also
2226 + // numerically zero.
2227 + if ( bySet && i !== matchedCount ) {
2228 + j = 0;
2229 + while ( ( matcher = setMatchers[ j++ ] ) ) {
2230 + matcher( unmatched, setMatched, context, xml );
2231 + }
2232 +
2233 + if ( seed ) {
2234 +
2235 + // Reintegrate element matches to eliminate the need for sorting
2236 + if ( matchedCount > 0 ) {
2237 + while ( i-- ) {
2238 + if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
2239 + setMatched[ i ] = pop.call( results );
2240 + }
2241 + }
2242 + }
2243 +
2244 + // Discard index placeholder values to get only actual matches
2245 + setMatched = condense( setMatched );
2246 + }
2247 +
2248 + // Add matches to results
2249 + push.apply( results, setMatched );
2250 +
2251 + // Seedless set matches succeeding multiple successful matchers stipulate sorting
2252 + if ( outermost && !seed && setMatched.length > 0 &&
2253 + ( matchedCount + setMatchers.length ) > 1 ) {
2254 +
2255 + Sizzle.uniqueSort( results );
2256 + }
2257 + }
2258 +
2259 + // Override manipulation of globals by nested matchers
2260 + if ( outermost ) {
2261 + dirruns = dirrunsUnique;
2262 + outermostContext = contextBackup;
2263 + }
2264 +
2265 + return unmatched;
2266 + };
2267 +
2268 + return bySet ?
2269 + markFunction( superMatcher ) :
2270 + superMatcher;
2271 +}
2272 +
2273 +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2274 + var i,
2275 + setMatchers = [],
2276 + elementMatchers = [],
2277 + cached = compilerCache[ selector + " " ];
2278 +
2279 + if ( !cached ) {
2280 +
2281 + // Generate a function of recursive functions that can be used to check each element
2282 + if ( !match ) {
2283 + match = tokenize( selector );
2284 + }
2285 + i = match.length;
2286 + while ( i-- ) {
2287 + cached = matcherFromTokens( match[ i ] );
2288 + if ( cached[ expando ] ) {
2289 + setMatchers.push( cached );
2290 + } else {
2291 + elementMatchers.push( cached );
2292 + }
2293 + }
2294 +
2295 + // Cache the compiled function
2296 + cached = compilerCache(
2297 + selector,
2298 + matcherFromGroupMatchers( elementMatchers, setMatchers )
2299 + );
2300 +
2301 + // Save selector and tokenization
2302 + cached.selector = selector;
2303 + }
2304 + return cached;
2305 +};
2306 +
2307 +/**
2308 + * A low-level selection function that works with Sizzle's compiled
2309 + * selector functions
2310 + * @param {String|Function} selector A selector or a pre-compiled
2311 + * selector function built with Sizzle.compile
2312 + * @param {Element} context
2313 + * @param {Array} [results]
2314 + * @param {Array} [seed] A set of elements to match against
2315 + */
2316 +select = Sizzle.select = function( selector, context, results, seed ) {
2317 + var i, tokens, token, type, find,
2318 + compiled = typeof selector === "function" && selector,
2319 + match = !seed && tokenize( ( selector = compiled.selector || selector ) );
2320 +
2321 + results = results || [];
2322 +
2323 + // Try to minimize operations if there is only one selector in the list and no seed
2324 + // (the latter of which guarantees us context)
2325 + if ( match.length === 1 ) {
2326 +
2327 + // Reduce context if the leading compound selector is an ID
2328 + tokens = match[ 0 ] = match[ 0 ].slice( 0 );
2329 + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
2330 + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
2331 +
2332 + context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
2333 + .replace( runescape, funescape ), context ) || [] )[ 0 ];
2334 + if ( !context ) {
2335 + return results;
2336 +
2337 + // Precompiled matchers will still verify ancestry, so step up a level
2338 + } else if ( compiled ) {
2339 + context = context.parentNode;
2340 + }
2341 +
2342 + selector = selector.slice( tokens.shift().value.length );
2343 + }
2344 +
2345 + // Fetch a seed set for right-to-left matching
2346 + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
2347 + while ( i-- ) {
2348 + token = tokens[ i ];
2349 +
2350 + // Abort if we hit a combinator
2351 + if ( Expr.relative[ ( type = token.type ) ] ) {
2352 + break;
2353 + }
2354 + if ( ( find = Expr.find[ type ] ) ) {
2355 +
2356 + // Search, expanding context for leading sibling combinators
2357 + if ( ( seed = find(
2358 + token.matches[ 0 ].replace( runescape, funescape ),
2359 + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
2360 + context
2361 + ) ) ) {
2362 +
2363 + // If seed is empty or no tokens remain, we can return early
2364 + tokens.splice( i, 1 );
2365 + selector = seed.length && toSelector( tokens );
2366 + if ( !selector ) {
2367 + push.apply( results, seed );
2368 + return results;
2369 + }
2370 +
2371 + break;
2372 + }
2373 + }
2374 + }
2375 + }
2376 +
2377 + // Compile and execute a filtering function if one is not provided
2378 + // Provide `match` to avoid retokenization if we modified the selector above
2379 + ( compiled || compile( selector, match ) )(
2380 + seed,
2381 + context,
2382 + !documentIsHTML,
2383 + results,
2384 + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2385 + );
2386 + return results;
2387 +};
2388 +
2389 +// One-time assignments
2390 +
2391 +// Sort stability
2392 +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
2393 +
2394 +// Support: Chrome 14-35+
2395 +// Always assume duplicates if they aren't passed to the comparison function
2396 +support.detectDuplicates = !!hasDuplicate;
2397 +
2398 +// Initialize against the default document
2399 +setDocument();
2400 +
2401 +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2402 +// Detached nodes confoundingly follow *each other*
2403 +support.sortDetached = assert( function( el ) {
2404 +
2405 + // Should return 1, but returns 4 (following)
2406 + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
2407 +} );
2408 +
2409 +// Support: IE<8
2410 +// Prevent attribute/property "interpolation"
2411 +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2412 +if ( !assert( function( el ) {
2413 + el.innerHTML = "<a href='#'></a>";
2414 + return el.firstChild.getAttribute( "href" ) === "#";
2415 +} ) ) {
2416 + addHandle( "type|href|height|width", function( elem, name, isXML ) {
2417 + if ( !isXML ) {
2418 + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2419 + }
2420 + } );
2421 +}
2422 +
2423 +// Support: IE<9
2424 +// Use defaultValue in place of getAttribute("value")
2425 +if ( !support.attributes || !assert( function( el ) {
2426 + el.innerHTML = "<input/>";
2427 + el.firstChild.setAttribute( "value", "" );
2428 + return el.firstChild.getAttribute( "value" ) === "";
2429 +} ) ) {
2430 + addHandle( "value", function( elem, _name, isXML ) {
2431 + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2432 + return elem.defaultValue;
2433 + }
2434 + } );
2435 +}
2436 +
2437 +// Support: IE<9
2438 +// Use getAttributeNode to fetch booleans when getAttribute lies
2439 +if ( !assert( function( el ) {
2440 + return el.getAttribute( "disabled" ) == null;
2441 +} ) ) {
2442 + addHandle( booleans, function( elem, name, isXML ) {
2443 + var val;
2444 + if ( !isXML ) {
2445 + return elem[ name ] === true ? name.toLowerCase() :
2446 + ( val = elem.getAttributeNode( name ) ) && val.specified ?
2447 + val.value :
2448 + null;
2449 + }
2450 + } );
2451 +}
2452 +
2453 +// EXPOSE
2454 +var _sizzle = window.Sizzle;
2455 +
2456 +Sizzle.noConflict = function() {
2457 + if ( window.Sizzle === Sizzle ) {
2458 + window.Sizzle = _sizzle;
2459 + }
2460 +
2461 + return Sizzle;
2462 +};
2463 +
2464 +if ( typeof define === "function" && define.amd ) {
2465 + define( function() {
2466 + return Sizzle;
2467 + } );
2468 +
2469 +// Sizzle requires that there be a global window in Common-JS like environments
2470 +} else if ( typeof module !== "undefined" && module.exports ) {
2471 + module.exports = Sizzle;
2472 +} else {
2473 + window.Sizzle = Sizzle;
2474 +}
2475 +
2476 +// EXPOSE
2477 +
2478 +} )( window );
1 +/*! Sizzle v2.3.6 | (c) JS Foundation and other contributors | js.foundation */
2 +!function(e){var t,n,r,i,o,u,l,a,c,s,d,f,p,h,g,m,y,v,w,b="sizzle"+1*new Date,N=e.document,C=0,x=0,E=ae(),A=ae(),S=ae(),D=ae(),T=function(e,t){return e===t&&(d=!0),0},L={}.hasOwnProperty,q=[],I=q.pop,B=q.push,R=q.push,$=q.slice,k=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},H="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",P="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",z="\\["+M+"*("+P+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+P+"))|)"+M+"*\\]",F=":("+P+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+z+")*)|.*)\\)|)",O=new RegExp(M+"+","g"),j=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),G=new RegExp("^"+M+"*,"+M+"*"),U=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),V=new RegExp(M+"|>"),X=new RegExp(F),J=new RegExp("^"+P+"$"),K={ID:new RegExp("^#("+P+")"),CLASS:new RegExp("^\\.("+P+")"),TAG:new RegExp("^("+P+"|[*])"),ATTR:new RegExp("^"+z),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+H+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/HTML$/i,W=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){f()},ue=ve(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{R.apply(q=$.call(N.childNodes),N.childNodes),q[N.childNodes.length].nodeType}catch(e){R={apply:q.length?function(e,t){B.apply(e,$.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function le(e,t,r,i){var o,l,c,s,d,h,y,v=t&&t.ownerDocument,N=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==N&&9!==N&&11!==N)return r;if(!i&&(f(t),t=t||p,g)){if(11!==N&&(d=_.exec(e)))if(o=d[1]){if(9===N){if(!(c=t.getElementById(o)))return r;if(c.id===o)return r.push(c),r}else if(v&&(c=v.getElementById(o))&&w(t,c)&&c.id===o)return r.push(c),r}else{if(d[2])return R.apply(r,t.getElementsByTagName(e)),r;if((o=d[3])&&n.getElementsByClassName&&t.getElementsByClassName)return R.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!D[e+" "]&&(!m||!m.test(e))&&(1!==N||"object"!==t.nodeName.toLowerCase())){if(y=e,v=t,1===N&&(V.test(e)||U.test(e))){(v=ee.test(e)&&ge(t.parentNode)||t)===t&&n.scope||((s=t.getAttribute("id"))?s=s.replace(re,ie):t.setAttribute("id",s=b)),l=(h=u(e)).length;while(l--)h[l]=(s?"#"+s:":scope")+" "+ye(h[l]);y=h.join(",")}try{return R.apply(r,v.querySelectorAll(y)),r}catch(t){D(e,!0)}finally{s===b&&t.removeAttribute("id")}}}return a(e.replace(j,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function ce(e){return e[b]=!0,e}function se(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function de(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ue(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return ce(function(t){return t=+t,ce(function(n,r){var i,o=e([],n.length,t),u=o.length;while(u--)n[i=o[u]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&void 0!==e.getElementsByTagName&&e}n=le.support={},o=le.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Q.test(t||n&&n.nodeName||"HTML")},f=le.setDocument=function(e){var t,i,u=e?e.ownerDocument||e:N;return u!=p&&9===u.nodeType&&u.documentElement?(p=u,h=p.documentElement,g=!o(p),N!=p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",oe,!1):i.attachEvent&&i.attachEvent("onunload",oe)),n.scope=se(function(e){return h.appendChild(e).appendChild(p.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),n.attributes=se(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=se(function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Z.test(p.getElementsByClassName),n.getById=se(function(e){return h.appendChild(e).id=b,!p.getElementsByName||!p.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],m=[],(n.qsa=Z.test(p.querySelectorAll))&&(se(function(e){var t;h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+M+"*(?:value|"+H+")"),e.querySelectorAll("[id~="+b+"-]").length||m.push("~="),(t=p.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||m.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||m.push(".#.+[+~]"),e.querySelectorAll("\\\f"),m.push("[\\r\\n\\f]")}),se(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&m.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(n.matchesSelector=Z.test(v=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&se(function(e){n.disconnectedMatch=v.call(e,"*"),v.call(e,"[s!='']:x"),y.push("!=",F)}),m=m.length&&new RegExp(m.join("|")),y=y.length&&new RegExp(y.join("|")),t=Z.test(h.compareDocumentPosition),w=t||Z.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},T=t?function(e,t){if(e===t)return d=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==p||e.ownerDocument==N&&w(N,e)?-1:t==p||t.ownerDocument==N&&w(N,t)?1:s?k(s,e)-k(s,t):0:4&r?-1:1)}:function(e,t){if(e===t)return d=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,u=[e],l=[t];if(!i||!o)return e==p?-1:t==p?1:i?-1:o?1:s?k(s,e)-k(s,t):0;if(i===o)return fe(e,t);n=e;while(n=n.parentNode)u.unshift(n);n=t;while(n=n.parentNode)l.unshift(n);while(u[r]===l[r])r++;return r?fe(u[r],l[r]):u[r]==N?-1:l[r]==N?1:0},p):p},le.matches=function(e,t){return le(e,null,null,t)},le.matchesSelector=function(e,t){if(f(e),n.matchesSelector&&g&&!D[t+" "]&&(!y||!y.test(t))&&(!m||!m.test(t)))try{var r=v.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){D(t,!0)}return le(t,p,null,[e]).length>0},le.contains=function(e,t){return(e.ownerDocument||e)!=p&&f(e),w(e,t)},le.attr=function(e,t){(e.ownerDocument||e)!=p&&f(e);var i=r.attrHandle[t.toLowerCase()],o=i&&L.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},le.escape=function(e){return(e+"").replace(re,ie)},le.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},le.uniqueSort=function(e){var t,r=[],i=0,o=0;if(d=!n.detectDuplicates,s=!n.sortStable&&e.slice(0),e.sort(T),d){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return s=null,e},i=le.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=le.selectors={cacheLength:50,createPseudo:ce,match:K,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||le.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]&&le.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return K.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=u(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))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=le.attr(r,e);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.replace(O," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),u="last"!==e.slice(-4),l="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,a){var c,s,d,f,p,h,g=o!==u?"nextSibling":"previousSibling",m=t.parentNode,y=l&&t.nodeName.toLowerCase(),v=!a&&!l,w=!1;if(m){if(o){while(g){f=t;while(f=f[g])if(l?f.nodeName.toLowerCase()===y:1===f.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[u?m.firstChild:m.lastChild],u&&v){w=(p=(c=(s=(d=(f=m)[b]||(f[b]={}))[f.uniqueID]||(d[f.uniqueID]={}))[e]||[])[0]===C&&c[1])&&c[2],f=p&&m.childNodes[p];while(f=++p&&f&&f[g]||(w=p=0)||h.pop())if(1===f.nodeType&&++w&&f===t){s[e]=[C,p,w];break}}else if(v&&(w=p=(c=(s=(d=(f=t)[b]||(f[b]={}))[f.uniqueID]||(d[f.uniqueID]={}))[e]||[])[0]===C&&c[1]),!1===w)while(f=++p&&f&&f[g]||(w=p=0)||h.pop())if((l?f.nodeName.toLowerCase()===y:1===f.nodeType)&&++w&&(v&&((s=(d=f[b]||(f[b]={}))[f.uniqueID]||(d[f.uniqueID]={}))[e]=[C,w]),f===t))break;return(w-=i)===r||w%r==0&&w/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||le.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ce(function(e,n){var r,o=i(e,t),u=o.length;while(u--)e[r=k(e,o[u])]=!(n[r]=o[u])}):function(e){return i(e,0,n)}):i}},pseudos:{not:ce(function(e){var t=[],n=[],r=l(e.replace(j,"$1"));return r[b]?ce(function(e,t,n,i){var o,u=r(e,null,i,[]),l=e.length;while(l--)(o=u[l])&&(e[l]=!(t[l]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:ce(function(e){return function(t){return le(e,t).length>0}}),contains:ce(function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}}),lang:ce(function(e){return J.test(e||"")||le.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:pe(!1),disabled:pe(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return W.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n>t?t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=function(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=function(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}(t);function me(){}me.prototype=r.filters=r.pseudos,r.setFilters=new me,u=le.tokenize=function(e,t){var n,i,o,u,l,a,c,s=A[e+" "];if(s)return t?0:s.slice(0);l=e,a=[],c=r.preFilter;while(l){n&&!(i=G.exec(l))||(i&&(l=l.slice(i[0].length)||l),a.push(o=[])),n=!1,(i=U.exec(l))&&(n=i.shift(),o.push({value:n,type:i[0].replace(j," ")}),l=l.slice(n.length));for(u in r.filter)!(i=K[u].exec(l))||c[u]&&!(i=c[u](i))||(n=i.shift(),o.push({value:n,type:u,matches:i}),l=l.slice(n.length));if(!n)break}return t?l.length:l?le.error(e):A(e,a).slice(0)};function ye(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function ve(e,t,n){var r=t.dir,i=t.next,o=i||r,u=n&&"parentNode"===o,l=x++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||u)return e(t,n,i);return!1}:function(t,n,a){var c,s,d,f=[C,l];if(a){while(t=t[r])if((1===t.nodeType||u)&&e(t,n,a))return!0}else while(t=t[r])if(1===t.nodeType||u)if(d=t[b]||(t[b]={}),s=d[t.uniqueID]||(d[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((c=s[o])&&c[0]===C&&c[1]===l)return f[2]=c[2];if(s[o]=f,f[2]=e(t,n,a))return!0}return!1}}function we(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)le(e,t[r],n);return n}function Ne(e,t,n,r,i){for(var o,u=[],l=0,a=e.length,c=null!=t;l<a;l++)(o=e[l])&&(n&&!n(o,r,i)||(u.push(o),c&&t.push(l)));return u}function Ce(e,t,n,r,i,o){return r&&!r[b]&&(r=Ce(r)),i&&!i[b]&&(i=Ce(i,o)),ce(function(o,u,l,a){var c,s,d,f=[],p=[],h=u.length,g=o||be(t||"*",l.nodeType?[l]:l,[]),m=!e||!o&&t?g:Ne(g,f,e,l,a),y=n?i||(o?e:h||r)?[]:u:m;if(n&&n(m,y,l,a),r){c=Ne(y,p),r(c,[],l,a),s=c.length;while(s--)(d=c[s])&&(y[p[s]]=!(m[p[s]]=d))}if(o){if(i||e){if(i){c=[],s=y.length;while(s--)(d=y[s])&&c.push(m[s]=d);i(null,y=[],c,a)}s=y.length;while(s--)(d=y[s])&&(c=i?k(o,d):f[s])>-1&&(o[c]=!(u[c]=d))}}else y=Ne(y===u?y.splice(h,y.length):y),i?i(null,u,y,a):R.apply(u,y)})}function xe(e){for(var t,n,i,o=e.length,u=r.relative[e[0].type],l=u||r.relative[" "],a=u?1:0,s=ve(function(e){return e===t},l,!0),d=ve(function(e){return k(t,e)>-1},l,!0),f=[function(e,n,r){var i=!u&&(r||n!==c)||((t=n).nodeType?s(e,n,r):d(e,n,r));return t=null,i}];a<o;a++)if(n=r.relative[e[a].type])f=[ve(we(f),n)];else{if((n=r.filter[e[a].type].apply(null,e[a].matches))[b]){for(i=++a;i<o;i++)if(r.relative[e[i].type])break;return Ce(a>1&&we(f),a>1&&ye(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(j,"$1"),n,a<i&&xe(e.slice(a,i)),i<o&&xe(e=e.slice(i)),i<o&&ye(e))}f.push(n)}return we(f)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,u,l,a,s){var d,h,m,y=0,v="0",w=o&&[],b=[],N=c,x=o||i&&r.find.TAG("*",s),E=C+=null==N?1:Math.random()||.1,A=x.length;for(s&&(c=u==p||u||s);v!==A&&null!=(d=x[v]);v++){if(i&&d){h=0,u||d.ownerDocument==p||(f(d),l=!g);while(m=e[h++])if(m(d,u||p,l)){a.push(d);break}s&&(C=E)}n&&((d=!m&&d)&&y--,o&&w.push(d))}if(y+=v,n&&v!==y){h=0;while(m=t[h++])m(w,b,u,l);if(o){if(y>0)while(v--)w[v]||b[v]||(b[v]=I.call(a));b=Ne(b)}R.apply(a,b),s&&!o&&b.length>0&&y+t.length>1&&le.uniqueSort(a)}return s&&(C=E,c=N),w};return n?ce(o):o}l=le.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=u(e)),n=t.length;while(n--)(o=xe(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},a=le.select=function(e,t,n,i){var o,a,c,s,d,f="function"==typeof e&&e,p=!i&&u(e=f.selector||e);if(n=n||[],1===p.length){if((a=p[0]=p[0].slice(0)).length>2&&"ID"===(c=a[0]).type&&9===t.nodeType&&g&&r.relative[a[1].type]){if(!(t=(r.find.ID(c.matches[0].replace(te,ne),t)||[])[0]))return n;f&&(t=t.parentNode),e=e.slice(a.shift().value.length)}o=K.needsContext.test(e)?0:a.length;while(o--){if(c=a[o],r.relative[s=c.type])break;if((d=r.find[s])&&(i=d(c.matches[0].replace(te,ne),ee.test(a[0].type)&&ge(t.parentNode)||t))){if(a.splice(o,1),!(e=i.length&&ye(a)))return R.apply(n,i),n;break}}}return(f||l(e,p))(i,t,!g,n,!t||ee.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(T).join("")===b,n.detectDuplicates=!!d,f(),n.sortDetached=se(function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))}),se(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||de("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&se(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||de("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),se(function(e){return null==e.getAttribute("disabled")})||de(H,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null});var Ae=e.Sizzle;le.noConflict=function(){return e.Sizzle===le&&(e.Sizzle=Ae),le},"function"==typeof define&&define.amd?define(function(){return le}):"undefined"!=typeof module&&module.exports?module.exports=le:e.Sizzle=le}(window);
3 +//# sourceMappingURL=sizzle.min.map
...\ No newline at end of file ...\ No newline at end of file
1 +{"version":3,"sources":["sizzle.js"],"names":["window","i","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","expando","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","hasOwn","hasOwnProperty","arr","pop","pushNative","push","slice","indexOf","list","elem","len","length","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","toString","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","toLowerCase","dir","next","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","parentNode","scope","getAttribute","replace","setAttribute","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","el","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","node","hasCompare","subWindow","doc","defaultView","top","addEventListener","attachEvent","appendChild","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","elems","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","name","val","undefined","specified","sel","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","type","what","_argument","last","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","_matchIndexes","eq","even","odd","lt","gt","radio","checkbox","file","password","image","createInputPseudo","submit","reset","createButtonPseudo","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","_name","defaultValue","_sizzle","noConflict","define","amd","module","exports"],"mappings":";CAUA,SAAYA,GACZ,IAAIC,EACHC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EAAU,SAAW,EAAI,IAAIC,KAC7BC,EAAetB,EAAOa,SACtBU,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBI,EAAY,SAAUC,EAAGC,GAIxB,OAHKD,IAAMC,IACVrB,GAAe,GAET,GAIRsB,KAAgBC,eAChBC,KACAC,EAAMD,EAAIC,IACVC,EAAaF,EAAIG,KACjBA,EAAOH,EAAIG,KACXC,EAAQJ,EAAII,MAIZC,EAAU,SAAUC,EAAMC,GAGzB,IAFA,IAAIzC,EAAI,EACP0C,EAAMF,EAAKG,OACJ3C,EAAI0C,EAAK1C,IAChB,GAAKwC,EAAMxC,KAAQyC,EAClB,OAAOzC,EAGT,OAAQ,GAGT4C,EAAW,6HAMXC,EAAa,sBAGbC,EAAa,0BAA4BD,EACxC,0CAGDE,EAAa,MAAQF,EAAa,KAAOC,EAAa,OAASD,EAG9D,gBAAkBA,EAIlB,2DAA6DC,EAAa,OAC1ED,EAAa,OAEdG,EAAU,KAAOF,EAAa,wFAOAC,EAAa,eAO3CE,EAAc,IAAIC,OAAQL,EAAa,IAAK,KAC5CM,EAAQ,IAAID,OAAQ,IAAML,EAAa,8BACtCA,EAAa,KAAM,KAEpBO,EAAS,IAAIF,OAAQ,IAAML,EAAa,KAAOA,EAAa,KAC5DQ,EAAe,IAAIH,OAAQ,IAAML,EAAa,WAAaA,EAAa,IAAMA,EAC7E,KACDS,EAAW,IAAIJ,OAAQL,EAAa,MAEpCU,EAAU,IAAIL,OAAQF,GACtBQ,EAAc,IAAIN,OAAQ,IAAMJ,EAAa,KAE7CW,GACCC,GAAM,IAAIR,OAAQ,MAAQJ,EAAa,KACvCa,MAAS,IAAIT,OAAQ,QAAUJ,EAAa,KAC5Cc,IAAO,IAAIV,OAAQ,KAAOJ,EAAa,SACvCe,KAAQ,IAAIX,OAAQ,IAAMH,GAC1Be,OAAU,IAAIZ,OAAQ,IAAMF,GAC5Be,MAAS,IAAIb,OAAQ,yDACpBL,EAAa,+BAAiCA,EAAa,cAC3DA,EAAa,aAAeA,EAAa,SAAU,KACpDmB,KAAQ,IAAId,OAAQ,OAASN,EAAW,KAAM,KAI9CqB,aAAgB,IAAIf,OAAQ,IAAML,EACjC,mDAAqDA,EACrD,mBAAqBA,EAAa,mBAAoB,MAGxDqB,EAAQ,SACRC,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OAIXC,GAAY,IAAItB,OAAQ,uBAAyBL,EAAa,uBAAwB,KACtF4B,GAAY,SAAUC,EAAQC,GAC7B,IAAIC,EAAO,KAAOF,EAAOpC,MAAO,GAAM,MAEtC,OAAOqC,IASNC,EAAO,EACNC,OAAOC,aAAcF,EAAO,OAC5BC,OAAOC,aAAcF,GAAQ,GAAK,MAAe,KAAPA,EAAe,SAK5DG,GAAa,sDACbC,GAAa,SAAUC,EAAIC,GAC1B,OAAKA,EAGQ,OAAPD,EACG,SAIDA,EAAG3C,MAAO,GAAI,GAAM,KAC1B2C,EAAGE,WAAYF,EAAGtC,OAAS,GAAIyC,SAAU,IAAO,IAI3C,KAAOH,GAOfI,GAAgB,WACf1E,KAGD2E,GAAqBC,GACpB,SAAU9C,GACT,OAAyB,IAAlBA,EAAK+C,UAAqD,aAAhC/C,EAAKgD,SAASC,gBAE9CC,IAAK,aAAcC,KAAM,WAI7B,IACCvD,EAAKwD,MACF3D,EAAMI,EAAMwD,KAAMzE,EAAa0E,YACjC1E,EAAa0E,YAMd7D,EAAKb,EAAa0E,WAAWpD,QAASqD,SACrC,MAAQC,GACT5D,GAASwD,MAAO3D,EAAIS,OAGnB,SAAUuD,EAAQC,GACjB/D,EAAWyD,MAAOK,EAAQ5D,EAAMwD,KAAMK,KAKvC,SAAUD,EAAQC,GACjB,IAAIC,EAAIF,EAAOvD,OACd3C,EAAI,EAGL,MAAUkG,EAAQE,KAAQD,EAAKnG,MAC/BkG,EAAOvD,OAASyD,EAAI,IAKvB,SAASC,GAAQC,EAAUC,EAASC,EAASC,GAC5C,IAAIC,EAAG1G,EAAGyC,EAAMkE,EAAKC,EAAOC,EAAQC,EACnCC,EAAaR,GAAWA,EAAQS,cAGhChB,EAAWO,EAAUA,EAAQP,SAAW,EAKzC,GAHAQ,EAAUA,MAGe,iBAAbF,IAA0BA,GACxB,IAAbN,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAOQ,EAIR,IAAMC,IACL9F,EAAa4F,GACbA,EAAUA,GAAW3F,EAEhBE,GAAiB,CAIrB,GAAkB,KAAbkF,IAAqBY,EAAQtC,EAAW2C,KAAMX,IAGlD,GAAOI,EAAIE,EAAO,IAGjB,GAAkB,IAAbZ,EAAiB,CACrB,KAAOvD,EAAO8D,EAAQW,eAAgBR,IAUrC,OAAOF,EALP,GAAK/D,EAAK0E,KAAOT,EAEhB,OADAF,EAAQnE,KAAMI,GACP+D,OAYT,GAAKO,IAAgBtE,EAAOsE,EAAWG,eAAgBR,KACtDxF,EAAUqF,EAAS9D,IACnBA,EAAK0E,KAAOT,EAGZ,OADAF,EAAQnE,KAAMI,GACP+D,MAKH,CAAA,GAAKI,EAAO,GAElB,OADAvE,EAAKwD,MAAOW,EAASD,EAAQa,qBAAsBd,IAC5CE,EAGD,IAAOE,EAAIE,EAAO,KAAS3G,EAAQoH,wBACzCd,EAAQc,uBAGR,OADAhF,EAAKwD,MAAOW,EAASD,EAAQc,uBAAwBX,IAC9CF,EAKT,GAAKvG,EAAQqH,MACX1F,EAAwB0E,EAAW,QACjCvF,IAAcA,EAAUwG,KAAMjB,MAIlB,IAAbN,GAAqD,WAAnCO,EAAQd,SAASC,eAA+B,CAYpE,GAVAoB,EAAcR,EACdS,EAAaR,EASK,IAAbP,IACF1C,EAASiE,KAAMjB,IAAcjD,EAAakE,KAAMjB,IAAe,EAGjES,EAAaxC,GAASgD,KAAMjB,IAAckB,GAAajB,EAAQkB,aAC9DlB,KAImBA,GAAYtG,EAAQyH,SAGhCf,EAAMJ,EAAQoB,aAAc,OAClChB,EAAMA,EAAIiB,QAAS7C,GAAYC,IAE/BuB,EAAQsB,aAAc,KAAQlB,EAAMxF,IAMtCnB,GADA6G,EAASxG,EAAUiG,IACR3D,OACX,MAAQ3C,IACP6G,EAAQ7G,IAAQ2G,EAAM,IAAMA,EAAM,UAAa,IAC9CmB,GAAYjB,EAAQ7G,IAEtB8G,EAAcD,EAAOkB,KAAM,KAG5B,IAIC,OAHA1F,EAAKwD,MAAOW,EACXO,EAAWiB,iBAAkBlB,IAEvBN,EACN,MAAQyB,GACTrG,EAAwB0E,GAAU,GACjC,QACIK,IAAQxF,GACZoF,EAAQ2B,gBAAiB,QAQ9B,OAAO3H,EAAQ+F,EAASsB,QAASzE,EAAO,MAAQoD,EAASC,EAASC,GASnE,SAAShF,KACR,IAAI0G,KAEJ,SAASC,EAAOC,EAAKC,GAQpB,OALKH,EAAK9F,KAAMgG,EAAM,KAAQnI,EAAKqI,oBAG3BH,EAAOD,EAAKK,SAEXJ,EAAOC,EAAM,KAAQC,EAE/B,OAAOF,EAOR,SAASK,GAAcC,GAEtB,OADAA,EAAIvH,IAAY,EACTuH,EAOR,SAASC,GAAQD,GAChB,IAAIE,EAAKhI,EAASiI,cAAe,YAEjC,IACC,QAASH,EAAIE,GACZ,MAAQ3C,GACT,OAAO,EACN,QAGI2C,EAAGnB,YACPmB,EAAGnB,WAAWqB,YAAaF,GAI5BA,EAAK,MASP,SAASG,GAAWC,EAAOC,GAC1B,IAAI/G,EAAM8G,EAAME,MAAO,KACtBlJ,EAAIkC,EAAIS,OAET,MAAQ3C,IACPE,EAAKiJ,WAAYjH,EAAKlC,IAAQiJ,EAUhC,SAASG,GAActH,EAAGC,GACzB,IAAIsH,EAAMtH,GAAKD,EACdwH,EAAOD,GAAsB,IAAfvH,EAAEkE,UAAiC,IAAfjE,EAAEiE,UACnClE,EAAEyH,YAAcxH,EAAEwH,YAGpB,GAAKD,EACJ,OAAOA,EAIR,GAAKD,EACJ,MAAUA,EAAMA,EAAIG,YACnB,GAAKH,IAAQtH,EACZ,OAAQ,EAKX,OAAOD,EAAI,GAAK,EA6BjB,SAAS2H,GAAsBjE,GAG9B,OAAO,SAAU/C,GAKhB,MAAK,SAAUA,EASTA,EAAKgF,aAAgC,IAAlBhF,EAAK+C,SAGvB,UAAW/C,EACV,UAAWA,EAAKgF,WACbhF,EAAKgF,WAAWjC,WAAaA,EAE7B/C,EAAK+C,WAAaA,EAMpB/C,EAAKiH,aAAelE,GAI1B/C,EAAKiH,cAAgBlE,GACrBF,GAAoB7C,KAAW+C,EAG1B/C,EAAK+C,WAAaA,EAKd,UAAW/C,GACfA,EAAK+C,WAAaA,GAY5B,SAASmE,GAAwBjB,GAChC,OAAOD,GAAc,SAAUmB,GAE9B,OADAA,GAAYA,EACLnB,GAAc,SAAUhC,EAAMxF,GACpC,IAAImF,EACHyD,EAAenB,KAAQjC,EAAK9D,OAAQiH,GACpC5J,EAAI6J,EAAalH,OAGlB,MAAQ3C,IACFyG,EAAQL,EAAIyD,EAAc7J,MAC9ByG,EAAML,KAASnF,EAASmF,GAAMK,EAAML,SAYzC,SAASoB,GAAajB,GACrB,OAAOA,QAAmD,IAAjCA,EAAQa,sBAAwCb,EAI1EtG,EAAUoG,GAAOpG,WAOjBG,EAAQiG,GAAOjG,MAAQ,SAAUqC,GAChC,IAAIqH,EAAYrH,GAAQA,EAAKsH,aAC5BlJ,EAAU4B,IAAUA,EAAKuE,eAAiBvE,GAAOuH,gBAKlD,OAAQ9F,EAAMqD,KAAMuC,GAAajJ,GAAWA,EAAQ4E,UAAY,SAQjE9E,EAAc0F,GAAO1F,YAAc,SAAUsJ,GAC5C,IAAIC,EAAYC,EACfC,EAAMH,EAAOA,EAAKjD,eAAiBiD,EAAO5I,EAO3C,OAAK+I,GAAOxJ,GAA6B,IAAjBwJ,EAAIpE,UAAmBoE,EAAIJ,iBAKnDpJ,EAAWwJ,EACXvJ,EAAUD,EAASoJ,gBACnBlJ,GAAkBV,EAAOQ,GAQpBS,GAAgBT,IAClBuJ,EAAYvJ,EAASyJ,cAAiBF,EAAUG,MAAQH,IAGrDA,EAAUI,iBACdJ,EAAUI,iBAAkB,SAAUlF,IAAe,GAG1C8E,EAAUK,aACrBL,EAAUK,YAAa,WAAYnF,KASrCpF,EAAQyH,MAAQiB,GAAQ,SAAUC,GAEjC,OADA/H,EAAQ4J,YAAa7B,GAAK6B,YAAa7J,EAASiI,cAAe,aACzB,IAAxBD,EAAGZ,mBACfY,EAAGZ,iBAAkB,uBAAwBrF,SAShD1C,EAAQ8C,WAAa4F,GAAQ,SAAUC,GAEtC,OADAA,EAAG8B,UAAY,KACP9B,EAAGjB,aAAc,eAO1B1H,EAAQmH,qBAAuBuB,GAAQ,SAAUC,GAEhD,OADAA,EAAG6B,YAAa7J,EAAS+J,cAAe,MAChC/B,EAAGxB,qBAAsB,KAAMzE,SAIxC1C,EAAQoH,uBAAyBhD,EAAQkD,KAAM3G,EAASyG,wBAMxDpH,EAAQ2K,QAAUjC,GAAQ,SAAUC,GAEnC,OADA/H,EAAQ4J,YAAa7B,GAAKzB,GAAKhG,GACvBP,EAASiK,oBAAsBjK,EAASiK,kBAAmB1J,GAAUwB,SAIzE1C,EAAQ2K,SACZ1K,EAAK4K,OAAa,GAAI,SAAU3D,GAC/B,IAAI4D,EAAS5D,EAAGS,QAASpD,GAAWC,IACpC,OAAO,SAAUhC,GAChB,OAAOA,EAAKkF,aAAc,QAAWoD,IAGvC7K,EAAK8K,KAAW,GAAI,SAAU7D,EAAIZ,GACjC,QAAuC,IAA3BA,EAAQW,gBAAkCpG,EAAiB,CACtE,IAAI2B,EAAO8D,EAAQW,eAAgBC,GACnC,OAAO1E,GAASA,UAIlBvC,EAAK4K,OAAa,GAAK,SAAU3D,GAChC,IAAI4D,EAAS5D,EAAGS,QAASpD,GAAWC,IACpC,OAAO,SAAUhC,GAChB,IAAIwH,OAAwC,IAA1BxH,EAAKwI,kBACtBxI,EAAKwI,iBAAkB,MACxB,OAAOhB,GAAQA,EAAK3B,QAAUyC,IAMhC7K,EAAK8K,KAAW,GAAI,SAAU7D,EAAIZ,GACjC,QAAuC,IAA3BA,EAAQW,gBAAkCpG,EAAiB,CACtE,IAAImJ,EAAMjK,EAAGkL,EACZzI,EAAO8D,EAAQW,eAAgBC,GAEhC,GAAK1E,EAAO,CAIX,IADAwH,EAAOxH,EAAKwI,iBAAkB,QACjBhB,EAAK3B,QAAUnB,EAC3B,OAAS1E,GAIVyI,EAAQ3E,EAAQsE,kBAAmB1D,GACnCnH,EAAI,EACJ,MAAUyC,EAAOyI,EAAOlL,KAEvB,IADAiK,EAAOxH,EAAKwI,iBAAkB,QACjBhB,EAAK3B,QAAUnB,EAC3B,OAAS1E,GAKZ,YAMHvC,EAAK8K,KAAY,IAAI/K,EAAQmH,qBAC5B,SAAU+D,EAAK5E,GACd,YAA6C,IAAjCA,EAAQa,qBACZb,EAAQa,qBAAsB+D,GAG1BlL,EAAQqH,IACZf,EAAQyB,iBAAkBmD,QAD3B,GAKR,SAAUA,EAAK5E,GACd,IAAI9D,EACH2I,KACApL,EAAI,EAGJwG,EAAUD,EAAQa,qBAAsB+D,GAGzC,GAAa,MAARA,EAAc,CAClB,MAAU1I,EAAO+D,EAASxG,KACF,IAAlByC,EAAKuD,UACToF,EAAI/I,KAAMI,GAIZ,OAAO2I,EAER,OAAO5E,GAITtG,EAAK8K,KAAc,MAAI/K,EAAQoH,wBAA0B,SAAUqD,EAAWnE,GAC7E,QAA+C,IAAnCA,EAAQc,wBAA0CvG,EAC7D,OAAOyF,EAAQc,uBAAwBqD,IAUzC1J,KAOAD,MAEOd,EAAQqH,IAAMjD,EAAQkD,KAAM3G,EAASoH,qBAI3CW,GAAQ,SAAUC,GAEjB,IAAIyC,EAOJxK,EAAQ4J,YAAa7B,GAAK0C,UAAY,UAAYnK,EAAU,qBAC1CA,EAAU,kEAOvByH,EAAGZ,iBAAkB,wBAAyBrF,QAClD5B,EAAUsB,KAAM,SAAWQ,EAAa,gBAKnC+F,EAAGZ,iBAAkB,cAAerF,QACzC5B,EAAUsB,KAAM,MAAQQ,EAAa,aAAeD,EAAW,KAI1DgG,EAAGZ,iBAAkB,QAAU7G,EAAU,MAAOwB,QACrD5B,EAAUsB,KAAM,OAQjBgJ,EAAQzK,EAASiI,cAAe,UAC1BhB,aAAc,OAAQ,IAC5Be,EAAG6B,YAAaY,GACVzC,EAAGZ,iBAAkB,aAAcrF,QACxC5B,EAAUsB,KAAM,MAAQQ,EAAa,QAAUA,EAAa,KAC3DA,EAAa,gBAMT+F,EAAGZ,iBAAkB,YAAarF,QACvC5B,EAAUsB,KAAM,YAMXuG,EAAGZ,iBAAkB,KAAO7G,EAAU,MAAOwB,QAClD5B,EAAUsB,KAAM,YAKjBuG,EAAGZ,iBAAkB,QACrBjH,EAAUsB,KAAM,iBAGjBsG,GAAQ,SAAUC,GACjBA,EAAG0C,UAAY,oFAKf,IAAID,EAAQzK,EAASiI,cAAe,SACpCwC,EAAMxD,aAAc,OAAQ,UAC5Be,EAAG6B,YAAaY,GAAQxD,aAAc,OAAQ,KAIzCe,EAAGZ,iBAAkB,YAAarF,QACtC5B,EAAUsB,KAAM,OAASQ,EAAa,eAKW,IAA7C+F,EAAGZ,iBAAkB,YAAarF,QACtC5B,EAAUsB,KAAM,WAAY,aAK7BxB,EAAQ4J,YAAa7B,GAAKpD,UAAW,EACc,IAA9CoD,EAAGZ,iBAAkB,aAAcrF,QACvC5B,EAAUsB,KAAM,WAAY,aAK7BuG,EAAGZ,iBAAkB,QACrBjH,EAAUsB,KAAM,YAIXpC,EAAQsL,gBAAkBlH,EAAQkD,KAAQtG,EAAUJ,EAAQI,SAClEJ,EAAQ2K,uBACR3K,EAAQ4K,oBACR5K,EAAQ6K,kBACR7K,EAAQ8K,qBAERhD,GAAQ,SAAUC,GAIjB3I,EAAQ2L,kBAAoB3K,EAAQ6E,KAAM8C,EAAI,KAI9C3H,EAAQ6E,KAAM8C,EAAI,aAClB5H,EAAcqB,KAAM,KAAMW,KAI5BjC,EAAYA,EAAU4B,QAAU,IAAIO,OAAQnC,EAAUgH,KAAM,MAC5D/G,EAAgBA,EAAc2B,QAAU,IAAIO,OAAQlC,EAAc+G,KAAM,MAIxEmC,EAAa7F,EAAQkD,KAAM1G,EAAQgL,yBAKnC3K,EAAWgJ,GAAc7F,EAAQkD,KAAM1G,EAAQK,UAC9C,SAAUY,EAAGC,GACZ,IAAI+J,EAAuB,IAAfhK,EAAEkE,SAAiBlE,EAAEkI,gBAAkBlI,EAClDiK,EAAMhK,GAAKA,EAAE0F,WACd,OAAO3F,IAAMiK,MAAWA,GAAwB,IAAjBA,EAAI/F,YAClC8F,EAAM5K,SACL4K,EAAM5K,SAAU6K,GAChBjK,EAAE+J,yBAA8D,GAAnC/J,EAAE+J,wBAAyBE,MAG3D,SAAUjK,EAAGC,GACZ,GAAKA,EACJ,MAAUA,EAAIA,EAAE0F,WACf,GAAK1F,IAAMD,EACV,OAAO,EAIV,OAAO,GAOTD,EAAYqI,EACZ,SAAUpI,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,OADArB,GAAe,EACR,EAIR,IAAIsL,GAAWlK,EAAE+J,yBAA2B9J,EAAE8J,wBAC9C,OAAKG,IAgBU,GAPfA,GAAYlK,EAAEkF,eAAiBlF,KAASC,EAAEiF,eAAiBjF,GAC1DD,EAAE+J,wBAAyB9J,GAG3B,KAIG9B,EAAQgM,cAAgBlK,EAAE8J,wBAAyB/J,KAAQkK,EAOzDlK,GAAKlB,GAAYkB,EAAEkF,eAAiB3F,GACxCH,EAAUG,EAAcS,IAChB,EAOJC,GAAKnB,GAAYmB,EAAEiF,eAAiB3F,GACxCH,EAAUG,EAAcU,GACjB,EAIDtB,EACJ8B,EAAS9B,EAAWqB,GAAMS,EAAS9B,EAAWsB,GAChD,EAGe,EAAViK,GAAe,EAAI,IAE3B,SAAUlK,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,OADArB,GAAe,EACR,EAGR,IAAI2I,EACHrJ,EAAI,EACJkM,EAAMpK,EAAE2F,WACRsE,EAAMhK,EAAE0F,WACR0E,GAAOrK,GACPsK,GAAOrK,GAGR,IAAMmK,IAAQH,EAMb,OAAOjK,GAAKlB,GAAY,EACvBmB,GAAKnB,EAAW,EAEhBsL,GAAO,EACPH,EAAM,EACNtL,EACE8B,EAAS9B,EAAWqB,GAAMS,EAAS9B,EAAWsB,GAChD,EAGK,GAAKmK,IAAQH,EACnB,OAAO3C,GAActH,EAAGC,GAIzBsH,EAAMvH,EACN,MAAUuH,EAAMA,EAAI5B,WACnB0E,EAAGE,QAAShD,GAEbA,EAAMtH,EACN,MAAUsH,EAAMA,EAAI5B,WACnB2E,EAAGC,QAAShD,GAIb,MAAQ8C,EAAInM,KAAQoM,EAAIpM,GACvBA,IAGD,OAAOA,EAGNoJ,GAAc+C,EAAInM,GAAKoM,EAAIpM,IAO3BmM,EAAInM,IAAOqB,GAAgB,EAC3B+K,EAAIpM,IAAOqB,EAAe,EAE1B,GAGKT,GA/cCA,GAkdTyF,GAAOpF,QAAU,SAAUqL,EAAMC,GAChC,OAAOlG,GAAQiG,EAAM,KAAM,KAAMC,IAGlClG,GAAOkF,gBAAkB,SAAU9I,EAAM6J,GAGxC,GAFA3L,EAAa8B,GAERxC,EAAQsL,iBAAmBzK,IAC9Bc,EAAwB0K,EAAO,QAC7BtL,IAAkBA,EAAcuG,KAAM+E,OACtCvL,IAAkBA,EAAUwG,KAAM+E,IAErC,IACC,IAAIE,EAAMvL,EAAQ6E,KAAMrD,EAAM6J,GAG9B,GAAKE,GAAOvM,EAAQ2L,mBAInBnJ,EAAK7B,UAAuC,KAA3B6B,EAAK7B,SAASoF,SAC/B,OAAOwG,EAEP,MAAQvG,GACTrE,EAAwB0K,GAAM,GAIhC,OAAOjG,GAAQiG,EAAM1L,EAAU,MAAQ6B,IAASE,OAAS,GAG1D0D,GAAOnF,SAAW,SAAUqF,EAAS9D,GAUpC,OAHO8D,EAAQS,eAAiBT,IAAa3F,GAC5CD,EAAa4F,GAEPrF,EAAUqF,EAAS9D,IAG3B4D,GAAOoG,KAAO,SAAUhK,EAAMiK,IAOtBjK,EAAKuE,eAAiBvE,IAAU7B,GACtCD,EAAa8B,GAGd,IAAIiG,EAAKxI,EAAKiJ,WAAYuD,EAAKhH,eAG9BiH,EAAMjE,GAAM1G,EAAO8D,KAAM5F,EAAKiJ,WAAYuD,EAAKhH,eAC9CgD,EAAIjG,EAAMiK,GAAO5L,QACjB8L,EAEF,YAAeA,IAARD,EACNA,EACA1M,EAAQ8C,aAAejC,EACtB2B,EAAKkF,aAAc+E,IACjBC,EAAMlK,EAAKwI,iBAAkByB,KAAYC,EAAIE,UAC9CF,EAAIrE,MACJ,MAGJjC,GAAO3B,OAAS,SAAUoI,GACzB,OAASA,EAAM,IAAKlF,QAAS7C,GAAYC,KAG1CqB,GAAO0G,MAAQ,SAAUC,GACxB,MAAM,IAAIC,MAAO,0CAA4CD,IAO9D3G,GAAO6G,WAAa,SAAU1G,GAC7B,IAAI/D,EACH0K,KACA/G,EAAI,EACJpG,EAAI,EAOL,GAJAU,GAAgBT,EAAQmN,iBACxB3M,GAAaR,EAAQoN,YAAc7G,EAAQlE,MAAO,GAClDkE,EAAQ8G,KAAMzL,GAETnB,EAAe,CACnB,MAAU+B,EAAO+D,EAASxG,KACpByC,IAAS+D,EAASxG,KACtBoG,EAAI+G,EAAW9K,KAAMrC,IAGvB,MAAQoG,IACPI,EAAQ+G,OAAQJ,EAAY/G,GAAK,GAQnC,OAFA3F,EAAY,KAEL+F,GAORrG,EAAUkG,GAAOlG,QAAU,SAAUsC,GACpC,IAAIwH,EACHuC,EAAM,GACNxM,EAAI,EACJgG,EAAWvD,EAAKuD,SAEjB,GAAMA,GAQC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAIjE,GAAiC,iBAArBvD,EAAK+K,YAChB,OAAO/K,EAAK+K,YAIZ,IAAM/K,EAAOA,EAAKgL,WAAYhL,EAAMA,EAAOA,EAAK+G,YAC/CgD,GAAOrM,EAASsC,QAGZ,GAAkB,IAAbuD,GAA+B,IAAbA,EAC7B,OAAOvD,EAAKiL,eAnBZ,MAAUzD,EAAOxH,EAAMzC,KAGtBwM,GAAOrM,EAAS8J,GAqBlB,OAAOuC,IAGRtM,EAAOmG,GAAOsH,WAGbpF,YAAa,GAEbqF,aAAcnF,GAEd7B,MAAOnD,EAEP0F,cAEA6B,QAEA6C,UACCC,KAAOnI,IAAK,aAAcoI,OAAO,GACjCC,KAAOrI,IAAK,cACZsI,KAAOtI,IAAK,kBAAmBoI,OAAO,GACtCG,KAAOvI,IAAK,oBAGbwI,WACCtK,KAAQ,SAAU+C,GAWjB,OAVAA,EAAO,GAAMA,EAAO,GAAIgB,QAASpD,GAAWC,IAG5CmC,EAAO,IAAQA,EAAO,IAAOA,EAAO,IACnCA,EAAO,IAAO,IAAKgB,QAASpD,GAAWC,IAEpB,OAAfmC,EAAO,KACXA,EAAO,GAAM,IAAMA,EAAO,GAAM,KAG1BA,EAAMtE,MAAO,EAAG,IAGxByB,MAAS,SAAU6C,GAiClB,OArBAA,EAAO,GAAMA,EAAO,GAAIlB,cAEU,QAA7BkB,EAAO,GAAItE,MAAO,EAAG,IAGnBsE,EAAO,IACZP,GAAO0G,MAAOnG,EAAO,IAKtBA,EAAO,KAASA,EAAO,GACtBA,EAAO,IAAQA,EAAO,IAAO,GAC7B,GAAqB,SAAfA,EAAO,IAAiC,QAAfA,EAAO,KACvCA,EAAO,KAAWA,EAAO,GAAMA,EAAO,IAAwB,QAAfA,EAAO,KAG3CA,EAAO,IAClBP,GAAO0G,MAAOnG,EAAO,IAGfA,GAGR9C,OAAU,SAAU8C,GACnB,IAAIwH,EACHC,GAAYzH,EAAO,IAAOA,EAAO,GAElC,OAAKnD,EAAmB,MAAE8D,KAAMX,EAAO,IAC/B,MAIHA,EAAO,GACXA,EAAO,GAAMA,EAAO,IAAOA,EAAO,IAAO,GAG9ByH,GAAY9K,EAAQgE,KAAM8G,KAGnCD,EAAS/N,EAAUgO,GAAU,MAG7BD,EAASC,EAAS9L,QAAS,IAAK8L,EAAS1L,OAASyL,GAAWC,EAAS1L,UAGxEiE,EAAO,GAAMA,EAAO,GAAItE,MAAO,EAAG8L,GAClCxH,EAAO,GAAMyH,EAAS/L,MAAO,EAAG8L,IAI1BxH,EAAMtE,MAAO,EAAG,MAIzBwI,QAEClH,IAAO,SAAU0K,GAChB,IAAI7I,EAAW6I,EAAiB1G,QAASpD,GAAWC,IAAYiB,cAChE,MAA4B,MAArB4I,EACN,WACC,OAAO,GAER,SAAU7L,GACT,OAAOA,EAAKgD,UAAYhD,EAAKgD,SAASC,gBAAkBD,IAI3D9B,MAAS,SAAU+G,GAClB,IAAI6D,EAAU/M,EAAYkJ,EAAY,KAEtC,OAAO6D,IACJA,EAAU,IAAIrL,OAAQ,MAAQL,EAC/B,IAAM6H,EAAY,IAAM7H,EAAa,SAAarB,EACjDkJ,EAAW,SAAUjI,GACpB,OAAO8L,EAAQhH,KACY,iBAAnB9E,EAAKiI,WAA0BjI,EAAKiI,gBACd,IAAtBjI,EAAKkF,cACXlF,EAAKkF,aAAc,UACpB,OAKN9D,KAAQ,SAAU6I,EAAM8B,EAAUC,GACjC,OAAO,SAAUhM,GAChB,IAAIiM,EAASrI,GAAOoG,KAAMhK,EAAMiK,GAEhC,OAAe,MAAVgC,EACgB,OAAbF,GAEFA,IAINE,GAAU,GAIU,MAAbF,EAAmBE,IAAWD,EACvB,OAAbD,EAAoBE,IAAWD,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BC,EAAOnM,QAASkM,GAChC,OAAbD,EAAoBC,GAASC,EAAOnM,QAASkM,IAAW,EAC3C,OAAbD,EAAoBC,GAASC,EAAOpM,OAAQmM,EAAM9L,UAAa8L,EAClD,OAAbD,GAAsB,IAAME,EAAO9G,QAAS3E,EAAa,KAAQ,KAAMV,QAASkM,IAAW,EAC9E,OAAbD,IAAoBE,IAAWD,GAASC,EAAOpM,MAAO,EAAGmM,EAAM9L,OAAS,KAAQ8L,EAAQ,QAO3F1K,MAAS,SAAU4K,EAAMC,EAAMC,EAAWd,EAAOe,GAChD,IAAIC,EAAgC,QAAvBJ,EAAKrM,MAAO,EAAG,GAC3B0M,EAA+B,SAArBL,EAAKrM,OAAQ,GACvB2M,EAAkB,YAATL,EAEV,OAAiB,IAAVb,GAAwB,IAATe,EAGrB,SAAUrM,GACT,QAASA,EAAKgF,YAGf,SAAUhF,EAAMyM,EAAUC,GACzB,IAAI/G,EAAOgH,EAAaC,EAAYpF,EAAMqF,EAAWC,EACpD5J,EAAMoJ,IAAWC,EAAU,cAAgB,kBAC3CQ,EAAS/M,EAAKgF,WACdiF,EAAOuC,GAAUxM,EAAKgD,SAASC,cAC/B+J,GAAYN,IAAQF,EACpB3F,GAAO,EAER,GAAKkG,EAAS,CAGb,GAAKT,EAAS,CACb,MAAQpJ,EAAM,CACbsE,EAAOxH,EACP,MAAUwH,EAAOA,EAAMtE,GACtB,GAAKsJ,EACJhF,EAAKxE,SAASC,gBAAkBgH,EACd,IAAlBzC,EAAKjE,SAEL,OAAO,EAKTuJ,EAAQ5J,EAAe,SAATgJ,IAAoBY,GAAS,cAE5C,OAAO,EAMR,GAHAA,GAAUP,EAAUQ,EAAO/B,WAAa+B,EAAOE,WAG1CV,GAAWS,EAAW,CAe1BnG,GADAgG,GADAlH,GAHAgH,GAJAC,GADApF,EAAOuF,GACYrO,KAAe8I,EAAM9I,QAId8I,EAAK0F,YAC5BN,EAAYpF,EAAK0F,eAEChB,QACF,KAAQrN,GAAW8G,EAAO,KACzBA,EAAO,GAC3B6B,EAAOqF,GAAaE,EAAOzJ,WAAYuJ,GAEvC,MAAUrF,IAASqF,GAAarF,GAAQA,EAAMtE,KAG3C2D,EAAOgG,EAAY,IAAOC,EAAMpN,MAGlC,GAAuB,IAAlB8H,EAAKjE,YAAoBsD,GAAQW,IAASxH,EAAO,CACrD2M,EAAaT,IAAWrN,EAASgO,EAAWhG,GAC5C,YAyBF,GAlBKmG,IAaJnG,EADAgG,GADAlH,GAHAgH,GAJAC,GADApF,EAAOxH,GACYtB,KAAe8I,EAAM9I,QAId8I,EAAK0F,YAC5BN,EAAYpF,EAAK0F,eAEChB,QACF,KAAQrN,GAAW8G,EAAO,KAMhC,IAATkB,EAGJ,MAAUW,IAASqF,GAAarF,GAAQA,EAAMtE,KAC3C2D,EAAOgG,EAAY,IAAOC,EAAMpN,MAElC,IAAO8M,EACNhF,EAAKxE,SAASC,gBAAkBgH,EACd,IAAlBzC,EAAKjE,aACHsD,IAGGmG,KAMJL,GALAC,EAAapF,EAAM9I,KAChB8I,EAAM9I,QAIiB8I,EAAK0F,YAC5BN,EAAYpF,EAAK0F,eAEPhB,IAAWrN,EAASgI,IAG7BW,IAASxH,GACb,MASL,OADA6G,GAAQwF,KACQf,GAAWzE,EAAOyE,GAAU,GAAKzE,EAAOyE,GAAS,KAKrEjK,OAAU,SAAU8L,EAAQhG,GAM3B,IAAIiG,EACHnH,EAAKxI,EAAK8C,QAAS4M,IAAY1P,EAAK4P,WAAYF,EAAOlK,gBACtDW,GAAO0G,MAAO,uBAAyB6C,GAKzC,OAAKlH,EAAIvH,GACDuH,EAAIkB,GAIPlB,EAAG/F,OAAS,GAChBkN,GAASD,EAAQA,EAAQ,GAAIhG,GACtB1J,EAAK4P,WAAW7N,eAAgB2N,EAAOlK,eAC7C+C,GAAc,SAAUhC,EAAMxF,GAC7B,IAAI8O,EACHC,EAAUtH,EAAIjC,EAAMmD,GACpB5J,EAAIgQ,EAAQrN,OACb,MAAQ3C,IAEPyG,EADAsJ,EAAMxN,EAASkE,EAAMuJ,EAAShQ,OACbiB,EAAS8O,GAAQC,EAAShQ,MAG7C,SAAUyC,GACT,OAAOiG,EAAIjG,EAAM,EAAGoN,KAIhBnH,IAIT1F,SAGCiN,IAAOxH,GAAc,SAAUnC,GAK9B,IAAI+E,KACH7E,KACA0J,EAAU5P,EAASgG,EAASsB,QAASzE,EAAO,OAE7C,OAAO+M,EAAS/O,GACfsH,GAAc,SAAUhC,EAAMxF,EAASiO,EAAUC,GAChD,IAAI1M,EACH0N,EAAYD,EAASzJ,EAAM,KAAM0I,MACjCnP,EAAIyG,EAAK9D,OAGV,MAAQ3C,KACAyC,EAAO0N,EAAWnQ,MACxByG,EAAMzG,KAASiB,EAASjB,GAAMyC,MAIjC,SAAUA,EAAMyM,EAAUC,GAMzB,OALA9D,EAAO,GAAM5I,EACbyN,EAAS7E,EAAO,KAAM8D,EAAK3I,GAG3B6E,EAAO,GAAM,MACL7E,EAAQrE,SAInBiO,IAAO3H,GAAc,SAAUnC,GAC9B,OAAO,SAAU7D,GAChB,OAAO4D,GAAQC,EAAU7D,GAAOE,OAAS,KAI3CzB,SAAYuH,GAAc,SAAU4H,GAEnC,OADAA,EAAOA,EAAKzI,QAASpD,GAAWC,IACzB,SAAUhC,GAChB,OAASA,EAAK+K,aAAerN,EAASsC,IAASF,QAAS8N,IAAU,KAWpEC,KAAQ7H,GAAc,SAAU6H,GAO/B,OAJM9M,EAAY+D,KAAM+I,GAAQ,KAC/BjK,GAAO0G,MAAO,qBAAuBuD,GAEtCA,EAAOA,EAAK1I,QAASpD,GAAWC,IAAYiB,cACrC,SAAUjD,GAChB,IAAI8N,EACJ,GACC,GAAOA,EAAWzP,EACjB2B,EAAK6N,KACL7N,EAAKkF,aAAc,aAAgBlF,EAAKkF,aAAc,QAGtD,OADA4I,EAAWA,EAAS7K,iBACA4K,GAA2C,IAAnCC,EAAShO,QAAS+N,EAAO,YAE3C7N,EAAOA,EAAKgF,aAAkC,IAAlBhF,EAAKuD,UAC7C,OAAO,KAKTE,OAAU,SAAUzD,GACnB,IAAI+N,EAAOzQ,EAAO0Q,UAAY1Q,EAAO0Q,SAASD,KAC9C,OAAOA,GAAQA,EAAKlO,MAAO,KAAQG,EAAK0E,IAGzCuJ,KAAQ,SAAUjO,GACjB,OAAOA,IAAS5B,GAGjB8P,MAAS,SAAUlO,GAClB,OAAOA,IAAS7B,EAASgQ,iBACrBhQ,EAASiQ,UAAYjQ,EAASiQ,gBAC7BpO,EAAKkM,MAAQlM,EAAKqO,OAASrO,EAAKsO,WAItCC,QAAWvH,IAAsB,GACjCjE,SAAYiE,IAAsB,GAElCwH,QAAW,SAAUxO,GAIpB,IAAIgD,EAAWhD,EAAKgD,SAASC,cAC7B,MAAsB,UAAbD,KAA0BhD,EAAKwO,SACxB,WAAbxL,KAA2BhD,EAAKyO,UAGpCA,SAAY,SAAUzO,GASrB,OALKA,EAAKgF,YAEThF,EAAKgF,WAAW0J,eAGQ,IAAlB1O,EAAKyO,UAIbE,MAAS,SAAU3O,GAMlB,IAAMA,EAAOA,EAAKgL,WAAYhL,EAAMA,EAAOA,EAAK+G,YAC/C,GAAK/G,EAAKuD,SAAW,EACpB,OAAO,EAGT,OAAO,GAGRwJ,OAAU,SAAU/M,GACnB,OAAQvC,EAAK8C,QAAiB,MAAGP,IAIlC4O,OAAU,SAAU5O,GACnB,OAAO2B,EAAQmD,KAAM9E,EAAKgD,WAG3B4F,MAAS,SAAU5I,GAClB,OAAO0B,EAAQoD,KAAM9E,EAAKgD,WAG3B6L,OAAU,SAAU7O,GACnB,IAAIiK,EAAOjK,EAAKgD,SAASC,cACzB,MAAgB,UAATgH,GAAkC,WAAdjK,EAAKkM,MAA8B,WAATjC,GAGtD2D,KAAQ,SAAU5N,GACjB,IAAIgK,EACJ,MAAuC,UAAhChK,EAAKgD,SAASC,eACN,SAAdjD,EAAKkM,OAIuC,OAAxClC,EAAOhK,EAAKkF,aAAc,UACN,SAAvB8E,EAAK/G,gBAIRqI,MAASpE,GAAwB,WAChC,OAAS,KAGVmF,KAAQnF,GAAwB,SAAU4H,EAAe5O,GACxD,OAASA,EAAS,KAGnB6O,GAAM7H,GAAwB,SAAU4H,EAAe5O,EAAQiH,GAC9D,OAASA,EAAW,EAAIA,EAAWjH,EAASiH,KAG7C6H,KAAQ9H,GAAwB,SAAUE,EAAclH,GAEvD,IADA,IAAI3C,EAAI,EACAA,EAAI2C,EAAQ3C,GAAK,EACxB6J,EAAaxH,KAAMrC,GAEpB,OAAO6J,IAGR6H,IAAO/H,GAAwB,SAAUE,EAAclH,GAEtD,IADA,IAAI3C,EAAI,EACAA,EAAI2C,EAAQ3C,GAAK,EACxB6J,EAAaxH,KAAMrC,GAEpB,OAAO6J,IAGR8H,GAAMhI,GAAwB,SAAUE,EAAclH,EAAQiH,GAM7D,IALA,IAAI5J,EAAI4J,EAAW,EAClBA,EAAWjH,EACXiH,EAAWjH,EACVA,EACAiH,IACQ5J,GAAK,GACd6J,EAAaxH,KAAMrC,GAEpB,OAAO6J,IAGR+H,GAAMjI,GAAwB,SAAUE,EAAclH,EAAQiH,GAE7D,IADA,IAAI5J,EAAI4J,EAAW,EAAIA,EAAWjH,EAASiH,IACjC5J,EAAI2C,GACbkH,EAAaxH,KAAMrC,GAEpB,OAAO6J,OAKL7G,QAAe,IAAI9C,EAAK8C,QAAc,GAG3C,IAAMhD,KAAO6R,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5E/R,EAAK8C,QAAShD,GAzxCf,SAA4B2O,GAC3B,OAAO,SAAUlM,GAEhB,MAAgB,UADLA,EAAKgD,SAASC,eACEjD,EAAKkM,OAASA,GAsxCtBuD,CAAmBlS,GAExC,IAAMA,KAAOmS,QAAQ,EAAMC,OAAO,GACjClS,EAAK8C,QAAShD,GAjxCf,SAA6B2O,GAC5B,OAAO,SAAUlM,GAChB,IAAIiK,EAAOjK,EAAKgD,SAASC,cACzB,OAAkB,UAATgH,GAA6B,WAATA,IAAuBjK,EAAKkM,OAASA,GA8wC/C0D,CAAoBrS,GAIzC,SAAS8P,MACTA,GAAWwC,UAAYpS,EAAKqS,QAAUrS,EAAK8C,QAC3C9C,EAAK4P,WAAa,IAAIA,GAEtBzP,EAAWgG,GAAOhG,SAAW,SAAUiG,EAAUkM,GAChD,IAAIxC,EAASpJ,EAAO6L,EAAQ9D,EAC3B+D,EAAO7L,EAAQ8L,EACfC,EAASlR,EAAY4E,EAAW,KAEjC,GAAKsM,EACJ,OAAOJ,EAAY,EAAII,EAAOtQ,MAAO,GAGtCoQ,EAAQpM,EACRO,KACA8L,EAAazS,EAAKiO,UAElB,MAAQuE,EAAQ,CAGT1C,KAAapJ,EAAQxD,EAAO6D,KAAMyL,MAClC9L,IAGJ8L,EAAQA,EAAMpQ,MAAOsE,EAAO,GAAIjE,SAAY+P,GAE7C7L,EAAOxE,KAAQoQ,OAGhBzC,GAAU,GAGHpJ,EAAQvD,EAAa4D,KAAMyL,MACjC1C,EAAUpJ,EAAM4B,QAChBiK,EAAOpQ,MACNiG,MAAO0H,EAGPrB,KAAM/H,EAAO,GAAIgB,QAASzE,EAAO,OAElCuP,EAAQA,EAAMpQ,MAAO0N,EAAQrN,SAI9B,IAAMgM,KAAQzO,EAAK4K,SACXlE,EAAQnD,EAAWkL,GAAO1H,KAAMyL,KAAgBC,EAAYhE,MAChE/H,EAAQ+L,EAAYhE,GAAQ/H,MAC9BoJ,EAAUpJ,EAAM4B,QAChBiK,EAAOpQ,MACNiG,MAAO0H,EACPrB,KAAMA,EACN1N,QAAS2F,IAEV8L,EAAQA,EAAMpQ,MAAO0N,EAAQrN,SAI/B,IAAMqN,EACL,MAOF,OAAOwC,EACNE,EAAM/P,OACN+P,EACCrM,GAAO0G,MAAOzG,GAGd5E,EAAY4E,EAAUO,GAASvE,MAAO,IAGzC,SAASwF,GAAY2K,GAIpB,IAHA,IAAIzS,EAAI,EACP0C,EAAM+P,EAAO9P,OACb2D,EAAW,GACJtG,EAAI0C,EAAK1C,IAChBsG,GAAYmM,EAAQzS,GAAIsI,MAEzB,OAAOhC,EAGR,SAASf,GAAe2K,EAAS2C,EAAYC,GAC5C,IAAInN,EAAMkN,EAAWlN,IACpBoN,EAAOF,EAAWjN,KAClByC,EAAM0K,GAAQpN,EACdqN,EAAmBF,GAAgB,eAARzK,EAC3B4K,EAAW1R,IAEZ,OAAOsR,EAAW9E,MAGjB,SAAUtL,EAAM8D,EAAS4I,GACxB,MAAU1M,EAAOA,EAAMkD,GACtB,GAAuB,IAAlBlD,EAAKuD,UAAkBgN,EAC3B,OAAO9C,EAASzN,EAAM8D,EAAS4I,GAGjC,OAAO,GAIR,SAAU1M,EAAM8D,EAAS4I,GACxB,IAAI+D,EAAU9D,EAAaC,EAC1B8D,GAAa7R,EAAS2R,GAGvB,GAAK9D,GACJ,MAAU1M,EAAOA,EAAMkD,GACtB,IAAuB,IAAlBlD,EAAKuD,UAAkBgN,IACtB9C,EAASzN,EAAM8D,EAAS4I,GAC5B,OAAO,OAKV,MAAU1M,EAAOA,EAAMkD,GACtB,GAAuB,IAAlBlD,EAAKuD,UAAkBgN,EAQ3B,GAPA3D,EAAa5M,EAAMtB,KAAesB,EAAMtB,OAIxCiO,EAAcC,EAAY5M,EAAKkN,YAC5BN,EAAY5M,EAAKkN,cAEfoD,GAAQA,IAAStQ,EAAKgD,SAASC,cACnCjD,EAAOA,EAAMkD,IAASlD,MAChB,CAAA,IAAOyQ,EAAW9D,EAAa/G,KACrC6K,EAAU,KAAQ5R,GAAW4R,EAAU,KAAQD,EAG/C,OAASE,EAAU,GAAMD,EAAU,GAOnC,GAHA9D,EAAa/G,GAAQ8K,EAGdA,EAAU,GAAMjD,EAASzN,EAAM8D,EAAS4I,GAC9C,OAAO,EAMZ,OAAO,GAIV,SAASiE,GAAgBC,GACxB,OAAOA,EAAS1Q,OAAS,EACxB,SAAUF,EAAM8D,EAAS4I,GACxB,IAAInP,EAAIqT,EAAS1Q,OACjB,MAAQ3C,IACP,IAAMqT,EAAUrT,GAAKyC,EAAM8D,EAAS4I,GACnC,OAAO,EAGT,OAAO,GAERkE,EAAU,GAGZ,SAASC,GAAkBhN,EAAUiN,EAAU/M,GAG9C,IAFA,IAAIxG,EAAI,EACP0C,EAAM6Q,EAAS5Q,OACR3C,EAAI0C,EAAK1C,IAChBqG,GAAQC,EAAUiN,EAAUvT,GAAKwG,GAElC,OAAOA,EAGR,SAASgN,GAAUrD,EAAWsD,EAAK3I,EAAQvE,EAAS4I,GAOnD,IANA,IAAI1M,EACHiR,KACA1T,EAAI,EACJ0C,EAAMyN,EAAUxN,OAChBgR,EAAgB,MAAPF,EAEFzT,EAAI0C,EAAK1C,KACTyC,EAAO0N,EAAWnQ,MAClB8K,IAAUA,EAAQrI,EAAM8D,EAAS4I,KACtCuE,EAAarR,KAAMI,GACdkR,GACJF,EAAIpR,KAAMrC,KAMd,OAAO0T,EAGR,SAASE,GAAYzF,EAAW7H,EAAU4J,EAAS2D,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAY1S,KAC/B0S,EAAaD,GAAYC,IAErBC,IAAeA,EAAY3S,KAC/B2S,EAAaF,GAAYE,EAAYC,IAE/BtL,GAAc,SAAUhC,EAAMD,EAASD,EAAS4I,GACtD,IAAI6E,EAAMhU,EAAGyC,EACZwR,KACAC,KACAC,EAAc3N,EAAQ7D,OAGtBuI,EAAQzE,GAAQ6M,GACfhN,GAAY,IACZC,EAAQP,UAAaO,GAAYA,MAKlC6N,GAAYjG,IAAe1H,GAASH,EAEnC4E,EADAsI,GAAUtI,EAAO+I,EAAQ9F,EAAW5H,EAAS4I,GAG9CkF,EAAanE,EAGZ4D,IAAgBrN,EAAO0H,EAAYgG,GAAeN,MAMjDrN,EACD4N,EAQF,GALKlE,GACJA,EAASkE,EAAWC,EAAY9N,EAAS4I,GAIrC0E,EAAa,CACjBG,EAAOR,GAAUa,EAAYH,GAC7BL,EAAYG,KAAUzN,EAAS4I,GAG/BnP,EAAIgU,EAAKrR,OACT,MAAQ3C,KACAyC,EAAOuR,EAAMhU,MACnBqU,EAAYH,EAASlU,MAAWoU,EAAWF,EAASlU,IAAQyC,IAK/D,GAAKgE,GACJ,GAAKqN,GAAc3F,EAAY,CAC9B,GAAK2F,EAAa,CAGjBE,KACAhU,EAAIqU,EAAW1R,OACf,MAAQ3C,KACAyC,EAAO4R,EAAYrU,KAGzBgU,EAAK3R,KAAQ+R,EAAWpU,GAAMyC,GAGhCqR,EAAY,KAAQO,KAAmBL,EAAM7E,GAI9CnP,EAAIqU,EAAW1R,OACf,MAAQ3C,KACAyC,EAAO4R,EAAYrU,MACvBgU,EAAOF,EAAavR,EAASkE,EAAMhE,GAASwR,EAAQjU,KAAS,IAE/DyG,EAAMuN,KAAYxN,EAASwN,GAASvR,UAOvC4R,EAAab,GACZa,IAAe7N,EACd6N,EAAW9G,OAAQ4G,EAAaE,EAAW1R,QAC3C0R,GAEGP,EACJA,EAAY,KAAMtN,EAAS6N,EAAYlF,GAEvC9M,EAAKwD,MAAOW,EAAS6N,KAMzB,SAASC,GAAmB7B,GAyB3B,IAxBA,IAAI8B,EAAcrE,EAAS9J,EAC1B1D,EAAM+P,EAAO9P,OACb6R,EAAkBtU,EAAK2N,SAAU4E,EAAQ,GAAI9D,MAC7C8F,EAAmBD,GAAmBtU,EAAK2N,SAAU,KACrD7N,EAAIwU,EAAkB,EAAI,EAG1BE,EAAenP,GAAe,SAAU9C,GACvC,OAAOA,IAAS8R,GACdE,GAAkB,GACrBE,EAAkBpP,GAAe,SAAU9C,GAC1C,OAAOF,EAASgS,EAAc9R,IAAU,GACtCgS,GAAkB,GACrBpB,GAAa,SAAU5Q,EAAM8D,EAAS4I,GACrC,IAAI3C,GAASgI,IAAqBrF,GAAO5I,IAAY/F,MAClD+T,EAAehO,GAAUP,SAC1B0O,EAAcjS,EAAM8D,EAAS4I,GAC7BwF,EAAiBlS,EAAM8D,EAAS4I,IAIlC,OADAoF,EAAe,KACR/H,IAGDxM,EAAI0C,EAAK1C,IAChB,GAAOkQ,EAAUhQ,EAAK2N,SAAU4E,EAAQzS,GAAI2O,MAC3C0E,GAAa9N,GAAe6N,GAAgBC,GAAYnD,QAClD,CAIN,IAHAA,EAAUhQ,EAAK4K,OAAQ2H,EAAQzS,GAAI2O,MAAO9I,MAAO,KAAM4M,EAAQzS,GAAIiB,UAGrDE,GAAY,CAIzB,IADAiF,IAAMpG,EACEoG,EAAI1D,EAAK0D,IAChB,GAAKlG,EAAK2N,SAAU4E,EAAQrM,GAAIuI,MAC/B,MAGF,OAAOiF,GACN5T,EAAI,GAAKoT,GAAgBC,GACzBrT,EAAI,GAAK8H,GAGT2K,EACEnQ,MAAO,EAAGtC,EAAI,GACd4U,QAAUtM,MAAgC,MAAzBmK,EAAQzS,EAAI,GAAI2O,KAAe,IAAM,MACtD/G,QAASzE,EAAO,MAClB+M,EACAlQ,EAAIoG,GAAKkO,GAAmB7B,EAAOnQ,MAAOtC,EAAGoG,IAC7CA,EAAI1D,GAAO4R,GAAqB7B,EAASA,EAAOnQ,MAAO8D,IACvDA,EAAI1D,GAAOoF,GAAY2K,IAGzBY,EAAShR,KAAM6N,GAIjB,OAAOkD,GAAgBC,GAGxB,SAASwB,GAA0BC,EAAiBC,GACnD,IAAIC,EAAQD,EAAYpS,OAAS,EAChCsS,EAAYH,EAAgBnS,OAAS,EACrCuS,EAAe,SAAUzO,EAAMF,EAAS4I,EAAK3I,EAAS2O,GACrD,IAAI1S,EAAM2D,EAAG8J,EACZkF,EAAe,EACfpV,EAAI,IACJmQ,EAAY1J,MACZ4O,KACAC,EAAgB9U,EAGhB0K,EAAQzE,GAAQwO,GAAa/U,EAAK8K,KAAY,IAAG,IAAKmK,GAGtDI,EAAkBjU,GAA4B,MAAjBgU,EAAwB,EAAIE,KAAKC,UAAY,GAC1E/S,EAAMwI,EAAMvI,OAcb,IAZKwS,IAMJ3U,EAAmB+F,GAAW3F,GAAY2F,GAAW4O,GAM9CnV,IAAM0C,GAAgC,OAAvBD,EAAOyI,EAAOlL,IAAeA,IAAM,CACzD,GAAKiV,GAAaxS,EAAO,CACxB2D,EAAI,EAMEG,GAAW9D,EAAKuE,eAAiBpG,IACtCD,EAAa8B,GACb0M,GAAOrO,GAER,MAAUoP,EAAU4E,EAAiB1O,KACpC,GAAK8J,EAASzN,EAAM8D,GAAW3F,EAAUuO,GAAQ,CAChD3I,EAAQnE,KAAMI,GACd,MAGG0S,IACJ7T,EAAUiU,GAKPP,KAGGvS,GAAQyN,GAAWzN,IACzB2S,IAII3O,GACJ0J,EAAU9N,KAAMI,IAgBnB,GATA2S,GAAgBpV,EASXgV,GAAShV,IAAMoV,EAAe,CAClChP,EAAI,EACJ,MAAU8J,EAAU6E,EAAa3O,KAChC8J,EAASC,EAAWkF,EAAY9O,EAAS4I,GAG1C,GAAK1I,EAAO,CAGX,GAAK2O,EAAe,EACnB,MAAQpV,IACCmQ,EAAWnQ,IAAOqV,EAAYrV,KACrCqV,EAAYrV,GAAMmC,EAAI2D,KAAMU,IAM/B6O,EAAa7B,GAAU6B,GAIxBhT,EAAKwD,MAAOW,EAAS6O,GAGhBF,IAAc1O,GAAQ4O,EAAW1S,OAAS,GAC5CyS,EAAeL,EAAYpS,OAAW,GAExC0D,GAAO6G,WAAY1G,GAUrB,OALK2O,IACJ7T,EAAUiU,EACV/U,EAAmB8U,GAGbnF,GAGT,OAAO6E,EACNvM,GAAcyM,GACdA,EAGF5U,EAAU+F,GAAO/F,QAAU,SAAUgG,EAAUM,GAC9C,IAAI5G,EACH+U,KACAD,KACAlC,EAASjR,EAAe2E,EAAW,KAEpC,IAAMsM,EAAS,CAGRhM,IACLA,EAAQvG,EAAUiG,IAEnBtG,EAAI4G,EAAMjE,OACV,MAAQ3C,KACP4S,EAAS0B,GAAmB1N,EAAO5G,KACtBmB,GACZ4T,EAAY1S,KAAMuQ,GAElBkC,EAAgBzS,KAAMuQ,IAKxBA,EAASjR,EACR2E,EACAuO,GAA0BC,EAAiBC,KAIrCzO,SAAWA,EAEnB,OAAOsM,GAYRrS,EAAS8F,GAAO9F,OAAS,SAAU+F,EAAUC,EAASC,EAASC,GAC9D,IAAIzG,EAAGyS,EAAQiD,EAAO/G,EAAM3D,EAC3B2K,EAA+B,mBAAbrP,GAA2BA,EAC7CM,GAASH,GAAQpG,EAAYiG,EAAWqP,EAASrP,UAAYA,GAM9D,GAJAE,EAAUA,MAIY,IAAjBI,EAAMjE,OAAe,CAIzB,IADA8P,EAAS7L,EAAO,GAAMA,EAAO,GAAItE,MAAO,IAC5BK,OAAS,GAAsC,QAA/B+S,EAAQjD,EAAQ,IAAM9D,MAC5B,IAArBpI,EAAQP,UAAkBlF,GAAkBZ,EAAK2N,SAAU4E,EAAQ,GAAI9D,MAAS,CAIhF,KAFApI,GAAYrG,EAAK8K,KAAW,GAAG0K,EAAMzU,QAAS,GAC5C2G,QAASpD,GAAWC,IAAa8B,QAAmB,IAErD,OAAOC,EAGImP,IACXpP,EAAUA,EAAQkB,YAGnBnB,EAAWA,EAAShE,MAAOmQ,EAAOjK,QAAQF,MAAM3F,QAIjD3C,EAAIyD,EAA0B,aAAE8D,KAAMjB,GAAa,EAAImM,EAAO9P,OAC9D,MAAQ3C,IAAM,CAIb,GAHA0V,EAAQjD,EAAQzS,GAGXE,EAAK2N,SAAYc,EAAO+G,EAAM/G,MAClC,MAED,IAAO3D,EAAO9K,EAAK8K,KAAM2D,MAGjBlI,EAAOuE,EACb0K,EAAMzU,QAAS,GAAI2G,QAASpD,GAAWC,IACvCF,GAASgD,KAAMkL,EAAQ,GAAI9D,OAAUnH,GAAajB,EAAQkB,aACzDlB,IACI,CAKL,GAFAkM,EAAOlF,OAAQvN,EAAG,KAClBsG,EAAWG,EAAK9D,QAAUmF,GAAY2K,IAGrC,OADApQ,EAAKwD,MAAOW,EAASC,GACdD,EAGR,QAeJ,OAPEmP,GAAYrV,EAASgG,EAAUM,IAChCH,EACAF,GACCzF,EACD0F,GACCD,GAAWhC,GAASgD,KAAMjB,IAAckB,GAAajB,EAAQkB,aAAgBlB,GAExEC,GAMRvG,EAAQoN,WAAalM,EAAQ+H,MAAO,IAAKoE,KAAMzL,GAAYkG,KAAM,MAAS5G,EAI1ElB,EAAQmN,mBAAqB1M,EAG7BC,IAIAV,EAAQgM,aAAetD,GAAQ,SAAUC,GAGxC,OAA4E,EAArEA,EAAGiD,wBAAyBjL,EAASiI,cAAe,eAMtDF,GAAQ,SAAUC,GAEvB,OADAA,EAAG0C,UAAY,mBACiC,MAAzC1C,EAAG6E,WAAW9F,aAAc,WAEnCoB,GAAW,yBAA0B,SAAUtG,EAAMiK,EAAMtM,GAC1D,IAAMA,EACL,OAAOqC,EAAKkF,aAAc+E,EAA6B,SAAvBA,EAAKhH,cAA2B,EAAI,KAOjEzF,EAAQ8C,YAAe4F,GAAQ,SAAUC,GAG9C,OAFAA,EAAG0C,UAAY,WACf1C,EAAG6E,WAAW5F,aAAc,QAAS,IACY,KAA1Ce,EAAG6E,WAAW9F,aAAc,YAEnCoB,GAAW,QAAS,SAAUtG,EAAMmT,EAAOxV,GAC1C,IAAMA,GAAyC,UAAhCqC,EAAKgD,SAASC,cAC5B,OAAOjD,EAAKoT,eAOTlN,GAAQ,SAAUC,GACvB,OAAwC,MAAjCA,EAAGjB,aAAc,eAExBoB,GAAWnG,EAAU,SAAUH,EAAMiK,EAAMtM,GAC1C,IAAIuM,EACJ,IAAMvM,EACL,OAAwB,IAAjBqC,EAAMiK,GAAkBA,EAAKhH,eACjCiH,EAAMlK,EAAKwI,iBAAkByB,KAAYC,EAAIE,UAC9CF,EAAIrE,MACJ,OAML,IAAIwN,GAAU/V,EAAOsG,OAErBA,GAAO0P,WAAa,WAKnB,OAJKhW,EAAOsG,SAAWA,KACtBtG,EAAOsG,OAASyP,IAGVzP,IAGe,mBAAX2P,QAAyBA,OAAOC,IAC3CD,OAAQ,WACP,OAAO3P,KAIqB,oBAAX6P,QAA0BA,OAAOC,QACnDD,OAAOC,QAAU9P,GAEjBtG,EAAOsG,OAASA,GA95EjB,CAm6EKtG","file":"sizzle.min.js"}
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "name": "jquery",
3 + "title": "jQuery",
4 + "description": "JavaScript library for DOM operations",
5 + "version": "3.6.0",
6 + "main": "dist/jquery.js",
7 + "homepage": "https://jquery.com",
8 + "author": {
9 + "name": "OpenJS Foundation and other contributors",
10 + "url": "https://github.com/jquery/jquery/blob/3.6.0/AUTHORS.txt"
11 + },
12 + "repository": {
13 + "type": "git",
14 + "url": "https://github.com/jquery/jquery.git"
15 + },
16 + "keywords": [
17 + "jquery",
18 + "javascript",
19 + "browser",
20 + "library"
21 + ],
22 + "bugs": {
23 + "url": "https://github.com/jquery/jquery/issues"
24 + },
25 + "license": "MIT",
26 + "devDependencies": {
27 + "@babel/core": "7.3.3",
28 + "@babel/plugin-transform-for-of": "7.2.0",
29 + "commitplease": "3.2.0",
30 + "core-js": "2.6.5",
31 + "eslint-config-jquery": "3.0.0",
32 + "grunt": "1.3.0",
33 + "grunt-babel": "8.0.0",
34 + "grunt-cli": "1.3.2",
35 + "grunt-compare-size": "0.4.2",
36 + "grunt-contrib-uglify": "3.4.0",
37 + "grunt-contrib-watch": "1.1.0",
38 + "grunt-eslint": "22.0.0",
39 + "grunt-git-authors": "3.2.0",
40 + "grunt-jsonlint": "1.1.0",
41 + "grunt-karma": "4.0.0",
42 + "grunt-newer": "1.3.0",
43 + "grunt-npmcopy": "0.2.0",
44 + "gzip-js": "0.3.2",
45 + "husky": "1.3.1",
46 + "insight": "0.10.1",
47 + "jsdom": "13.2.0",
48 + "karma": "5.2.3",
49 + "karma-browserstack-launcher": "1.4.0",
50 + "karma-chrome-launcher": "2.2.0",
51 + "karma-firefox-launcher": "1.1.0",
52 + "karma-ie-launcher": "1.0.0",
53 + "karma-jsdom-launcher": "8.0.2",
54 + "karma-qunit": "3.0.0",
55 + "load-grunt-tasks": "5.1.0",
56 + "native-promise-only": "0.8.1",
57 + "promises-aplus-tests": "2.1.2",
58 + "q": "1.5.1",
59 + "qunit": "2.9.2",
60 + "raw-body": "2.3.3",
61 + "requirejs": "2.3.6",
62 + "sinon": "2.3.7",
63 + "sizzle": "2.3.6",
64 + "strip-json-comments": "2.0.1",
65 + "testswarm": "1.1.2",
66 + "uglify-js": "3.4.7"
67 + },
68 + "scripts": {
69 + "build": "npm install && grunt",
70 + "start": "grunt watch",
71 + "test:browserless": "grunt && grunt test:slow",
72 + "test:browser": "grunt && grunt karma:main",
73 + "test:amd": "grunt && grunt karma:amd",
74 + "test:no-deprecated": "grunt test:prepare && grunt custom:-deprecated && grunt karma:main",
75 + "test:no-sizzle": "grunt test:prepare && grunt custom:-sizzle && grunt karma:main",
76 + "test:slim": "grunt test:prepare && grunt custom:slim && grunt karma:main",
77 + "test": "npm run test:slim && npm run test:no-deprecated && npm run test:no-sizzle && grunt && grunt test:slow && grunt karma:main && grunt karma:amd",
78 + "jenkins": "npm run test:browserless"
79 + },
80 + "commitplease": {
81 + "nohook": true,
82 + "components": [
83 + "Docs",
84 + "Tests",
85 + "Build",
86 + "Support",
87 + "Release",
88 + "Core",
89 + "Ajax",
90 + "Attributes",
91 + "Callbacks",
92 + "CSS",
93 + "Data",
94 + "Deferred",
95 + "Deprecated",
96 + "Dimensions",
97 + "Effects",
98 + "Event",
99 + "Manipulation",
100 + "Offset",
101 + "Queue",
102 + "Selector",
103 + "Serialize",
104 + "Traversing",
105 + "Wrap"
106 + ],
107 + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)",
108 + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])"
109 + },
110 + "husky": {
111 + "hooks": {
112 + "commit-msg": "commitplease .git/COMMIT_EDITMSG",
113 + "pre-commit": "grunt lint:newer qunit_fixture"
114 + }
115 + }
116 +}
1 +define( [
2 + "./core",
3 + "./var/document",
4 + "./var/isFunction",
5 + "./var/rnothtmlwhite",
6 + "./ajax/var/location",
7 + "./ajax/var/nonce",
8 + "./ajax/var/rquery",
9 +
10 + "./core/init",
11 + "./core/parseXML",
12 + "./event/trigger",
13 + "./deferred",
14 + "./serialize" // jQuery.param
15 +], function( jQuery, document, isFunction, rnothtmlwhite, location, nonce, rquery ) {
16 +
17 +"use strict";
18 +
19 +var
20 + r20 = /%20/g,
21 + rhash = /#.*$/,
22 + rantiCache = /([?&])_=[^&]*/,
23 + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
24 +
25 + // #7653, #8125, #8152: local protocol detection
26 + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
27 + rnoContent = /^(?:GET|HEAD)$/,
28 + rprotocol = /^\/\//,
29 +
30 + /* Prefilters
31 + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
32 + * 2) These are called:
33 + * - BEFORE asking for a transport
34 + * - AFTER param serialization (s.data is a string if s.processData is true)
35 + * 3) key is the dataType
36 + * 4) the catchall symbol "*" can be used
37 + * 5) execution will start with transport dataType and THEN continue down to "*" if needed
38 + */
39 + prefilters = {},
40 +
41 + /* Transports bindings
42 + * 1) key is the dataType
43 + * 2) the catchall symbol "*" can be used
44 + * 3) selection will start with transport dataType and THEN go to "*" if needed
45 + */
46 + transports = {},
47 +
48 + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
49 + allTypes = "*/".concat( "*" ),
50 +
51 + // Anchor tag for parsing the document origin
52 + originAnchor = document.createElement( "a" );
53 +
54 +originAnchor.href = location.href;
55 +
56 +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
57 +function addToPrefiltersOrTransports( structure ) {
58 +
59 + // dataTypeExpression is optional and defaults to "*"
60 + return function( dataTypeExpression, func ) {
61 +
62 + if ( typeof dataTypeExpression !== "string" ) {
63 + func = dataTypeExpression;
64 + dataTypeExpression = "*";
65 + }
66 +
67 + var dataType,
68 + i = 0,
69 + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
70 +
71 + if ( isFunction( func ) ) {
72 +
73 + // For each dataType in the dataTypeExpression
74 + while ( ( dataType = dataTypes[ i++ ] ) ) {
75 +
76 + // Prepend if requested
77 + if ( dataType[ 0 ] === "+" ) {
78 + dataType = dataType.slice( 1 ) || "*";
79 + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
80 +
81 + // Otherwise append
82 + } else {
83 + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
84 + }
85 + }
86 + }
87 + };
88 +}
89 +
90 +// Base inspection function for prefilters and transports
91 +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
92 +
93 + var inspected = {},
94 + seekingTransport = ( structure === transports );
95 +
96 + function inspect( dataType ) {
97 + var selected;
98 + inspected[ dataType ] = true;
99 + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
100 + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
101 + if ( typeof dataTypeOrTransport === "string" &&
102 + !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
103 +
104 + options.dataTypes.unshift( dataTypeOrTransport );
105 + inspect( dataTypeOrTransport );
106 + return false;
107 + } else if ( seekingTransport ) {
108 + return !( selected = dataTypeOrTransport );
109 + }
110 + } );
111 + return selected;
112 + }
113 +
114 + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
115 +}
116 +
117 +// A special extend for ajax options
118 +// that takes "flat" options (not to be deep extended)
119 +// Fixes #9887
120 +function ajaxExtend( target, src ) {
121 + var key, deep,
122 + flatOptions = jQuery.ajaxSettings.flatOptions || {};
123 +
124 + for ( key in src ) {
125 + if ( src[ key ] !== undefined ) {
126 + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
127 + }
128 + }
129 + if ( deep ) {
130 + jQuery.extend( true, target, deep );
131 + }
132 +
133 + return target;
134 +}
135 +
136 +/* Handles responses to an ajax request:
137 + * - finds the right dataType (mediates between content-type and expected dataType)
138 + * - returns the corresponding response
139 + */
140 +function ajaxHandleResponses( s, jqXHR, responses ) {
141 +
142 + var ct, type, finalDataType, firstDataType,
143 + contents = s.contents,
144 + dataTypes = s.dataTypes;
145 +
146 + // Remove auto dataType and get content-type in the process
147 + while ( dataTypes[ 0 ] === "*" ) {
148 + dataTypes.shift();
149 + if ( ct === undefined ) {
150 + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
151 + }
152 + }
153 +
154 + // Check if we're dealing with a known content-type
155 + if ( ct ) {
156 + for ( type in contents ) {
157 + if ( contents[ type ] && contents[ type ].test( ct ) ) {
158 + dataTypes.unshift( type );
159 + break;
160 + }
161 + }
162 + }
163 +
164 + // Check to see if we have a response for the expected dataType
165 + if ( dataTypes[ 0 ] in responses ) {
166 + finalDataType = dataTypes[ 0 ];
167 + } else {
168 +
169 + // Try convertible dataTypes
170 + for ( type in responses ) {
171 + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
172 + finalDataType = type;
173 + break;
174 + }
175 + if ( !firstDataType ) {
176 + firstDataType = type;
177 + }
178 + }
179 +
180 + // Or just use first one
181 + finalDataType = finalDataType || firstDataType;
182 + }
183 +
184 + // If we found a dataType
185 + // We add the dataType to the list if needed
186 + // and return the corresponding response
187 + if ( finalDataType ) {
188 + if ( finalDataType !== dataTypes[ 0 ] ) {
189 + dataTypes.unshift( finalDataType );
190 + }
191 + return responses[ finalDataType ];
192 + }
193 +}
194 +
195 +/* Chain conversions given the request and the original response
196 + * Also sets the responseXXX fields on the jqXHR instance
197 + */
198 +function ajaxConvert( s, response, jqXHR, isSuccess ) {
199 + var conv2, current, conv, tmp, prev,
200 + converters = {},
201 +
202 + // Work with a copy of dataTypes in case we need to modify it for conversion
203 + dataTypes = s.dataTypes.slice();
204 +
205 + // Create converters map with lowercased keys
206 + if ( dataTypes[ 1 ] ) {
207 + for ( conv in s.converters ) {
208 + converters[ conv.toLowerCase() ] = s.converters[ conv ];
209 + }
210 + }
211 +
212 + current = dataTypes.shift();
213 +
214 + // Convert to each sequential dataType
215 + while ( current ) {
216 +
217 + if ( s.responseFields[ current ] ) {
218 + jqXHR[ s.responseFields[ current ] ] = response;
219 + }
220 +
221 + // Apply the dataFilter if provided
222 + if ( !prev && isSuccess && s.dataFilter ) {
223 + response = s.dataFilter( response, s.dataType );
224 + }
225 +
226 + prev = current;
227 + current = dataTypes.shift();
228 +
229 + if ( current ) {
230 +
231 + // There's only work to do if current dataType is non-auto
232 + if ( current === "*" ) {
233 +
234 + current = prev;
235 +
236 + // Convert response if prev dataType is non-auto and differs from current
237 + } else if ( prev !== "*" && prev !== current ) {
238 +
239 + // Seek a direct converter
240 + conv = converters[ prev + " " + current ] || converters[ "* " + current ];
241 +
242 + // If none found, seek a pair
243 + if ( !conv ) {
244 + for ( conv2 in converters ) {
245 +
246 + // If conv2 outputs current
247 + tmp = conv2.split( " " );
248 + if ( tmp[ 1 ] === current ) {
249 +
250 + // If prev can be converted to accepted input
251 + conv = converters[ prev + " " + tmp[ 0 ] ] ||
252 + converters[ "* " + tmp[ 0 ] ];
253 + if ( conv ) {
254 +
255 + // Condense equivalence converters
256 + if ( conv === true ) {
257 + conv = converters[ conv2 ];
258 +
259 + // Otherwise, insert the intermediate dataType
260 + } else if ( converters[ conv2 ] !== true ) {
261 + current = tmp[ 0 ];
262 + dataTypes.unshift( tmp[ 1 ] );
263 + }
264 + break;
265 + }
266 + }
267 + }
268 + }
269 +
270 + // Apply converter (if not an equivalence)
271 + if ( conv !== true ) {
272 +
273 + // Unless errors are allowed to bubble, catch and return them
274 + if ( conv && s.throws ) {
275 + response = conv( response );
276 + } else {
277 + try {
278 + response = conv( response );
279 + } catch ( e ) {
280 + return {
281 + state: "parsererror",
282 + error: conv ? e : "No conversion from " + prev + " to " + current
283 + };
284 + }
285 + }
286 + }
287 + }
288 + }
289 + }
290 +
291 + return { state: "success", data: response };
292 +}
293 +
294 +jQuery.extend( {
295 +
296 + // Counter for holding the number of active queries
297 + active: 0,
298 +
299 + // Last-Modified header cache for next request
300 + lastModified: {},
301 + etag: {},
302 +
303 + ajaxSettings: {
304 + url: location.href,
305 + type: "GET",
306 + isLocal: rlocalProtocol.test( location.protocol ),
307 + global: true,
308 + processData: true,
309 + async: true,
310 + contentType: "application/x-www-form-urlencoded; charset=UTF-8",
311 +
312 + /*
313 + timeout: 0,
314 + data: null,
315 + dataType: null,
316 + username: null,
317 + password: null,
318 + cache: null,
319 + throws: false,
320 + traditional: false,
321 + headers: {},
322 + */
323 +
324 + accepts: {
325 + "*": allTypes,
326 + text: "text/plain",
327 + html: "text/html",
328 + xml: "application/xml, text/xml",
329 + json: "application/json, text/javascript"
330 + },
331 +
332 + contents: {
333 + xml: /\bxml\b/,
334 + html: /\bhtml/,
335 + json: /\bjson\b/
336 + },
337 +
338 + responseFields: {
339 + xml: "responseXML",
340 + text: "responseText",
341 + json: "responseJSON"
342 + },
343 +
344 + // Data converters
345 + // Keys separate source (or catchall "*") and destination types with a single space
346 + converters: {
347 +
348 + // Convert anything to text
349 + "* text": String,
350 +
351 + // Text to html (true = no transformation)
352 + "text html": true,
353 +
354 + // Evaluate text as a json expression
355 + "text json": JSON.parse,
356 +
357 + // Parse text as xml
358 + "text xml": jQuery.parseXML
359 + },
360 +
361 + // For options that shouldn't be deep extended:
362 + // you can add your own custom options here if
363 + // and when you create one that shouldn't be
364 + // deep extended (see ajaxExtend)
365 + flatOptions: {
366 + url: true,
367 + context: true
368 + }
369 + },
370 +
371 + // Creates a full fledged settings object into target
372 + // with both ajaxSettings and settings fields.
373 + // If target is omitted, writes into ajaxSettings.
374 + ajaxSetup: function( target, settings ) {
375 + return settings ?
376 +
377 + // Building a settings object
378 + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
379 +
380 + // Extending ajaxSettings
381 + ajaxExtend( jQuery.ajaxSettings, target );
382 + },
383 +
384 + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
385 + ajaxTransport: addToPrefiltersOrTransports( transports ),
386 +
387 + // Main method
388 + ajax: function( url, options ) {
389 +
390 + // If url is an object, simulate pre-1.5 signature
391 + if ( typeof url === "object" ) {
392 + options = url;
393 + url = undefined;
394 + }
395 +
396 + // Force options to be an object
397 + options = options || {};
398 +
399 + var transport,
400 +
401 + // URL without anti-cache param
402 + cacheURL,
403 +
404 + // Response headers
405 + responseHeadersString,
406 + responseHeaders,
407 +
408 + // timeout handle
409 + timeoutTimer,
410 +
411 + // Url cleanup var
412 + urlAnchor,
413 +
414 + // Request state (becomes false upon send and true upon completion)
415 + completed,
416 +
417 + // To know if global events are to be dispatched
418 + fireGlobals,
419 +
420 + // Loop variable
421 + i,
422 +
423 + // uncached part of the url
424 + uncached,
425 +
426 + // Create the final options object
427 + s = jQuery.ajaxSetup( {}, options ),
428 +
429 + // Callbacks context
430 + callbackContext = s.context || s,
431 +
432 + // Context for global events is callbackContext if it is a DOM node or jQuery collection
433 + globalEventContext = s.context &&
434 + ( callbackContext.nodeType || callbackContext.jquery ) ?
435 + jQuery( callbackContext ) :
436 + jQuery.event,
437 +
438 + // Deferreds
439 + deferred = jQuery.Deferred(),
440 + completeDeferred = jQuery.Callbacks( "once memory" ),
441 +
442 + // Status-dependent callbacks
443 + statusCode = s.statusCode || {},
444 +
445 + // Headers (they are sent all at once)
446 + requestHeaders = {},
447 + requestHeadersNames = {},
448 +
449 + // Default abort message
450 + strAbort = "canceled",
451 +
452 + // Fake xhr
453 + jqXHR = {
454 + readyState: 0,
455 +
456 + // Builds headers hashtable if needed
457 + getResponseHeader: function( key ) {
458 + var match;
459 + if ( completed ) {
460 + if ( !responseHeaders ) {
461 + responseHeaders = {};
462 + while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
463 + responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
464 + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
465 + .concat( match[ 2 ] );
466 + }
467 + }
468 + match = responseHeaders[ key.toLowerCase() + " " ];
469 + }
470 + return match == null ? null : match.join( ", " );
471 + },
472 +
473 + // Raw string
474 + getAllResponseHeaders: function() {
475 + return completed ? responseHeadersString : null;
476 + },
477 +
478 + // Caches the header
479 + setRequestHeader: function( name, value ) {
480 + if ( completed == null ) {
481 + name = requestHeadersNames[ name.toLowerCase() ] =
482 + requestHeadersNames[ name.toLowerCase() ] || name;
483 + requestHeaders[ name ] = value;
484 + }
485 + return this;
486 + },
487 +
488 + // Overrides response content-type header
489 + overrideMimeType: function( type ) {
490 + if ( completed == null ) {
491 + s.mimeType = type;
492 + }
493 + return this;
494 + },
495 +
496 + // Status-dependent callbacks
497 + statusCode: function( map ) {
498 + var code;
499 + if ( map ) {
500 + if ( completed ) {
501 +
502 + // Execute the appropriate callbacks
503 + jqXHR.always( map[ jqXHR.status ] );
504 + } else {
505 +
506 + // Lazy-add the new callbacks in a way that preserves old ones
507 + for ( code in map ) {
508 + statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
509 + }
510 + }
511 + }
512 + return this;
513 + },
514 +
515 + // Cancel the request
516 + abort: function( statusText ) {
517 + var finalText = statusText || strAbort;
518 + if ( transport ) {
519 + transport.abort( finalText );
520 + }
521 + done( 0, finalText );
522 + return this;
523 + }
524 + };
525 +
526 + // Attach deferreds
527 + deferred.promise( jqXHR );
528 +
529 + // Add protocol if not provided (prefilters might expect it)
530 + // Handle falsy url in the settings object (#10093: consistency with old signature)
531 + // We also use the url parameter if available
532 + s.url = ( ( url || s.url || location.href ) + "" )
533 + .replace( rprotocol, location.protocol + "//" );
534 +
535 + // Alias method option to type as per ticket #12004
536 + s.type = options.method || options.type || s.method || s.type;
537 +
538 + // Extract dataTypes list
539 + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
540 +
541 + // A cross-domain request is in order when the origin doesn't match the current origin.
542 + if ( s.crossDomain == null ) {
543 + urlAnchor = document.createElement( "a" );
544 +
545 + // Support: IE <=8 - 11, Edge 12 - 15
546 + // IE throws exception on accessing the href property if url is malformed,
547 + // e.g. http://example.com:80x/
548 + try {
549 + urlAnchor.href = s.url;
550 +
551 + // Support: IE <=8 - 11 only
552 + // Anchor's host property isn't correctly set when s.url is relative
553 + urlAnchor.href = urlAnchor.href;
554 + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
555 + urlAnchor.protocol + "//" + urlAnchor.host;
556 + } catch ( e ) {
557 +
558 + // If there is an error parsing the URL, assume it is crossDomain,
559 + // it can be rejected by the transport if it is invalid
560 + s.crossDomain = true;
561 + }
562 + }
563 +
564 + // Convert data if not already a string
565 + if ( s.data && s.processData && typeof s.data !== "string" ) {
566 + s.data = jQuery.param( s.data, s.traditional );
567 + }
568 +
569 + // Apply prefilters
570 + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
571 +
572 + // If request was aborted inside a prefilter, stop there
573 + if ( completed ) {
574 + return jqXHR;
575 + }
576 +
577 + // We can fire global events as of now if asked to
578 + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
579 + fireGlobals = jQuery.event && s.global;
580 +
581 + // Watch for a new set of requests
582 + if ( fireGlobals && jQuery.active++ === 0 ) {
583 + jQuery.event.trigger( "ajaxStart" );
584 + }
585 +
586 + // Uppercase the type
587 + s.type = s.type.toUpperCase();
588 +
589 + // Determine if request has content
590 + s.hasContent = !rnoContent.test( s.type );
591 +
592 + // Save the URL in case we're toying with the If-Modified-Since
593 + // and/or If-None-Match header later on
594 + // Remove hash to simplify url manipulation
595 + cacheURL = s.url.replace( rhash, "" );
596 +
597 + // More options handling for requests with no content
598 + if ( !s.hasContent ) {
599 +
600 + // Remember the hash so we can put it back
601 + uncached = s.url.slice( cacheURL.length );
602 +
603 + // If data is available and should be processed, append data to url
604 + if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
605 + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
606 +
607 + // #9682: remove data so that it's not used in an eventual retry
608 + delete s.data;
609 + }
610 +
611 + // Add or update anti-cache param if needed
612 + if ( s.cache === false ) {
613 + cacheURL = cacheURL.replace( rantiCache, "$1" );
614 + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
615 + uncached;
616 + }
617 +
618 + // Put hash and anti-cache on the URL that will be requested (gh-1732)
619 + s.url = cacheURL + uncached;
620 +
621 + // Change '%20' to '+' if this is encoded form body content (gh-2658)
622 + } else if ( s.data && s.processData &&
623 + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
624 + s.data = s.data.replace( r20, "+" );
625 + }
626 +
627 + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
628 + if ( s.ifModified ) {
629 + if ( jQuery.lastModified[ cacheURL ] ) {
630 + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
631 + }
632 + if ( jQuery.etag[ cacheURL ] ) {
633 + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
634 + }
635 + }
636 +
637 + // Set the correct header, if data is being sent
638 + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
639 + jqXHR.setRequestHeader( "Content-Type", s.contentType );
640 + }
641 +
642 + // Set the Accepts header for the server, depending on the dataType
643 + jqXHR.setRequestHeader(
644 + "Accept",
645 + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
646 + s.accepts[ s.dataTypes[ 0 ] ] +
647 + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
648 + s.accepts[ "*" ]
649 + );
650 +
651 + // Check for headers option
652 + for ( i in s.headers ) {
653 + jqXHR.setRequestHeader( i, s.headers[ i ] );
654 + }
655 +
656 + // Allow custom headers/mimetypes and early abort
657 + if ( s.beforeSend &&
658 + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
659 +
660 + // Abort if not done already and return
661 + return jqXHR.abort();
662 + }
663 +
664 + // Aborting is no longer a cancellation
665 + strAbort = "abort";
666 +
667 + // Install callbacks on deferreds
668 + completeDeferred.add( s.complete );
669 + jqXHR.done( s.success );
670 + jqXHR.fail( s.error );
671 +
672 + // Get transport
673 + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
674 +
675 + // If no transport, we auto-abort
676 + if ( !transport ) {
677 + done( -1, "No Transport" );
678 + } else {
679 + jqXHR.readyState = 1;
680 +
681 + // Send global event
682 + if ( fireGlobals ) {
683 + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
684 + }
685 +
686 + // If request was aborted inside ajaxSend, stop there
687 + if ( completed ) {
688 + return jqXHR;
689 + }
690 +
691 + // Timeout
692 + if ( s.async && s.timeout > 0 ) {
693 + timeoutTimer = window.setTimeout( function() {
694 + jqXHR.abort( "timeout" );
695 + }, s.timeout );
696 + }
697 +
698 + try {
699 + completed = false;
700 + transport.send( requestHeaders, done );
701 + } catch ( e ) {
702 +
703 + // Rethrow post-completion exceptions
704 + if ( completed ) {
705 + throw e;
706 + }
707 +
708 + // Propagate others as results
709 + done( -1, e );
710 + }
711 + }
712 +
713 + // Callback for when everything is done
714 + function done( status, nativeStatusText, responses, headers ) {
715 + var isSuccess, success, error, response, modified,
716 + statusText = nativeStatusText;
717 +
718 + // Ignore repeat invocations
719 + if ( completed ) {
720 + return;
721 + }
722 +
723 + completed = true;
724 +
725 + // Clear timeout if it exists
726 + if ( timeoutTimer ) {
727 + window.clearTimeout( timeoutTimer );
728 + }
729 +
730 + // Dereference transport for early garbage collection
731 + // (no matter how long the jqXHR object will be used)
732 + transport = undefined;
733 +
734 + // Cache response headers
735 + responseHeadersString = headers || "";
736 +
737 + // Set readyState
738 + jqXHR.readyState = status > 0 ? 4 : 0;
739 +
740 + // Determine if successful
741 + isSuccess = status >= 200 && status < 300 || status === 304;
742 +
743 + // Get response data
744 + if ( responses ) {
745 + response = ajaxHandleResponses( s, jqXHR, responses );
746 + }
747 +
748 + // Use a noop converter for missing script but not if jsonp
749 + if ( !isSuccess &&
750 + jQuery.inArray( "script", s.dataTypes ) > -1 &&
751 + jQuery.inArray( "json", s.dataTypes ) < 0 ) {
752 + s.converters[ "text script" ] = function() {};
753 + }
754 +
755 + // Convert no matter what (that way responseXXX fields are always set)
756 + response = ajaxConvert( s, response, jqXHR, isSuccess );
757 +
758 + // If successful, handle type chaining
759 + if ( isSuccess ) {
760 +
761 + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
762 + if ( s.ifModified ) {
763 + modified = jqXHR.getResponseHeader( "Last-Modified" );
764 + if ( modified ) {
765 + jQuery.lastModified[ cacheURL ] = modified;
766 + }
767 + modified = jqXHR.getResponseHeader( "etag" );
768 + if ( modified ) {
769 + jQuery.etag[ cacheURL ] = modified;
770 + }
771 + }
772 +
773 + // if no content
774 + if ( status === 204 || s.type === "HEAD" ) {
775 + statusText = "nocontent";
776 +
777 + // if not modified
778 + } else if ( status === 304 ) {
779 + statusText = "notmodified";
780 +
781 + // If we have data, let's convert it
782 + } else {
783 + statusText = response.state;
784 + success = response.data;
785 + error = response.error;
786 + isSuccess = !error;
787 + }
788 + } else {
789 +
790 + // Extract error from statusText and normalize for non-aborts
791 + error = statusText;
792 + if ( status || !statusText ) {
793 + statusText = "error";
794 + if ( status < 0 ) {
795 + status = 0;
796 + }
797 + }
798 + }
799 +
800 + // Set data for the fake xhr object
801 + jqXHR.status = status;
802 + jqXHR.statusText = ( nativeStatusText || statusText ) + "";
803 +
804 + // Success/Error
805 + if ( isSuccess ) {
806 + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
807 + } else {
808 + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
809 + }
810 +
811 + // Status-dependent callbacks
812 + jqXHR.statusCode( statusCode );
813 + statusCode = undefined;
814 +
815 + if ( fireGlobals ) {
816 + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
817 + [ jqXHR, s, isSuccess ? success : error ] );
818 + }
819 +
820 + // Complete
821 + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
822 +
823 + if ( fireGlobals ) {
824 + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
825 +
826 + // Handle the global AJAX counter
827 + if ( !( --jQuery.active ) ) {
828 + jQuery.event.trigger( "ajaxStop" );
829 + }
830 + }
831 + }
832 +
833 + return jqXHR;
834 + },
835 +
836 + getJSON: function( url, data, callback ) {
837 + return jQuery.get( url, data, callback, "json" );
838 + },
839 +
840 + getScript: function( url, callback ) {
841 + return jQuery.get( url, undefined, callback, "script" );
842 + }
843 +} );
844 +
845 +jQuery.each( [ "get", "post" ], function( _i, method ) {
846 + jQuery[ method ] = function( url, data, callback, type ) {
847 +
848 + // Shift arguments if data argument was omitted
849 + if ( isFunction( data ) ) {
850 + type = type || callback;
851 + callback = data;
852 + data = undefined;
853 + }
854 +
855 + // The url can be an options object (which then must have .url)
856 + return jQuery.ajax( jQuery.extend( {
857 + url: url,
858 + type: method,
859 + dataType: type,
860 + data: data,
861 + success: callback
862 + }, jQuery.isPlainObject( url ) && url ) );
863 + };
864 +} );
865 +
866 +jQuery.ajaxPrefilter( function( s ) {
867 + var i;
868 + for ( i in s.headers ) {
869 + if ( i.toLowerCase() === "content-type" ) {
870 + s.contentType = s.headers[ i ] || "";
871 + }
872 + }
873 +} );
874 +
875 +return jQuery;
876 +} );
1 +define( [
2 + "../core",
3 + "../var/isFunction",
4 + "./var/nonce",
5 + "./var/rquery",
6 + "../ajax"
7 +], function( jQuery, isFunction, nonce, rquery ) {
8 +
9 +"use strict";
10 +
11 +var oldCallbacks = [],
12 + rjsonp = /(=)\?(?=&|$)|\?\?/;
13 +
14 +// Default jsonp settings
15 +jQuery.ajaxSetup( {
16 + jsonp: "callback",
17 + jsonpCallback: function() {
18 + var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
19 + this[ callback ] = true;
20 + return callback;
21 + }
22 +} );
23 +
24 +// Detect, normalize options and install callbacks for jsonp requests
25 +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
26 +
27 + var callbackName, overwritten, responseContainer,
28 + jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
29 + "url" :
30 + typeof s.data === "string" &&
31 + ( s.contentType || "" )
32 + .indexOf( "application/x-www-form-urlencoded" ) === 0 &&
33 + rjsonp.test( s.data ) && "data"
34 + );
35 +
36 + // Handle iff the expected data type is "jsonp" or we have a parameter to set
37 + if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
38 +
39 + // Get callback name, remembering preexisting value associated with it
40 + callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
41 + s.jsonpCallback() :
42 + s.jsonpCallback;
43 +
44 + // Insert callback into url or form data
45 + if ( jsonProp ) {
46 + s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
47 + } else if ( s.jsonp !== false ) {
48 + s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
49 + }
50 +
51 + // Use data converter to retrieve json after script execution
52 + s.converters[ "script json" ] = function() {
53 + if ( !responseContainer ) {
54 + jQuery.error( callbackName + " was not called" );
55 + }
56 + return responseContainer[ 0 ];
57 + };
58 +
59 + // Force json dataType
60 + s.dataTypes[ 0 ] = "json";
61 +
62 + // Install callback
63 + overwritten = window[ callbackName ];
64 + window[ callbackName ] = function() {
65 + responseContainer = arguments;
66 + };
67 +
68 + // Clean-up function (fires after converters)
69 + jqXHR.always( function() {
70 +
71 + // If previous value didn't exist - remove it
72 + if ( overwritten === undefined ) {
73 + jQuery( window ).removeProp( callbackName );
74 +
75 + // Otherwise restore preexisting value
76 + } else {
77 + window[ callbackName ] = overwritten;
78 + }
79 +
80 + // Save back as free
81 + if ( s[ callbackName ] ) {
82 +
83 + // Make sure that re-using the options doesn't screw things around
84 + s.jsonpCallback = originalSettings.jsonpCallback;
85 +
86 + // Save the callback name for future use
87 + oldCallbacks.push( callbackName );
88 + }
89 +
90 + // Call if it was a function and we have a response
91 + if ( responseContainer && isFunction( overwritten ) ) {
92 + overwritten( responseContainer[ 0 ] );
93 + }
94 +
95 + responseContainer = overwritten = undefined;
96 + } );
97 +
98 + // Delegate to script
99 + return "script";
100 + }
101 +} );
102 +
103 +} );
1 +define( [
2 + "../core",
3 + "../core/stripAndCollapse",
4 + "../var/isFunction",
5 + "../core/parseHTML",
6 + "../ajax",
7 + "../traversing",
8 + "../manipulation",
9 + "../selector"
10 +], function( jQuery, stripAndCollapse, isFunction ) {
11 +
12 +"use strict";
13 +
14 +/**
15 + * Load a url into a page
16 + */
17 +jQuery.fn.load = function( url, params, callback ) {
18 + var selector, type, response,
19 + self = this,
20 + off = url.indexOf( " " );
21 +
22 + if ( off > -1 ) {
23 + selector = stripAndCollapse( url.slice( off ) );
24 + url = url.slice( 0, off );
25 + }
26 +
27 + // If it's a function
28 + if ( isFunction( params ) ) {
29 +
30 + // We assume that it's the callback
31 + callback = params;
32 + params = undefined;
33 +
34 + // Otherwise, build a param string
35 + } else if ( params && typeof params === "object" ) {
36 + type = "POST";
37 + }
38 +
39 + // If we have elements to modify, make the request
40 + if ( self.length > 0 ) {
41 + jQuery.ajax( {
42 + url: url,
43 +
44 + // If "type" variable is undefined, then "GET" method will be used.
45 + // Make value of this field explicit since
46 + // user can override it through ajaxSetup method
47 + type: type || "GET",
48 + dataType: "html",
49 + data: params
50 + } ).done( function( responseText ) {
51 +
52 + // Save response for use in complete callback
53 + response = arguments;
54 +
55 + self.html( selector ?
56 +
57 + // If a selector was specified, locate the right elements in a dummy div
58 + // Exclude scripts to avoid IE 'Permission Denied' errors
59 + jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
60 +
61 + // Otherwise use the full result
62 + responseText );
63 +
64 + // If the request succeeds, this function gets "data", "status", "jqXHR"
65 + // but they are ignored because response was set above.
66 + // If it fails, this function gets "jqXHR", "status", "error"
67 + } ).always( callback && function( jqXHR, status ) {
68 + self.each( function() {
69 + callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
70 + } );
71 + } );
72 + }
73 +
74 + return this;
75 +};
76 +
77 +} );
1 +define( [
2 + "../core",
3 + "../var/document",
4 + "../ajax"
5 +], function( jQuery, document ) {
6 +
7 +"use strict";
8 +
9 +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
10 +jQuery.ajaxPrefilter( function( s ) {
11 + if ( s.crossDomain ) {
12 + s.contents.script = false;
13 + }
14 +} );
15 +
16 +// Install script dataType
17 +jQuery.ajaxSetup( {
18 + accepts: {
19 + script: "text/javascript, application/javascript, " +
20 + "application/ecmascript, application/x-ecmascript"
21 + },
22 + contents: {
23 + script: /\b(?:java|ecma)script\b/
24 + },
25 + converters: {
26 + "text script": function( text ) {
27 + jQuery.globalEval( text );
28 + return text;
29 + }
30 + }
31 +} );
32 +
33 +// Handle cache's special case and crossDomain
34 +jQuery.ajaxPrefilter( "script", function( s ) {
35 + if ( s.cache === undefined ) {
36 + s.cache = false;
37 + }
38 + if ( s.crossDomain ) {
39 + s.type = "GET";
40 + }
41 +} );
42 +
43 +// Bind script tag hack transport
44 +jQuery.ajaxTransport( "script", function( s ) {
45 +
46 + // This transport only deals with cross domain or forced-by-attrs requests
47 + if ( s.crossDomain || s.scriptAttrs ) {
48 + var script, callback;
49 + return {
50 + send: function( _, complete ) {
51 + script = jQuery( "<script>" )
52 + .attr( s.scriptAttrs || {} )
53 + .prop( { charset: s.scriptCharset, src: s.url } )
54 + .on( "load error", callback = function( evt ) {
55 + script.remove();
56 + callback = null;
57 + if ( evt ) {
58 + complete( evt.type === "error" ? 404 : 200, evt.type );
59 + }
60 + } );
61 +
62 + // Use native DOM manipulation to avoid our domManip AJAX trickery
63 + document.head.appendChild( script[ 0 ] );
64 + },
65 + abort: function() {
66 + if ( callback ) {
67 + callback();
68 + }
69 + }
70 + };
71 + }
72 +} );
73 +
74 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return window.location;
5 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return { guid: Date.now() };
5 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return ( /\?/ );
5 +} );
1 +define( [
2 + "../core",
3 + "../var/support",
4 + "../ajax"
5 +], function( jQuery, support ) {
6 +
7 +"use strict";
8 +
9 +jQuery.ajaxSettings.xhr = function() {
10 + try {
11 + return new window.XMLHttpRequest();
12 + } catch ( e ) {}
13 +};
14 +
15 +var xhrSuccessStatus = {
16 +
17 + // File protocol always yields status code 0, assume 200
18 + 0: 200,
19 +
20 + // Support: IE <=9 only
21 + // #1450: sometimes IE returns 1223 when it should be 204
22 + 1223: 204
23 + },
24 + xhrSupported = jQuery.ajaxSettings.xhr();
25 +
26 +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
27 +support.ajax = xhrSupported = !!xhrSupported;
28 +
29 +jQuery.ajaxTransport( function( options ) {
30 + var callback, errorCallback;
31 +
32 + // Cross domain only allowed if supported through XMLHttpRequest
33 + if ( support.cors || xhrSupported && !options.crossDomain ) {
34 + return {
35 + send: function( headers, complete ) {
36 + var i,
37 + xhr = options.xhr();
38 +
39 + xhr.open(
40 + options.type,
41 + options.url,
42 + options.async,
43 + options.username,
44 + options.password
45 + );
46 +
47 + // Apply custom fields if provided
48 + if ( options.xhrFields ) {
49 + for ( i in options.xhrFields ) {
50 + xhr[ i ] = options.xhrFields[ i ];
51 + }
52 + }
53 +
54 + // Override mime type if needed
55 + if ( options.mimeType && xhr.overrideMimeType ) {
56 + xhr.overrideMimeType( options.mimeType );
57 + }
58 +
59 + // X-Requested-With header
60 + // For cross-domain requests, seeing as conditions for a preflight are
61 + // akin to a jigsaw puzzle, we simply never set it to be sure.
62 + // (it can always be set on a per-request basis or even using ajaxSetup)
63 + // For same-domain requests, won't change header if already provided.
64 + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
65 + headers[ "X-Requested-With" ] = "XMLHttpRequest";
66 + }
67 +
68 + // Set headers
69 + for ( i in headers ) {
70 + xhr.setRequestHeader( i, headers[ i ] );
71 + }
72 +
73 + // Callback
74 + callback = function( type ) {
75 + return function() {
76 + if ( callback ) {
77 + callback = errorCallback = xhr.onload =
78 + xhr.onerror = xhr.onabort = xhr.ontimeout =
79 + xhr.onreadystatechange = null;
80 +
81 + if ( type === "abort" ) {
82 + xhr.abort();
83 + } else if ( type === "error" ) {
84 +
85 + // Support: IE <=9 only
86 + // On a manual native abort, IE9 throws
87 + // errors on any property access that is not readyState
88 + if ( typeof xhr.status !== "number" ) {
89 + complete( 0, "error" );
90 + } else {
91 + complete(
92 +
93 + // File: protocol always yields status 0; see #8605, #14207
94 + xhr.status,
95 + xhr.statusText
96 + );
97 + }
98 + } else {
99 + complete(
100 + xhrSuccessStatus[ xhr.status ] || xhr.status,
101 + xhr.statusText,
102 +
103 + // Support: IE <=9 only
104 + // IE9 has no XHR2 but throws on binary (trac-11426)
105 + // For XHR2 non-text, let the caller handle it (gh-2498)
106 + ( xhr.responseType || "text" ) !== "text" ||
107 + typeof xhr.responseText !== "string" ?
108 + { binary: xhr.response } :
109 + { text: xhr.responseText },
110 + xhr.getAllResponseHeaders()
111 + );
112 + }
113 + }
114 + };
115 + };
116 +
117 + // Listen to events
118 + xhr.onload = callback();
119 + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
120 +
121 + // Support: IE 9 only
122 + // Use onreadystatechange to replace onabort
123 + // to handle uncaught aborts
124 + if ( xhr.onabort !== undefined ) {
125 + xhr.onabort = errorCallback;
126 + } else {
127 + xhr.onreadystatechange = function() {
128 +
129 + // Check readyState before timeout as it changes
130 + if ( xhr.readyState === 4 ) {
131 +
132 + // Allow onerror to be called first,
133 + // but that will not handle a native abort
134 + // Also, save errorCallback to a variable
135 + // as xhr.onerror cannot be accessed
136 + window.setTimeout( function() {
137 + if ( callback ) {
138 + errorCallback();
139 + }
140 + } );
141 + }
142 + };
143 + }
144 +
145 + // Create the abort callback
146 + callback = callback( "abort" );
147 +
148 + try {
149 +
150 + // Do send the request (this may raise an exception)
151 + xhr.send( options.hasContent && options.data || null );
152 + } catch ( e ) {
153 +
154 + // #14683: Only rethrow if this hasn't been notified as an error yet
155 + if ( callback ) {
156 + throw e;
157 + }
158 + }
159 + },
160 +
161 + abort: function() {
162 + if ( callback ) {
163 + callback();
164 + }
165 + }
166 + };
167 + }
168 +} );
169 +
170 +} );
1 +define( [
2 + "./core",
3 + "./attributes/attr",
4 + "./attributes/prop",
5 + "./attributes/classes",
6 + "./attributes/val"
7 +], function( jQuery ) {
8 +
9 +"use strict";
10 +
11 +// Return jQuery for attributes-only inclusion
12 +return jQuery;
13 +} );
1 +define( [
2 + "../core",
3 + "../core/access",
4 + "../core/nodeName",
5 + "./support",
6 + "../var/rnothtmlwhite",
7 + "../selector"
8 +], function( jQuery, access, nodeName, support, rnothtmlwhite ) {
9 +
10 +"use strict";
11 +
12 +var boolHook,
13 + attrHandle = jQuery.expr.attrHandle;
14 +
15 +jQuery.fn.extend( {
16 + attr: function( name, value ) {
17 + return access( this, jQuery.attr, name, value, arguments.length > 1 );
18 + },
19 +
20 + removeAttr: function( name ) {
21 + return this.each( function() {
22 + jQuery.removeAttr( this, name );
23 + } );
24 + }
25 +} );
26 +
27 +jQuery.extend( {
28 + attr: function( elem, name, value ) {
29 + var ret, hooks,
30 + nType = elem.nodeType;
31 +
32 + // Don't get/set attributes on text, comment and attribute nodes
33 + if ( nType === 3 || nType === 8 || nType === 2 ) {
34 + return;
35 + }
36 +
37 + // Fallback to prop when attributes are not supported
38 + if ( typeof elem.getAttribute === "undefined" ) {
39 + return jQuery.prop( elem, name, value );
40 + }
41 +
42 + // Attribute hooks are determined by the lowercase version
43 + // Grab necessary hook if one is defined
44 + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
45 + hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
46 + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
47 + }
48 +
49 + if ( value !== undefined ) {
50 + if ( value === null ) {
51 + jQuery.removeAttr( elem, name );
52 + return;
53 + }
54 +
55 + if ( hooks && "set" in hooks &&
56 + ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
57 + return ret;
58 + }
59 +
60 + elem.setAttribute( name, value + "" );
61 + return value;
62 + }
63 +
64 + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
65 + return ret;
66 + }
67 +
68 + ret = jQuery.find.attr( elem, name );
69 +
70 + // Non-existent attributes return null, we normalize to undefined
71 + return ret == null ? undefined : ret;
72 + },
73 +
74 + attrHooks: {
75 + type: {
76 + set: function( elem, value ) {
77 + if ( !support.radioValue && value === "radio" &&
78 + nodeName( elem, "input" ) ) {
79 + var val = elem.value;
80 + elem.setAttribute( "type", value );
81 + if ( val ) {
82 + elem.value = val;
83 + }
84 + return value;
85 + }
86 + }
87 + }
88 + },
89 +
90 + removeAttr: function( elem, value ) {
91 + var name,
92 + i = 0,
93 +
94 + // Attribute names can contain non-HTML whitespace characters
95 + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
96 + attrNames = value && value.match( rnothtmlwhite );
97 +
98 + if ( attrNames && elem.nodeType === 1 ) {
99 + while ( ( name = attrNames[ i++ ] ) ) {
100 + elem.removeAttribute( name );
101 + }
102 + }
103 + }
104 +} );
105 +
106 +// Hooks for boolean attributes
107 +boolHook = {
108 + set: function( elem, value, name ) {
109 + if ( value === false ) {
110 +
111 + // Remove boolean attributes when set to false
112 + jQuery.removeAttr( elem, name );
113 + } else {
114 + elem.setAttribute( name, name );
115 + }
116 + return name;
117 + }
118 +};
119 +
120 +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
121 + var getter = attrHandle[ name ] || jQuery.find.attr;
122 +
123 + attrHandle[ name ] = function( elem, name, isXML ) {
124 + var ret, handle,
125 + lowercaseName = name.toLowerCase();
126 +
127 + if ( !isXML ) {
128 +
129 + // Avoid an infinite loop by temporarily removing this function from the getter
130 + handle = attrHandle[ lowercaseName ];
131 + attrHandle[ lowercaseName ] = ret;
132 + ret = getter( elem, name, isXML ) != null ?
133 + lowercaseName :
134 + null;
135 + attrHandle[ lowercaseName ] = handle;
136 + }
137 + return ret;
138 + };
139 +} );
140 +
141 +} );
1 +define( [
2 + "../core",
3 + "../core/stripAndCollapse",
4 + "../var/isFunction",
5 + "../var/rnothtmlwhite",
6 + "../data/var/dataPriv",
7 + "../core/init"
8 +], function( jQuery, stripAndCollapse, isFunction, rnothtmlwhite, dataPriv ) {
9 +
10 +"use strict";
11 +
12 +function getClass( elem ) {
13 + return elem.getAttribute && elem.getAttribute( "class" ) || "";
14 +}
15 +
16 +function classesToArray( value ) {
17 + if ( Array.isArray( value ) ) {
18 + return value;
19 + }
20 + if ( typeof value === "string" ) {
21 + return value.match( rnothtmlwhite ) || [];
22 + }
23 + return [];
24 +}
25 +
26 +jQuery.fn.extend( {
27 + addClass: function( value ) {
28 + var classes, elem, cur, curValue, clazz, j, finalValue,
29 + i = 0;
30 +
31 + if ( isFunction( value ) ) {
32 + return this.each( function( j ) {
33 + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
34 + } );
35 + }
36 +
37 + classes = classesToArray( value );
38 +
39 + if ( classes.length ) {
40 + while ( ( elem = this[ i++ ] ) ) {
41 + curValue = getClass( elem );
42 + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
43 +
44 + if ( cur ) {
45 + j = 0;
46 + while ( ( clazz = classes[ j++ ] ) ) {
47 + if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
48 + cur += clazz + " ";
49 + }
50 + }
51 +
52 + // Only assign if different to avoid unneeded rendering.
53 + finalValue = stripAndCollapse( cur );
54 + if ( curValue !== finalValue ) {
55 + elem.setAttribute( "class", finalValue );
56 + }
57 + }
58 + }
59 + }
60 +
61 + return this;
62 + },
63 +
64 + removeClass: function( value ) {
65 + var classes, elem, cur, curValue, clazz, j, finalValue,
66 + i = 0;
67 +
68 + if ( isFunction( value ) ) {
69 + return this.each( function( j ) {
70 + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
71 + } );
72 + }
73 +
74 + if ( !arguments.length ) {
75 + return this.attr( "class", "" );
76 + }
77 +
78 + classes = classesToArray( value );
79 +
80 + if ( classes.length ) {
81 + while ( ( elem = this[ i++ ] ) ) {
82 + curValue = getClass( elem );
83 +
84 + // This expression is here for better compressibility (see addClass)
85 + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
86 +
87 + if ( cur ) {
88 + j = 0;
89 + while ( ( clazz = classes[ j++ ] ) ) {
90 +
91 + // Remove *all* instances
92 + while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
93 + cur = cur.replace( " " + clazz + " ", " " );
94 + }
95 + }
96 +
97 + // Only assign if different to avoid unneeded rendering.
98 + finalValue = stripAndCollapse( cur );
99 + if ( curValue !== finalValue ) {
100 + elem.setAttribute( "class", finalValue );
101 + }
102 + }
103 + }
104 + }
105 +
106 + return this;
107 + },
108 +
109 + toggleClass: function( value, stateVal ) {
110 + var type = typeof value,
111 + isValidValue = type === "string" || Array.isArray( value );
112 +
113 + if ( typeof stateVal === "boolean" && isValidValue ) {
114 + return stateVal ? this.addClass( value ) : this.removeClass( value );
115 + }
116 +
117 + if ( isFunction( value ) ) {
118 + return this.each( function( i ) {
119 + jQuery( this ).toggleClass(
120 + value.call( this, i, getClass( this ), stateVal ),
121 + stateVal
122 + );
123 + } );
124 + }
125 +
126 + return this.each( function() {
127 + var className, i, self, classNames;
128 +
129 + if ( isValidValue ) {
130 +
131 + // Toggle individual class names
132 + i = 0;
133 + self = jQuery( this );
134 + classNames = classesToArray( value );
135 +
136 + while ( ( className = classNames[ i++ ] ) ) {
137 +
138 + // Check each className given, space separated list
139 + if ( self.hasClass( className ) ) {
140 + self.removeClass( className );
141 + } else {
142 + self.addClass( className );
143 + }
144 + }
145 +
146 + // Toggle whole class name
147 + } else if ( value === undefined || type === "boolean" ) {
148 + className = getClass( this );
149 + if ( className ) {
150 +
151 + // Store className if set
152 + dataPriv.set( this, "__className__", className );
153 + }
154 +
155 + // If the element has a class name or if we're passed `false`,
156 + // then remove the whole classname (if there was one, the above saved it).
157 + // Otherwise bring back whatever was previously saved (if anything),
158 + // falling back to the empty string if nothing was stored.
159 + if ( this.setAttribute ) {
160 + this.setAttribute( "class",
161 + className || value === false ?
162 + "" :
163 + dataPriv.get( this, "__className__" ) || ""
164 + );
165 + }
166 + }
167 + } );
168 + },
169 +
170 + hasClass: function( selector ) {
171 + var className, elem,
172 + i = 0;
173 +
174 + className = " " + selector + " ";
175 + while ( ( elem = this[ i++ ] ) ) {
176 + if ( elem.nodeType === 1 &&
177 + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
178 + return true;
179 + }
180 + }
181 +
182 + return false;
183 + }
184 +} );
185 +
186 +} );
1 +define( [
2 + "../core",
3 + "../core/access",
4 + "./support",
5 + "../selector"
6 +], function( jQuery, access, support ) {
7 +
8 +"use strict";
9 +
10 +var rfocusable = /^(?:input|select|textarea|button)$/i,
11 + rclickable = /^(?:a|area)$/i;
12 +
13 +jQuery.fn.extend( {
14 + prop: function( name, value ) {
15 + return access( this, jQuery.prop, name, value, arguments.length > 1 );
16 + },
17 +
18 + removeProp: function( name ) {
19 + return this.each( function() {
20 + delete this[ jQuery.propFix[ name ] || name ];
21 + } );
22 + }
23 +} );
24 +
25 +jQuery.extend( {
26 + prop: function( elem, name, value ) {
27 + var ret, hooks,
28 + nType = elem.nodeType;
29 +
30 + // Don't get/set properties on text, comment and attribute nodes
31 + if ( nType === 3 || nType === 8 || nType === 2 ) {
32 + return;
33 + }
34 +
35 + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
36 +
37 + // Fix name and attach hooks
38 + name = jQuery.propFix[ name ] || name;
39 + hooks = jQuery.propHooks[ name ];
40 + }
41 +
42 + if ( value !== undefined ) {
43 + if ( hooks && "set" in hooks &&
44 + ( ret = hooks.set( elem, value, name ) ) !== undefined ) {
45 + return ret;
46 + }
47 +
48 + return ( elem[ name ] = value );
49 + }
50 +
51 + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
52 + return ret;
53 + }
54 +
55 + return elem[ name ];
56 + },
57 +
58 + propHooks: {
59 + tabIndex: {
60 + get: function( elem ) {
61 +
62 + // Support: IE <=9 - 11 only
63 + // elem.tabIndex doesn't always return the
64 + // correct value when it hasn't been explicitly set
65 + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
66 + // Use proper attribute retrieval(#12072)
67 + var tabindex = jQuery.find.attr( elem, "tabindex" );
68 +
69 + if ( tabindex ) {
70 + return parseInt( tabindex, 10 );
71 + }
72 +
73 + if (
74 + rfocusable.test( elem.nodeName ) ||
75 + rclickable.test( elem.nodeName ) &&
76 + elem.href
77 + ) {
78 + return 0;
79 + }
80 +
81 + return -1;
82 + }
83 + }
84 + },
85 +
86 + propFix: {
87 + "for": "htmlFor",
88 + "class": "className"
89 + }
90 +} );
91 +
92 +// Support: IE <=11 only
93 +// Accessing the selectedIndex property
94 +// forces the browser to respect setting selected
95 +// on the option
96 +// The getter ensures a default option is selected
97 +// when in an optgroup
98 +// eslint rule "no-unused-expressions" is disabled for this code
99 +// since it considers such accessions noop
100 +if ( !support.optSelected ) {
101 + jQuery.propHooks.selected = {
102 + get: function( elem ) {
103 +
104 + /* eslint no-unused-expressions: "off" */
105 +
106 + var parent = elem.parentNode;
107 + if ( parent && parent.parentNode ) {
108 + parent.parentNode.selectedIndex;
109 + }
110 + return null;
111 + },
112 + set: function( elem ) {
113 +
114 + /* eslint no-unused-expressions: "off" */
115 +
116 + var parent = elem.parentNode;
117 + if ( parent ) {
118 + parent.selectedIndex;
119 +
120 + if ( parent.parentNode ) {
121 + parent.parentNode.selectedIndex;
122 + }
123 + }
124 + }
125 + };
126 +}
127 +
128 +jQuery.each( [
129 + "tabIndex",
130 + "readOnly",
131 + "maxLength",
132 + "cellSpacing",
133 + "cellPadding",
134 + "rowSpan",
135 + "colSpan",
136 + "useMap",
137 + "frameBorder",
138 + "contentEditable"
139 +], function() {
140 + jQuery.propFix[ this.toLowerCase() ] = this;
141 +} );
142 +
143 +} );
1 +define( [
2 + "../var/document",
3 + "../var/support"
4 +], function( document, support ) {
5 +
6 +"use strict";
7 +
8 +( function() {
9 + var input = document.createElement( "input" ),
10 + select = document.createElement( "select" ),
11 + opt = select.appendChild( document.createElement( "option" ) );
12 +
13 + input.type = "checkbox";
14 +
15 + // Support: Android <=4.3 only
16 + // Default value for a checkbox should be "on"
17 + support.checkOn = input.value !== "";
18 +
19 + // Support: IE <=11 only
20 + // Must access selectedIndex to make default options select
21 + support.optSelected = opt.selected;
22 +
23 + // Support: IE <=11 only
24 + // An input loses its value after becoming a radio
25 + input = document.createElement( "input" );
26 + input.value = "t";
27 + input.type = "radio";
28 + support.radioValue = input.value === "t";
29 +} )();
30 +
31 +return support;
32 +
33 +} );
1 +define( [
2 + "../core",
3 + "../core/stripAndCollapse",
4 + "./support",
5 + "../core/nodeName",
6 + "../var/isFunction",
7 +
8 + "../core/init"
9 +], function( jQuery, stripAndCollapse, support, nodeName, isFunction ) {
10 +
11 +"use strict";
12 +
13 +var rreturn = /\r/g;
14 +
15 +jQuery.fn.extend( {
16 + val: function( value ) {
17 + var hooks, ret, valueIsFunction,
18 + elem = this[ 0 ];
19 +
20 + if ( !arguments.length ) {
21 + if ( elem ) {
22 + hooks = jQuery.valHooks[ elem.type ] ||
23 + jQuery.valHooks[ elem.nodeName.toLowerCase() ];
24 +
25 + if ( hooks &&
26 + "get" in hooks &&
27 + ( ret = hooks.get( elem, "value" ) ) !== undefined
28 + ) {
29 + return ret;
30 + }
31 +
32 + ret = elem.value;
33 +
34 + // Handle most common string cases
35 + if ( typeof ret === "string" ) {
36 + return ret.replace( rreturn, "" );
37 + }
38 +
39 + // Handle cases where value is null/undef or number
40 + return ret == null ? "" : ret;
41 + }
42 +
43 + return;
44 + }
45 +
46 + valueIsFunction = isFunction( value );
47 +
48 + return this.each( function( i ) {
49 + var val;
50 +
51 + if ( this.nodeType !== 1 ) {
52 + return;
53 + }
54 +
55 + if ( valueIsFunction ) {
56 + val = value.call( this, i, jQuery( this ).val() );
57 + } else {
58 + val = value;
59 + }
60 +
61 + // Treat null/undefined as ""; convert numbers to string
62 + if ( val == null ) {
63 + val = "";
64 +
65 + } else if ( typeof val === "number" ) {
66 + val += "";
67 +
68 + } else if ( Array.isArray( val ) ) {
69 + val = jQuery.map( val, function( value ) {
70 + return value == null ? "" : value + "";
71 + } );
72 + }
73 +
74 + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
75 +
76 + // If set returns undefined, fall back to normal setting
77 + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
78 + this.value = val;
79 + }
80 + } );
81 + }
82 +} );
83 +
84 +jQuery.extend( {
85 + valHooks: {
86 + option: {
87 + get: function( elem ) {
88 +
89 + var val = jQuery.find.attr( elem, "value" );
90 + return val != null ?
91 + val :
92 +
93 + // Support: IE <=10 - 11 only
94 + // option.text throws exceptions (#14686, #14858)
95 + // Strip and collapse whitespace
96 + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
97 + stripAndCollapse( jQuery.text( elem ) );
98 + }
99 + },
100 + select: {
101 + get: function( elem ) {
102 + var value, option, i,
103 + options = elem.options,
104 + index = elem.selectedIndex,
105 + one = elem.type === "select-one",
106 + values = one ? null : [],
107 + max = one ? index + 1 : options.length;
108 +
109 + if ( index < 0 ) {
110 + i = max;
111 +
112 + } else {
113 + i = one ? index : 0;
114 + }
115 +
116 + // Loop through all the selected options
117 + for ( ; i < max; i++ ) {
118 + option = options[ i ];
119 +
120 + // Support: IE <=9 only
121 + // IE8-9 doesn't update selected after form reset (#2551)
122 + if ( ( option.selected || i === index ) &&
123 +
124 + // Don't return options that are disabled or in a disabled optgroup
125 + !option.disabled &&
126 + ( !option.parentNode.disabled ||
127 + !nodeName( option.parentNode, "optgroup" ) ) ) {
128 +
129 + // Get the specific value for the option
130 + value = jQuery( option ).val();
131 +
132 + // We don't need an array for one selects
133 + if ( one ) {
134 + return value;
135 + }
136 +
137 + // Multi-Selects return an array
138 + values.push( value );
139 + }
140 + }
141 +
142 + return values;
143 + },
144 +
145 + set: function( elem, value ) {
146 + var optionSet, option,
147 + options = elem.options,
148 + values = jQuery.makeArray( value ),
149 + i = options.length;
150 +
151 + while ( i-- ) {
152 + option = options[ i ];
153 +
154 + /* eslint-disable no-cond-assign */
155 +
156 + if ( option.selected =
157 + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
158 + ) {
159 + optionSet = true;
160 + }
161 +
162 + /* eslint-enable no-cond-assign */
163 + }
164 +
165 + // Force browsers to behave consistently when non-matching value is set
166 + if ( !optionSet ) {
167 + elem.selectedIndex = -1;
168 + }
169 + return values;
170 + }
171 + }
172 + }
173 +} );
174 +
175 +// Radios and checkboxes getter/setter
176 +jQuery.each( [ "radio", "checkbox" ], function() {
177 + jQuery.valHooks[ this ] = {
178 + set: function( elem, value ) {
179 + if ( Array.isArray( value ) ) {
180 + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
181 + }
182 + }
183 + };
184 + if ( !support.checkOn ) {
185 + jQuery.valHooks[ this ].get = function( elem ) {
186 + return elem.getAttribute( "value" ) === null ? "on" : elem.value;
187 + };
188 + }
189 +} );
190 +
191 +} );
1 +define( [
2 + "./core",
3 + "./core/toType",
4 + "./var/isFunction",
5 + "./var/rnothtmlwhite"
6 +], function( jQuery, toType, isFunction, rnothtmlwhite ) {
7 +
8 +"use strict";
9 +
10 +// Convert String-formatted options into Object-formatted ones
11 +function createOptions( options ) {
12 + var object = {};
13 + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
14 + object[ flag ] = true;
15 + } );
16 + return object;
17 +}
18 +
19 +/*
20 + * Create a callback list using the following parameters:
21 + *
22 + * options: an optional list of space-separated options that will change how
23 + * the callback list behaves or a more traditional option object
24 + *
25 + * By default a callback list will act like an event callback list and can be
26 + * "fired" multiple times.
27 + *
28 + * Possible options:
29 + *
30 + * once: will ensure the callback list can only be fired once (like a Deferred)
31 + *
32 + * memory: will keep track of previous values and will call any callback added
33 + * after the list has been fired right away with the latest "memorized"
34 + * values (like a Deferred)
35 + *
36 + * unique: will ensure a callback can only be added once (no duplicate in the list)
37 + *
38 + * stopOnFalse: interrupt callings when a callback returns false
39 + *
40 + */
41 +jQuery.Callbacks = function( options ) {
42 +
43 + // Convert options from String-formatted to Object-formatted if needed
44 + // (we check in cache first)
45 + options = typeof options === "string" ?
46 + createOptions( options ) :
47 + jQuery.extend( {}, options );
48 +
49 + var // Flag to know if list is currently firing
50 + firing,
51 +
52 + // Last fire value for non-forgettable lists
53 + memory,
54 +
55 + // Flag to know if list was already fired
56 + fired,
57 +
58 + // Flag to prevent firing
59 + locked,
60 +
61 + // Actual callback list
62 + list = [],
63 +
64 + // Queue of execution data for repeatable lists
65 + queue = [],
66 +
67 + // Index of currently firing callback (modified by add/remove as needed)
68 + firingIndex = -1,
69 +
70 + // Fire callbacks
71 + fire = function() {
72 +
73 + // Enforce single-firing
74 + locked = locked || options.once;
75 +
76 + // Execute callbacks for all pending executions,
77 + // respecting firingIndex overrides and runtime changes
78 + fired = firing = true;
79 + for ( ; queue.length; firingIndex = -1 ) {
80 + memory = queue.shift();
81 + while ( ++firingIndex < list.length ) {
82 +
83 + // Run callback and check for early termination
84 + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
85 + options.stopOnFalse ) {
86 +
87 + // Jump to end and forget the data so .add doesn't re-fire
88 + firingIndex = list.length;
89 + memory = false;
90 + }
91 + }
92 + }
93 +
94 + // Forget the data if we're done with it
95 + if ( !options.memory ) {
96 + memory = false;
97 + }
98 +
99 + firing = false;
100 +
101 + // Clean up if we're done firing for good
102 + if ( locked ) {
103 +
104 + // Keep an empty list if we have data for future add calls
105 + if ( memory ) {
106 + list = [];
107 +
108 + // Otherwise, this object is spent
109 + } else {
110 + list = "";
111 + }
112 + }
113 + },
114 +
115 + // Actual Callbacks object
116 + self = {
117 +
118 + // Add a callback or a collection of callbacks to the list
119 + add: function() {
120 + if ( list ) {
121 +
122 + // If we have memory from a past run, we should fire after adding
123 + if ( memory && !firing ) {
124 + firingIndex = list.length - 1;
125 + queue.push( memory );
126 + }
127 +
128 + ( function add( args ) {
129 + jQuery.each( args, function( _, arg ) {
130 + if ( isFunction( arg ) ) {
131 + if ( !options.unique || !self.has( arg ) ) {
132 + list.push( arg );
133 + }
134 + } else if ( arg && arg.length && toType( arg ) !== "string" ) {
135 +
136 + // Inspect recursively
137 + add( arg );
138 + }
139 + } );
140 + } )( arguments );
141 +
142 + if ( memory && !firing ) {
143 + fire();
144 + }
145 + }
146 + return this;
147 + },
148 +
149 + // Remove a callback from the list
150 + remove: function() {
151 + jQuery.each( arguments, function( _, arg ) {
152 + var index;
153 + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
154 + list.splice( index, 1 );
155 +
156 + // Handle firing indexes
157 + if ( index <= firingIndex ) {
158 + firingIndex--;
159 + }
160 + }
161 + } );
162 + return this;
163 + },
164 +
165 + // Check if a given callback is in the list.
166 + // If no argument is given, return whether or not list has callbacks attached.
167 + has: function( fn ) {
168 + return fn ?
169 + jQuery.inArray( fn, list ) > -1 :
170 + list.length > 0;
171 + },
172 +
173 + // Remove all callbacks from the list
174 + empty: function() {
175 + if ( list ) {
176 + list = [];
177 + }
178 + return this;
179 + },
180 +
181 + // Disable .fire and .add
182 + // Abort any current/pending executions
183 + // Clear all callbacks and values
184 + disable: function() {
185 + locked = queue = [];
186 + list = memory = "";
187 + return this;
188 + },
189 + disabled: function() {
190 + return !list;
191 + },
192 +
193 + // Disable .fire
194 + // Also disable .add unless we have memory (since it would have no effect)
195 + // Abort any pending executions
196 + lock: function() {
197 + locked = queue = [];
198 + if ( !memory && !firing ) {
199 + list = memory = "";
200 + }
201 + return this;
202 + },
203 + locked: function() {
204 + return !!locked;
205 + },
206 +
207 + // Call all callbacks with the given context and arguments
208 + fireWith: function( context, args ) {
209 + if ( !locked ) {
210 + args = args || [];
211 + args = [ context, args.slice ? args.slice() : args ];
212 + queue.push( args );
213 + if ( !firing ) {
214 + fire();
215 + }
216 + }
217 + return this;
218 + },
219 +
220 + // Call all the callbacks with the given arguments
221 + fire: function() {
222 + self.fireWith( this, arguments );
223 + return this;
224 + },
225 +
226 + // To know if the callbacks have already been called at least once
227 + fired: function() {
228 + return !!fired;
229 + }
230 + };
231 +
232 + return self;
233 +};
234 +
235 +return jQuery;
236 +} );
1 +/* global Symbol */
2 +// Defining this global in .eslintrc.json would create a danger of using the global
3 +// unguarded in another place, it seems safer to define global only for this module
4 +
5 +define( [
6 + "./var/arr",
7 + "./var/getProto",
8 + "./var/slice",
9 + "./var/flat",
10 + "./var/push",
11 + "./var/indexOf",
12 + "./var/class2type",
13 + "./var/toString",
14 + "./var/hasOwn",
15 + "./var/fnToString",
16 + "./var/ObjectFunctionString",
17 + "./var/support",
18 + "./var/isFunction",
19 + "./var/isWindow",
20 + "./core/DOMEval",
21 + "./core/toType"
22 +], function( arr, getProto, slice, flat, push, indexOf,
23 + class2type, toString, hasOwn, fnToString, ObjectFunctionString,
24 + support, isFunction, isWindow, DOMEval, toType ) {
25 +
26 +"use strict";
27 +
28 +var
29 + version = "3.6.0",
30 +
31 + // Define a local copy of jQuery
32 + jQuery = function( selector, context ) {
33 +
34 + // The jQuery object is actually just the init constructor 'enhanced'
35 + // Need init if jQuery is called (just allow error to be thrown if not included)
36 + return new jQuery.fn.init( selector, context );
37 + };
38 +
39 +jQuery.fn = jQuery.prototype = {
40 +
41 + // The current version of jQuery being used
42 + jquery: version,
43 +
44 + constructor: jQuery,
45 +
46 + // The default length of a jQuery object is 0
47 + length: 0,
48 +
49 + toArray: function() {
50 + return slice.call( this );
51 + },
52 +
53 + // Get the Nth element in the matched element set OR
54 + // Get the whole matched element set as a clean array
55 + get: function( num ) {
56 +
57 + // Return all the elements in a clean array
58 + if ( num == null ) {
59 + return slice.call( this );
60 + }
61 +
62 + // Return just the one element from the set
63 + return num < 0 ? this[ num + this.length ] : this[ num ];
64 + },
65 +
66 + // Take an array of elements and push it onto the stack
67 + // (returning the new matched element set)
68 + pushStack: function( elems ) {
69 +
70 + // Build a new jQuery matched element set
71 + var ret = jQuery.merge( this.constructor(), elems );
72 +
73 + // Add the old object onto the stack (as a reference)
74 + ret.prevObject = this;
75 +
76 + // Return the newly-formed element set
77 + return ret;
78 + },
79 +
80 + // Execute a callback for every element in the matched set.
81 + each: function( callback ) {
82 + return jQuery.each( this, callback );
83 + },
84 +
85 + map: function( callback ) {
86 + return this.pushStack( jQuery.map( this, function( elem, i ) {
87 + return callback.call( elem, i, elem );
88 + } ) );
89 + },
90 +
91 + slice: function() {
92 + return this.pushStack( slice.apply( this, arguments ) );
93 + },
94 +
95 + first: function() {
96 + return this.eq( 0 );
97 + },
98 +
99 + last: function() {
100 + return this.eq( -1 );
101 + },
102 +
103 + even: function() {
104 + return this.pushStack( jQuery.grep( this, function( _elem, i ) {
105 + return ( i + 1 ) % 2;
106 + } ) );
107 + },
108 +
109 + odd: function() {
110 + return this.pushStack( jQuery.grep( this, function( _elem, i ) {
111 + return i % 2;
112 + } ) );
113 + },
114 +
115 + eq: function( i ) {
116 + var len = this.length,
117 + j = +i + ( i < 0 ? len : 0 );
118 + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
119 + },
120 +
121 + end: function() {
122 + return this.prevObject || this.constructor();
123 + },
124 +
125 + // For internal use only.
126 + // Behaves like an Array's method, not like a jQuery method.
127 + push: push,
128 + sort: arr.sort,
129 + splice: arr.splice
130 +};
131 +
132 +jQuery.extend = jQuery.fn.extend = function() {
133 + var options, name, src, copy, copyIsArray, clone,
134 + target = arguments[ 0 ] || {},
135 + i = 1,
136 + length = arguments.length,
137 + deep = false;
138 +
139 + // Handle a deep copy situation
140 + if ( typeof target === "boolean" ) {
141 + deep = target;
142 +
143 + // Skip the boolean and the target
144 + target = arguments[ i ] || {};
145 + i++;
146 + }
147 +
148 + // Handle case when target is a string or something (possible in deep copy)
149 + if ( typeof target !== "object" && !isFunction( target ) ) {
150 + target = {};
151 + }
152 +
153 + // Extend jQuery itself if only one argument is passed
154 + if ( i === length ) {
155 + target = this;
156 + i--;
157 + }
158 +
159 + for ( ; i < length; i++ ) {
160 +
161 + // Only deal with non-null/undefined values
162 + if ( ( options = arguments[ i ] ) != null ) {
163 +
164 + // Extend the base object
165 + for ( name in options ) {
166 + copy = options[ name ];
167 +
168 + // Prevent Object.prototype pollution
169 + // Prevent never-ending loop
170 + if ( name === "__proto__" || target === copy ) {
171 + continue;
172 + }
173 +
174 + // Recurse if we're merging plain objects or arrays
175 + if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
176 + ( copyIsArray = Array.isArray( copy ) ) ) ) {
177 + src = target[ name ];
178 +
179 + // Ensure proper type for the source value
180 + if ( copyIsArray && !Array.isArray( src ) ) {
181 + clone = [];
182 + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
183 + clone = {};
184 + } else {
185 + clone = src;
186 + }
187 + copyIsArray = false;
188 +
189 + // Never move original objects, clone them
190 + target[ name ] = jQuery.extend( deep, clone, copy );
191 +
192 + // Don't bring in undefined values
193 + } else if ( copy !== undefined ) {
194 + target[ name ] = copy;
195 + }
196 + }
197 + }
198 + }
199 +
200 + // Return the modified object
201 + return target;
202 +};
203 +
204 +jQuery.extend( {
205 +
206 + // Unique for each copy of jQuery on the page
207 + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
208 +
209 + // Assume jQuery is ready without the ready module
210 + isReady: true,
211 +
212 + error: function( msg ) {
213 + throw new Error( msg );
214 + },
215 +
216 + noop: function() {},
217 +
218 + isPlainObject: function( obj ) {
219 + var proto, Ctor;
220 +
221 + // Detect obvious negatives
222 + // Use toString instead of jQuery.type to catch host objects
223 + if ( !obj || toString.call( obj ) !== "[object Object]" ) {
224 + return false;
225 + }
226 +
227 + proto = getProto( obj );
228 +
229 + // Objects with no prototype (e.g., `Object.create( null )`) are plain
230 + if ( !proto ) {
231 + return true;
232 + }
233 +
234 + // Objects with prototype are plain iff they were constructed by a global Object function
235 + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
236 + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
237 + },
238 +
239 + isEmptyObject: function( obj ) {
240 + var name;
241 +
242 + for ( name in obj ) {
243 + return false;
244 + }
245 + return true;
246 + },
247 +
248 + // Evaluates a script in a provided context; falls back to the global one
249 + // if not specified.
250 + globalEval: function( code, options, doc ) {
251 + DOMEval( code, { nonce: options && options.nonce }, doc );
252 + },
253 +
254 + each: function( obj, callback ) {
255 + var length, i = 0;
256 +
257 + if ( isArrayLike( obj ) ) {
258 + length = obj.length;
259 + for ( ; i < length; i++ ) {
260 + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
261 + break;
262 + }
263 + }
264 + } else {
265 + for ( i in obj ) {
266 + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
267 + break;
268 + }
269 + }
270 + }
271 +
272 + return obj;
273 + },
274 +
275 + // results is for internal usage only
276 + makeArray: function( arr, results ) {
277 + var ret = results || [];
278 +
279 + if ( arr != null ) {
280 + if ( isArrayLike( Object( arr ) ) ) {
281 + jQuery.merge( ret,
282 + typeof arr === "string" ?
283 + [ arr ] : arr
284 + );
285 + } else {
286 + push.call( ret, arr );
287 + }
288 + }
289 +
290 + return ret;
291 + },
292 +
293 + inArray: function( elem, arr, i ) {
294 + return arr == null ? -1 : indexOf.call( arr, elem, i );
295 + },
296 +
297 + // Support: Android <=4.0 only, PhantomJS 1 only
298 + // push.apply(_, arraylike) throws on ancient WebKit
299 + merge: function( first, second ) {
300 + var len = +second.length,
301 + j = 0,
302 + i = first.length;
303 +
304 + for ( ; j < len; j++ ) {
305 + first[ i++ ] = second[ j ];
306 + }
307 +
308 + first.length = i;
309 +
310 + return first;
311 + },
312 +
313 + grep: function( elems, callback, invert ) {
314 + var callbackInverse,
315 + matches = [],
316 + i = 0,
317 + length = elems.length,
318 + callbackExpect = !invert;
319 +
320 + // Go through the array, only saving the items
321 + // that pass the validator function
322 + for ( ; i < length; i++ ) {
323 + callbackInverse = !callback( elems[ i ], i );
324 + if ( callbackInverse !== callbackExpect ) {
325 + matches.push( elems[ i ] );
326 + }
327 + }
328 +
329 + return matches;
330 + },
331 +
332 + // arg is for internal usage only
333 + map: function( elems, callback, arg ) {
334 + var length, value,
335 + i = 0,
336 + ret = [];
337 +
338 + // Go through the array, translating each of the items to their new values
339 + if ( isArrayLike( elems ) ) {
340 + length = elems.length;
341 + for ( ; i < length; i++ ) {
342 + value = callback( elems[ i ], i, arg );
343 +
344 + if ( value != null ) {
345 + ret.push( value );
346 + }
347 + }
348 +
349 + // Go through every key on the object,
350 + } else {
351 + for ( i in elems ) {
352 + value = callback( elems[ i ], i, arg );
353 +
354 + if ( value != null ) {
355 + ret.push( value );
356 + }
357 + }
358 + }
359 +
360 + // Flatten any nested arrays
361 + return flat( ret );
362 + },
363 +
364 + // A global GUID counter for objects
365 + guid: 1,
366 +
367 + // jQuery.support is not used in Core but other projects attach their
368 + // properties to it so it needs to exist.
369 + support: support
370 +} );
371 +
372 +if ( typeof Symbol === "function" ) {
373 + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
374 +}
375 +
376 +// Populate the class2type map
377 +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
378 + function( _i, name ) {
379 + class2type[ "[object " + name + "]" ] = name.toLowerCase();
380 + } );
381 +
382 +function isArrayLike( obj ) {
383 +
384 + // Support: real iOS 8.2 only (not reproducible in simulator)
385 + // `in` check used to prevent JIT error (gh-2145)
386 + // hasOwn isn't used here due to false negatives
387 + // regarding Nodelist length in IE
388 + var length = !!obj && "length" in obj && obj.length,
389 + type = toType( obj );
390 +
391 + if ( isFunction( obj ) || isWindow( obj ) ) {
392 + return false;
393 + }
394 +
395 + return type === "array" || length === 0 ||
396 + typeof length === "number" && length > 0 && ( length - 1 ) in obj;
397 +}
398 +
399 +return jQuery;
400 +} );
1 +define( [
2 + "../var/document"
3 +], function( document ) {
4 + "use strict";
5 +
6 + var preservedScriptAttributes = {
7 + type: true,
8 + src: true,
9 + nonce: true,
10 + noModule: true
11 + };
12 +
13 + function DOMEval( code, node, doc ) {
14 + doc = doc || document;
15 +
16 + var i, val,
17 + script = doc.createElement( "script" );
18 +
19 + script.text = code;
20 + if ( node ) {
21 + for ( i in preservedScriptAttributes ) {
22 +
23 + // Support: Firefox 64+, Edge 18+
24 + // Some browsers don't support the "nonce" property on scripts.
25 + // On the other hand, just using `getAttribute` is not enough as
26 + // the `nonce` attribute is reset to an empty string whenever it
27 + // becomes browsing-context connected.
28 + // See https://github.com/whatwg/html/issues/2369
29 + // See https://html.spec.whatwg.org/#nonce-attributes
30 + // The `node.getAttribute` check was added for the sake of
31 + // `jQuery.globalEval` so that it can fake a nonce-containing node
32 + // via an object.
33 + val = node[ i ] || node.getAttribute && node.getAttribute( i );
34 + if ( val ) {
35 + script.setAttribute( i, val );
36 + }
37 + }
38 + }
39 + doc.head.appendChild( script ).parentNode.removeChild( script );
40 + }
41 +
42 + return DOMEval;
43 +} );
1 +define( [
2 + "../core",
3 + "../core/toType",
4 + "../var/isFunction"
5 +], function( jQuery, toType, isFunction ) {
6 +
7 +"use strict";
8 +
9 +// Multifunctional method to get and set values of a collection
10 +// The value/s can optionally be executed if it's a function
11 +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
12 + var i = 0,
13 + len = elems.length,
14 + bulk = key == null;
15 +
16 + // Sets many values
17 + if ( toType( key ) === "object" ) {
18 + chainable = true;
19 + for ( i in key ) {
20 + access( elems, fn, i, key[ i ], true, emptyGet, raw );
21 + }
22 +
23 + // Sets one value
24 + } else if ( value !== undefined ) {
25 + chainable = true;
26 +
27 + if ( !isFunction( value ) ) {
28 + raw = true;
29 + }
30 +
31 + if ( bulk ) {
32 +
33 + // Bulk operations run against the entire set
34 + if ( raw ) {
35 + fn.call( elems, value );
36 + fn = null;
37 +
38 + // ...except when executing function values
39 + } else {
40 + bulk = fn;
41 + fn = function( elem, _key, value ) {
42 + return bulk.call( jQuery( elem ), value );
43 + };
44 + }
45 + }
46 +
47 + if ( fn ) {
48 + for ( ; i < len; i++ ) {
49 + fn(
50 + elems[ i ], key, raw ?
51 + value :
52 + value.call( elems[ i ], i, fn( elems[ i ], key ) )
53 + );
54 + }
55 + }
56 + }
57 +
58 + if ( chainable ) {
59 + return elems;
60 + }
61 +
62 + // Gets
63 + if ( bulk ) {
64 + return fn.call( elems );
65 + }
66 +
67 + return len ? fn( elems[ 0 ], key ) : emptyGet;
68 +};
69 +
70 +return access;
71 +
72 +} );
1 +define( [], function() {
2 +
3 +"use strict";
4 +
5 +// Matches dashed string for camelizing
6 +var rmsPrefix = /^-ms-/,
7 + rdashAlpha = /-([a-z])/g;
8 +
9 +// Used by camelCase as callback to replace()
10 +function fcamelCase( _all, letter ) {
11 + return letter.toUpperCase();
12 +}
13 +
14 +// Convert dashed to camelCase; used by the css and data modules
15 +// Support: IE <=9 - 11, Edge 12 - 15
16 +// Microsoft forgot to hump their vendor prefix (#9572)
17 +function camelCase( string ) {
18 + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
19 +}
20 +
21 +return camelCase;
22 +
23 +} );
1 +// Initialize a jQuery object
2 +define( [
3 + "../core",
4 + "../var/document",
5 + "../var/isFunction",
6 + "./var/rsingleTag",
7 +
8 + "../traversing/findFilter"
9 +], function( jQuery, document, isFunction, rsingleTag ) {
10 +
11 +"use strict";
12 +
13 +// A central reference to the root jQuery(document)
14 +var rootjQuery,
15 +
16 + // A simple way to check for HTML strings
17 + // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
18 + // Strict HTML recognition (#11290: must start with <)
19 + // Shortcut simple #id case for speed
20 + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
21 +
22 + init = jQuery.fn.init = function( selector, context, root ) {
23 + var match, elem;
24 +
25 + // HANDLE: $(""), $(null), $(undefined), $(false)
26 + if ( !selector ) {
27 + return this;
28 + }
29 +
30 + // Method init() accepts an alternate rootjQuery
31 + // so migrate can support jQuery.sub (gh-2101)
32 + root = root || rootjQuery;
33 +
34 + // Handle HTML strings
35 + if ( typeof selector === "string" ) {
36 + if ( selector[ 0 ] === "<" &&
37 + selector[ selector.length - 1 ] === ">" &&
38 + selector.length >= 3 ) {
39 +
40 + // Assume that strings that start and end with <> are HTML and skip the regex check
41 + match = [ null, selector, null ];
42 +
43 + } else {
44 + match = rquickExpr.exec( selector );
45 + }
46 +
47 + // Match html or make sure no context is specified for #id
48 + if ( match && ( match[ 1 ] || !context ) ) {
49 +
50 + // HANDLE: $(html) -> $(array)
51 + if ( match[ 1 ] ) {
52 + context = context instanceof jQuery ? context[ 0 ] : context;
53 +
54 + // Option to run scripts is true for back-compat
55 + // Intentionally let the error be thrown if parseHTML is not present
56 + jQuery.merge( this, jQuery.parseHTML(
57 + match[ 1 ],
58 + context && context.nodeType ? context.ownerDocument || context : document,
59 + true
60 + ) );
61 +
62 + // HANDLE: $(html, props)
63 + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
64 + for ( match in context ) {
65 +
66 + // Properties of context are called as methods if possible
67 + if ( isFunction( this[ match ] ) ) {
68 + this[ match ]( context[ match ] );
69 +
70 + // ...and otherwise set as attributes
71 + } else {
72 + this.attr( match, context[ match ] );
73 + }
74 + }
75 + }
76 +
77 + return this;
78 +
79 + // HANDLE: $(#id)
80 + } else {
81 + elem = document.getElementById( match[ 2 ] );
82 +
83 + if ( elem ) {
84 +
85 + // Inject the element directly into the jQuery object
86 + this[ 0 ] = elem;
87 + this.length = 1;
88 + }
89 + return this;
90 + }
91 +
92 + // HANDLE: $(expr, $(...))
93 + } else if ( !context || context.jquery ) {
94 + return ( context || root ).find( selector );
95 +
96 + // HANDLE: $(expr, context)
97 + // (which is just equivalent to: $(context).find(expr)
98 + } else {
99 + return this.constructor( context ).find( selector );
100 + }
101 +
102 + // HANDLE: $(DOMElement)
103 + } else if ( selector.nodeType ) {
104 + this[ 0 ] = selector;
105 + this.length = 1;
106 + return this;
107 +
108 + // HANDLE: $(function)
109 + // Shortcut for document ready
110 + } else if ( isFunction( selector ) ) {
111 + return root.ready !== undefined ?
112 + root.ready( selector ) :
113 +
114 + // Execute immediately if ready is not present
115 + selector( jQuery );
116 + }
117 +
118 + return jQuery.makeArray( selector, this );
119 + };
120 +
121 +// Give the init function the jQuery prototype for later instantiation
122 +init.prototype = jQuery.fn;
123 +
124 +// Initialize central reference
125 +rootjQuery = jQuery( document );
126 +
127 +return init;
128 +
129 +} );
1 +define( [
2 + "../core",
3 + "../var/documentElement",
4 + "../selector" // jQuery.contains
5 +], function( jQuery, documentElement ) {
6 + "use strict";
7 +
8 + var isAttached = function( elem ) {
9 + return jQuery.contains( elem.ownerDocument, elem );
10 + },
11 + composed = { composed: true };
12 +
13 + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
14 + // Check attachment across shadow DOM boundaries when possible (gh-3504)
15 + // Support: iOS 10.0-10.2 only
16 + // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
17 + // leading to errors. We need to check for `getRootNode`.
18 + if ( documentElement.getRootNode ) {
19 + isAttached = function( elem ) {
20 + return jQuery.contains( elem.ownerDocument, elem ) ||
21 + elem.getRootNode( composed ) === elem.ownerDocument;
22 + };
23 + }
24 +
25 + return isAttached;
26 +} );
1 +define( function() {
2 +
3 +"use strict";
4 +
5 +function nodeName( elem, name ) {
6 +
7 + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
8 +
9 +}
10 +
11 +return nodeName;
12 +
13 +} );
1 +define( [
2 + "../core",
3 + "../var/document",
4 + "./var/rsingleTag",
5 + "../manipulation/buildFragment",
6 +
7 + // This is the only module that needs core/support
8 + "./support"
9 +], function( jQuery, document, rsingleTag, buildFragment, support ) {
10 +
11 +"use strict";
12 +
13 +// Argument "data" should be string of html
14 +// context (optional): If specified, the fragment will be created in this context,
15 +// defaults to document
16 +// keepScripts (optional): If true, will include scripts passed in the html string
17 +jQuery.parseHTML = function( data, context, keepScripts ) {
18 + if ( typeof data !== "string" ) {
19 + return [];
20 + }
21 + if ( typeof context === "boolean" ) {
22 + keepScripts = context;
23 + context = false;
24 + }
25 +
26 + var base, parsed, scripts;
27 +
28 + if ( !context ) {
29 +
30 + // Stop scripts or inline event handlers from being executed immediately
31 + // by using document.implementation
32 + if ( support.createHTMLDocument ) {
33 + context = document.implementation.createHTMLDocument( "" );
34 +
35 + // Set the base href for the created document
36 + // so any parsed elements with URLs
37 + // are based on the document's URL (gh-2965)
38 + base = context.createElement( "base" );
39 + base.href = document.location.href;
40 + context.head.appendChild( base );
41 + } else {
42 + context = document;
43 + }
44 + }
45 +
46 + parsed = rsingleTag.exec( data );
47 + scripts = !keepScripts && [];
48 +
49 + // Single tag
50 + if ( parsed ) {
51 + return [ context.createElement( parsed[ 1 ] ) ];
52 + }
53 +
54 + parsed = buildFragment( [ data ], context, scripts );
55 +
56 + if ( scripts && scripts.length ) {
57 + jQuery( scripts ).remove();
58 + }
59 +
60 + return jQuery.merge( [], parsed.childNodes );
61 +};
62 +
63 +return jQuery.parseHTML;
64 +
65 +} );
1 +define( [
2 + "../core"
3 +], function( jQuery ) {
4 +
5 +"use strict";
6 +
7 +// Cross-browser xml parsing
8 +jQuery.parseXML = function( data ) {
9 + var xml, parserErrorElem;
10 + if ( !data || typeof data !== "string" ) {
11 + return null;
12 + }
13 +
14 + // Support: IE 9 - 11 only
15 + // IE throws on parseFromString with invalid input.
16 + try {
17 + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
18 + } catch ( e ) {}
19 +
20 + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
21 + if ( !xml || parserErrorElem ) {
22 + jQuery.error( "Invalid XML: " + (
23 + parserErrorElem ?
24 + jQuery.map( parserErrorElem.childNodes, function( el ) {
25 + return el.textContent;
26 + } ).join( "\n" ) :
27 + data
28 + ) );
29 + }
30 + return xml;
31 +};
32 +
33 +return jQuery.parseXML;
34 +
35 +} );
1 +define( [
2 + "../core",
3 + "../var/document",
4 + "../var/isFunction"
5 +], function( jQuery, document, isFunction ) {
6 +
7 +"use strict";
8 +
9 +var readyCallbacks = [],
10 + whenReady = function( fn ) {
11 + readyCallbacks.push( fn );
12 + },
13 + executeReady = function( fn ) {
14 +
15 + // Prevent errors from freezing future callback execution (gh-1823)
16 + // Not backwards-compatible as this does not execute sync
17 + window.setTimeout( function() {
18 + fn.call( document, jQuery );
19 + } );
20 + };
21 +
22 +jQuery.fn.ready = function( fn ) {
23 + whenReady( fn );
24 + return this;
25 +};
26 +
27 +jQuery.extend( {
28 +
29 + // Is the DOM ready to be used? Set to true once it occurs.
30 + isReady: false,
31 +
32 + // A counter to track how many items to wait for before
33 + // the ready event fires. See #6781
34 + readyWait: 1,
35 +
36 + ready: function( wait ) {
37 +
38 + // Abort if there are pending holds or we're already ready
39 + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
40 + return;
41 + }
42 +
43 + // Remember that the DOM is ready
44 + jQuery.isReady = true;
45 +
46 + // If a normal DOM Ready event fired, decrement, and wait if need be
47 + if ( wait !== true && --jQuery.readyWait > 0 ) {
48 + return;
49 + }
50 +
51 + whenReady = function( fn ) {
52 + readyCallbacks.push( fn );
53 +
54 + while ( readyCallbacks.length ) {
55 + fn = readyCallbacks.shift();
56 + if ( isFunction( fn ) ) {
57 + executeReady( fn );
58 + }
59 + }
60 + };
61 +
62 + whenReady();
63 + }
64 +} );
65 +
66 +// Make jQuery.ready Promise consumable (gh-1778)
67 +jQuery.ready.then = jQuery.fn.ready;
68 +
69 +/**
70 + * The ready event handler and self cleanup method
71 + */
72 +function completed() {
73 + document.removeEventListener( "DOMContentLoaded", completed );
74 + window.removeEventListener( "load", completed );
75 + jQuery.ready();
76 +}
77 +
78 +// Catch cases where $(document).ready() is called
79 +// after the browser event has already occurred.
80 +// Support: IE9-10 only
81 +// Older IE sometimes signals "interactive" too soon
82 +if ( document.readyState === "complete" ||
83 + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
84 +
85 + // Handle it asynchronously to allow scripts the opportunity to delay ready
86 + window.setTimeout( jQuery.ready );
87 +
88 +} else {
89 +
90 + // Use the handy event callback
91 + document.addEventListener( "DOMContentLoaded", completed );
92 +
93 + // A fallback to window.onload, that will always work
94 + window.addEventListener( "load", completed );
95 +}
96 +
97 +} );
1 +define( [
2 + "../core",
3 + "../var/document",
4 + "../core/readyException",
5 + "../deferred"
6 +], function( jQuery, document ) {
7 +
8 +"use strict";
9 +
10 +// The deferred used on DOM ready
11 +var readyList = jQuery.Deferred();
12 +
13 +jQuery.fn.ready = function( fn ) {
14 +
15 + readyList
16 + .then( fn )
17 +
18 + // Wrap jQuery.readyException in a function so that the lookup
19 + // happens at the time of error handling instead of callback
20 + // registration.
21 + .catch( function( error ) {
22 + jQuery.readyException( error );
23 + } );
24 +
25 + return this;
26 +};
27 +
28 +jQuery.extend( {
29 +
30 + // Is the DOM ready to be used? Set to true once it occurs.
31 + isReady: false,
32 +
33 + // A counter to track how many items to wait for before
34 + // the ready event fires. See #6781
35 + readyWait: 1,
36 +
37 + // Handle when the DOM is ready
38 + ready: function( wait ) {
39 +
40 + // Abort if there are pending holds or we're already ready
41 + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
42 + return;
43 + }
44 +
45 + // Remember that the DOM is ready
46 + jQuery.isReady = true;
47 +
48 + // If a normal DOM Ready event fired, decrement, and wait if need be
49 + if ( wait !== true && --jQuery.readyWait > 0 ) {
50 + return;
51 + }
52 +
53 + // If there are functions bound, to execute
54 + readyList.resolveWith( document, [ jQuery ] );
55 + }
56 +} );
57 +
58 +jQuery.ready.then = readyList.then;
59 +
60 +// The ready event handler and self cleanup method
61 +function completed() {
62 + document.removeEventListener( "DOMContentLoaded", completed );
63 + window.removeEventListener( "load", completed );
64 + jQuery.ready();
65 +}
66 +
67 +// Catch cases where $(document).ready() is called
68 +// after the browser event has already occurred.
69 +// Support: IE <=9 - 10 only
70 +// Older IE sometimes signals "interactive" too soon
71 +if ( document.readyState === "complete" ||
72 + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
73 +
74 + // Handle it asynchronously to allow scripts the opportunity to delay ready
75 + window.setTimeout( jQuery.ready );
76 +
77 +} else {
78 +
79 + // Use the handy event callback
80 + document.addEventListener( "DOMContentLoaded", completed );
81 +
82 + // A fallback to window.onload, that will always work
83 + window.addEventListener( "load", completed );
84 +}
85 +
86 +} );
1 +define( [
2 + "../core"
3 +], function( jQuery ) {
4 +
5 +"use strict";
6 +
7 +jQuery.readyException = function( error ) {
8 + window.setTimeout( function() {
9 + throw error;
10 + } );
11 +};
12 +
13 +} );
1 +define( [
2 + "../var/rnothtmlwhite"
3 +], function( rnothtmlwhite ) {
4 + "use strict";
5 +
6 + // Strip and collapse whitespace according to HTML spec
7 + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
8 + function stripAndCollapse( value ) {
9 + var tokens = value.match( rnothtmlwhite ) || [];
10 + return tokens.join( " " );
11 + }
12 +
13 + return stripAndCollapse;
14 +} );
1 +define( [
2 + "../var/document",
3 + "../var/support"
4 +], function( document, support ) {
5 +
6 +"use strict";
7 +
8 +// Support: Safari 8 only
9 +// In Safari 8 documents created via document.implementation.createHTMLDocument
10 +// collapse sibling forms: the second one becomes a child of the first one.
11 +// Because of that, this security measure has to be disabled in Safari 8.
12 +// https://bugs.webkit.org/show_bug.cgi?id=137337
13 +support.createHTMLDocument = ( function() {
14 + var body = document.implementation.createHTMLDocument( "" ).body;
15 + body.innerHTML = "<form></form><form></form>";
16 + return body.childNodes.length === 2;
17 +} )();
18 +
19 +return support;
20 +} );
1 +define( [
2 + "../var/class2type",
3 + "../var/toString"
4 +], function( class2type, toString ) {
5 +
6 +"use strict";
7 +
8 +function toType( obj ) {
9 + if ( obj == null ) {
10 + return obj + "";
11 + }
12 +
13 + // Support: Android <=2.3 only (functionish RegExp)
14 + return typeof obj === "object" || typeof obj === "function" ?
15 + class2type[ toString.call( obj ) ] || "object" :
16 + typeof obj;
17 +}
18 +
19 +return toType;
20 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + // rsingleTag matches a string consisting of a single HTML element with no attributes
5 + // and captures the element's name
6 + return ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
7 +} );
1 +define( [
2 + "./core",
3 + "./core/access",
4 + "./core/camelCase",
5 + "./core/nodeName",
6 + "./var/rcssNum",
7 + "./css/var/rnumnonpx",
8 + "./css/var/cssExpand",
9 + "./css/var/getStyles",
10 + "./css/var/swap",
11 + "./css/curCSS",
12 + "./css/adjustCSS",
13 + "./css/addGetHookIf",
14 + "./css/support",
15 + "./css/finalPropName",
16 +
17 + "./core/init",
18 + "./core/ready",
19 + "./selector" // contains
20 +], function( jQuery, access, camelCase, nodeName, rcssNum, rnumnonpx, cssExpand,
21 + getStyles, swap, curCSS, adjustCSS, addGetHookIf, support, finalPropName ) {
22 +
23 +"use strict";
24 +
25 +var
26 +
27 + // Swappable if display is none or starts with table
28 + // except "table", "table-cell", or "table-caption"
29 + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
30 + rdisplayswap = /^(none|table(?!-c[ea]).+)/,
31 + rcustomProp = /^--/,
32 + cssShow = { position: "absolute", visibility: "hidden", display: "block" },
33 + cssNormalTransform = {
34 + letterSpacing: "0",
35 + fontWeight: "400"
36 + };
37 +
38 +function setPositiveNumber( _elem, value, subtract ) {
39 +
40 + // Any relative (+/-) values have already been
41 + // normalized at this point
42 + var matches = rcssNum.exec( value );
43 + return matches ?
44 +
45 + // Guard against undefined "subtract", e.g., when used as in cssHooks
46 + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
47 + value;
48 +}
49 +
50 +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
51 + var i = dimension === "width" ? 1 : 0,
52 + extra = 0,
53 + delta = 0;
54 +
55 + // Adjustment may not be necessary
56 + if ( box === ( isBorderBox ? "border" : "content" ) ) {
57 + return 0;
58 + }
59 +
60 + for ( ; i < 4; i += 2 ) {
61 +
62 + // Both box models exclude margin
63 + if ( box === "margin" ) {
64 + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
65 + }
66 +
67 + // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
68 + if ( !isBorderBox ) {
69 +
70 + // Add padding
71 + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
72 +
73 + // For "border" or "margin", add border
74 + if ( box !== "padding" ) {
75 + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
76 +
77 + // But still keep track of it otherwise
78 + } else {
79 + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
80 + }
81 +
82 + // If we get here with a border-box (content + padding + border), we're seeking "content" or
83 + // "padding" or "margin"
84 + } else {
85 +
86 + // For "content", subtract padding
87 + if ( box === "content" ) {
88 + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
89 + }
90 +
91 + // For "content" or "padding", subtract border
92 + if ( box !== "margin" ) {
93 + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
94 + }
95 + }
96 + }
97 +
98 + // Account for positive content-box scroll gutter when requested by providing computedVal
99 + if ( !isBorderBox && computedVal >= 0 ) {
100 +
101 + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
102 + // Assuming integer scroll gutter, subtract the rest and round down
103 + delta += Math.max( 0, Math.ceil(
104 + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
105 + computedVal -
106 + delta -
107 + extra -
108 + 0.5
109 +
110 + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
111 + // Use an explicit zero to avoid NaN (gh-3964)
112 + ) ) || 0;
113 + }
114 +
115 + return delta;
116 +}
117 +
118 +function getWidthOrHeight( elem, dimension, extra ) {
119 +
120 + // Start with computed style
121 + var styles = getStyles( elem ),
122 +
123 + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
124 + // Fake content-box until we know it's needed to know the true value.
125 + boxSizingNeeded = !support.boxSizingReliable() || extra,
126 + isBorderBox = boxSizingNeeded &&
127 + jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
128 + valueIsBorderBox = isBorderBox,
129 +
130 + val = curCSS( elem, dimension, styles ),
131 + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
132 +
133 + // Support: Firefox <=54
134 + // Return a confounding non-pixel value or feign ignorance, as appropriate.
135 + if ( rnumnonpx.test( val ) ) {
136 + if ( !extra ) {
137 + return val;
138 + }
139 + val = "auto";
140 + }
141 +
142 +
143 + // Support: IE 9 - 11 only
144 + // Use offsetWidth/offsetHeight for when box sizing is unreliable.
145 + // In those cases, the computed value can be trusted to be border-box.
146 + if ( ( !support.boxSizingReliable() && isBorderBox ||
147 +
148 + // Support: IE 10 - 11+, Edge 15 - 18+
149 + // IE/Edge misreport `getComputedStyle` of table rows with width/height
150 + // set in CSS while `offset*` properties report correct values.
151 + // Interestingly, in some cases IE 9 doesn't suffer from this issue.
152 + !support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
153 +
154 + // Fall back to offsetWidth/offsetHeight when value is "auto"
155 + // This happens for inline elements with no explicit setting (gh-3571)
156 + val === "auto" ||
157 +
158 + // Support: Android <=4.1 - 4.3 only
159 + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
160 + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
161 +
162 + // Make sure the element is visible & connected
163 + elem.getClientRects().length ) {
164 +
165 + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
166 +
167 + // Where available, offsetWidth/offsetHeight approximate border box dimensions.
168 + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
169 + // retrieved value as a content box dimension.
170 + valueIsBorderBox = offsetProp in elem;
171 + if ( valueIsBorderBox ) {
172 + val = elem[ offsetProp ];
173 + }
174 + }
175 +
176 + // Normalize "" and auto
177 + val = parseFloat( val ) || 0;
178 +
179 + // Adjust for the element's box model
180 + return ( val +
181 + boxModelAdjustment(
182 + elem,
183 + dimension,
184 + extra || ( isBorderBox ? "border" : "content" ),
185 + valueIsBorderBox,
186 + styles,
187 +
188 + // Provide the current computed size to request scroll gutter calculation (gh-3589)
189 + val
190 + )
191 + ) + "px";
192 +}
193 +
194 +jQuery.extend( {
195 +
196 + // Add in style property hooks for overriding the default
197 + // behavior of getting and setting a style property
198 + cssHooks: {
199 + opacity: {
200 + get: function( elem, computed ) {
201 + if ( computed ) {
202 +
203 + // We should always get a number back from opacity
204 + var ret = curCSS( elem, "opacity" );
205 + return ret === "" ? "1" : ret;
206 + }
207 + }
208 + }
209 + },
210 +
211 + // Don't automatically add "px" to these possibly-unitless properties
212 + cssNumber: {
213 + "animationIterationCount": true,
214 + "columnCount": true,
215 + "fillOpacity": true,
216 + "flexGrow": true,
217 + "flexShrink": true,
218 + "fontWeight": true,
219 + "gridArea": true,
220 + "gridColumn": true,
221 + "gridColumnEnd": true,
222 + "gridColumnStart": true,
223 + "gridRow": true,
224 + "gridRowEnd": true,
225 + "gridRowStart": true,
226 + "lineHeight": true,
227 + "opacity": true,
228 + "order": true,
229 + "orphans": true,
230 + "widows": true,
231 + "zIndex": true,
232 + "zoom": true
233 + },
234 +
235 + // Add in properties whose names you wish to fix before
236 + // setting or getting the value
237 + cssProps: {},
238 +
239 + // Get and set the style property on a DOM Node
240 + style: function( elem, name, value, extra ) {
241 +
242 + // Don't set styles on text and comment nodes
243 + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
244 + return;
245 + }
246 +
247 + // Make sure that we're working with the right name
248 + var ret, type, hooks,
249 + origName = camelCase( name ),
250 + isCustomProp = rcustomProp.test( name ),
251 + style = elem.style;
252 +
253 + // Make sure that we're working with the right name. We don't
254 + // want to query the value if it is a CSS custom property
255 + // since they are user-defined.
256 + if ( !isCustomProp ) {
257 + name = finalPropName( origName );
258 + }
259 +
260 + // Gets hook for the prefixed version, then unprefixed version
261 + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
262 +
263 + // Check if we're setting a value
264 + if ( value !== undefined ) {
265 + type = typeof value;
266 +
267 + // Convert "+=" or "-=" to relative numbers (#7345)
268 + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
269 + value = adjustCSS( elem, name, ret );
270 +
271 + // Fixes bug #9237
272 + type = "number";
273 + }
274 +
275 + // Make sure that null and NaN values aren't set (#7116)
276 + if ( value == null || value !== value ) {
277 + return;
278 + }
279 +
280 + // If a number was passed in, add the unit (except for certain CSS properties)
281 + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
282 + // "px" to a few hardcoded values.
283 + if ( type === "number" && !isCustomProp ) {
284 + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
285 + }
286 +
287 + // background-* props affect original clone's values
288 + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
289 + style[ name ] = "inherit";
290 + }
291 +
292 + // If a hook was provided, use that value, otherwise just set the specified value
293 + if ( !hooks || !( "set" in hooks ) ||
294 + ( value = hooks.set( elem, value, extra ) ) !== undefined ) {
295 +
296 + if ( isCustomProp ) {
297 + style.setProperty( name, value );
298 + } else {
299 + style[ name ] = value;
300 + }
301 + }
302 +
303 + } else {
304 +
305 + // If a hook was provided get the non-computed value from there
306 + if ( hooks && "get" in hooks &&
307 + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
308 +
309 + return ret;
310 + }
311 +
312 + // Otherwise just get the value from the style object
313 + return style[ name ];
314 + }
315 + },
316 +
317 + css: function( elem, name, extra, styles ) {
318 + var val, num, hooks,
319 + origName = camelCase( name ),
320 + isCustomProp = rcustomProp.test( name );
321 +
322 + // Make sure that we're working with the right name. We don't
323 + // want to modify the value if it is a CSS custom property
324 + // since they are user-defined.
325 + if ( !isCustomProp ) {
326 + name = finalPropName( origName );
327 + }
328 +
329 + // Try prefixed name followed by the unprefixed name
330 + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
331 +
332 + // If a hook was provided get the computed value from there
333 + if ( hooks && "get" in hooks ) {
334 + val = hooks.get( elem, true, extra );
335 + }
336 +
337 + // Otherwise, if a way to get the computed value exists, use that
338 + if ( val === undefined ) {
339 + val = curCSS( elem, name, styles );
340 + }
341 +
342 + // Convert "normal" to computed value
343 + if ( val === "normal" && name in cssNormalTransform ) {
344 + val = cssNormalTransform[ name ];
345 + }
346 +
347 + // Make numeric if forced or a qualifier was provided and val looks numeric
348 + if ( extra === "" || extra ) {
349 + num = parseFloat( val );
350 + return extra === true || isFinite( num ) ? num || 0 : val;
351 + }
352 +
353 + return val;
354 + }
355 +} );
356 +
357 +jQuery.each( [ "height", "width" ], function( _i, dimension ) {
358 + jQuery.cssHooks[ dimension ] = {
359 + get: function( elem, computed, extra ) {
360 + if ( computed ) {
361 +
362 + // Certain elements can have dimension info if we invisibly show them
363 + // but it must have a current display style that would benefit
364 + return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
365 +
366 + // Support: Safari 8+
367 + // Table columns in Safari have non-zero offsetWidth & zero
368 + // getBoundingClientRect().width unless display is changed.
369 + // Support: IE <=11 only
370 + // Running getBoundingClientRect on a disconnected node
371 + // in IE throws an error.
372 + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
373 + swap( elem, cssShow, function() {
374 + return getWidthOrHeight( elem, dimension, extra );
375 + } ) :
376 + getWidthOrHeight( elem, dimension, extra );
377 + }
378 + },
379 +
380 + set: function( elem, value, extra ) {
381 + var matches,
382 + styles = getStyles( elem ),
383 +
384 + // Only read styles.position if the test has a chance to fail
385 + // to avoid forcing a reflow.
386 + scrollboxSizeBuggy = !support.scrollboxSize() &&
387 + styles.position === "absolute",
388 +
389 + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
390 + boxSizingNeeded = scrollboxSizeBuggy || extra,
391 + isBorderBox = boxSizingNeeded &&
392 + jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
393 + subtract = extra ?
394 + boxModelAdjustment(
395 + elem,
396 + dimension,
397 + extra,
398 + isBorderBox,
399 + styles
400 + ) :
401 + 0;
402 +
403 + // Account for unreliable border-box dimensions by comparing offset* to computed and
404 + // faking a content-box to get border and padding (gh-3699)
405 + if ( isBorderBox && scrollboxSizeBuggy ) {
406 + subtract -= Math.ceil(
407 + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
408 + parseFloat( styles[ dimension ] ) -
409 + boxModelAdjustment( elem, dimension, "border", false, styles ) -
410 + 0.5
411 + );
412 + }
413 +
414 + // Convert to pixels if value adjustment is needed
415 + if ( subtract && ( matches = rcssNum.exec( value ) ) &&
416 + ( matches[ 3 ] || "px" ) !== "px" ) {
417 +
418 + elem.style[ dimension ] = value;
419 + value = jQuery.css( elem, dimension );
420 + }
421 +
422 + return setPositiveNumber( elem, value, subtract );
423 + }
424 + };
425 +} );
426 +
427 +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
428 + function( elem, computed ) {
429 + if ( computed ) {
430 + return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
431 + elem.getBoundingClientRect().left -
432 + swap( elem, { marginLeft: 0 }, function() {
433 + return elem.getBoundingClientRect().left;
434 + } )
435 + ) + "px";
436 + }
437 + }
438 +);
439 +
440 +// These hooks are used by animate to expand properties
441 +jQuery.each( {
442 + margin: "",
443 + padding: "",
444 + border: "Width"
445 +}, function( prefix, suffix ) {
446 + jQuery.cssHooks[ prefix + suffix ] = {
447 + expand: function( value ) {
448 + var i = 0,
449 + expanded = {},
450 +
451 + // Assumes a single number if not a string
452 + parts = typeof value === "string" ? value.split( " " ) : [ value ];
453 +
454 + for ( ; i < 4; i++ ) {
455 + expanded[ prefix + cssExpand[ i ] + suffix ] =
456 + parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
457 + }
458 +
459 + return expanded;
460 + }
461 + };
462 +
463 + if ( prefix !== "margin" ) {
464 + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
465 + }
466 +} );
467 +
468 +jQuery.fn.extend( {
469 + css: function( name, value ) {
470 + return access( this, function( elem, name, value ) {
471 + var styles, len,
472 + map = {},
473 + i = 0;
474 +
475 + if ( Array.isArray( name ) ) {
476 + styles = getStyles( elem );
477 + len = name.length;
478 +
479 + for ( ; i < len; i++ ) {
480 + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
481 + }
482 +
483 + return map;
484 + }
485 +
486 + return value !== undefined ?
487 + jQuery.style( elem, name, value ) :
488 + jQuery.css( elem, name );
489 + }, name, value, arguments.length > 1 );
490 + }
491 +} );
492 +
493 +return jQuery;
494 +} );
1 +define( function() {
2 +
3 +"use strict";
4 +
5 +function addGetHookIf( conditionFn, hookFn ) {
6 +
7 + // Define the hook, we'll check on the first run if it's really needed.
8 + return {
9 + get: function() {
10 + if ( conditionFn() ) {
11 +
12 + // Hook not needed (or it's not possible to use it due
13 + // to missing dependency), remove it.
14 + delete this.get;
15 + return;
16 + }
17 +
18 + // Hook needed; redefine it so that the support test is not executed again.
19 + return ( this.get = hookFn ).apply( this, arguments );
20 + }
21 + };
22 +}
23 +
24 +return addGetHookIf;
25 +
26 +} );
1 +define( [
2 + "../core",
3 + "../var/rcssNum"
4 +], function( jQuery, rcssNum ) {
5 +
6 +"use strict";
7 +
8 +function adjustCSS( elem, prop, valueParts, tween ) {
9 + var adjusted, scale,
10 + maxIterations = 20,
11 + currentValue = tween ?
12 + function() {
13 + return tween.cur();
14 + } :
15 + function() {
16 + return jQuery.css( elem, prop, "" );
17 + },
18 + initial = currentValue(),
19 + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
20 +
21 + // Starting value computation is required for potential unit mismatches
22 + initialInUnit = elem.nodeType &&
23 + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
24 + rcssNum.exec( jQuery.css( elem, prop ) );
25 +
26 + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
27 +
28 + // Support: Firefox <=54
29 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
30 + initial = initial / 2;
31 +
32 + // Trust units reported by jQuery.css
33 + unit = unit || initialInUnit[ 3 ];
34 +
35 + // Iteratively approximate from a nonzero starting point
36 + initialInUnit = +initial || 1;
37 +
38 + while ( maxIterations-- ) {
39 +
40 + // Evaluate and update our best guess (doubling guesses that zero out).
41 + // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
42 + jQuery.style( elem, prop, initialInUnit + unit );
43 + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
44 + maxIterations = 0;
45 + }
46 + initialInUnit = initialInUnit / scale;
47 +
48 + }
49 +
50 + initialInUnit = initialInUnit * 2;
51 + jQuery.style( elem, prop, initialInUnit + unit );
52 +
53 + // Make sure we update the tween properties later on
54 + valueParts = valueParts || [];
55 + }
56 +
57 + if ( valueParts ) {
58 + initialInUnit = +initialInUnit || +initial || 0;
59 +
60 + // Apply relative offset (+=/-=) if specified
61 + adjusted = valueParts[ 1 ] ?
62 + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
63 + +valueParts[ 2 ];
64 + if ( tween ) {
65 + tween.unit = unit;
66 + tween.start = initialInUnit;
67 + tween.end = adjusted;
68 + }
69 + }
70 + return adjusted;
71 +}
72 +
73 +return adjustCSS;
74 +} );
1 +define( [
2 + "../core",
3 + "../core/isAttached",
4 + "./var/rboxStyle",
5 + "./var/rnumnonpx",
6 + "./var/getStyles",
7 + "./support"
8 +], function( jQuery, isAttached, rboxStyle, rnumnonpx, getStyles, support ) {
9 +
10 +"use strict";
11 +
12 +function curCSS( elem, name, computed ) {
13 + var width, minWidth, maxWidth, ret,
14 +
15 + // Support: Firefox 51+
16 + // Retrieving style before computed somehow
17 + // fixes an issue with getting wrong values
18 + // on detached elements
19 + style = elem.style;
20 +
21 + computed = computed || getStyles( elem );
22 +
23 + // getPropertyValue is needed for:
24 + // .css('filter') (IE 9 only, #12537)
25 + // .css('--customProperty) (#3144)
26 + if ( computed ) {
27 + ret = computed.getPropertyValue( name ) || computed[ name ];
28 +
29 + if ( ret === "" && !isAttached( elem ) ) {
30 + ret = jQuery.style( elem, name );
31 + }
32 +
33 + // A tribute to the "awesome hack by Dean Edwards"
34 + // Android Browser returns percentage for some values,
35 + // but width seems to be reliably pixels.
36 + // This is against the CSSOM draft spec:
37 + // https://drafts.csswg.org/cssom/#resolved-values
38 + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
39 +
40 + // Remember the original values
41 + width = style.width;
42 + minWidth = style.minWidth;
43 + maxWidth = style.maxWidth;
44 +
45 + // Put in the new values to get a computed value out
46 + style.minWidth = style.maxWidth = style.width = ret;
47 + ret = computed.width;
48 +
49 + // Revert the changed values
50 + style.width = width;
51 + style.minWidth = minWidth;
52 + style.maxWidth = maxWidth;
53 + }
54 + }
55 +
56 + return ret !== undefined ?
57 +
58 + // Support: IE <=9 - 11 only
59 + // IE returns zIndex value as an integer.
60 + ret + "" :
61 + ret;
62 +}
63 +
64 +return curCSS;
65 +} );
1 +define( [
2 + "../var/document",
3 + "../core"
4 +], function( document, jQuery ) {
5 +
6 +"use strict";
7 +
8 +var cssPrefixes = [ "Webkit", "Moz", "ms" ],
9 + emptyStyle = document.createElement( "div" ).style,
10 + vendorProps = {};
11 +
12 +// Return a vendor-prefixed property or undefined
13 +function vendorPropName( name ) {
14 +
15 + // Check for vendor prefixed names
16 + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
17 + i = cssPrefixes.length;
18 +
19 + while ( i-- ) {
20 + name = cssPrefixes[ i ] + capName;
21 + if ( name in emptyStyle ) {
22 + return name;
23 + }
24 + }
25 +}
26 +
27 +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
28 +function finalPropName( name ) {
29 + var final = jQuery.cssProps[ name ] || vendorProps[ name ];
30 +
31 + if ( final ) {
32 + return final;
33 + }
34 + if ( name in emptyStyle ) {
35 + return name;
36 + }
37 + return vendorProps[ name ] = vendorPropName( name ) || name;
38 +}
39 +
40 +return finalPropName;
41 +
42 +} );
1 +define( [
2 + "../core",
3 + "../selector"
4 +], function( jQuery ) {
5 +
6 +"use strict";
7 +
8 +jQuery.expr.pseudos.hidden = function( elem ) {
9 + return !jQuery.expr.pseudos.visible( elem );
10 +};
11 +jQuery.expr.pseudos.visible = function( elem ) {
12 + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
13 +};
14 +
15 +} );
1 +define( [
2 + "../core",
3 + "../data/var/dataPriv",
4 + "../css/var/isHiddenWithinTree"
5 +], function( jQuery, dataPriv, isHiddenWithinTree ) {
6 +
7 +"use strict";
8 +
9 +var defaultDisplayMap = {};
10 +
11 +function getDefaultDisplay( elem ) {
12 + var temp,
13 + doc = elem.ownerDocument,
14 + nodeName = elem.nodeName,
15 + display = defaultDisplayMap[ nodeName ];
16 +
17 + if ( display ) {
18 + return display;
19 + }
20 +
21 + temp = doc.body.appendChild( doc.createElement( nodeName ) );
22 + display = jQuery.css( temp, "display" );
23 +
24 + temp.parentNode.removeChild( temp );
25 +
26 + if ( display === "none" ) {
27 + display = "block";
28 + }
29 + defaultDisplayMap[ nodeName ] = display;
30 +
31 + return display;
32 +}
33 +
34 +function showHide( elements, show ) {
35 + var display, elem,
36 + values = [],
37 + index = 0,
38 + length = elements.length;
39 +
40 + // Determine new display value for elements that need to change
41 + for ( ; index < length; index++ ) {
42 + elem = elements[ index ];
43 + if ( !elem.style ) {
44 + continue;
45 + }
46 +
47 + display = elem.style.display;
48 + if ( show ) {
49 +
50 + // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
51 + // check is required in this first loop unless we have a nonempty display value (either
52 + // inline or about-to-be-restored)
53 + if ( display === "none" ) {
54 + values[ index ] = dataPriv.get( elem, "display" ) || null;
55 + if ( !values[ index ] ) {
56 + elem.style.display = "";
57 + }
58 + }
59 + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
60 + values[ index ] = getDefaultDisplay( elem );
61 + }
62 + } else {
63 + if ( display !== "none" ) {
64 + values[ index ] = "none";
65 +
66 + // Remember what we're overwriting
67 + dataPriv.set( elem, "display", display );
68 + }
69 + }
70 + }
71 +
72 + // Set the display of the elements in a second loop to avoid constant reflow
73 + for ( index = 0; index < length; index++ ) {
74 + if ( values[ index ] != null ) {
75 + elements[ index ].style.display = values[ index ];
76 + }
77 + }
78 +
79 + return elements;
80 +}
81 +
82 +jQuery.fn.extend( {
83 + show: function() {
84 + return showHide( this, true );
85 + },
86 + hide: function() {
87 + return showHide( this );
88 + },
89 + toggle: function( state ) {
90 + if ( typeof state === "boolean" ) {
91 + return state ? this.show() : this.hide();
92 + }
93 +
94 + return this.each( function() {
95 + if ( isHiddenWithinTree( this ) ) {
96 + jQuery( this ).show();
97 + } else {
98 + jQuery( this ).hide();
99 + }
100 + } );
101 + }
102 +} );
103 +
104 +return showHide;
105 +} );
1 +define( [
2 + "../core",
3 + "../var/document",
4 + "../var/documentElement",
5 + "../var/support"
6 +], function( jQuery, document, documentElement, support ) {
7 +
8 +"use strict";
9 +
10 +( function() {
11 +
12 + // Executing both pixelPosition & boxSizingReliable tests require only one layout
13 + // so they're executed at the same time to save the second computation.
14 + function computeStyleTests() {
15 +
16 + // This is a singleton, we need to execute it only once
17 + if ( !div ) {
18 + return;
19 + }
20 +
21 + container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
22 + "margin-top:1px;padding:0;border:0";
23 + div.style.cssText =
24 + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
25 + "margin:auto;border:1px;padding:1px;" +
26 + "width:60%;top:1%";
27 + documentElement.appendChild( container ).appendChild( div );
28 +
29 + var divStyle = window.getComputedStyle( div );
30 + pixelPositionVal = divStyle.top !== "1%";
31 +
32 + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
33 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
34 +
35 + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
36 + // Some styles come back with percentage values, even though they shouldn't
37 + div.style.right = "60%";
38 + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
39 +
40 + // Support: IE 9 - 11 only
41 + // Detect misreporting of content dimensions for box-sizing:border-box elements
42 + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
43 +
44 + // Support: IE 9 only
45 + // Detect overflow:scroll screwiness (gh-3699)
46 + // Support: Chrome <=64
47 + // Don't get tricked when zoom affects offsetWidth (gh-4029)
48 + div.style.position = "absolute";
49 + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
50 +
51 + documentElement.removeChild( container );
52 +
53 + // Nullify the div so it wouldn't be stored in the memory and
54 + // it will also be a sign that checks already performed
55 + div = null;
56 + }
57 +
58 + function roundPixelMeasures( measure ) {
59 + return Math.round( parseFloat( measure ) );
60 + }
61 +
62 + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
63 + reliableTrDimensionsVal, reliableMarginLeftVal,
64 + container = document.createElement( "div" ),
65 + div = document.createElement( "div" );
66 +
67 + // Finish early in limited (non-browser) environments
68 + if ( !div.style ) {
69 + return;
70 + }
71 +
72 + // Support: IE <=9 - 11 only
73 + // Style of cloned element affects source element cloned (#8908)
74 + div.style.backgroundClip = "content-box";
75 + div.cloneNode( true ).style.backgroundClip = "";
76 + support.clearCloneStyle = div.style.backgroundClip === "content-box";
77 +
78 + jQuery.extend( support, {
79 + boxSizingReliable: function() {
80 + computeStyleTests();
81 + return boxSizingReliableVal;
82 + },
83 + pixelBoxStyles: function() {
84 + computeStyleTests();
85 + return pixelBoxStylesVal;
86 + },
87 + pixelPosition: function() {
88 + computeStyleTests();
89 + return pixelPositionVal;
90 + },
91 + reliableMarginLeft: function() {
92 + computeStyleTests();
93 + return reliableMarginLeftVal;
94 + },
95 + scrollboxSize: function() {
96 + computeStyleTests();
97 + return scrollboxSizeVal;
98 + },
99 +
100 + // Support: IE 9 - 11+, Edge 15 - 18+
101 + // IE/Edge misreport `getComputedStyle` of table rows with width/height
102 + // set in CSS while `offset*` properties report correct values.
103 + // Behavior in IE 9 is more subtle than in newer versions & it passes
104 + // some versions of this test; make sure not to make it pass there!
105 + //
106 + // Support: Firefox 70+
107 + // Only Firefox includes border widths
108 + // in computed dimensions. (gh-4529)
109 + reliableTrDimensions: function() {
110 + var table, tr, trChild, trStyle;
111 + if ( reliableTrDimensionsVal == null ) {
112 + table = document.createElement( "table" );
113 + tr = document.createElement( "tr" );
114 + trChild = document.createElement( "div" );
115 +
116 + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
117 + tr.style.cssText = "border:1px solid";
118 +
119 + // Support: Chrome 86+
120 + // Height set through cssText does not get applied.
121 + // Computed height then comes back as 0.
122 + tr.style.height = "1px";
123 + trChild.style.height = "9px";
124 +
125 + // Support: Android 8 Chrome 86+
126 + // In our bodyBackground.html iframe,
127 + // display for all div elements is set to "inline",
128 + // which causes a problem only in Android 8 Chrome 86.
129 + // Ensuring the div is display: block
130 + // gets around this issue.
131 + trChild.style.display = "block";
132 +
133 + documentElement
134 + .appendChild( table )
135 + .appendChild( tr )
136 + .appendChild( trChild );
137 +
138 + trStyle = window.getComputedStyle( tr );
139 + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
140 + parseInt( trStyle.borderTopWidth, 10 ) +
141 + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
142 +
143 + documentElement.removeChild( table );
144 + }
145 + return reliableTrDimensionsVal;
146 + }
147 + } );
148 +} )();
149 +
150 +return support;
151 +
152 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return [ "Top", "Right", "Bottom", "Left" ];
5 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return function( elem ) {
5 +
6 + // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
7 + // IE throws on elements created in popups
8 + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
9 + var view = elem.ownerDocument.defaultView;
10 +
11 + if ( !view || !view.opener ) {
12 + view = window;
13 + }
14 +
15 + return view.getComputedStyle( elem );
16 + };
17 +} );
1 +define( [
2 + "../../core",
3 + "../../core/isAttached"
4 +
5 + // css is assumed
6 +], function( jQuery, isAttached ) {
7 + "use strict";
8 +
9 + // isHiddenWithinTree reports if an element has a non-"none" display style (inline and/or
10 + // through the CSS cascade), which is useful in deciding whether or not to make it visible.
11 + // It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:
12 + // * A hidden ancestor does not force an element to be classified as hidden.
13 + // * Being disconnected from the document does not force an element to be classified as hidden.
14 + // These differences improve the behavior of .toggle() et al. when applied to elements that are
15 + // detached or contained within hidden ancestors (gh-2404, gh-2863).
16 + return function( elem, el ) {
17 +
18 + // isHiddenWithinTree might be called from jQuery#filter function;
19 + // in that case, element will be second argument
20 + elem = el || elem;
21 +
22 + // Inline style trumps all
23 + return elem.style.display === "none" ||
24 + elem.style.display === "" &&
25 +
26 + // Otherwise, check computed style
27 + // Support: Firefox <=43 - 45
28 + // Disconnected elements can have computed display: none, so first confirm that elem is
29 + // in the document.
30 + isAttached( elem ) &&
31 +
32 + jQuery.css( elem, "display" ) === "none";
33 + };
34 +} );
1 +define( [
2 + "./cssExpand"
3 +], function( cssExpand ) {
4 + "use strict";
5 +
6 + return new RegExp( cssExpand.join( "|" ), "i" );
7 +} );
1 +define( [
2 + "../../var/pnum"
3 +], function( pnum ) {
4 + "use strict";
5 +
6 + return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
7 +} );
1 +define( function() {
2 +
3 +"use strict";
4 +
5 +// A method for quickly swapping in/out CSS properties to get correct calculations.
6 +return function( elem, options, callback ) {
7 + var ret, name,
8 + old = {};
9 +
10 + // Remember the old values, and insert the new ones
11 + for ( name in options ) {
12 + old[ name ] = elem.style[ name ];
13 + elem.style[ name ] = options[ name ];
14 + }
15 +
16 + ret = callback.call( elem );
17 +
18 + // Revert the old values
19 + for ( name in options ) {
20 + elem.style[ name ] = old[ name ];
21 + }
22 +
23 + return ret;
24 +};
25 +
26 +} );
1 +define( [
2 + "./core",
3 + "./core/access",
4 + "./core/camelCase",
5 + "./data/var/dataPriv",
6 + "./data/var/dataUser"
7 +], function( jQuery, access, camelCase, dataPriv, dataUser ) {
8 +
9 +"use strict";
10 +
11 +// Implementation Summary
12 +//
13 +// 1. Enforce API surface and semantic compatibility with 1.9.x branch
14 +// 2. Improve the module's maintainability by reducing the storage
15 +// paths to a single mechanism.
16 +// 3. Use the same single mechanism to support "private" and "user" data.
17 +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
18 +// 5. Avoid exposing implementation details on user objects (eg. expando properties)
19 +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
20 +
21 +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
22 + rmultiDash = /[A-Z]/g;
23 +
24 +function getData( data ) {
25 + if ( data === "true" ) {
26 + return true;
27 + }
28 +
29 + if ( data === "false" ) {
30 + return false;
31 + }
32 +
33 + if ( data === "null" ) {
34 + return null;
35 + }
36 +
37 + // Only convert to a number if it doesn't change the string
38 + if ( data === +data + "" ) {
39 + return +data;
40 + }
41 +
42 + if ( rbrace.test( data ) ) {
43 + return JSON.parse( data );
44 + }
45 +
46 + return data;
47 +}
48 +
49 +function dataAttr( elem, key, data ) {
50 + var name;
51 +
52 + // If nothing was found internally, try to fetch any
53 + // data from the HTML5 data-* attribute
54 + if ( data === undefined && elem.nodeType === 1 ) {
55 + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
56 + data = elem.getAttribute( name );
57 +
58 + if ( typeof data === "string" ) {
59 + try {
60 + data = getData( data );
61 + } catch ( e ) {}
62 +
63 + // Make sure we set the data so it isn't changed later
64 + dataUser.set( elem, key, data );
65 + } else {
66 + data = undefined;
67 + }
68 + }
69 + return data;
70 +}
71 +
72 +jQuery.extend( {
73 + hasData: function( elem ) {
74 + return dataUser.hasData( elem ) || dataPriv.hasData( elem );
75 + },
76 +
77 + data: function( elem, name, data ) {
78 + return dataUser.access( elem, name, data );
79 + },
80 +
81 + removeData: function( elem, name ) {
82 + dataUser.remove( elem, name );
83 + },
84 +
85 + // TODO: Now that all calls to _data and _removeData have been replaced
86 + // with direct calls to dataPriv methods, these can be deprecated.
87 + _data: function( elem, name, data ) {
88 + return dataPriv.access( elem, name, data );
89 + },
90 +
91 + _removeData: function( elem, name ) {
92 + dataPriv.remove( elem, name );
93 + }
94 +} );
95 +
96 +jQuery.fn.extend( {
97 + data: function( key, value ) {
98 + var i, name, data,
99 + elem = this[ 0 ],
100 + attrs = elem && elem.attributes;
101 +
102 + // Gets all values
103 + if ( key === undefined ) {
104 + if ( this.length ) {
105 + data = dataUser.get( elem );
106 +
107 + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
108 + i = attrs.length;
109 + while ( i-- ) {
110 +
111 + // Support: IE 11 only
112 + // The attrs elements can be null (#14894)
113 + if ( attrs[ i ] ) {
114 + name = attrs[ i ].name;
115 + if ( name.indexOf( "data-" ) === 0 ) {
116 + name = camelCase( name.slice( 5 ) );
117 + dataAttr( elem, name, data[ name ] );
118 + }
119 + }
120 + }
121 + dataPriv.set( elem, "hasDataAttrs", true );
122 + }
123 + }
124 +
125 + return data;
126 + }
127 +
128 + // Sets multiple values
129 + if ( typeof key === "object" ) {
130 + return this.each( function() {
131 + dataUser.set( this, key );
132 + } );
133 + }
134 +
135 + return access( this, function( value ) {
136 + var data;
137 +
138 + // The calling jQuery object (element matches) is not empty
139 + // (and therefore has an element appears at this[ 0 ]) and the
140 + // `value` parameter was not undefined. An empty jQuery object
141 + // will result in `undefined` for elem = this[ 0 ] which will
142 + // throw an exception if an attempt to read a data cache is made.
143 + if ( elem && value === undefined ) {
144 +
145 + // Attempt to get data from the cache
146 + // The key will always be camelCased in Data
147 + data = dataUser.get( elem, key );
148 + if ( data !== undefined ) {
149 + return data;
150 + }
151 +
152 + // Attempt to "discover" the data in
153 + // HTML5 custom data-* attrs
154 + data = dataAttr( elem, key );
155 + if ( data !== undefined ) {
156 + return data;
157 + }
158 +
159 + // We tried really hard, but the data doesn't exist.
160 + return;
161 + }
162 +
163 + // Set the data...
164 + this.each( function() {
165 +
166 + // We always store the camelCased key
167 + dataUser.set( this, key, value );
168 + } );
169 + }, null, value, arguments.length > 1, null, true );
170 + },
171 +
172 + removeData: function( key ) {
173 + return this.each( function() {
174 + dataUser.remove( this, key );
175 + } );
176 + }
177 +} );
178 +
179 +return jQuery;
180 +} );
1 +define( [
2 + "../core",
3 + "../core/camelCase",
4 + "../var/rnothtmlwhite",
5 + "./var/acceptData"
6 +], function( jQuery, camelCase, rnothtmlwhite, acceptData ) {
7 +
8 +"use strict";
9 +
10 +function Data() {
11 + this.expando = jQuery.expando + Data.uid++;
12 +}
13 +
14 +Data.uid = 1;
15 +
16 +Data.prototype = {
17 +
18 + cache: function( owner ) {
19 +
20 + // Check if the owner object already has a cache
21 + var value = owner[ this.expando ];
22 +
23 + // If not, create one
24 + if ( !value ) {
25 + value = {};
26 +
27 + // We can accept data for non-element nodes in modern browsers,
28 + // but we should not, see #8335.
29 + // Always return an empty object.
30 + if ( acceptData( owner ) ) {
31 +
32 + // If it is a node unlikely to be stringify-ed or looped over
33 + // use plain assignment
34 + if ( owner.nodeType ) {
35 + owner[ this.expando ] = value;
36 +
37 + // Otherwise secure it in a non-enumerable property
38 + // configurable must be true to allow the property to be
39 + // deleted when data is removed
40 + } else {
41 + Object.defineProperty( owner, this.expando, {
42 + value: value,
43 + configurable: true
44 + } );
45 + }
46 + }
47 + }
48 +
49 + return value;
50 + },
51 + set: function( owner, data, value ) {
52 + var prop,
53 + cache = this.cache( owner );
54 +
55 + // Handle: [ owner, key, value ] args
56 + // Always use camelCase key (gh-2257)
57 + if ( typeof data === "string" ) {
58 + cache[ camelCase( data ) ] = value;
59 +
60 + // Handle: [ owner, { properties } ] args
61 + } else {
62 +
63 + // Copy the properties one-by-one to the cache object
64 + for ( prop in data ) {
65 + cache[ camelCase( prop ) ] = data[ prop ];
66 + }
67 + }
68 + return cache;
69 + },
70 + get: function( owner, key ) {
71 + return key === undefined ?
72 + this.cache( owner ) :
73 +
74 + // Always use camelCase key (gh-2257)
75 + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
76 + },
77 + access: function( owner, key, value ) {
78 +
79 + // In cases where either:
80 + //
81 + // 1. No key was specified
82 + // 2. A string key was specified, but no value provided
83 + //
84 + // Take the "read" path and allow the get method to determine
85 + // which value to return, respectively either:
86 + //
87 + // 1. The entire cache object
88 + // 2. The data stored at the key
89 + //
90 + if ( key === undefined ||
91 + ( ( key && typeof key === "string" ) && value === undefined ) ) {
92 +
93 + return this.get( owner, key );
94 + }
95 +
96 + // When the key is not a string, or both a key and value
97 + // are specified, set or extend (existing objects) with either:
98 + //
99 + // 1. An object of properties
100 + // 2. A key and value
101 + //
102 + this.set( owner, key, value );
103 +
104 + // Since the "set" path can have two possible entry points
105 + // return the expected data based on which path was taken[*]
106 + return value !== undefined ? value : key;
107 + },
108 + remove: function( owner, key ) {
109 + var i,
110 + cache = owner[ this.expando ];
111 +
112 + if ( cache === undefined ) {
113 + return;
114 + }
115 +
116 + if ( key !== undefined ) {
117 +
118 + // Support array or space separated string of keys
119 + if ( Array.isArray( key ) ) {
120 +
121 + // If key is an array of keys...
122 + // We always set camelCase keys, so remove that.
123 + key = key.map( camelCase );
124 + } else {
125 + key = camelCase( key );
126 +
127 + // If a key with the spaces exists, use it.
128 + // Otherwise, create an array by matching non-whitespace
129 + key = key in cache ?
130 + [ key ] :
131 + ( key.match( rnothtmlwhite ) || [] );
132 + }
133 +
134 + i = key.length;
135 +
136 + while ( i-- ) {
137 + delete cache[ key[ i ] ];
138 + }
139 + }
140 +
141 + // Remove the expando if there's no more data
142 + if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
143 +
144 + // Support: Chrome <=35 - 45
145 + // Webkit & Blink performance suffers when deleting properties
146 + // from DOM nodes, so set to undefined instead
147 + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
148 + if ( owner.nodeType ) {
149 + owner[ this.expando ] = undefined;
150 + } else {
151 + delete owner[ this.expando ];
152 + }
153 + }
154 + },
155 + hasData: function( owner ) {
156 + var cache = owner[ this.expando ];
157 + return cache !== undefined && !jQuery.isEmptyObject( cache );
158 + }
159 +};
160 +
161 +return Data;
162 +} );
1 +define( function() {
2 +
3 +"use strict";
4 +
5 +/**
6 + * Determines whether an object can have data
7 + */
8 +return function( owner ) {
9 +
10 + // Accepts only:
11 + // - Node
12 + // - Node.ELEMENT_NODE
13 + // - Node.DOCUMENT_NODE
14 + // - Object
15 + // - Any
16 + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
17 +};
18 +
19 +} );
1 +define( [
2 + "../Data"
3 +], function( Data ) {
4 + "use strict";
5 +
6 + return new Data();
7 +} );
1 +define( [
2 + "../Data"
3 +], function( Data ) {
4 + "use strict";
5 +
6 + return new Data();
7 +} );
1 +define( [
2 + "./core",
3 + "./var/isFunction",
4 + "./var/slice",
5 + "./callbacks"
6 +], function( jQuery, isFunction, slice ) {
7 +
8 +"use strict";
9 +
10 +function Identity( v ) {
11 + return v;
12 +}
13 +function Thrower( ex ) {
14 + throw ex;
15 +}
16 +
17 +function adoptValue( value, resolve, reject, noValue ) {
18 + var method;
19 +
20 + try {
21 +
22 + // Check for promise aspect first to privilege synchronous behavior
23 + if ( value && isFunction( ( method = value.promise ) ) ) {
24 + method.call( value ).done( resolve ).fail( reject );
25 +
26 + // Other thenables
27 + } else if ( value && isFunction( ( method = value.then ) ) ) {
28 + method.call( value, resolve, reject );
29 +
30 + // Other non-thenables
31 + } else {
32 +
33 + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
34 + // * false: [ value ].slice( 0 ) => resolve( value )
35 + // * true: [ value ].slice( 1 ) => resolve()
36 + resolve.apply( undefined, [ value ].slice( noValue ) );
37 + }
38 +
39 + // For Promises/A+, convert exceptions into rejections
40 + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
41 + // Deferred#then to conditionally suppress rejection.
42 + } catch ( value ) {
43 +
44 + // Support: Android 4.0 only
45 + // Strict mode functions invoked without .call/.apply get global-object context
46 + reject.apply( undefined, [ value ] );
47 + }
48 +}
49 +
50 +jQuery.extend( {
51 +
52 + Deferred: function( func ) {
53 + var tuples = [
54 +
55 + // action, add listener, callbacks,
56 + // ... .then handlers, argument index, [final state]
57 + [ "notify", "progress", jQuery.Callbacks( "memory" ),
58 + jQuery.Callbacks( "memory" ), 2 ],
59 + [ "resolve", "done", jQuery.Callbacks( "once memory" ),
60 + jQuery.Callbacks( "once memory" ), 0, "resolved" ],
61 + [ "reject", "fail", jQuery.Callbacks( "once memory" ),
62 + jQuery.Callbacks( "once memory" ), 1, "rejected" ]
63 + ],
64 + state = "pending",
65 + promise = {
66 + state: function() {
67 + return state;
68 + },
69 + always: function() {
70 + deferred.done( arguments ).fail( arguments );
71 + return this;
72 + },
73 + "catch": function( fn ) {
74 + return promise.then( null, fn );
75 + },
76 +
77 + // Keep pipe for back-compat
78 + pipe: function( /* fnDone, fnFail, fnProgress */ ) {
79 + var fns = arguments;
80 +
81 + return jQuery.Deferred( function( newDefer ) {
82 + jQuery.each( tuples, function( _i, tuple ) {
83 +
84 + // Map tuples (progress, done, fail) to arguments (done, fail, progress)
85 + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
86 +
87 + // deferred.progress(function() { bind to newDefer or newDefer.notify })
88 + // deferred.done(function() { bind to newDefer or newDefer.resolve })
89 + // deferred.fail(function() { bind to newDefer or newDefer.reject })
90 + deferred[ tuple[ 1 ] ]( function() {
91 + var returned = fn && fn.apply( this, arguments );
92 + if ( returned && isFunction( returned.promise ) ) {
93 + returned.promise()
94 + .progress( newDefer.notify )
95 + .done( newDefer.resolve )
96 + .fail( newDefer.reject );
97 + } else {
98 + newDefer[ tuple[ 0 ] + "With" ](
99 + this,
100 + fn ? [ returned ] : arguments
101 + );
102 + }
103 + } );
104 + } );
105 + fns = null;
106 + } ).promise();
107 + },
108 + then: function( onFulfilled, onRejected, onProgress ) {
109 + var maxDepth = 0;
110 + function resolve( depth, deferred, handler, special ) {
111 + return function() {
112 + var that = this,
113 + args = arguments,
114 + mightThrow = function() {
115 + var returned, then;
116 +
117 + // Support: Promises/A+ section 2.3.3.3.3
118 + // https://promisesaplus.com/#point-59
119 + // Ignore double-resolution attempts
120 + if ( depth < maxDepth ) {
121 + return;
122 + }
123 +
124 + returned = handler.apply( that, args );
125 +
126 + // Support: Promises/A+ section 2.3.1
127 + // https://promisesaplus.com/#point-48
128 + if ( returned === deferred.promise() ) {
129 + throw new TypeError( "Thenable self-resolution" );
130 + }
131 +
132 + // Support: Promises/A+ sections 2.3.3.1, 3.5
133 + // https://promisesaplus.com/#point-54
134 + // https://promisesaplus.com/#point-75
135 + // Retrieve `then` only once
136 + then = returned &&
137 +
138 + // Support: Promises/A+ section 2.3.4
139 + // https://promisesaplus.com/#point-64
140 + // Only check objects and functions for thenability
141 + ( typeof returned === "object" ||
142 + typeof returned === "function" ) &&
143 + returned.then;
144 +
145 + // Handle a returned thenable
146 + if ( isFunction( then ) ) {
147 +
148 + // Special processors (notify) just wait for resolution
149 + if ( special ) {
150 + then.call(
151 + returned,
152 + resolve( maxDepth, deferred, Identity, special ),
153 + resolve( maxDepth, deferred, Thrower, special )
154 + );
155 +
156 + // Normal processors (resolve) also hook into progress
157 + } else {
158 +
159 + // ...and disregard older resolution values
160 + maxDepth++;
161 +
162 + then.call(
163 + returned,
164 + resolve( maxDepth, deferred, Identity, special ),
165 + resolve( maxDepth, deferred, Thrower, special ),
166 + resolve( maxDepth, deferred, Identity,
167 + deferred.notifyWith )
168 + );
169 + }
170 +
171 + // Handle all other returned values
172 + } else {
173 +
174 + // Only substitute handlers pass on context
175 + // and multiple values (non-spec behavior)
176 + if ( handler !== Identity ) {
177 + that = undefined;
178 + args = [ returned ];
179 + }
180 +
181 + // Process the value(s)
182 + // Default process is resolve
183 + ( special || deferred.resolveWith )( that, args );
184 + }
185 + },
186 +
187 + // Only normal processors (resolve) catch and reject exceptions
188 + process = special ?
189 + mightThrow :
190 + function() {
191 + try {
192 + mightThrow();
193 + } catch ( e ) {
194 +
195 + if ( jQuery.Deferred.exceptionHook ) {
196 + jQuery.Deferred.exceptionHook( e,
197 + process.stackTrace );
198 + }
199 +
200 + // Support: Promises/A+ section 2.3.3.3.4.1
201 + // https://promisesaplus.com/#point-61
202 + // Ignore post-resolution exceptions
203 + if ( depth + 1 >= maxDepth ) {
204 +
205 + // Only substitute handlers pass on context
206 + // and multiple values (non-spec behavior)
207 + if ( handler !== Thrower ) {
208 + that = undefined;
209 + args = [ e ];
210 + }
211 +
212 + deferred.rejectWith( that, args );
213 + }
214 + }
215 + };
216 +
217 + // Support: Promises/A+ section 2.3.3.3.1
218 + // https://promisesaplus.com/#point-57
219 + // Re-resolve promises immediately to dodge false rejection from
220 + // subsequent errors
221 + if ( depth ) {
222 + process();
223 + } else {
224 +
225 + // Call an optional hook to record the stack, in case of exception
226 + // since it's otherwise lost when execution goes async
227 + if ( jQuery.Deferred.getStackHook ) {
228 + process.stackTrace = jQuery.Deferred.getStackHook();
229 + }
230 + window.setTimeout( process );
231 + }
232 + };
233 + }
234 +
235 + return jQuery.Deferred( function( newDefer ) {
236 +
237 + // progress_handlers.add( ... )
238 + tuples[ 0 ][ 3 ].add(
239 + resolve(
240 + 0,
241 + newDefer,
242 + isFunction( onProgress ) ?
243 + onProgress :
244 + Identity,
245 + newDefer.notifyWith
246 + )
247 + );
248 +
249 + // fulfilled_handlers.add( ... )
250 + tuples[ 1 ][ 3 ].add(
251 + resolve(
252 + 0,
253 + newDefer,
254 + isFunction( onFulfilled ) ?
255 + onFulfilled :
256 + Identity
257 + )
258 + );
259 +
260 + // rejected_handlers.add( ... )
261 + tuples[ 2 ][ 3 ].add(
262 + resolve(
263 + 0,
264 + newDefer,
265 + isFunction( onRejected ) ?
266 + onRejected :
267 + Thrower
268 + )
269 + );
270 + } ).promise();
271 + },
272 +
273 + // Get a promise for this deferred
274 + // If obj is provided, the promise aspect is added to the object
275 + promise: function( obj ) {
276 + return obj != null ? jQuery.extend( obj, promise ) : promise;
277 + }
278 + },
279 + deferred = {};
280 +
281 + // Add list-specific methods
282 + jQuery.each( tuples, function( i, tuple ) {
283 + var list = tuple[ 2 ],
284 + stateString = tuple[ 5 ];
285 +
286 + // promise.progress = list.add
287 + // promise.done = list.add
288 + // promise.fail = list.add
289 + promise[ tuple[ 1 ] ] = list.add;
290 +
291 + // Handle state
292 + if ( stateString ) {
293 + list.add(
294 + function() {
295 +
296 + // state = "resolved" (i.e., fulfilled)
297 + // state = "rejected"
298 + state = stateString;
299 + },
300 +
301 + // rejected_callbacks.disable
302 + // fulfilled_callbacks.disable
303 + tuples[ 3 - i ][ 2 ].disable,
304 +
305 + // rejected_handlers.disable
306 + // fulfilled_handlers.disable
307 + tuples[ 3 - i ][ 3 ].disable,
308 +
309 + // progress_callbacks.lock
310 + tuples[ 0 ][ 2 ].lock,
311 +
312 + // progress_handlers.lock
313 + tuples[ 0 ][ 3 ].lock
314 + );
315 + }
316 +
317 + // progress_handlers.fire
318 + // fulfilled_handlers.fire
319 + // rejected_handlers.fire
320 + list.add( tuple[ 3 ].fire );
321 +
322 + // deferred.notify = function() { deferred.notifyWith(...) }
323 + // deferred.resolve = function() { deferred.resolveWith(...) }
324 + // deferred.reject = function() { deferred.rejectWith(...) }
325 + deferred[ tuple[ 0 ] ] = function() {
326 + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
327 + return this;
328 + };
329 +
330 + // deferred.notifyWith = list.fireWith
331 + // deferred.resolveWith = list.fireWith
332 + // deferred.rejectWith = list.fireWith
333 + deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
334 + } );
335 +
336 + // Make the deferred a promise
337 + promise.promise( deferred );
338 +
339 + // Call given func if any
340 + if ( func ) {
341 + func.call( deferred, deferred );
342 + }
343 +
344 + // All done!
345 + return deferred;
346 + },
347 +
348 + // Deferred helper
349 + when: function( singleValue ) {
350 + var
351 +
352 + // count of uncompleted subordinates
353 + remaining = arguments.length,
354 +
355 + // count of unprocessed arguments
356 + i = remaining,
357 +
358 + // subordinate fulfillment data
359 + resolveContexts = Array( i ),
360 + resolveValues = slice.call( arguments ),
361 +
362 + // the primary Deferred
363 + primary = jQuery.Deferred(),
364 +
365 + // subordinate callback factory
366 + updateFunc = function( i ) {
367 + return function( value ) {
368 + resolveContexts[ i ] = this;
369 + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
370 + if ( !( --remaining ) ) {
371 + primary.resolveWith( resolveContexts, resolveValues );
372 + }
373 + };
374 + };
375 +
376 + // Single- and empty arguments are adopted like Promise.resolve
377 + if ( remaining <= 1 ) {
378 + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
379 + !remaining );
380 +
381 + // Use .then() to unwrap secondary thenables (cf. gh-3000)
382 + if ( primary.state() === "pending" ||
383 + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
384 +
385 + return primary.then();
386 + }
387 + }
388 +
389 + // Multiple arguments are aggregated like Promise.all array elements
390 + while ( i-- ) {
391 + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
392 + }
393 +
394 + return primary.promise();
395 + }
396 +} );
397 +
398 +return jQuery;
399 +} );
1 +define( [
2 + "../core",
3 + "../deferred"
4 +], function( jQuery ) {
5 +
6 +"use strict";
7 +
8 +// These usually indicate a programmer mistake during development,
9 +// warn about them ASAP rather than swallowing them by default.
10 +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
11 +
12 +jQuery.Deferred.exceptionHook = function( error, stack ) {
13 +
14 + // Support: IE 8 - 9 only
15 + // Console exists when dev tools are open, which can happen at any time
16 + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
17 + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
18 + }
19 +};
20 +
21 +} );
1 +define( [
2 + "./core",
3 + "./core/nodeName",
4 + "./core/camelCase",
5 + "./core/toType",
6 + "./var/isFunction",
7 + "./var/isWindow",
8 + "./var/slice",
9 +
10 + "./deprecated/ajax-event-alias",
11 + "./deprecated/event"
12 +], function( jQuery, nodeName, camelCase, toType, isFunction, isWindow, slice ) {
13 +
14 +"use strict";
15 +
16 +// Support: Android <=4.0 only
17 +// Make sure we trim BOM and NBSP
18 +var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
19 +
20 +// Bind a function to a context, optionally partially applying any
21 +// arguments.
22 +// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
23 +// However, it is not slated for removal any time soon
24 +jQuery.proxy = function( fn, context ) {
25 + var tmp, args, proxy;
26 +
27 + if ( typeof context === "string" ) {
28 + tmp = fn[ context ];
29 + context = fn;
30 + fn = tmp;
31 + }
32 +
33 + // Quick check to determine if target is callable, in the spec
34 + // this throws a TypeError, but we will just return undefined.
35 + if ( !isFunction( fn ) ) {
36 + return undefined;
37 + }
38 +
39 + // Simulated bind
40 + args = slice.call( arguments, 2 );
41 + proxy = function() {
42 + return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
43 + };
44 +
45 + // Set the guid of unique handler to the same of original handler, so it can be removed
46 + proxy.guid = fn.guid = fn.guid || jQuery.guid++;
47 +
48 + return proxy;
49 +};
50 +
51 +jQuery.holdReady = function( hold ) {
52 + if ( hold ) {
53 + jQuery.readyWait++;
54 + } else {
55 + jQuery.ready( true );
56 + }
57 +};
58 +jQuery.isArray = Array.isArray;
59 +jQuery.parseJSON = JSON.parse;
60 +jQuery.nodeName = nodeName;
61 +jQuery.isFunction = isFunction;
62 +jQuery.isWindow = isWindow;
63 +jQuery.camelCase = camelCase;
64 +jQuery.type = toType;
65 +
66 +jQuery.now = Date.now;
67 +
68 +jQuery.isNumeric = function( obj ) {
69 +
70 + // As of jQuery 3.0, isNumeric is limited to
71 + // strings and numbers (primitives or objects)
72 + // that can be coerced to finite numbers (gh-2662)
73 + var type = jQuery.type( obj );
74 + return ( type === "number" || type === "string" ) &&
75 +
76 + // parseFloat NaNs numeric-cast false positives ("")
77 + // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
78 + // subtraction forces infinities to NaN
79 + !isNaN( obj - parseFloat( obj ) );
80 +};
81 +
82 +jQuery.trim = function( text ) {
83 + return text == null ?
84 + "" :
85 + ( text + "" ).replace( rtrim, "" );
86 +};
87 +} );
1 +define( [
2 + "../core",
3 + "../ajax",
4 + "../event"
5 +], function( jQuery ) {
6 +
7 +"use strict";
8 +
9 +jQuery.each( [
10 + "ajaxStart",
11 + "ajaxStop",
12 + "ajaxComplete",
13 + "ajaxError",
14 + "ajaxSuccess",
15 + "ajaxSend"
16 +], function( _i, type ) {
17 + jQuery.fn[ type ] = function( fn ) {
18 + return this.on( type, fn );
19 + };
20 +} );
21 +
22 +} );
1 +define( [
2 + "../core",
3 +
4 + "../event",
5 + "../event/trigger"
6 +], function( jQuery ) {
7 +
8 +"use strict";
9 +
10 +jQuery.fn.extend( {
11 +
12 + bind: function( types, data, fn ) {
13 + return this.on( types, null, data, fn );
14 + },
15 + unbind: function( types, fn ) {
16 + return this.off( types, null, fn );
17 + },
18 +
19 + delegate: function( selector, types, data, fn ) {
20 + return this.on( types, selector, data, fn );
21 + },
22 + undelegate: function( selector, types, fn ) {
23 +
24 + // ( namespace ) or ( selector, types [, fn] )
25 + return arguments.length === 1 ?
26 + this.off( selector, "**" ) :
27 + this.off( types, selector || "**", fn );
28 + },
29 +
30 + hover: function( fnOver, fnOut ) {
31 + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
32 + }
33 +} );
34 +
35 +jQuery.each(
36 + ( "blur focus focusin focusout resize scroll click dblclick " +
37 + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
38 + "change select submit keydown keypress keyup contextmenu" ).split( " " ),
39 + function( _i, name ) {
40 +
41 + // Handle event binding
42 + jQuery.fn[ name ] = function( data, fn ) {
43 + return arguments.length > 0 ?
44 + this.on( name, null, data, fn ) :
45 + this.trigger( name );
46 + };
47 + }
48 +);
49 +
50 +} );
1 +define( [
2 + "./core",
3 + "./core/access",
4 + "./var/isWindow",
5 + "./css"
6 +], function( jQuery, access, isWindow ) {
7 +
8 +"use strict";
9 +
10 +// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
11 +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
12 + jQuery.each( {
13 + padding: "inner" + name,
14 + content: type,
15 + "": "outer" + name
16 + }, function( defaultExtra, funcName ) {
17 +
18 + // Margin is only for outerHeight, outerWidth
19 + jQuery.fn[ funcName ] = function( margin, value ) {
20 + var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
21 + extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
22 +
23 + return access( this, function( elem, type, value ) {
24 + var doc;
25 +
26 + if ( isWindow( elem ) ) {
27 +
28 + // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
29 + return funcName.indexOf( "outer" ) === 0 ?
30 + elem[ "inner" + name ] :
31 + elem.document.documentElement[ "client" + name ];
32 + }
33 +
34 + // Get document width or height
35 + if ( elem.nodeType === 9 ) {
36 + doc = elem.documentElement;
37 +
38 + // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
39 + // whichever is greatest
40 + return Math.max(
41 + elem.body[ "scroll" + name ], doc[ "scroll" + name ],
42 + elem.body[ "offset" + name ], doc[ "offset" + name ],
43 + doc[ "client" + name ]
44 + );
45 + }
46 +
47 + return value === undefined ?
48 +
49 + // Get width or height on the element, requesting but not forcing parseFloat
50 + jQuery.css( elem, type, extra ) :
51 +
52 + // Set width or height on the element
53 + jQuery.style( elem, type, value, extra );
54 + }, type, chainable ? margin : undefined, chainable );
55 + };
56 + } );
57 +} );
58 +
59 +return jQuery;
60 +} );
1 +define( [
2 + "./core",
3 + "./core/camelCase",
4 + "./var/document",
5 + "./var/isFunction",
6 + "./var/rcssNum",
7 + "./var/rnothtmlwhite",
8 + "./css/var/cssExpand",
9 + "./css/var/isHiddenWithinTree",
10 + "./css/adjustCSS",
11 + "./data/var/dataPriv",
12 + "./css/showHide",
13 +
14 + "./core/init",
15 + "./queue",
16 + "./deferred",
17 + "./traversing",
18 + "./manipulation",
19 + "./css",
20 + "./effects/Tween"
21 +], function( jQuery, camelCase, document, isFunction, rcssNum, rnothtmlwhite, cssExpand,
22 + isHiddenWithinTree, adjustCSS, dataPriv, showHide ) {
23 +
24 +"use strict";
25 +
26 +var
27 + fxNow, inProgress,
28 + rfxtypes = /^(?:toggle|show|hide)$/,
29 + rrun = /queueHooks$/;
30 +
31 +function schedule() {
32 + if ( inProgress ) {
33 + if ( document.hidden === false && window.requestAnimationFrame ) {
34 + window.requestAnimationFrame( schedule );
35 + } else {
36 + window.setTimeout( schedule, jQuery.fx.interval );
37 + }
38 +
39 + jQuery.fx.tick();
40 + }
41 +}
42 +
43 +// Animations created synchronously will run synchronously
44 +function createFxNow() {
45 + window.setTimeout( function() {
46 + fxNow = undefined;
47 + } );
48 + return ( fxNow = Date.now() );
49 +}
50 +
51 +// Generate parameters to create a standard animation
52 +function genFx( type, includeWidth ) {
53 + var which,
54 + i = 0,
55 + attrs = { height: type };
56 +
57 + // If we include width, step value is 1 to do all cssExpand values,
58 + // otherwise step value is 2 to skip over Left and Right
59 + includeWidth = includeWidth ? 1 : 0;
60 + for ( ; i < 4; i += 2 - includeWidth ) {
61 + which = cssExpand[ i ];
62 + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
63 + }
64 +
65 + if ( includeWidth ) {
66 + attrs.opacity = attrs.width = type;
67 + }
68 +
69 + return attrs;
70 +}
71 +
72 +function createTween( value, prop, animation ) {
73 + var tween,
74 + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
75 + index = 0,
76 + length = collection.length;
77 + for ( ; index < length; index++ ) {
78 + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
79 +
80 + // We're done with this property
81 + return tween;
82 + }
83 + }
84 +}
85 +
86 +function defaultPrefilter( elem, props, opts ) {
87 + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
88 + isBox = "width" in props || "height" in props,
89 + anim = this,
90 + orig = {},
91 + style = elem.style,
92 + hidden = elem.nodeType && isHiddenWithinTree( elem ),
93 + dataShow = dataPriv.get( elem, "fxshow" );
94 +
95 + // Queue-skipping animations hijack the fx hooks
96 + if ( !opts.queue ) {
97 + hooks = jQuery._queueHooks( elem, "fx" );
98 + if ( hooks.unqueued == null ) {
99 + hooks.unqueued = 0;
100 + oldfire = hooks.empty.fire;
101 + hooks.empty.fire = function() {
102 + if ( !hooks.unqueued ) {
103 + oldfire();
104 + }
105 + };
106 + }
107 + hooks.unqueued++;
108 +
109 + anim.always( function() {
110 +
111 + // Ensure the complete handler is called before this completes
112 + anim.always( function() {
113 + hooks.unqueued--;
114 + if ( !jQuery.queue( elem, "fx" ).length ) {
115 + hooks.empty.fire();
116 + }
117 + } );
118 + } );
119 + }
120 +
121 + // Detect show/hide animations
122 + for ( prop in props ) {
123 + value = props[ prop ];
124 + if ( rfxtypes.test( value ) ) {
125 + delete props[ prop ];
126 + toggle = toggle || value === "toggle";
127 + if ( value === ( hidden ? "hide" : "show" ) ) {
128 +
129 + // Pretend to be hidden if this is a "show" and
130 + // there is still data from a stopped show/hide
131 + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
132 + hidden = true;
133 +
134 + // Ignore all other no-op show/hide data
135 + } else {
136 + continue;
137 + }
138 + }
139 + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
140 + }
141 + }
142 +
143 + // Bail out if this is a no-op like .hide().hide()
144 + propTween = !jQuery.isEmptyObject( props );
145 + if ( !propTween && jQuery.isEmptyObject( orig ) ) {
146 + return;
147 + }
148 +
149 + // Restrict "overflow" and "display" styles during box animations
150 + if ( isBox && elem.nodeType === 1 ) {
151 +
152 + // Support: IE <=9 - 11, Edge 12 - 15
153 + // Record all 3 overflow attributes because IE does not infer the shorthand
154 + // from identically-valued overflowX and overflowY and Edge just mirrors
155 + // the overflowX value there.
156 + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
157 +
158 + // Identify a display type, preferring old show/hide data over the CSS cascade
159 + restoreDisplay = dataShow && dataShow.display;
160 + if ( restoreDisplay == null ) {
161 + restoreDisplay = dataPriv.get( elem, "display" );
162 + }
163 + display = jQuery.css( elem, "display" );
164 + if ( display === "none" ) {
165 + if ( restoreDisplay ) {
166 + display = restoreDisplay;
167 + } else {
168 +
169 + // Get nonempty value(s) by temporarily forcing visibility
170 + showHide( [ elem ], true );
171 + restoreDisplay = elem.style.display || restoreDisplay;
172 + display = jQuery.css( elem, "display" );
173 + showHide( [ elem ] );
174 + }
175 + }
176 +
177 + // Animate inline elements as inline-block
178 + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
179 + if ( jQuery.css( elem, "float" ) === "none" ) {
180 +
181 + // Restore the original display value at the end of pure show/hide animations
182 + if ( !propTween ) {
183 + anim.done( function() {
184 + style.display = restoreDisplay;
185 + } );
186 + if ( restoreDisplay == null ) {
187 + display = style.display;
188 + restoreDisplay = display === "none" ? "" : display;
189 + }
190 + }
191 + style.display = "inline-block";
192 + }
193 + }
194 + }
195 +
196 + if ( opts.overflow ) {
197 + style.overflow = "hidden";
198 + anim.always( function() {
199 + style.overflow = opts.overflow[ 0 ];
200 + style.overflowX = opts.overflow[ 1 ];
201 + style.overflowY = opts.overflow[ 2 ];
202 + } );
203 + }
204 +
205 + // Implement show/hide animations
206 + propTween = false;
207 + for ( prop in orig ) {
208 +
209 + // General show/hide setup for this element animation
210 + if ( !propTween ) {
211 + if ( dataShow ) {
212 + if ( "hidden" in dataShow ) {
213 + hidden = dataShow.hidden;
214 + }
215 + } else {
216 + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
217 + }
218 +
219 + // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
220 + if ( toggle ) {
221 + dataShow.hidden = !hidden;
222 + }
223 +
224 + // Show elements before animating them
225 + if ( hidden ) {
226 + showHide( [ elem ], true );
227 + }
228 +
229 + /* eslint-disable no-loop-func */
230 +
231 + anim.done( function() {
232 +
233 + /* eslint-enable no-loop-func */
234 +
235 + // The final step of a "hide" animation is actually hiding the element
236 + if ( !hidden ) {
237 + showHide( [ elem ] );
238 + }
239 + dataPriv.remove( elem, "fxshow" );
240 + for ( prop in orig ) {
241 + jQuery.style( elem, prop, orig[ prop ] );
242 + }
243 + } );
244 + }
245 +
246 + // Per-property setup
247 + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
248 + if ( !( prop in dataShow ) ) {
249 + dataShow[ prop ] = propTween.start;
250 + if ( hidden ) {
251 + propTween.end = propTween.start;
252 + propTween.start = 0;
253 + }
254 + }
255 + }
256 +}
257 +
258 +function propFilter( props, specialEasing ) {
259 + var index, name, easing, value, hooks;
260 +
261 + // camelCase, specialEasing and expand cssHook pass
262 + for ( index in props ) {
263 + name = camelCase( index );
264 + easing = specialEasing[ name ];
265 + value = props[ index ];
266 + if ( Array.isArray( value ) ) {
267 + easing = value[ 1 ];
268 + value = props[ index ] = value[ 0 ];
269 + }
270 +
271 + if ( index !== name ) {
272 + props[ name ] = value;
273 + delete props[ index ];
274 + }
275 +
276 + hooks = jQuery.cssHooks[ name ];
277 + if ( hooks && "expand" in hooks ) {
278 + value = hooks.expand( value );
279 + delete props[ name ];
280 +
281 + // Not quite $.extend, this won't overwrite existing keys.
282 + // Reusing 'index' because we have the correct "name"
283 + for ( index in value ) {
284 + if ( !( index in props ) ) {
285 + props[ index ] = value[ index ];
286 + specialEasing[ index ] = easing;
287 + }
288 + }
289 + } else {
290 + specialEasing[ name ] = easing;
291 + }
292 + }
293 +}
294 +
295 +function Animation( elem, properties, options ) {
296 + var result,
297 + stopped,
298 + index = 0,
299 + length = Animation.prefilters.length,
300 + deferred = jQuery.Deferred().always( function() {
301 +
302 + // Don't match elem in the :animated selector
303 + delete tick.elem;
304 + } ),
305 + tick = function() {
306 + if ( stopped ) {
307 + return false;
308 + }
309 + var currentTime = fxNow || createFxNow(),
310 + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
311 +
312 + // Support: Android 2.3 only
313 + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
314 + temp = remaining / animation.duration || 0,
315 + percent = 1 - temp,
316 + index = 0,
317 + length = animation.tweens.length;
318 +
319 + for ( ; index < length; index++ ) {
320 + animation.tweens[ index ].run( percent );
321 + }
322 +
323 + deferred.notifyWith( elem, [ animation, percent, remaining ] );
324 +
325 + // If there's more to do, yield
326 + if ( percent < 1 && length ) {
327 + return remaining;
328 + }
329 +
330 + // If this was an empty animation, synthesize a final progress notification
331 + if ( !length ) {
332 + deferred.notifyWith( elem, [ animation, 1, 0 ] );
333 + }
334 +
335 + // Resolve the animation and report its conclusion
336 + deferred.resolveWith( elem, [ animation ] );
337 + return false;
338 + },
339 + animation = deferred.promise( {
340 + elem: elem,
341 + props: jQuery.extend( {}, properties ),
342 + opts: jQuery.extend( true, {
343 + specialEasing: {},
344 + easing: jQuery.easing._default
345 + }, options ),
346 + originalProperties: properties,
347 + originalOptions: options,
348 + startTime: fxNow || createFxNow(),
349 + duration: options.duration,
350 + tweens: [],
351 + createTween: function( prop, end ) {
352 + var tween = jQuery.Tween( elem, animation.opts, prop, end,
353 + animation.opts.specialEasing[ prop ] || animation.opts.easing );
354 + animation.tweens.push( tween );
355 + return tween;
356 + },
357 + stop: function( gotoEnd ) {
358 + var index = 0,
359 +
360 + // If we are going to the end, we want to run all the tweens
361 + // otherwise we skip this part
362 + length = gotoEnd ? animation.tweens.length : 0;
363 + if ( stopped ) {
364 + return this;
365 + }
366 + stopped = true;
367 + for ( ; index < length; index++ ) {
368 + animation.tweens[ index ].run( 1 );
369 + }
370 +
371 + // Resolve when we played the last frame; otherwise, reject
372 + if ( gotoEnd ) {
373 + deferred.notifyWith( elem, [ animation, 1, 0 ] );
374 + deferred.resolveWith( elem, [ animation, gotoEnd ] );
375 + } else {
376 + deferred.rejectWith( elem, [ animation, gotoEnd ] );
377 + }
378 + return this;
379 + }
380 + } ),
381 + props = animation.props;
382 +
383 + propFilter( props, animation.opts.specialEasing );
384 +
385 + for ( ; index < length; index++ ) {
386 + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
387 + if ( result ) {
388 + if ( isFunction( result.stop ) ) {
389 + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
390 + result.stop.bind( result );
391 + }
392 + return result;
393 + }
394 + }
395 +
396 + jQuery.map( props, createTween, animation );
397 +
398 + if ( isFunction( animation.opts.start ) ) {
399 + animation.opts.start.call( elem, animation );
400 + }
401 +
402 + // Attach callbacks from options
403 + animation
404 + .progress( animation.opts.progress )
405 + .done( animation.opts.done, animation.opts.complete )
406 + .fail( animation.opts.fail )
407 + .always( animation.opts.always );
408 +
409 + jQuery.fx.timer(
410 + jQuery.extend( tick, {
411 + elem: elem,
412 + anim: animation,
413 + queue: animation.opts.queue
414 + } )
415 + );
416 +
417 + return animation;
418 +}
419 +
420 +jQuery.Animation = jQuery.extend( Animation, {
421 +
422 + tweeners: {
423 + "*": [ function( prop, value ) {
424 + var tween = this.createTween( prop, value );
425 + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
426 + return tween;
427 + } ]
428 + },
429 +
430 + tweener: function( props, callback ) {
431 + if ( isFunction( props ) ) {
432 + callback = props;
433 + props = [ "*" ];
434 + } else {
435 + props = props.match( rnothtmlwhite );
436 + }
437 +
438 + var prop,
439 + index = 0,
440 + length = props.length;
441 +
442 + for ( ; index < length; index++ ) {
443 + prop = props[ index ];
444 + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
445 + Animation.tweeners[ prop ].unshift( callback );
446 + }
447 + },
448 +
449 + prefilters: [ defaultPrefilter ],
450 +
451 + prefilter: function( callback, prepend ) {
452 + if ( prepend ) {
453 + Animation.prefilters.unshift( callback );
454 + } else {
455 + Animation.prefilters.push( callback );
456 + }
457 + }
458 +} );
459 +
460 +jQuery.speed = function( speed, easing, fn ) {
461 + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
462 + complete: fn || !fn && easing ||
463 + isFunction( speed ) && speed,
464 + duration: speed,
465 + easing: fn && easing || easing && !isFunction( easing ) && easing
466 + };
467 +
468 + // Go to the end state if fx are off
469 + if ( jQuery.fx.off ) {
470 + opt.duration = 0;
471 +
472 + } else {
473 + if ( typeof opt.duration !== "number" ) {
474 + if ( opt.duration in jQuery.fx.speeds ) {
475 + opt.duration = jQuery.fx.speeds[ opt.duration ];
476 +
477 + } else {
478 + opt.duration = jQuery.fx.speeds._default;
479 + }
480 + }
481 + }
482 +
483 + // Normalize opt.queue - true/undefined/null -> "fx"
484 + if ( opt.queue == null || opt.queue === true ) {
485 + opt.queue = "fx";
486 + }
487 +
488 + // Queueing
489 + opt.old = opt.complete;
490 +
491 + opt.complete = function() {
492 + if ( isFunction( opt.old ) ) {
493 + opt.old.call( this );
494 + }
495 +
496 + if ( opt.queue ) {
497 + jQuery.dequeue( this, opt.queue );
498 + }
499 + };
500 +
501 + return opt;
502 +};
503 +
504 +jQuery.fn.extend( {
505 + fadeTo: function( speed, to, easing, callback ) {
506 +
507 + // Show any hidden elements after setting opacity to 0
508 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
509 +
510 + // Animate to the value specified
511 + .end().animate( { opacity: to }, speed, easing, callback );
512 + },
513 + animate: function( prop, speed, easing, callback ) {
514 + var empty = jQuery.isEmptyObject( prop ),
515 + optall = jQuery.speed( speed, easing, callback ),
516 + doAnimation = function() {
517 +
518 + // Operate on a copy of prop so per-property easing won't be lost
519 + var anim = Animation( this, jQuery.extend( {}, prop ), optall );
520 +
521 + // Empty animations, or finishing resolves immediately
522 + if ( empty || dataPriv.get( this, "finish" ) ) {
523 + anim.stop( true );
524 + }
525 + };
526 +
527 + doAnimation.finish = doAnimation;
528 +
529 + return empty || optall.queue === false ?
530 + this.each( doAnimation ) :
531 + this.queue( optall.queue, doAnimation );
532 + },
533 + stop: function( type, clearQueue, gotoEnd ) {
534 + var stopQueue = function( hooks ) {
535 + var stop = hooks.stop;
536 + delete hooks.stop;
537 + stop( gotoEnd );
538 + };
539 +
540 + if ( typeof type !== "string" ) {
541 + gotoEnd = clearQueue;
542 + clearQueue = type;
543 + type = undefined;
544 + }
545 + if ( clearQueue ) {
546 + this.queue( type || "fx", [] );
547 + }
548 +
549 + return this.each( function() {
550 + var dequeue = true,
551 + index = type != null && type + "queueHooks",
552 + timers = jQuery.timers,
553 + data = dataPriv.get( this );
554 +
555 + if ( index ) {
556 + if ( data[ index ] && data[ index ].stop ) {
557 + stopQueue( data[ index ] );
558 + }
559 + } else {
560 + for ( index in data ) {
561 + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
562 + stopQueue( data[ index ] );
563 + }
564 + }
565 + }
566 +
567 + for ( index = timers.length; index--; ) {
568 + if ( timers[ index ].elem === this &&
569 + ( type == null || timers[ index ].queue === type ) ) {
570 +
571 + timers[ index ].anim.stop( gotoEnd );
572 + dequeue = false;
573 + timers.splice( index, 1 );
574 + }
575 + }
576 +
577 + // Start the next in the queue if the last step wasn't forced.
578 + // Timers currently will call their complete callbacks, which
579 + // will dequeue but only if they were gotoEnd.
580 + if ( dequeue || !gotoEnd ) {
581 + jQuery.dequeue( this, type );
582 + }
583 + } );
584 + },
585 + finish: function( type ) {
586 + if ( type !== false ) {
587 + type = type || "fx";
588 + }
589 + return this.each( function() {
590 + var index,
591 + data = dataPriv.get( this ),
592 + queue = data[ type + "queue" ],
593 + hooks = data[ type + "queueHooks" ],
594 + timers = jQuery.timers,
595 + length = queue ? queue.length : 0;
596 +
597 + // Enable finishing flag on private data
598 + data.finish = true;
599 +
600 + // Empty the queue first
601 + jQuery.queue( this, type, [] );
602 +
603 + if ( hooks && hooks.stop ) {
604 + hooks.stop.call( this, true );
605 + }
606 +
607 + // Look for any active animations, and finish them
608 + for ( index = timers.length; index--; ) {
609 + if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
610 + timers[ index ].anim.stop( true );
611 + timers.splice( index, 1 );
612 + }
613 + }
614 +
615 + // Look for any animations in the old queue and finish them
616 + for ( index = 0; index < length; index++ ) {
617 + if ( queue[ index ] && queue[ index ].finish ) {
618 + queue[ index ].finish.call( this );
619 + }
620 + }
621 +
622 + // Turn off finishing flag
623 + delete data.finish;
624 + } );
625 + }
626 +} );
627 +
628 +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
629 + var cssFn = jQuery.fn[ name ];
630 + jQuery.fn[ name ] = function( speed, easing, callback ) {
631 + return speed == null || typeof speed === "boolean" ?
632 + cssFn.apply( this, arguments ) :
633 + this.animate( genFx( name, true ), speed, easing, callback );
634 + };
635 +} );
636 +
637 +// Generate shortcuts for custom animations
638 +jQuery.each( {
639 + slideDown: genFx( "show" ),
640 + slideUp: genFx( "hide" ),
641 + slideToggle: genFx( "toggle" ),
642 + fadeIn: { opacity: "show" },
643 + fadeOut: { opacity: "hide" },
644 + fadeToggle: { opacity: "toggle" }
645 +}, function( name, props ) {
646 + jQuery.fn[ name ] = function( speed, easing, callback ) {
647 + return this.animate( props, speed, easing, callback );
648 + };
649 +} );
650 +
651 +jQuery.timers = [];
652 +jQuery.fx.tick = function() {
653 + var timer,
654 + i = 0,
655 + timers = jQuery.timers;
656 +
657 + fxNow = Date.now();
658 +
659 + for ( ; i < timers.length; i++ ) {
660 + timer = timers[ i ];
661 +
662 + // Run the timer and safely remove it when done (allowing for external removal)
663 + if ( !timer() && timers[ i ] === timer ) {
664 + timers.splice( i--, 1 );
665 + }
666 + }
667 +
668 + if ( !timers.length ) {
669 + jQuery.fx.stop();
670 + }
671 + fxNow = undefined;
672 +};
673 +
674 +jQuery.fx.timer = function( timer ) {
675 + jQuery.timers.push( timer );
676 + jQuery.fx.start();
677 +};
678 +
679 +jQuery.fx.interval = 13;
680 +jQuery.fx.start = function() {
681 + if ( inProgress ) {
682 + return;
683 + }
684 +
685 + inProgress = true;
686 + schedule();
687 +};
688 +
689 +jQuery.fx.stop = function() {
690 + inProgress = null;
691 +};
692 +
693 +jQuery.fx.speeds = {
694 + slow: 600,
695 + fast: 200,
696 +
697 + // Default speed
698 + _default: 400
699 +};
700 +
701 +return jQuery;
702 +} );
1 +define( [
2 + "../core",
3 + "../css/finalPropName",
4 +
5 + "../css"
6 +], function( jQuery, finalPropName ) {
7 +
8 +"use strict";
9 +
10 +function Tween( elem, options, prop, end, easing ) {
11 + return new Tween.prototype.init( elem, options, prop, end, easing );
12 +}
13 +jQuery.Tween = Tween;
14 +
15 +Tween.prototype = {
16 + constructor: Tween,
17 + init: function( elem, options, prop, end, easing, unit ) {
18 + this.elem = elem;
19 + this.prop = prop;
20 + this.easing = easing || jQuery.easing._default;
21 + this.options = options;
22 + this.start = this.now = this.cur();
23 + this.end = end;
24 + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
25 + },
26 + cur: function() {
27 + var hooks = Tween.propHooks[ this.prop ];
28 +
29 + return hooks && hooks.get ?
30 + hooks.get( this ) :
31 + Tween.propHooks._default.get( this );
32 + },
33 + run: function( percent ) {
34 + var eased,
35 + hooks = Tween.propHooks[ this.prop ];
36 +
37 + if ( this.options.duration ) {
38 + this.pos = eased = jQuery.easing[ this.easing ](
39 + percent, this.options.duration * percent, 0, 1, this.options.duration
40 + );
41 + } else {
42 + this.pos = eased = percent;
43 + }
44 + this.now = ( this.end - this.start ) * eased + this.start;
45 +
46 + if ( this.options.step ) {
47 + this.options.step.call( this.elem, this.now, this );
48 + }
49 +
50 + if ( hooks && hooks.set ) {
51 + hooks.set( this );
52 + } else {
53 + Tween.propHooks._default.set( this );
54 + }
55 + return this;
56 + }
57 +};
58 +
59 +Tween.prototype.init.prototype = Tween.prototype;
60 +
61 +Tween.propHooks = {
62 + _default: {
63 + get: function( tween ) {
64 + var result;
65 +
66 + // Use a property on the element directly when it is not a DOM element,
67 + // or when there is no matching style property that exists.
68 + if ( tween.elem.nodeType !== 1 ||
69 + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
70 + return tween.elem[ tween.prop ];
71 + }
72 +
73 + // Passing an empty string as a 3rd parameter to .css will automatically
74 + // attempt a parseFloat and fallback to a string if the parse fails.
75 + // Simple values such as "10px" are parsed to Float;
76 + // complex values such as "rotate(1rad)" are returned as-is.
77 + result = jQuery.css( tween.elem, tween.prop, "" );
78 +
79 + // Empty strings, null, undefined and "auto" are converted to 0.
80 + return !result || result === "auto" ? 0 : result;
81 + },
82 + set: function( tween ) {
83 +
84 + // Use step hook for back compat.
85 + // Use cssHook if its there.
86 + // Use .style if available and use plain properties where available.
87 + if ( jQuery.fx.step[ tween.prop ] ) {
88 + jQuery.fx.step[ tween.prop ]( tween );
89 + } else if ( tween.elem.nodeType === 1 && (
90 + jQuery.cssHooks[ tween.prop ] ||
91 + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
92 + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
93 + } else {
94 + tween.elem[ tween.prop ] = tween.now;
95 + }
96 + }
97 + }
98 +};
99 +
100 +// Support: IE <=9 only
101 +// Panic based approach to setting things on disconnected nodes
102 +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
103 + set: function( tween ) {
104 + if ( tween.elem.nodeType && tween.elem.parentNode ) {
105 + tween.elem[ tween.prop ] = tween.now;
106 + }
107 + }
108 +};
109 +
110 +jQuery.easing = {
111 + linear: function( p ) {
112 + return p;
113 + },
114 + swing: function( p ) {
115 + return 0.5 - Math.cos( p * Math.PI ) / 2;
116 + },
117 + _default: "swing"
118 +};
119 +
120 +jQuery.fx = Tween.prototype.init;
121 +
122 +// Back compat <1.8 extension point
123 +jQuery.fx.step = {};
124 +
125 +} );
1 +define( [
2 + "../core",
3 + "../selector",
4 + "../effects"
5 +], function( jQuery ) {
6 +
7 +"use strict";
8 +
9 +jQuery.expr.pseudos.animated = function( elem ) {
10 + return jQuery.grep( jQuery.timers, function( fn ) {
11 + return elem === fn.elem;
12 + } ).length;
13 +};
14 +
15 +} );
1 +define( [
2 + "./core",
3 + "./var/document",
4 + "./var/documentElement",
5 + "./var/isFunction",
6 + "./var/rnothtmlwhite",
7 + "./var/rcheckableType",
8 + "./var/slice",
9 + "./data/var/acceptData",
10 + "./data/var/dataPriv",
11 + "./core/nodeName",
12 +
13 + "./core/init",
14 + "./selector"
15 +], function( jQuery, document, documentElement, isFunction, rnothtmlwhite,
16 + rcheckableType, slice, acceptData, dataPriv, nodeName ) {
17 +
18 +"use strict";
19 +
20 +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
21 +
22 +function returnTrue() {
23 + return true;
24 +}
25 +
26 +function returnFalse() {
27 + return false;
28 +}
29 +
30 +// Support: IE <=9 - 11+
31 +// focus() and blur() are asynchronous, except when they are no-op.
32 +// So expect focus to be synchronous when the element is already active,
33 +// and blur to be synchronous when the element is not already active.
34 +// (focus and blur are always synchronous in other supported browsers,
35 +// this just defines when we can count on it).
36 +function expectSync( elem, type ) {
37 + return ( elem === safeActiveElement() ) === ( type === "focus" );
38 +}
39 +
40 +// Support: IE <=9 only
41 +// Accessing document.activeElement can throw unexpectedly
42 +// https://bugs.jquery.com/ticket/13393
43 +function safeActiveElement() {
44 + try {
45 + return document.activeElement;
46 + } catch ( err ) { }
47 +}
48 +
49 +function on( elem, types, selector, data, fn, one ) {
50 + var origFn, type;
51 +
52 + // Types can be a map of types/handlers
53 + if ( typeof types === "object" ) {
54 +
55 + // ( types-Object, selector, data )
56 + if ( typeof selector !== "string" ) {
57 +
58 + // ( types-Object, data )
59 + data = data || selector;
60 + selector = undefined;
61 + }
62 + for ( type in types ) {
63 + on( elem, type, selector, data, types[ type ], one );
64 + }
65 + return elem;
66 + }
67 +
68 + if ( data == null && fn == null ) {
69 +
70 + // ( types, fn )
71 + fn = selector;
72 + data = selector = undefined;
73 + } else if ( fn == null ) {
74 + if ( typeof selector === "string" ) {
75 +
76 + // ( types, selector, fn )
77 + fn = data;
78 + data = undefined;
79 + } else {
80 +
81 + // ( types, data, fn )
82 + fn = data;
83 + data = selector;
84 + selector = undefined;
85 + }
86 + }
87 + if ( fn === false ) {
88 + fn = returnFalse;
89 + } else if ( !fn ) {
90 + return elem;
91 + }
92 +
93 + if ( one === 1 ) {
94 + origFn = fn;
95 + fn = function( event ) {
96 +
97 + // Can use an empty set, since event contains the info
98 + jQuery().off( event );
99 + return origFn.apply( this, arguments );
100 + };
101 +
102 + // Use same guid so caller can remove using origFn
103 + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
104 + }
105 + return elem.each( function() {
106 + jQuery.event.add( this, types, fn, data, selector );
107 + } );
108 +}
109 +
110 +/*
111 + * Helper functions for managing events -- not part of the public interface.
112 + * Props to Dean Edwards' addEvent library for many of the ideas.
113 + */
114 +jQuery.event = {
115 +
116 + global: {},
117 +
118 + add: function( elem, types, handler, data, selector ) {
119 +
120 + var handleObjIn, eventHandle, tmp,
121 + events, t, handleObj,
122 + special, handlers, type, namespaces, origType,
123 + elemData = dataPriv.get( elem );
124 +
125 + // Only attach events to objects that accept data
126 + if ( !acceptData( elem ) ) {
127 + return;
128 + }
129 +
130 + // Caller can pass in an object of custom data in lieu of the handler
131 + if ( handler.handler ) {
132 + handleObjIn = handler;
133 + handler = handleObjIn.handler;
134 + selector = handleObjIn.selector;
135 + }
136 +
137 + // Ensure that invalid selectors throw exceptions at attach time
138 + // Evaluate against documentElement in case elem is a non-element node (e.g., document)
139 + if ( selector ) {
140 + jQuery.find.matchesSelector( documentElement, selector );
141 + }
142 +
143 + // Make sure that the handler has a unique ID, used to find/remove it later
144 + if ( !handler.guid ) {
145 + handler.guid = jQuery.guid++;
146 + }
147 +
148 + // Init the element's event structure and main handler, if this is the first
149 + if ( !( events = elemData.events ) ) {
150 + events = elemData.events = Object.create( null );
151 + }
152 + if ( !( eventHandle = elemData.handle ) ) {
153 + eventHandle = elemData.handle = function( e ) {
154 +
155 + // Discard the second event of a jQuery.event.trigger() and
156 + // when an event is called after a page has unloaded
157 + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
158 + jQuery.event.dispatch.apply( elem, arguments ) : undefined;
159 + };
160 + }
161 +
162 + // Handle multiple events separated by a space
163 + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
164 + t = types.length;
165 + while ( t-- ) {
166 + tmp = rtypenamespace.exec( types[ t ] ) || [];
167 + type = origType = tmp[ 1 ];
168 + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
169 +
170 + // There *must* be a type, no attaching namespace-only handlers
171 + if ( !type ) {
172 + continue;
173 + }
174 +
175 + // If event changes its type, use the special event handlers for the changed type
176 + special = jQuery.event.special[ type ] || {};
177 +
178 + // If selector defined, determine special event api type, otherwise given type
179 + type = ( selector ? special.delegateType : special.bindType ) || type;
180 +
181 + // Update special based on newly reset type
182 + special = jQuery.event.special[ type ] || {};
183 +
184 + // handleObj is passed to all event handlers
185 + handleObj = jQuery.extend( {
186 + type: type,
187 + origType: origType,
188 + data: data,
189 + handler: handler,
190 + guid: handler.guid,
191 + selector: selector,
192 + needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
193 + namespace: namespaces.join( "." )
194 + }, handleObjIn );
195 +
196 + // Init the event handler queue if we're the first
197 + if ( !( handlers = events[ type ] ) ) {
198 + handlers = events[ type ] = [];
199 + handlers.delegateCount = 0;
200 +
201 + // Only use addEventListener if the special events handler returns false
202 + if ( !special.setup ||
203 + special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
204 +
205 + if ( elem.addEventListener ) {
206 + elem.addEventListener( type, eventHandle );
207 + }
208 + }
209 + }
210 +
211 + if ( special.add ) {
212 + special.add.call( elem, handleObj );
213 +
214 + if ( !handleObj.handler.guid ) {
215 + handleObj.handler.guid = handler.guid;
216 + }
217 + }
218 +
219 + // Add to the element's handler list, delegates in front
220 + if ( selector ) {
221 + handlers.splice( handlers.delegateCount++, 0, handleObj );
222 + } else {
223 + handlers.push( handleObj );
224 + }
225 +
226 + // Keep track of which events have ever been used, for event optimization
227 + jQuery.event.global[ type ] = true;
228 + }
229 +
230 + },
231 +
232 + // Detach an event or set of events from an element
233 + remove: function( elem, types, handler, selector, mappedTypes ) {
234 +
235 + var j, origCount, tmp,
236 + events, t, handleObj,
237 + special, handlers, type, namespaces, origType,
238 + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
239 +
240 + if ( !elemData || !( events = elemData.events ) ) {
241 + return;
242 + }
243 +
244 + // Once for each type.namespace in types; type may be omitted
245 + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
246 + t = types.length;
247 + while ( t-- ) {
248 + tmp = rtypenamespace.exec( types[ t ] ) || [];
249 + type = origType = tmp[ 1 ];
250 + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
251 +
252 + // Unbind all events (on this namespace, if provided) for the element
253 + if ( !type ) {
254 + for ( type in events ) {
255 + jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
256 + }
257 + continue;
258 + }
259 +
260 + special = jQuery.event.special[ type ] || {};
261 + type = ( selector ? special.delegateType : special.bindType ) || type;
262 + handlers = events[ type ] || [];
263 + tmp = tmp[ 2 ] &&
264 + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
265 +
266 + // Remove matching events
267 + origCount = j = handlers.length;
268 + while ( j-- ) {
269 + handleObj = handlers[ j ];
270 +
271 + if ( ( mappedTypes || origType === handleObj.origType ) &&
272 + ( !handler || handler.guid === handleObj.guid ) &&
273 + ( !tmp || tmp.test( handleObj.namespace ) ) &&
274 + ( !selector || selector === handleObj.selector ||
275 + selector === "**" && handleObj.selector ) ) {
276 + handlers.splice( j, 1 );
277 +
278 + if ( handleObj.selector ) {
279 + handlers.delegateCount--;
280 + }
281 + if ( special.remove ) {
282 + special.remove.call( elem, handleObj );
283 + }
284 + }
285 + }
286 +
287 + // Remove generic event handler if we removed something and no more handlers exist
288 + // (avoids potential for endless recursion during removal of special event handlers)
289 + if ( origCount && !handlers.length ) {
290 + if ( !special.teardown ||
291 + special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
292 +
293 + jQuery.removeEvent( elem, type, elemData.handle );
294 + }
295 +
296 + delete events[ type ];
297 + }
298 + }
299 +
300 + // Remove data and the expando if it's no longer used
301 + if ( jQuery.isEmptyObject( events ) ) {
302 + dataPriv.remove( elem, "handle events" );
303 + }
304 + },
305 +
306 + dispatch: function( nativeEvent ) {
307 +
308 + var i, j, ret, matched, handleObj, handlerQueue,
309 + args = new Array( arguments.length ),
310 +
311 + // Make a writable jQuery.Event from the native event object
312 + event = jQuery.event.fix( nativeEvent ),
313 +
314 + handlers = (
315 + dataPriv.get( this, "events" ) || Object.create( null )
316 + )[ event.type ] || [],
317 + special = jQuery.event.special[ event.type ] || {};
318 +
319 + // Use the fix-ed jQuery.Event rather than the (read-only) native event
320 + args[ 0 ] = event;
321 +
322 + for ( i = 1; i < arguments.length; i++ ) {
323 + args[ i ] = arguments[ i ];
324 + }
325 +
326 + event.delegateTarget = this;
327 +
328 + // Call the preDispatch hook for the mapped type, and let it bail if desired
329 + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
330 + return;
331 + }
332 +
333 + // Determine handlers
334 + handlerQueue = jQuery.event.handlers.call( this, event, handlers );
335 +
336 + // Run delegates first; they may want to stop propagation beneath us
337 + i = 0;
338 + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
339 + event.currentTarget = matched.elem;
340 +
341 + j = 0;
342 + while ( ( handleObj = matched.handlers[ j++ ] ) &&
343 + !event.isImmediatePropagationStopped() ) {
344 +
345 + // If the event is namespaced, then each handler is only invoked if it is
346 + // specially universal or its namespaces are a superset of the event's.
347 + if ( !event.rnamespace || handleObj.namespace === false ||
348 + event.rnamespace.test( handleObj.namespace ) ) {
349 +
350 + event.handleObj = handleObj;
351 + event.data = handleObj.data;
352 +
353 + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
354 + handleObj.handler ).apply( matched.elem, args );
355 +
356 + if ( ret !== undefined ) {
357 + if ( ( event.result = ret ) === false ) {
358 + event.preventDefault();
359 + event.stopPropagation();
360 + }
361 + }
362 + }
363 + }
364 + }
365 +
366 + // Call the postDispatch hook for the mapped type
367 + if ( special.postDispatch ) {
368 + special.postDispatch.call( this, event );
369 + }
370 +
371 + return event.result;
372 + },
373 +
374 + handlers: function( event, handlers ) {
375 + var i, handleObj, sel, matchedHandlers, matchedSelectors,
376 + handlerQueue = [],
377 + delegateCount = handlers.delegateCount,
378 + cur = event.target;
379 +
380 + // Find delegate handlers
381 + if ( delegateCount &&
382 +
383 + // Support: IE <=9
384 + // Black-hole SVG <use> instance trees (trac-13180)
385 + cur.nodeType &&
386 +
387 + // Support: Firefox <=42
388 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
389 + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
390 + // Support: IE 11 only
391 + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
392 + !( event.type === "click" && event.button >= 1 ) ) {
393 +
394 + for ( ; cur !== this; cur = cur.parentNode || this ) {
395 +
396 + // Don't check non-elements (#13208)
397 + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
398 + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
399 + matchedHandlers = [];
400 + matchedSelectors = {};
401 + for ( i = 0; i < delegateCount; i++ ) {
402 + handleObj = handlers[ i ];
403 +
404 + // Don't conflict with Object.prototype properties (#13203)
405 + sel = handleObj.selector + " ";
406 +
407 + if ( matchedSelectors[ sel ] === undefined ) {
408 + matchedSelectors[ sel ] = handleObj.needsContext ?
409 + jQuery( sel, this ).index( cur ) > -1 :
410 + jQuery.find( sel, this, null, [ cur ] ).length;
411 + }
412 + if ( matchedSelectors[ sel ] ) {
413 + matchedHandlers.push( handleObj );
414 + }
415 + }
416 + if ( matchedHandlers.length ) {
417 + handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
418 + }
419 + }
420 + }
421 + }
422 +
423 + // Add the remaining (directly-bound) handlers
424 + cur = this;
425 + if ( delegateCount < handlers.length ) {
426 + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
427 + }
428 +
429 + return handlerQueue;
430 + },
431 +
432 + addProp: function( name, hook ) {
433 + Object.defineProperty( jQuery.Event.prototype, name, {
434 + enumerable: true,
435 + configurable: true,
436 +
437 + get: isFunction( hook ) ?
438 + function() {
439 + if ( this.originalEvent ) {
440 + return hook( this.originalEvent );
441 + }
442 + } :
443 + function() {
444 + if ( this.originalEvent ) {
445 + return this.originalEvent[ name ];
446 + }
447 + },
448 +
449 + set: function( value ) {
450 + Object.defineProperty( this, name, {
451 + enumerable: true,
452 + configurable: true,
453 + writable: true,
454 + value: value
455 + } );
456 + }
457 + } );
458 + },
459 +
460 + fix: function( originalEvent ) {
461 + return originalEvent[ jQuery.expando ] ?
462 + originalEvent :
463 + new jQuery.Event( originalEvent );
464 + },
465 +
466 + special: {
467 + load: {
468 +
469 + // Prevent triggered image.load events from bubbling to window.load
470 + noBubble: true
471 + },
472 + click: {
473 +
474 + // Utilize native event to ensure correct state for checkable inputs
475 + setup: function( data ) {
476 +
477 + // For mutual compressibility with _default, replace `this` access with a local var.
478 + // `|| data` is dead code meant only to preserve the variable through minification.
479 + var el = this || data;
480 +
481 + // Claim the first handler
482 + if ( rcheckableType.test( el.type ) &&
483 + el.click && nodeName( el, "input" ) ) {
484 +
485 + // dataPriv.set( el, "click", ... )
486 + leverageNative( el, "click", returnTrue );
487 + }
488 +
489 + // Return false to allow normal processing in the caller
490 + return false;
491 + },
492 + trigger: function( data ) {
493 +
494 + // For mutual compressibility with _default, replace `this` access with a local var.
495 + // `|| data` is dead code meant only to preserve the variable through minification.
496 + var el = this || data;
497 +
498 + // Force setup before triggering a click
499 + if ( rcheckableType.test( el.type ) &&
500 + el.click && nodeName( el, "input" ) ) {
501 +
502 + leverageNative( el, "click" );
503 + }
504 +
505 + // Return non-false to allow normal event-path propagation
506 + return true;
507 + },
508 +
509 + // For cross-browser consistency, suppress native .click() on links
510 + // Also prevent it if we're currently inside a leveraged native-event stack
511 + _default: function( event ) {
512 + var target = event.target;
513 + return rcheckableType.test( target.type ) &&
514 + target.click && nodeName( target, "input" ) &&
515 + dataPriv.get( target, "click" ) ||
516 + nodeName( target, "a" );
517 + }
518 + },
519 +
520 + beforeunload: {
521 + postDispatch: function( event ) {
522 +
523 + // Support: Firefox 20+
524 + // Firefox doesn't alert if the returnValue field is not set.
525 + if ( event.result !== undefined && event.originalEvent ) {
526 + event.originalEvent.returnValue = event.result;
527 + }
528 + }
529 + }
530 + }
531 +};
532 +
533 +// Ensure the presence of an event listener that handles manually-triggered
534 +// synthetic events by interrupting progress until reinvoked in response to
535 +// *native* events that it fires directly, ensuring that state changes have
536 +// already occurred before other listeners are invoked.
537 +function leverageNative( el, type, expectSync ) {
538 +
539 + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
540 + if ( !expectSync ) {
541 + if ( dataPriv.get( el, type ) === undefined ) {
542 + jQuery.event.add( el, type, returnTrue );
543 + }
544 + return;
545 + }
546 +
547 + // Register the controller as a special universal handler for all event namespaces
548 + dataPriv.set( el, type, false );
549 + jQuery.event.add( el, type, {
550 + namespace: false,
551 + handler: function( event ) {
552 + var notAsync, result,
553 + saved = dataPriv.get( this, type );
554 +
555 + if ( ( event.isTrigger & 1 ) && this[ type ] ) {
556 +
557 + // Interrupt processing of the outer synthetic .trigger()ed event
558 + // Saved data should be false in such cases, but might be a leftover capture object
559 + // from an async native handler (gh-4350)
560 + if ( !saved.length ) {
561 +
562 + // Store arguments for use when handling the inner native event
563 + // There will always be at least one argument (an event object), so this array
564 + // will not be confused with a leftover capture object.
565 + saved = slice.call( arguments );
566 + dataPriv.set( this, type, saved );
567 +
568 + // Trigger the native event and capture its result
569 + // Support: IE <=9 - 11+
570 + // focus() and blur() are asynchronous
571 + notAsync = expectSync( this, type );
572 + this[ type ]();
573 + result = dataPriv.get( this, type );
574 + if ( saved !== result || notAsync ) {
575 + dataPriv.set( this, type, false );
576 + } else {
577 + result = {};
578 + }
579 + if ( saved !== result ) {
580 +
581 + // Cancel the outer synthetic event
582 + event.stopImmediatePropagation();
583 + event.preventDefault();
584 +
585 + // Support: Chrome 86+
586 + // In Chrome, if an element having a focusout handler is blurred by
587 + // clicking outside of it, it invokes the handler synchronously. If
588 + // that handler calls `.remove()` on the element, the data is cleared,
589 + // leaving `result` undefined. We need to guard against this.
590 + return result && result.value;
591 + }
592 +
593 + // If this is an inner synthetic event for an event with a bubbling surrogate
594 + // (focus or blur), assume that the surrogate already propagated from triggering the
595 + // native event and prevent that from happening again here.
596 + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
597 + // bubbling surrogate propagates *after* the non-bubbling base), but that seems
598 + // less bad than duplication.
599 + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
600 + event.stopPropagation();
601 + }
602 +
603 + // If this is a native event triggered above, everything is now in order
604 + // Fire an inner synthetic event with the original arguments
605 + } else if ( saved.length ) {
606 +
607 + // ...and capture the result
608 + dataPriv.set( this, type, {
609 + value: jQuery.event.trigger(
610 +
611 + // Support: IE <=9 - 11+
612 + // Extend with the prototype to reset the above stopImmediatePropagation()
613 + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
614 + saved.slice( 1 ),
615 + this
616 + )
617 + } );
618 +
619 + // Abort handling of the native event
620 + event.stopImmediatePropagation();
621 + }
622 + }
623 + } );
624 +}
625 +
626 +jQuery.removeEvent = function( elem, type, handle ) {
627 +
628 + // This "if" is needed for plain objects
629 + if ( elem.removeEventListener ) {
630 + elem.removeEventListener( type, handle );
631 + }
632 +};
633 +
634 +jQuery.Event = function( src, props ) {
635 +
636 + // Allow instantiation without the 'new' keyword
637 + if ( !( this instanceof jQuery.Event ) ) {
638 + return new jQuery.Event( src, props );
639 + }
640 +
641 + // Event object
642 + if ( src && src.type ) {
643 + this.originalEvent = src;
644 + this.type = src.type;
645 +
646 + // Events bubbling up the document may have been marked as prevented
647 + // by a handler lower down the tree; reflect the correct value.
648 + this.isDefaultPrevented = src.defaultPrevented ||
649 + src.defaultPrevented === undefined &&
650 +
651 + // Support: Android <=2.3 only
652 + src.returnValue === false ?
653 + returnTrue :
654 + returnFalse;
655 +
656 + // Create target properties
657 + // Support: Safari <=6 - 7 only
658 + // Target should not be a text node (#504, #13143)
659 + this.target = ( src.target && src.target.nodeType === 3 ) ?
660 + src.target.parentNode :
661 + src.target;
662 +
663 + this.currentTarget = src.currentTarget;
664 + this.relatedTarget = src.relatedTarget;
665 +
666 + // Event type
667 + } else {
668 + this.type = src;
669 + }
670 +
671 + // Put explicitly provided properties onto the event object
672 + if ( props ) {
673 + jQuery.extend( this, props );
674 + }
675 +
676 + // Create a timestamp if incoming event doesn't have one
677 + this.timeStamp = src && src.timeStamp || Date.now();
678 +
679 + // Mark it as fixed
680 + this[ jQuery.expando ] = true;
681 +};
682 +
683 +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
684 +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
685 +jQuery.Event.prototype = {
686 + constructor: jQuery.Event,
687 + isDefaultPrevented: returnFalse,
688 + isPropagationStopped: returnFalse,
689 + isImmediatePropagationStopped: returnFalse,
690 + isSimulated: false,
691 +
692 + preventDefault: function() {
693 + var e = this.originalEvent;
694 +
695 + this.isDefaultPrevented = returnTrue;
696 +
697 + if ( e && !this.isSimulated ) {
698 + e.preventDefault();
699 + }
700 + },
701 + stopPropagation: function() {
702 + var e = this.originalEvent;
703 +
704 + this.isPropagationStopped = returnTrue;
705 +
706 + if ( e && !this.isSimulated ) {
707 + e.stopPropagation();
708 + }
709 + },
710 + stopImmediatePropagation: function() {
711 + var e = this.originalEvent;
712 +
713 + this.isImmediatePropagationStopped = returnTrue;
714 +
715 + if ( e && !this.isSimulated ) {
716 + e.stopImmediatePropagation();
717 + }
718 +
719 + this.stopPropagation();
720 + }
721 +};
722 +
723 +// Includes all common event props including KeyEvent and MouseEvent specific props
724 +jQuery.each( {
725 + altKey: true,
726 + bubbles: true,
727 + cancelable: true,
728 + changedTouches: true,
729 + ctrlKey: true,
730 + detail: true,
731 + eventPhase: true,
732 + metaKey: true,
733 + pageX: true,
734 + pageY: true,
735 + shiftKey: true,
736 + view: true,
737 + "char": true,
738 + code: true,
739 + charCode: true,
740 + key: true,
741 + keyCode: true,
742 + button: true,
743 + buttons: true,
744 + clientX: true,
745 + clientY: true,
746 + offsetX: true,
747 + offsetY: true,
748 + pointerId: true,
749 + pointerType: true,
750 + screenX: true,
751 + screenY: true,
752 + targetTouches: true,
753 + toElement: true,
754 + touches: true,
755 + which: true
756 +}, jQuery.event.addProp );
757 +
758 +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
759 + jQuery.event.special[ type ] = {
760 +
761 + // Utilize native event if possible so blur/focus sequence is correct
762 + setup: function() {
763 +
764 + // Claim the first handler
765 + // dataPriv.set( this, "focus", ... )
766 + // dataPriv.set( this, "blur", ... )
767 + leverageNative( this, type, expectSync );
768 +
769 + // Return false to allow normal processing in the caller
770 + return false;
771 + },
772 + trigger: function() {
773 +
774 + // Force setup before trigger
775 + leverageNative( this, type );
776 +
777 + // Return non-false to allow normal event-path propagation
778 + return true;
779 + },
780 +
781 + // Suppress native focus or blur as it's already being fired
782 + // in leverageNative.
783 + _default: function() {
784 + return true;
785 + },
786 +
787 + delegateType: delegateType
788 + };
789 +} );
790 +
791 +// Create mouseenter/leave events using mouseover/out and event-time checks
792 +// so that event delegation works in jQuery.
793 +// Do the same for pointerenter/pointerleave and pointerover/pointerout
794 +//
795 +// Support: Safari 7 only
796 +// Safari sends mouseenter too often; see:
797 +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
798 +// for the description of the bug (it existed in older Chrome versions as well).
799 +jQuery.each( {
800 + mouseenter: "mouseover",
801 + mouseleave: "mouseout",
802 + pointerenter: "pointerover",
803 + pointerleave: "pointerout"
804 +}, function( orig, fix ) {
805 + jQuery.event.special[ orig ] = {
806 + delegateType: fix,
807 + bindType: fix,
808 +
809 + handle: function( event ) {
810 + var ret,
811 + target = this,
812 + related = event.relatedTarget,
813 + handleObj = event.handleObj;
814 +
815 + // For mouseenter/leave call the handler if related is outside the target.
816 + // NB: No relatedTarget if the mouse left/entered the browser window
817 + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
818 + event.type = handleObj.origType;
819 + ret = handleObj.handler.apply( this, arguments );
820 + event.type = fix;
821 + }
822 + return ret;
823 + }
824 + };
825 +} );
826 +
827 +jQuery.fn.extend( {
828 +
829 + on: function( types, selector, data, fn ) {
830 + return on( this, types, selector, data, fn );
831 + },
832 + one: function( types, selector, data, fn ) {
833 + return on( this, types, selector, data, fn, 1 );
834 + },
835 + off: function( types, selector, fn ) {
836 + var handleObj, type;
837 + if ( types && types.preventDefault && types.handleObj ) {
838 +
839 + // ( event ) dispatched jQuery.Event
840 + handleObj = types.handleObj;
841 + jQuery( types.delegateTarget ).off(
842 + handleObj.namespace ?
843 + handleObj.origType + "." + handleObj.namespace :
844 + handleObj.origType,
845 + handleObj.selector,
846 + handleObj.handler
847 + );
848 + return this;
849 + }
850 + if ( typeof types === "object" ) {
851 +
852 + // ( types-object [, selector] )
853 + for ( type in types ) {
854 + this.off( type, selector, types[ type ] );
855 + }
856 + return this;
857 + }
858 + if ( selector === false || typeof selector === "function" ) {
859 +
860 + // ( types [, fn] )
861 + fn = selector;
862 + selector = undefined;
863 + }
864 + if ( fn === false ) {
865 + fn = returnFalse;
866 + }
867 + return this.each( function() {
868 + jQuery.event.remove( this, types, fn, selector );
869 + } );
870 + }
871 +} );
872 +
873 +return jQuery;
874 +} );
1 +define( [
2 + "../core",
3 + "../data/var/dataPriv",
4 + "./support",
5 +
6 + "../event",
7 + "./trigger"
8 +], function( jQuery, dataPriv, support ) {
9 +
10 +"use strict";
11 +
12 +// Support: Firefox <=44
13 +// Firefox doesn't have focus(in | out) events
14 +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
15 +//
16 +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
17 +// focus(in | out) events fire after focus & blur events,
18 +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
19 +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
20 +if ( !support.focusin ) {
21 + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
22 +
23 + // Attach a single capturing handler on the document while someone wants focusin/focusout
24 + var handler = function( event ) {
25 + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
26 + };
27 +
28 + jQuery.event.special[ fix ] = {
29 + setup: function() {
30 +
31 + // Handle: regular nodes (via `this.ownerDocument`), window
32 + // (via `this.document`) & document (via `this`).
33 + var doc = this.ownerDocument || this.document || this,
34 + attaches = dataPriv.access( doc, fix );
35 +
36 + if ( !attaches ) {
37 + doc.addEventListener( orig, handler, true );
38 + }
39 + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
40 + },
41 + teardown: function() {
42 + var doc = this.ownerDocument || this.document || this,
43 + attaches = dataPriv.access( doc, fix ) - 1;
44 +
45 + if ( !attaches ) {
46 + doc.removeEventListener( orig, handler, true );
47 + dataPriv.remove( doc, fix );
48 +
49 + } else {
50 + dataPriv.access( doc, fix, attaches );
51 + }
52 + }
53 + };
54 + } );
55 +}
56 +
57 +return jQuery;
58 +} );
1 +define( [
2 + "../var/support"
3 +], function( support ) {
4 +
5 +"use strict";
6 +
7 +support.focusin = "onfocusin" in window;
8 +
9 +return support;
10 +
11 +} );
1 +define( [
2 + "../core",
3 + "../var/document",
4 + "../data/var/dataPriv",
5 + "../data/var/acceptData",
6 + "../var/hasOwn",
7 + "../var/isFunction",
8 + "../var/isWindow",
9 + "../event"
10 +], function( jQuery, document, dataPriv, acceptData, hasOwn, isFunction, isWindow ) {
11 +
12 +"use strict";
13 +
14 +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
15 + stopPropagationCallback = function( e ) {
16 + e.stopPropagation();
17 + };
18 +
19 +jQuery.extend( jQuery.event, {
20 +
21 + trigger: function( event, data, elem, onlyHandlers ) {
22 +
23 + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
24 + eventPath = [ elem || document ],
25 + type = hasOwn.call( event, "type" ) ? event.type : event,
26 + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
27 +
28 + cur = lastElement = tmp = elem = elem || document;
29 +
30 + // Don't do events on text and comment nodes
31 + if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
32 + return;
33 + }
34 +
35 + // focus/blur morphs to focusin/out; ensure we're not firing them right now
36 + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
37 + return;
38 + }
39 +
40 + if ( type.indexOf( "." ) > -1 ) {
41 +
42 + // Namespaced trigger; create a regexp to match event type in handle()
43 + namespaces = type.split( "." );
44 + type = namespaces.shift();
45 + namespaces.sort();
46 + }
47 + ontype = type.indexOf( ":" ) < 0 && "on" + type;
48 +
49 + // Caller can pass in a jQuery.Event object, Object, or just an event type string
50 + event = event[ jQuery.expando ] ?
51 + event :
52 + new jQuery.Event( type, typeof event === "object" && event );
53 +
54 + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
55 + event.isTrigger = onlyHandlers ? 2 : 3;
56 + event.namespace = namespaces.join( "." );
57 + event.rnamespace = event.namespace ?
58 + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
59 + null;
60 +
61 + // Clean up the event in case it is being reused
62 + event.result = undefined;
63 + if ( !event.target ) {
64 + event.target = elem;
65 + }
66 +
67 + // Clone any incoming data and prepend the event, creating the handler arg list
68 + data = data == null ?
69 + [ event ] :
70 + jQuery.makeArray( data, [ event ] );
71 +
72 + // Allow special events to draw outside the lines
73 + special = jQuery.event.special[ type ] || {};
74 + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
75 + return;
76 + }
77 +
78 + // Determine event propagation path in advance, per W3C events spec (#9951)
79 + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
80 + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
81 +
82 + bubbleType = special.delegateType || type;
83 + if ( !rfocusMorph.test( bubbleType + type ) ) {
84 + cur = cur.parentNode;
85 + }
86 + for ( ; cur; cur = cur.parentNode ) {
87 + eventPath.push( cur );
88 + tmp = cur;
89 + }
90 +
91 + // Only add window if we got to document (e.g., not plain obj or detached DOM)
92 + if ( tmp === ( elem.ownerDocument || document ) ) {
93 + eventPath.push( tmp.defaultView || tmp.parentWindow || window );
94 + }
95 + }
96 +
97 + // Fire handlers on the event path
98 + i = 0;
99 + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
100 + lastElement = cur;
101 + event.type = i > 1 ?
102 + bubbleType :
103 + special.bindType || type;
104 +
105 + // jQuery handler
106 + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
107 + dataPriv.get( cur, "handle" );
108 + if ( handle ) {
109 + handle.apply( cur, data );
110 + }
111 +
112 + // Native handler
113 + handle = ontype && cur[ ontype ];
114 + if ( handle && handle.apply && acceptData( cur ) ) {
115 + event.result = handle.apply( cur, data );
116 + if ( event.result === false ) {
117 + event.preventDefault();
118 + }
119 + }
120 + }
121 + event.type = type;
122 +
123 + // If nobody prevented the default action, do it now
124 + if ( !onlyHandlers && !event.isDefaultPrevented() ) {
125 +
126 + if ( ( !special._default ||
127 + special._default.apply( eventPath.pop(), data ) === false ) &&
128 + acceptData( elem ) ) {
129 +
130 + // Call a native DOM method on the target with the same name as the event.
131 + // Don't do default actions on window, that's where global variables be (#6170)
132 + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
133 +
134 + // Don't re-trigger an onFOO event when we call its FOO() method
135 + tmp = elem[ ontype ];
136 +
137 + if ( tmp ) {
138 + elem[ ontype ] = null;
139 + }
140 +
141 + // Prevent re-triggering of the same event, since we already bubbled it above
142 + jQuery.event.triggered = type;
143 +
144 + if ( event.isPropagationStopped() ) {
145 + lastElement.addEventListener( type, stopPropagationCallback );
146 + }
147 +
148 + elem[ type ]();
149 +
150 + if ( event.isPropagationStopped() ) {
151 + lastElement.removeEventListener( type, stopPropagationCallback );
152 + }
153 +
154 + jQuery.event.triggered = undefined;
155 +
156 + if ( tmp ) {
157 + elem[ ontype ] = tmp;
158 + }
159 + }
160 + }
161 + }
162 +
163 + return event.result;
164 + },
165 +
166 + // Piggyback on a donor event to simulate a different one
167 + // Used only for `focus(in | out)` events
168 + simulate: function( type, elem, event ) {
169 + var e = jQuery.extend(
170 + new jQuery.Event(),
171 + event,
172 + {
173 + type: type,
174 + isSimulated: true
175 + }
176 + );
177 +
178 + jQuery.event.trigger( e, null, elem );
179 + }
180 +
181 +} );
182 +
183 +jQuery.fn.extend( {
184 +
185 + trigger: function( type, data ) {
186 + return this.each( function() {
187 + jQuery.event.trigger( type, data, this );
188 + } );
189 + },
190 + triggerHandler: function( type, data ) {
191 + var elem = this[ 0 ];
192 + if ( elem ) {
193 + return jQuery.event.trigger( type, data, elem, true );
194 + }
195 + }
196 +} );
197 +
198 +return jQuery;
199 +} );
1 +define( [
2 + "../core"
3 +], function( jQuery ) {
4 +
5 +"use strict";
6 +
7 +// Register as a named AMD module, since jQuery can be concatenated with other
8 +// files that may use define, but not via a proper concatenation script that
9 +// understands anonymous AMD modules. A named AMD is safest and most robust
10 +// way to register. Lowercase jquery is used because AMD module names are
11 +// derived from file names, and jQuery is normally delivered in a lowercase
12 +// file name. Do this after creating the global so that if an AMD module wants
13 +// to call noConflict to hide this version of jQuery, it will work.
14 +
15 +// Note that for maximum portability, libraries that are not jQuery should
16 +// declare themselves as anonymous modules, and avoid setting a global if an
17 +// AMD loader is present. jQuery is a special case. For more information, see
18 +// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
19 +
20 +if ( typeof define === "function" && define.amd ) {
21 + define( "jquery", [], function() {
22 + return jQuery;
23 + } );
24 +}
25 +
26 +} );
1 +define( [
2 + "../core"
3 +], function( jQuery ) {
4 +
5 +"use strict";
6 +
7 +var
8 +
9 + // Map over jQuery in case of overwrite
10 + _jQuery = window.jQuery,
11 +
12 + // Map over the $ in case of overwrite
13 + _$ = window.$;
14 +
15 +jQuery.noConflict = function( deep ) {
16 + if ( window.$ === jQuery ) {
17 + window.$ = _$;
18 + }
19 +
20 + if ( deep && window.jQuery === jQuery ) {
21 + window.jQuery = _jQuery;
22 + }
23 +
24 + return jQuery;
25 +};
26 +
27 +// Expose jQuery and $ identifiers, even in AMD
28 +// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
29 +// and CommonJS for browser emulators (#13566)
30 +if ( typeof noGlobal === "undefined" ) {
31 + window.jQuery = window.$ = jQuery;
32 +}
33 +
34 +} );
1 +define( [
2 + "./core",
3 + "./selector",
4 + "./traversing",
5 + "./callbacks",
6 + "./deferred",
7 + "./deferred/exceptionHook",
8 + "./core/ready",
9 + "./data",
10 + "./queue",
11 + "./queue/delay",
12 + "./attributes",
13 + "./event",
14 + "./event/focusin",
15 + "./manipulation",
16 + "./manipulation/_evalUrl",
17 + "./wrap",
18 + "./css",
19 + "./css/hiddenVisibleSelectors",
20 + "./serialize",
21 + "./ajax",
22 + "./ajax/xhr",
23 + "./ajax/script",
24 + "./ajax/jsonp",
25 + "./ajax/load",
26 + "./core/parseXML",
27 + "./core/parseHTML",
28 + "./effects",
29 + "./effects/animatedSelector",
30 + "./offset",
31 + "./dimensions",
32 + "./deprecated",
33 + "./exports/amd",
34 + "./exports/global"
35 +], function( jQuery ) {
36 +
37 +"use strict";
38 +
39 +return jQuery;
40 +
41 +} );
1 +define( [
2 + "./core",
3 + "./core/isAttached",
4 + "./var/flat",
5 + "./var/isFunction",
6 + "./var/push",
7 + "./var/rcheckableType",
8 + "./core/access",
9 + "./manipulation/var/rtagName",
10 + "./manipulation/var/rscriptType",
11 + "./manipulation/wrapMap",
12 + "./manipulation/getAll",
13 + "./manipulation/setGlobalEval",
14 + "./manipulation/buildFragment",
15 + "./manipulation/support",
16 +
17 + "./data/var/dataPriv",
18 + "./data/var/dataUser",
19 + "./data/var/acceptData",
20 + "./core/DOMEval",
21 + "./core/nodeName",
22 +
23 + "./core/init",
24 + "./traversing",
25 + "./selector",
26 + "./event"
27 +], function( jQuery, isAttached, flat, isFunction, push, rcheckableType,
28 + access, rtagName, rscriptType,
29 + wrapMap, getAll, setGlobalEval, buildFragment, support,
30 + dataPriv, dataUser, acceptData, DOMEval, nodeName ) {
31 +
32 +"use strict";
33 +
34 +var
35 +
36 + // Support: IE <=10 - 11, Edge 12 - 13 only
37 + // In IE/Edge using regex groups here causes severe slowdowns.
38 + // See https://connect.microsoft.com/IE/feedback/details/1736512/
39 + rnoInnerhtml = /<script|<style|<link/i,
40 +
41 + // checked="checked" or checked
42 + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
43 + rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
44 +
45 +// Prefer a tbody over its parent table for containing new rows
46 +function manipulationTarget( elem, content ) {
47 + if ( nodeName( elem, "table" ) &&
48 + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
49 +
50 + return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
51 + }
52 +
53 + return elem;
54 +}
55 +
56 +// Replace/restore the type attribute of script elements for safe DOM manipulation
57 +function disableScript( elem ) {
58 + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
59 + return elem;
60 +}
61 +function restoreScript( elem ) {
62 + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
63 + elem.type = elem.type.slice( 5 );
64 + } else {
65 + elem.removeAttribute( "type" );
66 + }
67 +
68 + return elem;
69 +}
70 +
71 +function cloneCopyEvent( src, dest ) {
72 + var i, l, type, pdataOld, udataOld, udataCur, events;
73 +
74 + if ( dest.nodeType !== 1 ) {
75 + return;
76 + }
77 +
78 + // 1. Copy private data: events, handlers, etc.
79 + if ( dataPriv.hasData( src ) ) {
80 + pdataOld = dataPriv.get( src );
81 + events = pdataOld.events;
82 +
83 + if ( events ) {
84 + dataPriv.remove( dest, "handle events" );
85 +
86 + for ( type in events ) {
87 + for ( i = 0, l = events[ type ].length; i < l; i++ ) {
88 + jQuery.event.add( dest, type, events[ type ][ i ] );
89 + }
90 + }
91 + }
92 + }
93 +
94 + // 2. Copy user data
95 + if ( dataUser.hasData( src ) ) {
96 + udataOld = dataUser.access( src );
97 + udataCur = jQuery.extend( {}, udataOld );
98 +
99 + dataUser.set( dest, udataCur );
100 + }
101 +}
102 +
103 +// Fix IE bugs, see support tests
104 +function fixInput( src, dest ) {
105 + var nodeName = dest.nodeName.toLowerCase();
106 +
107 + // Fails to persist the checked state of a cloned checkbox or radio button.
108 + if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
109 + dest.checked = src.checked;
110 +
111 + // Fails to return the selected option to the default selected state when cloning options
112 + } else if ( nodeName === "input" || nodeName === "textarea" ) {
113 + dest.defaultValue = src.defaultValue;
114 + }
115 +}
116 +
117 +function domManip( collection, args, callback, ignored ) {
118 +
119 + // Flatten any nested arrays
120 + args = flat( args );
121 +
122 + var fragment, first, scripts, hasScripts, node, doc,
123 + i = 0,
124 + l = collection.length,
125 + iNoClone = l - 1,
126 + value = args[ 0 ],
127 + valueIsFunction = isFunction( value );
128 +
129 + // We can't cloneNode fragments that contain checked, in WebKit
130 + if ( valueIsFunction ||
131 + ( l > 1 && typeof value === "string" &&
132 + !support.checkClone && rchecked.test( value ) ) ) {
133 + return collection.each( function( index ) {
134 + var self = collection.eq( index );
135 + if ( valueIsFunction ) {
136 + args[ 0 ] = value.call( this, index, self.html() );
137 + }
138 + domManip( self, args, callback, ignored );
139 + } );
140 + }
141 +
142 + if ( l ) {
143 + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
144 + first = fragment.firstChild;
145 +
146 + if ( fragment.childNodes.length === 1 ) {
147 + fragment = first;
148 + }
149 +
150 + // Require either new content or an interest in ignored elements to invoke the callback
151 + if ( first || ignored ) {
152 + scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
153 + hasScripts = scripts.length;
154 +
155 + // Use the original fragment for the last item
156 + // instead of the first because it can end up
157 + // being emptied incorrectly in certain situations (#8070).
158 + for ( ; i < l; i++ ) {
159 + node = fragment;
160 +
161 + if ( i !== iNoClone ) {
162 + node = jQuery.clone( node, true, true );
163 +
164 + // Keep references to cloned scripts for later restoration
165 + if ( hasScripts ) {
166 +
167 + // Support: Android <=4.0 only, PhantomJS 1 only
168 + // push.apply(_, arraylike) throws on ancient WebKit
169 + jQuery.merge( scripts, getAll( node, "script" ) );
170 + }
171 + }
172 +
173 + callback.call( collection[ i ], node, i );
174 + }
175 +
176 + if ( hasScripts ) {
177 + doc = scripts[ scripts.length - 1 ].ownerDocument;
178 +
179 + // Reenable scripts
180 + jQuery.map( scripts, restoreScript );
181 +
182 + // Evaluate executable scripts on first document insertion
183 + for ( i = 0; i < hasScripts; i++ ) {
184 + node = scripts[ i ];
185 + if ( rscriptType.test( node.type || "" ) &&
186 + !dataPriv.access( node, "globalEval" ) &&
187 + jQuery.contains( doc, node ) ) {
188 +
189 + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
190 +
191 + // Optional AJAX dependency, but won't run scripts if not present
192 + if ( jQuery._evalUrl && !node.noModule ) {
193 + jQuery._evalUrl( node.src, {
194 + nonce: node.nonce || node.getAttribute( "nonce" )
195 + }, doc );
196 + }
197 + } else {
198 + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
199 + }
200 + }
201 + }
202 + }
203 + }
204 + }
205 +
206 + return collection;
207 +}
208 +
209 +function remove( elem, selector, keepData ) {
210 + var node,
211 + nodes = selector ? jQuery.filter( selector, elem ) : elem,
212 + i = 0;
213 +
214 + for ( ; ( node = nodes[ i ] ) != null; i++ ) {
215 + if ( !keepData && node.nodeType === 1 ) {
216 + jQuery.cleanData( getAll( node ) );
217 + }
218 +
219 + if ( node.parentNode ) {
220 + if ( keepData && isAttached( node ) ) {
221 + setGlobalEval( getAll( node, "script" ) );
222 + }
223 + node.parentNode.removeChild( node );
224 + }
225 + }
226 +
227 + return elem;
228 +}
229 +
230 +jQuery.extend( {
231 + htmlPrefilter: function( html ) {
232 + return html;
233 + },
234 +
235 + clone: function( elem, dataAndEvents, deepDataAndEvents ) {
236 + var i, l, srcElements, destElements,
237 + clone = elem.cloneNode( true ),
238 + inPage = isAttached( elem );
239 +
240 + // Fix IE cloning issues
241 + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
242 + !jQuery.isXMLDoc( elem ) ) {
243 +
244 + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
245 + destElements = getAll( clone );
246 + srcElements = getAll( elem );
247 +
248 + for ( i = 0, l = srcElements.length; i < l; i++ ) {
249 + fixInput( srcElements[ i ], destElements[ i ] );
250 + }
251 + }
252 +
253 + // Copy the events from the original to the clone
254 + if ( dataAndEvents ) {
255 + if ( deepDataAndEvents ) {
256 + srcElements = srcElements || getAll( elem );
257 + destElements = destElements || getAll( clone );
258 +
259 + for ( i = 0, l = srcElements.length; i < l; i++ ) {
260 + cloneCopyEvent( srcElements[ i ], destElements[ i ] );
261 + }
262 + } else {
263 + cloneCopyEvent( elem, clone );
264 + }
265 + }
266 +
267 + // Preserve script evaluation history
268 + destElements = getAll( clone, "script" );
269 + if ( destElements.length > 0 ) {
270 + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
271 + }
272 +
273 + // Return the cloned set
274 + return clone;
275 + },
276 +
277 + cleanData: function( elems ) {
278 + var data, elem, type,
279 + special = jQuery.event.special,
280 + i = 0;
281 +
282 + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
283 + if ( acceptData( elem ) ) {
284 + if ( ( data = elem[ dataPriv.expando ] ) ) {
285 + if ( data.events ) {
286 + for ( type in data.events ) {
287 + if ( special[ type ] ) {
288 + jQuery.event.remove( elem, type );
289 +
290 + // This is a shortcut to avoid jQuery.event.remove's overhead
291 + } else {
292 + jQuery.removeEvent( elem, type, data.handle );
293 + }
294 + }
295 + }
296 +
297 + // Support: Chrome <=35 - 45+
298 + // Assign undefined instead of using delete, see Data#remove
299 + elem[ dataPriv.expando ] = undefined;
300 + }
301 + if ( elem[ dataUser.expando ] ) {
302 +
303 + // Support: Chrome <=35 - 45+
304 + // Assign undefined instead of using delete, see Data#remove
305 + elem[ dataUser.expando ] = undefined;
306 + }
307 + }
308 + }
309 + }
310 +} );
311 +
312 +jQuery.fn.extend( {
313 + detach: function( selector ) {
314 + return remove( this, selector, true );
315 + },
316 +
317 + remove: function( selector ) {
318 + return remove( this, selector );
319 + },
320 +
321 + text: function( value ) {
322 + return access( this, function( value ) {
323 + return value === undefined ?
324 + jQuery.text( this ) :
325 + this.empty().each( function() {
326 + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
327 + this.textContent = value;
328 + }
329 + } );
330 + }, null, value, arguments.length );
331 + },
332 +
333 + append: function() {
334 + return domManip( this, arguments, function( elem ) {
335 + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
336 + var target = manipulationTarget( this, elem );
337 + target.appendChild( elem );
338 + }
339 + } );
340 + },
341 +
342 + prepend: function() {
343 + return domManip( this, arguments, function( elem ) {
344 + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
345 + var target = manipulationTarget( this, elem );
346 + target.insertBefore( elem, target.firstChild );
347 + }
348 + } );
349 + },
350 +
351 + before: function() {
352 + return domManip( this, arguments, function( elem ) {
353 + if ( this.parentNode ) {
354 + this.parentNode.insertBefore( elem, this );
355 + }
356 + } );
357 + },
358 +
359 + after: function() {
360 + return domManip( this, arguments, function( elem ) {
361 + if ( this.parentNode ) {
362 + this.parentNode.insertBefore( elem, this.nextSibling );
363 + }
364 + } );
365 + },
366 +
367 + empty: function() {
368 + var elem,
369 + i = 0;
370 +
371 + for ( ; ( elem = this[ i ] ) != null; i++ ) {
372 + if ( elem.nodeType === 1 ) {
373 +
374 + // Prevent memory leaks
375 + jQuery.cleanData( getAll( elem, false ) );
376 +
377 + // Remove any remaining nodes
378 + elem.textContent = "";
379 + }
380 + }
381 +
382 + return this;
383 + },
384 +
385 + clone: function( dataAndEvents, deepDataAndEvents ) {
386 + dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
387 + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
388 +
389 + return this.map( function() {
390 + return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
391 + } );
392 + },
393 +
394 + html: function( value ) {
395 + return access( this, function( value ) {
396 + var elem = this[ 0 ] || {},
397 + i = 0,
398 + l = this.length;
399 +
400 + if ( value === undefined && elem.nodeType === 1 ) {
401 + return elem.innerHTML;
402 + }
403 +
404 + // See if we can take a shortcut and just use innerHTML
405 + if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
406 + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
407 +
408 + value = jQuery.htmlPrefilter( value );
409 +
410 + try {
411 + for ( ; i < l; i++ ) {
412 + elem = this[ i ] || {};
413 +
414 + // Remove element nodes and prevent memory leaks
415 + if ( elem.nodeType === 1 ) {
416 + jQuery.cleanData( getAll( elem, false ) );
417 + elem.innerHTML = value;
418 + }
419 + }
420 +
421 + elem = 0;
422 +
423 + // If using innerHTML throws an exception, use the fallback method
424 + } catch ( e ) {}
425 + }
426 +
427 + if ( elem ) {
428 + this.empty().append( value );
429 + }
430 + }, null, value, arguments.length );
431 + },
432 +
433 + replaceWith: function() {
434 + var ignored = [];
435 +
436 + // Make the changes, replacing each non-ignored context element with the new content
437 + return domManip( this, arguments, function( elem ) {
438 + var parent = this.parentNode;
439 +
440 + if ( jQuery.inArray( this, ignored ) < 0 ) {
441 + jQuery.cleanData( getAll( this ) );
442 + if ( parent ) {
443 + parent.replaceChild( elem, this );
444 + }
445 + }
446 +
447 + // Force callback invocation
448 + }, ignored );
449 + }
450 +} );
451 +
452 +jQuery.each( {
453 + appendTo: "append",
454 + prependTo: "prepend",
455 + insertBefore: "before",
456 + insertAfter: "after",
457 + replaceAll: "replaceWith"
458 +}, function( name, original ) {
459 + jQuery.fn[ name ] = function( selector ) {
460 + var elems,
461 + ret = [],
462 + insert = jQuery( selector ),
463 + last = insert.length - 1,
464 + i = 0;
465 +
466 + for ( ; i <= last; i++ ) {
467 + elems = i === last ? this : this.clone( true );
468 + jQuery( insert[ i ] )[ original ]( elems );
469 +
470 + // Support: Android <=4.0 only, PhantomJS 1 only
471 + // .get() because push.apply(_, arraylike) throws on ancient WebKit
472 + push.apply( ret, elems.get() );
473 + }
474 +
475 + return this.pushStack( ret );
476 + };
477 +} );
478 +
479 +return jQuery;
480 +} );
1 +define( [
2 + "../ajax"
3 +], function( jQuery ) {
4 +
5 +"use strict";
6 +
7 +jQuery._evalUrl = function( url, options, doc ) {
8 + return jQuery.ajax( {
9 + url: url,
10 +
11 + // Make this explicit, since user can override this through ajaxSetup (#11264)
12 + type: "GET",
13 + dataType: "script",
14 + cache: true,
15 + async: false,
16 + global: false,
17 +
18 + // Only evaluate the response if it is successful (gh-4126)
19 + // dataFilter is not invoked for failure responses, so using it instead
20 + // of the default converter is kludgy but it works.
21 + converters: {
22 + "text script": function() {}
23 + },
24 + dataFilter: function( response ) {
25 + jQuery.globalEval( response, options, doc );
26 + }
27 + } );
28 +};
29 +
30 +return jQuery._evalUrl;
31 +
32 +} );
1 +define( [
2 + "../core",
3 + "../core/toType",
4 + "../core/isAttached",
5 + "./var/rtagName",
6 + "./var/rscriptType",
7 + "./wrapMap",
8 + "./getAll",
9 + "./setGlobalEval"
10 +], function( jQuery, toType, isAttached, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
11 +
12 +"use strict";
13 +
14 +var rhtml = /<|&#?\w+;/;
15 +
16 +function buildFragment( elems, context, scripts, selection, ignored ) {
17 + var elem, tmp, tag, wrap, attached, j,
18 + fragment = context.createDocumentFragment(),
19 + nodes = [],
20 + i = 0,
21 + l = elems.length;
22 +
23 + for ( ; i < l; i++ ) {
24 + elem = elems[ i ];
25 +
26 + if ( elem || elem === 0 ) {
27 +
28 + // Add nodes directly
29 + if ( toType( elem ) === "object" ) {
30 +
31 + // Support: Android <=4.0 only, PhantomJS 1 only
32 + // push.apply(_, arraylike) throws on ancient WebKit
33 + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
34 +
35 + // Convert non-html into a text node
36 + } else if ( !rhtml.test( elem ) ) {
37 + nodes.push( context.createTextNode( elem ) );
38 +
39 + // Convert html into DOM nodes
40 + } else {
41 + tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
42 +
43 + // Deserialize a standard representation
44 + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
45 + wrap = wrapMap[ tag ] || wrapMap._default;
46 + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
47 +
48 + // Descend through wrappers to the right content
49 + j = wrap[ 0 ];
50 + while ( j-- ) {
51 + tmp = tmp.lastChild;
52 + }
53 +
54 + // Support: Android <=4.0 only, PhantomJS 1 only
55 + // push.apply(_, arraylike) throws on ancient WebKit
56 + jQuery.merge( nodes, tmp.childNodes );
57 +
58 + // Remember the top-level container
59 + tmp = fragment.firstChild;
60 +
61 + // Ensure the created nodes are orphaned (#12392)
62 + tmp.textContent = "";
63 + }
64 + }
65 + }
66 +
67 + // Remove wrapper from fragment
68 + fragment.textContent = "";
69 +
70 + i = 0;
71 + while ( ( elem = nodes[ i++ ] ) ) {
72 +
73 + // Skip elements already in the context collection (trac-4087)
74 + if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
75 + if ( ignored ) {
76 + ignored.push( elem );
77 + }
78 + continue;
79 + }
80 +
81 + attached = isAttached( elem );
82 +
83 + // Append to fragment
84 + tmp = getAll( fragment.appendChild( elem ), "script" );
85 +
86 + // Preserve script evaluation history
87 + if ( attached ) {
88 + setGlobalEval( tmp );
89 + }
90 +
91 + // Capture executables
92 + if ( scripts ) {
93 + j = 0;
94 + while ( ( elem = tmp[ j++ ] ) ) {
95 + if ( rscriptType.test( elem.type || "" ) ) {
96 + scripts.push( elem );
97 + }
98 + }
99 + }
100 + }
101 +
102 + return fragment;
103 +}
104 +
105 +return buildFragment;
106 +} );
1 +define( [
2 + "../core",
3 + "../core/nodeName"
4 +], function( jQuery, nodeName ) {
5 +
6 +"use strict";
7 +
8 +function getAll( context, tag ) {
9 +
10 + // Support: IE <=9 - 11 only
11 + // Use typeof to avoid zero-argument method invocation on host objects (#15151)
12 + var ret;
13 +
14 + if ( typeof context.getElementsByTagName !== "undefined" ) {
15 + ret = context.getElementsByTagName( tag || "*" );
16 +
17 + } else if ( typeof context.querySelectorAll !== "undefined" ) {
18 + ret = context.querySelectorAll( tag || "*" );
19 +
20 + } else {
21 + ret = [];
22 + }
23 +
24 + if ( tag === undefined || tag && nodeName( context, tag ) ) {
25 + return jQuery.merge( [ context ], ret );
26 + }
27 +
28 + return ret;
29 +}
30 +
31 +return getAll;
32 +} );
1 +define( [
2 + "../data/var/dataPriv"
3 +], function( dataPriv ) {
4 +
5 +"use strict";
6 +
7 +// Mark scripts as having already been evaluated
8 +function setGlobalEval( elems, refElements ) {
9 + var i = 0,
10 + l = elems.length;
11 +
12 + for ( ; i < l; i++ ) {
13 + dataPriv.set(
14 + elems[ i ],
15 + "globalEval",
16 + !refElements || dataPriv.get( refElements[ i ], "globalEval" )
17 + );
18 + }
19 +}
20 +
21 +return setGlobalEval;
22 +} );
1 +define( [
2 + "../var/document",
3 + "../var/support"
4 +], function( document, support ) {
5 +
6 +"use strict";
7 +
8 +( function() {
9 + var fragment = document.createDocumentFragment(),
10 + div = fragment.appendChild( document.createElement( "div" ) ),
11 + input = document.createElement( "input" );
12 +
13 + // Support: Android 4.0 - 4.3 only
14 + // Check state lost if the name is set (#11217)
15 + // Support: Windows Web Apps (WWA)
16 + // `name` and `type` must use .setAttribute for WWA (#14901)
17 + input.setAttribute( "type", "radio" );
18 + input.setAttribute( "checked", "checked" );
19 + input.setAttribute( "name", "t" );
20 +
21 + div.appendChild( input );
22 +
23 + // Support: Android <=4.1 only
24 + // Older WebKit doesn't clone checked state correctly in fragments
25 + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
26 +
27 + // Support: IE <=11 only
28 + // Make sure textarea (and checkbox) defaultValue is properly cloned
29 + div.innerHTML = "<textarea>x</textarea>";
30 + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
31 +
32 + // Support: IE <=9 only
33 + // IE <=9 replaces <option> tags with their contents when inserted outside of
34 + // the select element.
35 + div.innerHTML = "<option></option>";
36 + support.option = !!div.lastChild;
37 +} )();
38 +
39 +return support;
40 +
41 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return ( /^$|^module$|\/(?:java|ecma)script/i );
5 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + // rtagName captures the name from the first start tag in a string of HTML
5 + // https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state
6 + // https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state
7 + return ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
8 +} );
1 +define( [
2 + "./support"
3 +], function( support ) {
4 +
5 +"use strict";
6 +
7 +// We have to close these tags to support XHTML (#13200)
8 +var wrapMap = {
9 +
10 + // XHTML parsers do not magically insert elements in the
11 + // same way that tag soup parsers do. So we cannot shorten
12 + // this by omitting <tbody> or other required elements.
13 + thead: [ 1, "<table>", "</table>" ],
14 + col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
15 + tr: [ 2, "<table><tbody>", "</tbody></table>" ],
16 + td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
17 +
18 + _default: [ 0, "", "" ]
19 +};
20 +
21 +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
22 +wrapMap.th = wrapMap.td;
23 +
24 +// Support: IE <=9 only
25 +if ( !support.option ) {
26 + wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
27 +}
28 +
29 +return wrapMap;
30 +} );
1 +define( [
2 + "./core",
3 + "./core/access",
4 + "./var/documentElement",
5 + "./var/isFunction",
6 + "./css/var/rnumnonpx",
7 + "./css/curCSS",
8 + "./css/addGetHookIf",
9 + "./css/support",
10 + "./var/isWindow",
11 + "./core/init",
12 + "./css",
13 + "./selector" // contains
14 +], function( jQuery, access, documentElement, isFunction, rnumnonpx,
15 + curCSS, addGetHookIf, support, isWindow ) {
16 +
17 +"use strict";
18 +
19 +jQuery.offset = {
20 + setOffset: function( elem, options, i ) {
21 + var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
22 + position = jQuery.css( elem, "position" ),
23 + curElem = jQuery( elem ),
24 + props = {};
25 +
26 + // Set position first, in-case top/left are set even on static elem
27 + if ( position === "static" ) {
28 + elem.style.position = "relative";
29 + }
30 +
31 + curOffset = curElem.offset();
32 + curCSSTop = jQuery.css( elem, "top" );
33 + curCSSLeft = jQuery.css( elem, "left" );
34 + calculatePosition = ( position === "absolute" || position === "fixed" ) &&
35 + ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
36 +
37 + // Need to be able to calculate position if either
38 + // top or left is auto and position is either absolute or fixed
39 + if ( calculatePosition ) {
40 + curPosition = curElem.position();
41 + curTop = curPosition.top;
42 + curLeft = curPosition.left;
43 +
44 + } else {
45 + curTop = parseFloat( curCSSTop ) || 0;
46 + curLeft = parseFloat( curCSSLeft ) || 0;
47 + }
48 +
49 + if ( isFunction( options ) ) {
50 +
51 + // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
52 + options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
53 + }
54 +
55 + if ( options.top != null ) {
56 + props.top = ( options.top - curOffset.top ) + curTop;
57 + }
58 + if ( options.left != null ) {
59 + props.left = ( options.left - curOffset.left ) + curLeft;
60 + }
61 +
62 + if ( "using" in options ) {
63 + options.using.call( elem, props );
64 +
65 + } else {
66 + curElem.css( props );
67 + }
68 + }
69 +};
70 +
71 +jQuery.fn.extend( {
72 +
73 + // offset() relates an element's border box to the document origin
74 + offset: function( options ) {
75 +
76 + // Preserve chaining for setter
77 + if ( arguments.length ) {
78 + return options === undefined ?
79 + this :
80 + this.each( function( i ) {
81 + jQuery.offset.setOffset( this, options, i );
82 + } );
83 + }
84 +
85 + var rect, win,
86 + elem = this[ 0 ];
87 +
88 + if ( !elem ) {
89 + return;
90 + }
91 +
92 + // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
93 + // Support: IE <=11 only
94 + // Running getBoundingClientRect on a
95 + // disconnected node in IE throws an error
96 + if ( !elem.getClientRects().length ) {
97 + return { top: 0, left: 0 };
98 + }
99 +
100 + // Get document-relative position by adding viewport scroll to viewport-relative gBCR
101 + rect = elem.getBoundingClientRect();
102 + win = elem.ownerDocument.defaultView;
103 + return {
104 + top: rect.top + win.pageYOffset,
105 + left: rect.left + win.pageXOffset
106 + };
107 + },
108 +
109 + // position() relates an element's margin box to its offset parent's padding box
110 + // This corresponds to the behavior of CSS absolute positioning
111 + position: function() {
112 + if ( !this[ 0 ] ) {
113 + return;
114 + }
115 +
116 + var offsetParent, offset, doc,
117 + elem = this[ 0 ],
118 + parentOffset = { top: 0, left: 0 };
119 +
120 + // position:fixed elements are offset from the viewport, which itself always has zero offset
121 + if ( jQuery.css( elem, "position" ) === "fixed" ) {
122 +
123 + // Assume position:fixed implies availability of getBoundingClientRect
124 + offset = elem.getBoundingClientRect();
125 +
126 + } else {
127 + offset = this.offset();
128 +
129 + // Account for the *real* offset parent, which can be the document or its root element
130 + // when a statically positioned element is identified
131 + doc = elem.ownerDocument;
132 + offsetParent = elem.offsetParent || doc.documentElement;
133 + while ( offsetParent &&
134 + ( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
135 + jQuery.css( offsetParent, "position" ) === "static" ) {
136 +
137 + offsetParent = offsetParent.parentNode;
138 + }
139 + if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
140 +
141 + // Incorporate borders into its offset, since they are outside its content origin
142 + parentOffset = jQuery( offsetParent ).offset();
143 + parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
144 + parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
145 + }
146 + }
147 +
148 + // Subtract parent offsets and element margins
149 + return {
150 + top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
151 + left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
152 + };
153 + },
154 +
155 + // This method will return documentElement in the following cases:
156 + // 1) For the element inside the iframe without offsetParent, this method will return
157 + // documentElement of the parent window
158 + // 2) For the hidden or detached element
159 + // 3) For body or html element, i.e. in case of the html node - it will return itself
160 + //
161 + // but those exceptions were never presented as a real life use-cases
162 + // and might be considered as more preferable results.
163 + //
164 + // This logic, however, is not guaranteed and can change at any point in the future
165 + offsetParent: function() {
166 + return this.map( function() {
167 + var offsetParent = this.offsetParent;
168 +
169 + while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
170 + offsetParent = offsetParent.offsetParent;
171 + }
172 +
173 + return offsetParent || documentElement;
174 + } );
175 + }
176 +} );
177 +
178 +// Create scrollLeft and scrollTop methods
179 +jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
180 + var top = "pageYOffset" === prop;
181 +
182 + jQuery.fn[ method ] = function( val ) {
183 + return access( this, function( elem, method, val ) {
184 +
185 + // Coalesce documents and windows
186 + var win;
187 + if ( isWindow( elem ) ) {
188 + win = elem;
189 + } else if ( elem.nodeType === 9 ) {
190 + win = elem.defaultView;
191 + }
192 +
193 + if ( val === undefined ) {
194 + return win ? win[ prop ] : elem[ method ];
195 + }
196 +
197 + if ( win ) {
198 + win.scrollTo(
199 + !top ? val : win.pageXOffset,
200 + top ? val : win.pageYOffset
201 + );
202 +
203 + } else {
204 + elem[ method ] = val;
205 + }
206 + }, method, val, arguments.length );
207 + };
208 +} );
209 +
210 +// Support: Safari <=7 - 9.1, Chrome <=37 - 49
211 +// Add the top/left cssHooks using jQuery.fn.position
212 +// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
213 +// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
214 +// getComputedStyle returns percent when specified for top/left/bottom/right;
215 +// rather than make the css module depend on the offset module, just check for it here
216 +jQuery.each( [ "top", "left" ], function( _i, prop ) {
217 + jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
218 + function( elem, computed ) {
219 + if ( computed ) {
220 + computed = curCSS( elem, prop );
221 +
222 + // If curCSS returns percentage, fallback to offset
223 + return rnumnonpx.test( computed ) ?
224 + jQuery( elem ).position()[ prop ] + "px" :
225 + computed;
226 + }
227 + }
228 + );
229 +} );
230 +
231 +return jQuery;
232 +} );
1 +define( [
2 + "./core",
3 + "./data/var/dataPriv",
4 + "./deferred",
5 + "./callbacks"
6 +], function( jQuery, dataPriv ) {
7 +
8 +"use strict";
9 +
10 +jQuery.extend( {
11 + queue: function( elem, type, data ) {
12 + var queue;
13 +
14 + if ( elem ) {
15 + type = ( type || "fx" ) + "queue";
16 + queue = dataPriv.get( elem, type );
17 +
18 + // Speed up dequeue by getting out quickly if this is just a lookup
19 + if ( data ) {
20 + if ( !queue || Array.isArray( data ) ) {
21 + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
22 + } else {
23 + queue.push( data );
24 + }
25 + }
26 + return queue || [];
27 + }
28 + },
29 +
30 + dequeue: function( elem, type ) {
31 + type = type || "fx";
32 +
33 + var queue = jQuery.queue( elem, type ),
34 + startLength = queue.length,
35 + fn = queue.shift(),
36 + hooks = jQuery._queueHooks( elem, type ),
37 + next = function() {
38 + jQuery.dequeue( elem, type );
39 + };
40 +
41 + // If the fx queue is dequeued, always remove the progress sentinel
42 + if ( fn === "inprogress" ) {
43 + fn = queue.shift();
44 + startLength--;
45 + }
46 +
47 + if ( fn ) {
48 +
49 + // Add a progress sentinel to prevent the fx queue from being
50 + // automatically dequeued
51 + if ( type === "fx" ) {
52 + queue.unshift( "inprogress" );
53 + }
54 +
55 + // Clear up the last queue stop function
56 + delete hooks.stop;
57 + fn.call( elem, next, hooks );
58 + }
59 +
60 + if ( !startLength && hooks ) {
61 + hooks.empty.fire();
62 + }
63 + },
64 +
65 + // Not public - generate a queueHooks object, or return the current one
66 + _queueHooks: function( elem, type ) {
67 + var key = type + "queueHooks";
68 + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
69 + empty: jQuery.Callbacks( "once memory" ).add( function() {
70 + dataPriv.remove( elem, [ type + "queue", key ] );
71 + } )
72 + } );
73 + }
74 +} );
75 +
76 +jQuery.fn.extend( {
77 + queue: function( type, data ) {
78 + var setter = 2;
79 +
80 + if ( typeof type !== "string" ) {
81 + data = type;
82 + type = "fx";
83 + setter--;
84 + }
85 +
86 + if ( arguments.length < setter ) {
87 + return jQuery.queue( this[ 0 ], type );
88 + }
89 +
90 + return data === undefined ?
91 + this :
92 + this.each( function() {
93 + var queue = jQuery.queue( this, type, data );
94 +
95 + // Ensure a hooks for this queue
96 + jQuery._queueHooks( this, type );
97 +
98 + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
99 + jQuery.dequeue( this, type );
100 + }
101 + } );
102 + },
103 + dequeue: function( type ) {
104 + return this.each( function() {
105 + jQuery.dequeue( this, type );
106 + } );
107 + },
108 + clearQueue: function( type ) {
109 + return this.queue( type || "fx", [] );
110 + },
111 +
112 + // Get a promise resolved when queues of a certain type
113 + // are emptied (fx is the type by default)
114 + promise: function( type, obj ) {
115 + var tmp,
116 + count = 1,
117 + defer = jQuery.Deferred(),
118 + elements = this,
119 + i = this.length,
120 + resolve = function() {
121 + if ( !( --count ) ) {
122 + defer.resolveWith( elements, [ elements ] );
123 + }
124 + };
125 +
126 + if ( typeof type !== "string" ) {
127 + obj = type;
128 + type = undefined;
129 + }
130 + type = type || "fx";
131 +
132 + while ( i-- ) {
133 + tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
134 + if ( tmp && tmp.empty ) {
135 + count++;
136 + tmp.empty.add( resolve );
137 + }
138 + }
139 + resolve();
140 + return defer.promise( obj );
141 + }
142 +} );
143 +
144 +return jQuery;
145 +} );
1 +define( [
2 + "../core",
3 + "../queue",
4 + "../effects" // Delay is optional because of this dependency
5 +], function( jQuery ) {
6 +
7 +"use strict";
8 +
9 +// Based off of the plugin by Clint Helfers, with permission.
10 +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
11 +jQuery.fn.delay = function( time, type ) {
12 + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
13 + type = type || "fx";
14 +
15 + return this.queue( type, function( next, hooks ) {
16 + var timeout = window.setTimeout( next, time );
17 + hooks.stop = function() {
18 + window.clearTimeout( timeout );
19 + };
20 + } );
21 +};
22 +
23 +return jQuery.fn.delay;
24 +} );
1 +define( [
2 + "./core",
3 + "./var/document",
4 + "./var/documentElement",
5 + "./var/hasOwn",
6 + "./var/indexOf"
7 +], function( jQuery, document, documentElement, hasOwn, indexOf ) {
8 +
9 +"use strict";
10 +
11 +/*
12 + * Optional (non-Sizzle) selector module for custom builds.
13 + *
14 + * Note that this DOES NOT SUPPORT many documented jQuery
15 + * features in exchange for its smaller size:
16 + *
17 + * Attribute not equal selector
18 + * Positional selectors (:first; :eq(n); :odd; etc.)
19 + * Type selectors (:input; :checkbox; :button; etc.)
20 + * State-based selectors (:animated; :visible; :hidden; etc.)
21 + * :has(selector)
22 + * :not(complex selector)
23 + * custom selectors via Sizzle extensions
24 + * Leading combinators (e.g., $collection.find("> *"))
25 + * Reliable functionality on XML fragments
26 + * Requiring all parts of a selector to match elements under context
27 + * (e.g., $div.find("div > *") now matches children of $div)
28 + * Matching against non-elements
29 + * Reliable sorting of disconnected nodes
30 + * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
31 + *
32 + * If any of these are unacceptable tradeoffs, either use Sizzle or
33 + * customize this stub for the project's specific needs.
34 + */
35 +
36 +var hasDuplicate, sortInput,
37 + rhtmlSuffix = /HTML$/i,
38 + sortStable = jQuery.expando.split( "" ).sort( sortOrder ).join( "" ) === jQuery.expando,
39 + matches = documentElement.matches ||
40 + documentElement.webkitMatchesSelector ||
41 + documentElement.mozMatchesSelector ||
42 + documentElement.oMatchesSelector ||
43 + documentElement.msMatchesSelector,
44 +
45 + // CSS string/identifier serialization
46 + // https://drafts.csswg.org/cssom/#common-serializing-idioms
47 + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
48 + fcssescape = function( ch, asCodePoint ) {
49 + if ( asCodePoint ) {
50 +
51 + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
52 + if ( ch === "\0" ) {
53 + return "\uFFFD";
54 + }
55 +
56 + // Control characters and (dependent upon position) numbers get escaped as code points
57 + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
58 + }
59 +
60 + // Other potentially-special ASCII characters get backslash-escaped
61 + return "\\" + ch;
62 + };
63 +
64 +function sortOrder( a, b ) {
65 +
66 + // Flag for duplicate removal
67 + if ( a === b ) {
68 + hasDuplicate = true;
69 + return 0;
70 + }
71 +
72 + // Sort on method existence if only one input has compareDocumentPosition
73 + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
74 + if ( compare ) {
75 + return compare;
76 + }
77 +
78 + // Calculate position if both inputs belong to the same document
79 + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
80 + a.compareDocumentPosition( b ) :
81 +
82 + // Otherwise we know they are disconnected
83 + 1;
84 +
85 + // Disconnected nodes
86 + if ( compare & 1 ) {
87 +
88 + // Choose the first element that is related to our preferred document
89 + if ( a === document || a.ownerDocument === document &&
90 + jQuery.contains( document, a ) ) {
91 + return -1;
92 + }
93 + if ( b === document || b.ownerDocument === document &&
94 + jQuery.contains( document, b ) ) {
95 + return 1;
96 + }
97 +
98 + // Maintain original order
99 + return sortInput ?
100 + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
101 + 0;
102 + }
103 +
104 + return compare & 4 ? -1 : 1;
105 +}
106 +
107 +function uniqueSort( results ) {
108 + var elem,
109 + duplicates = [],
110 + j = 0,
111 + i = 0;
112 +
113 + hasDuplicate = false;
114 + sortInput = !sortStable && results.slice( 0 );
115 + results.sort( sortOrder );
116 +
117 + if ( hasDuplicate ) {
118 + while ( ( elem = results[ i++ ] ) ) {
119 + if ( elem === results[ i ] ) {
120 + j = duplicates.push( i );
121 + }
122 + }
123 + while ( j-- ) {
124 + results.splice( duplicates[ j ], 1 );
125 + }
126 + }
127 +
128 + // Clear input after sorting to release objects
129 + // See https://github.com/jquery/sizzle/pull/225
130 + sortInput = null;
131 +
132 + return results;
133 +}
134 +
135 +function escape( sel ) {
136 + return ( sel + "" ).replace( rcssescape, fcssescape );
137 +}
138 +
139 +jQuery.extend( {
140 + uniqueSort: uniqueSort,
141 + unique: uniqueSort,
142 + escapeSelector: escape,
143 + find: function( selector, context, results, seed ) {
144 + var elem, nodeType,
145 + i = 0;
146 +
147 + results = results || [];
148 + context = context || document;
149 +
150 + // Same basic safeguard as Sizzle
151 + if ( !selector || typeof selector !== "string" ) {
152 + return results;
153 + }
154 +
155 + // Early return if context is not an element or document
156 + if ( ( nodeType = context.nodeType ) !== 1 && nodeType !== 9 ) {
157 + return [];
158 + }
159 +
160 + if ( seed ) {
161 + while ( ( elem = seed[ i++ ] ) ) {
162 + if ( jQuery.find.matchesSelector( elem, selector ) ) {
163 + results.push( elem );
164 + }
165 + }
166 + } else {
167 + jQuery.merge( results, context.querySelectorAll( selector ) );
168 + }
169 +
170 + return results;
171 + },
172 + text: function( elem ) {
173 + var node,
174 + ret = "",
175 + i = 0,
176 + nodeType = elem.nodeType;
177 +
178 + if ( !nodeType ) {
179 +
180 + // If no nodeType, this is expected to be an array
181 + while ( ( node = elem[ i++ ] ) ) {
182 +
183 + // Do not traverse comment nodes
184 + ret += jQuery.text( node );
185 + }
186 + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
187 +
188 + // Use textContent for elements
189 + return elem.textContent;
190 + } else if ( nodeType === 3 || nodeType === 4 ) {
191 + return elem.nodeValue;
192 + }
193 +
194 + // Do not include comment or processing instruction nodes
195 +
196 + return ret;
197 + },
198 + contains: function( a, b ) {
199 + var adown = a.nodeType === 9 ? a.documentElement : a,
200 + bup = b && b.parentNode;
201 + return a === bup || !!( bup && bup.nodeType === 1 && adown.contains( bup ) );
202 + },
203 + isXMLDoc: function( elem ) {
204 + var namespace = elem.namespaceURI,
205 + documentElement = ( elem.ownerDocument || elem ).documentElement;
206 +
207 + // Assume HTML when documentElement doesn't yet exist, such as inside
208 + // document fragments.
209 + return !rhtmlSuffix.test( namespace ||
210 + documentElement && documentElement.nodeName ||
211 + "HTML" );
212 + },
213 + expr: {
214 + attrHandle: {},
215 + match: {
216 + bool: new RegExp( "^(?:checked|selected|async|autofocus|autoplay|controls|defer" +
217 + "|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i" ),
218 + needsContext: /^[\x20\t\r\n\f]*[>+~]/
219 + }
220 + }
221 +} );
222 +
223 +jQuery.extend( jQuery.find, {
224 + matches: function( expr, elements ) {
225 + return jQuery.find( expr, null, null, elements );
226 + },
227 + matchesSelector: function( elem, expr ) {
228 + return matches.call( elem, expr );
229 + },
230 + attr: function( elem, name ) {
231 + var fn = jQuery.expr.attrHandle[ name.toLowerCase() ],
232 +
233 + // Don't get fooled by Object.prototype properties (jQuery #13807)
234 + value = fn && hasOwn.call( jQuery.expr.attrHandle, name.toLowerCase() ) ?
235 + fn( elem, name, jQuery.isXMLDoc( elem ) ) :
236 + undefined;
237 + return value !== undefined ? value : elem.getAttribute( name );
238 + }
239 +} );
240 +
241 +} );
1 +define( [
2 + "./core",
3 + "../external/sizzle/dist/sizzle"
4 +], function( jQuery, Sizzle ) {
5 +
6 +"use strict";
7 +
8 +jQuery.find = Sizzle;
9 +jQuery.expr = Sizzle.selectors;
10 +
11 +// Deprecated
12 +jQuery.expr[ ":" ] = jQuery.expr.pseudos;
13 +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
14 +jQuery.text = Sizzle.getText;
15 +jQuery.isXMLDoc = Sizzle.isXML;
16 +jQuery.contains = Sizzle.contains;
17 +jQuery.escapeSelector = Sizzle.escape;
18 +
19 +} );
1 +define( [ "./selector-sizzle" ], function() {
2 + "use strict";
3 +} );
1 +define( [
2 + "./core",
3 + "./core/toType",
4 + "./var/rcheckableType",
5 + "./var/isFunction",
6 + "./core/init",
7 + "./traversing", // filter
8 + "./attributes/prop"
9 +], function( jQuery, toType, rcheckableType, isFunction ) {
10 +
11 +"use strict";
12 +
13 +var
14 + rbracket = /\[\]$/,
15 + rCRLF = /\r?\n/g,
16 + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
17 + rsubmittable = /^(?:input|select|textarea|keygen)/i;
18 +
19 +function buildParams( prefix, obj, traditional, add ) {
20 + var name;
21 +
22 + if ( Array.isArray( obj ) ) {
23 +
24 + // Serialize array item.
25 + jQuery.each( obj, function( i, v ) {
26 + if ( traditional || rbracket.test( prefix ) ) {
27 +
28 + // Treat each array item as a scalar.
29 + add( prefix, v );
30 +
31 + } else {
32 +
33 + // Item is non-scalar (array or object), encode its numeric index.
34 + buildParams(
35 + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
36 + v,
37 + traditional,
38 + add
39 + );
40 + }
41 + } );
42 +
43 + } else if ( !traditional && toType( obj ) === "object" ) {
44 +
45 + // Serialize object item.
46 + for ( name in obj ) {
47 + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
48 + }
49 +
50 + } else {
51 +
52 + // Serialize scalar item.
53 + add( prefix, obj );
54 + }
55 +}
56 +
57 +// Serialize an array of form elements or a set of
58 +// key/values into a query string
59 +jQuery.param = function( a, traditional ) {
60 + var prefix,
61 + s = [],
62 + add = function( key, valueOrFunction ) {
63 +
64 + // If value is a function, invoke it and use its return value
65 + var value = isFunction( valueOrFunction ) ?
66 + valueOrFunction() :
67 + valueOrFunction;
68 +
69 + s[ s.length ] = encodeURIComponent( key ) + "=" +
70 + encodeURIComponent( value == null ? "" : value );
71 + };
72 +
73 + if ( a == null ) {
74 + return "";
75 + }
76 +
77 + // If an array was passed in, assume that it is an array of form elements.
78 + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
79 +
80 + // Serialize the form elements
81 + jQuery.each( a, function() {
82 + add( this.name, this.value );
83 + } );
84 +
85 + } else {
86 +
87 + // If traditional, encode the "old" way (the way 1.3.2 or older
88 + // did it), otherwise encode params recursively.
89 + for ( prefix in a ) {
90 + buildParams( prefix, a[ prefix ], traditional, add );
91 + }
92 + }
93 +
94 + // Return the resulting serialization
95 + return s.join( "&" );
96 +};
97 +
98 +jQuery.fn.extend( {
99 + serialize: function() {
100 + return jQuery.param( this.serializeArray() );
101 + },
102 + serializeArray: function() {
103 + return this.map( function() {
104 +
105 + // Can add propHook for "elements" to filter or add form elements
106 + var elements = jQuery.prop( this, "elements" );
107 + return elements ? jQuery.makeArray( elements ) : this;
108 + } ).filter( function() {
109 + var type = this.type;
110 +
111 + // Use .is( ":disabled" ) so that fieldset[disabled] works
112 + return this.name && !jQuery( this ).is( ":disabled" ) &&
113 + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
114 + ( this.checked || !rcheckableType.test( type ) );
115 + } ).map( function( _i, elem ) {
116 + var val = jQuery( this ).val();
117 +
118 + if ( val == null ) {
119 + return null;
120 + }
121 +
122 + if ( Array.isArray( val ) ) {
123 + return jQuery.map( val, function( val ) {
124 + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
125 + } );
126 + }
127 +
128 + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
129 + } ).get();
130 + }
131 +} );
132 +
133 +return jQuery;
134 +} );
1 +define( [
2 + "./core",
3 + "./var/getProto",
4 + "./var/indexOf",
5 + "./traversing/var/dir",
6 + "./traversing/var/siblings",
7 + "./traversing/var/rneedsContext",
8 + "./core/nodeName",
9 +
10 + "./core/init",
11 + "./traversing/findFilter",
12 + "./selector"
13 +], function( jQuery, getProto, indexOf, dir, siblings, rneedsContext, nodeName ) {
14 +
15 +"use strict";
16 +
17 +var rparentsprev = /^(?:parents|prev(?:Until|All))/,
18 +
19 + // Methods guaranteed to produce a unique set when starting from a unique set
20 + guaranteedUnique = {
21 + children: true,
22 + contents: true,
23 + next: true,
24 + prev: true
25 + };
26 +
27 +jQuery.fn.extend( {
28 + has: function( target ) {
29 + var targets = jQuery( target, this ),
30 + l = targets.length;
31 +
32 + return this.filter( function() {
33 + var i = 0;
34 + for ( ; i < l; i++ ) {
35 + if ( jQuery.contains( this, targets[ i ] ) ) {
36 + return true;
37 + }
38 + }
39 + } );
40 + },
41 +
42 + closest: function( selectors, context ) {
43 + var cur,
44 + i = 0,
45 + l = this.length,
46 + matched = [],
47 + targets = typeof selectors !== "string" && jQuery( selectors );
48 +
49 + // Positional selectors never match, since there's no _selection_ context
50 + if ( !rneedsContext.test( selectors ) ) {
51 + for ( ; i < l; i++ ) {
52 + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
53 +
54 + // Always skip document fragments
55 + if ( cur.nodeType < 11 && ( targets ?
56 + targets.index( cur ) > -1 :
57 +
58 + // Don't pass non-elements to Sizzle
59 + cur.nodeType === 1 &&
60 + jQuery.find.matchesSelector( cur, selectors ) ) ) {
61 +
62 + matched.push( cur );
63 + break;
64 + }
65 + }
66 + }
67 + }
68 +
69 + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
70 + },
71 +
72 + // Determine the position of an element within the set
73 + index: function( elem ) {
74 +
75 + // No argument, return index in parent
76 + if ( !elem ) {
77 + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
78 + }
79 +
80 + // Index in selector
81 + if ( typeof elem === "string" ) {
82 + return indexOf.call( jQuery( elem ), this[ 0 ] );
83 + }
84 +
85 + // Locate the position of the desired element
86 + return indexOf.call( this,
87 +
88 + // If it receives a jQuery object, the first element is used
89 + elem.jquery ? elem[ 0 ] : elem
90 + );
91 + },
92 +
93 + add: function( selector, context ) {
94 + return this.pushStack(
95 + jQuery.uniqueSort(
96 + jQuery.merge( this.get(), jQuery( selector, context ) )
97 + )
98 + );
99 + },
100 +
101 + addBack: function( selector ) {
102 + return this.add( selector == null ?
103 + this.prevObject : this.prevObject.filter( selector )
104 + );
105 + }
106 +} );
107 +
108 +function sibling( cur, dir ) {
109 + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
110 + return cur;
111 +}
112 +
113 +jQuery.each( {
114 + parent: function( elem ) {
115 + var parent = elem.parentNode;
116 + return parent && parent.nodeType !== 11 ? parent : null;
117 + },
118 + parents: function( elem ) {
119 + return dir( elem, "parentNode" );
120 + },
121 + parentsUntil: function( elem, _i, until ) {
122 + return dir( elem, "parentNode", until );
123 + },
124 + next: function( elem ) {
125 + return sibling( elem, "nextSibling" );
126 + },
127 + prev: function( elem ) {
128 + return sibling( elem, "previousSibling" );
129 + },
130 + nextAll: function( elem ) {
131 + return dir( elem, "nextSibling" );
132 + },
133 + prevAll: function( elem ) {
134 + return dir( elem, "previousSibling" );
135 + },
136 + nextUntil: function( elem, _i, until ) {
137 + return dir( elem, "nextSibling", until );
138 + },
139 + prevUntil: function( elem, _i, until ) {
140 + return dir( elem, "previousSibling", until );
141 + },
142 + siblings: function( elem ) {
143 + return siblings( ( elem.parentNode || {} ).firstChild, elem );
144 + },
145 + children: function( elem ) {
146 + return siblings( elem.firstChild );
147 + },
148 + contents: function( elem ) {
149 + if ( elem.contentDocument != null &&
150 +
151 + // Support: IE 11+
152 + // <object> elements with no `data` attribute has an object
153 + // `contentDocument` with a `null` prototype.
154 + getProto( elem.contentDocument ) ) {
155 +
156 + return elem.contentDocument;
157 + }
158 +
159 + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
160 + // Treat the template element as a regular one in browsers that
161 + // don't support it.
162 + if ( nodeName( elem, "template" ) ) {
163 + elem = elem.content || elem;
164 + }
165 +
166 + return jQuery.merge( [], elem.childNodes );
167 + }
168 +}, function( name, fn ) {
169 + jQuery.fn[ name ] = function( until, selector ) {
170 + var matched = jQuery.map( this, fn, until );
171 +
172 + if ( name.slice( -5 ) !== "Until" ) {
173 + selector = until;
174 + }
175 +
176 + if ( selector && typeof selector === "string" ) {
177 + matched = jQuery.filter( selector, matched );
178 + }
179 +
180 + if ( this.length > 1 ) {
181 +
182 + // Remove duplicates
183 + if ( !guaranteedUnique[ name ] ) {
184 + jQuery.uniqueSort( matched );
185 + }
186 +
187 + // Reverse order for parents* and prev-derivatives
188 + if ( rparentsprev.test( name ) ) {
189 + matched.reverse();
190 + }
191 + }
192 +
193 + return this.pushStack( matched );
194 + };
195 +} );
196 +
197 +return jQuery;
198 +} );
1 +define( [
2 + "../core",
3 + "../var/indexOf",
4 + "../var/isFunction",
5 + "./var/rneedsContext",
6 + "../selector"
7 +], function( jQuery, indexOf, isFunction, rneedsContext ) {
8 +
9 +"use strict";
10 +
11 +// Implement the identical functionality for filter and not
12 +function winnow( elements, qualifier, not ) {
13 + if ( isFunction( qualifier ) ) {
14 + return jQuery.grep( elements, function( elem, i ) {
15 + return !!qualifier.call( elem, i, elem ) !== not;
16 + } );
17 + }
18 +
19 + // Single element
20 + if ( qualifier.nodeType ) {
21 + return jQuery.grep( elements, function( elem ) {
22 + return ( elem === qualifier ) !== not;
23 + } );
24 + }
25 +
26 + // Arraylike of elements (jQuery, arguments, Array)
27 + if ( typeof qualifier !== "string" ) {
28 + return jQuery.grep( elements, function( elem ) {
29 + return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
30 + } );
31 + }
32 +
33 + // Filtered directly for both simple and complex selectors
34 + return jQuery.filter( qualifier, elements, not );
35 +}
36 +
37 +jQuery.filter = function( expr, elems, not ) {
38 + var elem = elems[ 0 ];
39 +
40 + if ( not ) {
41 + expr = ":not(" + expr + ")";
42 + }
43 +
44 + if ( elems.length === 1 && elem.nodeType === 1 ) {
45 + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
46 + }
47 +
48 + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
49 + return elem.nodeType === 1;
50 + } ) );
51 +};
52 +
53 +jQuery.fn.extend( {
54 + find: function( selector ) {
55 + var i, ret,
56 + len = this.length,
57 + self = this;
58 +
59 + if ( typeof selector !== "string" ) {
60 + return this.pushStack( jQuery( selector ).filter( function() {
61 + for ( i = 0; i < len; i++ ) {
62 + if ( jQuery.contains( self[ i ], this ) ) {
63 + return true;
64 + }
65 + }
66 + } ) );
67 + }
68 +
69 + ret = this.pushStack( [] );
70 +
71 + for ( i = 0; i < len; i++ ) {
72 + jQuery.find( selector, self[ i ], ret );
73 + }
74 +
75 + return len > 1 ? jQuery.uniqueSort( ret ) : ret;
76 + },
77 + filter: function( selector ) {
78 + return this.pushStack( winnow( this, selector || [], false ) );
79 + },
80 + not: function( selector ) {
81 + return this.pushStack( winnow( this, selector || [], true ) );
82 + },
83 + is: function( selector ) {
84 + return !!winnow(
85 + this,
86 +
87 + // If this is a positional/relative selector, check membership in the returned set
88 + // so $("p:first").is("p:last") won't return true for a doc with two "p".
89 + typeof selector === "string" && rneedsContext.test( selector ) ?
90 + jQuery( selector ) :
91 + selector || [],
92 + false
93 + ).length;
94 + }
95 +} );
96 +
97 +} );
1 +define( [
2 + "../../core"
3 +], function( jQuery ) {
4 +
5 +"use strict";
6 +
7 +return function( elem, dir, until ) {
8 + var matched = [],
9 + truncate = until !== undefined;
10 +
11 + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
12 + if ( elem.nodeType === 1 ) {
13 + if ( truncate && jQuery( elem ).is( until ) ) {
14 + break;
15 + }
16 + matched.push( elem );
17 + }
18 + }
19 + return matched;
20 +};
21 +
22 +} );
1 +define( [
2 + "../../core",
3 + "../../selector"
4 +], function( jQuery ) {
5 + "use strict";
6 +
7 + return jQuery.expr.match.needsContext;
8 +} );
1 +define( function() {
2 +
3 +"use strict";
4 +
5 +return function( n, elem ) {
6 + var matched = [];
7 +
8 + for ( ; n; n = n.nextSibling ) {
9 + if ( n.nodeType === 1 && n !== elem ) {
10 + matched.push( n );
11 + }
12 + }
13 +
14 + return matched;
15 +};
16 +
17 +} );
1 +define( [
2 + "./fnToString"
3 +], function( fnToString ) {
4 + "use strict";
5 +
6 + return fnToString.call( Object );
7 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return [];
5 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + // [[Class]] -> type pairs
5 + return {};
6 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return window.document;
5 +} );
1 +define( [
2 + "./document"
3 +], function( document ) {
4 + "use strict";
5 +
6 + return document.documentElement;
7 +} );
1 +define( [
2 + "./arr"
3 +], function( arr ) {
4 +
5 +"use strict";
6 +
7 +// Support: IE 9 - 11+, Edge 18+, Android Browser 4.0 - 4.3 only, iOS 7 - 11 only, Safari 11 only,
8 +// Firefox <= 61 only
9 +// Provide fallback for browsers without Array#flat.
10 +return arr.flat ? function( array ) {
11 + return arr.flat.call( array );
12 +} : function( array ) {
13 + return arr.concat.apply( [], array );
14 +};
15 +
16 +} );
1 +define( [
2 + "./hasOwn"
3 +], function( hasOwn ) {
4 + "use strict";
5 +
6 + return hasOwn.toString;
7 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return Object.getPrototypeOf;
5 +} );
1 +define( [
2 + "./class2type"
3 +], function( class2type ) {
4 + "use strict";
5 +
6 + return class2type.hasOwnProperty;
7 +} );
1 +define( [
2 + "./arr"
3 +], function( arr ) {
4 + "use strict";
5 +
6 + return arr.indexOf;
7 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return function isFunction( obj ) {
5 +
6 + // Support: Chrome <=57, Firefox <=52
7 + // In some browsers, typeof returns "function" for HTML <object> elements
8 + // (i.e., `typeof document.createElement( "object" ) === "function"`).
9 + // We don't want to classify *any* DOM node as a function.
10 + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
11 + // Plus for old WebKit, typeof returns "function" for HTML collections
12 + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
13 + return typeof obj === "function" && typeof obj.nodeType !== "number" &&
14 + typeof obj.item !== "function";
15 + };
16 +
17 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return function isWindow( obj ) {
5 + return obj != null && obj === obj.window;
6 + };
7 +
8 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
5 +} );
1 +define( [
2 + "./arr"
3 +], function( arr ) {
4 + "use strict";
5 +
6 + return arr.push;
7 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + return ( /^(?:checkbox|radio)$/i );
5 +} );
1 +define( [
2 + "../var/pnum"
3 +], function( pnum ) {
4 +
5 +"use strict";
6 +
7 +return new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
8 +
9 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + // Only count HTML whitespace
5 + // Other whitespace should count in values
6 + // https://infra.spec.whatwg.org/#ascii-whitespace
7 + return ( /[^\x20\t\r\n\f]+/g );
8 +} );
1 +define( [
2 + "./arr"
3 +], function( arr ) {
4 + "use strict";
5 +
6 + return arr.slice;
7 +} );
1 +define( function() {
2 + "use strict";
3 +
4 + // All support tests are defined in their respective modules.
5 + return {};
6 +} );
1 +define( [
2 + "./class2type"
3 +], function( class2type ) {
4 + "use strict";
5 +
6 + return class2type.toString;
7 +} );
1 +define( [
2 + "./core",
3 + "./var/isFunction",
4 + "./core/init",
5 + "./manipulation", // clone
6 + "./traversing" // parent, contents
7 +], function( jQuery, isFunction ) {
8 +
9 +"use strict";
10 +
11 +jQuery.fn.extend( {
12 + wrapAll: function( html ) {
13 + var wrap;
14 +
15 + if ( this[ 0 ] ) {
16 + if ( isFunction( html ) ) {
17 + html = html.call( this[ 0 ] );
18 + }
19 +
20 + // The elements to wrap the target around
21 + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
22 +
23 + if ( this[ 0 ].parentNode ) {
24 + wrap.insertBefore( this[ 0 ] );
25 + }
26 +
27 + wrap.map( function() {
28 + var elem = this;
29 +
30 + while ( elem.firstElementChild ) {
31 + elem = elem.firstElementChild;
32 + }
33 +
34 + return elem;
35 + } ).append( this );
36 + }
37 +
38 + return this;
39 + },
40 +
41 + wrapInner: function( html ) {
42 + if ( isFunction( html ) ) {
43 + return this.each( function( i ) {
44 + jQuery( this ).wrapInner( html.call( this, i ) );
45 + } );
46 + }
47 +
48 + return this.each( function() {
49 + var self = jQuery( this ),
50 + contents = self.contents();
51 +
52 + if ( contents.length ) {
53 + contents.wrapAll( html );
54 +
55 + } else {
56 + self.append( html );
57 + }
58 + } );
59 + },
60 +
61 + wrap: function( html ) {
62 + var htmlIsFunction = isFunction( html );
63 +
64 + return this.each( function( i ) {
65 + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
66 + } );
67 + },
68 +
69 + unwrap: function( selector ) {
70 + this.parent( selector ).not( "body" ).each( function() {
71 + jQuery( this ).replaceWith( this.childNodes );
72 + } );
73 + return this;
74 + }
75 +} );
76 +
77 +return jQuery;
78 +} );
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
14 "express": "^4.17.1", 14 "express": "^4.17.1",
15 "express-flash": "^0.0.2", 15 "express-flash": "^0.0.2",
16 "fs": "^0.0.1-security", 16 "fs": "^0.0.1-security",
17 + "jquery": "^3.6.0",
17 "passport-kakao": "^1.0.1", 18 "passport-kakao": "^1.0.1",
18 "passport-naver": "^1.0.6", 19 "passport-naver": "^1.0.6",
19 "path": "^0.12.7", 20 "path": "^0.12.7",
...@@ -1350,6 +1351,11 @@ ...@@ -1350,6 +1351,11 @@
1350 "node": "*" 1351 "node": "*"
1351 } 1352 }
1352 }, 1353 },
1354 + "node_modules/jquery": {
1355 + "version": "3.6.0",
1356 + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
1357 + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
1358 + },
1353 "node_modules/jsbn": { 1359 "node_modules/jsbn": {
1354 "version": "0.1.1", 1360 "version": "0.1.1",
1355 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 1361 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
...@@ -3742,6 +3748,11 @@ ...@@ -3742,6 +3748,11 @@
3742 "minimatch": "^3.0.4" 3748 "minimatch": "^3.0.4"
3743 } 3749 }
3744 }, 3750 },
3751 + "jquery": {
3752 + "version": "3.6.0",
3753 + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
3754 + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw=="
3755 + },
3745 "jsbn": { 3756 "jsbn": {
3746 "version": "0.1.1", 3757 "version": "0.1.1",
3747 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 3758 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
19 "express": "^4.17.1", 19 "express": "^4.17.1",
20 "express-flash": "^0.0.2", 20 "express-flash": "^0.0.2",
21 "fs": "^0.0.1-security", 21 "fs": "^0.0.1-security",
22 + "jquery": "^3.6.0",
22 "passport-kakao": "^1.0.1", 23 "passport-kakao": "^1.0.1",
23 "passport-naver": "^1.0.6", 24 "passport-naver": "^1.0.6",
24 "path": "^0.12.7", 25 "path": "^0.12.7",
......
1 +{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"passport":{"user":"hoho@naver.com"},"__lastAccess":1638877179279}
...\ No newline at end of file ...\ No newline at end of file
1 +{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"flash":{"error":["Missing username or password."]},"__lastAccess":1638870919590}
...\ No newline at end of file ...\ No newline at end of file
1 +{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"flash":{"error":["Missing username or password."]},"__lastAccess":1638876058479}
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html>
3 +<body>
4 +
5 +<div><h1>미국 음식</h1></div>
6 +<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
7 +<script type="text/javascript">
8 +
9 +
10 +
11 +let apikey = "AIzaSyC1UDfc18D0ebNPMRjC6LW9vzTZZEXlJak";
12 +
13 +let keyword ="미국 음식";
14 +
15 +
16 +
17 +$.ajax({
18 +
19 + url:'https://www.googleapis.com/youtube/v3/search',
20 +
21 + type:'get',
22 +
23 + dataType:'json',
24 +
25 + data:{part:'snippet',key:apikey,q:keyword, maxResults:50,type:'video',videoEmbeddable:'true'},
26 +
27 + success:function (data){
28 +
29 + console.log(data);
30 + data.items.forEach(function(element,index){$('body').append('<iframe width="560" height="315" src="https://www.youtube.com/embed/'+element.id.videoId+' " frameborder="0" allow="accelerometer; autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen></ifreame>');});
31 + },
32 + complete:function(data){},
33 + error:function(xhr,status,error){}
34 +});
35 +
36 +
37 +
38 +</script>
39 +</body>
40 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html>
3 +<body>
4 +
5 +<div><h1>중국 음식</h1></div>
6 +<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
7 +<script type="text/javascript">
8 +
9 +
10 +
11 +let apikey = "AIzaSyC1UDfc18D0ebNPMRjC6LW9vzTZZEXlJak";
12 +
13 +let keyword ="중국 음식";
14 +
15 +
16 +
17 +$.ajax({
18 +
19 + url:'https://www.googleapis.com/youtube/v3/search',
20 +
21 + type:'get',
22 +
23 + dataType:'json',
24 +
25 + data:{part:'snippet',key:apikey,q:keyword, maxResults:50,type:'video',videoEmbeddable:'true'},
26 +
27 + success:function (data){
28 +
29 + console.log(data);
30 + data.items.forEach(function(element,index){$('body').append('<iframe width="560" height="315" src="https://www.youtube.com/embed/'+element.id.videoId+' " frameborder="0" allow="accelerometer; autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen></ifreame>');});
31 + },
32 + complete:function(data){},
33 + error:function(xhr,status,error){}
34 +});
35 +
36 +
37 +
38 +</script>
39 +</body>
40 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html>
3 +<body>
4 +
5 +<div><h1>프랑스 음식</h1></div>
6 +
7 +<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
8 +<script type="text/javascript">
9 +
10 +
11 +
12 +let apikey = "AIzaSyC1UDfc18D0ebNPMRjC6LW9vzTZZEXlJak";
13 +let keyword ="프랑스 음식";
14 +
15 +
16 +
17 +$.ajax({
18 +
19 + url:'https://www.googleapis.com/youtube/v3/search',
20 +
21 + type:'get',
22 +
23 + dataType:'json',
24 +
25 + data:{part:'snippet',key:apikey,q:keyword, maxResults:50,type:'video',videoEmbeddable:'true'},
26 +
27 + success:function (data){
28 +
29 + console.log(data);
30 + data.items.forEach(function(element,index){$('body').append('<iframe width="560" height="315" src="https://www.youtube.com/embed/'+element.id.videoId+' " frameborder="0" allow="accelerometer; autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen></ifreame>');});
31 + },
32 + complete:function(data){},
33 + error:function(xhr,status,error){}
34 +});
35 +
36 +
37 +
38 +</script>
39 +</body>
40 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html>
3 +<body>
4 +
5 +<div><h1>이탈리아 음식</h1></div>
6 +
7 +<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
8 +<script type="text/javascript">
9 +
10 +
11 +
12 +let apikey = "AIzaSyC1UDfc18D0ebNPMRjC6LW9vzTZZEXlJak";
13 +let keyword ="이탈리아 음식";
14 +
15 +
16 +
17 +$.ajax({
18 +
19 + url:'https://www.googleapis.com/youtube/v3/search',
20 +
21 + type:'get',
22 +
23 + dataType:'json',
24 +
25 + data:{part:'snippet',key:apikey,q:keyword, maxResults:50,type:'video',videoEmbeddable:'true'},
26 +
27 + success:function (data){
28 +
29 + console.log(data);
30 + data.items.forEach(function(element,index){$('body').append('<iframe width="560" height="315" src="https://www.youtube.com/embed/'+element.id.videoId+' " frameborder="0" allow="accelerometer; autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen></ifreame>');});
31 + },
32 + complete:function(data){},
33 + error:function(xhr,status,error){}
34 +});
35 +
36 +
37 +
38 +</script>
39 +</body>
40 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html>
3 +<body>
4 +
5 +<div><h1>일본 음식</h1></div>
6 +<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
7 +<script type="text/javascript">
8 +
9 +
10 +
11 +let apikey = "AIzaSyC1UDfc18D0ebNPMRjC6LW9vzTZZEXlJak";
12 +
13 +let keyword ="일본 음식";
14 +
15 +
16 +
17 +$.ajax({
18 +
19 + url:'https://www.googleapis.com/youtube/v3/search',
20 +
21 + type:'get',
22 +
23 + dataType:'json',
24 +
25 + data:{part:'snippet',key:apikey,q:keyword, maxResults:50,type:'video',videoEmbeddable:'true'},
26 +
27 + success:function (data){
28 +
29 + console.log(data);
30 + data.items.forEach(function(element,index){$('body').append('<iframe width="560" height="315" src="https://www.youtube.com/embed/'+element.id.videoId+' " frameborder="0" allow="accelerometer; autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen></ifreame>');});
31 + },
32 + complete:function(data){},
33 + error:function(xhr,status,error){}
34 +});
35 +
36 +
37 +
38 +</script>
39 +</body>
40 +</html>
...\ No newline at end of file ...\ No newline at end of file
1 +<!DOCTYPE html>
2 +<html>
3 +<body>
4 +
5 +<div><h1>한국 음식</h1></div>
6 +<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
7 +<script type="text/javascript">
8 +
9 +
10 +
11 +let apikey = "AIzaSyC1UDfc18D0ebNPMRjC6LW9vzTZZEXlJak";
12 +
13 +let keyword ="한국 음식";
14 +
15 +
16 +
17 +$.ajax({
18 +
19 + url:'https://www.googleapis.com/youtube/v3/search',
20 +
21 + type:'get',
22 +
23 + dataType:'json',
24 +
25 + data:{part:'snippet',key:apikey,q:keyword, maxResults:50,type:'video',videoEmbeddable:'true'},
26 +
27 + success:function (data){
28 +
29 + console.log(data);
30 + data.items.forEach(function(element,index){$('body').append('<iframe width="560" height="315" src="https://www.youtube.com/embed/'+element.id.videoId+' " frameborder="0" allow="accelerometer; autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen></ifreame>');});
31 + },
32 + complete:function(data){},
33 + error:function(xhr,status,error){}
34 +});
35 +
36 +
37 +
38 +</script>
39 +</body>
40 +</html>
1 +<!DOCTYPE html>
2 +<html>
3 +<body>
4 +
5 +<div><h1>멕시코 음식</h1></div>
6 +
7 +<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
8 +<script type="text/javascript">
9 +
10 +
11 +
12 +let apikey = "AIzaSyC1UDfc18D0ebNPMRjC6LW9vzTZZEXlJak";
13 +
14 +let keyword ="멕시코 음식";
15 +
16 +
17 +
18 +$.ajax({
19 +
20 + url:'https://www.googleapis.com/youtube/v3/search',
21 +
22 + type:'get',
23 +
24 + dataType:'json',
25 +
26 + data:{part:'snippet',key:apikey,q:keyword, maxResults:50,type:'video',videoEmbeddable:'true'},
27 +
28 + success:function (data){
29 +
30 + console.log(data);
31 + data.items.forEach(function(element,index){$('body').append('<iframe width="560" height="315" src="https://www.youtube.com/embed/'+element.id.videoId+' " frameborder="0" allow="accelerometer; autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen></ifreame>');});
32 + },
33 + complete:function(data){},
34 + error:function(xhr,status,error){}
35 +});
36 +
37 +
38 +
39 +</script>
40 +</body>
41 +</html>